[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71F9HFZF0J0G4625P1WQJT3":3,"skill-same:01M71F9HFZF0J0G4625P1WQJT3":70},{"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":18,"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":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M71F9HFZF0J0G4625P1WQJT3","caveman-review",null,"Use when the user wants a pull-request review delivered as one-line comments with severity emoji, line references, and direct fix suggestions instead of paragraphs.","Wizarck\u002Fai-playbook","Wizarck","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F23051550?v=4","01M71B3AAVR67GRWFV5ZXXZP31","arturo6ramirez","01M71F5FHXDSX3G2F52R1YS77J",6,"MIT","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fcaveman-review\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"caveman review","caveman","review","emoji","user","direct","pull-request","playbook","line","request","references","with","one","comments","when","use","fix","severity","as","pull","2026-11-10 10:12:30",false,"---\nname: caveman-review\ndescription: Use when the user wants a pull-request review delivered as one-line comments with severity emoji, line references, and direct fix suggestions instead of paragraphs.\nlicense: MIT\nmetadata:\n  author: ai-playbook (ported from JuliusBrussee\u002Fcaveman, MIT)\n  version: \"1.0\"\n---\n\n# caveman-review — one-line PR review\n\nReview a diff or a small set of files and emit one finding per line, in a fixed shape.\n\n## When to fire\n\nUser intent triggers (any of):\n- \"\u002Fcaveman-review\"\n- \"review this PR\", \"review the diff\", \"review my changes\"\n- \"what's wrong with this code\", \"give me a one-line review\"\n\n## Output contract\n\nOne finding per line, no preamble, no summary at the end. Exact shape:\n\n```\n\u003Cpath>:\u003Cline>: \u003Cseverity> \u003Ccategory>: \u003Cproblem>. \u003Cfix>.\n```\n\n- `\u003Cseverity>` ∈ `🔴 critical` | `🟠 high` | `🟡 medium` | `🟢 low` | `💬 nit`.\n- `\u003Ccategory>` ∈ `bug` | `security` | `perf` | `correctness` | `style` | `test` | `doc`.\n- `\u003Cproblem>` ≤ 50 chars, caveman voice (drop articles, fragments OK).\n- `\u003Cfix>` ≤ 50 chars, imperative voice.\n- Sort: severity descending, then path, then line.\n- If nothing is wrong: emit the single line `LGTM. No issues found.`\n\n## Steps\n\n1. **Get the diff.** Run `git diff \u003Cbase>...HEAD` if reviewing a branch, or `git diff --cached` if reviewing staged changes. If the user passed a specific PR number, use `gh pr diff \u003Cn>`.\n\n2. **Refuse if too large.** If the diff exceeds ~400 lines or touches more than 5 files, emit `OUT_OF_SCOPE: diff too large (\u003Clines>L, \u003Cfiles>F), split first.` and stop.\n\n3. **Walk every changed line.** For each line, ask:\n   - Does this introduce a bug?\n   - Does this open a security hole (injection, missing auth check, leaked secret)?\n   - Does this regress performance (N+1 query, unbounded loop, sync I\u002FO in hot path)?\n   - Is correctness obvious (off-by-one, missing null guard, wrong comparison)?\n   - Is the test coverage adequate for the change?\n   - Are docs out of date with the change?\n   - Style nits ONLY if they break the project's existing style.\n\n4. **Write the findings.** One per real issue. Do not pad. Do not duplicate.\n\n5. **Output.** Just the lines. No \"Here's my review:\". No \"Hope this helps.\" No closing remark.\n\n## Trust boundary\n\n- Do not invent issues to look thorough. Empty result is acceptable; emit `LGTM. No issues found.`\n- Do not post the review to GitHub. The skill drafts; the user posts.\n- Do not mark `🔴 critical` for style or nit issues. Reserve that severity for actual production-breaking risks.\n\n## Examples\n\n```\nscripts\u002Fcaveman\u002Ftoggle.py:42: 🔴 critical bug: race on flag write. Use temp+rename.\nscripts\u002Fcaveman\u002Fcli.py:88: 🟠 high security: shell=True with user input. Use list args.\nscripts\u002Fcaveman\u002Fmcp_shrink.py:120: 🟡 medium correctness: silent ignore of error. Log and raise.\ntests\u002Ftest_caveman_toggle.py:30: 🟢 low test: only happy path covered. Add schema-fail case.\ndocs\u002Frunbooks\u002Fcaveman-toggle.md:55: 💬 nit doc: stale path reference. Update to new location.\n```\n\n## See also\n\n- [skills\u002Fcaveman\u002FSKILL.md](..\u002Fcaveman\u002FSKILL.md) — base caveman ruleset.\n- [skills\u002Fcaveman\u002Fagents\u002Fcavecrew-reviewer.md](..\u002Fcaveman\u002Fagents\u002Fcavecrew-reviewer.md) — subagent version for batched review.\n","# caveman-review — one-line PR review\n\nReview a diff or a small set of files and emit one finding per line, in a fixed shape.\n\n## When to fire\n\nUser intent triggers (any of):\n- \"\u002Fcaveman-review\"\n- \"review this PR\", \"review the diff\", \"review my changes\"\n- \"what's wrong with this code\", \"give me a one-line review\"\n\n## Output contract\n\nOne finding per line, no preamble, no summary at the end. Exact shape:\n\n```\n\u003Cpath>:\u003Cline>: \u003Cseverity> \u003Ccategory>: \u003Cproblem>. \u003Cfix>.\n```\n\n- `\u003Cseverity>` ∈ `🔴 critical` | `🟠 high` | `🟡 medium` | `🟢 low` | `💬 nit`.\n- `\u003Ccategory>` ∈ `bug` | `security` | `perf` | `correctness` | `style` | `test` | `doc`.\n- `\u003Cproblem>` ≤ 50 chars, caveman voice (drop articles, fragments OK).\n- `\u003Cfix>` ≤ 50 chars, imperative voice.\n- Sort: severity descending, then path, then line.\n- If nothing is wrong: emit the single line `LGTM. No issues found.`\n\n## Steps\n\n1. **Get the diff.** Run `git diff \u003Cbase>...HEAD` if reviewing a branch, or `git diff --cached` if reviewing staged changes. If the user passed a specific PR number, use `gh pr diff \u003Cn>`.\n\n2. **Refuse if too large.** If the diff exceeds ~400 lines or touches more than 5 files, emit `OUT_OF_SCOPE: diff too large (\u003Clines>L, \u003Cfiles>F), split first.` and stop.\n\n3. **Walk every changed line.** For each line, ask:\n   - Does this introduce a bug?\n   - Does this open a security hole (injection, missing auth check, leaked secret)?\n   - Does this regress performance (N+1 query, unbounded loop, sync I\u002FO in hot path)?\n   - Is correctness obvious (off-by-one, missing null guard, wrong comparison)?\n   - Is the test coverage adequate for the change?\n   - Are docs out of date with the change?\n   - Style nits ONLY if they break the project's existing style.\n\n4. **Write the findings.** One per real issue. Do not pad. Do not duplicate.\n\n5. **Output.** Just the lines. No \"Here's my review:\". No \"Hope this helps.\" No closing remark.\n\n## Trust boundary\n\n- Do not invent issues to look thorough. Empty result is acceptable; emit `LGTM. No issues found.`\n- Do not post the review to GitHub. The skill drafts; the user posts.\n- Do not mark `🔴 critical` for style or nit issues. Reserve that severity for actual production-breaking risks.\n\n## Examples\n\n```\nscripts\u002Fcaveman\u002Ftoggle.py:42: 🔴 critical bug: race on flag write. Use temp+rename.\nscripts\u002Fcaveman\u002Fcli.py:88: 🟠 high security: shell=True with user input. Use list args.\nscripts\u002Fcaveman\u002Fmcp_shrink.py:120: 🟡 medium correctness: silent ignore of error. Log and raise.\ntests\u002Ftest_caveman_toggle.py:30: 🟢 low test: only happy path covered. Add schema-fail case.\ndocs\u002Frunbooks\u002Fcaveman-toggle.md:55: 💬 nit doc: stale path reference. Update to new location.\n```\n\n## See also\n\n- [skills\u002Fcaveman\u002FSKILL.md](..\u002Fcaveman\u002FSKILL.md) — base caveman ruleset.\n- [skills\u002Fcaveman\u002Fagents\u002Fcavecrew-reviewer.md](..\u002Fcaveman\u002Fagents\u002Fcavecrew-reviewer.md) — subagent version for batched review.\n",{"name":5,"license":15,"metadata":44,"description":7},{"author":45,"version":46},"ai-playbook (ported from JuliusBrussee\u002Fcaveman, MIT)","1.0","main","08fe7aa0f06bc1a3f592ec82360e46b854846968","skills\u002Fcaveman-review",1,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook","https:\u002F\u002Fgithub.com\u002FWizarck","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Framirezarturo\u002F","Geek by birth, with not much to say but plenty to talk about.","2026-11-09 19:34:21",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add Wizarck\u002Fai-playbook --skill caveman-review",{"tool":62,"command":63},"bunx","bunx skills add Wizarck\u002Fai-playbook --skill caveman-review",{"tool":65,"command":66},"pnpm","pnpm dlx skills add Wizarck\u002Fai-playbook --skill caveman-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fcaveman-review\u002FSKILL.md",true,[],[71,94,112,135,154,167],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":39},"01M71FATTWS9W3BME3S94SA1QR","sweep","Use when the user wants to find code that has quietly stopped being used — types \u002Fsweep, asks for a \"dead code sweep\", \"repo entropy\", \"what can we delete\", \"orphan files\", \"unused code\", or asks to review a sweep ledger. Adjudicates candidates a deterministic scanner already produced; it never deletes anything and never re-derives findings from raw source. Pairs with ponytail, which gates what gets written rather than what rots.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fsweep\u002FSKILL.md",[],[73,78,79,80,81,82,83,84,85,86,87,88,89,34,33,90,91,92,21,93],"deterministic","which","never","entropy","types","for","repo","re","ponytail","orphan","files","unused","code","can","gates","candidates",{"skillNo":95,"name":86,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":39},"01M71FAQKVDA209G7G5NMY9H1E","Use when the user wants the laziest solution that actually works — types \u002Fponytail, says \"be lazy\", \"lazy mode\", \"simplest solution\", \"minimal solution\", \"yagni\", \"do less\", or \"shortest path\", or complains about over-engineering, bloat, boilerplate, or unnecessary dependencies. Supports intensity levels lite, full, ultra (default). Pairs with caveman, which compresses prose, not code.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail\u002FSKILL.md",[],[86,100,101,79,102,82,103,104,105,106,34,33,90,30,107,108,109,110,26,111],"notice","do","lazy","mode","default","minimal","intensity","yagni","about","dependencies","2026","boilerplate",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":39},"01M71FAMS250NKNF1PET9KNBBV","ponytail-review","Use when the user wants a code review focused exclusively on over-engineering — says \"review for over-engineering\", \"what can we delete\", \"is this over-engineered\", \"simplify review\", or invokes \u002Fponytail-review. Complements correctness\u002Fsecurity review; this one only hunts complexity in the current diff. Gated by the ponytail review_ponytail component.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail-review\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[124,86,21,125,126,83,127,128,34,33,129,130,90,31,91,131,132,133,134,26],"ponytail review","complexity","diff","code review","only","simplify","correctness","delete","component","security review","gated",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":39},"01M71FAG53ZPCSWE272P6S9JFN","ponytail-debt","Use when the user wants to harvest every `ponytail:` comment in the codebase into a tracked debt ledger — says \"ponytail debt\", \"\u002Fponytail-debt\", \"what did ponytail defer\", \"list the shortcuts\", \"ponytail ledger\", or \"what did we mark to do later\". One-shot report, changes nothing. Gated by the ponytail debt_ponytail component.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail-debt\u002FSKILL.md",[],[142,86,143,144,101,145,146,132,147,148,134,149,150,26,151,152,34,33,153,31],"ponytail debt","debt","shortcuts","mark","to do","changes","later","report","codebase","harvest","list","ledger",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":39},"01M71FACJW88WCS2JGX3MQ3KV9","ponytail-audit","Use when the user wants a whole-repo audit for over-engineering — says \"audit this codebase\", \"audit for over-engineering\", \"what can I delete from this repo\", \"find bloat\", or invokes \u002Fponytail-audit. Like ponytail-review but scans the entire tree, not a diff. One-shot report, applies no fixes. Gated by the ponytail audit_ponytail component.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail-audit\u002FSKILL.md",[],[161,86,162,163,126,164,83,84,34,33,165,31,91,21,131,132,134,166,149,150],"ponytail audit","audit","tree","fixes","entire","find",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":39},"01M71FA9THHXDX79PQTJ9CZX9E","openspec-propose","Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fopenspec-propose\u002FSKILL.md",[],[174,175,30,176,177,178,179,180,181,83,182,183,184,185,186,187,34,33,188,189],"openspec","openspec propose","ready","proposal","change","cli","get","build","complete","design","new","implementation","generated","describe","artifacts","tasks"]