wolverine-kit 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wolverine_kit-0.0.1/.cache/.gitignore +1 -0
- wolverine_kit-0.0.1/.cache/10116994300390305209 +109 -0
- wolverine_kit-0.0.1/.cache/1050322862358742030 +173 -0
- wolverine_kit-0.0.1/.cache/1142202832493993035 +4 -0
- wolverine_kit-0.0.1/.cache/12856035882491970549 +4 -0
- wolverine_kit-0.0.1/.cache/14674158629415042416 +125 -0
- wolverine_kit-0.0.1/.cache/14766282865140729079 +4 -0
- wolverine_kit-0.0.1/.cache/3476900567878811119 +4 -0
- wolverine_kit-0.0.1/.cache/3541202890535126406 +77 -0
- wolverine_kit-0.0.1/.cache/5690733301936336072 +189 -0
- wolverine_kit-0.0.1/.cache/7333751427677808925 +4 -0
- wolverine_kit-0.0.1/.cache/7542771005358611400 +273 -0
- wolverine_kit-0.0.1/.cache/8988511524531707735 +4 -0
- wolverine_kit-0.0.1/.cache/9304082833908331572 +4 -0
- wolverine_kit-0.0.1/.cache/9507477024441131201 +110 -0
- wolverine_kit-0.0.1/.claude/agents/wk-architect-reviewer.md +79 -0
- wolverine_kit-0.0.1/.claude/agents/wk-change-propagator.md +54 -0
- wolverine_kit-0.0.1/.claude/agents/wk-decision-author.md +59 -0
- wolverine_kit-0.0.1/.claude/agents/wk-dependency-auditor.md +78 -0
- wolverine_kit-0.0.1/.claude/agents/wk-drift-detector.md +60 -0
- wolverine_kit-0.0.1/.claude/agents/wk-glossary-steward.md +73 -0
- wolverine_kit-0.0.1/.claude/agents/wk-guardian.md +41 -0
- wolverine_kit-0.0.1/.claude/agents/wk-phase-tracker.md +51 -0
- wolverine_kit-0.0.1/.claude/agents/wk-spec-synthesizer.md +58 -0
- wolverine_kit-0.0.1/.claude/agents/wk-test-author.md +59 -0
- wolverine_kit-0.0.1/.claude/commands/wk-check.md +22 -0
- wolverine_kit-0.0.1/.claude/commands/wk-decision.md +25 -0
- wolverine_kit-0.0.1/.claude/commands/wk-deps.md +10 -0
- wolverine_kit-0.0.1/.claude/commands/wk-drift.md +12 -0
- wolverine_kit-0.0.1/.claude/commands/wk-help.md +18 -0
- wolverine_kit-0.0.1/.claude/commands/wk-impl-brief.md +18 -0
- wolverine_kit-0.0.1/.claude/commands/wk-impl.md +36 -0
- wolverine_kit-0.0.1/.claude/commands/wk-propagate.md +18 -0
- wolverine_kit-0.0.1/.claude/commands/wk-review-spec.md +33 -0
- wolverine_kit-0.0.1/.claude/commands/wk-status.md +10 -0
- wolverine_kit-0.0.1/.claude/commands/wk-test.md +14 -0
- wolverine_kit-0.0.1/.gitignore +9 -0
- wolverine_kit-0.0.1/CLAUDE.md +82 -0
- wolverine_kit-0.0.1/LICENSE +21 -0
- wolverine_kit-0.0.1/PKG-INFO +15 -0
- wolverine_kit-0.0.1/README.md +125 -0
- wolverine_kit-0.0.1/docs/agents.md +55 -0
- wolverine_kit-0.0.1/docs/brief-format.md +62 -0
- wolverine_kit-0.0.1/docs/commands.md +102 -0
- wolverine_kit-0.0.1/docs/index.md +27 -0
- wolverine_kit-0.0.1/docs/lifecycle.md +77 -0
- wolverine_kit-0.0.1/docs/methodology.md +49 -0
- wolverine_kit-0.0.1/docs/packs.md +36 -0
- wolverine_kit-0.0.1/docs/quick-start.md +61 -0
- wolverine_kit-0.0.1/docs/spec-files.md +51 -0
- wolverine_kit-0.0.1/framework-extraction-plan.md +578 -0
- wolverine_kit-0.0.1/pyproject.toml +35 -0
- wolverine_kit-0.0.1/scripts/bootstrap.sh +19 -0
- wolverine_kit-0.0.1/scripts/docs.sh +13 -0
- wolverine_kit-0.0.1/scripts/format.sh +5 -0
- wolverine_kit-0.0.1/scripts/lint.sh +5 -0
- wolverine_kit-0.0.1/site/404.html +300 -0
- wolverine_kit-0.0.1/site/agents/index.html +552 -0
- wolverine_kit-0.0.1/site/assets/images/favicon.png +0 -0
- wolverine_kit-0.0.1/site/assets/javascripts/LICENSE +29 -0
- wolverine_kit-0.0.1/site/assets/javascripts/bundle.6e5f0216.min.js +3 -0
- wolverine_kit-0.0.1/site/assets/javascripts/workers/search.e2d2d235.min.js +1 -0
- wolverine_kit-0.0.1/site/assets/stylesheets/classic/main.a2001754.min.css +1 -0
- wolverine_kit-0.0.1/site/assets/stylesheets/classic/palette.7dc9a0ad.min.css +1 -0
- wolverine_kit-0.0.1/site/assets/stylesheets/modern/main.fba56155.min.css +1 -0
- wolverine_kit-0.0.1/site/assets/stylesheets/modern/palette.dfe2e883.min.css +1 -0
- wolverine_kit-0.0.1/site/commands/index.html +492 -0
- wolverine_kit-0.0.1/site/index.html +386 -0
- wolverine_kit-0.0.1/site/methodology/index.html +469 -0
- wolverine_kit-0.0.1/site/objects.inv +0 -0
- wolverine_kit-0.0.1/site/packs/index.html +433 -0
- wolverine_kit-0.0.1/site/quick-start/index.html +441 -0
- wolverine_kit-0.0.1/site/search.json +1 -0
- wolverine_kit-0.0.1/site/sitemap.xml +3 -0
- wolverine_kit-0.0.1/site/spec-files/index.html +463 -0
- wolverine_kit-0.0.1/spec/ARCHITECTURE.md +114 -0
- wolverine_kit-0.0.1/spec/DECISIONS.md +120 -0
- wolverine_kit-0.0.1/spec/DX.md +144 -0
- wolverine_kit-0.0.1/spec/GLOSSARY.md +31 -0
- wolverine_kit-0.0.1/spec/INVARIANTS.md +150 -0
- wolverine_kit-0.0.1/spec/METHODOLOGY.md +93 -0
- wolverine_kit-0.0.1/spec/NFR.md +52 -0
- wolverine_kit-0.0.1/spec/OVERRIDES.md +65 -0
- wolverine_kit-0.0.1/spec/ROADMAP.md +120 -0
- wolverine_kit-0.0.1/spec/SCENARIOS.md +221 -0
- wolverine_kit-0.0.1/spec/VISION.md +60 -0
- wolverine_kit-0.0.1/spec/WK-INIT.md +211 -0
- wolverine_kit-0.0.1/spec/WK-UPDATE.md +146 -0
- wolverine_kit-0.0.1/src/wolverine_kit/__init__.py +5 -0
- wolverine_kit-0.0.1/src/wolverine_kit/__version__.py +1 -0
- wolverine_kit-0.0.1/src/wolverine_kit/cli.py +43 -0
- wolverine_kit-0.0.1/src/wolverine_kit/init/__init__.py +0 -0
- wolverine_kit-0.0.1/src/wolverine_kit/init/agents.py +23 -0
- wolverine_kit-0.0.1/src/wolverine_kit/init/command.py +140 -0
- wolverine_kit-0.0.1/src/wolverine_kit/init/scaffold.py +29 -0
- wolverine_kit-0.0.1/src/wolverine_kit/init/ui.py +85 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/copier.yml +78 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-architect-reviewer.md.jinja +79 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-change-propagator.md.jinja +54 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-decision-author.md.jinja +59 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-dependency-auditor.md.jinja +78 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-drift-detector.md.jinja +60 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-glossary-steward.md.jinja +73 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-guardian.md.jinja +41 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-phase-tracker.md.jinja +51 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-py-protocol-validator.md.jinja +51 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-spec-synthesizer.md.jinja +58 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/agents/{{command_prefix}}-test-author.md.jinja +59 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-check.md.jinja +22 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-decision.md.jinja +25 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-deps.md.jinja +10 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-drift.md.jinja +12 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-help.md.jinja +18 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-impl-brief.md.jinja +18 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-impl.md.jinja +36 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-propagate.md.jinja +18 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-review-spec.md.jinja +33 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-status.md.jinja +10 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/.claude/commands/{{command_prefix}}-test.md.jinja +14 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/CLAUDE.md.jinja +85 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/ARCHITECTURE.md.jinja +9 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/DECISIONS.md.jinja +11 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/GLOSSARY.md.jinja +7 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/INVARIANTS.md.jinja +9 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/NFR.md.jinja +7 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/OVERRIDES.md.jinja +12 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/ROADMAP.md.jinja +10 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/SCENARIOS.md.jinja +10 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/VISION.md.jinja +13 -0
- wolverine_kit-0.0.1/src/wolverine_kit/templates/project/{{spec_dir}}/{{surface_file}}.jinja +5 -0
- wolverine_kit-0.0.1/src/wolverine_kit/update/__init__.py +1 -0
- wolverine_kit-0.0.1/src/wolverine_kit/update/command.py +105 -0
- wolverine_kit-0.0.1/src/wolverine_kit/update/ui.py +50 -0
- wolverine_kit-0.0.1/tests/__init__.py +0 -0
- wolverine_kit-0.0.1/tests/test_i2_package_data.py +105 -0
- wolverine_kit-0.0.1/tests/test_i4_frontmatter.py +81 -0
- wolverine_kit-0.0.1/tests/test_init_module.py +307 -0
- wolverine_kit-0.0.1/tests/test_update_module.py +304 -0
- wolverine_kit-0.0.1/zensical.toml +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"meta": {},
|
|
4
|
+
"content": "<h1 id=\"methodology\">Methodology<a class=\"headerlink\" href=\"#methodology\" title=\"Permanent link\">¶</a></h1>\n<p>The constraint-first approach to AI-assisted development.</p>\n<h2 id=\"the-principle\">The Principle<a class=\"headerlink\" href=\"#the-principle\" title=\"Permanent link\">¶</a></h2>\n<p><strong>Write the rules before the code. Enforce them automatically. Stop at first failure.</strong></p>\n<p>This inverts the typical AI workflow:</p>\n<ol>\n<li><strong>Spec first</strong> - define invariants, decisions, and architecture before implementation</li>\n<li><strong>Gate before generate</strong> - every request passes through a guardian that checks alignment</li>\n<li><strong>Stop at first failure</strong> - the gate chain halts immediately on any failure</li>\n<li><strong>Escalate, don't guess</strong> - when the spec is silent, the system waits for a human decision</li>\n</ol>\n<h2 id=\"the-gate-chain\">The Gate Chain<a class=\"headerlink\" href=\"#the-gate-chain\" title=\"Permanent link\">¶</a></h2>\n<p>Every <code>/wk-impl</code> runs in order:</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-0-1\"><a id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"></a>Guardian -> Spec-synthesizer -> Test-author -> Handoff\n</span></code></pre></div>\n<p>A failure at any step stops the chain. You never get code that violates the design.</p>\n<h2 id=\"guardian-verdicts\">Guardian Verdicts<a class=\"headerlink\" href=\"#guardian-verdicts\" title=\"Permanent link\">¶</a></h2>\n<table>\n<thead>\n<tr>\n<th>Verdict</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>PASS</td>\n<td>Proposal aligns with all invariants and ADRs. Proceed.</td>\n</tr>\n<tr>\n<td>BLOCK</td>\n<td>Violates a specific rule. Fix the proposal or the spec.</td>\n</tr>\n<tr>\n<td>NEEDS-DECISION</td>\n<td>Spec doesn't cover this. Record a decision first.</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"comparison-with-ceremony-heavy-approaches\">Comparison with Ceremony-Heavy Approaches<a class=\"headerlink\" href=\"#comparison-with-ceremony-heavy-approaches\" title=\"Permanent link\">¶</a></h2>\n<table>\n<thead>\n<tr>\n<th>Aspect</th>\n<th>Ceremony-heavy</th>\n<th>Wolverine Kit</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>When roles run</td>\n<td>Every feature</td>\n<td>Phase-triggered</td>\n</tr>\n<tr>\n<td>Enforcement</td>\n<td>Guidelines</td>\n<td>Machine verdicts</td>\n</tr>\n<tr>\n<td>On ambiguity</td>\n<td>Agent guesses</td>\n<td>Stops, escalates</td>\n</tr>\n<tr>\n<td>On violation</td>\n<td>Retry and hope</td>\n<td>Cites the rule</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"writing-good-constraints\">Writing Good Constraints<a class=\"headerlink\" href=\"#writing-good-constraints\" title=\"Permanent link\">¶</a></h2>\n<ol>\n<li>Be specific enough to check. \"Code should be clean\" is not an invariant. \"No bare <code>print()</code> outside <code>ui.py</code>\" is.</li>\n<li>State what's blocked, not what's encouraged.</li>\n<li>One decision per ADR. Keep them atomic so agents can cite them precisely.</li>\n<li>Update the spec when reality changes. A stale spec is worse than no spec.</li>\n<li>Fewer rules, strictly enforced. Ten invariants that always hold beat fifty that are sometimes checked.</li>\n</ol>",
|
|
5
|
+
"search": [
|
|
6
|
+
{
|
|
7
|
+
"location": null,
|
|
8
|
+
"level": 1,
|
|
9
|
+
"title": "Methodology",
|
|
10
|
+
"text": "<p>The constraint-first approach to AI-assisted development.</p>",
|
|
11
|
+
"path": [],
|
|
12
|
+
"tags": []
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"location": "the-principle",
|
|
16
|
+
"level": 2,
|
|
17
|
+
"title": "The Principle",
|
|
18
|
+
"text": "<p>Write the rules before the code. Enforce them automatically. Stop at first failure.</p> <p>This inverts the typical AI workflow:</p> <ol> <li>Spec first - define invariants, decisions, and architecture before implementation</li> <li>Gate before generate - every request passes through a guardian that checks alignment</li> <li>Stop at first failure - the gate chain halts immediately on any failure</li> <li>Escalate, don't guess - when the spec is silent, the system waits for a human decision</li> </ol>",
|
|
19
|
+
"path": [],
|
|
20
|
+
"tags": []
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"location": "the-gate-chain",
|
|
24
|
+
"level": 2,
|
|
25
|
+
"title": "The Gate Chain",
|
|
26
|
+
"text": "<p>Every <code>/wk-impl</code> runs in order:</p> <pre><code>Guardian -> Spec-synthesizer -> Test-author -> Handoff\n</code></pre> <p>A failure at any step stops the chain. You never get code that violates the design.</p>",
|
|
27
|
+
"path": [],
|
|
28
|
+
"tags": []
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"location": "guardian-verdicts",
|
|
32
|
+
"level": 2,
|
|
33
|
+
"title": "Guardian Verdicts",
|
|
34
|
+
"text": "Verdict Meaning PASS Proposal aligns with all invariants and ADRs. Proceed. BLOCK Violates a specific rule. Fix the proposal or the spec. NEEDS-DECISION Spec doesn't cover this. Record a decision first.",
|
|
35
|
+
"path": [],
|
|
36
|
+
"tags": []
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"location": "comparison-with-ceremony-heavy-approaches",
|
|
40
|
+
"level": 2,
|
|
41
|
+
"title": "Comparison with Ceremony-Heavy Approaches",
|
|
42
|
+
"text": "Aspect Ceremony-heavy Wolverine Kit When roles run Every feature Phase-triggered Enforcement Guidelines Machine verdicts On ambiguity Agent guesses Stops, escalates On violation Retry and hope Cites the rule",
|
|
43
|
+
"path": [],
|
|
44
|
+
"tags": []
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"location": "writing-good-constraints",
|
|
48
|
+
"level": 2,
|
|
49
|
+
"title": "Writing Good Constraints",
|
|
50
|
+
"text": "<ol> <li>Be specific enough to check. \"Code should be clean\" is not an invariant. \"No bare <code>print()</code> outside <code>ui.py</code>\" is.</li> <li>State what's blocked, not what's encouraged.</li> <li>One decision per ADR. Keep them atomic so agents can cite them precisely.</li> <li>Update the spec when reality changes. A stale spec is worse than no spec.</li> <li>Fewer rules, strictly enforced. Ten invariants that always hold beat fifty that are sometimes checked.</li> </ol>",
|
|
51
|
+
"path": [],
|
|
52
|
+
"tags": []
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"title": "Methodology",
|
|
56
|
+
"toc": [
|
|
57
|
+
{
|
|
58
|
+
"title": "Methodology",
|
|
59
|
+
"content": "Methodology",
|
|
60
|
+
"id": "methodology",
|
|
61
|
+
"url": "#methodology",
|
|
62
|
+
"children": [
|
|
63
|
+
{
|
|
64
|
+
"title": "The Principle",
|
|
65
|
+
"content": "The Principle",
|
|
66
|
+
"id": "the-principle",
|
|
67
|
+
"url": "#the-principle",
|
|
68
|
+
"children": [],
|
|
69
|
+
"level": 2
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"title": "The Gate Chain",
|
|
73
|
+
"content": "The Gate Chain",
|
|
74
|
+
"id": "the-gate-chain",
|
|
75
|
+
"url": "#the-gate-chain",
|
|
76
|
+
"children": [],
|
|
77
|
+
"level": 2
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"title": "Guardian Verdicts",
|
|
81
|
+
"content": "Guardian Verdicts",
|
|
82
|
+
"id": "guardian-verdicts",
|
|
83
|
+
"url": "#guardian-verdicts",
|
|
84
|
+
"children": [],
|
|
85
|
+
"level": 2
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"title": "Comparison with Ceremony-Heavy Approaches",
|
|
89
|
+
"content": "Comparison with Ceremony-Heavy Approaches",
|
|
90
|
+
"id": "comparison-with-ceremony-heavy-approaches",
|
|
91
|
+
"url": "#comparison-with-ceremony-heavy-approaches",
|
|
92
|
+
"children": [],
|
|
93
|
+
"level": 2
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"title": "Writing Good Constraints",
|
|
97
|
+
"content": "Writing Good Constraints",
|
|
98
|
+
"id": "writing-good-constraints",
|
|
99
|
+
"url": "#writing-good-constraints",
|
|
100
|
+
"children": [],
|
|
101
|
+
"level": 2
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"level": 1
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"hash": 2472268133597579509
|
|
109
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"meta": {},
|
|
4
|
+
"content": "<h1 id=\"spec-files\">Spec Files<a class=\"headerlink\" href=\"#spec-files\" title=\"Permanent link\">¶</a></h1>\n<p>Every wolverine-kit project has a <code>spec/</code> directory. These files are user-owned and never overwritten by <code>wk update</code>.</p>\n<h2 id=\"invariantsmd\">INVARIANTS.md<a class=\"headerlink\" href=\"#invariantsmd\" title=\"Permanent link\">¶</a></h2>\n<p>Non-negotiable rules. The guardian BLOCKs any change that violates these. Each invariant should be specific enough to check by reading code or spec.</p>\n<p>Good: \"No bare <code>print()</code> outside <code>ui.py</code>\"\nBad: \"Code should be clean\"</p>\n<h2 id=\"decisionsmd\">DECISIONS.md<a class=\"headerlink\" href=\"#decisionsmd\" title=\"Permanent link\">¶</a></h2>\n<p>Binding architectural decision records (ADRs). One per choice. Format:</p>\n<div class=\"language-markdown highlight\"><pre><span></span><code><span id=\"__span-0-1\"><a id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"></a><span class=\"gu\">## ADR-NNN: Title</span>\n</span><span id=\"__span-0-2\"><a id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"></a>\n</span><span id=\"__span-0-3\"><a id=\"__codelineno-0-3\" name=\"__codelineno-0-3\" href=\"#__codelineno-0-3\"></a><span class=\"k\">-</span><span class=\"w\"> </span><span class=\"gs\">**Decision**</span>: what was decided\n</span><span id=\"__span-0-4\"><a id=\"__codelineno-0-4\" name=\"__codelineno-0-4\" href=\"#__codelineno-0-4\"></a><span class=\"k\">-</span><span class=\"w\"> </span><span class=\"gs\">**Rationale**</span>: why this over alternatives\n</span><span id=\"__span-0-5\"><a id=\"__codelineno-0-5\" name=\"__codelineno-0-5\" href=\"#__codelineno-0-5\"></a><span class=\"k\">-</span><span class=\"w\"> </span><span class=\"gs\">**Rejected**</span>: alternatives considered\n</span><span id=\"__span-0-6\"><a id=\"__codelineno-0-6\" name=\"__codelineno-0-6\" href=\"#__codelineno-0-6\"></a><span class=\"k\">-</span><span class=\"w\"> </span><span class=\"gs\">**Consequences**</span>: what changes as a result\n</span></code></pre></div>\n<h2 id=\"architecturemd\">ARCHITECTURE.md<a class=\"headerlink\" href=\"#architecturemd\" title=\"Permanent link\">¶</a></h2>\n<p>Module boundaries, dependencies, package structure. Defines what exists and how it connects. The spec-synthesizer uses this to produce implementation briefs.</p>\n<h2 id=\"visionmd\">VISION.md<a class=\"headerlink\" href=\"#visionmd\" title=\"Permanent link\">¶</a></h2>\n<p>Purpose, design principles, non-goals. The \"why\" behind the project. Helps the guardian distinguish intended behavior from accidental behavior.</p>\n<h2 id=\"nfrmd\">NFR.md<a class=\"headerlink\" href=\"#nfrmd\" title=\"Permanent link\">¶</a></h2>\n<p>Non-functional requirements: performance targets, security constraints, compatibility floors. Things that are hard to test but easy to violate.</p>\n<h2 id=\"roadmapmd\">ROADMAP.md<a class=\"headerlink\" href=\"#roadmapmd\" title=\"Permanent link\">¶</a></h2>\n<p>Phases and sequencing. What's done, what's open, what depends on what. The phase-tracker agent reads this.</p>\n<h2 id=\"scenariosmd\">SCENARIOS.md<a class=\"headerlink\" href=\"#scenariosmd\" title=\"Permanent link\">¶</a></h2>\n<p>Concrete use cases in Given/When/Then format. Validates that the design covers real workflows.</p>\n<h2 id=\"glossarymd\">GLOSSARY.md<a class=\"headerlink\" href=\"#glossarymd\" title=\"Permanent link\">¶</a></h2>\n<p>Canonical terminology. The glossary-steward checks for inconsistent usage across spec files.</p>\n<h2 id=\"dxmd-apimd\">DX.md / API.md<a class=\"headerlink\" href=\"#dxmd-apimd\" title=\"Permanent link\">¶</a></h2>\n<p>Public-facing surface. CLI commands, options, exit codes (DX.md) or API endpoints and contracts (API.md).</p>",
|
|
5
|
+
"search": [
|
|
6
|
+
{
|
|
7
|
+
"location": null,
|
|
8
|
+
"level": 1,
|
|
9
|
+
"title": "Spec Files",
|
|
10
|
+
"text": "<p>Every wolverine-kit project has a <code>spec/</code> directory. These files are user-owned and never overwritten by <code>wk update</code>.</p>",
|
|
11
|
+
"path": [],
|
|
12
|
+
"tags": []
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"location": "invariantsmd",
|
|
16
|
+
"level": 2,
|
|
17
|
+
"title": "INVARIANTS.md",
|
|
18
|
+
"text": "<p>Non-negotiable rules. The guardian BLOCKs any change that violates these. Each invariant should be specific enough to check by reading code or spec.</p> <p>Good: \"No bare <code>print()</code> outside <code>ui.py</code>\" Bad: \"Code should be clean\"</p>",
|
|
19
|
+
"path": [],
|
|
20
|
+
"tags": []
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"location": "decisionsmd",
|
|
24
|
+
"level": 2,
|
|
25
|
+
"title": "DECISIONS.md",
|
|
26
|
+
"text": "<p>Binding architectural decision records (ADRs). One per choice. Format:</p> <pre><code>## ADR-NNN: Title\n\n- **Decision**: what was decided\n- **Rationale**: why this over alternatives\n- **Rejected**: alternatives considered\n- **Consequences**: what changes as a result\n</code></pre>",
|
|
27
|
+
"path": [],
|
|
28
|
+
"tags": []
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"location": "architecturemd",
|
|
32
|
+
"level": 2,
|
|
33
|
+
"title": "ARCHITECTURE.md",
|
|
34
|
+
"text": "<p>Module boundaries, dependencies, package structure. Defines what exists and how it connects. The spec-synthesizer uses this to produce implementation briefs.</p>",
|
|
35
|
+
"path": [],
|
|
36
|
+
"tags": []
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"location": "visionmd",
|
|
40
|
+
"level": 2,
|
|
41
|
+
"title": "VISION.md",
|
|
42
|
+
"text": "<p>Purpose, design principles, non-goals. The \"why\" behind the project. Helps the guardian distinguish intended behavior from accidental behavior.</p>",
|
|
43
|
+
"path": [],
|
|
44
|
+
"tags": []
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"location": "nfrmd",
|
|
48
|
+
"level": 2,
|
|
49
|
+
"title": "NFR.md",
|
|
50
|
+
"text": "<p>Non-functional requirements: performance targets, security constraints, compatibility floors. Things that are hard to test but easy to violate.</p>",
|
|
51
|
+
"path": [],
|
|
52
|
+
"tags": []
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"location": "roadmapmd",
|
|
56
|
+
"level": 2,
|
|
57
|
+
"title": "ROADMAP.md",
|
|
58
|
+
"text": "<p>Phases and sequencing. What's done, what's open, what depends on what. The phase-tracker agent reads this.</p>",
|
|
59
|
+
"path": [],
|
|
60
|
+
"tags": []
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"location": "scenariosmd",
|
|
64
|
+
"level": 2,
|
|
65
|
+
"title": "SCENARIOS.md",
|
|
66
|
+
"text": "<p>Concrete use cases in Given/When/Then format. Validates that the design covers real workflows.</p>",
|
|
67
|
+
"path": [],
|
|
68
|
+
"tags": []
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"location": "glossarymd",
|
|
72
|
+
"level": 2,
|
|
73
|
+
"title": "GLOSSARY.md",
|
|
74
|
+
"text": "<p>Canonical terminology. The glossary-steward checks for inconsistent usage across spec files.</p>",
|
|
75
|
+
"path": [],
|
|
76
|
+
"tags": []
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"location": "dxmd-apimd",
|
|
80
|
+
"level": 2,
|
|
81
|
+
"title": "DX.md / API.md",
|
|
82
|
+
"text": "<p>Public-facing surface. CLI commands, options, exit codes (DX.md) or API endpoints and contracts (API.md).</p>",
|
|
83
|
+
"path": [],
|
|
84
|
+
"tags": []
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"title": "Spec Files",
|
|
88
|
+
"toc": [
|
|
89
|
+
{
|
|
90
|
+
"title": "Spec Files",
|
|
91
|
+
"content": "Spec Files",
|
|
92
|
+
"id": "spec-files",
|
|
93
|
+
"url": "#spec-files",
|
|
94
|
+
"children": [
|
|
95
|
+
{
|
|
96
|
+
"title": "INVARIANTS.md",
|
|
97
|
+
"content": "INVARIANTS.md",
|
|
98
|
+
"id": "invariantsmd",
|
|
99
|
+
"url": "#invariantsmd",
|
|
100
|
+
"children": [],
|
|
101
|
+
"level": 2
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"title": "DECISIONS.md",
|
|
105
|
+
"content": "DECISIONS.md",
|
|
106
|
+
"id": "decisionsmd",
|
|
107
|
+
"url": "#decisionsmd",
|
|
108
|
+
"children": [],
|
|
109
|
+
"level": 2
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"title": "ARCHITECTURE.md",
|
|
113
|
+
"content": "ARCHITECTURE.md",
|
|
114
|
+
"id": "architecturemd",
|
|
115
|
+
"url": "#architecturemd",
|
|
116
|
+
"children": [],
|
|
117
|
+
"level": 2
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"title": "VISION.md",
|
|
121
|
+
"content": "VISION.md",
|
|
122
|
+
"id": "visionmd",
|
|
123
|
+
"url": "#visionmd",
|
|
124
|
+
"children": [],
|
|
125
|
+
"level": 2
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"title": "NFR.md",
|
|
129
|
+
"content": "NFR.md",
|
|
130
|
+
"id": "nfrmd",
|
|
131
|
+
"url": "#nfrmd",
|
|
132
|
+
"children": [],
|
|
133
|
+
"level": 2
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"title": "ROADMAP.md",
|
|
137
|
+
"content": "ROADMAP.md",
|
|
138
|
+
"id": "roadmapmd",
|
|
139
|
+
"url": "#roadmapmd",
|
|
140
|
+
"children": [],
|
|
141
|
+
"level": 2
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"title": "SCENARIOS.md",
|
|
145
|
+
"content": "SCENARIOS.md",
|
|
146
|
+
"id": "scenariosmd",
|
|
147
|
+
"url": "#scenariosmd",
|
|
148
|
+
"children": [],
|
|
149
|
+
"level": 2
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"title": "GLOSSARY.md",
|
|
153
|
+
"content": "GLOSSARY.md",
|
|
154
|
+
"id": "glossarymd",
|
|
155
|
+
"url": "#glossarymd",
|
|
156
|
+
"children": [],
|
|
157
|
+
"level": 2
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"title": "DX.md / API.md",
|
|
161
|
+
"content": "DX.md / API.md",
|
|
162
|
+
"id": "dxmd-apimd",
|
|
163
|
+
"url": "#dxmd-apimd",
|
|
164
|
+
"children": [],
|
|
165
|
+
"level": 2
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"level": 1
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
"hash": 16116355205968799375
|
|
173
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": "\n<!doctype html>\n<html lang=\"en\" class=\"no-js\">\n <head>\n \n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n \n <meta name=\"description\" content=\"Constraint-first governance for AI-assisted development\">\n \n \n <meta name=\"author\" content=\"Wolverine Kit contributors\">\n \n \n <link rel=\"canonical\" href=\"https://mavwolverine.github.io/wolverine-kit/agents/\">\n \n \n \n \n \n \n \n <link rel=\"icon\" href=\"../assets/images/favicon.png\">\n <meta name=\"generator\" content=\"zensical-0.0.45\">\n \n \n \n <title>Agents - Wolverine Kit</title>\n \n \n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/main.fba56155.min.css\">\n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/palette.dfe2e883.min.css\">\n \n \n\n\n \n \n \n \n \n \n \n \n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback\">\n <style>:root{--md-text-font:\"Inter\";--md-code-font:\"JetBrains Mono\"}</style>\n \n \n \n <script>__md_scope=new URL(\"..\",location),__md_scope.pathname.endsWith(\"/\")||(__md_scope=new URL(__md_scope.pathname+\"/\",location)),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,_=__md_scope)=>JSON.parse(t.getItem(_.pathname+\".\"+e)),__md_set=(e,t,_=localStorage,a=__md_scope)=>{try{_.setItem(a.pathname+\".\"+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute(\"data-platform\",navigator.platform)</script>\n \n \n\n \n \n </head>\n \n \n \n \n \n \n \n \n \n <body dir=\"ltr\" data-md-color-scheme=\"default\" data-md-color-primary=\"deep-purple\" data-md-color-accent=\"amber\">\n \n \n <input class=\"md-toggle\" data-md-toggle=\"drawer\" type=\"checkbox\" id=\"__drawer\" autocomplete=\"off\">\n <input class=\"md-toggle\" data-md-toggle=\"search\" type=\"checkbox\" id=\"__search\" autocomplete=\"off\">\n <label class=\"md-overlay\" for=\"__drawer\" aria-label=\"Navigation\"></label>\n <div data-md-component=\"skip\">\n \n \n <a href=\"#agents\" class=\"md-skip\">\n Skip to content\n </a>\n \n </div>\n <div data-md-component=\"announce\">\n \n </div>\n \n \n \n\n \n\n<header class=\"md-header md-header--shadow\" data-md-component=\"header\">\n <nav class=\"md-header__inner md-grid\" aria-label=\"Header\">\n <a href=\"./..\" title=\"Wolverine Kit\" class=\"md-header__button md-logo\" aria-label=\"Wolverine Kit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n <label class=\"md-header__button md-icon\" for=\"__drawer\" aria-label=\"Navigation\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-menu\" viewBox=\"0 0 24 24\"><path d=\"M4 5h16M4 12h16M4 19h16\"/></svg>\n </label>\n <div class=\"md-header__title\" data-md-component=\"header-title\">\n <div class=\"md-header__ellipsis\">\n <div class=\"md-header__topic\">\n <span class=\"md-ellipsis\">\n Wolverine Kit\n </span>\n </div>\n <div class=\"md-header__topic\" data-md-component=\"header-topic\">\n <span class=\"md-ellipsis\">\n \n Agents\n \n </span>\n </div>\n </div>\n </div>\n \n \n <form class=\"md-header__option\" data-md-component=\"palette\">\n \n \n \n \n <input class=\"md-option\" data-md-color-media=\"none\" data-md-color-scheme=\"default\" data-md-color-primary=\"deep-purple\" data-md-color-accent=\"amber\" aria-hidden=\"true\" type=\"radio\" name=\"__palette\" id=\"__palette_0\">\n \n \n</form>\n \n \n \n <script>var palette=__md_get(\"__palette\");if(palette&&palette.color){if(\"(prefers-color-scheme)\"===palette.color.media){var media=matchMedia(\"(prefers-color-scheme: light)\"),input=document.querySelector(media.matches?\"[data-md-color-media='(prefers-color-scheme: light)']\":\"[data-md-color-media='(prefers-color-scheme: dark)']\");palette.color.media=input.getAttribute(\"data-md-color-media\"),palette.color.scheme=input.getAttribute(\"data-md-color-scheme\"),palette.color.primary=input.getAttribute(\"data-md-color-primary\"),palette.color.accent=input.getAttribute(\"data-md-color-accent\")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute(\"data-md-color-\"+key,value)}</script>\n \n \n \n \n \n <label class=\"md-header__button md-icon\" for=\"__search\" aria-label=\"Search\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-search\" viewBox=\"0 0 24 24\"><path d=\"m21 21-4.34-4.34\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/></svg>\n </label>\n <div class=\"md-search\" data-md-component=\"search\" role=\"dialog\" aria-label=\"Search\">\n <button type=\"button\" class=\"md-search__button\">\n Search\n </button>\n</div>\n \n \n <div class=\"md-header__source\">\n \n </div>\n </nav>\n \n</header>\n \n <div class=\"md-container\" data-md-component=\"container\">\n \n \n \n \n \n \n <main class=\"md-main\" data-md-component=\"main\">\n <div class=\"md-main__inner md-grid\">\n \n \n \n <div class=\"md-sidebar md-sidebar--primary\" data-md-component=\"sidebar\" data-md-type=\"navigation\" >\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n \n\n\n\n<nav class=\"md-nav md-nav--primary\" aria-label=\"Navigation\" data-md-level=\"0\">\n <label class=\"md-nav__title\" for=\"__drawer\">\n <a href=\"./..\" title=\"Wolverine Kit\" class=\"md-nav__button md-logo\" aria-label=\"Wolverine Kit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n Wolverine Kit\n </label>\n \n <ul class=\"md-nav__list\" data-md-scrollfix>\n \n \n \n \n \n \n \n <li class=\"md-nav__item\">\n <a href=\"../items\" class=\"md-nav__link\">\n \n \n \n <span class=\"md-ellipsis\">\n \n \n none\n\n \n </span>\n \n \n\n </a>\n </li>\n \n\n \n </ul>\n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-sidebar md-sidebar--secondary\" data-md-component=\"sidebar\" data-md-type=\"toc\" >\n <div class=\"md-sidebar__scrollwrap\">\n \n \n \n \n \n \n \n <input class=\"md-nav__toggle md-toggle\" type=\"checkbox\" id=\"__toc\">\n <div class=\"md-sidebar-button__wrapper\">\n <label class=\"md-sidebar-button\" for=\"__toc\"></label>\n </div>\n \n \n <div class=\"md-sidebar__inner\">\n \n\n\n<nav class=\"md-nav md-nav--secondary\" aria-label=\"On this page\">\n \n \n \n \n \n \n <label class=\"md-nav__title\" for=\"__toc\">\n <span class=\"md-nav__icon md-icon\"></span>\n On this page\n </label>\n <ul class=\"md-nav__list\" data-md-component=\"toc\" data-md-scrollfix>\n \n <li class=\"md-nav__item\">\n <a href=\"#stewardship-agents\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Stewardship Agents\n </span>\n </span>\n </a>\n \n <nav class=\"md-nav\" aria-label=\"Stewardship Agents\">\n <ul class=\"md-nav__list\">\n \n <li class=\"md-nav__item\">\n <a href=\"#guardian\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Guardian\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#drift-detector\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Drift Detector\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#phase-tracker\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Phase Tracker\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#architect-reviewer\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Architect Reviewer\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#glossary-steward\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Glossary Steward\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n </nav>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#delivery-agents\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Delivery Agents\n </span>\n </span>\n </a>\n \n <nav class=\"md-nav\" aria-label=\"Delivery Agents\">\n <ul class=\"md-nav__list\">\n \n <li class=\"md-nav__item\">\n <a href=\"#spec-synthesizer\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Spec Synthesizer\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#test-author\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Test Author\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n </nav>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#authoring-agents\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Authoring Agents\n </span>\n </span>\n </a>\n \n <nav class=\"md-nav\" aria-label=\"Authoring Agents\">\n <ul class=\"md-nav__list\">\n \n <li class=\"md-nav__item\">\n <a href=\"#decision-author\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Decision Author\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#change-propagator\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Change Propagator\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#dependency-auditor\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Dependency Auditor\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n </nav>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#pack-agents\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Pack Agents\n </span>\n </span>\n </a>\n \n <nav class=\"md-nav\" aria-label=\"Pack Agents\">\n <ul class=\"md-nav__list\">\n \n <li class=\"md-nav__item\">\n <a href=\"#python-protocol-validator-python-library-pack\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Python Protocol Validator (python-library pack)\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n </nav>\n \n</li>\n \n </ul>\n \n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-content\" data-md-component=\"content\">\n \n <article class=\"md-content__inner md-typeset\">\n \n \n\n<h1 id=\"agents\">Agents<a class=\"headerlink\" href=\"#agents\" title=\"Permanent link\">¶</a></h1>\n<p>Wolverine Kit ships 10 agents with every scaffold. They are managed files (regenerated on <code>wk update</code>) and live in <code>.claude/agents/</code>.</p>\n<h2 id=\"stewardship-agents\">Stewardship Agents<a class=\"headerlink\" href=\"#stewardship-agents\" title=\"Permanent link\">¶</a></h2>\n<h3 id=\"guardian\">Guardian<a class=\"headerlink\" href=\"#guardian\" title=\"Permanent link\">¶</a></h3>\n<p>Veto gate for any implementation or tech decision. Reads INVARIANTS.md, DECISIONS.md, and NFR.md. Returns PASS, BLOCK, or NEEDS-DECISION.</p>\n<h3 id=\"drift-detector\">Drift Detector<a class=\"headerlink\" href=\"#drift-detector\" title=\"Permanent link\">¶</a></h3>\n<p>Scans implementation for divergence after spec changes. Reports BREAKS, NEEDS UPDATE, and NO ACTION items with specific fix instructions.</p>\n<h3 id=\"phase-tracker\">Phase Tracker<a class=\"headerlink\" href=\"#phase-tracker\" title=\"Permanent link\">¶</a></h3>\n<p>Reads ROADMAP.md and reports progress. Identifies blocked items, stale checkboxes, and cross-phase dependencies.</p>\n<h3 id=\"architect-reviewer\">Architect Reviewer<a class=\"headerlink\" href=\"#architect-reviewer\" title=\"Permanent link\">¶</a></h3>\n<p>Holistic spec quality review. Checks invariant completeness, ADR coverage, module boundary integrity, roadmap sequencing, and cross-file consistency.</p>\n<h3 id=\"glossary-steward\">Glossary Steward<a class=\"headerlink\" href=\"#glossary-steward\" title=\"Permanent link\">¶</a></h3>\n<p>Scans spec files for terminology inconsistencies and glossary gaps.</p>\n<h2 id=\"delivery-agents\">Delivery Agents<a class=\"headerlink\" href=\"#delivery-agents\" title=\"Permanent link\">¶</a></h2>\n<h3 id=\"spec-synthesizer\">Spec Synthesizer<a class=\"headerlink\" href=\"#spec-synthesizer\" title=\"Permanent link\">¶</a></h3>\n<p>Produces implementation briefs from spec files. Outputs READY (implementable) or DRAFT (with blockers that must be resolved first).</p>\n<h3 id=\"test-author\">Test Author<a class=\"headerlink\" href=\"#test-author\" title=\"Permanent link\">¶</a></h3>\n<p>Generates Given/When/Then test specifications from a READY brief. Does not write test code.</p>\n<h2 id=\"authoring-agents\">Authoring Agents<a class=\"headerlink\" href=\"#authoring-agents\" title=\"Permanent link\">¶</a></h2>\n<h3 id=\"decision-author\">Decision Author<a class=\"headerlink\" href=\"#decision-author\" title=\"Permanent link\">¶</a></h3>\n<p>Drafts ADRs and propagates them through the spec document set.</p>\n<h3 id=\"change-propagator\">Change Propagator<a class=\"headerlink\" href=\"#change-propagator\" title=\"Permanent link\">¶</a></h3>\n<p>After a manual spec edit, fans the change across all related documents and verifies consistency.</p>\n<h3 id=\"dependency-auditor\">Dependency Auditor<a class=\"headerlink\" href=\"#dependency-auditor\" title=\"Permanent link\">¶</a></h3>\n<p>Checks project dependencies for available upgrades. Optionally runs tests against new versions and produces a categorized report (NO CHANGE / MINOR / BREAKING).</p>\n<h2 id=\"pack-agents\">Pack Agents<a class=\"headerlink\" href=\"#pack-agents\" title=\"Permanent link\">¶</a></h2>\n<h3 id=\"python-protocol-validator-python-library-pack\">Python Protocol Validator (python-library pack)<a class=\"headerlink\" href=\"#python-protocol-validator-python-library-pack\" title=\"Permanent link\">¶</a></h3>\n<p>Validates that Python classes correctly implement their declared protocols (<code>typing.Protocol</code>, ABCs). Only included when <code>--pack python-library</code> is specified.</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n </article>\n </div>\n \n \n<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith(\"__tabbed_\"))</script>\n </div>\n \n </main>\n \n <footer class=\"md-footer\">\n \n <div class=\"md-footer-meta md-typeset\">\n <div class=\"md-footer-meta__inner md-grid\">\n <div class=\"md-copyright\">\n \n \n Made with\n <a href=\"https://zensical.org/\" target=\"_blank\" rel=\"noopener\">\n Zensical\n </a>\n \n</div>\n \n </div>\n </div>\n</footer>\n \n </div>\n <div class=\"md-dialog\" data-md-component=\"dialog\">\n <div class=\"md-dialog__inner md-typeset\"></div>\n </div>\n \n \n \n \n \n <script id=\"__config\" type=\"application/json\">{\"annotate\":null,\"base\":\"..\",\"features\":[\"navigation\",\"search\",\"content\"],\"search\":\"../assets/javascripts/workers/search.e2d2d235.min.js\",\"tags\":null,\"translations\":{\"clipboard.copied\":\"Copied to clipboard\",\"clipboard.copy\":\"Copy to clipboard\",\"search.result.more.one\":\"1 more on this page\",\"search.result.more.other\":\"# more on this page\",\"search.result.none\":\"No matching documents\",\"search.result.one\":\"1 matching document\",\"search.result.other\":\"# matching documents\",\"search.result.placeholder\":\"Type to start searching\",\"search.result.term.missing\":\"Missing\",\"select.version\":\"Select version\"},\"version\":null}</script>\n \n \n <script src=\"../assets/javascripts/bundle.6e5f0216.min.js\"></script>\n \n \n </body>\n</html>",
|
|
3
|
+
"hash": 12713147627297901919
|
|
4
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": "\n<!doctype html>\n<html lang=\"en\" class=\"no-js\">\n <head>\n \n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n \n <meta name=\"description\" content=\"Constraint-first governance for AI-assisted development\">\n \n \n <meta name=\"author\" content=\"Wolverine Kit contributors\">\n \n \n <link rel=\"canonical\" href=\"https://mavwolverine.github.io/wolverine-kit/commands/\">\n \n \n \n \n \n \n \n <link rel=\"icon\" href=\"../assets/images/favicon.png\">\n <meta name=\"generator\" content=\"zensical-0.0.45\">\n \n \n \n <title>Commands - Wolverine Kit</title>\n \n \n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/main.fba56155.min.css\">\n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/palette.dfe2e883.min.css\">\n \n \n\n\n \n \n \n \n \n \n \n \n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback\">\n <style>:root{--md-text-font:\"Inter\";--md-code-font:\"JetBrains Mono\"}</style>\n \n \n \n <script>__md_scope=new URL(\"..\",location),__md_scope.pathname.endsWith(\"/\")||(__md_scope=new URL(__md_scope.pathname+\"/\",location)),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,_=__md_scope)=>JSON.parse(t.getItem(_.pathname+\".\"+e)),__md_set=(e,t,_=localStorage,a=__md_scope)=>{try{_.setItem(a.pathname+\".\"+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute(\"data-platform\",navigator.platform)</script>\n \n \n\n \n \n </head>\n \n \n \n \n \n \n \n \n \n <body dir=\"ltr\" data-md-color-scheme=\"default\" data-md-color-primary=\"deep-purple\" data-md-color-accent=\"amber\">\n \n \n <input class=\"md-toggle\" data-md-toggle=\"drawer\" type=\"checkbox\" id=\"__drawer\" autocomplete=\"off\">\n <input class=\"md-toggle\" data-md-toggle=\"search\" type=\"checkbox\" id=\"__search\" autocomplete=\"off\">\n <label class=\"md-overlay\" for=\"__drawer\" aria-label=\"Navigation\"></label>\n <div data-md-component=\"skip\">\n \n \n <a href=\"#commands\" class=\"md-skip\">\n Skip to content\n </a>\n \n </div>\n <div data-md-component=\"announce\">\n \n </div>\n \n \n \n\n \n\n<header class=\"md-header md-header--shadow\" data-md-component=\"header\">\n <nav class=\"md-header__inner md-grid\" aria-label=\"Header\">\n <a href=\"./..\" title=\"Wolverine Kit\" class=\"md-header__button md-logo\" aria-label=\"Wolverine Kit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n <label class=\"md-header__button md-icon\" for=\"__drawer\" aria-label=\"Navigation\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-menu\" viewBox=\"0 0 24 24\"><path d=\"M4 5h16M4 12h16M4 19h16\"/></svg>\n </label>\n <div class=\"md-header__title\" data-md-component=\"header-title\">\n <div class=\"md-header__ellipsis\">\n <div class=\"md-header__topic\">\n <span class=\"md-ellipsis\">\n Wolverine Kit\n </span>\n </div>\n <div class=\"md-header__topic\" data-md-component=\"header-topic\">\n <span class=\"md-ellipsis\">\n \n Commands\n \n </span>\n </div>\n </div>\n </div>\n \n \n <form class=\"md-header__option\" data-md-component=\"palette\">\n \n \n \n \n <input class=\"md-option\" data-md-color-media=\"none\" data-md-color-scheme=\"default\" data-md-color-primary=\"deep-purple\" data-md-color-accent=\"amber\" aria-hidden=\"true\" type=\"radio\" name=\"__palette\" id=\"__palette_0\">\n \n \n</form>\n \n \n \n <script>var palette=__md_get(\"__palette\");if(palette&&palette.color){if(\"(prefers-color-scheme)\"===palette.color.media){var media=matchMedia(\"(prefers-color-scheme: light)\"),input=document.querySelector(media.matches?\"[data-md-color-media='(prefers-color-scheme: light)']\":\"[data-md-color-media='(prefers-color-scheme: dark)']\");palette.color.media=input.getAttribute(\"data-md-color-media\"),palette.color.scheme=input.getAttribute(\"data-md-color-scheme\"),palette.color.primary=input.getAttribute(\"data-md-color-primary\"),palette.color.accent=input.getAttribute(\"data-md-color-accent\")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute(\"data-md-color-\"+key,value)}</script>\n \n \n \n \n \n <label class=\"md-header__button md-icon\" for=\"__search\" aria-label=\"Search\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-search\" viewBox=\"0 0 24 24\"><path d=\"m21 21-4.34-4.34\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/></svg>\n </label>\n <div class=\"md-search\" data-md-component=\"search\" role=\"dialog\" aria-label=\"Search\">\n <button type=\"button\" class=\"md-search__button\">\n Search\n </button>\n</div>\n \n \n <div class=\"md-header__source\">\n \n </div>\n </nav>\n \n</header>\n \n <div class=\"md-container\" data-md-component=\"container\">\n \n \n \n \n \n \n <main class=\"md-main\" data-md-component=\"main\">\n <div class=\"md-main__inner md-grid\">\n \n \n \n <div class=\"md-sidebar md-sidebar--primary\" data-md-component=\"sidebar\" data-md-type=\"navigation\" >\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n \n\n\n\n<nav class=\"md-nav md-nav--primary\" aria-label=\"Navigation\" data-md-level=\"0\">\n <label class=\"md-nav__title\" for=\"__drawer\">\n <a href=\"./..\" title=\"Wolverine Kit\" class=\"md-nav__button md-logo\" aria-label=\"Wolverine Kit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n Wolverine Kit\n </label>\n \n <ul class=\"md-nav__list\" data-md-scrollfix>\n \n \n \n \n \n \n \n <li class=\"md-nav__item\">\n <a href=\"../items\" class=\"md-nav__link\">\n \n \n \n <span class=\"md-ellipsis\">\n \n \n none\n\n \n </span>\n \n \n\n </a>\n </li>\n \n\n \n </ul>\n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-sidebar md-sidebar--secondary\" data-md-component=\"sidebar\" data-md-type=\"toc\" >\n <div class=\"md-sidebar__scrollwrap\">\n \n \n \n \n \n \n \n <input class=\"md-nav__toggle md-toggle\" type=\"checkbox\" id=\"__toc\">\n <div class=\"md-sidebar-button__wrapper\">\n <label class=\"md-sidebar-button\" for=\"__toc\"></label>\n </div>\n \n \n <div class=\"md-sidebar__inner\">\n \n\n\n<nav class=\"md-nav md-nav--secondary\" aria-label=\"On this page\">\n \n \n \n \n \n \n <label class=\"md-nav__title\" for=\"__toc\">\n <span class=\"md-nav__icon md-icon\"></span>\n On this page\n </label>\n <ul class=\"md-nav__list\" data-md-component=\"toc\" data-md-scrollfix>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-check\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-check\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-impl\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-impl\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-spec\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-spec\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-drift\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-drift\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-decision\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-decision\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-deps\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-deps\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-status\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-status\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-review-spec\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-review-spec\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-propagate\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-propagate\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#wk-help\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n /wk-help\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n \n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-content\" data-md-component=\"content\">\n \n <article class=\"md-content__inner md-typeset\">\n \n \n\n<h1 id=\"commands\">Commands<a class=\"headerlink\" href=\"#commands\" title=\"Permanent link\">¶</a></h1>\n<p>All commands use your project's prefix (set at <code>wk init</code> time). Examples below use <code>wk</code> as the prefix.</p>\n<h2 id=\"wk-check\">/wk-check<a class=\"headerlink\" href=\"#wk-check\" title=\"Permanent link\">¶</a></h2>\n<p>Full hygiene sweep. Runs the guardian against current state, then the glossary steward for terminology consistency.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-0-1\"><a id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"></a>/wk-check [description of proposed change]\n</span></code></pre></div>\n<p>Without arguments: read-only check of the codebase against spec.\nWith arguments: evaluates a specific proposal.</p>\n<h2 id=\"wk-impl\">/wk-impl<a class=\"headerlink\" href=\"#wk-impl\" title=\"Permanent link\">¶</a></h2>\n<p>Full gate chain with implementation handoff.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-1-1\"><a id=\"__codelineno-1-1\" name=\"__codelineno-1-1\" href=\"#__codelineno-1-1\"></a>/wk-impl <module_name>\n</span></code></pre></div>\n<p>Runs: guardian -> spec-synthesizer -> test-author -> handoff. Stops at first failure.</p>\n<h2 id=\"wk-spec\">/wk-spec<a class=\"headerlink\" href=\"#wk-spec\" title=\"Permanent link\">¶</a></h2>\n<p>Guardian gate + implementation brief, without the handoff step.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-2-1\"><a id=\"__codelineno-2-1\" name=\"__codelineno-2-1\" href=\"#__codelineno-2-1\"></a>/wk-spec <module_name>\n</span></code></pre></div>\n<p>Useful for reviewing what would be implemented before committing.</p>\n<h2 id=\"wk-drift\">/wk-drift<a class=\"headerlink\" href=\"#wk-drift\" title=\"Permanent link\">¶</a></h2>\n<p>Scans for spec-code divergence after spec changes.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-3-1\"><a id=\"__codelineno-3-1\" name=\"__codelineno-3-1\" href=\"#__codelineno-3-1\"></a>/wk-drift\n</span></code></pre></div>\n<p>Reports BREAKS (must fix), NEEDS UPDATE (should fix), and NO ACTION items. Each finding includes a FIX instruction.</p>\n<h2 id=\"wk-decision\">/wk-decision<a class=\"headerlink\" href=\"#wk-decision\" title=\"Permanent link\">¶</a></h2>\n<p>Interactive ADR authoring. Asks for context, drafts the ADR, propagates through spec.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-4-1\"><a id=\"__codelineno-4-1\" name=\"__codelineno-4-1\" href=\"#__codelineno-4-1\"></a>/wk-decision <title>\n</span></code></pre></div>\n<h2 id=\"wk-deps\">/wk-deps<a class=\"headerlink\" href=\"#wk-deps\" title=\"Permanent link\">¶</a></h2>\n<p>Dependency upgrade audit. Detects the package ecosystem, checks for updates, tests compatibility.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-5-1\"><a id=\"__codelineno-5-1\" name=\"__codelineno-5-1\" href=\"#__codelineno-5-1\"></a>/wk-deps\n</span></code></pre></div>\n<h2 id=\"wk-status\">/wk-status<a class=\"headerlink\" href=\"#wk-status\" title=\"Permanent link\">¶</a></h2>\n<p>Roadmap burn-down and phase progress.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-6-1\"><a id=\"__codelineno-6-1\" name=\"__codelineno-6-1\" href=\"#__codelineno-6-1\"></a>/wk-status\n</span></code></pre></div>\n<h2 id=\"wk-review-spec\">/wk-review-spec<a class=\"headerlink\" href=\"#wk-review-spec\" title=\"Permanent link\">¶</a></h2>\n<p>Architect-level review of spec quality across all dimensions.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-7-1\"><a id=\"__codelineno-7-1\" name=\"__codelineno-7-1\" href=\"#__codelineno-7-1\"></a>/wk-review-spec\n</span></code></pre></div>\n<h2 id=\"wk-propagate\">/wk-propagate<a class=\"headerlink\" href=\"#wk-propagate\" title=\"Permanent link\">¶</a></h2>\n<p>Fan a manual spec edit across all downstream documents.</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-8-1\"><a id=\"__codelineno-8-1\" name=\"__codelineno-8-1\" href=\"#__codelineno-8-1\"></a>/wk-propagate <doc>\n</span></code></pre></div>\n<h2 id=\"wk-help\">/wk-help<a class=\"headerlink\" href=\"#wk-help\" title=\"Permanent link\">¶</a></h2>\n<p>Lists all available commands with descriptions (reads them dynamically from command file frontmatter).</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-9-1\"><a id=\"__codelineno-9-1\" name=\"__codelineno-9-1\" href=\"#__codelineno-9-1\"></a>/wk-help\n</span></code></pre></div>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n </article>\n </div>\n \n \n<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith(\"__tabbed_\"))</script>\n </div>\n \n </main>\n \n <footer class=\"md-footer\">\n \n <div class=\"md-footer-meta md-typeset\">\n <div class=\"md-footer-meta__inner md-grid\">\n <div class=\"md-copyright\">\n \n \n Made with\n <a href=\"https://zensical.org/\" target=\"_blank\" rel=\"noopener\">\n Zensical\n </a>\n \n</div>\n \n </div>\n </div>\n</footer>\n \n </div>\n <div class=\"md-dialog\" data-md-component=\"dialog\">\n <div class=\"md-dialog__inner md-typeset\"></div>\n </div>\n \n \n \n \n \n <script id=\"__config\" type=\"application/json\">{\"annotate\":null,\"base\":\"..\",\"features\":[\"navigation\",\"search\",\"content\"],\"search\":\"../assets/javascripts/workers/search.e2d2d235.min.js\",\"tags\":null,\"translations\":{\"clipboard.copied\":\"Copied to clipboard\",\"clipboard.copy\":\"Copy to clipboard\",\"search.result.more.one\":\"1 more on this page\",\"search.result.more.other\":\"# more on this page\",\"search.result.none\":\"No matching documents\",\"search.result.one\":\"1 matching document\",\"search.result.other\":\"# matching documents\",\"search.result.placeholder\":\"Type to start searching\",\"search.result.term.missing\":\"Missing\",\"select.version\":\"Select version\"},\"version\":null}</script>\n \n \n <script src=\"../assets/javascripts/bundle.6e5f0216.min.js\"></script>\n \n \n </body>\n</html>",
|
|
3
|
+
"hash": 5636660343440321001
|
|
4
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"meta": {},
|
|
4
|
+
"content": "<h1 id=\"quick-start\">Quick Start<a class=\"headerlink\" href=\"#quick-start\" title=\"Permanent link\">¶</a></h1>\n<h2 id=\"install-and-scaffold\">Install and scaffold<a class=\"headerlink\" href=\"#install-and-scaffold\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-bash highlight\"><pre><span></span><code><span id=\"__span-0-1\"><a id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"></a><span class=\"c1\"># One-shot (no install needed)</span>\n</span><span id=\"__span-0-2\"><a id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"></a>uvx<span class=\"w\"> </span>wolverine-kit<span class=\"w\"> </span>init<span class=\"w\"> </span>my-project<span class=\"w\"> </span>--agent<span class=\"w\"> </span>claude\n</span><span id=\"__span-0-3\"><a id=\"__codelineno-0-3\" name=\"__codelineno-0-3\" href=\"#__codelineno-0-3\"></a>\n</span><span id=\"__span-0-4\"><a id=\"__codelineno-0-4\" name=\"__codelineno-0-4\" href=\"#__codelineno-0-4\"></a><span class=\"c1\"># Or install persistently</span>\n</span><span id=\"__span-0-5\"><a id=\"__codelineno-0-5\" name=\"__codelineno-0-5\" href=\"#__codelineno-0-5\"></a>uv<span class=\"w\"> </span>tool<span class=\"w\"> </span>install<span class=\"w\"> </span>wolverine-kit\n</span><span id=\"__span-0-6\"><a id=\"__codelineno-0-6\" name=\"__codelineno-0-6\" href=\"#__codelineno-0-6\"></a>wk<span class=\"w\"> </span>init<span class=\"w\"> </span>my-project<span class=\"w\"> </span>--agent<span class=\"w\"> </span>claude\n</span></code></pre></div>\n<p>Only prerequisite: <a href=\"https://docs.astral.sh/uv/\">uv</a>.</p>\n<h2 id=\"fill-in-your-spec\">Fill in your spec<a class=\"headerlink\" href=\"#fill-in-your-spec\" title=\"Permanent link\">¶</a></h2>\n<p>After scaffolding, you have a <code>spec/</code> directory with stub files. Start with these three:</p>\n<ol>\n<li><strong><code>spec/INVARIANTS.md</code></strong> - your non-negotiable rules</li>\n<li><strong><code>spec/DECISIONS.md</code></strong> - binding architectural choices</li>\n<li><strong><code>spec/ARCHITECTURE.md</code></strong> - module boundaries and structure</li>\n</ol>\n<h2 id=\"run-your-first-check\">Run your first check<a class=\"headerlink\" href=\"#run-your-first-check\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-1-1\"><a id=\"__codelineno-1-1\" name=\"__codelineno-1-1\" href=\"#__codelineno-1-1\"></a>/wk-check\n</span></code></pre></div>\n<p>The guardian reads your invariants and decisions, then checks the current state of your project against them.</p>\n<h2 id=\"implement-a-module\">Implement a module<a class=\"headerlink\" href=\"#implement-a-module\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-2-1\"><a id=\"__codelineno-2-1\" name=\"__codelineno-2-1\" href=\"#__codelineno-2-1\"></a>/wk-impl auth\n</span></code></pre></div>\n<p>This runs the full gate chain:</p>\n<ol>\n<li>Guardian verifies the proposal is spec-compliant</li>\n<li>Spec-synthesizer produces a brief</li>\n<li>Test-author generates test specifications</li>\n<li>Implementation begins (only if all gates pass)</li>\n</ol>\n<h2 id=\"record-a-decision\">Record a decision<a class=\"headerlink\" href=\"#record-a-decision\" title=\"Permanent link\">¶</a></h2>\n<p>When the guardian emits NEEDS-DECISION, record the resolution:</p>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-3-1\"><a id=\"__codelineno-3-1\" name=\"__codelineno-3-1\" href=\"#__codelineno-3-1\"></a>/wk-decision Use JWT for session tokens\n</span></code></pre></div>\n<p>The agent asks for details, drafts the ADR, and propagates it through your spec files.</p>\n<h2 id=\"update-after-upgrading-wolverine-kit\">Update after upgrading wolverine-kit<a class=\"headerlink\" href=\"#update-after-upgrading-wolverine-kit\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-bash highlight\"><pre><span></span><code><span id=\"__span-4-1\"><a id=\"__codelineno-4-1\" name=\"__codelineno-4-1\" href=\"#__codelineno-4-1\"></a>wk<span class=\"w\"> </span>update\n</span></code></pre></div>\n<p>Your <code>spec/</code> files are never touched. Only managed agent/command files are regenerated.</p>",
|
|
5
|
+
"search": [
|
|
6
|
+
{
|
|
7
|
+
"location": null,
|
|
8
|
+
"level": 1,
|
|
9
|
+
"title": "Quick Start",
|
|
10
|
+
"text": "",
|
|
11
|
+
"path": [],
|
|
12
|
+
"tags": []
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"location": "install-and-scaffold",
|
|
16
|
+
"level": 2,
|
|
17
|
+
"title": "Install and scaffold",
|
|
18
|
+
"text": "<pre><code># One-shot (no install needed)\nuvx wolverine-kit init my-project --agent claude\n\n# Or install persistently\nuv tool install wolverine-kit\nwk init my-project --agent claude\n</code></pre> <p>Only prerequisite: uv.</p>",
|
|
19
|
+
"path": [],
|
|
20
|
+
"tags": []
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"location": "fill-in-your-spec",
|
|
24
|
+
"level": 2,
|
|
25
|
+
"title": "Fill in your spec",
|
|
26
|
+
"text": "<p>After scaffolding, you have a <code>spec/</code> directory with stub files. Start with these three:</p> <ol> <li><code>spec/INVARIANTS.md</code> - your non-negotiable rules</li> <li><code>spec/DECISIONS.md</code> - binding architectural choices</li> <li><code>spec/ARCHITECTURE.md</code> - module boundaries and structure</li> </ol>",
|
|
27
|
+
"path": [],
|
|
28
|
+
"tags": []
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"location": "run-your-first-check",
|
|
32
|
+
"level": 2,
|
|
33
|
+
"title": "Run your first check",
|
|
34
|
+
"text": "<pre><code>/wk-check\n</code></pre> <p>The guardian reads your invariants and decisions, then checks the current state of your project against them.</p>",
|
|
35
|
+
"path": [],
|
|
36
|
+
"tags": []
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"location": "implement-a-module",
|
|
40
|
+
"level": 2,
|
|
41
|
+
"title": "Implement a module",
|
|
42
|
+
"text": "<pre><code>/wk-impl auth\n</code></pre> <p>This runs the full gate chain:</p> <ol> <li>Guardian verifies the proposal is spec-compliant</li> <li>Spec-synthesizer produces a brief</li> <li>Test-author generates test specifications</li> <li>Implementation begins (only if all gates pass)</li> </ol>",
|
|
43
|
+
"path": [],
|
|
44
|
+
"tags": []
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"location": "record-a-decision",
|
|
48
|
+
"level": 2,
|
|
49
|
+
"title": "Record a decision",
|
|
50
|
+
"text": "<p>When the guardian emits NEEDS-DECISION, record the resolution:</p> <pre><code>/wk-decision Use JWT for session tokens\n</code></pre> <p>The agent asks for details, drafts the ADR, and propagates it through your spec files.</p>",
|
|
51
|
+
"path": [],
|
|
52
|
+
"tags": []
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"location": "update-after-upgrading-wolverine-kit",
|
|
56
|
+
"level": 2,
|
|
57
|
+
"title": "Update after upgrading wolverine-kit",
|
|
58
|
+
"text": "<pre><code>wk update\n</code></pre> <p>Your <code>spec/</code> files are never touched. Only managed agent/command files are regenerated.</p>",
|
|
59
|
+
"path": [],
|
|
60
|
+
"tags": []
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"title": "Quick Start",
|
|
64
|
+
"toc": [
|
|
65
|
+
{
|
|
66
|
+
"title": "Quick Start",
|
|
67
|
+
"content": "Quick Start",
|
|
68
|
+
"id": "quick-start",
|
|
69
|
+
"url": "#quick-start",
|
|
70
|
+
"children": [
|
|
71
|
+
{
|
|
72
|
+
"title": "Install and scaffold",
|
|
73
|
+
"content": "Install and scaffold",
|
|
74
|
+
"id": "install-and-scaffold",
|
|
75
|
+
"url": "#install-and-scaffold",
|
|
76
|
+
"children": [],
|
|
77
|
+
"level": 2
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"title": "Fill in your spec",
|
|
81
|
+
"content": "Fill in your spec",
|
|
82
|
+
"id": "fill-in-your-spec",
|
|
83
|
+
"url": "#fill-in-your-spec",
|
|
84
|
+
"children": [],
|
|
85
|
+
"level": 2
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"title": "Run your first check",
|
|
89
|
+
"content": "Run your first check",
|
|
90
|
+
"id": "run-your-first-check",
|
|
91
|
+
"url": "#run-your-first-check",
|
|
92
|
+
"children": [],
|
|
93
|
+
"level": 2
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"title": "Implement a module",
|
|
97
|
+
"content": "Implement a module",
|
|
98
|
+
"id": "implement-a-module",
|
|
99
|
+
"url": "#implement-a-module",
|
|
100
|
+
"children": [],
|
|
101
|
+
"level": 2
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"title": "Record a decision",
|
|
105
|
+
"content": "Record a decision",
|
|
106
|
+
"id": "record-a-decision",
|
|
107
|
+
"url": "#record-a-decision",
|
|
108
|
+
"children": [],
|
|
109
|
+
"level": 2
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"title": "Update after upgrading wolverine-kit",
|
|
113
|
+
"content": "Update after upgrading wolverine-kit",
|
|
114
|
+
"id": "update-after-upgrading-wolverine-kit",
|
|
115
|
+
"url": "#update-after-upgrading-wolverine-kit",
|
|
116
|
+
"children": [],
|
|
117
|
+
"level": 2
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"level": 1
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"hash": 8090221086040563438
|
|
125
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": "\n<!doctype html>\n<html lang=\"en\" class=\"no-js\">\n <head>\n \n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n \n <meta name=\"description\" content=\"Constraint-first governance for AI-assisted development\">\n \n \n <meta name=\"author\" content=\"Wolverine Kit contributors\">\n \n \n <link rel=\"canonical\" href=\"https://mavwolverine.github.io/wolverine-kit/packs/\">\n \n \n \n \n \n \n \n <link rel=\"icon\" href=\"../assets/images/favicon.png\">\n <meta name=\"generator\" content=\"zensical-0.0.45\">\n \n \n \n <title>Packs - Wolverine Kit</title>\n \n \n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/main.fba56155.min.css\">\n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/palette.dfe2e883.min.css\">\n \n \n\n\n \n \n \n \n \n \n \n \n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback\">\n <style>:root{--md-text-font:\"Inter\";--md-code-font:\"JetBrains Mono\"}</style>\n \n \n \n <script>__md_scope=new URL(\"..\",location),__md_scope.pathname.endsWith(\"/\")||(__md_scope=new URL(__md_scope.pathname+\"/\",location)),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,_=__md_scope)=>JSON.parse(t.getItem(_.pathname+\".\"+e)),__md_set=(e,t,_=localStorage,a=__md_scope)=>{try{_.setItem(a.pathname+\".\"+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute(\"data-platform\",navigator.platform)</script>\n \n \n\n \n \n </head>\n \n \n \n \n \n \n \n \n \n <body dir=\"ltr\" data-md-color-scheme=\"default\" data-md-color-primary=\"deep-purple\" data-md-color-accent=\"amber\">\n \n \n <input class=\"md-toggle\" data-md-toggle=\"drawer\" type=\"checkbox\" id=\"__drawer\" autocomplete=\"off\">\n <input class=\"md-toggle\" data-md-toggle=\"search\" type=\"checkbox\" id=\"__search\" autocomplete=\"off\">\n <label class=\"md-overlay\" for=\"__drawer\" aria-label=\"Navigation\"></label>\n <div data-md-component=\"skip\">\n \n \n <a href=\"#packs\" class=\"md-skip\">\n Skip to content\n </a>\n \n </div>\n <div data-md-component=\"announce\">\n \n </div>\n \n \n \n\n \n\n<header class=\"md-header md-header--shadow\" data-md-component=\"header\">\n <nav class=\"md-header__inner md-grid\" aria-label=\"Header\">\n <a href=\"./..\" title=\"Wolverine Kit\" class=\"md-header__button md-logo\" aria-label=\"Wolverine Kit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n <label class=\"md-header__button md-icon\" for=\"__drawer\" aria-label=\"Navigation\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-menu\" viewBox=\"0 0 24 24\"><path d=\"M4 5h16M4 12h16M4 19h16\"/></svg>\n </label>\n <div class=\"md-header__title\" data-md-component=\"header-title\">\n <div class=\"md-header__ellipsis\">\n <div class=\"md-header__topic\">\n <span class=\"md-ellipsis\">\n Wolverine Kit\n </span>\n </div>\n <div class=\"md-header__topic\" data-md-component=\"header-topic\">\n <span class=\"md-ellipsis\">\n \n Packs\n \n </span>\n </div>\n </div>\n </div>\n \n \n <form class=\"md-header__option\" data-md-component=\"palette\">\n \n \n \n \n <input class=\"md-option\" data-md-color-media=\"none\" data-md-color-scheme=\"default\" data-md-color-primary=\"deep-purple\" data-md-color-accent=\"amber\" aria-hidden=\"true\" type=\"radio\" name=\"__palette\" id=\"__palette_0\">\n \n \n</form>\n \n \n \n <script>var palette=__md_get(\"__palette\");if(palette&&palette.color){if(\"(prefers-color-scheme)\"===palette.color.media){var media=matchMedia(\"(prefers-color-scheme: light)\"),input=document.querySelector(media.matches?\"[data-md-color-media='(prefers-color-scheme: light)']\":\"[data-md-color-media='(prefers-color-scheme: dark)']\");palette.color.media=input.getAttribute(\"data-md-color-media\"),palette.color.scheme=input.getAttribute(\"data-md-color-scheme\"),palette.color.primary=input.getAttribute(\"data-md-color-primary\"),palette.color.accent=input.getAttribute(\"data-md-color-accent\")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute(\"data-md-color-\"+key,value)}</script>\n \n \n \n \n \n <label class=\"md-header__button md-icon\" for=\"__search\" aria-label=\"Search\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-search\" viewBox=\"0 0 24 24\"><path d=\"m21 21-4.34-4.34\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/></svg>\n </label>\n <div class=\"md-search\" data-md-component=\"search\" role=\"dialog\" aria-label=\"Search\">\n <button type=\"button\" class=\"md-search__button\">\n Search\n </button>\n</div>\n \n \n <div class=\"md-header__source\">\n \n </div>\n </nav>\n \n</header>\n \n <div class=\"md-container\" data-md-component=\"container\">\n \n \n \n \n \n \n <main class=\"md-main\" data-md-component=\"main\">\n <div class=\"md-main__inner md-grid\">\n \n \n \n <div class=\"md-sidebar md-sidebar--primary\" data-md-component=\"sidebar\" data-md-type=\"navigation\" >\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n \n\n\n\n<nav class=\"md-nav md-nav--primary\" aria-label=\"Navigation\" data-md-level=\"0\">\n <label class=\"md-nav__title\" for=\"__drawer\">\n <a href=\"./..\" title=\"Wolverine Kit\" class=\"md-nav__button md-logo\" aria-label=\"Wolverine Kit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n Wolverine Kit\n </label>\n \n <ul class=\"md-nav__list\" data-md-scrollfix>\n \n \n \n \n \n \n \n <li class=\"md-nav__item\">\n <a href=\"../items\" class=\"md-nav__link\">\n \n \n \n <span class=\"md-ellipsis\">\n \n \n none\n\n \n </span>\n \n \n\n </a>\n </li>\n \n\n \n </ul>\n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-sidebar md-sidebar--secondary\" data-md-component=\"sidebar\" data-md-type=\"toc\" >\n <div class=\"md-sidebar__scrollwrap\">\n \n \n \n \n \n \n \n <input class=\"md-nav__toggle md-toggle\" type=\"checkbox\" id=\"__toc\">\n <div class=\"md-sidebar-button__wrapper\">\n <label class=\"md-sidebar-button\" for=\"__toc\"></label>\n </div>\n \n \n <div class=\"md-sidebar__inner\">\n \n\n\n<nav class=\"md-nav md-nav--secondary\" aria-label=\"On this page\">\n \n \n \n \n \n \n <label class=\"md-nav__title\" for=\"__toc\">\n <span class=\"md-nav__icon md-icon\"></span>\n On this page\n </label>\n <ul class=\"md-nav__list\" data-md-component=\"toc\" data-md-scrollfix>\n \n <li class=\"md-nav__item\">\n <a href=\"#usage\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Usage\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#available-packs\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Available Packs\n </span>\n </span>\n </a>\n \n <nav class=\"md-nav\" aria-label=\"Available Packs\">\n <ul class=\"md-nav__list\">\n \n <li class=\"md-nav__item\">\n <a href=\"#python-library\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n python-library\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n </nav>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#how-packs-work\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n How Packs Work\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#creating-your-own-pack\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Creating Your Own Pack\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n \n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-content\" data-md-component=\"content\">\n \n <article class=\"md-content__inner md-typeset\">\n \n \n\n<h1 id=\"packs\">Packs<a class=\"headerlink\" href=\"#packs\" title=\"Permanent link\">¶</a></h1>\n<p>Packs add tech-stack-specific agents to your project. They are optional and selected at init time.</p>\n<h2 id=\"usage\">Usage<a class=\"headerlink\" href=\"#usage\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-bash highlight\"><pre><span></span><code><span id=\"__span-0-1\"><a id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"></a>wk<span class=\"w\"> </span>init<span class=\"w\"> </span>my-project<span class=\"w\"> </span>--agent<span class=\"w\"> </span>claude<span class=\"w\"> </span>--pack<span class=\"w\"> </span>python-library\n</span></code></pre></div>\n<h2 id=\"available-packs\">Available Packs<a class=\"headerlink\" href=\"#available-packs\" title=\"Permanent link\">¶</a></h2>\n<h3 id=\"python-library\">python-library<a class=\"headerlink\" href=\"#python-library\" title=\"Permanent link\">¶</a></h3>\n<p>Adds agents tailored to Python library development:</p>\n<table>\n<thead>\n<tr>\n<th>Agent</th>\n<th>What it does</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>py-protocol-validator</code></td>\n<td>Validates Protocol/ABC implementations: missing methods, signature mismatches, unresolved abstractmethods</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"how-packs-work\">How Packs Work<a class=\"headerlink\" href=\"#how-packs-work\" title=\"Permanent link\">¶</a></h2>\n<ul>\n<li>Pack agents are <code>.md.jinja</code> templates, just like the core agents</li>\n<li>They follow the same <code>managed-by: wolverine-kit</code> convention</li>\n<li>They are included/excluded at scaffold time based on the <code>--pack</code> flag</li>\n<li><code>wk update</code> respects the original pack selection (stored in <code>.wolverine-kit.yml</code>)</li>\n</ul>\n<h2 id=\"creating-your-own-pack\">Creating Your Own Pack<a class=\"headerlink\" href=\"#creating-your-own-pack\" title=\"Permanent link\">¶</a></h2>\n<p>Packs are purely files (Invariant I8). A pack adds one or more agent templates under <code>.claude/agents/</code>. No executable code is allowed in pack directories.</p>\n<p>To propose a new pack, open an issue describing:</p>\n<ol>\n<li>The tech stack it targets</li>\n<li>What agents it would include</li>\n<li>What invariants those agents would check</li>\n</ol>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n </article>\n </div>\n \n \n<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith(\"__tabbed_\"))</script>\n </div>\n \n </main>\n \n <footer class=\"md-footer\">\n \n <div class=\"md-footer-meta md-typeset\">\n <div class=\"md-footer-meta__inner md-grid\">\n <div class=\"md-copyright\">\n \n \n Made with\n <a href=\"https://zensical.org/\" target=\"_blank\" rel=\"noopener\">\n Zensical\n </a>\n \n</div>\n \n </div>\n </div>\n</footer>\n \n </div>\n <div class=\"md-dialog\" data-md-component=\"dialog\">\n <div class=\"md-dialog__inner md-typeset\"></div>\n </div>\n \n \n \n \n \n <script id=\"__config\" type=\"application/json\">{\"annotate\":null,\"base\":\"..\",\"features\":[\"navigation\",\"search\",\"content\"],\"search\":\"../assets/javascripts/workers/search.e2d2d235.min.js\",\"tags\":null,\"translations\":{\"clipboard.copied\":\"Copied to clipboard\",\"clipboard.copy\":\"Copy to clipboard\",\"search.result.more.one\":\"1 more on this page\",\"search.result.more.other\":\"# more on this page\",\"search.result.none\":\"No matching documents\",\"search.result.one\":\"1 matching document\",\"search.result.other\":\"# matching documents\",\"search.result.placeholder\":\"Type to start searching\",\"search.result.term.missing\":\"Missing\",\"select.version\":\"Select version\"},\"version\":null}</script>\n \n \n <script src=\"../assets/javascripts/bundle.6e5f0216.min.js\"></script>\n \n \n </body>\n</html>",
|
|
3
|
+
"hash": 3035558862330797345
|
|
4
|
+
}
|