devrites 1.19.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/.claude-plugin/marketplace.json +24 -0
- package/.claude-plugin/plugin.json +43 -0
- package/CHANGELOG.md +391 -0
- package/LICENSE +56 -0
- package/NOTICE.md +18 -0
- package/README.md +582 -0
- package/SECURITY.md +193 -0
- package/bin/devrites.mjs +100 -0
- package/docs/architecture.md +272 -0
- package/docs/cli-mcp.md +57 -0
- package/docs/command-map.md +143 -0
- package/docs/flow.md +360 -0
- package/docs/release.md +29 -0
- package/docs/skills.md +214 -0
- package/docs/usage.md +325 -0
- package/install.sh +359 -0
- package/mcp/devrites-mcp.mjs +103 -0
- package/pack/.claude/agents/devrites-code-reviewer.md +50 -0
- package/pack/.claude/agents/devrites-doubt-reviewer.md +55 -0
- package/pack/.claude/agents/devrites-frontend-reviewer.md +52 -0
- package/pack/.claude/agents/devrites-performance-reviewer.md +47 -0
- package/pack/.claude/agents/devrites-plan-reviewer.md +79 -0
- package/pack/.claude/agents/devrites-security-auditor.md +53 -0
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +75 -0
- package/pack/.claude/agents/devrites-slice-wright.md +181 -0
- package/pack/.claude/agents/devrites-spec-reviewer.md +72 -0
- package/pack/.claude/agents/devrites-strategy-reviewer.md +62 -0
- package/pack/.claude/agents/devrites-test-analyst.md +47 -0
- package/pack/.claude/hooks/devrites-a1-guard.sh +81 -0
- package/pack/.claude/hooks/devrites-allow.sh +44 -0
- package/pack/.claude/hooks/devrites-cursor.sh +28 -0
- package/pack/.claude/hooks/devrites-orient.sh +53 -0
- package/pack/.claude/hooks/devrites-redwatch.sh +39 -0
- package/pack/.claude/hooks/devrites-refresh-indexes.sh +127 -0
- package/pack/.claude/hooks/devrites-reviewer-readonly.sh +28 -0
- package/pack/.claude/hooks/devrites-statusline.sh +18 -0
- package/pack/.claude/hooks/devrites-stop-gate.sh +45 -0
- package/pack/.claude/hooks/devrites-wright-scope.sh +35 -0
- package/pack/.claude/hooks/hooks.json +52 -0
- package/pack/.claude/rules/README.md +48 -0
- package/pack/.claude/rules/afk-hitl.md +245 -0
- package/pack/.claude/rules/agents.md +98 -0
- package/pack/.claude/rules/anti-patterns.md +48 -0
- package/pack/.claude/rules/code-review.md +38 -0
- package/pack/.claude/rules/coding-style.md +55 -0
- package/pack/.claude/rules/context-hygiene.md +97 -0
- package/pack/.claude/rules/core.md +119 -0
- package/pack/.claude/rules/development-workflow.md +40 -0
- package/pack/.claude/rules/documentation.md +27 -0
- package/pack/.claude/rules/error-handling.md +33 -0
- package/pack/.claude/rules/git-workflow.md +35 -0
- package/pack/.claude/rules/hooks.md +38 -0
- package/pack/.claude/rules/patterns.md +45 -0
- package/pack/.claude/rules/performance.md +27 -0
- package/pack/.claude/rules/prose-style.md +101 -0
- package/pack/.claude/rules/security.md +63 -0
- package/pack/.claude/rules/testing.md +88 -0
- package/pack/.claude/rules/tooling.md +72 -0
- package/pack/.claude/settings.json +53 -0
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +45 -0
- package/pack/.claude/skills/devrites-audit/SKILL.md +73 -0
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +38 -0
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +50 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +47 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +31 -0
- package/pack/.claude/skills/devrites-doubt/SKILL.md +75 -0
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +96 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +59 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +215 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +60 -0
- package/pack/.claude/skills/devrites-interview/SKILL.md +81 -0
- package/pack/.claude/skills/devrites-lib/SKILL.md +76 -0
- package/pack/.claude/skills/devrites-lib/scripts/analyze.sh +78 -0
- package/pack/.claude/skills/devrites-lib/scripts/check-acceptance.sh +75 -0
- package/pack/.claude/skills/devrites-lib/scripts/close-out.sh +47 -0
- package/pack/.claude/skills/devrites-lib/scripts/conventions.py +273 -0
- package/pack/.claude/skills/devrites-lib/scripts/coverage.sh +51 -0
- package/pack/.claude/skills/devrites-lib/scripts/devrites.sh +69 -0
- package/pack/.claude/skills/devrites-lib/scripts/doctor.sh +92 -0
- package/pack/.claude/skills/devrites-lib/scripts/evidence-fresh.sh +63 -0
- package/pack/.claude/skills/devrites-lib/scripts/footprint.sh +45 -0
- package/pack/.claude/skills/devrites-lib/scripts/learnings.sh +74 -0
- package/pack/.claude/skills/devrites-lib/scripts/mutation-gate.sh +52 -0
- package/pack/.claude/skills/devrites-lib/scripts/package-existence.sh +68 -0
- package/pack/.claude/skills/devrites-lib/scripts/preamble.sh +76 -0
- package/pack/.claude/skills/devrites-lib/scripts/progress.sh +103 -0
- package/pack/.claude/skills/devrites-lib/scripts/readiness.sh +62 -0
- package/pack/.claude/skills/devrites-lib/scripts/reconcile.sh +123 -0
- package/pack/.claude/skills/devrites-lib/scripts/resolve.sh +279 -0
- package/pack/.claude/skills/devrites-lib/scripts/stuck.sh +67 -0
- package/pack/.claude/skills/devrites-lib/scripts/test-integrity.sh +87 -0
- package/pack/.claude/skills/devrites-lib/scripts/tick-afk.sh +52 -0
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +105 -0
- package/pack/.claude/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
- package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +88 -0
- package/pack/.claude/skills/devrites-prose-craft/reference/structures.md +134 -0
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +54 -0
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +36 -0
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +121 -0
- package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +93 -0
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/.claude/skills/rite/SKILL.md +135 -0
- package/pack/.claude/skills/rite/reference/menu.md +32 -0
- package/pack/.claude/skills/rite-adopt/SKILL.md +83 -0
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +58 -0
- package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +96 -0
- package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +35 -0
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +54 -0
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
- package/pack/.claude/skills/rite-build/SKILL.md +261 -0
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +25 -0
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +149 -0
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +32 -0
- package/pack/.claude/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +38 -0
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +43 -0
- package/pack/.claude/skills/rite-build/reference/tdd.md +26 -0
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +115 -0
- package/pack/.claude/skills/rite-define/SKILL.md +157 -0
- package/pack/.claude/skills/rite-define/reference/anti-patterns.md +25 -0
- package/pack/.claude/skills/rite-define/reference/gates.md +152 -0
- package/pack/.claude/skills/rite-define/reference/plan-template.md +65 -0
- package/pack/.claude/skills/rite-doctor/SKILL.md +50 -0
- package/pack/.claude/skills/rite-frame/SKILL.md +116 -0
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +68 -0
- package/pack/.claude/skills/rite-handoff/SKILL.md +95 -0
- package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +34 -0
- package/pack/.claude/skills/rite-learn/SKILL.md +82 -0
- package/pack/.claude/skills/rite-plan/SKILL.md +82 -0
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +24 -0
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +33 -0
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +42 -0
- package/pack/.claude/skills/rite-plan/reference/slicing.md +52 -0
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +34 -0
- package/pack/.claude/skills/rite-polish/SKILL.md +90 -0
- package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +177 -0
- package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +27 -0
- package/pack/.claude/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/.claude/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
- package/pack/.claude/skills/rite-polish/reference/code.md +85 -0
- package/pack/.claude/skills/rite-polish/reference/design-system-discovery.md +35 -0
- package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/.claude/skills/rite-polish/reference/ui.md +136 -0
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +43 -0
- package/pack/.claude/skills/rite-prototype/SKILL.md +87 -0
- package/pack/.claude/skills/rite-prove/SKILL.md +120 -0
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +26 -0
- package/pack/.claude/skills/rite-prove/reference/failure-triage.md +25 -0
- package/pack/.claude/skills/rite-prove/reference/proof-ladder.md +26 -0
- package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/.claude/skills/rite-quick/SKILL.md +81 -0
- package/pack/.claude/skills/rite-resolve/SKILL.md +113 -0
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +114 -0
- package/pack/.claude/skills/rite-review/SKILL.md +170 -0
- package/pack/.claude/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/.claude/skills/rite-review/reference/cognitive-load.md +90 -0
- package/pack/.claude/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/.claude/skills/rite-review/reference/five-axis-review.md +46 -0
- package/pack/.claude/skills/rite-review/reference/nielsen-heuristics.md +130 -0
- package/pack/.claude/skills/rite-review/reference/parallel-dispatch.md +62 -0
- package/pack/.claude/skills/rite-review/reference/performance-review.md +28 -0
- package/pack/.claude/skills/rite-review/reference/security-review.md +32 -0
- package/pack/.claude/skills/rite-seal/SKILL.md +183 -0
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +27 -0
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +63 -0
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +72 -0
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +37 -0
- package/pack/.claude/skills/rite-seal/reference/parallel-dispatch.md +69 -0
- package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +30 -0
- package/pack/.claude/skills/rite-seal/reference/seal-template.md +36 -0
- package/pack/.claude/skills/rite-ship/SKILL.md +120 -0
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +25 -0
- package/pack/.claude/skills/rite-ship/reference/close-out.md +31 -0
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +120 -0
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +42 -0
- package/pack/.claude/skills/rite-ship/reference/ship-template.md +33 -0
- package/pack/.claude/skills/rite-spec/SKILL.md +126 -0
- package/pack/.claude/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +25 -0
- package/pack/.claude/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/.claude/skills/rite-spec/reference/investigation.md +64 -0
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +61 -0
- package/pack/.claude/skills/rite-spec/reference/references-intake.md +57 -0
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +73 -0
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +124 -0
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +159 -0
- package/pack/.claude/skills/rite-status/SKILL.md +101 -0
- package/pack/.claude/skills/rite-temper/SKILL.md +119 -0
- package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +29 -0
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +65 -0
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/.claude/skills/rite-temper/reference/significance.md +46 -0
- package/pack/.claude/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/.claude/skills/rite-vet/SKILL.md +155 -0
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +29 -0
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +135 -0
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +41 -0
- package/pack/.claude/skills/rite-vet/reference/depth.md +53 -0
- package/pack/.claude/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +167 -0
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +75 -0
- package/package.json +68 -0
- package/scripts/build-release-tarball.sh +74 -0
- package/scripts/check-cross-refs.py +121 -0
- package/scripts/check-no-global-writes.sh +44 -0
- package/scripts/check-rule-uniqueness.sh +73 -0
- package/scripts/devrites-detect.sh +175 -0
- package/scripts/eval-runner.py +273 -0
- package/scripts/grade-feature.sh +104 -0
- package/scripts/install-lib.sh +83 -0
- package/scripts/pin.sh +166 -0
- package/scripts/render-eval-summary.py +48 -0
- package/scripts/run-evals.sh +149 -0
- package/scripts/run-outcome-evals.sh +49 -0
- package/scripts/scan-pack-security.py +209 -0
- package/scripts/scan-supply-chain-iocs.py +127 -0
- package/scripts/supply-chain-iocs.json +11 -0
- package/scripts/sync-version.sh +56 -0
- package/scripts/validate-frontmatter.py +149 -0
- package/scripts/validate-workflow-security.py +86 -0
- package/scripts/validate.sh +234 -0
- package/uninstall.sh +137 -0
- package/update.sh +196 -0
package/docs/skills.md
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# All 29 skills
|
|
2
|
+
|
|
3
|
+
The pack ships **29 skills total** — 20 user-invocable `rite-*` workflow + utility skills, 9 model-invoked `devrites-*` specialists. Each skill is a structured workflow with its own operating rules, anti-rationalization tables, and red flags. Engineering rules live at `.claude/rules/`; each `rite-*` skill Reads `.claude/rules/core.md` as its first step (step 0) and pulls the other rule files on demand (no carrier skill, no session-start autoload). A 30th directory — the internal `devrites-lib` library skill (`user-invocable: false`, not a command) — ships the cross-cutting scripts the workflow skills run: the read-only orientation preamble and the `readiness` / `evidence-fresh` / `acceptance` gate scripts, plus the `tick-afk` / `resolve` / `close-out` state mutators. A unified `devrites` CLI and an MCP server expose those ops to any tool (see [`cli-mcp.md`](cli-mcp.md)).
|
|
4
|
+
|
|
5
|
+
**Naming convention.** `rite-*` is the user-facing slash-command surface (lifecycle phases plus utilities — `rite-prototype`, `rite-handoff`, `rite-zoom-out`, `rite-pressure-test`). `devrites-*` is internal (model-invoked, hidden from the menu) and collision-avoiding against bundled Claude Code skill names. Visibility is governed by each skill's `user-invocable:` flag; the prefix mirrors it.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Failure-mode section convention
|
|
10
|
+
|
|
11
|
+
Every skill carries a **failure-mode section** — the highest-signal content for keeping
|
|
12
|
+
the model honest in that phase (per Anthropic's skill-authoring guidance: capture the
|
|
13
|
+
model's actual failure points and grow the list over time). The canonical heading is
|
|
14
|
+
**`## Gotchas`**. Existing skills express the same intent under equivalent headings, all
|
|
15
|
+
of which satisfy the convention:
|
|
16
|
+
|
|
17
|
+
- **Lifecycle skills** → a `> **Mid-flight discipline.**` blockquote pointing at
|
|
18
|
+
`reference/anti-patterns.md` (rite-spec, -temper, -define, -vet, -build, -prove,
|
|
19
|
+
-polish, -review, -seal, -ship, -plan, -resolve, -autocomplete).
|
|
20
|
+
- **Specialists / utilities** → `## Hard rules` (browser-proof, debug-recovery),
|
|
21
|
+
`## NEVER` (ux-shape), `## Rules` (doubt, source-driven), `## Boundaries`
|
|
22
|
+
(pressure-test), `## Don't ask` (interview), `## When NOT to use` (zoom-out),
|
|
23
|
+
`## What NOT to include` (handoff), `## Scope reminders` (audit), `## Anti-AI-slop`
|
|
24
|
+
(frontend-craft), the numbered rule list (prototype), and `## Gotchas`
|
|
25
|
+
(api-interface, rite, status).
|
|
26
|
+
|
|
27
|
+
**New skills SHOULD use `## Gotchas`** — 2–3 traps the model most reaches for in that
|
|
28
|
+
phase (the rationalizations in `pack/.claude/rules/anti-patterns.md`, specialized), not a
|
|
29
|
+
restatement of the positive steps. A mechanical rename of the equivalents above to a
|
|
30
|
+
single `## Gotchas` heading is a possible future normalization; the content already holds.
|
|
31
|
+
|
|
32
|
+
## Commands quick reference
|
|
33
|
+
|
|
34
|
+
Every user-invocable skill responds to **both** `/rite <verb>` (menu form — type `/rite` for the discoverable entry point) and `/rite-<verb>` (direct shortcut). Both hit the same skill; use whichever reads more naturally.
|
|
35
|
+
|
|
36
|
+
| Menu form | Direct shortcut | Phase | Does |
|
|
37
|
+
|---|---|---|---|
|
|
38
|
+
| `/rite` | — | menu | Compact menu + dispatches verb args to the matching `rite-<verb>` skill. Without args, renders the menu. |
|
|
39
|
+
| `/rite spec <feature>` | `/rite-spec <feature>` | spec | **Start here.** Deep investigation → writes `spec.md`: understands the ask fully, decides **placement** (where it lives), names what it resolves, closes gaps with you (questions with options), and gathers any design references you optionally attach (screenshots / Figma / links / video — there may be none). |
|
|
40
|
+
| `/rite temper` | `/rite-temper` | temper | **Optional, before define.** Strategic review of the readied spec — pick a scope mode (expand / selective / hold-rigor / reduce-to-MVP), run a pre-mortem, harden the spec, write `strategy.md`, and fold the decisions back via the Spec Drift Guard. Significance-gated (skips small work); **mandatory inside `/rite-autocomplete`**. |
|
|
41
|
+
| `/rite define` | `/rite-define` | plan | Turns the approved spec into `plan.md` + vertical task slices + state. |
|
|
42
|
+
| `/rite vet` | `/rite-vet` | vet | **Before build — every feature.** Engineering review of the defined plan — scope challenge (reuse / minimum-diff / complexity smell), then architecture / plan code-quality / test-coverage design / performance through senior-engineer lenses, every finding confidence-banded with a quote-the-source verification gate. Maps failure modes + parallel lanes, hardens `plan.md` / `tasks.md`, writes the build-readable `test-plan.md`; acceptance-changing deltas fold back via the Spec Drift Guard. `--cross-model` adds a different-model second opinion. Runs on every plan — depth scales to stakes (light pass on simple, full on big/risky), never skipped; **always inside `/rite-autocomplete`**. |
|
|
43
|
+
| `/rite plan` | `/rite-plan` | re-plan | Decompose / reslice / repair an active plan. |
|
|
44
|
+
| `/rite build` | `/rite-build` | build | Implement **exactly one** vertical slice, then stop — dispatches a fresh-context `devrites-slice-wright` to write it; gates and records the result. |
|
|
45
|
+
| `/rite prove` | `/rite-prove` | prove | Tests + build + runtime + browser evidence for the current scope. |
|
|
46
|
+
| `/rite polish` | `/rite-polish` | polish | Code polish always; UI normalize + polish if UI in scope. Modes: `bolder / quieter / distill / harden / normalize-only`. |
|
|
47
|
+
| `/rite review` | `/rite-review` | review | Feature-scoped multi-axis review (parallel Spec + Standards axes). |
|
|
48
|
+
| `/rite seal` | `/rite-seal` | seal | Final GO / NO-GO decision gate — walks acceptance vs evidence, fans out reviewers, writes the verdict to `seal.md`. Decides only; hands off to `/rite-ship`. |
|
|
49
|
+
| `/rite ship` | `/rite-ship` | ship | Final phase. Requires a GO in `seal.md` → renders type-`GO`, runs the irreversible git ladder (commit → push → tag/PR), writes `ship.md`, then closes the task (archives the workspace, clears `ACTIVE`). |
|
|
50
|
+
| `/rite autocomplete` | `/rite-autocomplete` | (orchestrator) | Runs the whole lifecycle unattended (spec → … → seal → ship), choosing the best option at each soft gate. `--ship` / `--yolo` auto-confirms the final type-`GO`. |
|
|
51
|
+
| `/rite status` | `/rite-status` | status | Where the active feature stands. |
|
|
52
|
+
| `/rite resolve <qid> "<answer>"` | `/rite-resolve <qid> "<answer>"` | resume | Answer a HITL checkpoint (or `--drop <qid>` / `--batch <file>`); clears `state.md` `Awaiting human` and resumes. |
|
|
53
|
+
| `/rite zoom-out` | `/rite-zoom-out` | utility | Step up an abstraction layer when stuck — returns a map of the area (modules, callers, decisions) in the project's vocabulary. |
|
|
54
|
+
| `/rite prototype` | `/rite-prototype` | utility | Throwaway code that answers ONE design question before committing — routes between a Logic harness (state/data model) and 2–4 radically different UI variations on one route. |
|
|
55
|
+
| `/rite handoff` | `/rite-handoff` | utility | Compact the chat session into a handoff doc a fresh agent can pick up — syncs to the workspace, references existing artifacts by path. |
|
|
56
|
+
| `/rite pressure-test` | `/rite-pressure-test` | utility | Diverge → converge on a rough idea before specifying. |
|
|
57
|
+
|
|
58
|
+
The 9 model-invoked internal specialists (hidden from the menu): `devrites-interview`, `-source-driven`, `-doubt`, `-ux-shape`, `-frontend-craft`, `-browser-proof`, `-debug-recovery`, `-api-interface`, `-audit` (security / perf / simplify). The `/rite` menu carries the routing, the five user-invocable utilities all use the `rite-*` prefix (`rite-prototype`, `rite-handoff`, `rite-zoom-out`, `rite-pressure-test`, `rite-autocomplete`), and the `/rite-polish` phases live as references inside the same skill rather than as `rite-polish-code` / `rite-polish-ui`. Triggers and interactions are documented in [`command-map.md`](command-map.md); diagrams in [`flow.md`](flow.md).
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Phase-by-phase catalogue
|
|
63
|
+
|
|
64
|
+
### Menu & status — Find your place
|
|
65
|
+
|
|
66
|
+
| Skill | What It Does | Use When |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| [`rite`](../pack/.claude/skills/rite/SKILL.md) | Compact menu + active-feature status + suggested next command. Does not run a workflow. | You type `/rite`, ask "what DevRites commands exist", or "where am I". |
|
|
69
|
+
| [`rite-status`](../pack/.claude/skills/rite-status/SKILL.md) | Read-only report: phase, run mode (AFK/HITL), status, active slice, next action, evidence, open questions by gate, drift, risks. | You ask "where am I", "what's the status", "what's next". |
|
|
70
|
+
| [`rite-resolve`](../pack/.claude/skills/rite-resolve/SKILL.md) | Answer / drop / batch-resolve open `questions.md` entries; clears `state.md` `Awaiting human` and resumes the workflow. | A HITL checkpoint is open or AFK left blocking questions; you type `/rite-resolve <qid> "<answer>"`. |
|
|
71
|
+
|
|
72
|
+
### Spec — Understand the ask before any code
|
|
73
|
+
|
|
74
|
+
| Skill | What It Does | Use When |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| [`rite-spec`](../pack/.claude/skills/rite-spec/SKILL.md) | Deep investigation → writes `spec.md`. Decides **placement**, names what it resolves, closes gaps with you, gathers design refs. | You start a feature, have a vague idea, attach screenshots/Figma/video, or say "spec this". |
|
|
77
|
+
| [`devrites-ux-shape`](../pack/.claude/skills/devrites-ux-shape/SKILL.md) | **Plans UX/UI before code** — writes the feature-level `design-brief.md` (design direction, key states, interaction model, Figma/image visual-direction probe) that the build targets. Woven into spec/build, not a separate phase. | `/rite-spec` detects UI, or you say "shape the UX" / "plan the UI before coding" / "design direction". |
|
|
78
|
+
| [`devrites-interview`](../pack/.claude/skills/devrites-interview/SKILL.md) | One-question-at-a-time interview until ~95% confidence. | The ask is underspecified, or user says "interview me" / "grill me". |
|
|
79
|
+
| [`rite-pressure-test`](../pack/.claude/skills/rite-pressure-test/SKILL.md) | Structured divergent → convergent thinking; rough concept → buildable proposal. | The idea itself needs exploration before specifying; users say "ideate", "stress-test my plan", "I have a vague idea". |
|
|
80
|
+
|
|
81
|
+
### Temper — strategic review before planning *(optional; mandatory in `/rite-autocomplete`)*
|
|
82
|
+
|
|
83
|
+
| Skill | What It Does | Use When |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| [`rite-temper`](../pack/.claude/skills/rite-temper/SKILL.md) | Strategic review of a readied `spec.md`: pick a scope mode (expand / selective / hold-rigor / reduce-to-MVP), run a pre-mortem, score 9 dimensions on a floor-gate, then write `strategy.md` and fold decisions into `spec.md` / `decisions.md` / `assumptions.md` via the Spec Drift Guard. Adversarial fresh-context loop via [`devrites-strategy-reviewer`](../pack/.claude/agents/devrites-strategy-reviewer.md). Ambition on outcomes, minimalism on the surface. | A big / risky feature (auth · data model · public API · migration · multi-slice · ambiguous scope), or you say "think bigger" / "scope check" / "pre-mortem". Skips low-stakes specs in one line. |
|
|
86
|
+
|
|
87
|
+
### Plan — Decompose into vertical slices
|
|
88
|
+
|
|
89
|
+
| Skill | What It Does | Use When |
|
|
90
|
+
|---|---|---|
|
|
91
|
+
| [`rite-define`](../pack/.claude/skills/rite-define/SKILL.md) | Approved spec → `plan.md` + vertical task slices + `state.md`. | `spec.md` exists and is approved. |
|
|
92
|
+
| [`rite-plan`](../pack/.claude/skills/rite-plan/SKILL.md) | Decompose / reslice / repair an active plan after drift. | Spec Drift Guard fires, or you need to repair an existing plan. |
|
|
93
|
+
|
|
94
|
+
### Vet — Lock in the engineering plan before building
|
|
95
|
+
|
|
96
|
+
| Skill | What It Does | Use When |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| [`rite-vet`](../pack/.claude/skills/rite-vet/SKILL.md) | Engineering review of `plan.md` + `tasks.md`: scope challenge (reuse / minimum-diff / complexity smell), then architecture / plan code-quality / test-coverage design / performance through senior-engineer lenses, every finding confidence-banded with a quote-the-source verification gate. Maps failure modes + parallel lanes, hardens the plan, writes the build-readable `test-plan.md`; acceptance-changing deltas fold back via the Spec Drift Guard. Adversarial fresh-context loop via [`devrites-plan-reviewer`](../pack/.claude/agents/devrites-plan-reviewer.md) on the full pass; optional `--cross-model` second opinion. | **Every defined plan, before build** — depth scales to stakes: a light pass on a simple, reversible plan; the full pass on a big / risky one (migration · auth · public API · data model · multi-slice · >8 files · new dependency). Never skipped; always in `/rite-autocomplete`. |
|
|
99
|
+
|
|
100
|
+
### Build — One verified slice at a time
|
|
101
|
+
|
|
102
|
+
| Skill | What It Does | Use When |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| [`rite-build`](../pack/.claude/skills/rite-build/SKILL.md) | Orchestrates **exactly one** vertical slice: pre-flight gates, then dispatches a fresh-context [`devrites-slice-wright`](../pack/.claude/agents/devrites-slice-wright.md) for the build core, then doubts / gates / records with evidence. | A plan exists and the next slice is ready. |
|
|
105
|
+
| [`devrites-source-driven`](../pack/.claude/skills/devrites-source-driven/SKILL.md) | Consult official docs / source before relying on framework behavior; record the source. | API, config, or framework behavior is assumed rather than known. |
|
|
106
|
+
| [`devrites-api-interface`](../pack/.claude/skills/devrites-api-interface/SKILL.md) | Design stable API / interface contracts — REST/GraphQL, module boundaries, type contracts, FE/BE split. | A slice crosses a boundary or defines a public interface. |
|
|
107
|
+
| [`devrites-debug-recovery`](../pack/.claude/skills/devrites-debug-recovery/SKILL.md) | Reproduce → ranked hypotheses → instrument → fix in scope → regression-test. Stops guess-and-retry. | Tests, builds, or runtime checks fail. |
|
|
108
|
+
|
|
109
|
+
### Prove — Real evidence, including the browser
|
|
110
|
+
|
|
111
|
+
| Skill | What It Does | Use When |
|
|
112
|
+
|---|---|---|
|
|
113
|
+
| [`rite-prove`](../pack/.claude/skills/rite-prove/SKILL.md) | Tests + build + runtime + browser evidence for the current scope. | All slices built; ready for full verification. |
|
|
114
|
+
| [`devrites-browser-proof`](../pack/.claude/skills/devrites-browser-proof/SKILL.md) | Browser proof ladder: browser-harness → Chrome DevTools MCP → `/run`+`/verify` → project E2E → manual. | Scope touches UI. |
|
|
115
|
+
|
|
116
|
+
### Polish — Normalize, then ship-quality detail pass
|
|
117
|
+
|
|
118
|
+
| Skill | What It Does | Use When |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| [`rite-polish`](../pack/.claude/skills/rite-polish/SKILL.md) | Orchestrator. Always runs code polish (`reference/code.md`); detects UI scope and runs UI normalize + polish (`reference/ui.md`) when needed. Accepts mode tokens (`bolder`, `quieter`, `distill`, `harden`, `normalize-only`). | All slices proven; ready to finish. |
|
|
121
|
+
| [`devrites-frontend-craft`](../pack/.claude/skills/devrites-frontend-craft/SKILL.md) | Senior frontend craft — register, shape-before-code, all states, design system, anti-AI-slop, Core Web Vitals + WCAG 2.2. | A slice touches UI. |
|
|
122
|
+
|
|
123
|
+
### Review — Adversarial, scoped to the feature
|
|
124
|
+
|
|
125
|
+
| Skill | What It Does | Use When |
|
|
126
|
+
|---|---|---|
|
|
127
|
+
| [`rite-review`](../pack/.claude/skills/rite-review/SKILL.md) | Multi-axis feature-scoped review. Parallel **Spec axis** (`devrites-spec-reviewer`) + **Standards axis** (`devrites-code-reviewer`) sub-agents; severity-labeled findings. | Polish done; ready for a final pass. |
|
|
128
|
+
| [`devrites-doubt`](../pack/.claude/skills/devrites-doubt/SKILL.md) | In-flight adversarial review of risky decisions — branching logic, boundaries, data/auth/API changes, migrations. | About to stand a "this is safe / scales / matches spec" claim. |
|
|
129
|
+
| [`devrites-audit`](../pack/.claude/skills/devrites-audit/SKILL.md) | Read-only audit dispatch — picks the right reviewer subagent on the requested axis (`security` / `perf` / `simplify`). Single-axis only; multi-axis parallel fan-out lives inline in `/rite-seal` (see `rite-seal/reference/parallel-dispatch.md`). | Polish Phase 1 (`simplify`); review involves user input / auth / data / external integrations / secrets / permissions (`security`); performance is relevant or regression risk visible (`perf`). |
|
|
130
|
+
|
|
131
|
+
### Seal — GO / NO-GO decision
|
|
132
|
+
|
|
133
|
+
| Skill | What It Does | Use When |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| [`rite-seal`](../pack/.claude/skills/rite-seal/SKILL.md) | Pure decision gate. Walks acceptance vs evidence, fans out reviewers, writes the GO / NO-GO verdict to `seal.md`. Decides only — no git; on GO it sets `state.md` `Next step: /rite-ship`. | Review is clean; you ask "GO / NO-GO", "is it safe to merge", "decide if we can ship". |
|
|
136
|
+
|
|
137
|
+
### Ship — Execute + close the task
|
|
138
|
+
|
|
139
|
+
| Skill | What It Does | Use When |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| [`rite-ship`](../pack/.claude/skills/rite-ship/SKILL.md) | Final phase. Requires a GO in `seal.md` → renders type-`GO`, runs the irreversible git ladder (commit → push → tag/PR per project convention), writes `ship.md`, then closes the task: sets phase `done`, archives `.devrites/work/<slug>/` → `.devrites/archive/<slug>/` (all `.md` preserved), clears `.devrites/ACTIVE`. | Seal returned GO; you say "ship it", "ship this", "push it out", "close the task". |
|
|
142
|
+
|
|
143
|
+
### Utility — Stand-alone helpers
|
|
144
|
+
|
|
145
|
+
| Skill | What It Does | Use When |
|
|
146
|
+
|---|---|---|
|
|
147
|
+
| [`rite-autocomplete`](../pack/.claude/skills/rite-autocomplete/SKILL.md) | Runs the whole lifecycle unattended (spec → … → seal → ship), choosing the best option at each soft gate and recording the rationale in `decisions.md`. A vague prompt triggers an up-front `devrites-interview`; after that it runs without per-phase iteration, pausing only on hard irreversible-risk / blocking / escalating gates, an open validating gate, NO-GO, or budget exhaustion. Default stops at the final type-`GO`; `--ship` (alias `--yolo`) auto-confirms it. | "Autocomplete", "do the whole thing", "run the full cycle", "one-shot this feature". |
|
|
148
|
+
| [`rite-zoom-out`](../pack/.claude/skills/rite-zoom-out/SKILL.md) | Map an unfamiliar area — modules, callers, callees, decisions — in the project's domain glossary. | You say "zoom out", "I don't know this area", "map this area", "bigger picture". |
|
|
149
|
+
| [`rite-prototype`](../pack/.claude/skills/rite-prototype/SKILL.md) | Throwaway code answering ONE design question — logic harness OR 2–4 UI variations on one route. | "Prototype this", "let me play with it", "try a few designs", question is undecidable on paper. |
|
|
150
|
+
| [`rite-handoff`](../pack/.claude/skills/rite-handoff/SKILL.md) | Compact chat session → handoff doc. References existing `.devrites/work/<slug>/` artifacts by path. | "Handoff", "summarize this session", before `/clear`, fresh agent will continue. |
|
|
151
|
+
| [`rite-learn`](../pack/.claude/skills/rite-learn/SKILL.md) | Cross-feature learning loop — mine shipped features for recurring mistakes + dismissed-finding classes (`learnings.sh mine`), propose project-local lessons into `.devrites/learnings.md` (loaded by the review skills before a fan-out). | After several features ship; "what have we learned", "harvest lessons", "why does this keep coming up". |
|
|
152
|
+
|
|
153
|
+
### Foundation — Engineering rules
|
|
154
|
+
|
|
155
|
+
| Skill | What It Does | Use When |
|
|
156
|
+
|---|---|---|
|
|
157
|
+
| (engineering rules) | Live at `.claude/rules/` post-install — each `rite-*` skill Reads `.claude/rules/core.md` as its first step (step 0); the other 15 rule files (`coding-style.md`, `error-handling.md`, `testing.md`, `code-review.md`, `security.md`, `performance.md`, `patterns.md`, `git-workflow.md`, `hooks.md`, `documentation.md`, `development-workflow.md`, `agents.md`, `context-hygiene.md`, `afk-hitl.md`, `anti-patterns.md`) load on demand per skill body. No carrier skill, no session-start autoload. | n/a — step-0 core / on-demand by path. |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Review agents — Fresh-context reviewers
|
|
162
|
+
|
|
163
|
+
Spawned by `/rite-review`, `/rite-seal` (post-build), `/rite-temper` (pre-plan), and `/rite-vet` (pre-build) for independent judgment. Read-only; given only the artifact + rubric, never the author's reasoning.
|
|
164
|
+
|
|
165
|
+
| Agent | Purpose |
|
|
166
|
+
|---|---|
|
|
167
|
+
| [`devrites-strategy-reviewer`](../pack/.claude/agents/devrites-strategy-reviewer.md) | **Pre-plan** spec-vs-rubric strategic review (ambition / scope / premise / pre-mortem / YAGNI / testability / irreversibility / cross-cutting / convention) — via `/rite-temper`, not the seal fan-out. |
|
|
168
|
+
| [`devrites-plan-reviewer`](../pack/.claude/agents/devrites-plan-reviewer.md) | **Pre-build** plan-vs-rubric engineering review (architecture / scope-reuse / plan code-quality / test-coverage design / performance / reversibility / failure-mode coverage), confidence-banded with a quote-the-source verification gate — via `/rite-vet`, not the seal fan-out. |
|
|
169
|
+
| [`devrites-spec-reviewer`](../pack/.claude/agents/devrites-spec-reviewer.md) | Does the diff implement the spec? Missing / partial / wrong criteria; scope creep. |
|
|
170
|
+
| [`devrites-code-reviewer`](../pack/.claude/agents/devrites-code-reviewer.md) | Correctness / readability / architecture / maintainability. |
|
|
171
|
+
| [`devrites-test-analyst`](../pack/.claude/agents/devrites-test-analyst.md) | Do the tests actually prove the acceptance criteria? |
|
|
172
|
+
| [`devrites-frontend-reviewer`](../pack/.claude/agents/devrites-frontend-reviewer.md) | UX, a11y, responsive, design-system, anti-AI-slop. |
|
|
173
|
+
| [`devrites-security-auditor`](../pack/.claude/agents/devrites-security-auditor.md) | OWASP Top 10, trust boundary, secrets, deps. |
|
|
174
|
+
| [`devrites-performance-reviewer`](../pack/.claude/agents/devrites-performance-reviewer.md) | N+1s, hot paths, payload size. |
|
|
175
|
+
| [`devrites-doubt-reviewer`](../pack/.claude/agents/devrites-doubt-reviewer.md) | Adversarial check of a single claim/decision. |
|
|
176
|
+
| [`devrites-simplifier-reviewer`](../pack/.claude/agents/devrites-simplifier-reviewer.md) | Independent simplification judgment (called by `devrites-audit simplify`). |
|
|
177
|
+
|
|
178
|
+
Seal fan-out diagram: [`flow.md` § /rite-seal fan-out](flow.md#4-rite-seal-fan-out).
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Executor agent — Fresh-context writer
|
|
183
|
+
|
|
184
|
+
The system's one **write-capable** agent — the mirror of the read-only reviewers above. Dispatched by `/rite-build` for the build core, in a clean context, with only the slice contract.
|
|
185
|
+
|
|
186
|
+
| Agent | Purpose |
|
|
187
|
+
|---|---|
|
|
188
|
+
| [`devrites-slice-wright`](../pack/.claude/agents/devrites-slice-wright.md) | Turn ONE slice contract into the smallest complete, idiomatic, proven implementation — orient → TDD → verify, anti-AI-slop, feature scope only. Writes code + tests; returns a structured artifact for the orchestrator to doubt, gate, and record. Writes no `.devrites/` bookkeeping; single-threaded (one per slice). |
|
|
189
|
+
|
|
190
|
+
Dispatch contract + return shape + fallback: [`rite-build/reference/wright-dispatch.md`](../pack/.claude/skills/rite-build/reference/wright-dispatch.md).
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## `/rite-polish` orchestrator
|
|
195
|
+
|
|
196
|
+
`/rite-polish` always runs code polish; it detects UI scope from the diff and runs UI normalize + polish only when needed. Each half lives as a progressive-disclosure reference inside the skill (`reference/code.md`, `reference/ui.md`) so the orchestrator body stays small and each phase loads only when its trigger fires.
|
|
197
|
+
|
|
198
|
+
```mermaid
|
|
199
|
+
flowchart LR
|
|
200
|
+
P[/rite-polish/] -->|always| C[reference/code.md<br/>Phase 1 + 2]
|
|
201
|
+
P -->|UI touched?| U[reference/ui.md<br/>Phase 3 + 4]
|
|
202
|
+
C --> O([polish-report.md])
|
|
203
|
+
U --> O
|
|
204
|
+
classDef o fill:#1f2937,stroke:#60a5fa,color:#f9fafb
|
|
205
|
+
classDef s fill:#312e81,stroke:#818cf8,color:#eef2ff
|
|
206
|
+
class P o
|
|
207
|
+
class C,U s
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Argument modes (`bolder`, `quieter`, `distill`, `harden`, `normalize-only`) pass through to Phase 4 (`reference/ui.md`).
|
|
211
|
+
|
|
212
|
+
## `/rite-review` parallel axes & `/rite-seal` fan-out
|
|
213
|
+
|
|
214
|
+
`/rite-review` runs **Spec axis** (`devrites-spec-reviewer`) and **Standards axis** (`devrites-code-reviewer`) as parallel sub-agents so neither masks the other. `/rite-seal` fans out the full reviewer set in parallel (`devrites-{spec,code,test,frontend,security,performance}-reviewer`) and reconciles findings before the GO / NO-GO gate. Severity labels (Critical / Important / Suggestion / Nit / FYI) drive the gate; there's no advisory number — the gate is `Critical == 0` plus proven acceptance plus resolved drift. Diagrams: [`flow.md`](flow.md#3-rite-review-parallel-axes).
|
package/docs/usage.md
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# DevRites — usage
|
|
2
|
+
|
|
3
|
+
Worked workflows. Every feature starts with `/rite-spec` (it investigates,
|
|
4
|
+
writes the spec, and creates the workspace). Every later phase reads the
|
|
5
|
+
active workspace (`.devrites/ACTIVE` → `.devrites/work/<slug>/`) first; if
|
|
6
|
+
none exists it tells you to run `/rite-spec <feature>`.
|
|
7
|
+
|
|
8
|
+
- **Full command reference** → [`command-map.md`](command-map.md)
|
|
9
|
+
- **Flow diagrams** → [`flow.md`](flow.md)
|
|
10
|
+
- **Architecture rationale** → [`architecture.md`](architecture.md)
|
|
11
|
+
|
|
12
|
+
## The workspace
|
|
13
|
+
|
|
14
|
+
`/rite-spec` creates `.devrites/work/<slug>/` and writes the spec;
|
|
15
|
+
`/rite-define` adds the plan and tasks. All human-readable Markdown that
|
|
16
|
+
survives compaction and new sessions:
|
|
17
|
+
|
|
18
|
+
| File | Created by | Holds |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| `brief.md` | `/rite-spec` | one-line objective + definition of done |
|
|
21
|
+
| `spec.md` | `/rite-spec` | what to build + why, placement, acceptance, gaps/decisions |
|
|
22
|
+
| `references/` + `references.md` | `/rite-spec` | saved design refs — screenshots, Figma, video, links |
|
|
23
|
+
| `strategy.md` | `/rite-temper` | strategic spec review (optional): scope mode, pre-mortem, dimension scores |
|
|
24
|
+
| `plan.md` | `/rite-define` | approach, dependency graph, checkpoints, rollback |
|
|
25
|
+
| `tasks.md` | `/rite-define` | ordered vertical slices, each tagged `Mode: AFK \| HITL` + `Gate` / `SLA` / `Checkpoint` when HITL |
|
|
26
|
+
| `eng-review.md` | `/rite-vet` | engineering plan review (optional): scope challenge, axis findings, failure modes, parallelization |
|
|
27
|
+
| `test-plan.md` | `/rite-vet` | build-readable coverage target: coverage diagram, per-gap test requirements, acceptance→test map (read by `/rite-build` + `/rite-prove`) |
|
|
28
|
+
| `state.md` | every phase | phase, status, active slice + slice mode, risk, next step (the cursor); plus `Awaiting human` block when paused (run mode is derived from `.devrites/AFK`, not stored here) |
|
|
29
|
+
| `questions.md` | every phase | append-only Q&A — qid, slice, gate, status (`open` / `answered` / `dropped`), proposed answer, raised/answered timestamps |
|
|
30
|
+
| `decisions.md` / `assumptions.md` | every phase | running logs |
|
|
31
|
+
| `drift.md` | Spec Drift Guard | drift events + resolutions |
|
|
32
|
+
| `touched-files.md` | `/rite-build` | what files this feature touched |
|
|
33
|
+
| `evidence.md` | `/rite-build`, `/rite-prove` | recorded commands + output |
|
|
34
|
+
| `browser-evidence.md` | `/rite-prove`, `/rite-polish` (UI) | screenshots, console, network, viewport runs |
|
|
35
|
+
| `design-brief.md` | `devrites-frontend-craft` | shape, states, design references match |
|
|
36
|
+
| `polish-report.md` | `/rite-polish` | Phase 1-4 findings + fixes |
|
|
37
|
+
| `review.md` | `/rite-review` | Spec + Standards axes, severity-labelled findings |
|
|
38
|
+
| `seal.md` | `/rite-seal` | GO/NO-GO verdict + acceptance walk + blockers |
|
|
39
|
+
| `ship.md` | `/rite-ship` | what shipped — commit SHA(s), branch, tag/PR, acceptance summary, follow-ups |
|
|
40
|
+
|
|
41
|
+
When `/rite-ship` closes the task it **archives** the whole workspace —
|
|
42
|
+
`.devrites/work/<slug>/` → `.devrites/archive/<slug>/` (every `.md` above is
|
|
43
|
+
preserved, never deleted) — and clears `.devrites/ACTIVE`. The audit trail lives
|
|
44
|
+
on under `.devrites/archive/<slug>/`.
|
|
45
|
+
|
|
46
|
+
Project-root sentinel (outside the workspace):
|
|
47
|
+
|
|
48
|
+
| File | Created by | Holds |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| `.devrites/AFK` | you (presence = AFK mode active) | optional YAML: `max_slices`, `notify`, `allow_gates`. Empty file = AFK with defaults. See [`pack/.claude/rules/afk-hitl.md`](../pack/.claude/rules/afk-hitl.md). |
|
|
51
|
+
|
|
52
|
+
The shape of this directory is also documented in
|
|
53
|
+
[`flow.md` § Workspace state model](flow.md#7-workspace-state-model).
|
|
54
|
+
|
|
55
|
+
## 1) Start a feature — spec then plan
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
You: I want some kind of reporting thing for admins.
|
|
59
|
+
|
|
60
|
+
/rite-spec admin-usage-report
|
|
61
|
+
→ investigates deeply (codegraph/graphify): current behavior, placement,
|
|
62
|
+
what it resolves
|
|
63
|
+
→ asks you one question at a time, each with options + a best guess,
|
|
64
|
+
until gaps are closed
|
|
65
|
+
→ gathers any design references you give
|
|
66
|
+
→ writes spec.md (creates the workspace)
|
|
67
|
+
|
|
68
|
+
/rite-define
|
|
69
|
+
→ reads the approved spec
|
|
70
|
+
→ writes plan.md + vertical task slices + state
|
|
71
|
+
→ stops for confirmation
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 2) Normal feature — the build loop
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
/rite-spec add-csv-export # investigate → spec.md
|
|
78
|
+
/rite-define # spec → plan + vertical slices + state
|
|
79
|
+
/rite-build # slice 1 ("export endpoint returns CSV"); stops with evidence
|
|
80
|
+
/rite-build # slice 2 ("download button + states"); repeat for each slice
|
|
81
|
+
/rite-prove # ONCE all slices built: full tests + browser proof
|
|
82
|
+
/rite-polish # code polish (always) + UI normalize+polish (if UI)
|
|
83
|
+
/rite-review # feature-scoped multi-axis review (Spec + Standards in parallel)
|
|
84
|
+
/rite-seal # GO / NO-GO decision (no git) → on GO, points at /rite-ship
|
|
85
|
+
/rite-ship # type-GO + irreversible git ladder + close the task (archive + clear ACTIVE)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`/rite-build` never auto-advances — you decide when the next slice runs.
|
|
89
|
+
`/rite-seal` **decides**; `/rite-ship` **executes + closes**. To run the whole
|
|
90
|
+
sequence unattended, see `/rite-autocomplete` (§11).
|
|
91
|
+
|
|
92
|
+
## 3) Spec drift mid-build
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
/rite-build
|
|
96
|
+
→ discovers the planned `User.export_token` column doesn't exist and adding
|
|
97
|
+
it changes the data model
|
|
98
|
+
→ STOPS (Spec Drift Guard), records the drift in drift.md, classifies it as
|
|
99
|
+
"codebase reality mismatch"
|
|
100
|
+
→ because it changes product behavior, asks you:
|
|
101
|
+
|
|
102
|
+
I hit spec drift:
|
|
103
|
+
- Spec/plan assumed: a per-user export token column
|
|
104
|
+
- Code/evidence shows: tokens are issued per-session, no user column
|
|
105
|
+
- Why it matters: changes the data model and the auth story
|
|
106
|
+
Which direction should DevRites take?
|
|
107
|
+
1. Keep the requirement, add the column + migration
|
|
108
|
+
2. Adjust to per-session tokens (matches existing behavior)
|
|
109
|
+
3. Split token work into a follow-up feature
|
|
110
|
+
4. Custom
|
|
111
|
+
|
|
112
|
+
You: 2
|
|
113
|
+
|
|
114
|
+
/rite-plan repair # updates spec/plan/tasks to per-session, marks drift resolved
|
|
115
|
+
/rite-build # resumes on the corrected plan
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## 4) UI feature with browser-harness
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
/rite-spec settings-theme-toggle
|
|
122
|
+
→ you give a Figma link + a screenshot of the target toggle; rite-spec
|
|
123
|
+
views them, saves the screenshot to references/, indexes references.md
|
|
124
|
+
→ writes spec.md
|
|
125
|
+
|
|
126
|
+
/rite-define
|
|
127
|
+
→ spec → slices; UI slice marked frontend-craft + browser-proof
|
|
128
|
+
|
|
129
|
+
/rite-build
|
|
130
|
+
→ UI slice → devrites-frontend-craft: register = product surface, **match
|
|
131
|
+
the saved references**, shape the states (default/loading/empty/error/
|
|
132
|
+
disabled), use existing tokens + components, meet CWV + WCAG 2.2, avoid
|
|
133
|
+
anti-AI-slop
|
|
134
|
+
|
|
135
|
+
/rite-prove
|
|
136
|
+
→ devrites-browser-proof: browser-harness detected → new_tab(route),
|
|
137
|
+
screenshot at 375 + 1280, exercise the toggle, check console clean,
|
|
138
|
+
**compare to references/**, record to browser-evidence.md
|
|
139
|
+
|
|
140
|
+
/rite-polish
|
|
141
|
+
→ /rite-polish detects UI scope → reads reference/ui.md for normalize +
|
|
142
|
+
quality bar; re-screenshots; appends to polish-report.md
|
|
143
|
+
|
|
144
|
+
/rite-review
|
|
145
|
+
/rite-seal
|
|
146
|
+
/rite-ship
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
If no browser tooling is available, proof is recorded as **pending (manual)**
|
|
150
|
+
with exact steps — the seal then weighs the UI risk.
|
|
151
|
+
|
|
152
|
+
## 5) Backend-only feature
|
|
153
|
+
|
|
154
|
+
```text
|
|
155
|
+
/rite-spec rate-limit-api # investigate → spec.md (no UI)
|
|
156
|
+
/rite-define # spec → plan + slices
|
|
157
|
+
/rite-build # no UI → no frontend craft / browser proof
|
|
158
|
+
/rite-prove # targeted tests + build/typecheck; runtime check of the limiter
|
|
159
|
+
/rite-polish # reference/code.md only (no UI scope detected)
|
|
160
|
+
/rite-review # devrites-audit security fires (auth/abuse surface), measure-first perf
|
|
161
|
+
/rite-seal # checks rollback for any config/migration change → GO/NO-GO
|
|
162
|
+
/rite-ship # type-GO + commit/push/tag + close the task
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## 6) UI-direction prompt — refinement modes
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
/rite-polish bolder
|
|
169
|
+
→ reads reference/ui.md and runs Phase 4 with emphasis on hierarchy +
|
|
170
|
+
weight contrast + decisive accent. Normalize (Phase 3) still runs first.
|
|
171
|
+
|
|
172
|
+
/rite-polish normalize-only
|
|
173
|
+
→ reads reference/ui.md and runs Phase 3 only (drift removal). Stops
|
|
174
|
+
without the quality-bar pass.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Other modes: `quieter` · `distill` · `harden`.
|
|
178
|
+
|
|
179
|
+
## 7) Stuck in unfamiliar code
|
|
180
|
+
|
|
181
|
+
```text
|
|
182
|
+
/rite-zoom-out
|
|
183
|
+
→ returns a map: the area in 1 sentence (project's vocabulary), modules in
|
|
184
|
+
scope, callers in / calls out, ADR / decisions.md entries touching the
|
|
185
|
+
area, smallest sensible change-scope.
|
|
186
|
+
→ uses codegraph_context + codegraph_explore if available; falls back to
|
|
187
|
+
Grep + Read otherwise.
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## 8) Mid-flight handoff
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
/rite-handoff
|
|
194
|
+
→ reads the chat, identifies anything chat-only that the workspace doesn't
|
|
195
|
+
already capture (open questions, decisions discussed, assumptions made,
|
|
196
|
+
drift status, ambiguous next action)
|
|
197
|
+
→ appends to questions.md / decisions.md / assumptions.md / drift.md /
|
|
198
|
+
state.md as appropriate
|
|
199
|
+
→ writes handoff.md referencing each artifact by path
|
|
200
|
+
→ the next session (or a fresh agent) reads the workspace alone
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Run before `/clear` if leaving for > a few hours.
|
|
204
|
+
|
|
205
|
+
## 9) HITL gate — pre-code pause and resume
|
|
206
|
+
|
|
207
|
+
```text
|
|
208
|
+
/rite-build
|
|
209
|
+
→ reads tasks.md slice 03; Mode: HITL, Gate: blocking
|
|
210
|
+
→ STOPS before writing any code:
|
|
211
|
+
|
|
212
|
+
Slice 03 — list endpoint is HITL (blocking, SLA 15m).
|
|
213
|
+
Checkpoint: Composite (user_id, created_at) index, or two single-col indexes?
|
|
214
|
+
Proposed approach: composite — single read path, both columns used together
|
|
215
|
+
in the most common filter; downside is rebuild cost on bulk updates.
|
|
216
|
+
Decision needed before this slice can build.
|
|
217
|
+
Resume: /rite-resolve q-2026-05-28-001 "<answer>"
|
|
218
|
+
|
|
219
|
+
→ appends q-...-001 to questions.md (status: open, gate: blocking)
|
|
220
|
+
→ writes `Awaiting human` block to state.md, sets Status: awaiting_human
|
|
221
|
+
|
|
222
|
+
You: /rite-resolve q-2026-05-28-001 "composite — single-col is fine for now"
|
|
223
|
+
|
|
224
|
+
/rite-resolve
|
|
225
|
+
→ flips q-...-001 status → answered (with answered_at + answer)
|
|
226
|
+
→ clears `Awaiting human`, sets Status: running
|
|
227
|
+
→ recommends /rite-build for slice 03
|
|
228
|
+
|
|
229
|
+
/rite-build
|
|
230
|
+
→ resumes with the answer captured in questions.md
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
If the answer changes acceptance criteria or scope, `/rite-resolve` recommends
|
|
234
|
+
`/rite-plan repair` first instead of an immediate `/rite-build`.
|
|
235
|
+
|
|
236
|
+
## 10) AFK overnight run
|
|
237
|
+
|
|
238
|
+
```text
|
|
239
|
+
# Drop the sentinel before bed. Keys are optional — empty file works.
|
|
240
|
+
cat > .devrites/AFK <<'EOF'
|
|
241
|
+
max_slices: 10
|
|
242
|
+
notify: "curl -d \"$DEVRITES_QID: $DEVRITES_QUESTION\" ntfy.sh/my-topic"
|
|
243
|
+
allow_gates: [advisory, validating]
|
|
244
|
+
EOF
|
|
245
|
+
|
|
246
|
+
/rite-build
|
|
247
|
+
→ reads sentinel, run mode = afk
|
|
248
|
+
→ slice 04 (AFK) → builds; devrites-doubt fires once, logs an advisory
|
|
249
|
+
entry to questions.md and continues
|
|
250
|
+
→ slice 05 (AFK) → builds; targeted tests green, evidence.md updated
|
|
251
|
+
→ slice 06 (HITL, Gate: validating) → in allow_gates, so builds + queues
|
|
252
|
+
a validating question; slice stays at `built (pending review)`
|
|
253
|
+
→ slice 07 (HITL, Gate: blocking) → ALWAYS pauses; writes Awaiting human,
|
|
254
|
+
fires notify hook (your phone pings), STOPs
|
|
255
|
+
→ state.md `AFK slices remaining`: 10 → 7 (max_slices stays 10, read-only)
|
|
256
|
+
|
|
257
|
+
# In the morning:
|
|
258
|
+
/rite-status
|
|
259
|
+
→ Status: awaiting_human, 1 blocking q-..., 2 validating, 5 advisory
|
|
260
|
+
→ recommends /rite-resolve q-...
|
|
261
|
+
|
|
262
|
+
/rite-resolve q-... "<answer>"
|
|
263
|
+
/rite-build # continue
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
The loop refuses to mark a slice `built` if tests / types / lint go red — it
|
|
267
|
+
writes a blocking question and stops regardless of `allow_gates`. AFK never
|
|
268
|
+
silently accepts irreversible risk; see
|
|
269
|
+
[`pack/.claude/rules/afk-hitl.md`](../pack/.claude/rules/afk-hitl.md) for the
|
|
270
|
+
full list.
|
|
271
|
+
|
|
272
|
+
## 11) Full unattended lifecycle — `/rite-autocomplete`
|
|
273
|
+
|
|
274
|
+
```text
|
|
275
|
+
/rite-autocomplete "add CSV export for admins" --max-slices 8
|
|
276
|
+
→ vague idea → runs devrites-interview once, up front (the only interactive
|
|
277
|
+
window), to ~95% confidence
|
|
278
|
+
→ arms AFK, then drives every phase in order: /rite-spec → /rite-temper →
|
|
279
|
+
/rite-define → /rite-vet → /rite-build ×N → /rite-prove → /rite-polish →
|
|
280
|
+
/rite-review → /rite-seal (→ /rite-ship too when --ship is set)
|
|
281
|
+
→ at each soft gate, picks the option the relevant specialist/reviewer
|
|
282
|
+
favours and records the rationale in decisions.md (never silently)
|
|
283
|
+
→ seal returns GO → autocomplete STOPS (default) and hands off to /rite-ship
|
|
284
|
+
|
|
285
|
+
/rite-ship # human runs it → renders the type-GO prompt
|
|
286
|
+
You: GO # → commit · push · tag, then archive + clear ACTIVE
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Add `--ship` (alias `--yolo`) to auto-confirm the final type-`GO` for a
|
|
290
|
+
zero-touch push — autocomplete then proceeds straight to `/rite-ship`. It still
|
|
291
|
+
pauses on hard irreversible-risk (auth / migration / public-API / red tests),
|
|
292
|
+
blocking / escalating gates, an open `gate: validating`, a NO-GO, exhausted
|
|
293
|
+
`max_slices`, or low confidence — writing `state.md` and surfacing *why* before
|
|
294
|
+
it stops. Args: `[idea] [--ship|--yolo] [--max-slices N]`.
|
|
295
|
+
|
|
296
|
+
## Checking in
|
|
297
|
+
|
|
298
|
+
- `/rite` — compact menu + suggested next command. **Does not** read state.
|
|
299
|
+
- `/rite-status` — detailed status: phase, **run mode (AFK / HITL)**, status
|
|
300
|
+
(`running` / `awaiting_human` / `blocked` / `done`), next action, evidence,
|
|
301
|
+
open questions broken down by gate, drift, risks, **handoff readiness**.
|
|
302
|
+
- `/rite-resolve <qid> "<answer>"` — answer / `--drop` / `--batch`-resolve an
|
|
303
|
+
open question; the canonical writer for `status: open → answered` and the
|
|
304
|
+
only thing that clears `Awaiting human`.
|
|
305
|
+
|
|
306
|
+
## Tips
|
|
307
|
+
|
|
308
|
+
- Commit `.devrites/` so the team and future sessions share feature state.
|
|
309
|
+
- **`.devrites/AFK` is per-developer, not per-repo** — gitignore it (or commit
|
|
310
|
+
it deliberately if the team agrees on AFK defaults). The sentinel is
|
|
311
|
+
read-only config: it toggles your local session mode and sets the initial
|
|
312
|
+
`max_slices` budget; nothing else. The mutable remaining-slice count lives
|
|
313
|
+
in `state.md` (`AFK slices remaining`), never in the sentinel.
|
|
314
|
+
- One feature active at a time (`ACTIVE`). To start or switch, run
|
|
315
|
+
`/rite-spec <other>` (it creates/selects that workspace and writes its
|
|
316
|
+
spec).
|
|
317
|
+
- **Recommended AFK progression**: HITL first to refine the prompt and plan,
|
|
318
|
+
then drop the sentinel for the bulk stretch. Always cap iterations
|
|
319
|
+
(`max_slices: 10` is a reasonable default).
|
|
320
|
+
- Let the specialists fire on their triggers — you don't invoke `devrites-*`
|
|
321
|
+
directly. The exceptions are the three public utilities: `/rite-zoom-out`,
|
|
322
|
+
`/rite-prototype`, `/rite-handoff`.
|
|
323
|
+
- The `devrites-` prefix is a namespace, not a privacy marker — whether a
|
|
324
|
+
skill is public is the `user-invocable:` flag, documented for each in
|
|
325
|
+
[`command-map.md`](command-map.md).
|