[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71JK0SS7M17KW4PW8SGGCMH":3,"skill-same:01M71JK0SS7M17KW4PW8SGGCMH":65},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M71JK0SS7M17KW4PW8SGGCMH","search-skills",null,"Find the right bigpowers skill from natural-language intent using a local lexical index over SKILL.md frontmatter. Use when unsure which skill to invoke, or at start of research-first.","danielvm-git\u002Fbigpowers","danielvm-git","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1020864?v=4","01M71H1N1CTQ529S0KN7KETVG6","Daniel V M","01M71H1N218Y3S8WHCJ58NPRSW",292,"MIT","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fsearch-skills\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"search skills","search","language","index","find","first","research","use","frontmatter","start","at","intent","haiku","natural-language","when","invoke","local","which","2026-11-10 10:12:30",false,"---\nname: search-skills\nmodel: haiku\ndescription: \"Find the right bigpowers skill from natural-language intent using a local lexical index over SKILL.md frontmatter. Use when unsure which skill to invoke, or at start of research-first.\"\n---\n\n\u003C!-- story: e09s01 -->\n\u003C!-- story: e21s01 -->\n\n# Search Skills\n\n> **HARD GATE** — Search results must be ranked by relevance. Do NOT return all matches without prioritization. Use skill metadata (phase, purpose, frequency) to rank.\n>\n> **HARD GATE** — Do NOT use external embedding APIs or AI-based semantic search. This is a lexical-only index (ADR: zero external dependency).\n\nLexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs\u002FSKILL-SEARCH-INDEX_LATEST.md`) built from every SKILL.md's YAML frontmatter — name, description, and key phrases. No vector DB, no API calls, no network dependency.\n\n## When to use\n\n- You're unsure which skill to invoke for a user's request\n- At the start of `research-first` to find pre-existing skills that might solve the problem\n- When a user asks \"is there a skill for X?\"\n- Before calling a skill by name, to confirm it's the right one\n\n## Pre-flight\n\n- [ ] Does `specs\u002FSKILL-SEARCH-INDEX_LATEST.md` exist? If not, run `bash scripts\u002Fbuild-skill-index.sh`.\n- [ ] Is the index fresh? Check its timestamp — if > 24 hours old or after any SKILL.md change, regenerate.\n\n## Process\n\n1. **Refresh index if stale** — Run `bash scripts\u002Fbuild-skill-index.sh` if `specs\u002FSKILL-SEARCH-INDEX_LATEST.md` doesn't exist or was modified before the last SKILL.md change.\n\n2. **Search the index** — Use ripgrep on the lexical index:\n   ```\n   rg -i \"\u003Ckeywords>\" specs\u002FSKILL-SEARCH-INDEX_LATEST.md\n   ```\n   The index contains each skill's name, description, phase, and key use-case phrases, so natural language queries work well even without embeddings.\n\n3. **Rank results** — Read the top 3 matches. Evaluate by:\n   - **Exactness** — Does the description literally match the user's intent?\n   - **Phase fit** — Is the skill designed for the current lifecycle phase?\n   - **Trigger phrases** — Does the skill's \"Use when\" section match the situation?\n\n4. **Recommend one skill** — Select the single best-matching skill. Provide:\n   - The skill name\n   - Why it's the best match (citing the description or trigger phrase)\n   - What it produces (artifact, dialogue, or state change)\n\n5. **Invoke** — Call the skill directly or through the orchestrator. If no match found, suggest the closest phase-appropriate skill or `using-bigpowers` as a general entry point.\n\n## Index Format\n\n`specs\u002FSKILL-SEARCH-INDEX_LATEST.md` contains one section per skill:\n```markdown\n## \u003Cskill-name>\n- **Description:** \u003Cfrom frontmatter>\n- **Phase:** \u003Clifecycle phase>\n- **Triggers:** \u003Ckey phrases from description>\n- **Keywords:** \u003Cextracted terms>\n```\n\n## Why Not Semantic Search?\n\n- Zero network dependency — works fully offline\n- Zero cost — no API keys, no usage limits\n- Instant — ripgrep on a local file is sub-second\n- Deterministic — same query always returns same results\n- Auditable — you can read the full index\n\n## Verify\n\n→ verify: `test -f specs\u002FSKILL-SEARCH-INDEX_LATEST.md || (bash scripts\u002Fbuild-skill-index.sh && test -f specs\u002FSKILL-SEARCH-INDEX_LATEST.md)`\n","\u003C!-- story: e09s01 -->\n\u003C!-- story: e21s01 -->\n\n# Search Skills\n\n> **HARD GATE** — Search results must be ranked by relevance. Do NOT return all matches without prioritization. Use skill metadata (phase, purpose, frequency) to rank.\n>\n> **HARD GATE** — Do NOT use external embedding APIs or AI-based semantic search. This is a lexical-only index (ADR: zero external dependency).\n\nLexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs\u002FSKILL-SEARCH-INDEX_LATEST.md`) built from every SKILL.md's YAML frontmatter — name, description, and key phrases. No vector DB, no API calls, no network dependency.\n\n## When to use\n\n- You're unsure which skill to invoke for a user's request\n- At the start of `research-first` to find pre-existing skills that might solve the problem\n- When a user asks \"is there a skill for X?\"\n- Before calling a skill by name, to confirm it's the right one\n\n## Pre-flight\n\n- [ ] Does `specs\u002FSKILL-SEARCH-INDEX_LATEST.md` exist? If not, run `bash scripts\u002Fbuild-skill-index.sh`.\n- [ ] Is the index fresh? Check its timestamp — if > 24 hours old or after any SKILL.md change, regenerate.\n\n## Process\n\n1. **Refresh index if stale** — Run `bash scripts\u002Fbuild-skill-index.sh` if `specs\u002FSKILL-SEARCH-INDEX_LATEST.md` doesn't exist or was modified before the last SKILL.md change.\n\n2. **Search the index** — Use ripgrep on the lexical index:\n   ```\n   rg -i \"\u003Ckeywords>\" specs\u002FSKILL-SEARCH-INDEX_LATEST.md\n   ```\n   The index contains each skill's name, description, phase, and key use-case phrases, so natural language queries work well even without embeddings.\n\n3. **Rank results** — Read the top 3 matches. Evaluate by:\n   - **Exactness** — Does the description literally match the user's intent?\n   - **Phase fit** — Is the skill designed for the current lifecycle phase?\n   - **Trigger phrases** — Does the skill's \"Use when\" section match the situation?\n\n4. **Recommend one skill** — Select the single best-matching skill. Provide:\n   - The skill name\n   - Why it's the best match (citing the description or trigger phrase)\n   - What it produces (artifact, dialogue, or state change)\n\n5. **Invoke** — Call the skill directly or through the orchestrator. If no match found, suggest the closest phase-appropriate skill or `using-bigpowers` as a general entry point.\n\n## Index Format\n\n`specs\u002FSKILL-SEARCH-INDEX_LATEST.md` contains one section per skill:\n```markdown\n## \u003Cskill-name>\n- **Description:** \u003Cfrom frontmatter>\n- **Phase:** \u003Clifecycle phase>\n- **Triggers:** \u003Ckey phrases from description>\n- **Keywords:** \u003Cextracted terms>\n```\n\n## Why Not Semantic Search?\n\n- Zero network dependency — works fully offline\n- Zero cost — no API keys, no usage limits\n- Instant — ripgrep on a local file is sub-second\n- Deterministic — same query always returns same results\n- Auditable — you can read the full index\n\n## Verify\n\n→ verify: `test -f specs\u002FSKILL-SEARCH-INDEX_LATEST.md || (bash scripts\u002Fbuild-skill-index.sh && test -f specs\u002FSKILL-SEARCH-INDEX_LATEST.md)`\n",{"name":5,"model":31,"description":7},"main","72f5e4c8b43f60cf86b37078ad8cd7e22daf67aa",".pi\u002Fskills\u002Fsearch-skills",23,"https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers","https:\u002F\u002Fdanielvm-git.github.io\u002Fbigpowers\u002F","https:\u002F\u002Fgithub.com\u002Fdanielvm-git","danielvm.net","2026-11-10 01:18:54",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add danielvm-git\u002Fbigpowers --skill search-skills",{"tool":57,"command":58},"bunx","bunx skills add danielvm-git\u002Fbigpowers --skill search-skills",{"tool":60,"command":61},"pnpm","pnpm dlx skills add danielvm-git\u002Fbigpowers --skill search-skills","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fsearch-skills\u002FSKILL.md",true,[],[66,87,94,122,144,164],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":77,"publishedAt":37},"01M71KBG9F8X644MJB16H4V8M7","skill-verify-fail-open-fixture","Negative-path fixture for run-skill-verify.sh — must never PASS.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fskill-verify-fail-open\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[78,79,80,81,82,83,84,85,86],"fixture","open","verify","skill verify fail open fixture","skill verify","path","run","for","never",{"skillNo":88,"name":89,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":37},"01M71KBE3BKEMKNE0C5DGVDWZH","negative-path","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fnegative-path\u002FSKILL.md",[],[93,83],"negative path",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":103,"publishedAt":37},"01M71KBBGF7Y4EB4AMHBZ8CJFC","write-document","Write, organize, and sync high-integrity technical documents using the BMAD methodology. Ensures every document is Bold, Minimal, Actionable, and Durable. Use when creating architectural docs, technical guides, or organizing the specs\u002F directory.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-document\u002FSKILL.md",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000002","文档处理",[104,105,106,107,108,109,110,111,112,113,26,33,114,115,116,117,118,119,120,121],"write","write document","document","documents","actionable","technical","methodology","high","bmad","standard","minimal","bold","sonnet","integrity","organize","sync","directory","guides",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":37},"01M71KB8TM089JJD5AY5KAFSDM","wire-observability","Add structured JSON logging, observability commands, and idempotent setup scripts to a project. Use when a project needs production-readiness instrumentation, when user wants structured logging, or as a production-readiness gate at any phase of development.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwire-observability\u002FSKILL.md",[],[129,130,131,113,132,26,133,134,135,136,116,137,29,138,139,140,141,33,142,143],"observability","wire observability","readiness","commands","development","as","logging","add","instrumentation","structured logging","production-readiness","idempotent","phase","project","scripts",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":37},"01M71KB6CNRANP449DQA3NJZ96","wire-ci","CI pipeline setup with bundled, forge-neutral templates and local validation. Detects the forge from the git remote, generates workflows for supported forges, and skips honestly for the rest. The CI equivalent of wire-observability.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwire-ci\u002FSKILL.md",[],[151,152,153,35,154,155,156,157,158,159,160,113,161,85,129,116,162,163],"wire ci","ci","remote","pipeline","forge","validation","setup","templates","REST","with","ci pipeline setup","git","workflows",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":181,"publishedAt":37},"01M71KB2ZV98P03X88QR8MT9F1","visual-dashboard","Start a browser-based dashboard that visualizes architecture, implementation plans, and project status. Persists artifacts in .bigpowers\u002Fdashboard\u002F. Reads specs\u002Fstate.yaml, release-plan.yaml, epics, and planning-status via HTTP API or opencode panel.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fvisual-dashboard\u002FSKILL.md",[170,173,178],{"categoryNo":171,"categoryName":172,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":174,"categoryName":175,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":179,"categoryName":180,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000033","数据分析师",[182,183,184,185,186,187,188,189,190,116,28,191,192,193,194,195,196,142,197,198],"dashboard","visual","visual dashboard","status","artifacts","http","plans","planning","panel","release","opencode","plan","browser","api","architecture","project status","http api"]