[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JK277C0HA9JGZSSR6Z5QF2":3,"skill-same:01M6JK277C0HA9JGZSSR6Z5QF2":98},{"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":23,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M6JK277C0HA9JGZSSR6Z5QF2","review-adversarial",null,"Adversarial code review with structured findings and a review loop. Use when asked to critically review code, diffs, or design docs with an adversarial mindset.","jeffersonjhunt\u002Fcode-monkeys","jeffersonjhunt","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2308584?v=4","01M6JK0Z7Y76REMWVB4JM2CQN9","Jefferson J Hunt","01M6JK0ZD5DFCQW66H6P76JGMG",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"review","review adversarial","code review","design","docs","diffs","code","loop","review code","review loop","use","mindset","structured","design docs","with","2026-11-10 10:12:30",false,"---\nname: review-adversarial\ndescription: Adversarial code review with structured findings and a review loop. Use when asked to critically review code, diffs, or design docs with an adversarial mindset.\nlicense: Apache-2.0\nmetadata:\n  author: ooe\n  version: \"1.1.0\"\n---\n\n# review-adversarial\n\nAdversarial review skill with state-tracked review loops. You (the agent) perform\nthe review; the scripts manage findings state and loop convergence.\n\n## When to Use\n\n- User asks for a critical\u002Fadversarial review of code, a diff, or a design doc\n- User wants iterative review passes until issues are resolved\n- User asks you to \"poke holes\" or \"find what's wrong\"\n\n## Review Loop Protocol\n\n```\n1. Initialize:  python scripts\u002Floop.py init [--max-rounds N] [--state PATH]\n2. You review the target artifact using an adversarial perspective\n3. Record:      python scripts\u002Freview.py --state .review-state.json \u003C findings.json\n4. Present findings to the user                       \u003C-- TRIAGE GATE, see below\n5. User dispositions each one: fix \u002F dispute \u002F accept  \u003C-- do NOT skip or infer\n6. Respond:     python scripts\u002Frespond.py --state .review-state.json --resolve \u003Cid>=\u003Cdisposition> ...\n7. Check:       python scripts\u002Floop.py next --state .review-state.json\n   → \"continue\" — unresolved findings remain or you found new issues; go to step 2\n   → \"converged\" — all findings resolved; done\n   → \"max_rounds\" — hit the limit; produce summary\n8. Summary:     python scripts\u002Floop.py summary --state .review-state.json\n9. Promote (optional): python scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F\n   → Converts findings to markdown files for tracking via docs-issues skill\n```\n\n\n## The triage gate (steps 4-6) — do not skip it\n\n**A finding is a proposal, not a work order. Nothing gets fixed before the user has dispositioned\nit.** This is the step most likely to be skipped, because a well-written finding reads like an\ninstruction and fixing it feels like progress.\n\nPresent every finding and get one of three answers:\n\n| Disposition | Meaning |\n|---|---|\n| `fixed` | the user wants it fixed — only now may you write code |\n| `disputed` | the finding is wrong, or the premise does not hold; record the rationale |\n| `accepted` | real, but not worth fixing; accepted as risk |\n\nBatch obviously-correct one-liners into a single question rather than asking one at a time, but\nun-triaged means un-implemented. Applies to findings you generated yourself, and to findings from\na subagent — a tester or reviewer calling something a \"regression\" is that agent's opinion, not a\nverdict.\n\n**Why this is a hard gate, not advice.** Real case (code-monkeys, 2026-09): a tester reported that\na config file was unreachable inside containers and labelled it a regression. It was dispatched\nfor fixing within a minute. Correct triage was \"do nothing — that code path was already broken in\nthere and nobody uses it\". Instead the fix added a dockerfile COPY, a sync line and a two-path\nresolver; the resolver's failure mode then hung the interactive shell on TAB; that took two more\nreview rounds to find and fix, and the whole design was reverted a day later. **Every round of\nthat work descended from one un-triaged finding.** The cost of asking is one message. The cost of\nnot asking compounds silently, because each fix is individually defensible.\n\nTwo questions worth putting to the user with the findings, not after:\n- Is this finding *real*, and is the premise behind it true?\n- Should the behaviour it asks for exist at all — or is refusing\u002Fdeleting the better answer?\n\n## Scripts\n\n### loop.py — Orchestration & State\n\n```bash\n# Initialize a new review session\npython scripts\u002Floop.py init --max-rounds 3 --state .review-state.json\n\n# Advance to next round (returns: continue, converged, or max_rounds)\npython scripts\u002Floop.py next --state .review-state.json\n\n# Show current status\npython scripts\u002Floop.py status --state .review-state.json\n\n# Produce final summary\npython scripts\u002Floop.py summary --state .review-state.json\n```\n\n### review.py — Record Findings\n\n```bash\n# Pipe findings JSON into the state file\necho '[{\"id\":\"F1\",\"severity\":\"major\",\"category\":\"security\",\"location\":\"auth.py:42\",\"description\":\"SQL injection via string interpolation\",\"suggestion\":\"Use parameterized queries\"}]' | python scripts\u002Freview.py --state .review-state.json\n\n# Or pass a file\npython scripts\u002Freview.py --state .review-state.json --file findings.json\n```\n\nEach finding is a JSON object with fields:\n- `id` — unique within the round (e.g., \"F1\", \"F2\")\n- `severity` — critical, major, minor, nit\n- `category` — security, correctness, performance, clarity, maintainability, edge-case\n- `location` — file:line or section reference\n- `description` — what's wrong\n- `suggestion` — how to fix it\n\n### respond.py — Record Resolutions\n\n```bash\n# Mark findings as resolved\npython scripts\u002Frespond.py --state .review-state.json --resolve F1=fixed F2=disputed F3=accepted\n\n# Disputed findings require rationale (prompted interactively or via --rationale)\npython scripts\u002Frespond.py --state .review-state.json --resolve F2=disputed --rationale \"F2:Rate limiting is handled at the LB layer\"\n```\n\nDispositions: `fixed`, `disputed`, `accepted` (accept-risk)\n\n### promote.py — Convert Findings to Tracked Issues (optional)\n\nAfter the review loop converges (or hits max rounds), you can promote findings\ninto docs\u002Freviews\u002F markdown files for long-term tracking. This integrates with\nthe `docs-issues` skill for export to GitHub\u002FGitLab\u002Ftodo.md.\n\n```bash\n# Auto-classify by category (security\u002Fcorrectness\u002Fedge-case→bug, others→debt)\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F\n\n# Explicit classification per finding\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F \\\n    --classify F1=bug F2=feature F3=debt F4=question\n\n# Skip nits and disputed findings (default behavior)\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F \\\n    --skip nit,disputed\n\n# Preview without writing\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F --dry-run\n```\n\nPromoted findings are marked `promoted: true` in the state file, so re-running\nis idempotent. Each finding becomes one markdown file in\n`docs\u002Freviews\u002F{kind}s\u002F{date}-{slug}.md` with full schema (see `docs-issues` skill).\n\n## Adversarial Perspectives\n\nCycle through these when reviewing (use the prompt template in `assets\u002Ftemplates\u002Freview-prompt.md`):\n\n| Perspective | Focus |\n|---|---|\n| Attacker | Injection, auth bypass, data exfiltration, privilege escalation |\n| Skeptical User | Error handling, edge cases, misleading behavior, data loss |\n| Future Maintainer | Readability, coupling, hidden assumptions, missing docs |\n| Ops Engineer | Failure modes, resource leaks, observability, deployment risks |\n| Pedantic Reviewer | Naming, consistency, dead code, style violations |\n\n## Agent Instructions\n\nWhen performing an adversarial review:\n\n1. **Initialize** the loop state with `loop.py init`\n2. **Read** the target artifact thoroughly\n3. **Adopt** one or more adversarial perspectives from the table above\n4. **Generate** findings as structured JSON (use the schema above)\n5. **Record** findings with `review.py`\n6. **Present** findings to the user in a readable format (table or list)\n7. **STOP and wait** for a disposition on each (fix, dispute, or accept). Writing a fix for an\n   un-triaged finding is the single most expensive mistake this skill exists to prevent — see\n   *The triage gate* above. Never mark everything `fixed` at the end as bookkeeping.\n8. **Record** responses with `respond.py`\n9. **Advance** with `loop.py next` — if \"continue\", re-review focusing on:\n   - Disputed findings (re-evaluate with the user's rationale)\n   - Fixed code (verify the fix, check for regressions)\n   - New issues introduced by fixes\n10. **Summarize** when converged or at max rounds\n\n## Dependencies\n\nPython 3.6+ (standard library only)\n","# review-adversarial\n\nAdversarial review skill with state-tracked review loops. You (the agent) perform\nthe review; the scripts manage findings state and loop convergence.\n\n## When to Use\n\n- User asks for a critical\u002Fadversarial review of code, a diff, or a design doc\n- User wants iterative review passes until issues are resolved\n- User asks you to \"poke holes\" or \"find what's wrong\"\n\n## Review Loop Protocol\n\n```\n1. Initialize:  python scripts\u002Floop.py init [--max-rounds N] [--state PATH]\n2. You review the target artifact using an adversarial perspective\n3. Record:      python scripts\u002Freview.py --state .review-state.json \u003C findings.json\n4. Present findings to the user                       \u003C-- TRIAGE GATE, see below\n5. User dispositions each one: fix \u002F dispute \u002F accept  \u003C-- do NOT skip or infer\n6. Respond:     python scripts\u002Frespond.py --state .review-state.json --resolve \u003Cid>=\u003Cdisposition> ...\n7. Check:       python scripts\u002Floop.py next --state .review-state.json\n   → \"continue\" — unresolved findings remain or you found new issues; go to step 2\n   → \"converged\" — all findings resolved; done\n   → \"max_rounds\" — hit the limit; produce summary\n8. Summary:     python scripts\u002Floop.py summary --state .review-state.json\n9. Promote (optional): python scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F\n   → Converts findings to markdown files for tracking via docs-issues skill\n```\n\n\n## The triage gate (steps 4-6) — do not skip it\n\n**A finding is a proposal, not a work order. Nothing gets fixed before the user has dispositioned\nit.** This is the step most likely to be skipped, because a well-written finding reads like an\ninstruction and fixing it feels like progress.\n\nPresent every finding and get one of three answers:\n\n| Disposition | Meaning |\n|---|---|\n| `fixed` | the user wants it fixed — only now may you write code |\n| `disputed` | the finding is wrong, or the premise does not hold; record the rationale |\n| `accepted` | real, but not worth fixing; accepted as risk |\n\nBatch obviously-correct one-liners into a single question rather than asking one at a time, but\nun-triaged means un-implemented. Applies to findings you generated yourself, and to findings from\na subagent — a tester or reviewer calling something a \"regression\" is that agent's opinion, not a\nverdict.\n\n**Why this is a hard gate, not advice.** Real case (code-monkeys, 2026-09): a tester reported that\na config file was unreachable inside containers and labelled it a regression. It was dispatched\nfor fixing within a minute. Correct triage was \"do nothing — that code path was already broken in\nthere and nobody uses it\". Instead the fix added a dockerfile COPY, a sync line and a two-path\nresolver; the resolver's failure mode then hung the interactive shell on TAB; that took two more\nreview rounds to find and fix, and the whole design was reverted a day later. **Every round of\nthat work descended from one un-triaged finding.** The cost of asking is one message. The cost of\nnot asking compounds silently, because each fix is individually defensible.\n\nTwo questions worth putting to the user with the findings, not after:\n- Is this finding *real*, and is the premise behind it true?\n- Should the behaviour it asks for exist at all — or is refusing\u002Fdeleting the better answer?\n\n## Scripts\n\n### loop.py — Orchestration & State\n\n```bash\n# Initialize a new review session\npython scripts\u002Floop.py init --max-rounds 3 --state .review-state.json\n\n# Advance to next round (returns: continue, converged, or max_rounds)\npython scripts\u002Floop.py next --state .review-state.json\n\n# Show current status\npython scripts\u002Floop.py status --state .review-state.json\n\n# Produce final summary\npython scripts\u002Floop.py summary --state .review-state.json\n```\n\n### review.py — Record Findings\n\n```bash\n# Pipe findings JSON into the state file\necho '[{\"id\":\"F1\",\"severity\":\"major\",\"category\":\"security\",\"location\":\"auth.py:42\",\"description\":\"SQL injection via string interpolation\",\"suggestion\":\"Use parameterized queries\"}]' | python scripts\u002Freview.py --state .review-state.json\n\n# Or pass a file\npython scripts\u002Freview.py --state .review-state.json --file findings.json\n```\n\nEach finding is a JSON object with fields:\n- `id` — unique within the round (e.g., \"F1\", \"F2\")\n- `severity` — critical, major, minor, nit\n- `category` — security, correctness, performance, clarity, maintainability, edge-case\n- `location` — file:line or section reference\n- `description` — what's wrong\n- `suggestion` — how to fix it\n\n### respond.py — Record Resolutions\n\n```bash\n# Mark findings as resolved\npython scripts\u002Frespond.py --state .review-state.json --resolve F1=fixed F2=disputed F3=accepted\n\n# Disputed findings require rationale (prompted interactively or via --rationale)\npython scripts\u002Frespond.py --state .review-state.json --resolve F2=disputed --rationale \"F2:Rate limiting is handled at the LB layer\"\n```\n\nDispositions: `fixed`, `disputed`, `accepted` (accept-risk)\n\n### promote.py — Convert Findings to Tracked Issues (optional)\n\nAfter the review loop converges (or hits max rounds), you can promote findings\ninto docs\u002Freviews\u002F markdown files for long-term tracking. This integrates with\nthe `docs-issues` skill for export to GitHub\u002FGitLab\u002Ftodo.md.\n\n```bash\n# Auto-classify by category (security\u002Fcorrectness\u002Fedge-case→bug, others→debt)\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F\n\n# Explicit classification per finding\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F \\\n    --classify F1=bug F2=feature F3=debt F4=question\n\n# Skip nits and disputed findings (default behavior)\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F \\\n    --skip nit,disputed\n\n# Preview without writing\npython scripts\u002Fpromote.py --state .review-state.json --output docs\u002Freviews\u002F --dry-run\n```\n\nPromoted findings are marked `promoted: true` in the state file, so re-running\nis idempotent. Each finding becomes one markdown file in\n`docs\u002Freviews\u002F{kind}s\u002F{date}-{slug}.md` with full schema (see `docs-issues` skill).\n\n## Adversarial Perspectives\n\nCycle through these when reviewing (use the prompt template in `assets\u002Ftemplates\u002Freview-prompt.md`):\n\n| Perspective | Focus |\n|---|---|\n| Attacker | Injection, auth bypass, data exfiltration, privilege escalation |\n| Skeptical User | Error handling, edge cases, misleading behavior, data loss |\n| Future Maintainer | Readability, coupling, hidden assumptions, missing docs |\n| Ops Engineer | Failure modes, resource leaks, observability, deployment risks |\n| Pedantic Reviewer | Naming, consistency, dead code, style violations |\n\n## Agent Instructions\n\nWhen performing an adversarial review:\n\n1. **Initialize** the loop state with `loop.py init`\n2. **Read** the target artifact thoroughly\n3. **Adopt** one or more adversarial perspectives from the table above\n4. **Generate** findings as structured JSON (use the schema above)\n5. **Record** findings with `review.py`\n6. **Present** findings to the user in a readable format (table or list)\n7. **STOP and wait** for a disposition on each (fix, dispute, or accept). Writing a fix for an\n   un-triaged finding is the single most expensive mistake this skill exists to prevent — see\n   *The triage gate* above. Never mark everything `fixed` at the end as bookkeeping.\n8. **Record** responses with `respond.py`\n9. **Advance** with `loop.py next` — if \"continue\", re-review focusing on:\n   - Disputed findings (re-evaluate with the user's rationale)\n   - Fixed code (verify the fix, check for regressions)\n   - New issues introduced by fixes\n10. **Summarize** when converged or at max rounds\n\n## Dependencies\n\nPython 3.6+ (standard library only)\n",{"name":5,"license":15,"metadata":44,"description":7},{"author":45,"version":46},"ooe","1.1.0","master","dbe7ba1a341696481a7f736baf501fe0a6b0d449","007\u002Fskills\u002Freview-adversarial",0,"https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt","2026-10-22 00:14:11",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add jeffersonjhunt\u002Fcode-monkeys --skill review-adversarial",{"tool":60,"command":61},"bunx","bunx skills add jeffersonjhunt\u002Fcode-monkeys --skill review-adversarial",{"tool":63,"command":64},"pnpm","pnpm dlx skills add jeffersonjhunt\u002Fcode-monkeys --skill review-adversarial","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002FSKILL.md",true,[68,74,80,86,90,94],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"assets\u002Ftemplates\u002Freview-prompt.md","ASSET","资产文件",3023,"https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002Fassets\u002Ftemplates\u002Freview-prompt.md",{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"CHANGELOG.md","REFERENCE","参考文档",554,"https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002FCHANGELOG.md",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"scripts\u002Floop.py","SCRIPT","脚本",4988,"https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002Fscripts\u002Floop.py",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"scripts\u002Fpromote.py",8786,"https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002Fscripts\u002Fpromote.py",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"scripts\u002Frespond.py",2983,"https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002Fscripts\u002Frespond.py",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002Freview.py",3090,"https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Freview-adversarial\u002Fscripts\u002Freview.py",[99,126,151,175,198,215],{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":39},"01M6JK30ZK7FPRR7T7G0H98CBF","spark-build","Build the cuda-* primate images (cuda-llama-cpp, cuda-comfy, cuda-vllm — the shared base for g.deceiver's six vLLM services) on a Blackwell GB10, freeing that box's unified memory first by stopping whatever it runs, then restarting it. NOTE the standalone coding cluster (qwen3-coder-next) was RETIRED 2026-09-05, so a \"drain\" is no longer a coding outage — it's a g.deceiver-service outage (hutch = memory stack; starsky = the live 27B brain, never build there mid-stream). Checks memory BEFORE stopping anything; --allow-outage \u002F --skip-drain control the trade.","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Fspark-build\u002FSKILL.md",[],[106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],"spark","build","spark build","memory","cpp","services","vLLM","first","stack","never","images","next","qwen3","trade","shared","control","cluster","drain","standalone","for",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":39},"01M6JK2W2WVS2SX4VFCGRGG1FT","spark-bench","Run LLM evaluation harnesses (AIME 25, GPQA, LiveCodeBench v6, tau2-bench, SWE-Bench Verified via SWE-agent) against the spark-cluster from a dedicated x86 bench host (intel-nuc.tworivers). The harness runs in the spark-bench primate; only the OpenAI-compatible endpoint URL needs to change between baseline (cluster LB) and test (ad-hoc model server) runs.","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Fspark-bench\u002FSKILL.md",[],[106,133,134,135,136,137,138,139,140,141,142,143,144,122,145,146,147,148,149,150],"spark bench","test","change","run","harness","server","baseline","model","only","container","host","via","ad","URL","openai-compatible","harnesses","lb","SWE",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":39},"01M6JK2NCXEKJXPFQ5XMXY3TG7","secret-ops","Decrypt\u002Fencrypt this project's SOPS+age secrets and manage the private hemlighet repo. Use whenever a task reads or changes a secret — sops, age, vault, hemlighet, a *.sops file, personal\u002F* dotfiles. Crypto runs on the configured secret host over ssh, NOT inside a primate. Host\u002Fidentity come from env or ~\u002F.config\u002Fsecret-ops.conf (never hardcoded here).","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Fsecret-ops\u002FSKILL.md",[],[158,159,160,161,162,163,164,165,166,34,115,167,168,169,170,171,172,143,173,174],"ops","secret ops","config","encrypt","file","vault","secrets","dotfiles","repo","manage","task","crypto","project","age","env","sops","changes",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":39},"01M6JK2DY9DJYPPS8C0QB291NV","sdlc","The default software development lifecycle every agent follows — intake, plan, isolate, implement, verify, review, land, deploy, observe, release. Use at the start of any coding task, and whenever deciding whether work is ready to deploy or ready to merge.","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Fsdlc\u002FSKILL.md",[],[177,24,182,183,184,185,186,187,188,189,190,34,191,192,193,194,168,195,196,197],"implement","merge","development","release","intake","lifecycle","verify","plan","work","ready","observe","default","development lifecycle","software development","software","at",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":204,"publishedAt":39},"01M6JK23MZG8D9WNSWHCJDX9YE","math-fibonacci","Create a fibonacci sequence, as a list, as ascii art to display the divine proportions, etc...","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Fmath-fibonacci\u002FSKILL.md",[],[205,206,207,208,209,210,211,212,213,214],"math","math fibonacci","create","list","ascii art","Art","as","ascii","display","sequence",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":39},"01M6JK1YKTX26HATGPE7B8FWJZ","img-sixel","Display images as SIXEL graphics in the terminal or convert SIXEL files to PNG. Use when asked to show an image inline, render graphics in a terminal, or convert between SIXEL and PNG formats.","https:\u002F\u002Fgithub.com\u002Fjeffersonjhunt\u002Fcode-monkeys\u002Fblob\u002Fmaster\u002F007\u002Fskills\u002Fimg-sixel\u002FSKILL.md",[],[222,223,224,225,226,227,228,34,116,229,230,211,231,232,213,233],"img","img sixel","image","terminal","graphics","convert","png","files","show","render","formats","inline"]