[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DBCTX045DZNZ7QMGJYRYRV":3,"skill-same:01M6DBCTX045DZNZ7QMGJYRYRV":117},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6DBCTX045DZNZ7QMGJYRYRV","forge-discipline",null,"Use when turning a named behavioral pattern (gem, fresh arXiv finding, matured instinct) into an INSTALLED, self-tested Claude Code hook in one pass. A BEHAVIOR forge, not a tool forge - it forges hooks\u002Ftripwires the harness runs deterministically, not MCP tools. Scaffolds the hook, runs a chaos self-test proving it fires and fails open on garbage, then stages it with the one-line install.","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"forge discipline","forge","discipline","use","gem","fresh","chaos","pattern","self","arxiv","hooks","MCP","install","behavior","tool","open","mcp tools","harness","code","test","2026-11-10 10:12:30",false,"---\nname: forge-discipline\ndescription: Use when turning a named behavioral pattern (gem, fresh arXiv finding, matured instinct) into an INSTALLED, self-tested Claude Code hook in one pass. A BEHAVIOR forge, not a tool forge - it forges hooks\u002Ftripwires the harness runs deterministically, not MCP tools. Scaffolds the hook, runs a chaos self-test proving it fires and fails open on garbage, then stages it with the one-line install.\n---\n\n# Discipline-Forge\n\nThe durable moat is not which cross-domain analogy you borrow today (those deprecate\nthe moment the field mines the same paper). The moat is **owning the pipeline that\nturns any named behavioral pattern into an installed, self-tested discipline in one\npass.** This generalizes the instinct→skill evolution one step further: instead of\nmaturing an observed regularity into an *advisory* skill, it forges an *enforced*\nhook that the harness runs deterministically — and refuses to call it \"installed\"\nuntil a fault-injection self-test proves it actually fires.\n\nThis forges **behaviors** (hooks\u002Ftripwires). A tool-forge forges **tools** (things\nthe model chooses to call). Different artifact, different home: forged behaviors land\nin `~\u002F.claude\u002Fhooks\u002F...` and fold into the dispatcher or `settings.json`.\n\n## SAFETY: review before install (read this first)\n\n`forge.py` **never edits your live `settings.json` or `_dispatch\u002Fmanifest.json`.** A\nforged discipline is staged in a review queue with its passing self-test and a single\nready-to-apply line. **You** read it and apply that line by hand. This mirrors the\nauto-skill-authoring discipline (the forge proposes; the human installs) and means a\nforged hook can never silently start blocking your tools or injecting context.\n\nEvery forged hook also fails open (any error → exit 0; a gate never blocks on error)\nand ships a kill-switch: an env var `FORGE_\u003CNAME>_OFF=1` and a `.disabled` file.\n\n## The pattern spec\n\nA discipline is described by a small spec (CLI flags or a `--spec file.json`):\n\n| field | meaning |\n|-------|---------|\n| `name` | hyphen-case identity (becomes the hook dir + manifest name) |\n| `event` | `sessionstart` \\| `stop` \\| `pretooluse` \\| `posttooluse` \\| `userpromptsubmit` |\n| `trigger_kind` | how the predicate reads its source: `tool` \\| `command` \\| `prompt` \\| `response` \\| `field` \\| `always` |\n| `trigger_regex` | the pattern the source must match to fire (not needed for `always`) |\n| `fire_example` \u002F `silent_example` | a value that SHOULD \u002F must NOT match — used to build the chaos test (validated at forge time) |\n| `action` | the inject message (may contain `{count}`) or the block reason for a gate |\n| `gates` | if set, forge a blocking tripwire (exit-2 path) instead of an inject |\n| `needs_state` | scaffold a state\u002Fledger schema + session-scoped dedup |\n| `has_procedure` | also emit a companion SKILL stub |\n\nThe forge **validates the exemplars against the regex at generation time**: if the\nfire example does not match (or the silent example does), it refuses to generate —\nbecause the chaos test would otherwise be a lie.\n\n## The one-pass pipeline (what `forge.py` does)\n\n1. **Scaffold** exactly the artifacts the pattern needs:\n   - `hook.py` — conforms to the dispatcher check-interface: `main(argv)` reads the\n     payload on stdin and prints one `hookSpecificOutput` JSON (inject), or writes a\n     reason to stderr and exits 2 (gate).\n   - `tripwire.py` — the pure HALT predicate `should_halt(payload) -> (bool, reason)`\n     (only when `gates`); kept separate so the block *decision* is unit-testable.\n   - `state_schema.json` — the ledger record schema (only when `needs_state`).\n   - `SKILL.md` — a companion procedure stub (only when `has_procedure`).\n   - Everything fails open (try\u002Fexcept → exit 0).\n2. **Unit test** the predicate (`build_message` \u002F `should_halt`) directly and run it.\n3. **Chaos \u002F GameDay self-test** (`chaos_\u003Cname>.py`) — fault-injects against the REAL\n   hook process to prove three properties; the discipline is **not installed until\n   all three hold**:\n   - **fires** on a matching payload,\n   - stays **silent** (inject) \u002F **allows** (gate) on a non-matching payload,\n   - **fails open** on garbage stdin and honours the opt-out.\n\n   The GameDay lesson: an untested safety net fails exactly when you need it. A gate\n   that crashed-closed would block every command, so \"fail open on garbage → exit 0,\n   never 2\" is an explicit, proven property.\n4. **Stage** in the review queue `~\u002F.claude\u002Fforge-queue\u002F\u003Cname>\u002F` with the artifacts,\n   the passing self-test (`SELFTEST-RESULT.txt`), and `INSTALL.md` containing the one\n   line to apply. Nothing is auto-wired.\n\n## How forged hooks compose with the dispatcher \u002F manifest\n\nThe forge picks the install target from the event and whether it gates:\n\n- **Inject hook on `sessionstart` \u002F `stop` \u002F `pre` \u002F `posttooluse`** → folds into\n  `~\u002F.claude\u002Fhooks\u002F_dispatch\u002Fmanifest.json` as **one line** under\n  `events.\u003CEvent>.checks`. The dispatcher already runs that file in-process (one spawn\n  per event), so this is the cheap path. The manifest's own description literally says\n  \"adding a future check = one manifest line (seeds the later Discipline-Forge)\" — this\n  is that forge.\n- **Any gate (exit-2)** → a standalone `settings.json` entry. The dispatcher only ever\n  exits 0 (it is inject-only), so a blocking hook cannot live inside it.\n- **`userpromptsubmit` (any)** → a standalone `settings.json` entry. The dispatcher\n  does not handle that event.\n\n`INSTALL.md` always prints the exact target and the exact line\u002Fobject to add.\n\n## Where this sits in the instinct → skill path\n\nThe continuous-learning \u002F homunculus path observes sessions, writes confidence-scored\n**instincts** (`~\u002F.claude\u002Fhomunculus\u002Finstincts\u002F`), and evolves the strong ones into\n`~\u002F.claude\u002Fhomunculus\u002Fevolved\u002F{skills,commands,agents}` — all **advisory** (the model\nmust choose to read\u002Frun them). Discipline-Forge adds a new evolution target at the end\nof that path: a matured instinct (or a gem, or an arXiv pattern) → an **enforced,\nself-tested hook**. Advisory knowledge becomes deterministic enforcement, with proof.\n\n## Usage\n\n```bash\ncd skills\u002Fforge-discipline\n\n# Inject discipline (Stop): surface uncaptured TODO\u002FFIXME markers. Folds as 1 manifest line.\npython forge.py --name todo-surfacer --event stop --trigger-kind response \\\n  --trigger-regex '\\b(TODO|FIXME)\\b|- \\[ \\]' \\\n  --fire-example 'TODO wire API; - [ ] ship' --silent-example 'all shipped' \\\n  --action 'You left {count} open TODO\u002FFIXME marker(s) - capture them before they are lost.'\n\n# Gate discipline (PreToolUse): block git push --force. Installs as a settings.json entry.\npython forge.py --name no-force-push --event pretooluse --trigger-kind command --gates \\\n  --trigger-regex 'git\\s+push\\b[^\\n]*(--force\\b|-f\\b)' \\\n  --fire-example 'git push --force origin main' --silent-example 'git push origin main' \\\n  --action 'Tripwire: refusing git push --force (AGENTS.md s9 needs explicit approval). Override: FORGE_NO_FORCE_PUSH_OFF=1.'\n\n# Inspect without staging:  add --dry-run\n# Full result as JSON:      add --json\n```\n\nThen open `~\u002F.claude\u002Fforge-queue\u002F\u003Cname>\u002FINSTALL.md`, review the artifacts and the\npassing self-test, and apply the one line if you approve.\n\n## Trigger kinds\n\n| kind | source read | typical event |\n|------|-------------|---------------|\n| `tool` | `payload.tool_name` | pre\u002Fposttooluse |\n| `command` | `payload.tool_input.command` (Bash) | pre\u002Fposttooluse |\n| `prompt` | `payload.prompt` | userpromptsubmit |\n| `response` | final assistant text from `transcript_path` | stop |\n| `field` | any dotted payload path (`--trigger-field`) | any |\n| `always` | no predicate — always fires (inject only) | sessionstart\u002Fstop |\n\n## Files\n\n- `forge.py` — the scaffolder + self-test orchestrator (pure stdlib).\n- `templates\u002F` — the hook \u002F tripwire \u002F test \u002F chaos \u002F skill-stub \u002F install templates.\n- `selftest_forge.py` — regression harness: forges every branch combination in\n  `--dry-run` and asserts each self-tests cleanly and resolves to the right target.\n\n## Quality bar\n\nA discipline that \"looks wired but is dead\" is the failure this skill exists to\nprevent. The chaos self-test is the gate: no PASS, no queue entry, no install line.\nRun `python selftest_forge.py` after any change to the engine or templates.\n","# Discipline-Forge\n\nThe durable moat is not which cross-domain analogy you borrow today (those deprecate\nthe moment the field mines the same paper). The moat is **owning the pipeline that\nturns any named behavioral pattern into an installed, self-tested discipline in one\npass.** This generalizes the instinct→skill evolution one step further: instead of\nmaturing an observed regularity into an *advisory* skill, it forges an *enforced*\nhook that the harness runs deterministically — and refuses to call it \"installed\"\nuntil a fault-injection self-test proves it actually fires.\n\nThis forges **behaviors** (hooks\u002Ftripwires). A tool-forge forges **tools** (things\nthe model chooses to call). Different artifact, different home: forged behaviors land\nin `~\u002F.claude\u002Fhooks\u002F...` and fold into the dispatcher or `settings.json`.\n\n## SAFETY: review before install (read this first)\n\n`forge.py` **never edits your live `settings.json` or `_dispatch\u002Fmanifest.json`.** A\nforged discipline is staged in a review queue with its passing self-test and a single\nready-to-apply line. **You** read it and apply that line by hand. This mirrors the\nauto-skill-authoring discipline (the forge proposes; the human installs) and means a\nforged hook can never silently start blocking your tools or injecting context.\n\nEvery forged hook also fails open (any error → exit 0; a gate never blocks on error)\nand ships a kill-switch: an env var `FORGE_\u003CNAME>_OFF=1` and a `.disabled` file.\n\n## The pattern spec\n\nA discipline is described by a small spec (CLI flags or a `--spec file.json`):\n\n| field | meaning |\n|-------|---------|\n| `name` | hyphen-case identity (becomes the hook dir + manifest name) |\n| `event` | `sessionstart` \\| `stop` \\| `pretooluse` \\| `posttooluse` \\| `userpromptsubmit` |\n| `trigger_kind` | how the predicate reads its source: `tool` \\| `command` \\| `prompt` \\| `response` \\| `field` \\| `always` |\n| `trigger_regex` | the pattern the source must match to fire (not needed for `always`) |\n| `fire_example` \u002F `silent_example` | a value that SHOULD \u002F must NOT match — used to build the chaos test (validated at forge time) |\n| `action` | the inject message (may contain `{count}`) or the block reason for a gate |\n| `gates` | if set, forge a blocking tripwire (exit-2 path) instead of an inject |\n| `needs_state` | scaffold a state\u002Fledger schema + session-scoped dedup |\n| `has_procedure` | also emit a companion SKILL stub |\n\nThe forge **validates the exemplars against the regex at generation time**: if the\nfire example does not match (or the silent example does), it refuses to generate —\nbecause the chaos test would otherwise be a lie.\n\n## The one-pass pipeline (what `forge.py` does)\n\n1. **Scaffold** exactly the artifacts the pattern needs:\n   - `hook.py` — conforms to the dispatcher check-interface: `main(argv)` reads the\n     payload on stdin and prints one `hookSpecificOutput` JSON (inject), or writes a\n     reason to stderr and exits 2 (gate).\n   - `tripwire.py` — the pure HALT predicate `should_halt(payload) -> (bool, reason)`\n     (only when `gates`); kept separate so the block *decision* is unit-testable.\n   - `state_schema.json` — the ledger record schema (only when `needs_state`).\n   - `SKILL.md` — a companion procedure stub (only when `has_procedure`).\n   - Everything fails open (try\u002Fexcept → exit 0).\n2. **Unit test** the predicate (`build_message` \u002F `should_halt`) directly and run it.\n3. **Chaos \u002F GameDay self-test** (`chaos_\u003Cname>.py`) — fault-injects against the REAL\n   hook process to prove three properties; the discipline is **not installed until\n   all three hold**:\n   - **fires** on a matching payload,\n   - stays **silent** (inject) \u002F **allows** (gate) on a non-matching payload,\n   - **fails open** on garbage stdin and honours the opt-out.\n\n   The GameDay lesson: an untested safety net fails exactly when you need it. A gate\n   that crashed-closed would block every command, so \"fail open on garbage → exit 0,\n   never 2\" is an explicit, proven property.\n4. **Stage** in the review queue `~\u002F.claude\u002Fforge-queue\u002F\u003Cname>\u002F` with the artifacts,\n   the passing self-test (`SELFTEST-RESULT.txt`), and `INSTALL.md` containing the one\n   line to apply. Nothing is auto-wired.\n\n## How forged hooks compose with the dispatcher \u002F manifest\n\nThe forge picks the install target from the event and whether it gates:\n\n- **Inject hook on `sessionstart` \u002F `stop` \u002F `pre` \u002F `posttooluse`** → folds into\n  `~\u002F.claude\u002Fhooks\u002F_dispatch\u002Fmanifest.json` as **one line** under\n  `events.\u003CEvent>.checks`. The dispatcher already runs that file in-process (one spawn\n  per event), so this is the cheap path. The manifest's own description literally says\n  \"adding a future check = one manifest line (seeds the later Discipline-Forge)\" — this\n  is that forge.\n- **Any gate (exit-2)** → a standalone `settings.json` entry. The dispatcher only ever\n  exits 0 (it is inject-only), so a blocking hook cannot live inside it.\n- **`userpromptsubmit` (any)** → a standalone `settings.json` entry. The dispatcher\n  does not handle that event.\n\n`INSTALL.md` always prints the exact target and the exact line\u002Fobject to add.\n\n## Where this sits in the instinct → skill path\n\nThe continuous-learning \u002F homunculus path observes sessions, writes confidence-scored\n**instincts** (`~\u002F.claude\u002Fhomunculus\u002Finstincts\u002F`), and evolves the strong ones into\n`~\u002F.claude\u002Fhomunculus\u002Fevolved\u002F{skills,commands,agents}` — all **advisory** (the model\nmust choose to read\u002Frun them). Discipline-Forge adds a new evolution target at the end\nof that path: a matured instinct (or a gem, or an arXiv pattern) → an **enforced,\nself-tested hook**. Advisory knowledge becomes deterministic enforcement, with proof.\n\n## Usage\n\n```bash\ncd skills\u002Fforge-discipline\n\n# Inject discipline (Stop): surface uncaptured TODO\u002FFIXME markers. Folds as 1 manifest line.\npython forge.py --name todo-surfacer --event stop --trigger-kind response \\\n  --trigger-regex '\\b(TODO|FIXME)\\b|- \\[ \\]' \\\n  --fire-example 'TODO wire API; - [ ] ship' --silent-example 'all shipped' \\\n  --action 'You left {count} open TODO\u002FFIXME marker(s) - capture them before they are lost.'\n\n# Gate discipline (PreToolUse): block git push --force. Installs as a settings.json entry.\npython forge.py --name no-force-push --event pretooluse --trigger-kind command --gates \\\n  --trigger-regex 'git\\s+push\\b[^\\n]*(--force\\b|-f\\b)' \\\n  --fire-example 'git push --force origin main' --silent-example 'git push origin main' \\\n  --action 'Tripwire: refusing git push --force (AGENTS.md s9 needs explicit approval). Override: FORGE_NO_FORCE_PUSH_OFF=1.'\n\n# Inspect without staging:  add --dry-run\n# Full result as JSON:      add --json\n```\n\nThen open `~\u002F.claude\u002Fforge-queue\u002F\u003Cname>\u002FINSTALL.md`, review the artifacts and the\npassing self-test, and apply the one line if you approve.\n\n## Trigger kinds\n\n| kind | source read | typical event |\n|------|-------------|---------------|\n| `tool` | `payload.tool_name` | pre\u002Fposttooluse |\n| `command` | `payload.tool_input.command` (Bash) | pre\u002Fposttooluse |\n| `prompt` | `payload.prompt` | userpromptsubmit |\n| `response` | final assistant text from `transcript_path` | stop |\n| `field` | any dotted payload path (`--trigger-field`) | any |\n| `always` | no predicate — always fires (inject only) | sessionstart\u002Fstop |\n\n## Files\n\n- `forge.py` — the scaffolder + self-test orchestrator (pure stdlib).\n- `templates\u002F` — the hook \u002F tripwire \u002F test \u002F chaos \u002F skill-stub \u002F install templates.\n- `selftest_forge.py` — regression harness: forges every branch combination in\n  `--dry-run` and asserts each self-tests cleanly and resolves to the right target.\n\n## Quality bar\n\nA discipline that \"looks wired but is dead\" is the failure this skill exists to\nprevent. The chaos self-test is the gate: no PASS, no queue entry, no install line.\nRun `python selftest_forge.py` after any change to the engine or templates.\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fskills\u002Fforge-discipline","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill forge-discipline",{"tool":61,"command":62},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill forge-discipline",{"tool":64,"command":65},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill forge-discipline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002FSKILL.md",true,[69,75,79,85,89,93,97,101,105,109,113],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"forge.py","SCRIPT","脚本",25379,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Fforge.py",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"selftest_forge.py",5179,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Fselftest_forge.py",{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"templates\u002Fchaos_gate.py.tmpl","OTHER","其他",4682,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Fchaos_gate.py.tmpl",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"templates\u002Fchaos_inject.py.tmpl",4736,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Fchaos_inject.py.tmpl",{"path":90,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":91,"sourceHtmlUrl":92},"templates\u002Fhook_gate.py.tmpl",2161,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Fhook_gate.py.tmpl",{"path":94,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":95,"sourceHtmlUrl":96},"templates\u002Fhook_inject.py.tmpl",5559,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Fhook_inject.py.tmpl",{"path":98,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":99,"sourceHtmlUrl":100},"templates\u002FINSTALL.md.tmpl",1292,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002FINSTALL.md.tmpl",{"path":102,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":103,"sourceHtmlUrl":104},"templates\u002Fskill_stub.md.tmpl",1137,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Fskill_stub.md.tmpl",{"path":106,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":107,"sourceHtmlUrl":108},"templates\u002Ftest_gate.py.tmpl",1926,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Ftest_gate.py.tmpl",{"path":110,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":111,"sourceHtmlUrl":112},"templates\u002Ftest_inject.py.tmpl",3024,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Ftest_inject.py.tmpl",{"path":114,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":115,"sourceHtmlUrl":116},"templates\u002Ftripwire.py.tmpl",1272,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fforge-discipline\u002Ftemplates\u002Ftripwire.py.tmpl",[118,139,163,190,204,220],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":44},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[125,126,127,128,129,130,131,132,133,27,134,135,136,137,138],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":146,"publishedAt":44},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[145],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[147,148,149,150,151,152,38,153,39,154,155,156,157,158,27,159,160,161,162,35],"openmm md","how","decision","pick","linux","analyze","stack","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":175,"publishedAt":44},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[169,172],{"categoryNo":170,"categoryName":171,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[176,177,178,179,180,181,182,183,184,185,148,186,187,188,189],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":196,"publishedAt":44},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[192,197,198,199,200,201,202,203],"setup","report","project","installation","project setup","issues","state",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":211,"publishedAt":44},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[210],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[206,212,130,213,214,215,27,216,217,218,219],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":221,"name":197,"nameZh":6,"description":222,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":225,"publishedAt":44},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[197,199,161,226,201,227],"files","interactive"]