[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71JTMMK7K17YMRFCANYQ2TF":3,"skill-same:01M71JTMMK7K17YMRFCANYQ2TF":66},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M71JTMMK7K17YMRFCANYQ2TF","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.qwen\u002Fskills\u002Fsearch-skills\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"search skills","search","language","index","find","first","research","use","frontmatter","start","at","intent","haiku","which skill","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",".qwen\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":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add danielvm-git\u002Fbigpowers --skill search-skills",{"tool":58,"command":59},"bunx","bunx skills add danielvm-git\u002Fbigpowers --skill search-skills",{"tool":61,"command":62},"pnpm","pnpm dlx skills add danielvm-git\u002Fbigpowers --skill search-skills","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Fsearch-skills\u002FSKILL.md",true,[],[67,88,95,123,145,165],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":78,"publishedAt":38},"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",[73],{"categoryNo":74,"categoryName":75,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[79,80,81,82,83,84,85,86,87],"fixture","open","verify","skill verify fail open fixture","skill verify","path","run","for","never",{"skillNo":89,"name":90,"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":91,"categories":92,"keywords":93,"publishedAt":38},"01M71KBE3BKEMKNE0C5DGVDWZH","negative-path","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fnegative-path\u002FSKILL.md",[],[94,84],"negative path",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":104,"publishedAt":38},"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",[101],{"categoryNo":102,"categoryName":103,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000002","文档处理",[105,106,107,108,109,110,111,112,113,114,26,34,115,116,117,118,119,120,121,122],"write","write document","document","documents","actionable","technical","methodology","high","bmad","standard","minimal","bold","sonnet","integrity","organize","sync","directory","guides",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":38},"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",[],[130,131,132,114,133,26,134,135,136,137,117,138,29,139,140,141,142,34,143,144],"observability","wire observability","readiness","commands","development","as","logging","add","instrumentation","structured logging","production-readiness","idempotent","phase","project","scripts",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":38},"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",[],[152,153,154,36,155,156,157,158,159,160,161,114,162,86,130,117,163,164],"wire ci","ci","remote","pipeline","forge","validation","setup","templates","REST","with","ci pipeline setup","git","workflows",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":182,"publishedAt":38},"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",[171,174,179],{"categoryNo":172,"categoryName":173,"taxonomyType":76,"taxonomyTypeDesc":77},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":175,"categoryName":176,"taxonomyType":177,"taxonomyTypeDesc":178},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":180,"categoryName":181,"taxonomyType":177,"taxonomyTypeDesc":178},"01JBSEEDCAT000000000000033","数据分析师",[183,184,185,186,187,188,189,190,191,117,28,192,193,194,195,196,197,143,198,199],"dashboard","visual","visual dashboard","status","artifacts","http","plans","planning","panel","release","opencode","plan","browser","api","architecture","project status","http api"]