devrites 3.0.5 → 3.0.6
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/CHANGELOG.md +15 -0
- package/README.md +280 -533
- package/SECURITY.md +26 -26
- package/docs/adr/README.md +7 -9
- package/docs/agents/domain.md +5 -5
- package/docs/agents/issue-driven-rites.md +1 -1
- package/docs/agents/issue-tracker.md +1 -1
- package/docs/agents/triage-labels.md +2 -2
- package/docs/architecture.md +45 -45
- package/docs/cli.md +11 -11
- package/docs/command-map.md +33 -33
- package/docs/engine/agent-contract.md +6 -6
- package/docs/engine/commands.md +66 -65
- package/docs/engine/state-schema.md +15 -15
- package/docs/engine/workspace-schema.md +7 -7
- package/docs/extensions.md +17 -17
- package/docs/flow.md +17 -17
- package/docs/harness-compliance.md +2 -2
- package/docs/orchestration.md +21 -20
- package/docs/release.md +22 -5
- package/docs/research/go-authoritative-workflow-schema-and-quality-2026-07-20.md +3 -3
- package/docs/skills.md +77 -52
- package/docs/usage.md +33 -32
- package/engine/Makefile +2 -2
- package/engine/commands.go +3 -3
- package/engine/harnessmatrix.go +2 -2
- package/engine/hookpolicy.go +9 -9
- package/engine/hooks.go +11 -11
- package/engine/hooks_workspace.go +11 -11
- package/engine/internal/doctor/doctor.go +7 -7
- package/engine/internal/gate/gate.go +11 -11
- package/engine/internal/harness/compliance.go +1 -1
- package/engine/internal/harness/harness.go +7 -7
- package/engine/internal/install/install.go +2 -0
- package/engine/internal/install/install_test.go +3 -3
- package/engine/internal/iohooks/detach_unix.go +1 -1
- package/engine/internal/iohooks/iohooks.go +8 -8
- package/engine/internal/lib/adoption.go +1 -1
- package/engine/internal/lib/analyze.go +15 -15
- package/engine/internal/lib/archivesearch.go +3 -3
- package/engine/internal/lib/budget.go +3 -3
- package/engine/internal/lib/buildreadiness.go +6 -6
- package/engine/internal/lib/checkacceptance.go +10 -10
- package/engine/internal/lib/closeout.go +5 -5
- package/engine/internal/lib/conventions.go +3 -3
- package/engine/internal/lib/coverage.go +4 -4
- package/engine/internal/lib/doubtcoverage.go +9 -9
- package/engine/internal/lib/evidencefresh.go +6 -6
- package/engine/internal/lib/extensions.go +9 -9
- package/engine/internal/lib/footprint.go +13 -13
- package/engine/internal/lib/jsonout.go +2 -2
- package/engine/internal/lib/lanes.go +2 -2
- package/engine/internal/lib/learnings.go +9 -9
- package/engine/internal/lib/ledger.go +8 -8
- package/engine/internal/lib/ledger_test.go +5 -5
- package/engine/internal/lib/mutationgate.go +4 -4
- package/engine/internal/lib/overrides.go +9 -9
- package/engine/internal/lib/overrides_test.go +2 -2
- package/engine/internal/lib/packageexistence.go +5 -5
- package/engine/internal/lib/preamble.go +6 -6
- package/engine/internal/lib/progress.go +5 -5
- package/engine/internal/lib/reconcile.go +80 -20
- package/engine/internal/lib/reconcile_test.go +13 -5
- package/engine/internal/lib/resolve.go +3 -3
- package/engine/internal/lib/reviewerstats.go +2 -2
- package/engine/internal/lib/reviewintegrity.go +13 -13
- package/engine/internal/lib/reviewintegrity_test.go +6 -6
- package/engine/internal/lib/runbook.go +1 -1
- package/engine/internal/lib/session.go +1 -1
- package/engine/internal/lib/session_test.go +2 -2
- package/engine/internal/lib/specparse.go +4 -4
- package/engine/internal/lib/specskeleton.go +2 -2
- package/engine/internal/lib/specvalidate.go +13 -13
- package/engine/internal/lib/stuck.go +13 -13
- package/engine/internal/lib/templates/conventions_ledger_header.md +1 -1
- package/engine/internal/lib/templates/conventions_orient_header.txt +1 -1
- package/engine/internal/lib/testintegrity.go +9 -9
- package/engine/internal/lib/tickafk.go +4 -4
- package/engine/internal/migrate/migrate.go +2 -2
- package/engine/internal/migrate/migrate_test.go +1 -0
- package/engine/internal/orient/firstrun.go +8 -8
- package/engine/internal/orient/orient.go +5 -5
- package/engine/internal/state/concurrency_test.go +4 -4
- package/engine/internal/state/feature.go +6 -6
- package/engine/internal/state/lock_unix.go +1 -1
- package/engine/internal/state/schema.go +1 -1
- package/engine/internal/state/snapshot.go +2 -2
- package/engine/internal/state/write.go +1 -1
- package/engine/internal/version/version.go +1 -1
- package/engine/main.go +5 -5
- package/engine/subagent_orient_context.txt +4 -4
- package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +1 -1
- package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +2 -2
- package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +3 -3
- package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +2 -2
- package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +4 -4
- package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +3 -3
- package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +3 -3
- package/engine/testdata/golden/TestParityBudget/extra-md.golden +1 -1
- package/engine/testdata/golden/TestParityBudget/over-advisory.golden +1 -1
- package/engine/testdata/golden/TestParityBudget/over-strict.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +1 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +1 -1
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +1 -1
- package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +2 -2
- package/engine/testdata/golden/TestParityCursor/bare.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/full-afk.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/full-hitl.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/red.golden +2 -2
- package/engine/testdata/golden/TestParityCursor/zerogates.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/mine.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +1 -1
- package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +1 -1
- package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +1 -1
- package/engine/testdata/golden/TestParityPackageExistence/declared.golden +1 -1
- package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
- package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +1 -1
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +1 -1
- package/engine/testdata/golden/TestParityResolve/batch.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/few.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/identical.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/varied.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +1 -1
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +1 -1
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +1 -1
- package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +1 -1
- package/engine/testdata/golden/TestParityTickAfk/missingField.golden +1 -1
- package/engine/testdata/golden/TestParityTickAfk/none.golden +1 -1
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
- package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +1 -1
- package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +1 -1
- package/engine/tests/adr_0004_required_by_phase_test.go +2 -2
- package/engine/tests/adr_0006_clock_seam_test.go +1 -1
- package/engine/tests/budget_test.go +1 -1
- package/engine/tests/canonical_ac_ids_test.go +2 -2
- package/engine/tests/cli_test.go +1 -1
- package/engine/tests/concurrency_cli_test.go +1 -1
- package/engine/tests/gate_test.go +4 -4
- package/engine/tests/hook_test.go +3 -3
- package/engine/tests/hooks_io_test.go +1 -1
- package/engine/tests/lib_parity_test.go +29 -29
- package/engine/tests/meta_test.go +2 -2
- package/engine/tests/parity_closeout_test.go +1 -1
- package/engine/tests/parity_learnings_test.go +2 -2
- package/engine/tests/parity_mutationgate_test.go +2 -2
- package/engine/tests/parity_resolve_test.go +1 -1
- package/engine/tests/parity_test.go +3 -3
- package/engine/tests/parity_tickafk_test.go +1 -1
- package/engine/validatepack.go +5 -5
- package/engine/validatepackskills.go +9 -9
- package/pack/.claude/agents/devrites-code-reviewer.md +21 -22
- package/pack/.claude/agents/devrites-devex-reviewer.md +17 -17
- package/pack/.claude/agents/devrites-doubt-reviewer.md +6 -6
- package/pack/.claude/agents/devrites-forge-judge.md +26 -26
- package/pack/.claude/agents/devrites-frontend-reviewer.md +17 -17
- package/pack/.claude/agents/devrites-performance-reviewer.md +19 -18
- package/pack/.claude/agents/devrites-plan-reviewer.md +29 -27
- package/pack/.claude/agents/devrites-retrospector.md +19 -19
- package/pack/.claude/agents/devrites-security-auditor.md +15 -15
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +14 -14
- package/pack/.claude/agents/devrites-slice-wright.md +52 -51
- package/pack/.claude/agents/devrites-spec-reviewer.md +11 -11
- package/pack/.claude/agents/devrites-strategy-reviewer.md +21 -21
- package/pack/.claude/agents/devrites-test-analyst.md +13 -13
- package/pack/.claude/settings.json +1 -1
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +12 -12
- package/pack/.claude/skills/devrites-audit/SKILL.md +7 -7
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +16 -16
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +14 -14
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/.claude/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/.claude/skills/devrites-doubt/SKILL.md +14 -14
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +18 -18
- package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/.claude/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/.claude/skills/devrites-interview/SKILL.md +27 -27
- package/pack/.claude/skills/devrites-lib/SKILL.md +18 -18
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +10 -10
- package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/.claude/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +5 -5
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +6 -6
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +8 -8
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +33 -33
- package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/.claude/skills/rite/SKILL.md +7 -7
- package/pack/.claude/skills/rite/reference/menu.md +6 -6
- package/pack/.claude/skills/rite-adopt/SKILL.md +15 -15
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +14 -14
- package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/.claude/skills/rite-build/SKILL.md +22 -22
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/.claude/skills/rite-build/reference/forge.md +28 -29
- package/pack/.claude/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/.claude/skills/rite-build/reference/output.md +1 -1
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/.claude/skills/rite-build/reference/tdd.md +6 -6
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/.claude/skills/rite-converge/SKILL.md +17 -17
- package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/.claude/skills/rite-customize/SKILL.md +2 -2
- package/pack/.claude/skills/rite-define/SKILL.md +25 -25
- package/pack/.claude/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/.claude/skills/rite-define/reference/gates.md +13 -13
- package/pack/.claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/.claude/skills/rite-doctor/SKILL.md +11 -11
- package/pack/.claude/skills/rite-dogfood/SKILL.md +2 -2
- package/pack/.claude/skills/rite-explain/SKILL.md +22 -22
- package/pack/.claude/skills/rite-explain/reference/intake.md +16 -16
- package/pack/.claude/skills/rite-frame/SKILL.md +22 -22
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/.claude/skills/rite-handoff/SKILL.md +12 -12
- package/pack/.claude/skills/rite-learn/SKILL.md +23 -23
- package/pack/.claude/skills/rite-plan/SKILL.md +21 -21
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/.claude/skills/rite-polish/SKILL.md +11 -11
- package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/.claude/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/.claude/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/.claude/skills/rite-polish/reference/code.md +26 -26
- package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/.claude/skills/rite-polish/reference/ui.md +23 -23
- package/pack/.claude/skills/rite-pov/SKILL.md +3 -3
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +2 -2
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +14 -14
- package/pack/.claude/skills/rite-prototype/SKILL.md +13 -13
- package/pack/.claude/skills/rite-prove/SKILL.md +17 -17
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/.claude/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/.claude/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/.claude/skills/rite-quick/SKILL.md +22 -22
- package/pack/.claude/skills/rite-resolve/SKILL.md +18 -18
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/.claude/skills/rite-review/SKILL.md +34 -34
- package/pack/.claude/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/.claude/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/.claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/.claude/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/.claude/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/.claude/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/.claude/skills/rite-review/reference/security-review.md +9 -9
- package/pack/.claude/skills/rite-seal/SKILL.md +26 -26
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/.claude/skills/rite-ship/SKILL.md +12 -12
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/.claude/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/.claude/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/.claude/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/.claude/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +45 -45
- package/pack/.claude/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/.claude/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/.claude/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/.claude/skills/rite-status/SKILL.md +13 -13
- package/pack/.claude/skills/rite-temper/SKILL.md +29 -29
- package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/.claude/skills/rite-temper/reference/significance.md +10 -10
- package/pack/.claude/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/.claude/skills/rite-vet/SKILL.md +31 -31
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/.claude/skills/rite-vet/reference/depth.md +14 -14
- package/pack/.claude/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +18 -18
- package/pack/generated/claude/agents/devrites-code-reviewer.md +21 -22
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +17 -17
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +6 -6
- package/pack/generated/claude/agents/devrites-forge-judge.md +26 -26
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +17 -17
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +19 -18
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +29 -27
- package/pack/generated/claude/agents/devrites-retrospector.md +19 -19
- package/pack/generated/claude/agents/devrites-security-auditor.md +15 -15
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +14 -14
- package/pack/generated/claude/agents/devrites-slice-wright.md +52 -51
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +11 -11
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +21 -21
- package/pack/generated/claude/agents/devrites-test-analyst.md +13 -13
- package/pack/generated/claude/settings.json +1 -1
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +12 -12
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +7 -7
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +16 -16
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +14 -14
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +14 -14
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +18 -18
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +27 -27
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +18 -18
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +10 -10
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +5 -5
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +6 -6
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +8 -8
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +33 -33
- package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/generated/claude/skills/rite/SKILL.md +7 -7
- package/pack/generated/claude/skills/rite/reference/menu.md +6 -6
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +15 -15
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +14 -14
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/generated/claude/skills/rite-build/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/forge.md +28 -29
- package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/generated/claude/skills/rite-build/reference/output.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/tdd.md +6 -6
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/generated/claude/skills/rite-converge/SKILL.md +17 -17
- package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/generated/claude/skills/rite-customize/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-define/SKILL.md +25 -25
- package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/generated/claude/skills/rite-define/reference/gates.md +13 -13
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +11 -11
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-explain/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +16 -16
- package/pack/generated/claude/skills/rite-frame/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +12 -12
- package/pack/generated/claude/skills/rite-learn/SKILL.md +23 -23
- package/pack/generated/claude/skills/rite-plan/SKILL.md +21 -21
- package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/generated/claude/skills/rite-polish/SKILL.md +11 -11
- package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/generated/claude/skills/rite-polish/reference/code.md +26 -26
- package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/generated/claude/skills/rite-polish/reference/ui.md +23 -23
- package/pack/generated/claude/skills/rite-pov/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +14 -14
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +13 -13
- package/pack/generated/claude/skills/rite-prove/SKILL.md +17 -17
- package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/generated/claude/skills/rite-quick/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +18 -18
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/generated/claude/skills/rite-review/SKILL.md +34 -34
- package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/generated/claude/skills/rite-review/reference/security-review.md +9 -9
- package/pack/generated/claude/skills/rite-seal/SKILL.md +26 -26
- package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/generated/claude/skills/rite-ship/SKILL.md +12 -12
- package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/generated/claude/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/generated/claude/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/generated/claude/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/generated/claude/skills/rite-spec/SKILL.md +45 -45
- package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/generated/claude/skills/rite-status/SKILL.md +13 -13
- package/pack/generated/claude/skills/rite-temper/SKILL.md +29 -29
- package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +10 -10
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/generated/claude/skills/rite-vet/SKILL.md +31 -31
- package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +14 -14
- package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +18 -18
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +21 -22
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +17 -17
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +6 -6
- package/pack/generated/codex/agents/devrites-forge-judge.toml +26 -26
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +17 -17
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +19 -18
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +29 -27
- package/pack/generated/codex/agents/devrites-retrospector.toml +19 -19
- package/pack/generated/codex/agents/devrites-security-auditor.toml +15 -15
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +14 -14
- package/pack/generated/codex/agents/devrites-slice-wright.toml +52 -51
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +11 -11
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +21 -21
- package/pack/generated/codex/agents/devrites-test-analyst.toml +13 -13
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +15 -15
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +10 -10
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +19 -19
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +17 -17
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +17 -17
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +20 -20
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +21 -21
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +10 -10
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +8 -8
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +9 -9
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +11 -11
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +36 -36
- package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/generated/codex/skills/rite/SKILL.md +10 -10
- package/pack/generated/codex/skills/rite/reference/menu.md +6 -6
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +18 -18
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +17 -17
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/generated/codex/skills/rite-build/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/forge.md +28 -29
- package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/generated/codex/skills/rite-build/reference/output.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/tdd.md +6 -6
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/generated/codex/skills/rite-converge/SKILL.md +20 -20
- package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/generated/codex/skills/rite-customize/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-define/SKILL.md +28 -28
- package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/generated/codex/skills/rite-define/reference/gates.md +13 -13
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +14 -14
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-explain/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +16 -16
- package/pack/generated/codex/skills/rite-frame/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +15 -15
- package/pack/generated/codex/skills/rite-learn/SKILL.md +26 -26
- package/pack/generated/codex/skills/rite-plan/SKILL.md +24 -24
- package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/generated/codex/skills/rite-polish/SKILL.md +14 -14
- package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/generated/codex/skills/rite-polish/reference/code.md +26 -26
- package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/generated/codex/skills/rite-polish/reference/ui.md +23 -23
- package/pack/generated/codex/skills/rite-pov/SKILL.md +6 -6
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +17 -17
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +16 -16
- package/pack/generated/codex/skills/rite-prove/SKILL.md +20 -20
- package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/generated/codex/skills/rite-quick/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +21 -21
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/generated/codex/skills/rite-review/SKILL.md +37 -37
- package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/generated/codex/skills/rite-review/reference/security-review.md +9 -9
- package/pack/generated/codex/skills/rite-seal/SKILL.md +29 -29
- package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/generated/codex/skills/rite-ship/SKILL.md +15 -15
- package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/generated/codex/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/generated/codex/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/generated/codex/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/generated/codex/skills/rite-spec/SKILL.md +48 -48
- package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/generated/codex/skills/rite-status/SKILL.md +16 -16
- package/pack/generated/codex/skills/rite-temper/SKILL.md +32 -32
- package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +10 -10
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/generated/codex/skills/rite-vet/SKILL.md +34 -34
- package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +14 -14
- package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +21 -21
- package/package.json +2 -2
- package/scripts/build-binaries.sh +1 -1
- package/scripts/build-host-artifacts.sh +1 -1
- package/scripts/build-release-tarball.sh +1 -1
- package/scripts/check-cross-refs.py +8 -8
- package/scripts/check-invocation-integrity.py +4 -4
- package/scripts/check-no-global-writes.sh +2 -2
- package/scripts/check-reply-contract.sh +1 -1
- package/scripts/check-rule-uniqueness.sh +2 -2
- package/scripts/codex-generate.sh +5 -5
- package/scripts/devrites-detect.sh +33 -33
- package/scripts/eval-runner.py +7 -7
- package/scripts/grade-feature.sh +14 -14
- package/scripts/install-lib.sh +2 -2
- package/scripts/pin.sh +12 -12
- package/scripts/run-behavioral-evals.sh +12 -12
- package/scripts/run-evals.sh +1 -1
- package/scripts/run-outcome-evals.sh +12 -12
- package/scripts/scan-pack-security.py +4 -4
- package/scripts/scan-supply-chain-iocs.py +7 -7
- package/scripts/skills-inventory.mjs +7 -8
- package/scripts/sync-version.sh +2 -2
- package/scripts/validate-workflow-security.py +12 -6
- package/scripts/validate-workspace-schema.py +2 -2
- package/scripts/validate.sh +7 -7
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# The vet review
|
|
1
|
+
# The vet review: scope challenge, four axes, required outputs
|
|
2
2
|
|
|
3
3
|
The body of `$rite-vet`. Run §0 first as a blocking gate, then the four axes one at a time,
|
|
4
4
|
then the required outputs. Apply the senior-engineer lenses in [`eng-lenses.md`](eng-lenses.md)
|
|
5
|
-
throughout
|
|
5
|
+
throughout. They're how you *see* the findings, not a separate checklist. Every finding is
|
|
6
6
|
calibrated and gated (see "Confidence + verification gate" below) before it reaches the human.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
## §0. Scope Challenge (blocking gate
|
|
10
|
+
## §0. Scope Challenge (blocking gate: runs before any axis)
|
|
11
11
|
|
|
12
12
|
Before reviewing *how* the plan builds, challenge *whether it should build this much*. This is
|
|
13
|
-
implementation-scope discipline (the spec's ambition is settled
|
|
13
|
+
implementation-scope discipline (the spec's ambition is settled, that was `$rite-temper`).
|
|
14
14
|
|
|
15
15
|
1. **What already exists?** For each sub-problem in the plan, find the existing code/flow that
|
|
16
|
-
already solves it (use a code-intelligence index if available
|
|
16
|
+
already solves it (use a code-intelligence index if available: see `../../devrites-lib/reference/standards/tooling.md`).
|
|
17
17
|
Can the plan **capture outputs from an existing
|
|
18
18
|
flow** instead of building a parallel one? Reuse → extend → build new, in that order
|
|
19
19
|
(`coding-style.md`). List every reuse opportunity the plan misses.
|
|
20
20
|
2. **Minimum diff.** What's the smallest set of changes that meets the spec's *acceptance
|
|
21
21
|
criteria*? Flag any planned work that can be deferred without blocking acceptance. Be ruthless
|
|
22
|
-
about implementation scope creep
|
|
22
|
+
about implementation scope creep, but never cut an acceptance criterion (that's a Drift Guard
|
|
23
23
|
matter, not a trim).
|
|
24
24
|
3. **Complexity smell.** If `plan.md` touches **>8 files** or adds **>2 new services / modules /
|
|
25
25
|
classes**, treat it as a smell. Check the plan's complexity gate justifies it. If it doesn't
|
|
@@ -27,17 +27,17 @@ implementation-scope discipline (the spec's ambition is settled — that was `$r
|
|
|
27
27
|
via `AskUserQuestion` whether to reduce or proceed. Do not start the axes until answered.
|
|
28
28
|
4. **Built-in check.** For each new pattern / infra component / concurrency approach the plan
|
|
29
29
|
introduces, verify a framework/runtime built-in doesn't already do it, and that the choice is
|
|
30
|
-
current best practice with no known footgun
|
|
30
|
+
current best practice with no known footgun: dispatch `devrites-source-driven` to confirm at
|
|
31
31
|
the source and record the citation. A custom roll where a built-in exists is a scope-reduction
|
|
32
32
|
finding.
|
|
33
33
|
5. **Completeness check.** Is the plan doing the complete version or a shortcut? With AI-assisted
|
|
34
34
|
coding the cost of completeness (full edge-case handling, complete error paths, real test
|
|
35
|
-
coverage) is a fraction of what it was
|
|
35
|
+
coverage) is a fraction of what it was: a shortcut that saves human-hours but only saves
|
|
36
36
|
minutes here is a false economy. Prefer the complete option; flag shortcuts that exist only to
|
|
37
37
|
save effort that AI has already made cheap.
|
|
38
38
|
6. **Distribution check.** If the plan introduces a new artifact (CLI binary, package, container,
|
|
39
39
|
deployable), does it include how it gets built / published / installed? If distribution is
|
|
40
|
-
deferred, say so explicitly in "NOT in scope"
|
|
40
|
+
deferred, say so explicitly in "NOT in scope": don't let it silently drop.
|
|
41
41
|
|
|
42
42
|
> **STOP discipline.** If the complexity smell trips, the `AskUserQuestion` is a tool call, not
|
|
43
43
|
> prose. Naming the 80%-solution in chat and continuing is the failure this gate exists to prevent.
|
|
@@ -49,14 +49,14 @@ If the smell does not trip, present the §0 findings and proceed to Axis 1.
|
|
|
49
49
|
## The four axes (one at a time, ≤8 findings each)
|
|
50
50
|
|
|
51
51
|
For each axis: evaluate, then **walk each finding WITH the human** via `AskUserQuestion` (one
|
|
52
|
-
issue per call
|
|
52
|
+
issue per call: see "How to ask" below). HITL pauses on each material finding; AFK auto-applies
|
|
53
53
|
within the gate ceiling (`depth.md`). If an axis genuinely has no issue, say "No issues,
|
|
54
|
-
moving on" and continue
|
|
54
|
+
moving on" and continue: don't manufacture findings.
|
|
55
55
|
|
|
56
56
|
### 1. Architecture
|
|
57
57
|
- Component boundaries, coupling, data-flow patterns, single points of failure. Architecture records invariants, not scaffolding: each medium+ decision should state `Binds:` and `Prevents:` so the builder knows what divergence it prevents.
|
|
58
58
|
- Scaling characteristics; where the plan's approach breaks under real load.
|
|
59
|
-
- Security architecture at the seams (auth, data access, API boundaries)
|
|
59
|
+
- Security architecture at the seams (auth, data access, API boundaries): does the plan name
|
|
60
60
|
the trust boundary for each untrusted input?
|
|
61
61
|
- For each new codepath / integration point: **one realistic production failure scenario** and
|
|
62
62
|
whether the plan accounts for it (feeds the failure-mode table).
|
|
@@ -65,7 +65,7 @@ moving on" and continue — don't manufacture findings.
|
|
|
65
65
|
|
|
66
66
|
### 2. Plan code-quality
|
|
67
67
|
- Module structure the plan implies; DRY across the slices (flag planned repetition aggressively).
|
|
68
|
-
- Error-handling + edge cases the plan names
|
|
68
|
+
- Error-handling + edge cases the plan names, and the ones it doesn't (call those out explicitly).
|
|
69
69
|
- Over-engineering (premature abstraction, an extension point with no second caller) vs
|
|
70
70
|
under-engineering (fragile / hacky) relative to `patterns.md` + `coding-style.md`.
|
|
71
71
|
- Tech-debt hotspots the plan walks into; existing inline diagrams in touched files that the
|
|
@@ -73,21 +73,21 @@ moving on" and continue — don't manufacture findings.
|
|
|
73
73
|
|
|
74
74
|
### 3. Test-coverage design
|
|
75
75
|
The differentiator: design the tests *before* the code, so the build writes them alongside.
|
|
76
|
-
- **Framework detection
|
|
77
|
-
(never introduce a new runner to prove one change
|
|
76
|
+
- **Framework detection:** find the project's existing test runner + conventions; match them
|
|
77
|
+
(never introduce a new runner to prove one change: `testing.md`).
|
|
78
78
|
- **Map acceptance → tests.** Every spec acceptance criterion must map to ≥1 planned, surface-anchored test (the API response/UI state/CLI output the criterion names, not an internal proxy).
|
|
79
|
-
- **Tool per path
|
|
79
|
+
- **Tool per path:** unit (pure logic, single function, edge cases), integration/E2E (a user
|
|
80
80
|
flow spanning 3+ components, an auth/payment/data-loss path, a mock-hides-failure boundary),
|
|
81
81
|
eval (an LLM/prompt change that needs a quality bar).
|
|
82
|
-
- **Interaction inventory (UI slices)
|
|
82
|
+
- **Interaction inventory (UI slices): enumerate every interactive element + flow.** List each
|
|
83
83
|
input field, checkbox, radio, select, toggle, button, and actionable link, plus each user
|
|
84
|
-
flow; assign each ≥1 asserting test **at the right level
|
|
84
|
+
flow; assign each ≥1 asserting test **at the right level**: elements/fields → unit/component,
|
|
85
85
|
critical journeys → one E2E (never one-per-field). Every element/flow with no asserting test
|
|
86
86
|
is a GAP; no element ships unverified. Write the inventory to `test-plan.md` (table in
|
|
87
87
|
`artifacts.md`). This is `testing.md` "Completeness" made concrete for the plan.
|
|
88
88
|
- **Regression rule (mandatory, no question):** when the plan modifies existing behavior and the
|
|
89
89
|
current suite doesn't cover the changed path, a regression test is added to the plan as a
|
|
90
|
-
**Critical** requirement
|
|
90
|
+
**Critical** requirement: no `AskUserQuestion`, no skipping. Regressions are the highest-priority
|
|
91
91
|
test because they prove something broke. When unsure whether a change is a regression, write the test.
|
|
92
92
|
- Produce the **coverage diagram** (shape below) and add a specific test requirement per GAP.
|
|
93
93
|
|
|
@@ -112,7 +112,7 @@ acceptance criteria covered ✓" and continue.
|
|
|
112
112
|
### 4. Performance
|
|
113
113
|
- N+1 / unbounded queries and DB access patterns; memory concerns; caching opportunities;
|
|
114
114
|
high-complexity hot paths.
|
|
115
|
-
- Per `performance.md`: name a number to measure or a budget
|
|
115
|
+
- Per `performance.md`: name a number to measure or a budget: don't recommend speculative
|
|
116
116
|
micro-tuning. A perf finding is "measure X against budget Y", not "this feels slow".
|
|
117
117
|
|
|
118
118
|
---
|
|
@@ -126,7 +126,7 @@ Tag each finding `[severity] (confidence: N/10) <plan/task/spec ref> — finding
|
|
|
126
126
|
**The gate:** before raising a finding, quote the line(s) that motivate it. Can't quote it →
|
|
127
127
|
force confidence ≤4 and suppress. This kills the "the plan doesn't handle X" finding when the
|
|
128
128
|
plan *does* and you skimmed. Don't fabricate 7+ to dodge it. (Same discipline the reviewer agent
|
|
129
|
-
runs
|
|
129
|
+
runs: `devrites-plan-reviewer`.)
|
|
130
130
|
|
|
131
131
|
---
|
|
132
132
|
|
|
@@ -144,24 +144,24 @@ Use `AskUserQuestion` per the pack's standard. Plan-review specifics:
|
|
|
144
144
|
happy-path), add `Completeness: N/10` per option. If they differ in *kind* (two different
|
|
145
145
|
architectures), skip the score and note "options differ in kind, not coverage". Never fabricate
|
|
146
146
|
a score on a kind question.
|
|
147
|
-
- Every material finding ends as a **recorded decision
|
|
148
|
-
a `decisions.md` ADR
|
|
147
|
+
- Every material finding ends as a **recorded decision**: a resolved `questions.md` qid for HITL
|
|
148
|
+
or a `decisions.md` ADR for AFK. The walk must leave an auditable trail, not just chat.
|
|
149
149
|
|
|
150
150
|
---
|
|
151
151
|
|
|
152
152
|
## Required outputs (after the axes)
|
|
153
|
-
1. **"NOT in scope"
|
|
153
|
+
1. **"NOT in scope":** work considered and explicitly deferred, one-line rationale each. Folds
|
|
154
154
|
into `plan.md` §Scope boundaries + `spec.md` Non-goals (via the Guard) so it can't silently re-enter.
|
|
155
|
-
2. **"What already exists"
|
|
155
|
+
2. **"What already exists":** existing code/flows that solve sub-problems, and whether the plan
|
|
156
156
|
reuses or rebuilds them. Every missed reuse becomes a §0 finding.
|
|
157
|
-
3. **Failure-mode table
|
|
157
|
+
3. **Failure-mode table:** for each new codepath: a realistic failure, and whether (a) a test
|
|
158
158
|
covers it, (b) error handling exists, (c) the user sees a clear error or a silent failure. A
|
|
159
159
|
failure with **no test AND no handling AND silent** is a **Critical gap**. (Shape in
|
|
160
160
|
[`artifacts.md`](artifacts.md).)
|
|
161
|
-
4. **Worktree parallelization strategy
|
|
161
|
+
4. **Worktree parallelization strategy:** analyze the slices for parallel execution. **Skip** if
|
|
162
162
|
all slices touch the same module or there are <2 independent workstreams ("Sequential, no
|
|
163
163
|
parallelization opportunity"). Otherwise: a dependency table (module-level, not file-level),
|
|
164
164
|
parallel lanes (shared module → same lane/sequential; independent → separate lanes), execution
|
|
165
165
|
order, and conflict flags where two lanes touch the same module dir. This feeds `$rite-build`'s
|
|
166
166
|
isolation strategy and the autocomplete loop. (Shape in [`artifacts.md`](artifacts.md).)
|
|
167
|
-
5. **Completion summary
|
|
167
|
+
5. **Completion summary:** the one-glance recap (shape in [`artifacts.md`](artifacts.md)).
|
|
@@ -12,61 +12,61 @@ This is the Codex mirror of a DevRites skill. In Codex:
|
|
|
12
12
|
|
|
13
13
|
- Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
|
|
14
14
|
- Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
|
|
15
|
-
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here
|
|
16
|
-
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review
|
|
15
|
+
- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here: Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional.
|
|
16
|
+
- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review**: an inline pass shares the calling context and is weaker evidence.
|
|
17
17
|
- Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement.
|
|
18
|
-
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers
|
|
18
|
+
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers: NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
# $rite-zoom-out
|
|
21
|
+
# $rite-zoom-out: step up one abstraction layer
|
|
22
22
|
|
|
23
23
|
When the agent (or the user) is staring at unfamiliar code without a working mental
|
|
24
24
|
model of how it fits the larger system. Stops the "open more files" reflex by returning
|
|
25
25
|
a single, structured map instead.
|
|
26
26
|
|
|
27
|
-
Read `.agents/skills/devrites-lib/reference/standards/core.md` first
|
|
27
|
+
Read `.agents/skills/devrites-lib/reference/standards/core.md` first: chiefly its vocabulary / existing-conventions
|
|
28
28
|
disciplines, which keep the map in the project's own language. The other rule files load
|
|
29
29
|
on demand.
|
|
30
30
|
|
|
31
31
|
## What this skill returns
|
|
32
32
|
|
|
33
|
-
A **structural map
|
|
33
|
+
A **structural map**: terse. One pass should answer:
|
|
34
34
|
|
|
35
|
-
- **The area
|
|
35
|
+
- **The area:** what this code is for, in one sentence, using the project's own
|
|
36
36
|
vocabulary.
|
|
37
|
-
- **Modules in scope
|
|
37
|
+
- **Modules in scope:** the related files / packages / slices, with a one-line
|
|
38
38
|
purpose each.
|
|
39
|
-
- **Callers (in)
|
|
40
|
-
3
|
|
41
|
-
- **Calls (out)
|
|
42
|
-
- **Decisions touching it
|
|
39
|
+
- **Callers (in):** who calls into this area from outside. Keep to the highest-signal
|
|
40
|
+
3-6; collapse the rest.
|
|
41
|
+
- **Calls (out):** what this area depends on downstream.
|
|
42
|
+
- **Decisions touching it:** ADRs (under `docs/adr/` if present) or notes in
|
|
43
43
|
`.devrites/work/<slug>/decisions.md` that pre-decide something here.
|
|
44
|
-
- **Smallest sensible change-scope
|
|
44
|
+
- **Smallest sensible change-scope:** where a fix would naturally land, so the next
|
|
45
45
|
step doesn't drift into a project-wide refactor.
|
|
46
46
|
|
|
47
47
|
## Prefer a code-intelligence index (if available)
|
|
48
48
|
|
|
49
|
-
If the project has them
|
|
50
|
-
cross-
|
|
51
|
-
codegraph, `codegraph_context` + one `codegraph_explore` return the map in two calls
|
|
49
|
+
If the project has them, start with `codebase-memory-mcp` (`get_architecture` / `search_graph`),
|
|
50
|
+
then cross-check with `codegraph` (`.codegraph/`) and `graphify` (`graphify-out/`). For
|
|
51
|
+
codegraph, `codegraph_context` + one `codegraph_explore` return the map in two calls: vastly
|
|
52
52
|
cheaper than a file-walk and more accurate for callers/callees. Fall back to standard methods
|
|
53
53
|
(LSP, then `Grep` + `Read`) when no index is available. See `.agents/skills/devrites-lib/reference/standards/tooling.md`.
|
|
54
54
|
|
|
55
55
|
## Vocabulary discipline
|
|
56
56
|
|
|
57
|
-
Use the **project's** domain language
|
|
57
|
+
Use the **project's** domain language: `CONTEXT.md`, glossaries, the active feature's
|
|
58
58
|
`spec.md` / `decisions.md`. Don't invent fresh names for things the project already
|
|
59
59
|
names. If you notice a fuzzy or overloaded term while mapping, flag it as a FYI at the
|
|
60
60
|
end; don't try to fix it here.
|
|
61
61
|
|
|
62
62
|
## When NOT to use
|
|
63
63
|
|
|
64
|
-
- You already have a clear mental model
|
|
65
|
-
- The question is a literal text lookup (a string, a comment, an error message)
|
|
64
|
+
- You already have a clear mental model: zooming out is just tax.
|
|
65
|
+
- The question is a literal text lookup (a string, a comment, an error message): use
|
|
66
66
|
`Grep`.
|
|
67
|
-
- You need to design or change something
|
|
67
|
+
- You need to design or change something. That's `$rite-spec` (new feature) or
|
|
68
68
|
`$rite-define` (plan an approved spec).
|
|
69
|
-
- You want a project-wide architecture audit
|
|
69
|
+
- You want a project-wide architecture audit: use the project's normal architecture
|
|
70
70
|
review process; this skill is a read-only feature-area map.
|
|
71
71
|
|
|
72
72
|
## Output shape
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devrites",
|
|
3
|
-
"version": "3.0.
|
|
4
|
-
"description": "DevRites
|
|
3
|
+
"version": "3.0.6",
|
|
4
|
+
"description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code and Codex",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://github.com/ViktorsBaikers/DevRites#readme",
|
|
7
7
|
"repository": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Cross-compile devrites-engine for every supported target and emit a sha256
|
|
3
|
-
# sidecar per binary
|
|
3
|
+
# sidecar per binary: the artifacts attached to the GitHub Release alongside the
|
|
4
4
|
# pack tarball. Pure-Go (CGO_ENABLED=0) so every target builds
|
|
5
5
|
# from one Linux runner with no cross-toolchain. The version is stamped into the
|
|
6
6
|
# binary via -ldflags so `devrites-engine doctor` reports the release it came from.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# build-host-artifacts.sh
|
|
2
|
+
# build-host-artifacts.sh: render host-native Claude and Codex artifacts from
|
|
3
3
|
# the canonical pack.
|
|
4
4
|
#
|
|
5
5
|
# Default output is pack/generated/ so npm pack can ship prebuilt surfaces.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Build the DevRites release tarball
|
|
2
|
+
# Build the DevRites release tarball: the artifact attached to the GitHub Release
|
|
3
3
|
# by semantic-release. Extracting yields a `devrites-v<version>/` directory with
|
|
4
4
|
# everything an end-user needs (pack/, install.sh, uninstall.sh, scripts/, docs).
|
|
5
5
|
#
|
|
@@ -5,11 +5,11 @@ Catches the maintenance-drift class the skills audit surfaced: a SKILL.md or
|
|
|
5
5
|
reference file pointing at another file that has moved, been renamed, or never
|
|
6
6
|
existed. Three checks, tuned for near-zero false positives:
|
|
7
7
|
|
|
8
|
-
1. Markdown links to local .md targets
|
|
8
|
+
1. Markdown links to local .md targets : `](path.md)` resolved relative to the
|
|
9
9
|
containing file; the target must exist.
|
|
10
|
-
2. Bare backtick .md filenames
|
|
10
|
+
2. Bare backtick .md filenames : `` `name.md` `` must exist SOMEWHERE in
|
|
11
11
|
the pack (by basename). Catches references to a file that exists nowhere.
|
|
12
|
-
3. "canonical version: `path`" claims
|
|
12
|
+
3. "canonical version: `path`" claims : the named path (relative to the skills
|
|
13
13
|
root) must exist. Catches a file disclaiming itself secondary to a missing one.
|
|
14
14
|
|
|
15
15
|
Scans pack/.claude/. Exit 1 on any dead reference. Read-only.
|
|
@@ -35,7 +35,7 @@ WORKSPACE_ARTIFACTS = {
|
|
|
35
35
|
"questions.md", "drift.md", "evidence.md", "browser-evidence.md", "touched-files.md",
|
|
36
36
|
"review.md", "seal.md", "ship.md", "brief.md", "design-brief.md", "strategy.md",
|
|
37
37
|
"polish-report.md", "handoff.md", "eng-review.md", "test-plan.md", "references.md",
|
|
38
|
-
# forge competition record (work/<slug>/forge-report.md)
|
|
38
|
+
# forge competition record (work/<slug>/forge-report.md): written when a Forge: yes slice competes candidates
|
|
39
39
|
"forge-report.md",
|
|
40
40
|
"conventions.md", "coverage.md", "analysis.md", "learnings.md",
|
|
41
41
|
# developer-experience scorecard (work/<slug>/devex.md) + project-level retro ledger (.devrites/retro.md)
|
|
@@ -107,11 +107,11 @@ for path in md_files:
|
|
|
107
107
|
base = os.path.basename(tok)
|
|
108
108
|
if base in WORKSPACE_ARTIFACTS or base in PROJECT_DOCS or base in all_basenames:
|
|
109
109
|
continue
|
|
110
|
-
if "/" in tok: # a path inside the pack must
|
|
110
|
+
if "/" in tok: # a path inside the pack must resolve
|
|
111
111
|
if not os.path.isfile(resolve(here, tok)):
|
|
112
112
|
errors.append(f"{path}: backtick `{tok}` does not resolve")
|
|
113
113
|
continue
|
|
114
|
-
errors.append(f"{path}: backtick `{tok}
|
|
114
|
+
errors.append(f"{path}: backtick `{tok}`: no `{base}` exists anywhere in the pack")
|
|
115
115
|
|
|
116
116
|
# 4. "(see X.md)" prose pointers: slash form resolves (install-aware);
|
|
117
117
|
# bare form must exist in the pack (or be a workspace artifact / project doc).
|
|
@@ -122,7 +122,7 @@ for path in md_files:
|
|
|
122
122
|
if not os.path.isfile(resolved):
|
|
123
123
|
errors.append(f"{path}: (see {tok}) (resolved {resolved}) does not exist")
|
|
124
124
|
elif base not in WORKSPACE_ARTIFACTS and base not in PROJECT_DOCS and base not in all_basenames:
|
|
125
|
-
errors.append(f"{path}: (see {tok})
|
|
125
|
+
errors.append(f"{path}: (see {tok}): no `{base}` exists anywhere in the pack")
|
|
126
126
|
|
|
127
127
|
# 3. "canonical version: `path`" must resolve against the skills root
|
|
128
128
|
for claim in CANONICAL_RE.findall(text):
|
|
@@ -136,4 +136,4 @@ if errors:
|
|
|
136
136
|
print(" " + e)
|
|
137
137
|
sys.exit(1)
|
|
138
138
|
|
|
139
|
-
print(f"check-cross-refs: OK
|
|
139
|
+
print(f"check-cross-refs: OK: {len(md_files)} markdown files, no dead references.")
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""Invocation-integrity gate
|
|
2
|
+
"""Invocation-integrity gate: every skill/rule an agent or skill NAMES must resolve, both harnesses.
|
|
3
3
|
|
|
4
4
|
`check-cross-refs.py` validates markdown links. This validates the thing it can't: a **bare
|
|
5
5
|
skill-name invocation** (`$devrites-frontend-craft`, `Skill(devrites-source-driven)`, "invoke the
|
|
6
6
|
`devrites-api-interface` skill") and a **rule read** (`.claude/skills/devrites-lib/reference/standards/security.md`) must each point
|
|
7
|
-
at something that
|
|
7
|
+
at something that exists (on Claude Code AND on the Codex-translated tree) or the agent
|
|
8
8
|
calls into the void at runtime. Also asserts the Claude→Codex skill/rule mirror is complete.
|
|
9
9
|
|
|
10
10
|
Self-contained: installs DevRites into a temp dir to get the Codex tree, sweeps, cleans up.
|
|
@@ -15,7 +15,7 @@ import os, re, sys, glob, subprocess, tempfile, shutil
|
|
|
15
15
|
REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
16
16
|
PACK = os.path.join(REPO, "pack/.claude")
|
|
17
17
|
|
|
18
|
-
# devrites-* tokens that are scripts/hooks/mcp, not skills
|
|
18
|
+
# devrites-* tokens that are scripts/hooks/mcp, not skills: legitimate non-skill references.
|
|
19
19
|
NONSKILL = {
|
|
20
20
|
"devrites-mcp", "devrites-lib", "devrites-reviewer-readonly", "devrites-wright-scope",
|
|
21
21
|
"devrites-a1-guard", "devrites-allow", "devrites-redwatch", "devrites-orient",
|
|
@@ -103,7 +103,7 @@ def main():
|
|
|
103
103
|
if problems or mirror:
|
|
104
104
|
print("INVOCATION-INTEGRITY: FAIL")
|
|
105
105
|
return 1
|
|
106
|
-
print("INVOCATION-INTEGRITY: PASS
|
|
106
|
+
print("INVOCATION-INTEGRITY: PASS: every named skill/rule resolves on both harnesses.")
|
|
107
107
|
return 0
|
|
108
108
|
finally:
|
|
109
109
|
shutil.rmtree(target, ignore_errors=True)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# check-no-global-writes.sh
|
|
2
|
+
# check-no-global-writes.sh: static guard that the installer/uninstaller never
|
|
3
3
|
# writes to the user's global ~/.claude or ~/.codex, and that the global guard is present.
|
|
4
4
|
# Exits non-zero on violation.
|
|
5
5
|
|
|
@@ -40,7 +40,7 @@ done
|
|
|
40
40
|
# engine-binary path (the devrites-engine control-plane binary; issue 10). Anything else
|
|
41
41
|
# writing to /usr/bin, /usr/local/bin, /bin, /sbin, or ~/.local/bin is a global
|
|
42
42
|
# write the installer must not do. The carve-out is exactly a `devrites-engine` (or
|
|
43
|
-
# `devrites.exe`) leaf under /usr/local/bin or ~/.local/bin
|
|
43
|
+
# `devrites.exe`) leaf under /usr/local/bin or ~/.local/bin: never /usr/bin.
|
|
44
44
|
BIN_RE='((\$HOME|~)/\.local/bin|/usr/local/bin|/usr/bin|/bin|/sbin)'
|
|
45
45
|
# Sanctioned: the write's bin path ends in .../devrites-engine (optionally .exe) and sits
|
|
46
46
|
# under /usr/local/bin or ~/.local/bin. The trailing boundary keeps `devrites-lib`
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# scripts/check-rule-uniqueness.sh
|
|
2
|
+
# scripts/check-rule-uniqueness.sh: assert each canonical principle heading
|
|
3
3
|
# appears in exactly one canonical file under pack/.claude/.
|
|
4
4
|
#
|
|
5
5
|
# Drift catcher: if someone re-duplicates a principle's full treatment, this
|
|
6
|
-
# script fails and names the offenders. Cross-link summaries are fine
|
|
6
|
+
# script fails and names the offenders. Cross-link summaries are fine: they
|
|
7
7
|
# don't use the canonical heading.
|
|
8
8
|
#
|
|
9
9
|
# Usage:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# codex-generate.sh
|
|
2
|
+
# codex-generate.sh: shared Claude-to-Codex surface generators.
|
|
3
3
|
#
|
|
4
4
|
# This file is a shell library, not a standalone installer. Callers provide
|
|
5
5
|
# TMP_GEN_DIR and then invoke the gen_* helpers below.
|
|
@@ -47,10 +47,10 @@ gen_codex_skill_file() {
|
|
|
47
47
|
print ""
|
|
48
48
|
print "- Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them."
|
|
49
49
|
print "- Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation."
|
|
50
|
-
print "- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here
|
|
51
|
-
print "- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review
|
|
50
|
+
print "- When this skill asks for a DevRites specialist or writer agent, **explicitly** spawn the matching Codex custom agent from `.codex/agents/devrites-*.toml` through Codex subagents (`spawn_agent`), then wait for its result and reconcile it as the skill instructs. Do not do the review inline just because the instruction to spawn is embedded here: Codex under-fires embedded spawn/skill instructions (openai/codex #23496), so treat the spawn as required, not optional."
|
|
51
|
+
print "- The independence of a fresh-context subagent is the point. If Codex genuinely cannot spawn subagents in the current surface, run the documented inline fallback and **label the result an inline fallback, not an independent review**: an inline pass shares the calling context and is weaker evidence."
|
|
52
52
|
print "- Codex project hooks are installed in `.codex/hooks.json`. Review and trust them with `/hooks` before relying on hook enforcement."
|
|
53
|
-
print "- When this skill asks a HITL question via `AskUserQuestion`: Codex'\''s equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers
|
|
53
|
+
print "- When this skill asks a HITL question via `AskUserQuestion`: Codex'\''s equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers: NEVER silently pick an option yourself; auto-picking is AFK'\''s contract, gated by the `.devrites/AFK` sentinel."
|
|
54
54
|
print ""
|
|
55
55
|
fm = 0
|
|
56
56
|
inserted = 1
|
|
@@ -293,7 +293,7 @@ gen_codex_hooks_json() {
|
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
295
|
EOF
|
|
296
|
-
# NOTE: no SessionEnd entry
|
|
296
|
+
# NOTE: no SessionEnd entry: Codex does not emit a SessionEnd hook event (its lifecycle events
|
|
297
297
|
# are SessionStart/SubagentStart/PreToolUse/PermissionRequest/PostToolUse/PreCompact/PostCompact/
|
|
298
298
|
# UserPromptSubmit/SubagentStop/Stop). The `hook event session-end` trace is Claude-only; re-add
|
|
299
299
|
# here if Codex ever ships the event.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# scripts/devrites-detect.sh
|
|
2
|
+
# scripts/devrites-detect.sh: deterministic anti-slop detector.
|
|
3
3
|
#
|
|
4
4
|
# Greps the current git diff (or a passed file list) for ~25 actionable
|
|
5
5
|
# anti-slop patterns from rite-polish/reference/anti-ai-slop.md +
|
|
@@ -76,43 +76,43 @@ fi
|
|
|
76
76
|
# Severity = critical (auth/safety), high (slop tell), low (style nit).
|
|
77
77
|
RULES=(
|
|
78
78
|
# --- UI anti-slop (CSS-ish) ---
|
|
79
|
-
'#000([^0-9a-f]|$)|#fff([^0-9a-f]|$)|#000000|#ffffff' 'high' 'Pure #000 / #fff
|
|
80
|
-
'#6366f1|#8b5cf6|#a855f7|#d946ef|#ec4899' 'high' 'Purple/blue gradient hex range
|
|
81
|
-
'background-clip:[[:space:]]*text|-webkit-background-clip:[[:space:]]*text' 'high' 'Gradient text decoration
|
|
82
|
-
'backdrop-filter:[[:space:]]*blur' 'high' 'Glassmorphism `backdrop-filter: blur(...)
|
|
83
|
-
'border-left:[[:space:]]*[1-6]px[[:space:]]+solid|border-l-[2-8]' 'low' 'Side-stripe accent border
|
|
84
|
-
'cubic-bezier\([^)]*0\.34[[:space:]]*,[[:space:]]*1\.56' 'high' 'Bounce/elastic easing curve
|
|
85
|
-
'animation-duration:[[:space:]]*[5-9][0-9]{2}ms[[:space:]]*;[[:space:]]*animation-delay' 'low' 'Long animation durations stacked
|
|
86
|
-
'z-index:[[:space:]]*[0-9]{4,}' 'high' 'Raw z-index in the 1000s
|
|
87
|
-
'font-family:[[:space:]]*"?(DM Sans|Plus Jakarta|Fraunces|Newsreader)' 'high' 'Reflex font choice
|
|
88
|
-
'text-transform:[[:space:]]*uppercase[[:space:]]*;[^}]*letter-spacing' 'low' 'All-CAPS with letter-spacing
|
|
79
|
+
'#000([^0-9a-f]|$)|#fff([^0-9a-f]|$)|#000000|#ffffff' 'high' 'Pure #000 / #fff: use near-black / near-white tokens.'
|
|
80
|
+
'#6366f1|#8b5cf6|#a855f7|#d946ef|#ec4899' 'high' 'Purple/blue gradient hex range: likely default AI palette.'
|
|
81
|
+
'background-clip:[[:space:]]*text|-webkit-background-clip:[[:space:]]*text' 'high' 'Gradient text decoration: likely AI slop.'
|
|
82
|
+
'backdrop-filter:[[:space:]]*blur' 'high' 'Glassmorphism `backdrop-filter: blur(...)`: banned default surface.'
|
|
83
|
+
'border-left:[[:space:]]*[1-6]px[[:space:]]+solid|border-l-[2-8]' 'low' 'Side-stripe accent border: common templating tell; confirm vs design system.'
|
|
84
|
+
'cubic-bezier\([^)]*0\.34[[:space:]]*,[[:space:]]*1\.56' 'high' 'Bounce/elastic easing curve: banned unless design system uses it.'
|
|
85
|
+
'animation-duration:[[:space:]]*[5-9][0-9]{2}ms[[:space:]]*;[[:space:]]*animation-delay' 'low' 'Long animation durations stacked: verify motion budget.'
|
|
86
|
+
'z-index:[[:space:]]*[0-9]{4,}' 'high' 'Raw z-index in the 1000s: use semantic z scale.'
|
|
87
|
+
'font-family:[[:space:]]*"?(DM Sans|Plus Jakarta|Fraunces|Newsreader)' 'high' 'Reflex font choice: use the project type system.'
|
|
88
|
+
'text-transform:[[:space:]]*uppercase[[:space:]]*;[^}]*letter-spacing' 'low' 'All-CAPS with letter-spacing: verify register; banned for body text.'
|
|
89
89
|
# --- Code anti-slop ---
|
|
90
|
-
'\bconsole\.log\(' 'high' 'console.log left in code
|
|
91
|
-
'if[[:space:]]*\([[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*[[:space:]]*&&[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*\.length[[:space:]]*>[[:space:]]*0' 'high' 'Over-defensive `x && x.length > 0
|
|
92
|
-
'\bcatch[[:space:]]*\([[:space:]]*\)[[:space:]]*\{[^}]*\}' 'high' 'Blanket catch with no narrow handling
|
|
93
|
-
'\bcatch[[:space:]]*\([[:space:]]*[A-Za-z][A-Za-z0-9_]*[[:space:]]*\)[[:space:]]*\{[[:space:]]*\}' 'high' 'Empty catch body
|
|
94
|
-
'//[[:space:]]*helper function|//[[:space:]]*increment' 'low' 'Tutorial-style comment
|
|
95
|
-
'^[[:space:]]*(//|#)[[:space:]]*(Now (I('"'"'ll| will)|we('"'"'ll| will))|Updated|Added|Changed|Modified|As requested|Step [0-9]+:)' 'low' 'Diff-narrating comment
|
|
96
|
-
'\bfunction[[:space:]]+(process|handle|do)(Data|Item|Thing|It)?\b' 'high' 'Generic AI naming (`processData` / `handleItem` / `doIt`)
|
|
97
|
-
'\bfunction[[:space:]]+get[A-Z][a-zA-Z]*\([^)]*\)[[:space:]]*\{[[:space:]]*return[[:space:]]+[A-Z][a-zA-Z]+\.find' 'low' 'Useless wrapper around a single ORM call
|
|
98
|
-
'//[[:space:]]*TODO:[[:space:]]*(improve|cleanup|refactor)[[:space:]]+(this|later)' 'low' '"TODO: improve this later"
|
|
99
|
-
'\btemp\s*=|\bresult\s*=|\bdata\s*=[^=]' 'low' 'Generic local name (temp/result/data)
|
|
100
|
-
'\binterface[[:space:]]+I[A-Z][a-zA-Z]+\b' 'low' '`IFoo` prefix on interfaces
|
|
101
|
-
'/\*\s*eslint-disable\s*\*/' 'high' 'Global eslint-disable
|
|
90
|
+
'\bconsole\.log\(' 'high' 'console.log left in code: remove before polish.'
|
|
91
|
+
'if[[:space:]]*\([[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*[[:space:]]*&&[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*\.length[[:space:]]*>[[:space:]]*0' 'high' 'Over-defensive `x && x.length > 0`: validate at boundaries.'
|
|
92
|
+
'\bcatch[[:space:]]*\([[:space:]]*\)[[:space:]]*\{[^}]*\}' 'high' 'Blanket catch with no narrow handling: likely swallowing errors.'
|
|
93
|
+
'\bcatch[[:space:]]*\([[:space:]]*[A-Za-z][A-Za-z0-9_]*[[:space:]]*\)[[:space:]]*\{[[:space:]]*\}' 'high' 'Empty catch body: silently swallows errors. Catch narrow; recover or rethrow.'
|
|
94
|
+
'//[[:space:]]*helper function|//[[:space:]]*increment' 'low' 'Tutorial-style comment: restates code; remove.'
|
|
95
|
+
'^[[:space:]]*(//|#)[[:space:]]*(Now (I('"'"'ll| will)|we('"'"'ll| will))|Updated|Added|Changed|Modified|As requested|Step [0-9]+:)' 'low' 'Diff-narrating comment: describe the current constraint or delete it.'
|
|
96
|
+
'\bfunction[[:space:]]+(process|handle|do)(Data|Item|Thing|It)?\b' 'high' 'Generic AI naming (`processData` / `handleItem` / `doIt`): name for intent.'
|
|
97
|
+
'\bfunction[[:space:]]+get[A-Z][a-zA-Z]*\([^)]*\)[[:space:]]*\{[[:space:]]*return[[:space:]]+[A-Z][a-zA-Z]+\.find' 'low' 'Useless wrapper around a single ORM call: inline.'
|
|
98
|
+
'//[[:space:]]*TODO:[[:space:]]*(improve|cleanup|refactor)[[:space:]]+(this|later)' 'low' '"TODO: improve this later": without owner/issue, this rots.'
|
|
99
|
+
'\btemp\s*=|\bresult\s*=|\bdata\s*=[^=]' 'low' 'Generic local name (temp/result/data): name for intent.'
|
|
100
|
+
'\binterface[[:space:]]+I[A-Z][a-zA-Z]+\b' 'low' '`IFoo` prefix on interfaces: most modern style guides prefer `Foo`.'
|
|
101
|
+
'/\*\s*eslint-disable\s*\*/' 'high' 'Global eslint-disable: explain or remove.'
|
|
102
102
|
# --- Security ---
|
|
103
|
-
'\bnew Function\(' 'critical' '`new Function(...)
|
|
104
|
-
'\beval\s*\(' 'critical' '`eval(...)
|
|
105
|
-
'\bdangerouslySetInnerHTML\b' 'high' 'dangerouslySetInnerHTML
|
|
106
|
-
'process\.env\.[A-Z_]+(.{0,40}(?:console|res\.send|res\.json))' 'high' 'env var possibly echoed to response/log
|
|
103
|
+
'\bnew Function\(' 'critical' '`new Function(...)`: dynamic code construction.'
|
|
104
|
+
'\beval\s*\(' 'critical' '`eval(...)`: avoid.'
|
|
105
|
+
'\bdangerouslySetInnerHTML\b' 'high' 'dangerouslySetInnerHTML: confirm XSS-safe.'
|
|
106
|
+
'process\.env\.[A-Z_]+(.{0,40}(?:console|res\.send|res\.json))' 'high' 'env var possibly echoed to response/log: re-check for secret leakage.'
|
|
107
107
|
# --- Performance pitfalls ---
|
|
108
|
-
'\.forEach\([^)]+\)\s*\.\s*forEach\(' 'low' 'Nested `forEach
|
|
108
|
+
'\.forEach\([^)]+\)\s*\.\s*forEach\(' 'low' 'Nested `forEach`: accidental quadratic loop?'
|
|
109
109
|
)
|
|
110
110
|
|
|
111
111
|
# Markdown-only rules. Run against SCAN_MD, not SCAN.
|
|
112
|
-
# Em-dash overuse: 2+ em-dashes (U+2014) on the same line
|
|
112
|
+
# Em-dash overuse: 2+ em-dashes (U+2014) on the same line: the per-line proxy
|
|
113
113
|
# for the "multiple em-dashes per paragraph" rule in anti-ai-slop.md.
|
|
114
114
|
MD_RULES=(
|
|
115
|
-
$'.*\xe2\x80\x94.*\xe2\x80\x94' 'high' 'Em-dash overuse on one line (2+ em-dashes)
|
|
115
|
+
$'.*\xe2\x80\x94.*\xe2\x80\x94' 'high' 'Em-dash overuse on one line (2+ em-dashes): a common AI tell; prefer comma, period, or parenthetical.'
|
|
116
116
|
)
|
|
117
117
|
|
|
118
118
|
FOUND=0
|
|
@@ -133,7 +133,7 @@ if [[ ${#SCAN[@]} -gt 0 ]]; then
|
|
|
133
133
|
while IFS= read -r line; do
|
|
134
134
|
[[ -z "$line" ]] && continue
|
|
135
135
|
FOUND=$((FOUND + 1))
|
|
136
|
-
printf '[%s] %s
|
|
136
|
+
printf '[%s] %s: %s\n' "$sev" "$line" "$msg"
|
|
137
137
|
done <<<"$HITS"
|
|
138
138
|
done
|
|
139
139
|
fi
|
|
@@ -154,7 +154,7 @@ if [[ ${#SCAN_MD[@]} -gt 0 ]]; then
|
|
|
154
154
|
while IFS= read -r line; do
|
|
155
155
|
[[ -z "$line" ]] && continue
|
|
156
156
|
FOUND=$((FOUND + 1))
|
|
157
|
-
printf '[%s] %s
|
|
157
|
+
printf '[%s] %s: %s\n' "$sev" "$line" "$msg"
|
|
158
158
|
done <<<"$HITS"
|
|
159
159
|
done
|
|
160
160
|
fi
|
|
@@ -163,7 +163,7 @@ TOTAL=$(( ${#SCAN[@]} + ${#SCAN_MD[@]} ))
|
|
|
163
163
|
|
|
164
164
|
echo
|
|
165
165
|
if [[ $FOUND -eq 0 ]]; then
|
|
166
|
-
echo "devrites-detect: clean
|
|
166
|
+
echo "devrites-detect: clean: scanned $TOTAL files (${#SCAN[@]} code, ${#SCAN_MD[@]} md)."
|
|
167
167
|
exit 0
|
|
168
168
|
fi
|
|
169
169
|
|
package/scripts/eval-runner.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""DevRites trigger-eval runner.
|
|
3
3
|
|
|
4
|
-
Wraps the Anthropic SDK to
|
|
4
|
+
Wraps the Anthropic SDK to execute a trigger eval against a Claude
|
|
5
5
|
model. Off by default in CI (schema-only validation lives in
|
|
6
6
|
`scripts/run-evals.sh`); this runner is invoked explicitly when
|
|
7
7
|
`CLAUDE_API_KEY` is set.
|
|
@@ -26,10 +26,10 @@ What it does per query
|
|
|
26
26
|
1. Loads each skill's `name` + `description` from `pack/.claude/skills/*/SKILL.md`.
|
|
27
27
|
2. Sends the query as a `user` message to Claude with a system prompt
|
|
28
28
|
instructing it to pick exactly one skill name from the candidate list, or
|
|
29
|
-
"none" if no skill applies. We do NOT ask the model to invoke a tool
|
|
29
|
+
"none" if no skill applies. We do NOT ask the model to invoke a tool: we
|
|
30
30
|
ask it to predict which skill the harness would have triggered. That keeps
|
|
31
31
|
the eval cheap (no agentic loop, one round-trip per query) and faithful to
|
|
32
|
-
what skill discovery
|
|
32
|
+
what skill discovery decides.
|
|
33
33
|
3. Compares the predicted skill name to the expected verdict:
|
|
34
34
|
- `should_trigger` → predicted name must equal the eval's `skill` field.
|
|
35
35
|
- `should_not_trigger` → predicted name must NOT equal the eval's `skill`.
|
|
@@ -45,7 +45,7 @@ Usage
|
|
|
45
45
|
CLAUDE_API_KEY=sk-... ./scripts/eval-runner.py --min-accuracy 0.9 evals/*.json
|
|
46
46
|
|
|
47
47
|
The runner is intentionally thin (~200 lines). It is not the eval-viewer in
|
|
48
|
-
Anthropic's `skill-creator
|
|
48
|
+
Anthropic's `skill-creator`: it just provides the missing "did the model
|
|
49
49
|
pick the right skill" signal so we can answer that question without firing
|
|
50
50
|
up the full Claude Code harness.
|
|
51
51
|
"""
|
|
@@ -67,7 +67,7 @@ SYSTEM_TEMPLATE = """\
|
|
|
67
67
|
You are the DevRites skill router. Your job is to predict which DevRites
|
|
68
68
|
skill (if any) should fire for a given user message.
|
|
69
69
|
|
|
70
|
-
Each candidate skill is described below. Read the descriptions carefully
|
|
70
|
+
Each candidate skill is described below. Read the descriptions carefully:
|
|
71
71
|
DevRites' triggers are encoded in them.
|
|
72
72
|
|
|
73
73
|
For the user message at the end, respond with exactly one line of the form:
|
|
@@ -113,7 +113,7 @@ def load_skills() -> list[Skill]:
|
|
|
113
113
|
if not skill_md.is_file():
|
|
114
114
|
continue
|
|
115
115
|
body = skill_md.read_text(encoding="utf-8")
|
|
116
|
-
# Lightweight YAML frontmatter parse
|
|
116
|
+
# Lightweight YAML frontmatter parse: we only need name + description.
|
|
117
117
|
m = re.match(r"^---\n(.*?)\n---", body, re.DOTALL)
|
|
118
118
|
if not m:
|
|
119
119
|
continue
|
|
@@ -129,7 +129,7 @@ def load_skills() -> list[Skill]:
|
|
|
129
129
|
def render_system(skills: list[Skill]) -> str:
|
|
130
130
|
lines = []
|
|
131
131
|
for s in skills:
|
|
132
|
-
lines.append(f"- **{s.name}
|
|
132
|
+
lines.append(f"- **{s.name}**: {s.description}")
|
|
133
133
|
return SYSTEM_TEMPLATE.format(skills="\n".join(lines))
|
|
134
134
|
|
|
135
135
|
|