@esoteric-logic/praxis-harness 1.2.0 → 2.0.0
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.
- package/README.md +14 -34
- package/base/CLAUDE.md +7 -11
- package/base/commands/context-reset.md +0 -1
- package/base/commands/debug.md +4 -4
- package/base/commands/discover.md +2 -2
- package/base/commands/discuss.md +94 -0
- package/base/commands/{gsd-execute.md → execute.md} +7 -11
- package/base/commands/fast.md +26 -0
- package/base/commands/kit.md +2 -2
- package/base/commands/next.md +31 -0
- package/base/commands/plan.md +38 -10
- package/base/commands/quick.md +40 -0
- package/base/commands/review.md +2 -2
- package/base/commands/ship.md +1 -1
- package/base/commands/simplify.md +15 -0
- package/base/commands/spec.md +13 -7
- package/base/commands/standup.md +0 -10
- package/base/commands/{gsd-verify.md → verify.md} +7 -6
- package/base/hooks/vault-checkpoint.sh +18 -0
- package/base/rules/context-management.md +3 -50
- package/base/rules/execution-loop.md +41 -61
- package/base/rules/vault.md +1 -1
- package/base/skills/code-simplifier/SKILL.md +4 -4
- package/base/skills/pre-commit-lint/SKILL.md +7 -4
- package/base/skills/scaffold-exist/SKILL.md +9 -8
- package/base/skills/scaffold-new/SKILL.md +1 -1
- package/base/skills/scaffold-new/references/claude-progress-template.json +0 -10
- package/base/skills/scaffold-new/references/repo-CLAUDE-md-template.md +0 -1
- package/base/skills/session-retro/SKILL.md +3 -19
- package/base/skills/subagent-review/SKILL.md +6 -5
- package/base/skills/verify-app/SKILL.md +5 -5
- package/kits/infrastructure/KIT.md +2 -15
- package/kits/web-designer/KIT.md +4 -17
- package/package.json +2 -3
- package/templates/claude-progress.json +0 -10
- package/base/commands/gsd-discuss.md +0 -53
- package/base/commands/ralph.md +0 -110
- package/base/skills/prd-writer/SKILL.md +0 -108
- package/base/skills/prd-writer/references/prd-template.md +0 -22
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ A layered harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-co
|
|
|
8
8
|
|
|
9
9
|
Praxis gives Claude Code a three-layer operating system:
|
|
10
10
|
|
|
11
|
-
**Universal base** — always loaded.
|
|
11
|
+
**Universal base** — always loaded. Praxis structures work (discuss → plan → execute → verify → simplify → ship). Built-in quality enforcement (debugging, code review, simplification).
|
|
12
12
|
|
|
13
13
|
**AI-Kits** — activated on demand via `/kit:<name>`. Each kit bundles domain-specific rules, skills, MCP servers, and slash commands. Activate the web-designer kit and your components get design system enforcement, accessibility auditing, and production lint. Deactivate with `/kit:off`.
|
|
14
14
|
|
|
@@ -31,32 +31,23 @@ npx praxis-harness uninstall # remove Praxis-owned files from ~/.claude/
|
|
|
31
31
|
|
|
32
32
|
## After install
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
/plugin marketplace add obra/superpowers-marketplace
|
|
38
|
-
/plugin install superpowers@superpowers-marketplace
|
|
39
|
-
/plugin marketplace add snarktank/ralph
|
|
40
|
-
/plugin install ralph-skills@ralph-marketplace
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Verify with `/help` — you should see GSD, Superpowers, and Praxis commands.
|
|
34
|
+
Verify with `/help` — you should see Praxis commands (`/discuss`, `/execute`, `/verify`, `/plan`, `/ship`, `/kit:*`).
|
|
44
35
|
|
|
45
36
|
## Workflow
|
|
46
37
|
|
|
47
|
-
The standard
|
|
38
|
+
The standard Praxis workflow for feature development:
|
|
48
39
|
|
|
49
40
|
```
|
|
50
41
|
/standup → orient (reads status.md, surfaces stale state)
|
|
51
|
-
/
|
|
42
|
+
/discuss → frame the problem (conversational, scope guard)
|
|
52
43
|
/discover → research options with confidence levels (before /spec)
|
|
53
|
-
/
|
|
54
|
-
/
|
|
55
|
-
/
|
|
44
|
+
/plan → plan milestones (with dependency ordering + boundaries)
|
|
45
|
+
/execute → implement one milestone at a time (file-group isolation)
|
|
46
|
+
/verify → validate (test/lint/typecheck/build, self-review, UNIFY)
|
|
56
47
|
/session-retro → capture learnings, update vault
|
|
57
48
|
```
|
|
58
49
|
|
|
59
|
-
For pure bugfixes: `/debug` (test-first debugging, skips
|
|
50
|
+
For pure bugfixes: `/debug` (test-first debugging, skips the full loop).
|
|
60
51
|
For code review: `/review` (launches subagent review at any time).
|
|
61
52
|
For technical research: `/discover` (structured options evaluation before decisions).
|
|
62
53
|
|
|
@@ -64,10 +55,10 @@ For technical research: `/discover` (structured options evaluation before decisi
|
|
|
64
55
|
|
|
65
56
|
| Command | Purpose |
|
|
66
57
|
|---------|---------|
|
|
67
|
-
| `
|
|
68
|
-
| `
|
|
69
|
-
| `
|
|
70
|
-
|
|
58
|
+
| `discuss` | Conversational problem framing, SPEC synthesis, scope guard |
|
|
59
|
+
| `execute` | Implement one milestone with file-group isolation + boundary enforcement |
|
|
60
|
+
| `verify` | Validate milestone (test/lint/build), self-review, UNIFY phase summary |
|
|
61
|
+
|
|
71
62
|
| `plan` | Create a dated work plan with milestone dependencies + checkpoints |
|
|
72
63
|
| `spec` | Create a structured spec or ADR with conflict detection |
|
|
73
64
|
| `discover` | Structured technical discovery with confidence-rated options |
|
|
@@ -86,17 +77,6 @@ Key additions in this version:
|
|
|
86
77
|
- **context-management** — context brackets (FRESH/MODERATE/DEPLETED/CRITICAL) adapt behavior to session stage
|
|
87
78
|
- **vault** — Obsidian vault integration
|
|
88
79
|
|
|
89
|
-
## Ralph
|
|
90
|
-
|
|
91
|
-
Ralph is the autonomous execution mode for multi-story work. Use it when you have >5 independent stories that don't require human checkpoints.
|
|
92
|
-
|
|
93
|
-
1. Write a PRD using `/prd-writer` (structured story format with file groups and estimates)
|
|
94
|
-
2. Run `/ralph` to begin autonomous execution
|
|
95
|
-
3. Each story runs in a fresh context with its own verify cycle
|
|
96
|
-
4. Blocked stories are recorded and skipped — reported at run end
|
|
97
|
-
|
|
98
|
-
Ralph is not a replacement for GSD — it runs GSD internally per story. Use GSD for work that needs cross-story reasoning or architectural decisions.
|
|
99
|
-
|
|
100
80
|
## Architecture
|
|
101
81
|
|
|
102
82
|
```
|
|
@@ -108,7 +88,7 @@ Ralph is not a replacement for GSD — it runs GSD internally per story. Use GSD
|
|
|
108
88
|
│ Skills chain + domain rules + MCPs │
|
|
109
89
|
├────────────────────────────────────────┤
|
|
110
90
|
│ Universal base (always loaded) │
|
|
111
|
-
│
|
|
91
|
+
│ Praxis workflow engine │
|
|
112
92
|
├────────────────────────────────────────┤
|
|
113
93
|
│ Vault layer │
|
|
114
94
|
│ Obsidian │
|
|
@@ -118,7 +98,7 @@ Ralph is not a replacement for GSD — it runs GSD internally per story. Use GSD
|
|
|
118
98
|
└────────────────────────────────────────┘
|
|
119
99
|
```
|
|
120
100
|
|
|
121
|
-
**Workflow hierarchy:**
|
|
101
|
+
**Workflow hierarchy:** Praxis owns the outer loop (discuss → plan → execute → verify → simplify → ship). Kits inject domain context into this workflow — they don't replace it.
|
|
122
102
|
|
|
123
103
|
## Available kits
|
|
124
104
|
|
package/base/CLAUDE.md
CHANGED
|
@@ -13,14 +13,11 @@ You are a senior engineering partner. Think before you build. Verify before you
|
|
|
13
13
|
- Every option presented MUST include a recommendation and why.
|
|
14
14
|
|
|
15
15
|
## Workflow Hierarchy
|
|
16
|
-
- **
|
|
17
|
-
Always start feature work with
|
|
18
|
-
- **Superpowers** enforces quality inside execution (TDD, review, debug).
|
|
19
|
-
Its skills auto-activate — never invoke them alongside GSD phases.
|
|
20
|
-
- **Ralph** runs autonomous multi-story iterations from the terminal.
|
|
16
|
+
- **Praxis** owns the outer loop: discuss → plan → execute → verify → simplify → ship.
|
|
17
|
+
Always start feature work with `/discuss` or `/next`.
|
|
21
18
|
- **Kits** inject domain context into this workflow — they don't replace it.
|
|
22
|
-
-
|
|
23
|
-
-
|
|
19
|
+
- Pure bugfixes: skip the full loop, use `/debug` directly.
|
|
20
|
+
- Trivial changes (typos, config): use `/fast` to skip planning.
|
|
24
21
|
- After every implementation: run `/simplify` to clean up code before verify.
|
|
25
22
|
- Use `/verify-app` for end-to-end checks, `/ship` when ready to commit+push+PR.
|
|
26
23
|
|
|
@@ -40,7 +37,7 @@ permanent institutional memory. Don't wait for session-retro — fix the rule im
|
|
|
40
37
|
## Non-Negotiables (fire every session)
|
|
41
38
|
|
|
42
39
|
**Before any non-trivial task:**
|
|
43
|
-
-
|
|
40
|
+
- PROBLEM / DELIVERABLE / ACCEPTANCE / BOUNDARIES — answer all four before starting.
|
|
44
41
|
|
|
45
42
|
**Stop-and-Fix Rule:** Validation fails → fix now → re-validate → proceed.
|
|
46
43
|
If cannot fix in 3 attempts: STOP. Report What / So What / Now What.
|
|
@@ -92,8 +89,7 @@ Missing servers are non-blocking — features degrade gracefully.
|
|
|
92
89
|
|
|
93
90
|
## After Compaction — Bootstrap
|
|
94
91
|
1. Read project CLAUDE.md (always first)
|
|
95
|
-
2.
|
|
96
|
-
3. Active task? → read active plan current milestone only
|
|
92
|
+
2. Active task? → read active plan current milestone only
|
|
97
93
|
No active task? → read `status.md`
|
|
98
94
|
4. Load rules only for what the current task touches:
|
|
99
95
|
- Terraform/Azure → `~/.claude/rules/terraform.md`
|
|
@@ -137,7 +133,7 @@ Kit manifests live in `~/.claude/kits/<name>/KIT.md`.
|
|
|
137
133
|
| `~/.claude/rules/communication.md` | Client writing, no AI attribution |
|
|
138
134
|
| `~/.claude/rules/vault.md` | Second brain integration — Obsidian vault |
|
|
139
135
|
| `~/.claude/rules/architecture.md` | ADR format, What/So What/Now What, risk docs |
|
|
140
|
-
| `~/.claude/rules/context-management.md` |
|
|
136
|
+
| `~/.claude/rules/context-management.md` | Context anti-rot, context reset protocol |
|
|
141
137
|
|
|
142
138
|
### Scoped — load only when paths match
|
|
143
139
|
| File | Loads when |
|
|
@@ -52,7 +52,6 @@ Update `status.md` with current What / So What / Now What:
|
|
|
52
52
|
**Step 5 — Update claude-progress.json**
|
|
53
53
|
Write a session snapshot to `claude-progress.json`:
|
|
54
54
|
- Update `last_session` with current date and a note about the context reset
|
|
55
|
-
- If Ralph is active: preserve `ralph_state` exactly as-is
|
|
56
55
|
|
|
57
56
|
**Step 6 — Instruct the user**
|
|
58
57
|
Print:
|
package/base/commands/debug.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Structured test-first debugging. Reproduce the bug, write a failing test, isolate root cause, fix, verify. Use for pure bugfixes — skips
|
|
2
|
+
description: Structured test-first debugging. Reproduce the bug, write a failing test, isolate root cause, fix, verify. Use for pure bugfixes — skips the full loop.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
You are running structured debugging.
|
|
@@ -58,6 +58,6 @@ Before touching any implementation code:
|
|
|
58
58
|
**Rules:**
|
|
59
59
|
- Never fix without first reproducing.
|
|
60
60
|
- Never say "fixed" without showing the test passing.
|
|
61
|
-
- Skips
|
|
62
|
-
- If the "bug" is actually a feature gap: redirect to `/
|
|
63
|
-
- If the fix touches >5 files: it is not a bugfix. Use
|
|
61
|
+
- Skips the full loop — for pure bugfixes only.
|
|
62
|
+
- If the "bug" is actually a feature gap: redirect to `/discuss`.
|
|
63
|
+
- If the fix touches >5 files: it is not a bugfix. Use the full loop.
|
|
@@ -41,9 +41,9 @@ You are running a structured technical discovery.
|
|
|
41
41
|
---
|
|
42
42
|
```
|
|
43
43
|
- Include all options evaluated, recommendation, and confidence
|
|
44
|
-
- Report: "Discovery written. Run `/spec` to formalize as ADR, or `/
|
|
44
|
+
- Report: "Discovery written. Run `/spec` to formalize as ADR, or `/discuss` to proceed."
|
|
45
45
|
|
|
46
46
|
**Rules:**
|
|
47
47
|
- Discovery is research, not implementation. Zero code output.
|
|
48
48
|
- If the question is already answered by an existing spec: point to it instead.
|
|
49
|
-
- Fills the gap between `/
|
|
49
|
+
- Fills the gap between `/discuss` (problem framing) and `/spec` (formal decision).
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Entry point for all feature work. Conversational problem framing — listen first, then synthesize scope. Use before /plan.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are starting the discuss phase — a conversation to frame the problem before planning.
|
|
6
|
+
|
|
7
|
+
**Step 1 — Load minimal context**
|
|
8
|
+
- Read vault_path from `~/.claude/praxis.config.json`
|
|
9
|
+
- Detect project from CWD matching `local_path` in vault `_index.md`
|
|
10
|
+
- If no project detected: ask which project before continuing
|
|
11
|
+
- Read `{vault_path}/status.md` — current state and blockers
|
|
12
|
+
- If `current_plan:` is set: skim the active plan objectives only
|
|
13
|
+
- Read `~/.claude/rules/profile.md` — user context (soft-fail if unconfigured)
|
|
14
|
+
|
|
15
|
+
Do NOT load rules, kit context, or session history at this phase.
|
|
16
|
+
|
|
17
|
+
**Step 2 — Listen**
|
|
18
|
+
Ask ONE open question: "What are we working on?"
|
|
19
|
+
Wait for the user to describe the problem in their own words.
|
|
20
|
+
Do NOT present a template or form. Let them talk.
|
|
21
|
+
|
|
22
|
+
**Step 3 — Search for related work**
|
|
23
|
+
After the user describes the task, search vault for prior art:
|
|
24
|
+
Run: `obsidian search query="{topic}" limit=5`
|
|
25
|
+
If related specs, plans, or research exist: mention them briefly.
|
|
26
|
+
If nothing exists: proceed silently.
|
|
27
|
+
|
|
28
|
+
**Step 4 — Clarify gaps conversationally**
|
|
29
|
+
From the user's description, identify which of these four dimensions are unclear:
|
|
30
|
+
- **PROBLEM**: Why are we doing this? What's broken or missing?
|
|
31
|
+
- **DELIVERABLE**: What concrete thing will exist when done?
|
|
32
|
+
- **ACCEPTANCE**: What specific checks prove completion?
|
|
33
|
+
- **BOUNDARIES**: What's in scope and what's out?
|
|
34
|
+
|
|
35
|
+
Ask ONLY about what's missing or ambiguous — do not re-ask what the user already stated.
|
|
36
|
+
Frame questions naturally, not as a checklist. Examples:
|
|
37
|
+
- "What's the actual problem this solves?"
|
|
38
|
+
- "What does 'done' look like for this?"
|
|
39
|
+
- "Anything we should explicitly leave out?"
|
|
40
|
+
|
|
41
|
+
If the user's initial description covers all four: skip to Step 5.
|
|
42
|
+
|
|
43
|
+
**Step 5 — Synthesize and frame**
|
|
44
|
+
Write a SPEC block that captures the four dimensions from the conversation:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
SPEC
|
|
48
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
49
|
+
PROBLEM: {why we're doing this}
|
|
50
|
+
DELIVERABLE: {concrete output}
|
|
51
|
+
ACCEPTANCE: {checks that prove completion}
|
|
52
|
+
BOUNDARIES:
|
|
53
|
+
In: {what's in scope}
|
|
54
|
+
Out: {what's explicitly excluded}
|
|
55
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Then output a 1-paragraph problem framing (max 200 words):
|
|
59
|
+
- What exists today (from status.md / vault search)
|
|
60
|
+
- What gap or need the user described
|
|
61
|
+
- Recommendation: proceed to `/plan` or write a `/spec` first
|
|
62
|
+
|
|
63
|
+
**Step 5b — Persist to vault**
|
|
64
|
+
- Write the SPEC block to `{vault_path}/plans/{YYYY-MM-DD}_{slug}-context.md` with frontmatter:
|
|
65
|
+
```yaml
|
|
66
|
+
---
|
|
67
|
+
tags: [context, {project-slug}]
|
|
68
|
+
date: {YYYY-MM-DD}
|
|
69
|
+
source: agent
|
|
70
|
+
---
|
|
71
|
+
```
|
|
72
|
+
- Append one-line summary to `{vault_path}/notes/discussion-log.md`:
|
|
73
|
+
`{date} | {project} | {problem summary} | → /plan`
|
|
74
|
+
- If `discussion-log.md` doesn't exist: create it with a `# Discussion Log` header.
|
|
75
|
+
- The `/plan` command reads this file if the conversation SPEC block is lost to compaction.
|
|
76
|
+
|
|
77
|
+
**Step 5c — Scope guard**
|
|
78
|
+
- If the framing implies >5 milestones or >3 file groups: flag as scope explosion
|
|
79
|
+
risk and recommend splitting before `/plan`.
|
|
80
|
+
- After framing: list what is NOT being decided in this discuss phase.
|
|
81
|
+
- Never output implementation code, pseudocode, or file-level changes.
|
|
82
|
+
This phase produces a problem statement, not a solution.
|
|
83
|
+
|
|
84
|
+
**Step 6 — Handoff**
|
|
85
|
+
End with: "Run `/plan` to continue, or `/spec` if this needs a design spec first."
|
|
86
|
+
|
|
87
|
+
The SPEC block from Step 5 is the artifact that `/plan` consumes — it replaces
|
|
88
|
+
the need for `/plan` to re-ask what the task is.
|
|
89
|
+
|
|
90
|
+
**Rules:**
|
|
91
|
+
- This is a conversation, not a form. Listen first, synthesize second.
|
|
92
|
+
- Problem framing is a paragraph, not a design doc.
|
|
93
|
+
- If scope exceeds 5 milestones: recommend splitting into multiple passes.
|
|
94
|
+
- The SPEC block is the discuss→plan handoff artifact. `/plan` reads it from conversation.
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
description: Implementation phase — loads scoped context and works one milestone at a time. Use after plan is approved.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
You are executing the
|
|
5
|
+
You are executing the implementation phase.
|
|
6
6
|
|
|
7
7
|
**Step 1 — Load implementation context**
|
|
8
8
|
- Read vault_path from `~/.claude/praxis.config.json`
|
|
9
9
|
- Read `{vault_path}/status.md` → get `current_plan:`
|
|
10
|
-
- Read the active plan file
|
|
11
|
-
-
|
|
10
|
+
- Read the active plan file:
|
|
11
|
+
- `## SPEC` section → PROBLEM, DELIVERABLE, ACCEPTANCE, BOUNDARIES (the contract)
|
|
12
|
+
- Current milestone steps and acceptance criteria only (not full plan)
|
|
13
|
+
- If no active plan: STOP. Tell user to run `/discuss` first.
|
|
12
14
|
|
|
13
15
|
**Step 2 — Load scoped rules**
|
|
14
16
|
Load ONLY rules relevant to files being touched in this milestone:
|
|
@@ -45,14 +47,8 @@ When the milestone is complete:
|
|
|
45
47
|
1. Write a brief summary to the active plan file under the milestone entry
|
|
46
48
|
2. Confirm actual diff matches declared file group
|
|
47
49
|
3. Output ONE recommendation — no menu, no alternatives:
|
|
48
|
-
`Next: /
|
|
49
|
-
Example: "Next: /
|
|
50
|
-
|
|
51
|
-
**Step 5 — Ralph handoff trigger**
|
|
52
|
-
If remaining milestones >5 and all are independent (no cross-milestone reasoning):
|
|
53
|
-
- After `/gsd:verify` passes (not during Step 4), append:
|
|
54
|
-
"Also consider: /ralph — {n} independent milestones remaining"
|
|
55
|
-
- Never surface Ralph before verify completes.
|
|
50
|
+
`Next: /verify` followed by one sentence explaining why
|
|
51
|
+
Example: "Next: /verify — 3 files changed in declared group, tests and lint needed"
|
|
56
52
|
|
|
57
53
|
**Rules:**
|
|
58
54
|
- Never skip a milestone or reorder without approval.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Skip planning for trivial changes. Edit, verify, commit. Use for typos, config tweaks, single-line fixes, and other changes too small for a plan.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are running a fast task — no planning, just edit/verify/commit.
|
|
6
|
+
|
|
7
|
+
**Step 1 — Understand the change**
|
|
8
|
+
The user describes the change inline (e.g., `/fast fix typo in README`).
|
|
9
|
+
If no description provided: ask "What's the change?"
|
|
10
|
+
|
|
11
|
+
**Step 2 — Make the edit**
|
|
12
|
+
Apply the change directly. No SPEC, no plan, no milestones.
|
|
13
|
+
Keep the diff minimal — if the change touches >3 files, stop and suggest `/quick` instead.
|
|
14
|
+
|
|
15
|
+
**Step 3 — Verify**
|
|
16
|
+
Run lint and test commands from project CLAUDE.md `## Commands` section.
|
|
17
|
+
Show output. If failing: fix immediately.
|
|
18
|
+
|
|
19
|
+
**Step 4 — Commit**
|
|
20
|
+
On pass: commit with conventional commit format.
|
|
21
|
+
No vault writes, no status.md update, no plan file.
|
|
22
|
+
|
|
23
|
+
**Rules:**
|
|
24
|
+
- This is for genuinely trivial changes. If you need to think about the approach, use `/quick`.
|
|
25
|
+
- Maximum 3 files changed. Beyond that: escalate to `/quick` or `/discuss`.
|
|
26
|
+
- Pre-commit checks (secrets, identity) still apply — never skip those.
|
package/base/commands/kit.md
CHANGED
|
@@ -18,7 +18,7 @@ If `~/.claude/praxis.config.json` has `installed_kits`, cross-reference to show
|
|
|
18
18
|
|
|
19
19
|
1. Check if `~/.claude/kits/<name>/KIT.md` exists. If not: report "Kit not found. Run /kit:list."
|
|
20
20
|
2. Read `KIT.md` manifest to get skills_chain, rules, and mcp_servers.
|
|
21
|
-
3. **Idempotency check**: If this kit is already active in the current session, report "Kit already active" and do nothing.
|
|
21
|
+
3. **Idempotency check**: If this kit is already active in the current session, report "Kit already active" and do nothing.
|
|
22
22
|
4. Print the skills chain:
|
|
23
23
|
```
|
|
24
24
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
@@ -44,7 +44,7 @@ If `~/.claude/praxis.config.json` has `installed_kits`, cross-reference to show
|
|
|
44
44
|
1. Report which kit is being deactivated.
|
|
45
45
|
2. Unload kit-specific rules from the active context.
|
|
46
46
|
3. Note: MCP servers persist globally — they are not unregistered on deactivation.
|
|
47
|
-
4. Print: `✓ Kit deactivated.
|
|
47
|
+
4. Print: `✓ Kit deactivated. Praxis base workflow still active.`
|
|
48
48
|
|
|
49
49
|
## /kit:update <name>
|
|
50
50
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Auto-advance to the next workflow phase. Reads status.md loop_position and plan state to determine what comes next. Use anytime to keep moving.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are advancing the Praxis workflow to the next phase.
|
|
6
|
+
|
|
7
|
+
**Step 1 — Read current state**
|
|
8
|
+
- Read vault_path from `~/.claude/praxis.config.json`
|
|
9
|
+
- Read `{vault_path}/status.md` → get `loop_position` and `current_plan`
|
|
10
|
+
- If `current_plan` is set: read the plan file — check milestone completion status
|
|
11
|
+
|
|
12
|
+
**Step 2 — Determine next action**
|
|
13
|
+
|
|
14
|
+
| loop_position | Plan state | Action |
|
|
15
|
+
|---------------|------------|--------|
|
|
16
|
+
| IDLE | No plan | Ask "What are we working on?" — behave like `/discuss` |
|
|
17
|
+
| IDLE | Plan exists, incomplete milestones | "Existing plan has work remaining. Resume?" → `/execute` |
|
|
18
|
+
| IDLE | Plan exists, all milestones done | "Plan complete. Run `/ship` to commit+push+PR?" |
|
|
19
|
+
| DISCUSS | — | "Discuss complete. Run `/plan` to create the work plan." → invoke `/plan` |
|
|
20
|
+
| PLAN | — | "Plan ready. Run `/execute` to start implementation." → invoke `/execute` |
|
|
21
|
+
| EXECUTE | — | "Milestone complete. Run `/verify` to validate." → invoke `/verify` |
|
|
22
|
+
| VERIFY | Last verify passed | "Verified. Run `/simplify` to clean up, then `/ship`." → invoke `/simplify` |
|
|
23
|
+
| VERIFY | Last verify failed | "Verification failed. Fix the issue, then run `/verify` again." |
|
|
24
|
+
|
|
25
|
+
**Step 3 — Update loop_position**
|
|
26
|
+
After invoking the next command, update `status.md` → `loop_position` to reflect the new phase.
|
|
27
|
+
|
|
28
|
+
**Rules:**
|
|
29
|
+
- Always show one clear next action — no menus.
|
|
30
|
+
- If state is ambiguous (e.g., status.md is stale): read the plan file to determine actual progress.
|
|
31
|
+
- This command is a convenience — it never skips phases or bypasses verification.
|
package/base/commands/plan.md
CHANGED
|
@@ -4,19 +4,36 @@ description: Create a dated work plan for the current project. Writes to vault p
|
|
|
4
4
|
|
|
5
5
|
You are creating a work plan for the current project.
|
|
6
6
|
|
|
7
|
-
**Step 1 — Detect project**
|
|
7
|
+
**Step 1 — Detect project and read SPEC**
|
|
8
8
|
- Read vault_path from `~/.claude/praxis.config.json`
|
|
9
9
|
- Match CWD to `local_path` in vault `_index.md`
|
|
10
10
|
- Read `status.md` — check if `current_plan:` is already set
|
|
11
11
|
- If current_plan is set: warn. Ask if starting a new plan or updating the existing one.
|
|
12
12
|
|
|
13
|
-
**Step
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
**Step 1b — Consume discuss output**
|
|
14
|
+
Check the conversation for a SPEC block from `/discuss`:
|
|
15
|
+
```
|
|
16
|
+
SPEC
|
|
17
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
18
|
+
PROBLEM: ...
|
|
19
|
+
DELIVERABLE: ...
|
|
20
|
+
ACCEPTANCE: ...
|
|
21
|
+
BOUNDARIES:
|
|
22
|
+
In: ...
|
|
23
|
+
Out: ...
|
|
24
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- If a SPEC block exists in conversation: use it as the plan's objective, acceptance criteria, and boundaries.
|
|
28
|
+
Do NOT re-ask what the task is.
|
|
29
|
+
- If no SPEC block in conversation: check vault for `{vault_path}/plans/*-context.md` (most recent).
|
|
30
|
+
If found and recent (today): read it and use as the SPEC source.
|
|
31
|
+
- If no SPEC block found anywhere (plan invoked directly): ask in a single message:
|
|
32
|
+
- What is the task or feature this plan covers?
|
|
33
|
+
- What is the target completion date (or "open" if no deadline)?
|
|
34
|
+
- Any known blockers or dependencies upfront?
|
|
18
35
|
|
|
19
|
-
**Step
|
|
36
|
+
**Step 2 — Build the plan**
|
|
20
37
|
|
|
21
38
|
```markdown
|
|
22
39
|
---
|
|
@@ -32,6 +49,14 @@ source: agent
|
|
|
32
49
|
## Objective
|
|
33
50
|
One sentence.
|
|
34
51
|
|
|
52
|
+
## SPEC
|
|
53
|
+
PROBLEM: {from SPEC block or user input}
|
|
54
|
+
DELIVERABLE: {from SPEC block or user input}
|
|
55
|
+
ACCEPTANCE: {from SPEC block or user input}
|
|
56
|
+
BOUNDARIES:
|
|
57
|
+
In: {from SPEC block or user input}
|
|
58
|
+
Out: {from SPEC block or user input}
|
|
59
|
+
|
|
35
60
|
## Context
|
|
36
61
|
Why this work is happening now.
|
|
37
62
|
|
|
@@ -66,7 +91,7 @@ Checkpoint types:
|
|
|
66
91
|
- `checkpoint: human-verify` — user must validate output before proceeding
|
|
67
92
|
- No annotation = autonomous (default)
|
|
68
93
|
|
|
69
|
-
**Step
|
|
94
|
+
**Step 2b — Dependency and boundary validation**
|
|
70
95
|
After building the milestone list:
|
|
71
96
|
- Scan for circular dependencies (topological sort). If cycle detected:
|
|
72
97
|
report the cycle and ask user to break it.
|
|
@@ -79,9 +104,9 @@ After building the milestone list:
|
|
|
79
104
|
- Validate checkpoints: milestones with architectural decisions or user-facing output
|
|
80
105
|
should be annotated as `checkpoint: decision` or `checkpoint: human-verify`.
|
|
81
106
|
|
|
82
|
-
**Step
|
|
107
|
+
**Step 3 — Write and wire**
|
|
83
108
|
- Write to: `{vault_path}/plans/{YYYY-MM-DD}_{kebab-title}.md`
|
|
84
|
-
- Update `status.md`: set `current_plan:`, update `last_updated`, update `## Now What`
|
|
109
|
+
- Update `status.md`: set `current_plan:`, update `last_updated`, set `loop_position: PLAN`, update `## Now What`
|
|
85
110
|
- Update `claude-progress.json` milestones array
|
|
86
111
|
- Report:
|
|
87
112
|
```
|
|
@@ -89,3 +114,6 @@ After building the milestone list:
|
|
|
89
114
|
✓ status.md: current_plan updated
|
|
90
115
|
✓ progress.json: milestone added
|
|
91
116
|
```
|
|
117
|
+
|
|
118
|
+
The plan file now contains the SPEC — `/execute` reads it directly.
|
|
119
|
+
No information is lost at the discuss→plan→execute boundary.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Ad-hoc task with full quality guarantees in a single compressed flow. Use for tasks that need planning but aren't worth the full loop.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are running a quick task — full guarantees, compressed flow.
|
|
6
|
+
|
|
7
|
+
**Step 1 — Capture the task**
|
|
8
|
+
The user describes the task inline with the command (e.g., `/quick add error handling to the API route`).
|
|
9
|
+
If no description provided: ask "What's the task?"
|
|
10
|
+
|
|
11
|
+
**Step 2 — Inline SPEC**
|
|
12
|
+
Synthesize from the description (do not ask the user to fill out a form):
|
|
13
|
+
- PROBLEM: why this needs doing
|
|
14
|
+
- DELIVERABLE: what will change
|
|
15
|
+
- ACCEPTANCE: how to verify
|
|
16
|
+
- BOUNDARIES: what's out of scope
|
|
17
|
+
|
|
18
|
+
Output the SPEC block, then proceed immediately — no separate discuss or plan phase.
|
|
19
|
+
|
|
20
|
+
**Step 3 — Inline plan**
|
|
21
|
+
Generate a 1-3 milestone plan. Do NOT write to vault — keep it in conversation only.
|
|
22
|
+
Each milestone: description + files + verification command.
|
|
23
|
+
|
|
24
|
+
**Step 4 — Execute**
|
|
25
|
+
Implement each milestone in sequence. Follow the same rules as `/execute`:
|
|
26
|
+
- Declare file group before editing
|
|
27
|
+
- One milestone at a time
|
|
28
|
+
- No scope expansion without approval
|
|
29
|
+
|
|
30
|
+
**Step 5 — Verify**
|
|
31
|
+
After all milestones: run lint + test. Show output.
|
|
32
|
+
If failing: fix immediately (stop-and-fix rule applies).
|
|
33
|
+
|
|
34
|
+
**Step 6 — Commit**
|
|
35
|
+
On pass: commit with conventional commit format. Update `status.md` briefly.
|
|
36
|
+
|
|
37
|
+
**Rules:**
|
|
38
|
+
- This is a compressed full loop, not a shortcut that skips verification.
|
|
39
|
+
- No vault plan file written — this is for tasks that don't need persistent tracking.
|
|
40
|
+
- If the task turns out to need >3 milestones: stop and suggest `/discuss` instead.
|
package/base/commands/review.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Manual code review trigger. Launches a subagent to review a diff for bugs, security, and convention violations. Use independently of
|
|
2
|
+
description: Manual code review trigger. Launches a subagent to review a diff for bugs, security, and convention violations. Use independently of Praxis phases.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
You are running a manual code review.
|
|
@@ -75,7 +75,7 @@ CLEAN
|
|
|
75
75
|
- Vault indexing is automatic.
|
|
76
76
|
|
|
77
77
|
**Rules:**
|
|
78
|
-
- Works independently of
|
|
78
|
+
- Works independently of Praxis phases.
|
|
79
79
|
- Never skip the subagent — review must come from fresh context.
|
|
80
80
|
- Subagent receives zero conversation history.
|
|
81
81
|
- If no project CLAUDE.md exists: proceed with base rules only.
|
package/base/commands/ship.md
CHANGED
|
@@ -71,4 +71,4 @@ Checks: secrets ✓ lint ✓ types ✓ tests ✓
|
|
|
71
71
|
- Never skip pre-flight checks. They are the safety net.
|
|
72
72
|
- Never force-push without explicit user approval.
|
|
73
73
|
- If the diff touches >20 files: warn about PR size and suggest splitting.
|
|
74
|
-
- This command is the end of a
|
|
74
|
+
- This command is the end of a Praxis cycle — run after `/verify` passes.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Post-implementation code cleanup. Launches a subagent to find and
|
|
3
|
+
simplify over-abstraction, dead paths, verbosity, and missed idioms in the
|
|
4
|
+
recent diff. Run after implementation, before /verify-app or /ship.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the code-simplifier skill on the current project's recent changes.
|
|
8
|
+
|
|
9
|
+
Accept an optional scope argument:
|
|
10
|
+
- No argument → `git diff HEAD~1` (default)
|
|
11
|
+
- `staged` → staged changes only
|
|
12
|
+
- `HEAD~N` or SHA → specific range
|
|
13
|
+
|
|
14
|
+
The code-simplifier skill handles all phases: scope detection, subagent launch,
|
|
15
|
+
finding presentation, user-approved edits, and optional [LEARN:simplify] capture.
|
package/base/commands/spec.md
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Create a structured spec or ADR for the current project. Writes
|
|
2
|
+
description: Create a structured spec or ADR for the current project. Writes to vault specs/ directory. Use for architecture decisions, technical designs, and risk documentation — NOT for task framing (use /discuss for that).
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
You are creating a spec for the current project.
|
|
6
6
|
|
|
7
|
+
**When to use /spec vs /discuss:**
|
|
8
|
+
- `/discuss` frames a task — "what are we building and why?" Produces a SPEC block for `/plan`.
|
|
9
|
+
- `/spec` documents a decision or design — "what did we decide and what are the consequences?"
|
|
10
|
+
Use for ADRs, technical specs, and risk entries that outlive the current task.
|
|
11
|
+
|
|
7
12
|
**Step 1 — Identify project context**
|
|
8
13
|
- Read vault_path from `~/.claude/praxis.config.json`
|
|
9
14
|
- Detect project from CWD matching `local_path` in vault `_index.md`
|
|
@@ -13,7 +18,7 @@ You are creating a spec for the current project.
|
|
|
13
18
|
**Step 2 — Gather spec details**
|
|
14
19
|
Ask the following in a single message:
|
|
15
20
|
- What is this spec for? (one sentence)
|
|
16
|
-
- Type: ADR (architecture decision) /
|
|
21
|
+
- Type: ADR (architecture decision) / RISK (risk register entry) / SPEC (technical spec)
|
|
17
22
|
- Is there an existing related spec in `specs/`? (run `obsidian search query="{topic}" limit=3` first)
|
|
18
23
|
|
|
19
24
|
**Step 2b — Cross-spec conflict check**
|
|
@@ -32,11 +37,12 @@ After the vault search from Step 2, check for conflicts with accepted ADRs:
|
|
|
32
37
|
- Never silently create a spec that contradicts an accepted ADR.
|
|
33
38
|
- If no conflicts: proceed silently.
|
|
34
39
|
|
|
35
|
-
**Step 3 —
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
**Step 3 — Capture the decision or design**
|
|
41
|
+
For ADR: What was decided, what context drove it, what alternatives were considered.
|
|
42
|
+
For SPEC: What is being built, what constraints apply, what the design looks like.
|
|
43
|
+
For RISK: What the risk is, what triggers it, what mitigates it.
|
|
44
|
+
|
|
45
|
+
Synthesize from the conversation — do not present a blank form to fill out.
|
|
40
46
|
|
|
41
47
|
**Step 4 — Write the spec**
|
|
42
48
|
|
package/base/commands/standup.md
CHANGED
|
@@ -7,16 +7,10 @@ You are generating a standup summary for the current project.
|
|
|
7
7
|
**Step 1 — Load project state**
|
|
8
8
|
Read vault_path from `~/.claude/praxis.config.json`. Then read in order (detect from CWD — do not ask):
|
|
9
9
|
1. `{vault_path}/_index.md` → project name, stack, goals
|
|
10
|
-
1b. `{vault_path}/claude-progress.json` → check `ralph_state`
|
|
11
10
|
2. `{vault_path}/status.md` → current_plan, last_updated, What/So What/Now What
|
|
12
11
|
3. `{vault_path}/tasks.md` → Active, Blocked sections
|
|
13
12
|
4. If `current_plan` is set → read `{vault_path}/plans/{current_plan}` → Milestones, Blockers
|
|
14
13
|
|
|
15
|
-
**Ralph state check:**
|
|
16
|
-
- If `.ralph_state.current_story` is set: note "Ralph iteration active" for output
|
|
17
|
-
- Use `completed_stories` count and `last_iteration` alongside `status.md`
|
|
18
|
-
- If `status.md` last_updated is stale but `ralph_state.last_iteration` is recent: suppress stale warning
|
|
19
|
-
|
|
20
14
|
**Step 2 — Output standup format**
|
|
21
15
|
|
|
22
16
|
```
|
|
@@ -30,10 +24,6 @@ Read vault_path from `~/.claude/praxis.config.json`. Then read in order (detect
|
|
|
30
24
|
IN PROGRESS
|
|
31
25
|
{active plan name} — {next milestone}
|
|
32
26
|
|
|
33
|
-
RALPH STATUS
|
|
34
|
-
{current story if active, or "No Ralph iteration running"}
|
|
35
|
-
Completed: {n} stories | Last: {last_iteration}
|
|
36
|
-
|
|
37
27
|
BLOCKED
|
|
38
28
|
{blocker with owner if known}
|
|
39
29
|
|