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
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# DevRites Command Map
|
|
2
|
+
|
|
3
|
+
Reference for every shipped skill and agent — what triggers it, what it reads,
|
|
4
|
+
what it writes, and how the pieces interact.
|
|
5
|
+
|
|
6
|
+
- **Workflow diagram** (top-level flow) → [`flow.md`](flow.md).
|
|
7
|
+
- **Architecture rationale** → [`architecture.md`](architecture.md).
|
|
8
|
+
- **Worked examples** → [`usage.md`](usage.md).
|
|
9
|
+
|
|
10
|
+
## Naming convention
|
|
11
|
+
|
|
12
|
+
`devrites-` is a **namespace prefix** chosen for collision avoidance against
|
|
13
|
+
bundled Claude Code skill names (`prototype`, `handoff`, `triage`, `diagnose`,
|
|
14
|
+
…). It does **not** signal "internal" — visibility is governed by the
|
|
15
|
+
`user-invocable:` flag in each `SKILL.md`. All five public utilities use the
|
|
16
|
+
`rite-*` prefix (`rite-zoom-out`, `rite-prototype`, `rite-handoff`,
|
|
17
|
+
`rite-pressure-test`, `rite-autocomplete`); every `devrites-*` skill is
|
|
18
|
+
model-invoked.
|
|
19
|
+
|
|
20
|
+
## Public commands (`user-invocable: true`)
|
|
21
|
+
|
|
22
|
+
| Command | Phase | Argument | What it does | Reads | Writes |
|
|
23
|
+
|---|---|---|---|---|---|
|
|
24
|
+
| [`/rite`](../pack/.claude/skills/rite/SKILL.md) | menu | `[subcommand]` | Compact menu + suggested next command. Pure router; does **not** read state — that's `/rite-status`. | — | — |
|
|
25
|
+
| [`/rite-spec`](../pack/.claude/skills/rite-spec/SKILL.md) | spec | `<feature>` | **Start here.** Deep investigation → writes `spec.md` (placement, what-it-resolves, gaps closed with options, design references). Creates the workspace. | codebase + codegraph/graphify | `spec.md`, `references/`, `references.md`, `brief.md`, `questions.md`, `decisions.md`, `assumptions.md`, `state.md` |
|
|
26
|
+
| [`/rite-temper`](../pack/.claude/skills/rite-temper/SKILL.md) | temper | `[slug] [--mode]` | **Optional, before define.** Strategic review of the readied spec: scope mode (expand / selective / hold-rigor / reduce-to-MVP) + pre-mortem + 9-dimension floor-gate; folds decisions into the spec via the Spec Drift Guard. Significance-gated; **mandatory in `/rite-autocomplete`**. Reviewer: `devrites-strategy-reviewer`. | `spec.md` + decisions/assumptions + design-brief | `strategy.md`, `spec.md`, `decisions.md`, `assumptions.md` |
|
|
27
|
+
| [`/rite-define`](../pack/.claude/skills/rite-define/SKILL.md) | plan | `[slug]` | Turns the approved `spec.md` into plan + vertical task slices + state. Reads `strategy.md` if present. | `spec.md` (+ `strategy.md`) + references | `plan.md`, `tasks.md`, `state.md`, `decisions.md` |
|
|
28
|
+
| [`/rite-vet`](../pack/.claude/skills/rite-vet/SKILL.md) | vet | `[slug] [--cross-model] [--full]` | **Before build — every feature.** Engineering review of the defined plan: scope challenge (reuse / minimum-diff / complexity smell) + architecture / plan code-quality / test-coverage design / performance, confidence-banded with a quote-the-source verification gate; failure-mode + parallelization map. Hardens `plan.md` / `tasks.md` in place; writes the build-readable `test-plan.md`; acceptance-changing deltas route via the Spec Drift Guard. Runs on every plan — depth scales to stakes (light pass on simple plans, full on big/risky), never skipped; **always in `/rite-autocomplete`**. Reviewer: `devrites-plan-reviewer` (+ optional `--cross-model`). | `plan.md` + `tasks.md` + `spec.md` (+ `strategy.md`) | `eng-review.md`, `test-plan.md`, `plan.md`, `tasks.md`, `decisions.md`, `state.md` |
|
|
29
|
+
| [`/rite-plan`](../pack/.claude/skills/rite-plan/SKILL.md) | plan | `[mode]` | Decompose / reslice / repair / re-order / split / unblock an active plan. | spec/plan/tasks/state/drift + diff | `plan.md`, `tasks.md`, `state.md`, `decisions.md` |
|
|
30
|
+
| [`/rite-build`](../pack/.claude/skills/rite-build/SKILL.md) | build | `[slice]` | Implement **exactly one** vertical slice, then stop. | workspace + diff | code + `state.md`, `evidence.md`, `touched-files.md` |
|
|
31
|
+
| [`/rite-prove`](../pack/.claude/skills/rite-prove/SKILL.md) | prove | `[scope]` | Tests + build + runtime + browser proof of the completed feature. | workspace + diff | `evidence.md`, `browser-evidence.md`, `state.md` |
|
|
32
|
+
| [`/rite-polish`](../pack/.claude/skills/rite-polish/SKILL.md) | polish | `[target \| mode]` | Orchestrator. Reads `reference/code.md` always (Phase 1 + 2); reads `reference/ui.md` when UI is touched (Phase 3 + 4). Mode tokens: `bolder \| quieter \| distill \| harden \| normalize-only`. | workspace + design system + diff | `polish-report.md`, `browser-evidence.md` |
|
|
33
|
+
| [`/rite-review`](../pack/.claude/skills/rite-review/SKILL.md) | review | `[scope]` | Feature-scoped multi-axis review. Parallel Spec + Standards sub-agents (`devrites-spec-reviewer`, `devrites-code-reviewer`). | workspace + diff | `review.md`, `evidence.md`, `state.md` |
|
|
34
|
+
| [`/rite-seal`](../pack/.claude/skills/rite-seal/SKILL.md) | seal | — | GO / NO-GO **decision**, hands off to `/rite-ship`. Walks acceptance vs evidence, fans out reviewers, writes the verdict. Runs no git; on GO sets `state.md` `Next step: /rite-ship`. Triggers: "GO / NO-GO", "is it safe to merge", "decide if we can ship". | all artifacts + diff | `seal.md`, `state.md` |
|
|
35
|
+
| [`/rite-ship`](../pack/.claude/skills/rite-ship/SKILL.md) | ship | `[slug]` | Final phase. Requires a GO in `seal.md` → renders type-`GO` + runs the irreversible git ladder (commit → push → tag/PR) + closes the task (archive workspace → `.devrites/archive/<slug>/`, clear `ACTIVE`, phase `done`). Triggers: "ship it", "ship this", "push it out", "close the task". | `seal.md` + all artifacts + diff | `ship.md`, `state.md`, archive |
|
|
36
|
+
| [`/rite-autocomplete`](../pack/.claude/skills/rite-autocomplete/SKILL.md) | (orchestrator) | `[idea] [--ship\|--yolo] [--max-slices N]` | Full unattended lifecycle (spec → … → seal → ship), best option at each soft gate, rationale to `decisions.md`. Vague prompt → up-front interview; pauses on hard-risk / blocking / escalating / open-validating / NO-GO / budget-exhausted. Default stops at the final type-`GO`; `--ship` flag (alias `--yolo`) auto-confirms it. Triggers: "autocomplete", "do the whole thing". | idea + workspace | whole workspace (drives every phase) |
|
|
37
|
+
| [`/rite-quick`](../pack/.claude/skills/rite-quick/SKILL.md) | (express) | `<change>` | Express lane for a **small, reversible, unambiguous** change — one-line contract → TDD build → scoped prove → review-lite → ship, no full artifact tree. **Significance gate first**: auth / migration / public-API / destructive / multi-slice / ambiguous → escalates to `/rite-spec`. Triggers: "quick fix", "small change", "tiny tweak", "just do X". | the change + codebase | code + commit (optional `brief.md` / `evidence.md`) |
|
|
38
|
+
| [`/rite-status`](../pack/.claude/skills/rite-status/SKILL.md) | status | `[slug]` | Active feature: phase, run mode (AFK/HITL), status, next action, evidence, open questions by gate, risks, handoff readiness. Reads via the shared `devrites-lib` preamble (portable). | workspace + `.devrites/AFK` | — |
|
|
39
|
+
| [`/rite-resolve`](../pack/.claude/skills/rite-resolve/SKILL.md) | resume | `<qid> "<answer>"` \| `--drop <qid>` \| `--batch <file>` | Answer / drop / batch-resolve open `questions.md` entries; clears `state.md` `Awaiting human` and sets `Status: running`. Canonical writer for `status: open → answered`. | `questions.md` + `state.md` | `questions.md`, `state.md` |
|
|
40
|
+
| [`/rite-zoom-out`](../pack/.claude/skills/rite-zoom-out/SKILL.md) | utility | — | One-pass structural map of an unfamiliar area (modules, in-callers, out-calls, decisions) in project vocabulary. Prefers codegraph/graphify. | codebase + ADRs/CONTEXT.md | — |
|
|
41
|
+
| [`/rite-prototype`](../pack/.claude/skills/rite-prototype/SKILL.md) | utility | `[question]` | Throwaway code answering ONE design question. Logic harness OR 2–4 UI variations on one route. Captures verdict to `decisions.md`. | spec / surrounding code | prototype scratch + `decisions.md` |
|
|
42
|
+
| [`/rite-handoff`](../pack/.claude/skills/rite-handoff/SKILL.md) | utility | `[next-session-focus]` | Compacts the chat into a handoff doc. Syncs chat-only context into workspace canonical files. References existing artifacts by path. | chat + workspace | `handoff.md` + sync into canonical files |
|
|
43
|
+
| [`/rite-learn`](../pack/.claude/skills/rite-learn/SKILL.md) | utility | `[--mine \| "<lesson>"]` | Mine archived features for recurring mistakes / dismissed-finding classes; propose project-local lessons into `.devrites/learnings.md` (loaded by the review skills before a fan-out). | archive + workspace | `.devrites/learnings.md` |
|
|
44
|
+
| [`/rite-pressure-test`](../pack/.claude/skills/rite-pressure-test/SKILL.md) | utility | `[idea]` | Pressure-test a rough idea: 3–5 genuinely different options → converge on one with trade-off + hinge. | spec / surrounding code | `decisions.md` (optional) |
|
|
45
|
+
|
|
46
|
+
## Internal skills (`user-invocable: false`, model-invoked)
|
|
47
|
+
|
|
48
|
+
| Skill | Triggered by | Role | Notable |
|
|
49
|
+
|---|---|---|---|
|
|
50
|
+
| [`devrites-interview`](../pack/.claude/skills/devrites-interview/SKILL.md) | `/rite-spec`, underspecified ask | One-Q-at-a-time protocol | best-guess + confidence stop |
|
|
51
|
+
| [`devrites-source-driven`](../pack/.claude/skills/devrites-source-driven/SKILL.md) | uncertain framework/library fact | Consult docs/source, record citation | writes `evidence.md` / `decisions.md` |
|
|
52
|
+
| [`devrites-doubt`](../pack/.claude/skills/devrites-doubt/SKILL.md) | non-trivial decision in build/review | CLAIM → EXTRACT → DOUBT → RECONCILE → STOP | adversarial; ask user if uncertain |
|
|
53
|
+
| [`devrites-ux-shape`](../pack/.claude/skills/devrites-ux-shape/SKILL.md) | UI detected in `/rite-spec` | Plan UX/UI before code → `design-brief.md` (direction, states, interaction, visual-direction probe) | the build target; refs: brief-template/visual-direction-probe |
|
|
54
|
+
| [`devrites-frontend-craft`](../pack/.claude/skills/devrites-frontend-craft/SKILL.md) | UI detected in build/polish | Build **to** `design-brief.md`: register, refine-per-slice, states, anti-slop | refs: shape/craft/design-references |
|
|
55
|
+
| [`devrites-browser-proof`](../pack/.claude/skills/devrites-browser-proof/SKILL.md) | UI in prove/polish | Browser proof ladder + evidence schema | harness preferred |
|
|
56
|
+
| [`devrites-debug-recovery`](../pack/.claude/skills/devrites-debug-recovery/SKILL.md) | failing tests/build/runtime | 6-phase: loop → reproduce → hypotheses → instrument → fix → cleanup | references split per phase |
|
|
57
|
+
| [`devrites-api-interface`](../pack/.claude/skills/devrites-api-interface/SKILL.md) | cross-boundary slice | Stable API/contract design | FE/BE split |
|
|
58
|
+
| [`devrites-audit simplify`](../pack/.claude/skills/devrites-audit/SKILL.md) | `/rite-polish` Phase 1 | Chesterton's Fence, behavior-preserving simplification | dispatches `devrites-simplifier-reviewer` |
|
|
59
|
+
| [`devrites-audit security`](../pack/.claude/skills/devrites-audit/SKILL.md) | input/auth/data/integration in scope | OWASP Top 10, three-tier boundary | dispatches `devrites-security-auditor` |
|
|
60
|
+
| [`devrites-audit perf`](../pack/.claude/skills/devrites-audit/SKILL.md) | perf relevant or regression risk | Measure-first, CWV targets | dispatches `devrites-performance-reviewer` |
|
|
61
|
+
| [`reference/parallel-dispatch.md`](../pack/.claude/skills/rite-seal/reference/parallel-dispatch.md) (sibling in `rite-review/reference/`) | loaded inline by `/rite-seal` and `/rite-review` | Reference doc — dispatch shape + reconciliation rules for the parallel reviewer fan-out via the `Task` tool | not a skill — a reference file |
|
|
62
|
+
|
|
63
|
+
## Agents (`.claude/agents/devrites-*`, fresh-context subagents)
|
|
64
|
+
|
|
65
|
+
Ten **read-only reviewers** plus one **write-capable** executor (`devrites-slice-wright`).
|
|
66
|
+
|
|
67
|
+
| Agent | Spawned by | Purpose |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| [`devrites-slice-wright`](../pack/.claude/agents/devrites-slice-wright.md) | `/rite-build` (the build core) | **Write-capable** — turn one slice contract into clean, idiomatic, proven code (orient → TDD → verify, anti-slop); returns a structured artifact, writes no bookkeeping |
|
|
70
|
+
| [`devrites-strategy-reviewer`](../pack/.claude/agents/devrites-strategy-reviewer.md) | `/rite-temper` (pre-plan) | Spec-vs-rubric strategic review (ambition / scope / premise / pre-mortem / YAGNI / testability / irreversibility / cross-cutting / convention); read-only; **not** part of the seal fan-out |
|
|
71
|
+
| [`devrites-plan-reviewer`](../pack/.claude/agents/devrites-plan-reviewer.md) | `/rite-vet` (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; read-only; **not** part of the seal fan-out |
|
|
72
|
+
| [`devrites-spec-reviewer`](../pack/.claude/agents/devrites-spec-reviewer.md) | `/rite-review` Spec axis; `/rite-seal` | Does the diff implement the spec? Missing/partial/wrong criteria; scope creep |
|
|
73
|
+
| [`devrites-code-reviewer`](../pack/.claude/agents/devrites-code-reviewer.md) | `/rite-review` Standards axis; `/rite-seal` | Correctness / readability / architecture / maintainability |
|
|
74
|
+
| [`devrites-test-analyst`](../pack/.claude/agents/devrites-test-analyst.md) | `/rite-seal` | Do the tests actually prove the acceptance criteria? |
|
|
75
|
+
| [`devrites-frontend-reviewer`](../pack/.claude/agents/devrites-frontend-reviewer.md) | `/rite-seal` on UI features | UX, a11y, responsive, design-system, anti-AI-slop |
|
|
76
|
+
| [`devrites-security-auditor`](../pack/.claude/agents/devrites-security-auditor.md) | `/rite-seal` when input/auth/data in scope | OWASP Top 10, trust boundary, secrets, deps |
|
|
77
|
+
| [`devrites-performance-reviewer`](../pack/.claude/agents/devrites-performance-reviewer.md) | `/rite-seal` when perf relevant | N+1s, hot paths, payload size |
|
|
78
|
+
| [`devrites-doubt-reviewer`](../pack/.claude/agents/devrites-doubt-reviewer.md) | `devrites-doubt` loop | Adversarial check of a single claim/decision |
|
|
79
|
+
| [`devrites-simplifier-reviewer`](../pack/.claude/agents/devrites-simplifier-reviewer.md) | `devrites-audit simplify` | Independent simplification judgment |
|
|
80
|
+
|
|
81
|
+
## Engineering rules (`pack/.claude/rules/`)
|
|
82
|
+
|
|
83
|
+
Progressive-disclosure rules. Each `rite-*` skill Reads `core.md` as its
|
|
84
|
+
first step (step 0); the rest are referenced on demand. Full index in
|
|
85
|
+
[`pack/.claude/rules/README.md`](../pack/.claude/rules/README.md).
|
|
86
|
+
|
|
87
|
+
- `core.md` (always-on) — operating rules + universal anti-rationalizations + 1-line craft disciplines + persistence-before-stopping summary.
|
|
88
|
+
- `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`
|
|
89
|
+
- `anti-patterns.md` — pack-wide rationalizations + red flags. Loaded by each per-phase `rite-*/reference/anti-patterns.md`; can be loaded directly for cross-phase reluctance.
|
|
90
|
+
|
|
91
|
+
## Trigger conditions (auto-selection)
|
|
92
|
+
|
|
93
|
+
| Trigger | Routes to |
|
|
94
|
+
|---|---|
|
|
95
|
+
| Frontend/UI detected (TSX/JSX/Vue/Svelte/Astro/Angular/ERB, CSS/Tailwind/tokens, components/forms/states) | `devrites-ux-shape` in spec (writes `design-brief.md` — direction, **calibration** density/motion, states), `devrites-frontend-craft` in build (builds to it; extracts to a supplied Figma/image target), `devrites-browser-proof` in prove, `rite-polish` Phase 3 + 4 (`reference/ui.md`) in polish, UX/a11y axes at review/seal, optional **design-memory** rollup → project `DESIGN.md` at ship |
|
|
96
|
+
| Uncertain library / framework behavior | `devrites-source-driven` |
|
|
97
|
+
| Non-trivial decision (boundary, data model, auth, public API, migration, "this scales/safe") | `devrites-doubt` (+ `devrites-doubt-reviewer`) |
|
|
98
|
+
| User input / auth / storage / external integration / secrets / permissions | `devrites-audit security` (+ `devrites-security-auditor`) |
|
|
99
|
+
| Performance requirement or suspected regression | `devrites-audit perf` (+ `devrites-performance-reviewer`) |
|
|
100
|
+
| Failing tests / build / runtime / browser checks | `devrites-debug-recovery` |
|
|
101
|
+
| Slice crosses a boundary or defines a public interface | `devrites-api-interface` |
|
|
102
|
+
| Unfamiliar area, "zoom out", "map this" | `/rite-zoom-out` (uses codegraph/graphify) |
|
|
103
|
+
| Every defined plan before build; "engineering review", "review the architecture", "lock in the plan", "test coverage check" | `/rite-vet` (+ `devrites-plan-reviewer`; depth scales to stakes, never skipped; always in `/rite-autocomplete`) |
|
|
104
|
+
|
|
105
|
+
## Code-graph integration
|
|
106
|
+
|
|
107
|
+
Skills that prefer a code-intelligence index (`codegraph_*` / `graphify-out/`)
|
|
108
|
+
when available, falling back to file reads otherwise:
|
|
109
|
+
|
|
110
|
+
- `/rite-spec`, `/rite-define`, `/rite-plan` — placement / impact / callers during investigation
|
|
111
|
+
- `/rite-vet` — reuse-vs-rebuild, blast-radius, and placement-realism checks during the scope challenge + architecture axis
|
|
112
|
+
- `/rite-build` — `touched-files.md` + impact when loading slice context
|
|
113
|
+
- `/rite-review` — blast-radius checks on the diff
|
|
114
|
+
- `/rite-seal` — final blast-radius check
|
|
115
|
+
- `/devrites-doubt` — "where does this claim reach" via `codegraph_impact` / `codegraph_callers`
|
|
116
|
+
- `/rite-zoom-out` — `codegraph_context` + `codegraph_explore`
|
|
117
|
+
- `/devrites-frontend-craft` — component / token lookups
|
|
118
|
+
|
|
119
|
+
## Interactions (typical flow)
|
|
120
|
+
|
|
121
|
+
See [`flow.md`](flow.md) for the Mermaid diagrams. The text path:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
/rite-spec → /rite-define → /rite-build ×N → /rite-prove → /rite-polish → /rite-review → /rite-seal → /rite-ship
|
|
125
|
+
│ │ │ ▲ │ │ (decide) (execute+close)
|
|
126
|
+
│ │ │ └ Spec Drift Guard → /rite-plan repair ────┘
|
|
127
|
+
│ │ └ devrites-frontend-craft / source-driven / doubt
|
|
128
|
+
└ (no workspace) → summary devrites-* internal skills fire on triggers above
|
|
129
|
+
|
|
130
|
+
/rite-autocomplete drives the entire sequence above unattended (best option per soft gate; --ship auto-confirms ship).
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- Every phase **reads the active workspace first**; if none, it stops and tells
|
|
134
|
+
the user to run `/rite-spec <feature>`.
|
|
135
|
+
- **Spec Drift Guard** lives in build/prove/polish/review/seal: on drift,
|
|
136
|
+
stop, record in `drift.md`, classify, ask the user if product behavior
|
|
137
|
+
changes, then `/rite-plan repair` before resuming.
|
|
138
|
+
- `/rite-seal` fans out to `.claude/agents/devrites-*` reviewers **in
|
|
139
|
+
parallel** for independent, fresh-context judgment, then writes the GO /
|
|
140
|
+
NO-GO verdict — it runs no git. On GO it hands off to `/rite-ship`, which
|
|
141
|
+
renders type-`GO`, runs the irreversible git ladder, and closes the task by
|
|
142
|
+
archiving the workspace to `.devrites/archive/<slug>/` and clearing
|
|
143
|
+
`.devrites/ACTIVE`.
|
package/docs/flow.md
ADDED
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# DevRites — flow diagrams
|
|
2
|
+
|
|
3
|
+
Visual reference for how the skills, agents, and rules fit together. GitHub
|
|
4
|
+
renders Mermaid natively — open this file on the repo to see the graphs.
|
|
5
|
+
|
|
6
|
+
For the full per-skill table, see [`command-map.md`](command-map.md). For the
|
|
7
|
+
"why" behind each piece, see [`architecture.md`](architecture.md).
|
|
8
|
+
|
|
9
|
+
## 1. Feature lifecycle
|
|
10
|
+
|
|
11
|
+
The happy path. Every arrow assumes the readiness gate of the previous phase
|
|
12
|
+
passed; failures route through `/rite-plan repair` or `devrites-debug-recovery`.
|
|
13
|
+
HITL slices pause before code is written; `/rite-resolve` is the resume verb.
|
|
14
|
+
|
|
15
|
+
```mermaid
|
|
16
|
+
flowchart LR
|
|
17
|
+
Start([user has an idea]) --> Spec[/rite-spec/]
|
|
18
|
+
Spec -.->|UI detected| Shape[devrites-ux-shape<br/>plan UX/UI → design-brief.md]
|
|
19
|
+
Shape -.->|brief confirmed| Spec
|
|
20
|
+
Spec -->|spec.md ready| Define[/rite-define/]
|
|
21
|
+
Define -->|plan.md + tasks.md<br/>each slice tagged AFK/HITL| Build[/rite-build/]
|
|
22
|
+
Build -->|one slice done<br/>+ evidence| Build
|
|
23
|
+
Build -->|HITL gate fires| Await{{Awaiting human<br/>state.md + questions.md}}
|
|
24
|
+
Await -->|"/rite-resolve <qid> <answer>"| Build
|
|
25
|
+
Build -->|all slices built| Prove[/rite-prove/]
|
|
26
|
+
Prove -->|evidence captured| Polish[/rite-polish/]
|
|
27
|
+
Polish -->|polish-report.md| Review[/rite-review/]
|
|
28
|
+
Review -->|review.md<br/>Critical == 0| Seal[/rite-seal/]
|
|
29
|
+
Seal -->|GO| Ship2[/rite-ship/]
|
|
30
|
+
Ship2 -->|type-GO| Shipped([commit · push · tag · archive])
|
|
31
|
+
Seal -->|NO-GO| Repair[/rite-plan repair/]
|
|
32
|
+
Repair --> Build
|
|
33
|
+
|
|
34
|
+
Build -.->|Spec Drift Guard| Repair
|
|
35
|
+
Prove -.->|drift / failure| Repair
|
|
36
|
+
Polish -.->|drift| Repair
|
|
37
|
+
Review -.->|drift| Repair
|
|
38
|
+
|
|
39
|
+
classDef phase fill:#1f2937,stroke:#60a5fa,stroke-width:1px,color:#f9fafb
|
|
40
|
+
classDef done fill:#064e3b,stroke:#34d399,color:#ecfdf5
|
|
41
|
+
classDef repair fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
42
|
+
classDef gate fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
43
|
+
classDef internal fill:#0f172a,stroke:#9ca3af,color:#f9fafb
|
|
44
|
+
class Spec,Define,Build,Prove,Polish,Review,Seal,Ship2 phase
|
|
45
|
+
class Shipped done
|
|
46
|
+
class Repair repair
|
|
47
|
+
class Await gate
|
|
48
|
+
class Shape internal
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 2. `/rite-polish` orchestrator
|
|
52
|
+
|
|
53
|
+
`/rite-polish` is a thin dispatcher that always runs code polish and runs UI
|
|
54
|
+
polish only when the diff touches UI files.
|
|
55
|
+
|
|
56
|
+
```mermaid
|
|
57
|
+
flowchart TD
|
|
58
|
+
P[/rite-polish/] -->|read diff + touched-files.md| D{UI<br/>touched?}
|
|
59
|
+
D -->|always| Code[reference/code.md<br/>Phase 1 + 2]
|
|
60
|
+
D -->|yes| UI[reference/ui.md<br/>Phase 3 + 4]
|
|
61
|
+
Code -->|appends to polish-report.md| Out([polish-report.md])
|
|
62
|
+
UI -->|appends to polish-report.md| Out
|
|
63
|
+
Code -.->|Phase 1| Simp[devrites-audit simplify]
|
|
64
|
+
Simp -.->|spawns| SR[devrites-simplifier-reviewer]
|
|
65
|
+
|
|
66
|
+
classDef orch fill:#1f2937,stroke:#60a5fa,color:#f9fafb
|
|
67
|
+
classDef sub fill:#312e81,stroke:#818cf8,color:#eef2ff
|
|
68
|
+
classDef agent fill:#7c2d12,stroke:#fb923c,color:#fff7ed
|
|
69
|
+
class P orch
|
|
70
|
+
class Code,UI,Simp sub
|
|
71
|
+
class SR agent
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Mode tokens passed to `/rite-polish` (`bolder`, `quieter`, `distill`,
|
|
75
|
+
`harden`, `normalize-only`) flow through to Phase 4 (`reference/ui.md`) as
|
|
76
|
+
emphasis dials. `normalize-only` stops after Phase 3.
|
|
77
|
+
|
|
78
|
+
## 3. `/rite-review` parallel axes
|
|
79
|
+
|
|
80
|
+
Review runs Spec coverage and Standards compliance in parallel sub-agents so
|
|
81
|
+
neither masks the other.
|
|
82
|
+
|
|
83
|
+
```mermaid
|
|
84
|
+
flowchart LR
|
|
85
|
+
R[/rite-review/] -->|spawn parallel<br/>via Task tool| S[devrites-spec-reviewer<br/>**Spec axis**]
|
|
86
|
+
R -->|spawn parallel<br/>via Task tool| C[devrites-code-reviewer<br/>**Standards axis**]
|
|
87
|
+
S -->|missing / partial / wrong /<br/>scope-creep findings| Combine
|
|
88
|
+
C -->|standards violations<br/>cite rule + file| Combine
|
|
89
|
+
R --> Sec[devrites-audit security]
|
|
90
|
+
R --> Perf[devrites-audit perf]
|
|
91
|
+
Sec -->|labelled findings| Combine
|
|
92
|
+
Perf -->|labelled findings| Combine
|
|
93
|
+
Combine([review.md<br/>Critical / Important / Suggestion / Nit / FYI])
|
|
94
|
+
|
|
95
|
+
classDef phase fill:#1f2937,stroke:#60a5fa,color:#f9fafb
|
|
96
|
+
classDef agent fill:#7c2d12,stroke:#fb923c,color:#fff7ed
|
|
97
|
+
classDef skill fill:#312e81,stroke:#818cf8,color:#eef2ff
|
|
98
|
+
class R phase
|
|
99
|
+
class S,C agent
|
|
100
|
+
class Sec,Perf skill
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 4. `/rite-seal` fan-out
|
|
104
|
+
|
|
105
|
+
The seal fans out **all** relevant reviewers in parallel and reconciles their
|
|
106
|
+
findings, then **decides** GO / NO-GO and stops. It no longer runs git — on GO
|
|
107
|
+
it hands off to `/rite-ship`, which renders the type-GO prompt and runs the
|
|
108
|
+
irreversible commit · push · tag · archive. The advisory `/20` score has been
|
|
109
|
+
removed — the gate is severity + acceptance + drift.
|
|
110
|
+
|
|
111
|
+
```mermaid
|
|
112
|
+
flowchart TB
|
|
113
|
+
Seal[/rite-seal/] -->|read all artifacts| Walk[walk acceptance<br/>criteria one by one]
|
|
114
|
+
Walk -->|spawn in parallel| SpecRev[devrites-spec-reviewer]
|
|
115
|
+
Walk -->|spawn in parallel| CodeRev[devrites-code-reviewer]
|
|
116
|
+
Walk -->|spawn in parallel| TestRev[devrites-test-analyst]
|
|
117
|
+
Walk -.->|UI only| FERev[devrites-frontend-reviewer]
|
|
118
|
+
Walk -.->|input/auth/data| SecRev[devrites-security-auditor]
|
|
119
|
+
Walk -.->|perf relevant| PerfRev[devrites-performance-reviewer]
|
|
120
|
+
SpecRev --> Gate
|
|
121
|
+
CodeRev --> Gate
|
|
122
|
+
TestRev --> Gate
|
|
123
|
+
FERev --> Gate
|
|
124
|
+
SecRev --> Gate
|
|
125
|
+
PerfRev --> Gate
|
|
126
|
+
Gate{Critical == 0?<br/>Acceptance proven?<br/>Drift resolved?}
|
|
127
|
+
Gate -->|yes + Important == 0| Go
|
|
128
|
+
Gate -->|yes + Important > 0| YN[render interactive<br/>y/N prompt]
|
|
129
|
+
Gate -->|no| NoGo[NO-GO]
|
|
130
|
+
YN -->|y| Go
|
|
131
|
+
YN -->|N| NoGo
|
|
132
|
+
Go[GO: write seal.md<br/>Next step: /rite-ship] -->|hand off, type-GO + git live in ship| Ship([/rite-ship/])
|
|
133
|
+
|
|
134
|
+
classDef phase fill:#1f2937,stroke:#60a5fa,color:#f9fafb
|
|
135
|
+
classDef agent fill:#7c2d12,stroke:#fb923c,color:#fff7ed
|
|
136
|
+
classDef gate fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
137
|
+
classDef ship fill:#064e3b,stroke:#34d399,color:#ecfdf5
|
|
138
|
+
classDef stop fill:#7f1d1d,stroke:#f87171,color:#fee2e2
|
|
139
|
+
class Seal,Walk phase
|
|
140
|
+
class SpecRev,CodeRev,TestRev,FERev,SecRev,PerfRev agent
|
|
141
|
+
class Gate,YN gate
|
|
142
|
+
class Go,Ship ship
|
|
143
|
+
class NoGo stop
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 5. `devrites-debug-recovery` six-phase loop
|
|
147
|
+
|
|
148
|
+
Failure recovery — the loop construction in Phase 1 is the load-bearing piece.
|
|
149
|
+
|
|
150
|
+
```mermaid
|
|
151
|
+
flowchart LR
|
|
152
|
+
F([failing test /<br/>build / runtime]) --> L1[Phase 1<br/>Build the loop]
|
|
153
|
+
L1 -->|fast deterministic signal| R[Phase 2<br/>Reproduce]
|
|
154
|
+
R -->|exact error text| H[Phase 3<br/>Ranked hypotheses 3-5]
|
|
155
|
+
H -->|show user before testing| I[Phase 4<br/>Instrument]
|
|
156
|
+
I -->|change one variable| Fix[Phase 5<br/>Fix + regression test]
|
|
157
|
+
Fix --> C[Phase 6<br/>Cleanup + classify]
|
|
158
|
+
L1 -.->|can't build loop| Ask([STOP — ask user])
|
|
159
|
+
|
|
160
|
+
classDef phase fill:#1f2937,stroke:#60a5fa,color:#f9fafb
|
|
161
|
+
classDef stop fill:#7f1d1d,stroke:#f87171,color:#fee2e2
|
|
162
|
+
class L1,R,H,I,Fix,C phase
|
|
163
|
+
class Ask stop
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Each phase's detail lives in a separate reference file under
|
|
167
|
+
`pack/.claude/skills/devrites-debug-recovery/reference/` so the SKILL.md body
|
|
168
|
+
stays small.
|
|
169
|
+
|
|
170
|
+
## 6. Engineering-rules carrier
|
|
171
|
+
|
|
172
|
+
Each `rite-*` skill Reads `.claude/rules/core.md` (the always-on subset) as
|
|
173
|
+
its first step (step 0); the other rule files load on demand. Per-phase
|
|
174
|
+
skills pull additional rule files via plain `Read` as their workflow
|
|
175
|
+
demands. No carrier skill, no session-start autoload.
|
|
176
|
+
|
|
177
|
+
```mermaid
|
|
178
|
+
flowchart TD
|
|
179
|
+
R[rite-* skill<br/>step 0] -->|always-on| Core[.claude/rules/core.md]
|
|
180
|
+
R -->|on demand index| Idx[(.claude/rules/README.md<br/>15 specialist rule files)]
|
|
181
|
+
Idx --> CS[coding-style.md]
|
|
182
|
+
Idx --> EH[error-handling.md]
|
|
183
|
+
Idx --> T[testing.md]
|
|
184
|
+
Idx --> CR[code-review.md]
|
|
185
|
+
Idx --> S[security.md]
|
|
186
|
+
Idx --> P[performance.md]
|
|
187
|
+
Idx --> Pat[patterns.md]
|
|
188
|
+
Idx --> Gw[git-workflow.md]
|
|
189
|
+
Idx --> Hk[hooks.md]
|
|
190
|
+
Idx --> Doc[documentation.md]
|
|
191
|
+
Idx --> DWf[development-workflow.md]
|
|
192
|
+
Idx --> Ag[agents.md]
|
|
193
|
+
Idx --> CH[context-hygiene.md]
|
|
194
|
+
Idx --> Afk[afk-hitl.md]
|
|
195
|
+
Idx --> AP[anti-patterns.md]
|
|
196
|
+
|
|
197
|
+
Build[/rite-build/] -.->|pulls| CS
|
|
198
|
+
Build -.->|pulls| EH
|
|
199
|
+
Build -.->|pulls| T
|
|
200
|
+
Polish[/rite-polish/] -.->|pulls| CS
|
|
201
|
+
Polish -.->|pulls| Pat
|
|
202
|
+
Review[/rite-review/] -.->|pulls| CR
|
|
203
|
+
Review -.->|pulls| S
|
|
204
|
+
Review -.->|pulls| P
|
|
205
|
+
Seal[/rite-seal/] -.->|pulls| Ag
|
|
206
|
+
Seal -.->|pulls| CR
|
|
207
|
+
Ship[/rite-ship/] -.->|pulls| Gw
|
|
208
|
+
|
|
209
|
+
classDef carrier fill:#312e81,stroke:#818cf8,color:#eef2ff
|
|
210
|
+
classDef rule fill:#1f2937,stroke:#9ca3af,color:#f9fafb
|
|
211
|
+
classDef phase fill:#064e3b,stroke:#34d399,color:#ecfdf5
|
|
212
|
+
class R carrier
|
|
213
|
+
class Core,CS,EH,T,CR,S,P,Pat,Gw,Hk,Doc,DWf,Ag,CH,Afk,AP rule
|
|
214
|
+
class Build,Polish,Review,Seal,Ship phase
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## 7. Workspace state model
|
|
218
|
+
|
|
219
|
+
`.devrites/work/<feature-slug>/` is the durable memory each phase reads
|
|
220
|
+
before doing anything. **Every** rite-* skill reads the workspace first; if
|
|
221
|
+
no `ACTIVE` is set, it tells the user to run `/rite-spec`. The optional
|
|
222
|
+
`.devrites/AFK` sentinel sits beside `ACTIVE` and toggles the session-level
|
|
223
|
+
run mode for all skills.
|
|
224
|
+
|
|
225
|
+
```mermaid
|
|
226
|
+
erDiagram
|
|
227
|
+
ACTIVE ||--o| WORKSPACE : points-to
|
|
228
|
+
AFK_SENTINEL }|..|| RUN_MODE : "presence is authoritative — skills re-read at decision time"
|
|
229
|
+
WORKSPACE ||--|| state : has
|
|
230
|
+
WORKSPACE ||--|| brief : has
|
|
231
|
+
WORKSPACE ||--|| spec : has
|
|
232
|
+
WORKSPACE ||--o| strategy : "has (optional — from /rite-temper)"
|
|
233
|
+
WORKSPACE ||--|| plan : "has (from /rite-define)"
|
|
234
|
+
WORKSPACE ||--|| tasks : "has — slices tagged Mode + Gate"
|
|
235
|
+
WORKSPACE ||--o| eng-review : "has (from /rite-vet — every plan, light or full)"
|
|
236
|
+
WORKSPACE ||--o| test-plan : "has (from /rite-vet; build + prove read it)"
|
|
237
|
+
WORKSPACE ||--o{ references : "has (design refs)"
|
|
238
|
+
WORKSPACE ||--o| design-brief : "has (UI features — from /rite-spec via devrites-ux-shape; the build target)"
|
|
239
|
+
WORKSPACE ||--|| questions : "has — qid, gate, status (open/answered/dropped)"
|
|
240
|
+
WORKSPACE ||--|| decisions : has
|
|
241
|
+
WORKSPACE ||--|| assumptions : has
|
|
242
|
+
WORKSPACE ||--|| drift : has
|
|
243
|
+
WORKSPACE ||--|| touched-files : "has (from /rite-build)"
|
|
244
|
+
WORKSPACE ||--|| evidence : "has (from /rite-prove)"
|
|
245
|
+
WORKSPACE ||--o| browser-evidence : "has (UI features)"
|
|
246
|
+
WORKSPACE ||--o| polish-report : "has (from /rite-polish)"
|
|
247
|
+
WORKSPACE ||--o| review : "has (from /rite-review)"
|
|
248
|
+
WORKSPACE ||--o| seal : "has (from /rite-seal)"
|
|
249
|
+
WORKSPACE ||--o| ship : "has (from /rite-ship; archived on close)"
|
|
250
|
+
|
|
251
|
+
ACTIVE {
|
|
252
|
+
string slug "names the current workspace"
|
|
253
|
+
}
|
|
254
|
+
AFK_SENTINEL {
|
|
255
|
+
bool present "presence = AFK active"
|
|
256
|
+
int max_slices "read-only initial budget — copied to state.md once"
|
|
257
|
+
string notify "optional shell command on pause"
|
|
258
|
+
list allow_gates "gate severities AFK may auto-handle"
|
|
259
|
+
}
|
|
260
|
+
WORKSPACE {
|
|
261
|
+
string slug PK ".devrites/work/<slug>/"
|
|
262
|
+
}
|
|
263
|
+
state {
|
|
264
|
+
string phase "spec | plan | build | prove | polish | review | seal | ship | done"
|
|
265
|
+
string status "running | awaiting_human | blocked | done"
|
|
266
|
+
string active_slice "N — name"
|
|
267
|
+
int afk_slices_remaining "from .devrites/AFK max_slices on first AFK build"
|
|
268
|
+
block awaiting_human "qid, gate, question, proposed, raised_at (only when paused)"
|
|
269
|
+
}
|
|
270
|
+
questions {
|
|
271
|
+
string qid PK "q-YYYY-MM-DD-NNN"
|
|
272
|
+
string status "open | answered | dropped"
|
|
273
|
+
string gate "advisory | validating | blocking | escalating"
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
The exact list of files per workspace and what each holds is in
|
|
278
|
+
[`usage.md`](usage.md#the-workspace). The full pause/resume contract is in
|
|
279
|
+
[`pack/.claude/rules/afk-hitl.md`](../pack/.claude/rules/afk-hitl.md).
|
|
280
|
+
|
|
281
|
+
## 8. Public vs internal namespace
|
|
282
|
+
|
|
283
|
+
The `devrites-` prefix is collision-avoidance against bundled Claude Code
|
|
284
|
+
skills (`prototype`, `handoff`, `triage`, `diagnose`). Visibility is the
|
|
285
|
+
`user-invocable:` flag, not the prefix.
|
|
286
|
+
|
|
287
|
+
```mermaid
|
|
288
|
+
flowchart TB
|
|
289
|
+
subgraph Public["Public (user-invocable: true) — 19 skills"]
|
|
290
|
+
direction TB
|
|
291
|
+
R1[/rite/]
|
|
292
|
+
R2[/rite-spec/]
|
|
293
|
+
RT[/rite-temper/]
|
|
294
|
+
R3[/rite-define/]
|
|
295
|
+
RV[/rite-vet/]
|
|
296
|
+
R4[/rite-plan/]
|
|
297
|
+
R5[/rite-build/]
|
|
298
|
+
R6[/rite-prove/]
|
|
299
|
+
R7[/rite-polish/]
|
|
300
|
+
R8[/rite-review/]
|
|
301
|
+
R9[/rite-seal/]
|
|
302
|
+
R12[/rite-ship/]
|
|
303
|
+
R13[/rite-autocomplete/]
|
|
304
|
+
R10[/rite-status/]
|
|
305
|
+
R11[/rite-resolve/]
|
|
306
|
+
IPT[/rite-pressure-test/]
|
|
307
|
+
D1[/rite-zoom-out/]
|
|
308
|
+
D2[/rite-prototype/]
|
|
309
|
+
D3[/rite-handoff/]
|
|
310
|
+
end
|
|
311
|
+
subgraph Internal["Internal (user-invocable: false) — 9 skills, model-invoked"]
|
|
312
|
+
direction TB
|
|
313
|
+
I1[devrites-api-interface]
|
|
314
|
+
I2[devrites-audit<br/>security · perf · simplify]
|
|
315
|
+
I3[devrites-browser-proof]
|
|
316
|
+
I4[devrites-debug-recovery]
|
|
317
|
+
I5[devrites-doubt]
|
|
318
|
+
I6[devrites-frontend-craft]
|
|
319
|
+
I7[devrites-interview]
|
|
320
|
+
I8[devrites-source-driven]
|
|
321
|
+
I9[devrites-ux-shape]
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
classDef pub fill:#064e3b,stroke:#34d399,color:#ecfdf5
|
|
325
|
+
classDef int fill:#1f2937,stroke:#9ca3af,color:#f9fafb
|
|
326
|
+
class R1,R2,RT,R3,RV,R4,R5,R6,R7,R8,R9,R12,R13,R10,R11,IPT,D1,D2,D3 pub
|
|
327
|
+
class I1,I2,I3,I4,I5,I6,I7,I8,I9 int
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## 9. AFK & HITL state machine
|
|
331
|
+
|
|
332
|
+
The pause/resume primitive for HITL gates and the AFK loop discipline. The
|
|
333
|
+
gate firing on `/rite-build` is the only writer of `Awaiting human`;
|
|
334
|
+
`/rite-resolve` is the only canonical clearer.
|
|
335
|
+
|
|
336
|
+
```mermaid
|
|
337
|
+
stateDiagram-v2
|
|
338
|
+
[*] --> running: /rite-build starts
|
|
339
|
+
running --> running: AFK slice + advisory finding<br/>(log to questions.md, proceed)
|
|
340
|
+
running --> awaiting_human: HITL gate fires<br/>(blocking / escalating / out-of-gate)
|
|
341
|
+
running --> awaiting_human: Fail-on-red<br/>(tests/types/lint)
|
|
342
|
+
running --> awaiting_human: Irreversible risk<br/>(destructive · auth · public API)
|
|
343
|
+
awaiting_human --> running: /rite-resolve qid "<answer>"
|
|
344
|
+
awaiting_human --> running: /rite-resolve --drop qid
|
|
345
|
+
awaiting_human --> blocked: /rite-plan repair (scope change)
|
|
346
|
+
blocked --> running: plan repaired
|
|
347
|
+
running --> done: sealed GO + /rite-ship<br/>(type-GO → commit · push · tag · archive)
|
|
348
|
+
done --> [*]
|
|
349
|
+
|
|
350
|
+
note right of awaiting_human
|
|
351
|
+
state.md: Status: awaiting_human
|
|
352
|
+
state.md: Awaiting human block
|
|
353
|
+
questions.md: gate, qid, proposed, raised_at
|
|
354
|
+
notify hook fired (if .devrites/AFK has one)
|
|
355
|
+
end note
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
`AFK` mode (`.devrites/AFK` present) widens which transitions stay in
|
|
359
|
+
`running` via `allow_gates` — but `blocking`, `escalating`, fail-on-red, and
|
|
360
|
+
the irreversible-risk list always transition to `awaiting_human` regardless.
|
package/docs/release.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Release pipeline
|
|
2
|
+
|
|
3
|
+
Releases are **fully automated** via [semantic-release](https://semantic-release.gitbook.io/): every push to `main` is analyzed; if the merged commits carry a `feat:`, `fix:`, `perf:`, `refactor:`, `build:`, `docs(README):` (or a `BREAKING CHANGE:` footer) the `.github/workflows/release.yml` job determines the next SemVer version and:
|
|
4
|
+
|
|
5
|
+
1. Runs `scripts/validate.sh` + install / uninstall smoke tests.
|
|
6
|
+
2. Syncs the new version into `package.json`, `.claude-plugin/plugin.json`, and `.claude-plugin/marketplace.json` (`scripts/sync-version.sh`).
|
|
7
|
+
3. Builds a `dist/devrites-v<version>.tar.gz` release artifact via `scripts/build-release-tarball.sh` — the extractable bundle end-users get if they don't install via the plugin marketplace.
|
|
8
|
+
4. Regenerates `CHANGELOG.md` from the commits.
|
|
9
|
+
5. Commits the version bump + changelog as `chore(release): <version> [skip ci]`, creates a git tag `v<version>`, and publishes a GitHub Release with the tarball attached.
|
|
10
|
+
|
|
11
|
+
Local dry-run: `npm run release:dry` (shows the version bump + draft notes without publishing). The release job is gated by passing CI — a broken `main` won't ship.
|
|
12
|
+
|
|
13
|
+
## Authoring commits that trigger releases
|
|
14
|
+
|
|
15
|
+
| Commit prefix | Bump |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `feat:` | **minor** (`0.1.0` → `0.2.0`) |
|
|
18
|
+
| `fix:` / `perf:` / `refactor:` / `build:` / `docs(README):` | **patch** (`0.1.0` → `0.1.1`) |
|
|
19
|
+
| Any type with `BREAKING CHANGE:` footer or `!` after type (e.g. `feat!:`) | **major** (`0.1.0` → `1.0.0`) |
|
|
20
|
+
| `chore:` / `ci:` / `test:` / `docs:` (non-README) | no release |
|
|
21
|
+
| Any scope `(no-release)` (e.g. `feat(no-release): …`) | no release |
|
|
22
|
+
|
|
23
|
+
Husky + commitlint reject non-conventional messages at commit time, so you can't accidentally bypass the rules.
|
|
24
|
+
|
|
25
|
+
## Dependency updates
|
|
26
|
+
|
|
27
|
+
Dependabot watches the `npm` and `github-actions` ecosystems and opens a **weekly grouped PR** with all patch + minor bumps (see [`.github/dependabot.yml`](../.github/dependabot.yml)). The [`dependabot-auto-merge.yml`](../.github/workflows/dependabot-auto-merge.yml) workflow auto-approves + enables auto-merge (squash) on those PRs so they land the instant CI is green — no manual click. Major-version bumps stay open with a `needs-review` label so a human can scan the changelog before merging.
|
|
28
|
+
|
|
29
|
+
> GitHub does not allow Dependabot to push directly to `main` — a PR is always opened. Auto-merge is the closest equivalent. Required CI checks still gate the merge.
|