[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M79A1M5JYNVMQTYDFN7P6VGC":3,"skill-same:01M79A1M5JYNVMQTYDFN7P6VGC":47},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M79A1M5JYNVMQTYDFN7P6VGC","befund-arch-health",null,"Reads the full stage_graph.json from befund-stage-map and finds god-modules, circular dependencies, and layering violations, verifying each against actual code. Use when the user asks to \"find architecture deficiencies\", \"find god-objects or god-modules\", \"detect dependency cycles\", \"check for layering violations\", or as part of befund-autopilot's CHECK phase.","Anselmoo\u002Fwerkstoff","Anselmoo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13209783?v=4","01M799YTB3D7RZ4P3B8CSR2X85","Anselm Hahn","01M799YTBRAM6719D9V0NRGB4R",1,"MIT","https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Fplugins\u002Fbefund\u002Fskills\u002Fbefund-arch-health\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: befund-arch-health\ndescription: Reads the full stage_graph.json from befund-stage-map and finds god-modules, circular dependencies, and layering violations, verifying each against actual code. Use when the user asks to \"find architecture deficiencies\", \"find god-objects or god-modules\", \"detect dependency cycles\", \"check for layering violations\", or as part of befund-autopilot's CHECK phase.\n---\n\n# befund-arch-health\n\nJudge the real stage\u002Fwire dependency graph for structural deficiencies.\n\n## Step 0: Settings gate, then the stage_graph prerequisite\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" check-enabled --repo \u003Crepo_root> --skill befund-arch-health\n```\n\nCheck whether `\u003Coutput_dir>\u002Fstage_graph.json` exists. If it does not, this skill degrades to\n`Ready-with-gaps` -- write a short `ARCH_HEALTH.md` and an `arch_health_summary.json` with empty\n`findings` and a note that `befund-stage-map` has not run, then stop:\n\n```json\n{\"findings\": [], \"note\": \"befund-stage-map has not run; no stage_graph.json to analyze\"}\n```\n\nThis is a degrade, not an error: do not fail the skill invocation, just produce a minimal,\nhonest artifact.\n\n## Step 1: Read the full graph\n\nRead `stage_graph.json` in full -- never the sampled viewer-format `stage_map.json`. Fan-in and\nfan-out numbers must come from the complete graph.\n\n## Step 2: Find deficiencies mechanically, then confirm against code\n\nUse the graph helpers for the two structural checks that have precise definitions:\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" find-cycles --stage-graph \u003Cpath to stage_graph.json>\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" find-god-modules --stage-graph \u003Cpath to stage_graph.json>\n```\n\n`find-cycles` only returns strongly-connected components of size >= 2 (rule\n`cycle-definition-in-graph`) -- a pair of stages that merely both import a shared third stage\nis not a cycle, and the Tarjan-based implementation will not report it as one. `find-god-modules`\nflags stages whose fan-in crosses the documented ratio-of-other-stages threshold (see README\n\"Design decisions\" for the exact constant, since the spec leaves the numeric cutoff to this\nplugin's judgment).\n\nBefore dispatching `arch-health-auditor`, resolve the shared symbol-index snapshot the same way\n`befund-lint-audit` does: read `analysis\u002Fbefund\u002Fcurrent.json`; if missing or its\n`source_fingerprint` no longer matches, run\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbuild_symbol_index.py\" --repo-path . --plugin-name befund\n```\n\n(single-flight lock makes concurrent callers safe -- see\n`references\u002Fparallel-safe-research-protocol.md`). For a repo well under ~50 tracked files the\nbuild overhead may not be worth it -- skip this and dispatch without it.\n\nDispatch `arch-health-auditor` to confirm each mechanically-flagged candidate against the\nactual source before it becomes a finding -- a high-fan-in stage that is a legitimate shared\nkernel (e.g. a `types`\u002F`errors` package everything imports) is not a god-module, and the agent's\nown refusal list covers exactly this case. When the snapshot is available, pass its path to the\nagent as additional evidence. Layering violations (a production stage importing a\ntest-only\u002Ffixture\u002Fexample stage) have no purely structural signature in the graph alone --\nconfirm each one by reading the importing stage's actual role.\n\n## Step 3: Validate and write\n\nUnless `skip_verification` is set, every finding must carry `verified: true\u002Ffalse` from Step 2\nbefore reaching here.\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" validate-artifact --kind arch_health_summary --file \u003Cpath-or-inline-json>\n```\n\nThe validator rejects any `type` outside `{god-module, cycle, layering-violation}` and any\n`cycle` finding whose `members` list has fewer than 2 entries. The artifact wraps the per-finding\nshape `arch-health-auditor` already returns (see that agent's \"Output format\" section) in a\ntop-level `findings` array: `{\"findings\": [\u003Cagent findings>]}`.\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" resolve-output-path --repo \u003Crepo_root> --filename ARCH_HEALTH.md\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" resolve-output-path --repo \u003Crepo_root> --filename arch_health_summary.json\n```\n\n## Read-only constraint\n\nNever use Write\u002FEdit outside the resolved output paths. Never refactor, split, or merge a stage\nhere -- that is `befund-transform-brief`'s planning step and `befund-transform-\nexecute`'s (separately gated) execution step.\n","# befund-arch-health\n\nJudge the real stage\u002Fwire dependency graph for structural deficiencies.\n\n## Step 0: Settings gate, then the stage_graph prerequisite\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" check-enabled --repo \u003Crepo_root> --skill befund-arch-health\n```\n\nCheck whether `\u003Coutput_dir>\u002Fstage_graph.json` exists. If it does not, this skill degrades to\n`Ready-with-gaps` -- write a short `ARCH_HEALTH.md` and an `arch_health_summary.json` with empty\n`findings` and a note that `befund-stage-map` has not run, then stop:\n\n```json\n{\"findings\": [], \"note\": \"befund-stage-map has not run; no stage_graph.json to analyze\"}\n```\n\nThis is a degrade, not an error: do not fail the skill invocation, just produce a minimal,\nhonest artifact.\n\n## Step 1: Read the full graph\n\nRead `stage_graph.json` in full -- never the sampled viewer-format `stage_map.json`. Fan-in and\nfan-out numbers must come from the complete graph.\n\n## Step 2: Find deficiencies mechanically, then confirm against code\n\nUse the graph helpers for the two structural checks that have precise definitions:\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" find-cycles --stage-graph \u003Cpath to stage_graph.json>\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" find-god-modules --stage-graph \u003Cpath to stage_graph.json>\n```\n\n`find-cycles` only returns strongly-connected components of size >= 2 (rule\n`cycle-definition-in-graph`) -- a pair of stages that merely both import a shared third stage\nis not a cycle, and the Tarjan-based implementation will not report it as one. `find-god-modules`\nflags stages whose fan-in crosses the documented ratio-of-other-stages threshold (see README\n\"Design decisions\" for the exact constant, since the spec leaves the numeric cutoff to this\nplugin's judgment).\n\nBefore dispatching `arch-health-auditor`, resolve the shared symbol-index snapshot the same way\n`befund-lint-audit` does: read `analysis\u002Fbefund\u002Fcurrent.json`; if missing or its\n`source_fingerprint` no longer matches, run\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbuild_symbol_index.py\" --repo-path . --plugin-name befund\n```\n\n(single-flight lock makes concurrent callers safe -- see\n`references\u002Fparallel-safe-research-protocol.md`). For a repo well under ~50 tracked files the\nbuild overhead may not be worth it -- skip this and dispatch without it.\n\nDispatch `arch-health-auditor` to confirm each mechanically-flagged candidate against the\nactual source before it becomes a finding -- a high-fan-in stage that is a legitimate shared\nkernel (e.g. a `types`\u002F`errors` package everything imports) is not a god-module, and the agent's\nown refusal list covers exactly this case. When the snapshot is available, pass its path to the\nagent as additional evidence. Layering violations (a production stage importing a\ntest-only\u002Ffixture\u002Fexample stage) have no purely structural signature in the graph alone --\nconfirm each one by reading the importing stage's actual role.\n\n## Step 3: Validate and write\n\nUnless `skip_verification` is set, every finding must carry `verified: true\u002Ffalse` from Step 2\nbefore reaching here.\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" validate-artifact --kind arch_health_summary --file \u003Cpath-or-inline-json>\n```\n\nThe validator rejects any `type` outside `{god-module, cycle, layering-violation}` and any\n`cycle` finding whose `members` list has fewer than 2 entries. The artifact wraps the per-finding\nshape `arch-health-auditor` already returns (see that agent's \"Output format\" section) in a\ntop-level `findings` array: `{\"findings\": [\u003Cagent findings>]}`.\n\n```\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" resolve-output-path --repo \u003Crepo_root> --filename ARCH_HEALTH.md\npython3 -B \"${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fbefund_cli.py\" resolve-output-path --repo \u003Crepo_root> --filename arch_health_summary.json\n```\n\n## Read-only constraint\n\nNever use Write\u002FEdit outside the resolved output paths. Never refactor, split, or merge a stage\nhere -- that is `befund-transform-brief`'s planning step and `befund-transform-\nexecute`'s (separately gated) execution step.\n",{"name":5,"description":7},"main","6158c1e4e112c06af2c7ac01b13b2ed7214c0fcf","plugins\u002Fbefund\u002Fskills\u002Fbefund-arch-health",0,"https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff","https:\u002F\u002Fanselmoo.github.io\u002Fwerkstoff\u002F","https:\u002F\u002Fgithub.com\u002FAnselmoo","Likes to Develop","2026-11-02 04:20:59",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add Anselmoo\u002Fwerkstoff --skill befund-arch-health",{"tool":39,"command":40},"bunx","bunx skills add Anselmoo\u002Fwerkstoff --skill befund-arch-health",{"tool":42,"command":43},"pnpm","pnpm dlx skills add Anselmoo\u002Fwerkstoff --skill befund-arch-health","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Fplugins\u002Fbefund\u002Fskills\u002Fbefund-arch-health\u002FSKILL.md",true,[],[48,55,62,67,72,77],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":54,"publishedAt":19},"01M79AJTRBNBX03WWKYJ8ENM45","toy-check","A skill that checks things in the repository and reports what it finds.","https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Ftest\u002Fworkflows\u002Ffixtures\u002Ftoy-plugin\u002Fskills\u002Ftoy-check\u002FSKILL.md",[],[],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":19},"01M79AJS292F3HTDRXWZVRSN5B","demo-check","Reports which generated files changed since the last generation run. Use when the user asks what drifted. Read-only; never edits a file.","https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Ftest\u002Fplugins\u002Ffixtures\u002Fnacharbeit-uncompleted-run\u002Fplugins\u002Fdemo\u002Fskills\u002Fdemo-check\u002FSKILL.md",[],[],{"skillNo":63,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M79AJP4TFQXKT1AAK1WC1JYK","https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Ftest\u002Fplugins\u002Ffixtures\u002Fnacharbeit-stale-lock\u002Fplugins\u002Fdemo\u002Fskills\u002Fdemo-check\u002FSKILL.md",[],[],{"skillNo":68,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M79AJM6Y50WP3G2BR4H0M60Z","https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Ftest\u002Fplugins\u002Ffixtures\u002Fnacharbeit-preflight-mixed\u002Fplugins\u002Fdemo\u002Fskills\u002Fdemo-check\u002FSKILL.md",[],[],{"skillNo":73,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M79AJGR6DMT8KCCK071V78XM","https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Ftest\u002Fplugins\u002Ffixtures\u002Fnacharbeit-hooks-shape\u002Fplugins\u002Fdemo\u002Fskills\u002Fdemo-check\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M79AJBJ4CHC4PZVWKERWF3HF","zirkel-verify-assumptions","Checks exactly ONE named assumption against real evidence in at most 3 steps and reports one outcome: confidence raised (>=90), reading changed, or still unresolved. Use to resolve a single load-bearing uncertainty — typically a blocking entry surfaced by zirkel-clarify-scope: \"verify this one assumption\", \"is it actually true that X\", \"check this before we rely on it\". For multiple uncertainties, invoke once per uncertainty — the step budget is never shared.","https:\u002F\u002Fgithub.com\u002FAnselmoo\u002Fwerkstoff\u002Fblob\u002Fmain\u002Fplugins\u002Fzirkel\u002Fskills\u002Fzirkel-verify-assumptions\u002FSKILL.md",[],[]]