[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71HQ73GV20VZHVC2VGZJ42K":3,"skill-same:01M71HQ73GV20VZHVC2VGZJ42K":67},{"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":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M71HQ73GV20VZHVC2VGZJ42K","validate-fix",null,"Prove a fix works before declaring done — re-run the failing test, run the full suite, typecheck, lint, and harden against recurrence. Use after implementing a bug fix, when user says \"is this fixed?\", or before closing an investigation.","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.codex\u002Fskills\u002Fvalidate-fix\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"validate fix","validate","fix","bug fix","test","lint","use","prove","full","suite","bug","run","typecheck","closing","haiku","done","when","implementing","failing","re","2026-11-10 10:12:30",false,"---\nname: validate-fix\nmodel: haiku\ndescription: \"Prove a fix works before declaring done — re-run the failing test, run the full suite, typecheck, lint, and harden against recurrence. Use after implementing a bug fix, when user says \\\"is this fixed?\\\", or before closing an investigation.\"\n---\n\n# Validate Fix\n> **HARD GATE** — Fix must not regress. Run full test suite and manual UAT before declaring success.\n\n\nProve the fix works. \"I think it works\" is not evidence. Run the suite, show the output, then harden against recurrence.\n\n> **Two-commit red\u002Fgreen policy (e45s08)** — Bug fixes follow the same two-commit discipline as `develop-tdd`: first commit adds\u002Fadjusts the failing test (`test(\u003Cscope>): …`), second commit applies the fix (`fix(\u003Cscope>): …`). Do not squash RED and GREEN before review.\n\n## Checklist\n\n### 1. Re-run the originally failing test\n\n```bash\n# Run the specific test that captured the bug\n\u003Ctest command for the failing test>\n```\n\n- [ ] Previously failing test now passes\n\n### 2. Run the full test suite\n\n```bash\n# Run all tests — no filtering\n\u003Cfull test command from CLAUDE.md>\n```\n\n- [ ] All tests pass (zero regressions)\n\n### 3. Type check\n\n```bash\n\u003Ctypecheck command>\n```\n\n- [ ] No type errors introduced\n\n### 4. Lint\n\n```bash\n\u003Clint command>\n```\n\n- [ ] No lint violations introduced\n\n### 5. Harden against recurrence\n\nFor every bug fixed, add at least one prevention layer:\n\n| Mechanism | When to use |\n|-----------|-------------|\n| Type guard | Input could be the wrong shape |\n| Schema validation (Zod, Pydantic, etc.) | External data crossing a boundary |\n| Invariant assertion | Internal state that must always hold |\n| Lint rule | Pattern that's easy to repeat by mistake |\n| Environment check at startup | Missing config causes silent failure |\n\n- [ ] At least one hardening mechanism added\n- [ ] Hardening mechanism is tested\n\n### 5b. Generalize-fix (HARD GATE — e80s04 \u002F GH #98)\n\nSweep the **defect class** across the codebase after local hardening — see [REFERENCE-generalize-fix.md](REFERENCE-generalize-fix.md).\n\n- [ ] Defect class documented (not just the one-line root cause)\n- [ ] Grep sweep run and `match_count` recorded\n- [ ] `verify-generalize-sweep.sh` passes on the artifact\n\n### 6. Update the bug file and registry.yaml\n\nFind the most recent `specs\u002Fbugs\u002FBUG-*.md` file and append the resolution:\n\n```markdown\n## Resolution\n\n**Fixed:** [date]\n**Root cause confirmed:** [one sentence]\n**Fix applied:** [what was changed]\n**Hardening added:** [type guard \u002F schema \u002F assertion \u002F lint rule]\n**Evidence:** all tests pass (`\u003Cverify command>`)\n**Commit:** `fix(\u003Cscope>): \u003Cdescription>`\n```\n\nAlso update the corresponding row in `specs\u002Fbugs\u002Fregistry.yaml`: set `status` to `fixed`, fill in `files_changed`, `approach`, `risk_level`, `commit_message`, and any other resolution fields.\n\n- [ ] specs\u002Fbugs\u002FBUG-*.md updated with resolution\n- [ ] specs\u002Fbugs\u002Fregistry.yaml row updated with resolution fields\n\n### 7. Behavioral Proof (HARD GATE)\n\nMechanical verification (tests passing) is only half the fix. You must prove **behavioral correctness**.\n\n- [ ] Manually demonstrate the fixed behavior (e.g., via `run_shell_command` or `web_fetch`)\n- [ ] Compare the output\u002Fstate against the \"Expected Behavior\" in the bug file\n- [ ] Show the user evidence of the behavior, not just the test logs\n\n## Rules\n\n- **Loop until behavioral correctness is verified**: if any checklist item fails, or if the behavior is still incorrect despite passing tests, return to step 1 and run all checks again from the top — do not declare done until every item is green and the behavior is proven correct in a single run.\n- **Never use `@ts-ignore`, `as any`, or `\u002F\u002F eslint-disable`** to \"fix\" a bug — these suppress the symptom without fixing the root cause\n- **Never mark the task done if any test is still failing**\n- **The verify command from specs\u002Fbugs\u002FBUG-*.md or the active epic task `verify` field must pass**\n\nSuggest next skill: `audit-code` → `commit-message`.\n\n## Verify\n\n→ verify: `grep -q 'generalize-fix' skills\u002Fvalidate-fix\u002FSKILL.md && test -x scripts\u002Fverify-generalize-sweep.sh && bash scripts\u002Fverify-generalize-sweep.sh --self-test && echo OK`\n\n---\n\n# Generalize-fix (e80s04 \u002F GH #98)\n\nAfter local hardening in `validate-fix`, sweep the **defect class** across the codebase.\n\n## Steps\n\n1. **Classify** — name the pattern (e.g. `unscoped org query`, `fail-open verify`, `hardcoded package manager`).\n2. **Sweep** — grep for sibling instances; record `match_count` and `grep_pattern`.\n3. **Resolve** — patch all matches in this PR **or** file one tracking issue listing every remaining instance.\n4. **Artifact** — write sweep evidence before declaring done:\n\n```bash\ncat > specs\u002Fverifications\u002Fgeneralize-sweep-BUG-YYYY-MM-DD-slug.json \u003C\u003CEOF\n{\n  \"defect_class\": \"fail-open-verify\",\n  \"grep_pattern\": \"\\\\\\\\|\\\\\\\\| echo\",\n  \"match_count\": 0,\n  \"sweep_scope\": \"skills\u002F*\u002FSKILL.md\",\n  \"patched_in_pr\": [],\n  \"tracked_issues\": []\n}\nEOF\nbash scripts\u002Fverify-generalize-sweep.sh specs\u002Fverifications\u002Fgeneralize-sweep-*.json\n```\n\n## Security classes\n\nWhen the defect class is security- or gate-relevant:\n\n- Add a row to `security-review` CWE fixture table (see `skills\u002Fsecurity-review\u002FSKILL.md` § CWE mapping mandate).\n- If security-impact was MEDIUM+: add regression test, false-positive exclusion rule, and threat-model update (HIGH+).\n","# Validate Fix\n> **HARD GATE** — Fix must not regress. Run full test suite and manual UAT before declaring success.\n\n\nProve the fix works. \"I think it works\" is not evidence. Run the suite, show the output, then harden against recurrence.\n\n> **Two-commit red\u002Fgreen policy (e45s08)** — Bug fixes follow the same two-commit discipline as `develop-tdd`: first commit adds\u002Fadjusts the failing test (`test(\u003Cscope>): …`), second commit applies the fix (`fix(\u003Cscope>): …`). Do not squash RED and GREEN before review.\n\n## Checklist\n\n### 1. Re-run the originally failing test\n\n```bash\n# Run the specific test that captured the bug\n\u003Ctest command for the failing test>\n```\n\n- [ ] Previously failing test now passes\n\n### 2. Run the full test suite\n\n```bash\n# Run all tests — no filtering\n\u003Cfull test command from CLAUDE.md>\n```\n\n- [ ] All tests pass (zero regressions)\n\n### 3. Type check\n\n```bash\n\u003Ctypecheck command>\n```\n\n- [ ] No type errors introduced\n\n### 4. Lint\n\n```bash\n\u003Clint command>\n```\n\n- [ ] No lint violations introduced\n\n### 5. Harden against recurrence\n\nFor every bug fixed, add at least one prevention layer:\n\n| Mechanism | When to use |\n|-----------|-------------|\n| Type guard | Input could be the wrong shape |\n| Schema validation (Zod, Pydantic, etc.) | External data crossing a boundary |\n| Invariant assertion | Internal state that must always hold |\n| Lint rule | Pattern that's easy to repeat by mistake |\n| Environment check at startup | Missing config causes silent failure |\n\n- [ ] At least one hardening mechanism added\n- [ ] Hardening mechanism is tested\n\n### 5b. Generalize-fix (HARD GATE — e80s04 \u002F GH #98)\n\nSweep the **defect class** across the codebase after local hardening — see [REFERENCE-generalize-fix.md](REFERENCE-generalize-fix.md).\n\n- [ ] Defect class documented (not just the one-line root cause)\n- [ ] Grep sweep run and `match_count` recorded\n- [ ] `verify-generalize-sweep.sh` passes on the artifact\n\n### 6. Update the bug file and registry.yaml\n\nFind the most recent `specs\u002Fbugs\u002FBUG-*.md` file and append the resolution:\n\n```markdown\n## Resolution\n\n**Fixed:** [date]\n**Root cause confirmed:** [one sentence]\n**Fix applied:** [what was changed]\n**Hardening added:** [type guard \u002F schema \u002F assertion \u002F lint rule]\n**Evidence:** all tests pass (`\u003Cverify command>`)\n**Commit:** `fix(\u003Cscope>): \u003Cdescription>`\n```\n\nAlso update the corresponding row in `specs\u002Fbugs\u002Fregistry.yaml`: set `status` to `fixed`, fill in `files_changed`, `approach`, `risk_level`, `commit_message`, and any other resolution fields.\n\n- [ ] specs\u002Fbugs\u002FBUG-*.md updated with resolution\n- [ ] specs\u002Fbugs\u002Fregistry.yaml row updated with resolution fields\n\n### 7. Behavioral Proof (HARD GATE)\n\nMechanical verification (tests passing) is only half the fix. You must prove **behavioral correctness**.\n\n- [ ] Manually demonstrate the fixed behavior (e.g., via `run_shell_command` or `web_fetch`)\n- [ ] Compare the output\u002Fstate against the \"Expected Behavior\" in the bug file\n- [ ] Show the user evidence of the behavior, not just the test logs\n\n## Rules\n\n- **Loop until behavioral correctness is verified**: if any checklist item fails, or if the behavior is still incorrect despite passing tests, return to step 1 and run all checks again from the top — do not declare done until every item is green and the behavior is proven correct in a single run.\n- **Never use `@ts-ignore`, `as any`, or `\u002F\u002F eslint-disable`** to \"fix\" a bug — these suppress the symptom without fixing the root cause\n- **Never mark the task done if any test is still failing**\n- **The verify command from specs\u002Fbugs\u002FBUG-*.md or the active epic task `verify` field must pass**\n\nSuggest next skill: `audit-code` → `commit-message`.\n\n## Verify\n\n→ verify: `grep -q 'generalize-fix' skills\u002Fvalidate-fix\u002FSKILL.md && test -x scripts\u002Fverify-generalize-sweep.sh && bash scripts\u002Fverify-generalize-sweep.sh --self-test && echo OK`\n\n---\n\n# Generalize-fix (e80s04 \u002F GH #98)\n\nAfter local hardening in `validate-fix`, sweep the **defect class** across the codebase.\n\n## Steps\n\n1. **Classify** — name the pattern (e.g. `unscoped org query`, `fail-open verify`, `hardcoded package manager`).\n2. **Sweep** — grep for sibling instances; record `match_count` and `grep_pattern`.\n3. **Resolve** — patch all matches in this PR **or** file one tracking issue listing every remaining instance.\n4. **Artifact** — write sweep evidence before declaring done:\n\n```bash\ncat > specs\u002Fverifications\u002Fgeneralize-sweep-BUG-YYYY-MM-DD-slug.json \u003C\u003CEOF\n{\n  \"defect_class\": \"fail-open-verify\",\n  \"grep_pattern\": \"\\\\\\\\|\\\\\\\\| echo\",\n  \"match_count\": 0,\n  \"sweep_scope\": \"skills\u002F*\u002FSKILL.md\",\n  \"patched_in_pr\": [],\n  \"tracked_issues\": []\n}\nEOF\nbash scripts\u002Fverify-generalize-sweep.sh specs\u002Fverifications\u002Fgeneralize-sweep-*.json\n```\n\n## Security classes\n\nWhen the defect class is security- or gate-relevant:\n\n- Add a row to `security-review` CWE fixture table (see `skills\u002Fsecurity-review\u002FSKILL.md` § CWE mapping mandate).\n- If security-impact was MEDIUM+: add regression test, false-positive exclusion rule, and threat-model update (HIGH+).\n",{"name":5,"model":33,"description":7},"main","72f5e4c8b43f60cf86b37078ad8cd7e22daf67aa",".codex\u002Fskills\u002Fvalidate-fix",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":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add danielvm-git\u002Fbigpowers --skill validate-fix",{"tool":59,"command":60},"bunx","bunx skills add danielvm-git\u002Fbigpowers --skill validate-fix",{"tool":62,"command":63},"pnpm","pnpm dlx skills add danielvm-git\u002Fbigpowers --skill validate-fix","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fvalidate-fix\u002FSKILL.md",true,[],[68,88,95,123,146,167],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":79,"publishedAt":39},"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",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[80,81,82,83,84,85,30,86,87],"fixture","open","verify","skill verify fail open fixture","skill verify","path","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":39},"01M71KBE3BKEMKNE0C5DGVDWZH","negative-path","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fnegative-path\u002FSKILL.md",[],[94,85],"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":39},"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":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000002","文档处理",[105,106,107,108,109,110,111,112,113,114,25,35,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":39},"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,25,134,135,136,137,117,138,139,140,141,142,143,35,144,145],"observability","wire observability","readiness","commands","development","as","logging","add","instrumentation","at","structured logging","production-readiness","idempotent","phase","project","scripts",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":39},"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",[],[153,154,155,156,157,158,159,160,161,162,163,114,164,86,130,117,165,166],"wire ci","ci","remote","local","pipeline","forge","validation","setup","templates","REST","with","ci pipeline setup","git","workflows",{"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":184,"publishedAt":39},"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",[173,176,181],{"categoryNo":174,"categoryName":175,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":177,"categoryName":178,"taxonomyType":179,"taxonomyTypeDesc":180},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":182,"categoryName":183,"taxonomyType":179,"taxonomyTypeDesc":180},"01JBSEEDCAT000000000000033","数据分析师",[185,186,187,188,189,190,191,192,193,117,194,195,196,197,198,199,200,144,201,202],"dashboard","visual","visual dashboard","status","artifacts","http","plans","planning","panel","start","release","opencode","plan","browser","api","architecture","project status","http api"]