[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RYE58KH7SGSTYP7R5KT08":3,"skill-same:01M71RYE58KH7SGSTYP7R5KT08":83},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":14,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M71RYE58KH7SGSTYP7R5KT08","k8s-cleanup",null,"Remove ephemeral Kubernetes diagnostic leftovers the squad created — debug pods, throwaway run pods, one-off jobs, temporary configmaps\u002Fsecrets — found by the omnis.dev\u002Fephemeral=true label (well-known debug-pod name patterns are surfaced as confirm-first suspects). Removes only ephemeral resources, never real workloads. Use to sweep leftovers at the end of an investigation or on request.","blouargant\u002Fomnis","blouargant","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5691896?v=4","01M71RWETBTYXSMT6FFC4Q7HPW","Bertrand Louargant","01M71RWEV3G47S696JYH8EA7W2",0,"MIT","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Fk8s-cleanup\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"k8s cleanup","cleanup","k8s","only","one","throwaway","true","resources","name","as","end","kubernetes","never","use","remove","sweep","first","dev","run","debug","2026-11-10 13:02:02",false,"---\nname: k8s-cleanup\ndescription: Remove ephemeral Kubernetes diagnostic leftovers the squad created — debug pods, throwaway run pods, one-off jobs, temporary configmaps\u002Fsecrets — found by the omnis.dev\u002Fephemeral=true label (well-known debug-pod name patterns are surfaced as confirm-first suspects). Removes only ephemeral resources, never real workloads. Use to sweep leftovers at the end of an investigation or on request.\nmetadata:\n  author: blouargant@chapsvision.com\n  tags: \"kubernetes, cleanup, hygiene, debug pods, ephemeral, playbook\"\n---\n\n# Kubernetes Cleanup\n\nThe *playbook* for sweeping the transient diagnostic resources the squad\ncreated and leaving every real workload untouched.\n\nEvery deletion is **permission-gated** — it prompts the user before it runs. Do\nnot try to work around the prompt. If a call is denied, report it and stop.\n\n## The ephemeral-resource convention (shared across the squad)\n\nEvery transient resource any squad agent creates for diagnosis MUST carry:\n\n- `omnis.dev\u002Fephemeral=true` — the primary cleaner selector.\n- `omnis.dev\u002Fcreated-by=\u003Cagent>` — provenance (e.g. `k8s_investigator`).\n\nThe cleaner treats these labels as the *only* automatic delete signal.\n\n## Procedure\n\n1. **Confirm scope.** `kubectl config current-context`; default to the\n   namespace(s) under investigation. If the leader\u002Fuser named a target\n   context, thread it as `--context=\u003Cctx>` on every command instead — never\n   `kubectl config use-context` (it rewrites the shared kubeconfig). Sweep all\n   namespaces (`-A`) only when explicitly asked, and never delete in a\n   production namespace\u002Fcontext (`prod`, `prd`, `production`) without an\n   explicit override.\n2. **Discover labeled ephemerals** (removable):\n   ```bash\n   kubectl get pods,jobs,cm,secret,svc,deploy -n \u003Cns> -l omnis.dev\u002Fephemeral=true -o wide\n   ```\n3. **Discover UNLABELED suspects** (confirm-first — do NOT auto-delete):\n   - `kubectl debug` leftovers: node-debugger pods (often `node-debugger-*` in\n     `default`) and `--copy-to` copy pods.\n   - throwaway `kubectl run` pods: common debug images (`netshoot`, `busybox`,\n     `alpine`, `curl`, `tmp-shell`), or a `run=\u003Cdebug-name>` label.\n   - completed \u002F failed one-off jobs and their pods.\n   List each with age + owner so the leader\u002Fuser can decide.\n4. **Classify** each as labeled-ephemeral \u002F unlabeled-suspect \u002F legitimate.\n5. **Remove** (each deletion prompts the user):\n   - Labeled ephemerals — delete by label or name, e.g.\n     `kubectl delete pod,job -n \u003Cns> -l omnis.dev\u002Fephemeral=true`.\n   - Unlabeled suspects — do NOT delete; list them for the leader\u002Fuser to\n     confirm, then delete only the confirmed ones.\n6. **Caveats:**\n   - Ephemeral *containers* added by `kubectl debug pod\u002F\u003Cp>` cannot be removed\n     individually; they clear only when the pod is recreated. Do NOT delete a\n     user's real pod to clear a debug container without explicit approval —\n     note it instead.\n   - Client-side leftovers (a `kubectl port-forward`\u002F`proxy` started via\n     `bash_background`) are not cluster resources; report them so the leader\n     can `bg_cancel` the task.\n7. **Report:** found \u002F removed \u002F left-for-confirmation \u002F could-not-remove, with\n   the exact `kubectl delete` commands run.\n\n## Hard rules\n\n- Delete ONLY resources positively identified as ephemeral (labeled) or\n  explicitly confirmed. When in doubt, leave it and ask.\n- **Prod protection:** never delete in production namespaces\u002Fcontexts without an\n  explicit override.\n- Never delete real workloads, PVCs\u002FPVs, namespaces, or anything with an owner\n  reference to a controller you did not create.\n- RBAC denial → report the boundary, do not retry with a different identity.\n\n## Output rule\n\nAlways finish with a single line:\n`Result: clean | removed-\u003CN> | needs-confirmation | blocked`.\n","# Kubernetes Cleanup\n\nThe *playbook* for sweeping the transient diagnostic resources the squad\ncreated and leaving every real workload untouched.\n\nEvery deletion is **permission-gated** — it prompts the user before it runs. Do\nnot try to work around the prompt. If a call is denied, report it and stop.\n\n## The ephemeral-resource convention (shared across the squad)\n\nEvery transient resource any squad agent creates for diagnosis MUST carry:\n\n- `omnis.dev\u002Fephemeral=true` — the primary cleaner selector.\n- `omnis.dev\u002Fcreated-by=\u003Cagent>` — provenance (e.g. `k8s_investigator`).\n\nThe cleaner treats these labels as the *only* automatic delete signal.\n\n## Procedure\n\n1. **Confirm scope.** `kubectl config current-context`; default to the\n   namespace(s) under investigation. If the leader\u002Fuser named a target\n   context, thread it as `--context=\u003Cctx>` on every command instead — never\n   `kubectl config use-context` (it rewrites the shared kubeconfig). Sweep all\n   namespaces (`-A`) only when explicitly asked, and never delete in a\n   production namespace\u002Fcontext (`prod`, `prd`, `production`) without an\n   explicit override.\n2. **Discover labeled ephemerals** (removable):\n   ```bash\n   kubectl get pods,jobs,cm,secret,svc,deploy -n \u003Cns> -l omnis.dev\u002Fephemeral=true -o wide\n   ```\n3. **Discover UNLABELED suspects** (confirm-first — do NOT auto-delete):\n   - `kubectl debug` leftovers: node-debugger pods (often `node-debugger-*` in\n     `default`) and `--copy-to` copy pods.\n   - throwaway `kubectl run` pods: common debug images (`netshoot`, `busybox`,\n     `alpine`, `curl`, `tmp-shell`), or a `run=\u003Cdebug-name>` label.\n   - completed \u002F failed one-off jobs and their pods.\n   List each with age + owner so the leader\u002Fuser can decide.\n4. **Classify** each as labeled-ephemeral \u002F unlabeled-suspect \u002F legitimate.\n5. **Remove** (each deletion prompts the user):\n   - Labeled ephemerals — delete by label or name, e.g.\n     `kubectl delete pod,job -n \u003Cns> -l omnis.dev\u002Fephemeral=true`.\n   - Unlabeled suspects — do NOT delete; list them for the leader\u002Fuser to\n     confirm, then delete only the confirmed ones.\n6. **Caveats:**\n   - Ephemeral *containers* added by `kubectl debug pod\u002F\u003Cp>` cannot be removed\n     individually; they clear only when the pod is recreated. Do NOT delete a\n     user's real pod to clear a debug container without explicit approval —\n     note it instead.\n   - Client-side leftovers (a `kubectl port-forward`\u002F`proxy` started via\n     `bash_background`) are not cluster resources; report them so the leader\n     can `bg_cancel` the task.\n7. **Report:** found \u002F removed \u002F left-for-confirmation \u002F could-not-remove, with\n   the exact `kubectl delete` commands run.\n\n## Hard rules\n\n- Delete ONLY resources positively identified as ephemeral (labeled) or\n  explicitly confirmed. When in doubt, leave it and ask.\n- **Prod protection:** never delete in production namespaces\u002Fcontexts without an\n  explicit override.\n- Never delete real workloads, PVCs\u002FPVs, namespaces, or anything with an owner\n  reference to a controller you did not create.\n- RBAC denial → report the boundary, do not retry with a different identity.\n\n## Output rule\n\nAlways finish with a single line:\n`Result: clean | removed-\u003CN> | needs-confirmation | blocked`.\n",{"name":5,"metadata":54,"description":7},{"tags":55,"author":56},"kubernetes, cleanup, hygiene, debug pods, ephemeral, playbook","blouargant@chapsvision.com","develop","c9440489468f6bbafc65e9a10811428ac0ef2619","registry\u002Fskills\u002Fk8s-cleanup","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis","https:\u002F\u002Fgithub.com\u002Fblouargant","2026-11-10 16:30:07",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add blouargant\u002Fomnis --skill k8s-cleanup",{"tool":69,"command":70},"bunx","bunx skills add blouargant\u002Fomnis --skill k8s-cleanup",{"tool":72,"command":73},"pnpm","pnpm dlx skills add blouargant\u002Fomnis --skill k8s-cleanup","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Fk8s-cleanup\u002FSKILL.md",true,[77],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"permissions.json","REFERENCE","参考文档",823,"https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Fk8s-cleanup\u002Fpermissions.json",[84,113,133,159,181,210],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":93,"publishedAt":49},"01M71RZKQ64WTDCV48Z4Y071FA","skill-creator","Create or update a skill playbook (SKILL.md) for the agent. Use when the user wants to create a new skill, add a skill, define a new agent capability, update an existing skill, edit a skill, refine a skill playbook, or specialise the agent for a new domain.","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Fskill-creator\u002FSKILL.md",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[94,95,96,97,98,99,100,42,101,102,103,104,105,106,107,108,109,110,111,112],"skill creator","creator","new agent","domain","for","new","define","Existing","when","create","update","refine","playbook","edit","a skill","new skill","add","user","existing skill",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":49},"01M71RZJ15NMV6FXBZD1AQF3K7","review","Review a body of work (source code, configuration, documents, infra manifests, …) for correctness, clarity, and obvious risks. Use this skill whenever the user asks for a review, audit or critique.","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Freview\u002FSKILL.md",[],[115,120,121,122,123,98,124,42,125,126,127,128,129,130,131,132,111],"infra","work","critique","audit","clarity","body","source","manifests","documents","configuration","correctness","code","source code",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":142,"publishedAt":49},"01M71RZFP8KJEANYXAH6AX68G0","pdf","Fallback PDF text extractor using pdftotext (poppler). Use ONLY when the preferred `liteparse` skill is unavailable or for a quick plain-text dump of a simple text PDF — for the best PDF parsing (scanned, multi-column, layout-heavy, or non-PDF formats) prefer the `liteparse` skill.","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Fpdf\u002FSKILL.md",[139],{"categoryNo":140,"categoryName":141,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",[143,144,145,146,147,148,149,150,98,151,152,153,32,154,42,155,102,156,157,158],"PDF","text","multi","quick","simple","parsing","pdf text extractor","layout","liteparse","plain-text","column","formats","pdftotext","plain","pdf parsing","file",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":167,"publishedAt":49},"01M71RZDAHNX7JC52P5HH5XPEG","pandoc","This skill should be used when converting documents between formats (Markdown, DOCX, PDF, HTML, LaTeX, etc.) using pandoc. Use for format conversion, document generation, and preparing markdown for Google Docs or other word processors.","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Fpandoc\u002FSKILL.md",[165,166],{"categoryNo":140,"categoryName":141,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},[161,168,143,169,98,170,42,171,128,102,172,173,174,175,176,177,154,178,179,180],"docx","Word","document generation","document","conversion","generation","markdown","format","google","google docs","docs","html","LaTeX",{"skillNo":182,"name":151,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":196,"publishedAt":49},"01M71RZ7PSG17ES4CQWA6860F5","Preferred local parser for extracting text from PDFs, images, and scanned\u002Flayout-heavy documents (OCR, screenshots, complex PDFs) — far better than pdftotext. Use this FIRST for any PDF, image, or OCR text-extraction or conversion task. NOTE for Office documents (DOCX, PPTX, XLSX, ODT) — for plain text extraction prefer the `pandoc` skill, which needs no LibreOffice; only use LiteParse for Office docs when you need its layout\u002FOCR\u002Fscreenshot output. The `pdf` skill (pdftotext) is only a fallback for when LiteParse cannot be installed.","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Fliteparse\u002FSKILL.md",[186,187,190,193],{"categoryNo":140,"categoryName":141,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":188,"categoryName":189,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":191,"categoryName":192,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000004","电子表格",{"categoryNo":194,"categoryName":195,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000034","行政与办公人员",[151,197,198,199,168,200,143,201,202,203,204,205,206,32,155,128,102,207,208,209],"images","app","ocr","which","pptx","extracting","xlsx","managed","local","pipx","image","you","needs",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":216,"publishedAt":49},"01M71RZ2Y9KY94NRBV4WMH73G5","linux-admin","Safely make a change to a Linux workstation — install\u002Fremove packages, manage systemd services and timers, edit and validate configuration files, manage users\u002Fpermissions and networking. Detect the distro and package manager, determine whether the target is package-managed or hand-maintained, preview or simulate every change, back up configs before editing, and prefer the package manager and drop-in overrides so the host stays consistent and secure. Use whenever a change to the local Linux host is required (install, remove, enable, disable, start, stop, edit a config, add a user, change permissions or networking).","https:\u002F\u002Fgithub.com\u002Fblouargant\u002Fomnis\u002Fblob\u002Fdevelop\u002Fregistry\u002Fskills\u002Flinux-admin\u002FSKILL.md",[],[217,218,219,220,221,222,223,43,224,204,205,225,226,227,228,229,230,231,232,233],"linux","linux admin","admin","back","workstation","package manager","pacman","up","systemd services","files","host","drop","preview","hand","permissions","packages","change"]