[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K7SRFH6JZXNM0FGXMJQ37M":3,"skill-same:01M6K7SRFH6JZXNM0FGXMJQ37M":87},{"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":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6K7SRFH6JZXNM0FGXMJQ37M","playbook-assistant",null,"Answer \"how do I…\" questions about FSAD strategies and practices using only the content already in the FSAD Playbook — no external knowledge. Retrieves the relevant section(s) from a bundled offline index and cites each answer back to a real in-app section anchor. Use when a teammate asks how the playbook recommends handling something (pod sizing, hooks, code review, KPIs, Codex setup, etc.) instead of re-deriving an answer from general Claude Code knowledge.","tbeack\u002Ffsad_playbook","tbeack","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F206807984?v=4","01M6K7Q3C3VRTCVC55T71A1SY9","Theo Beack","01M6K7Q3GDY8TXRQEH984SEE5W",8,"MIT","https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fplaybook-assistant\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,39,40,41,42,43,44,45,46],"assistant","playbook","playbook assistant","when","code review","section","codex setup","answer","re","relevant","app","anchor","strategies","back","do","general","hooks","only","use","question","knowledge","code","review","2026-11-10 10:12:30",false,"---\ndescription: Answer \"how do I…\" questions about FSAD strategies and practices using only the content already in the FSAD Playbook — no external knowledge. Retrieves the relevant section(s) from a bundled offline index and cites each answer back to a real in-app section anchor. Use when a teammate asks how the playbook recommends handling something (pod sizing, hooks, code review, KPIs, Codex setup, etc.) instead of re-deriving an answer from general Claude Code knowledge.\nargument-hint: '`\u003Cquestion>`'\n---\n\n# fsad-harness:playbook-assistant — FSAD Playbook Q&A\n\nAnswer a \"how do I…\" or \"what does the playbook say about…\" question using **only** the content in the FSAD Playbook, and cite the section(s) the answer came from. Never answer from general Claude Code\u002FCodex knowledge as if it were playbook content — if the playbook doesn't cover it, say so.\n\n## How this works\n\nThis skill ships with `index\u002Fplaybook-index.jsonl` — an offline, pre-extracted copy of every section and collapsible in `fsad-playbook.html` (one JSON object per line: `sectionId`, `title`, `label`, `page`, `anchor`, `text`). It works fully offline; the consumer's repo does not need a copy of `fsad-playbook.html` itself. There is no vector DB or embedding step — the retrieval is keyword search over the index, and Claude does the actual \"semantic\" reasoning by reading the matched text.\n\n## Step 1 — Resolve the question\n\n`\u003Cquestion>` is the free-text question. If empty, ask: \"What would you like to know about the FSAD Playbook?\"\n\n## Step 2 — Search the index\n\nRun `Grep` against `index\u002Fplaybook-index.jsonl` (resolve the path relative to this `SKILL.md` file's own directory) for keywords pulled from the question. Since it's JSONL, each match is one self-contained chunk — no need to parse the whole file.\n\n- Start with the most distinctive nouns\u002Fverbs in the question (e.g. \"pod size 3 person\" → try `pod`, `sizing`, `3-person` separately — `grep -i` with `-E` alternation works well: `grep -iE \"pod|sizing\"`).\n- If the first pass returns nothing, retry with broader or synonymous terms before giving up (e.g. \"hooks for security review\" with no hits on \"security review\" → try \"sec-review\", \"hook\", \"PreToolUse\").\n- Collect the 1–3 best-matching lines. Parse each as JSON to get `title`, `label`, `page`, `anchor`, `text`.\n\n## Step 3 — Answer from the retrieved text only\n\nRead the matched `text` field(s) and compose an answer grounded **only** in that content. For each section used, cite it as:\n\n> see *{title}* — `{anchor}`\n\nand tell the user to open that anchor in their local `fsad-playbook.html` (or `dist\u002Ffsad-playbook.html`) — e.g. \"open `fsad-playbook.html#practices\u002Fhooks-deep-dive`\". Do not fabricate a hosted URL; only reference the anchor fragment unless the user has told you where their copy of the playbook is deployed.\n\nIf no chunk is a real match for the question, say explicitly that the playbook doesn't appear to cover it, and suggest the nearest topic you did find instead of guessing an answer.\n\n## Step 4 — Staleness check (only if `fsad-playbook.html` is present in this repo)\n\nIf the current working directory has a top-level `fsad-playbook.html`, compare its `\u003Ctitle>` version against `playbook_version` in `index\u002Fmeta.json`. If they differ, mention once that the bundled index may be out of date with the local playbook and suggest regenerating it (`python3 scripts\u002Fbuild-assistant-index.py` in the FSAD Playbook repo, then reinstalling this plugin). Skip this step entirely when no local `fsad-playbook.html` exists — that's the normal case for a consumer repo.\n\n## Conventions to honour\n\n- Never answer as if playbook content when it wasn't found in the index — that's how this skill earns trust over a plain LLM guess.\n- Keep citations concrete: a title and an anchor, not a vague \"see the practices page.\"\n- This skill is read-only — it never edits any file.\n","# fsad-harness:playbook-assistant — FSAD Playbook Q&A\n\nAnswer a \"how do I…\" or \"what does the playbook say about…\" question using **only** the content in the FSAD Playbook, and cite the section(s) the answer came from. Never answer from general Claude Code\u002FCodex knowledge as if it were playbook content — if the playbook doesn't cover it, say so.\n\n## How this works\n\nThis skill ships with `index\u002Fplaybook-index.jsonl` — an offline, pre-extracted copy of every section and collapsible in `fsad-playbook.html` (one JSON object per line: `sectionId`, `title`, `label`, `page`, `anchor`, `text`). It works fully offline; the consumer's repo does not need a copy of `fsad-playbook.html` itself. There is no vector DB or embedding step — the retrieval is keyword search over the index, and Claude does the actual \"semantic\" reasoning by reading the matched text.\n\n## Step 1 — Resolve the question\n\n`\u003Cquestion>` is the free-text question. If empty, ask: \"What would you like to know about the FSAD Playbook?\"\n\n## Step 2 — Search the index\n\nRun `Grep` against `index\u002Fplaybook-index.jsonl` (resolve the path relative to this `SKILL.md` file's own directory) for keywords pulled from the question. Since it's JSONL, each match is one self-contained chunk — no need to parse the whole file.\n\n- Start with the most distinctive nouns\u002Fverbs in the question (e.g. \"pod size 3 person\" → try `pod`, `sizing`, `3-person` separately — `grep -i` with `-E` alternation works well: `grep -iE \"pod|sizing\"`).\n- If the first pass returns nothing, retry with broader or synonymous terms before giving up (e.g. \"hooks for security review\" with no hits on \"security review\" → try \"sec-review\", \"hook\", \"PreToolUse\").\n- Collect the 1–3 best-matching lines. Parse each as JSON to get `title`, `label`, `page`, `anchor`, `text`.\n\n## Step 3 — Answer from the retrieved text only\n\nRead the matched `text` field(s) and compose an answer grounded **only** in that content. For each section used, cite it as:\n\n> see *{title}* — `{anchor}`\n\nand tell the user to open that anchor in their local `fsad-playbook.html` (or `dist\u002Ffsad-playbook.html`) — e.g. \"open `fsad-playbook.html#practices\u002Fhooks-deep-dive`\". Do not fabricate a hosted URL; only reference the anchor fragment unless the user has told you where their copy of the playbook is deployed.\n\nIf no chunk is a real match for the question, say explicitly that the playbook doesn't appear to cover it, and suggest the nearest topic you did find instead of guessing an answer.\n\n## Step 4 — Staleness check (only if `fsad-playbook.html` is present in this repo)\n\nIf the current working directory has a top-level `fsad-playbook.html`, compare its `\u003Ctitle>` version against `playbook_version` in `index\u002Fmeta.json`. If they differ, mention once that the bundled index may be out of date with the local playbook and suggest regenerating it (`python3 scripts\u002Fbuild-assistant-index.py` in the FSAD Playbook repo, then reinstalling this plugin). Skip this step entirely when no local `fsad-playbook.html` exists — that's the normal case for a consumer repo.\n\n## Conventions to honour\n\n- Never answer as if playbook content when it wasn't found in the index — that's how this skill earns trust over a plain LLM guess.\n- Keep citations concrete: a title and an anchor, not a vague \"see the practices page.\"\n- This skill is read-only — it never edits any file.\n",{"description":7,"argument-hint":52},"`\u003Cquestion>`","main","bf3a412c985273327682c956ca35341c64ce9f8c","skills\u002Fplaybook-assistant",4,"https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook","https:\u002F\u002Ffsad-playbook.vercel.app","https:\u002F\u002Fgithub.com\u002Ftbeack","2026-11-12 21:05:31",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add tbeack\u002Ffsad_playbook --skill playbook-assistant",{"tool":67,"command":68},"bunx","bunx skills add tbeack\u002Ffsad_playbook --skill playbook-assistant",{"tool":70,"command":71},"pnpm","pnpm dlx skills add tbeack\u002Ffsad_playbook --skill playbook-assistant","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fplaybook-assistant\u002FSKILL.md",true,[75,81],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"index\u002Fmeta.json","REFERENCE","参考文档",111,"https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fplaybook-assistant\u002Findex\u002Fmeta.json",{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"index\u002Fplaybook-index.jsonl","OTHER","其他",2030309,"https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fplaybook-assistant\u002Findex\u002Fplaybook-index.jsonl",[88,110,136,155,176,203],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":47},"01M6K7W5RTRMRQMWAGXNSX8DM6","sync","Pre-flight sync check for registered projects. Fetches from remote, reports uncommitted changes, and handles four states — up-to-date, ahead, behind (warns + pulls), or diverged (warns, no pull). Supports single-project (cwd detection), named-project (fsad-harness:sync key1 key2), and full-sync (fsad-harness:sync ALL) modes.","https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fsync\u002FSKILL.md",[],[90,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109],"pull","harness","detection","projects","check","up","reports","project","full","remote","states","for","changes","modes","single",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":119,"publishedAt":47},"01M6K7VY55SWBDD379T9JZVF16","spec-review","Run a detailed, adversarial multi-agent review of a written proposal or specification (spec.md, PRD, RFC, design doc, architecture proposal, business case) — reviews the document, not code. Runs a steelman\u002Finventory pass, then up to 10 specialist lenses (logic, assumptions, evidence, completeness, feasibility, alternatives, consistency, stakeholders, testability, risk), then adversarial validation that defaults to refuting each finding unless it survives, then a loop-until-dry completeness pass. Writes a single severity-ranked SPEC-REVIEW.md next to the document. Use when the user says \"review this spec\", \"adversarial review\", \"poke holes in this proposal\", \"red team this PRD\", \"critique this design doc\", \"what's wrong with this RFC\", \"stress test this plan\", or similar. Review-only — never edits the document.","https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fspec-review\u002FSKILL.md",[116],{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[46,120,121,122,123,45,124,125,126,127,41,100,128,129,130,131,132,133,134,135,27],"spec","spec review","design","architecture","inventory","team","loop","never","specification","poke","deep","dry","proposal","lens","quick","reviews",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":47},"01M6K7VVD3B0SM3VKJ5W26QPPV","ship","Short alias for \u002Ffsad-harness:ship-it. Wrap up finished work, cut a version, commit, push, and open a PR.","https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fship\u002FSKILL.md",[],[138,143,144,96,145,146,147,148,149,150,100,151,152,153,154,106],"commit","pr","push","open","wrap up","work","short","version","wrap","alias","cut","it",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":47},"01M6K7VP2QDRNX57KP2RH10FAW","ship-it","Wrap up a finished round of work — verify README and CHANGELOG are current, cut a version if warranted, move completed task files into the completed\u002F folder, then create a feature branch if needed, commit, push, and open a PR. Run after `\u002Ffsad-harness:do-task` has marked one or more tasks done. Takes no arguments.","https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fship-it\u002FSKILL.md",[],[138,162,154,143,163,164,146,165,166,148,167,168,100,169,170,171,172,173,104,174,175],"ship it","tasks","create","Bash","gh pr","branch","fetch","log","files","done","checkout","move","ls","parse",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":47},"01M6K7VEK1C0MK5BNDHV8S6HCA","set-context","Gather codebase and initiative context before planning starts — runs a graphify build or query when graphify is available locally, falls back to a manual repo sweep otherwise, then asks targeted questions and writes a single context.md. Invocable standalone or as fsad-harness:plan's mandatory Phase 0. Use when the user says \"set context\", \"gather context\", or as the first step of fsad-harness:plan.","https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fset-context\u002FSKILL.md",[],[183,184,185,186,96,187,188,189,190,191,192,42,193,37,194,195,196,197,198,199,200,109,201,202,27],"SET","context","set context","planning","first","graphify","plan","sweep","repo","user","build","query","as","questions","manual","standalone","path","codebase","phase","gather",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":213,"publishedAt":47},"01M6K7V17M3MQ92QZ99G294RYM","sec-review-team","Run a multi-agent security review TEAM over a codebase or recent diff. Picks a specialist roster based on detected stack signals (webapp \u002F desktop \u002F iac \u002F llm-agent \u002F container \u002F backend \u002F mobile \u002F etc.) from a library of 13 specialists. Each specialist writes structured JSONL + prose findings in parallel; input-validation-auditor and auth-authz-auditor run a loop-until-dry consensus fan-out (2-8 passes); every deduped finding is adversarially verified by a dedicated validator agent before it can appear in the report. Orchestrator consolidates into a single severity-ranked REPORT.md with deduped root issues, archived per-run under a known-findings.jsonl ledger that drives auto re-review. Distinct from the built-in `\u002Fsecurity-review` (which is a single-pass branch review). Use when the user says \"multi-agent security review\", \"security review team\", \"sec-review team\", \"audit this branch with a team\", \"pre-release hardening team pass\", or similar. Review-only — no fixes.","https:\u002F\u002Fgithub.com\u002Ftbeack\u002Ffsad_playbook\u002Fblob\u002Fmain\u002Fskills\u002Fsec-review-team\u002FSKILL.md",[209,212],{"categoryNo":210,"categoryName":211,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},[46,125,214,215,216,217,218,219,220,126,221,167,222,223,224,131,225,32,226,227,228],"sec review team","review team","agent security","security review","run","release","security-review","stack","consensus","auto","mobile","input","jsonl","which","verified"]