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
package/scripts/grade-feature.sh
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
# Deterministic OUTCOME grader for a finished DevRites feature workspace.
|
|
3
3
|
#
|
|
4
4
|
# The trigger evals (evals/*.json) test whether the right SKILL *fires*. This
|
|
5
|
-
# grades whether a finished run
|
|
5
|
+
# grades whether a finished run reached a *shippable* state: the
|
|
6
6
|
# product claim DevRites sells ("won't claim done without proof"). It reads only
|
|
7
7
|
# committed Markdown artifacts (no API key, no Claude Code harness), so it runs
|
|
8
8
|
# in CI against a golden fixture and is the kind of deterministic grader
|
|
9
9
|
# Anthropic's eval guidance recommends for coding agents.
|
|
10
10
|
#
|
|
11
11
|
# Live evidence-freshness (mtime: does proof post-date code?) is NOT graded here
|
|
12
|
-
|
|
12
|
+
#: git fixtures don't preserve mtimes; that gate is enforced on a live
|
|
13
13
|
# workspace by the `devrites-engine evidence-fresh` engine gate.
|
|
14
14
|
#
|
|
15
15
|
# Usage: grade-feature.sh <workspace-dir>
|
|
@@ -39,9 +39,9 @@ seal="$ws/seal.md"; ev="$ws/evidence.md"; rev="$ws/review.md"
|
|
|
39
39
|
q="$ws/questions.md"; st="$ws/state.md"
|
|
40
40
|
problems=()
|
|
41
41
|
|
|
42
|
-
# 1 / 2 / 3
|
|
42
|
+
# 1 / 2 / 3: seal verdict, acceptance, blockers
|
|
43
43
|
if [ ! -f "$seal" ]; then
|
|
44
|
-
problems+=("seal.md missing
|
|
44
|
+
problems+=("seal.md missing: feature never sealed")
|
|
45
45
|
else
|
|
46
46
|
grep -qiE '^[[:space:]]*Verdict:[[:space:]]*GO[[:space:]]*$' "$seal" \
|
|
47
47
|
|| problems+=("seal.md Verdict is not GO")
|
|
@@ -58,24 +58,24 @@ else
|
|
|
58
58
|
fi
|
|
59
59
|
fi
|
|
60
60
|
|
|
61
|
-
# 4
|
|
62
|
-
{ [ -f "$ev" ] && [ -s "$ev" ]; } || problems+=("evidence.md missing or empty
|
|
61
|
+
# 4: evidence
|
|
62
|
+
{ [ -f "$ev" ] && [ -s "$ev" ]; } || problems+=("evidence.md missing or empty: acceptance unproven")
|
|
63
63
|
|
|
64
|
-
# 5
|
|
65
|
-
[ -f "$rev" ] || problems+=("review.md missing
|
|
64
|
+
# 5: review
|
|
65
|
+
[ -f "$rev" ] || problems+=("review.md missing: feature not reviewed")
|
|
66
66
|
|
|
67
|
-
# 6
|
|
67
|
+
# 6: open validating gate (merge-blocking by definition)
|
|
68
68
|
if [ -f "$q" ]; then
|
|
69
69
|
if awk '
|
|
70
70
|
/^## q-/{ if(inq && s=="open" && g=="validating") bad=1; inq=1; s=""; g=""; next }
|
|
71
71
|
inq && /^status:/{ v=$0; sub(/^status:[[:space:]]*/,"",v); s=v }
|
|
72
72
|
inq && /^gate:/ { v=$0; sub(/^gate:[[:space:]]*/,"",v); g=v }
|
|
73
73
|
END{ if(inq && s=="open" && g=="validating") bad=1; exit(bad?0:1) }' "$q"; then
|
|
74
|
-
problems+=("open 'gate: validating' question
|
|
74
|
+
problems+=("open 'gate: validating' question: merge-blocking by definition (NO-GO)")
|
|
75
75
|
fi
|
|
76
76
|
fi
|
|
77
77
|
|
|
78
|
-
# 7
|
|
78
|
+
# 7: state phase / status
|
|
79
79
|
if [ -f "$st" ]; then
|
|
80
80
|
ph="$(python3 "$ROOT/scripts/workflow_schema.py" field "$st" phase 2>/dev/null || true)"
|
|
81
81
|
stt="$(python3 "$ROOT/scripts/workflow_schema.py" field "$st" status 2>/dev/null || true)"
|
|
@@ -87,7 +87,7 @@ else
|
|
|
87
87
|
problems+=("state.md missing")
|
|
88
88
|
fi
|
|
89
89
|
|
|
90
|
-
# 8
|
|
90
|
+
# 8: executable acceptance criteria: every spec [ACn] proven + checked in seal
|
|
91
91
|
run_acceptance_check() {
|
|
92
92
|
if [ -n "${DEVRITES_CLI:-}" ]; then
|
|
93
93
|
"$DEVRITES_CLI" check-acceptance "$ws"
|
|
@@ -115,9 +115,9 @@ fi
|
|
|
115
115
|
|
|
116
116
|
slug="$(basename "$ws")"
|
|
117
117
|
if [ "${#problems[@]}" -eq 0 ]; then
|
|
118
|
-
printf 'GO %s
|
|
118
|
+
printf 'GO %s: shippable: sealed GO, acceptance proven, no blockers, no open validating gate.\n' "$slug"
|
|
119
119
|
exit 0
|
|
120
120
|
fi
|
|
121
|
-
printf 'NO-GO %s
|
|
121
|
+
printf 'NO-GO %s: %d blocker(s):\n' "$slug" "${#problems[@]}"
|
|
122
122
|
for p in "${problems[@]}"; do printf ' - %s\n' "$p"; done
|
|
123
123
|
exit 1
|
package/scripts/install-lib.sh
CHANGED
|
@@ -142,7 +142,7 @@ dr_manifest_contains() {
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
# Is $1 (canonical) equal to, or inside, a global agent home?
|
|
145
|
-
# Used to refuse global writes. No write verbs here
|
|
145
|
+
# Used to refuse global writes. No write verbs here: read-only comparison.
|
|
146
146
|
dr_is_global_claude() {
|
|
147
147
|
_t="$1"
|
|
148
148
|
_home_claude="$HOME/.claude"
|
|
@@ -178,7 +178,7 @@ argument-hint: "[args]"
|
|
|
178
178
|
user-invocable: true
|
|
179
179
|
---
|
|
180
180
|
|
|
181
|
-
# /$_name
|
|
181
|
+
# /$_name: alias of /$_to
|
|
182
182
|
|
|
183
183
|
This command **delegates to DevRites \`/$_to\`**. State that to the user, then load and
|
|
184
184
|
run \`$_to/SKILL.md\` with the given arguments, following it exactly.
|
package/scripts/pin.sh
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# scripts/pin.sh
|
|
2
|
+
# scripts/pin.sh: manage user-pinned slash aliases for DevRites.
|
|
3
3
|
#
|
|
4
4
|
# Adopts the same "thin wrapper SKILL.md that delegates" pattern as the engine
|
|
5
5
|
# installer uses for --short-aliases=all, but exposes it as a runtime verb so
|
|
@@ -66,15 +66,15 @@ done
|
|
|
66
66
|
[ -z "$SUBCMD" ] && dr_die "missing subcommand (add | remove | list)"
|
|
67
67
|
|
|
68
68
|
TARGET="$(dr_abspath_dir "$TARGET")" || dr_die "target dir not found: $TARGET"
|
|
69
|
-
dr_is_global_claude "$TARGET" && dr_die "refusing to operate on ~/.claude
|
|
70
|
-
dr_is_global_codex "$TARGET" && dr_die "refusing to operate on ~/.codex
|
|
69
|
+
dr_is_global_claude "$TARGET" && dr_die "refusing to operate on ~/.claude: DevRites is project-local only"
|
|
70
|
+
dr_is_global_codex "$TARGET" && dr_die "refusing to operate on ~/.codex: DevRites is project-local only"
|
|
71
71
|
|
|
72
72
|
SKILLS_DIR="$TARGET/.claude/skills"
|
|
73
73
|
CODEX_SKILLS_DIR="$TARGET/.agents/skills"
|
|
74
74
|
MF="$TARGET/$DR_MANIFEST_NAME"
|
|
75
75
|
|
|
76
|
-
[ -d "$SKILLS_DIR" ] || dr_die "no .claude/skills at $TARGET
|
|
77
|
-
[ -f "$MF" ] || dr_die "no manifest at $MF
|
|
76
|
+
[ -d "$SKILLS_DIR" ] || dr_die "no .claude/skills at $TARGET: run install.sh first?"
|
|
77
|
+
[ -f "$MF" ] || dr_die "no manifest at $MF: run install.sh first?"
|
|
78
78
|
|
|
79
79
|
# ---- helpers -------------------------------------------------------------
|
|
80
80
|
valid_alias_name() {
|
|
@@ -108,7 +108,7 @@ is_pinned_alias_file() {
|
|
|
108
108
|
# ---- subcommands ---------------------------------------------------------
|
|
109
109
|
do_add() {
|
|
110
110
|
valid_alias_name "$ALIAS" || dr_die "invalid alias name '$ALIAS' (lowercase / digits / hyphens; not 'rite' or 'rite-*')"
|
|
111
|
-
is_known_target "$DEST" || dr_die "unknown target '$DEST'
|
|
111
|
+
is_known_target "$DEST" || dr_die "unknown target '$DEST': not a rite-* skill in $SKILLS_DIR"
|
|
112
112
|
[ "$ALIAS" = "$DEST" ] && dr_die "alias and target are the same"
|
|
113
113
|
|
|
114
114
|
ALIAS_DIR="$SKILLS_DIR/$ALIAS"
|
|
@@ -120,16 +120,16 @@ do_add() {
|
|
|
120
120
|
|
|
121
121
|
if [ -e "$ALIAS_FILE" ]; then
|
|
122
122
|
if is_pinned_alias "$ALIAS"; then
|
|
123
|
-
dr_warn "already pinned: /$ALIAS
|
|
123
|
+
dr_warn "already pinned: /$ALIAS: overwriting"
|
|
124
124
|
else
|
|
125
|
-
dr_die "$ALIAS_FILE exists and is NOT a pinned alias
|
|
125
|
+
dr_die "$ALIAS_FILE exists and is NOT a pinned alias: refusing to overwrite"
|
|
126
126
|
fi
|
|
127
127
|
fi
|
|
128
128
|
if [ -d "$CODEX_SKILLS_DIR" ] && [ -e "$CODEX_ALIAS_FILE" ]; then
|
|
129
129
|
if is_pinned_alias_file "$CODEX_ALIAS_FILE"; then
|
|
130
|
-
dr_warn "already pinned for Codex: /$ALIAS
|
|
130
|
+
dr_warn "already pinned for Codex: /$ALIAS: overwriting"
|
|
131
131
|
else
|
|
132
|
-
dr_die "$CODEX_ALIAS_FILE exists and is NOT a pinned alias
|
|
132
|
+
dr_die "$CODEX_ALIAS_FILE exists and is NOT a pinned alias: refusing to overwrite"
|
|
133
133
|
fi
|
|
134
134
|
fi
|
|
135
135
|
|
|
@@ -164,12 +164,12 @@ do_remove() {
|
|
|
164
164
|
CODEX_ALIAS_REL=".agents/skills/$ALIAS/SKILL.md"
|
|
165
165
|
|
|
166
166
|
[ -f "$ALIAS_FILE" ] || dr_die "no pinned alias at $ALIAS_FILE"
|
|
167
|
-
is_pinned_alias "$ALIAS" || dr_die "$ALIAS_FILE exists but is not a pinned alias
|
|
167
|
+
is_pinned_alias "$ALIAS" || dr_die "$ALIAS_FILE exists but is not a pinned alias: refusing to remove"
|
|
168
168
|
|
|
169
169
|
rm -f "$ALIAS_FILE"
|
|
170
170
|
rmdir "$ALIAS_DIR" 2>/dev/null || true
|
|
171
171
|
if [ -f "$CODEX_ALIAS_FILE" ]; then
|
|
172
|
-
is_pinned_alias_file "$CODEX_ALIAS_FILE" || dr_die "$CODEX_ALIAS_FILE exists but is not a pinned alias
|
|
172
|
+
is_pinned_alias_file "$CODEX_ALIAS_FILE" || dr_die "$CODEX_ALIAS_FILE exists but is not a pinned alias: refusing to remove"
|
|
173
173
|
rm -f "$CODEX_ALIAS_FILE"
|
|
174
174
|
rmdir "$CODEX_ALIAS_DIR" 2>/dev/null || true
|
|
175
175
|
fi
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# scripts/run-behavioral-evals.sh
|
|
2
|
+
# scripts/run-behavioral-evals.sh: validate the SHAPE of DevRites behavioral evals.
|
|
3
3
|
#
|
|
4
4
|
# Trigger evals (run-evals.sh) test whether the right skill *fires*. Behavioral
|
|
5
|
-
# evals test whether a gating skill's discipline *holds under pressure
|
|
5
|
+
# evals test whether a gating skill's discipline *holds under pressure*: does it
|
|
6
6
|
# resist the rationalizations it documents in `standards/anti-patterns.md` (and its own
|
|
7
7
|
# `reference/anti-patterns.md`), or does the agent talk itself past the gate. Each
|
|
8
8
|
# scenario pairs a pressure prompt with the resistance a holding response shows and
|
|
9
9
|
# the capitulation markers a failed one shows.
|
|
10
10
|
#
|
|
11
|
-
# This script is the DETERMINISTIC, zero-token CI gate
|
|
11
|
+
# This script is the DETERMINISTIC, zero-token CI gate: the analog of run-evals.sh's
|
|
12
12
|
# schema path and the engine spec-validate gate: it checks that every behavioral eval is well-formed
|
|
13
13
|
# so a malformed one can't reach the live grader. It does NOT invoke a model. Executing
|
|
14
|
-
# the scenarios against a live Claude (does the skill
|
|
14
|
+
# the scenarios against a live Claude (does the skill resist?) is the labeled /
|
|
15
15
|
# nightly rung documented in evals/behavioral/README.md.
|
|
16
16
|
#
|
|
17
17
|
# In addition to the original DevRites pressure schema, scenarios may carry the
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
# scripts/run-behavioral-evals.sh # validate every evals/behavioral/*.json
|
|
24
24
|
# scripts/run-behavioral-evals.sh evals/behavioral/rite-prove.json # validate one file
|
|
25
25
|
#
|
|
26
|
-
# Exit: 0 all valid (or no behavioral evals present
|
|
26
|
+
# Exit: 0 all valid (or no behavioral evals present: opt-in, never a failure) ·
|
|
27
27
|
# 1 shape violation(s) · 2 missing parser
|
|
28
28
|
|
|
29
29
|
set -euo pipefail
|
|
@@ -37,7 +37,7 @@ if [[ $# -gt 0 ]]; then
|
|
|
37
37
|
FILES=("$@")
|
|
38
38
|
else
|
|
39
39
|
if [[ ! -d "$BEHAVIORAL_DIR" ]]; then
|
|
40
|
-
echo "No evals/behavioral/ directory
|
|
40
|
+
echo "No evals/behavioral/ directory: behavioral evals are opt-in; nothing to validate."
|
|
41
41
|
exit 0
|
|
42
42
|
fi
|
|
43
43
|
FILES=()
|
|
@@ -48,7 +48,7 @@ else
|
|
|
48
48
|
fi
|
|
49
49
|
|
|
50
50
|
if [[ ${#FILES[@]} -eq 0 ]]; then
|
|
51
|
-
echo "No behavioral eval files
|
|
51
|
+
echo "No behavioral eval files: behavioral evals are opt-in; nothing to validate."
|
|
52
52
|
exit 0
|
|
53
53
|
fi
|
|
54
54
|
|
|
@@ -89,9 +89,9 @@ if not isinstance(scenarios, list):
|
|
|
89
89
|
errors.append("scenarios is not a list")
|
|
90
90
|
scenarios = []
|
|
91
91
|
elif len(scenarios) == 0:
|
|
92
|
-
errors.append("scenarios is empty
|
|
92
|
+
errors.append("scenarios is empty: a behavioral eval needs at least one")
|
|
93
93
|
|
|
94
|
-
# Metric fields (optional
|
|
94
|
+
# Metric fields (optional: default to the regression discipline). A behavioral
|
|
95
95
|
# eval is a regression gate by nature (the discipline must hold every trial ->
|
|
96
96
|
# pass^k = 100%); a capability eval is the exploratory pass@k variant.
|
|
97
97
|
ec = data.get("eval_class", "regression")
|
|
@@ -196,7 +196,7 @@ if [[ $FAILED -gt 0 ]]; then
|
|
|
196
196
|
fi
|
|
197
197
|
|
|
198
198
|
echo
|
|
199
|
-
echo "Note: this is shape validation only
|
|
200
|
-
echo "To grade whether the skills
|
|
201
|
-
echo " see evals/behavioral/README.md
|
|
199
|
+
echo "Note: this is shape validation only: it does not execute the scenarios."
|
|
200
|
+
echo "To grade whether the skills resist under pressure (live model):"
|
|
201
|
+
echo " see evals/behavioral/README.md: the labeled / nightly rung."
|
|
202
202
|
exit 0
|
package/scripts/run-evals.sh
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# scripts/run-evals.sh
|
|
2
|
+
# scripts/run-evals.sh: validate the structure of DevRites trigger evals.
|
|
3
3
|
#
|
|
4
4
|
# Schema check + summary. Does NOT invoke a model unless --live is passed.
|
|
5
5
|
# Live execution requires CLAUDE_API_KEY and is manual-only, never CI default.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# Outcome-eval harness
|
|
2
|
+
# Outcome-eval harness: proves the deterministic feature grader BOTH passes a
|
|
3
3
|
# known-shippable workspace AND fails a known-blocked one (see-it-fail-first:
|
|
4
4
|
# a grader that never returns NO-GO proves nothing). Runs in CI; no API key.
|
|
5
5
|
#
|
|
@@ -18,9 +18,9 @@ trap 'rm -rf "$tmp"' EXIT
|
|
|
18
18
|
|
|
19
19
|
echo "== grade golden/shippable-feature (expect GO) =="
|
|
20
20
|
if bash "$GRADER" "$good"; then
|
|
21
|
-
echo " PASS
|
|
21
|
+
echo " PASS: graded GO"
|
|
22
22
|
else
|
|
23
|
-
echo " FAIL
|
|
23
|
+
echo " FAIL: a known-shippable workspace should grade GO"; fail=1
|
|
24
24
|
fi
|
|
25
25
|
|
|
26
26
|
echo
|
|
@@ -39,28 +39,28 @@ cat > "$canonical/state.md" <<'MD'
|
|
|
39
39
|
| next_action | archived |
|
|
40
40
|
MD
|
|
41
41
|
if bash "$GRADER" "$canonical"; then
|
|
42
|
-
echo " PASS
|
|
42
|
+
echo " PASS: canonical cursor graded GO"
|
|
43
43
|
else
|
|
44
|
-
echo " FAIL
|
|
44
|
+
echo " FAIL: canonical cursor should grade GO"; fail=1
|
|
45
45
|
fi
|
|
46
46
|
|
|
47
47
|
echo
|
|
48
48
|
echo "== grade golden/blocked-feature (expect NO-GO) =="
|
|
49
49
|
if bash "$GRADER" "$bad"; then
|
|
50
|
-
echo " FAIL
|
|
50
|
+
echo " FAIL: a known-blocked workspace should NOT grade GO"; fail=1
|
|
51
51
|
else
|
|
52
|
-
echo " PASS
|
|
52
|
+
echo " PASS: correctly graded NO-GO"
|
|
53
53
|
fi
|
|
54
54
|
|
|
55
55
|
echo
|
|
56
56
|
echo "== grade golden/near-miss-unproven-ac (expect NO-GO on ONE invariant) =="
|
|
57
57
|
# Isolates invariant 2 (every acceptance criterion proven): identical to the
|
|
58
58
|
# shippable fixture except a single AC is left unchecked. Proves that gate fails
|
|
59
|
-
# independently
|
|
59
|
+
# independently: not only when six invariants trip at once.
|
|
60
60
|
if bash "$GRADER" "$nearmiss"; then
|
|
61
|
-
echo " FAIL
|
|
61
|
+
echo " FAIL: an unproven acceptance criterion must grade NO-GO"; fail=1
|
|
62
62
|
else
|
|
63
|
-
echo " PASS
|
|
63
|
+
echo " PASS: correctly graded NO-GO on the lone unchecked AC"
|
|
64
64
|
fi
|
|
65
65
|
|
|
66
66
|
echo
|
|
@@ -83,9 +83,9 @@ Evidence exists.
|
|
|
83
83
|
none
|
|
84
84
|
MD
|
|
85
85
|
if bash "$GRADER" "$wrongac"; then
|
|
86
|
-
echo " FAIL
|
|
86
|
+
echo " FAIL: checked unrelated acceptance items must not prove spec [ACn] criteria"; fail=1
|
|
87
87
|
else
|
|
88
|
-
echo " PASS
|
|
88
|
+
echo " PASS: correctly graded NO-GO when spec [ACn] ids are missing from seal.md"
|
|
89
89
|
fi
|
|
90
90
|
|
|
91
91
|
echo
|
|
@@ -13,7 +13,7 @@ Exits non-zero if any finding is reported.
|
|
|
13
13
|
|
|
14
14
|
Two finding classes:
|
|
15
15
|
|
|
16
|
-
1. Hidden unicode (always a finding
|
|
16
|
+
1. Hidden unicode (always a finding: no legitimate reason to exist in a
|
|
17
17
|
Markdown/shell instruction file): bidi controls, zero-width characters,
|
|
18
18
|
other invisibles, and homoglyph confusables (a word that mixes ASCII with
|
|
19
19
|
look-alike Cyrillic/Greek letters).
|
|
@@ -23,7 +23,7 @@ Two finding classes:
|
|
|
23
23
|
permission escalation, and data-exfiltration phrasing.
|
|
24
24
|
|
|
25
25
|
Suppression (for DevRites' own files that legitimately *discuss* injection
|
|
26
|
-
defensively
|
|
26
|
+
defensively: e.g. security.md, the reviewer agents): put a marker on the same
|
|
27
27
|
line OR anywhere in the file:
|
|
28
28
|
|
|
29
29
|
... ignore previous instructions ... <!-- pack-scan-ignore: defensive doc -->
|
|
@@ -33,7 +33,7 @@ A whole file can opt a class out with a top-of-file marker:
|
|
|
33
33
|
<!-- pack-scan-ignore-file: injection -->
|
|
34
34
|
|
|
35
35
|
Suppressions live in the file, so every exception is visible in the diff and
|
|
36
|
-
reviewable
|
|
36
|
+
reviewable: consistent with DevRites' "no silent state" thesis. Hidden-unicode
|
|
37
37
|
findings can be suppressed the same way but should essentially never be.
|
|
38
38
|
"""
|
|
39
39
|
import os
|
|
@@ -132,7 +132,7 @@ def find_injection(text, file_suppressed):
|
|
|
132
132
|
|
|
133
133
|
|
|
134
134
|
_LINE_SUPPRESS = re.compile(r"pack-scan-ignore\b(?!-file)", re.IGNORECASE)
|
|
135
|
-
# Class list is word/comma/space only
|
|
135
|
+
# Class list is word/comma/space only: a trailing "-->" comment closer must not
|
|
136
136
|
# get swallowed into the captured class name.
|
|
137
137
|
_FILE_SUPPRESS = re.compile(r"pack-scan-ignore-file\s*:\s*([\w, ]+)", re.IGNORECASE)
|
|
138
138
|
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
Dependabot manages version *updates*; this gate catches a *known-malicious* installed
|
|
5
5
|
version (a compromised release that slipped in). It checks every name@version in the
|
|
6
|
-
lockfile against the bundled IOC dataset (scripts/supply-chain-iocs.json)
|
|
6
|
+
lockfile against the bundled IOC dataset (scripts/supply-chain-iocs.json): an offline,
|
|
7
7
|
always-available advisory source, so CI is deterministic and needs no network.
|
|
8
8
|
|
|
9
|
-
`--online`
|
|
9
|
+
`--online` also queries the OSV API per package and is best-effort: if the
|
|
10
10
|
advisory source is unreachable it prints a notice and falls back to the bundled dataset
|
|
11
|
-
(it never fails the build on a network error
|
|
11
|
+
(it never fails the build on a network error: only on a real IOC match).
|
|
12
12
|
|
|
13
13
|
Usage: scan-supply-chain-iocs.py [LOCKFILE] [--iocs FILE] [--online]
|
|
14
14
|
LOCKFILE defaults to package-lock.json.
|
|
@@ -87,7 +87,7 @@ def main(argv):
|
|
|
87
87
|
lockfile = args[0] if args else "package-lock.json"
|
|
88
88
|
|
|
89
89
|
if not os.path.isfile(lockfile):
|
|
90
|
-
print("OK no lockfile at %s
|
|
90
|
+
print("OK no lockfile at %s: nothing to scan" % lockfile)
|
|
91
91
|
return 0
|
|
92
92
|
try:
|
|
93
93
|
index = load_iocs(iocs_path)
|
|
@@ -100,7 +100,7 @@ def main(argv):
|
|
|
100
100
|
for name, ver in pkgs:
|
|
101
101
|
e = index.get(name)
|
|
102
102
|
if e and ver in e.get("versions", []):
|
|
103
|
-
findings.append("FINDING %s@%s
|
|
103
|
+
findings.append("FINDING %s@%s: %s (%s)" % (name, ver, e["note"], e["source"]))
|
|
104
104
|
|
|
105
105
|
if online:
|
|
106
106
|
offline_notice = False
|
|
@@ -110,9 +110,9 @@ def main(argv):
|
|
|
110
110
|
offline_notice = True
|
|
111
111
|
break
|
|
112
112
|
if res:
|
|
113
|
-
findings.append("FINDING %s@%s
|
|
113
|
+
findings.append("FINDING %s@%s: %s" % (name, ver, res))
|
|
114
114
|
if offline_notice:
|
|
115
|
-
print("note: OSV unreachable
|
|
115
|
+
print("note: OSV unreachable: fell back to the bundled IOC dataset only")
|
|
116
116
|
|
|
117
117
|
if findings:
|
|
118
118
|
for f in sorted(set(findings)):
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// skills-inventory.mjs
|
|
2
|
+
// skills-inventory.mjs: verify authored DevRites skill inventory and docs counts.
|
|
3
3
|
import { readdirSync, readFileSync, statSync } from 'node:fs';
|
|
4
4
|
import { join, relative } from 'node:path';
|
|
5
5
|
|
|
@@ -95,20 +95,19 @@ function assertPublicSkillMentions(path, label) {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
assertDocContains(docsSkills, `# All ${total} skills`, 'total skill heading');
|
|
98
|
-
assertDocContains(docsSkills,
|
|
98
|
+
assertDocContains(docsSkills, `The pack contains ${total} skills`, 'total skill prose');
|
|
99
99
|
assertDocContains(docsSkills, `${publicRiteCount} user-invocable \`rite-*\``, 'public rite-* count');
|
|
100
100
|
assertDocContains(docsSkills, `${modelInvokedInternalCount} model-invoked \`devrites-*\` specialists`, 'model-invoked internal count');
|
|
101
101
|
assertDocContains(docsSkills, 'npx devrites', 'npx distribution contract');
|
|
102
102
|
assertDocContains(docsCommandMap, 'npx devrites', 'npx distribution contract');
|
|
103
|
-
assertDocContains(readme,
|
|
104
|
-
assertDocContains(readme,
|
|
105
|
-
assertDocContains(readme,
|
|
103
|
+
assertDocContains(readme, `The pack ships ${total} skills`, 'README total skill prose');
|
|
104
|
+
assertDocContains(readme, `${publicCount} public and ${internalCount} internal`, 'README public/internal count');
|
|
105
|
+
assertDocContains(readme, '[skills catalogue](docs/skills.md)', 'README skills catalogue link');
|
|
106
106
|
assertDocContains(arch, `${publicRiteCount} public \`rite-*\` skills (${total} total)`, 'architecture surface count');
|
|
107
|
-
assertDocContains(docsFlow,
|
|
108
|
-
assertDocContains(docsFlow,
|
|
107
|
+
assertDocContains(docsFlow, `: ${publicCount} skills`, 'flow public count');
|
|
108
|
+
assertDocContains(docsFlow, `: ${internalCount} skills`, 'flow internal count');
|
|
109
109
|
assertPublicSkillLinks(docsSkills, 'skills catalogue');
|
|
110
110
|
assertPublicSkillLinks(docsCommandMap, 'command map');
|
|
111
|
-
assertPublicSkillMentions(readme, 'README catalogue');
|
|
112
111
|
assertPublicSkillMentions(docsFlow, 'flow namespace');
|
|
113
112
|
assertPublicSkillMentions(arch, 'architecture surface');
|
|
114
113
|
|
package/scripts/sync-version.sh
CHANGED
|
@@ -39,7 +39,7 @@ for (const u of updates) {
|
|
|
39
39
|
const readmePath = path.resolve('README.md');
|
|
40
40
|
const readme = fs.readFileSync(readmePath, 'utf8');
|
|
41
41
|
const statusLine =
|
|
42
|
-
`**Status:** [\`v${version}\`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v${version})
|
|
42
|
+
`**Status:** [\`v${version}\`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v${version}): ` +
|
|
43
43
|
"see [`CHANGELOG.md`](CHANGELOG.md) for release notes.";
|
|
44
44
|
const re = /\*\*Status:\*\*[^\n]*(?:\n(?!\n)[^\n]*)*/;
|
|
45
45
|
if (re.test(readme)) {
|
|
@@ -49,6 +49,6 @@ if (re.test(readme)) {
|
|
|
49
49
|
console.log(' → README.md');
|
|
50
50
|
}
|
|
51
51
|
} else {
|
|
52
|
-
console.warn(' ! README.md status line not found
|
|
52
|
+
console.warn(' ! README.md status line not found: skipping');
|
|
53
53
|
}
|
|
54
54
|
NODE
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
DevRites' publish (release.yml) and auto-merge paths are high-value targets, so this
|
|
5
5
|
gate fails CI when a workflow:
|
|
6
6
|
|
|
7
|
-
- uses any non-local action not pinned to a full 40-char commit SHA
|
|
7
|
+
- uses any non-local action not pinned to a full 40-char commit SHA: a moving
|
|
8
8
|
tag like `@v2` lets a compromised upstream inject code into the pipeline;
|
|
9
|
-
- declares no `permissions:` scope anywhere
|
|
9
|
+
- declares no `permissions:` scope anywhere: the default token is broad;
|
|
10
10
|
- uses `permissions: write-all` (over-broad);
|
|
11
11
|
- uses `pull_request_target`, except for a Dependabot-only workflow that never
|
|
12
12
|
checks out PR code.
|
|
13
|
+
- leaves an internal `: ` unquoted in a workflow or step name, which makes the
|
|
14
|
+
workflow invalid YAML and prevents every job from starting.
|
|
13
15
|
|
|
14
16
|
Usage: validate-workflow-security.py [DIR] (default: .github/workflows)
|
|
15
17
|
Exit: 0 clean; 1 on any finding.
|
|
@@ -26,6 +28,7 @@ DEPENDABOT_ONLY_RE = re.compile(
|
|
|
26
28
|
r"['\"]dependabot\[bot\]['\"]",
|
|
27
29
|
re.MULTILINE,
|
|
28
30
|
)
|
|
31
|
+
UNQUOTED_NAME_COLON_RE = re.compile(r"^\s*(?:-\s*)?name:\s+[^'\"].*:\s+\S")
|
|
29
32
|
|
|
30
33
|
|
|
31
34
|
def safe_dependabot_target(text):
|
|
@@ -43,15 +46,18 @@ def scan_text(path, text):
|
|
|
43
46
|
lines = text.splitlines()
|
|
44
47
|
dependabot_target_is_safe = safe_dependabot_target(text)
|
|
45
48
|
if not re.search(r"^\s*permissions:", text, re.MULTILINE):
|
|
46
|
-
findings.append("%s: no permissions: scope
|
|
49
|
+
findings.append("%s: no permissions: scope: the default GITHUB_TOKEN is broad; "
|
|
47
50
|
"add an explicit least-privilege permissions block" % path)
|
|
48
51
|
for i, line in enumerate(lines, 1):
|
|
52
|
+
if UNQUOTED_NAME_COLON_RE.match(line):
|
|
53
|
+
findings.append("%s:%d: name contains an unquoted colon: quote the complete "
|
|
54
|
+
"name so GitHub can parse the workflow" % (path, i))
|
|
49
55
|
if "write-all" in line:
|
|
50
|
-
findings.append("%s:%d: permissions: write-all is over-broad
|
|
56
|
+
findings.append("%s:%d: permissions: write-all is over-broad: scope to the "
|
|
51
57
|
"minimum needed" % (path, i))
|
|
52
58
|
if "pull_request_target" in line and not dependabot_target_is_safe:
|
|
53
59
|
findings.append("%s:%d: pull_request_target runs with secrets on untrusted PR "
|
|
54
|
-
"code
|
|
60
|
+
"code: only a Dependabot-only workflow without checkout is allowed"
|
|
55
61
|
% (path, i))
|
|
56
62
|
m = USES_RE.match(line)
|
|
57
63
|
if not m:
|
|
@@ -63,7 +69,7 @@ def scan_text(path, text):
|
|
|
63
69
|
pin = at[1] if len(at) == 2 else ""
|
|
64
70
|
if not SHA_RE.match(pin):
|
|
65
71
|
findings.append("%s:%d: action '%s' not pinned to a full commit "
|
|
66
|
-
"SHA
|
|
72
|
+
"SHA: pin it (a moving tag is a supply-chain risk)"
|
|
67
73
|
% (path, i, ref))
|
|
68
74
|
return findings
|
|
69
75
|
|
|
@@ -170,7 +170,7 @@ def existing_or_alias(workspace: Path, name: str) -> bool:
|
|
|
170
170
|
|
|
171
171
|
def find_local_workspaces(root: Path) -> list[Path]:
|
|
172
172
|
# A devrites workspace is identified by its devrites-specific artifacts, NOT by
|
|
173
|
-
# README.md
|
|
173
|
+
# README.md: every repo root has a README.md, and matching on it here both
|
|
174
174
|
# misclassifies the repo root as a workspace and short-circuits the .devrites/work
|
|
175
175
|
# scan below (return [root] before the loop ever runs).
|
|
176
176
|
if root.is_dir() and any((root / name).exists() for name in ("spec.md", "state.md", "feature.md")):
|
|
@@ -440,7 +440,7 @@ def main(argv: list[str]) -> int:
|
|
|
440
440
|
print(f"workspace-schema: {len(errors)} error(s) across {len(set(workspaces))} workspace(s)", file=sys.stderr)
|
|
441
441
|
return 1
|
|
442
442
|
|
|
443
|
-
print(f"workspace-schema: OK
|
|
443
|
+
print(f"workspace-schema: OK: {len(set(workspaces))} workspace(s) validated")
|
|
444
444
|
return 0
|
|
445
445
|
|
|
446
446
|
|
package/scripts/validate.sh
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# validate.sh
|
|
2
|
+
# validate.sh: static validation of the DevRites pack (no install required).
|
|
3
3
|
# Run from anywhere. Exits non-zero if any hard check fails.
|
|
4
4
|
|
|
5
5
|
set -u
|
|
@@ -207,7 +207,7 @@ fi
|
|
|
207
207
|
section "no global ~/.claude writes"
|
|
208
208
|
if bash "$ROOT/scripts/check-no-global-writes.sh" >/tmp/dr_glob 2>&1; then good "no-global-writes check passed"; else bad "no-global-writes check failed"; cat /tmp/dr_glob; fi
|
|
209
209
|
|
|
210
|
-
# ---- 11. principle uniqueness
|
|
210
|
+
# ---- 11. principle uniqueness: each canonical heading appears exactly once
|
|
211
211
|
section "principle uniqueness"
|
|
212
212
|
if bash "$ROOT/scripts/check-rule-uniqueness.sh" >/tmp/dr_uniq 2>&1; then
|
|
213
213
|
cat /tmp/dr_uniq
|
|
@@ -254,7 +254,7 @@ fi
|
|
|
254
254
|
# ---- 12. no runtime-broken pack/.claude/ path in installed prose ---------
|
|
255
255
|
# After install the leading pack/ is stripped, so any literal pack/.claude/skills/devrites-lib/reference/standards/
|
|
256
256
|
# or pack/.claude/skills/ in shipped SKILL.md / reference prose is a dead path
|
|
257
|
-
# at runtime. (Repo README/docs links are out of scope
|
|
257
|
+
# at runtime. (Repo README/docs links are out of scope: they're GitHub links.)
|
|
258
258
|
section "no literal pack/.claude/ paths in shipped skill prose"
|
|
259
259
|
# Exclude the intentional resolution-snippet fallback (`... || P=pack/.claude/...`): the
|
|
260
260
|
# preamble snippet tries the installed `.claude/` path first, then `${CLAUDE_SKILL_DIR}`
|
|
@@ -273,7 +273,7 @@ fi
|
|
|
273
273
|
section "no false session-start autoload claim"
|
|
274
274
|
AUTOLOAD_HITS="$(grep -rl 'autoloaded by Claude Code' "$ROOT/pack" "$ROOT/docs" "$ROOT/README.md" 2>/dev/null || true)"
|
|
275
275
|
if [ -n "$AUTOLOAD_HITS" ]; then
|
|
276
|
-
bad "false 'autoloaded by Claude Code' claim
|
|
276
|
+
bad "false 'autoloaded by Claude Code' claim: the pack ships no autoload wiring:"
|
|
277
277
|
printf '%s\n' "$AUTOLOAD_HITS" | sed "s|$ROOT/||"
|
|
278
278
|
else
|
|
279
279
|
good "no false session-start autoload claim in pack/ docs/ README.md"
|
|
@@ -327,18 +327,18 @@ fi
|
|
|
327
327
|
# ---- 15. shellcheck (error = blocking, warning = advisory) ---------------
|
|
328
328
|
# CI runners ship shellcheck, so the error-level gate is enforced on every PR.
|
|
329
329
|
# Locally it self-skips when shellcheck is absent (the gate is non-blocking only
|
|
330
|
-
# where the tool isn't installed
|
|
330
|
+
# where the tool isn't installed: never silently downgraded where it is).
|
|
331
331
|
section "shellcheck (-S error blocking · -S warning advisory)"
|
|
332
332
|
if command -v shellcheck >/dev/null 2>&1; then
|
|
333
333
|
for f in $SH_LIST; do
|
|
334
334
|
if shellcheck -S error "$f"; then good "shellcheck ${f#"$ROOT"/}"; else bad "shellcheck (error) ${f#"$ROOT"/}"; fi
|
|
335
335
|
done
|
|
336
|
-
# warning-level is informational
|
|
336
|
+
# warning-level is informational: surfaced per file, never fails the build.
|
|
337
337
|
for f in $SH_LIST; do
|
|
338
338
|
shellcheck -S warning "$f" >/dev/null 2>&1 || echo " advisory (warning-level): ${f#"$ROOT"/}"
|
|
339
339
|
done
|
|
340
340
|
else
|
|
341
|
-
echo "skip: shellcheck not installed locally (optional
|
|
341
|
+
echo "skip: shellcheck not installed locally (optional: CI enforces the error-level gate)"
|
|
342
342
|
fi
|
|
343
343
|
|
|
344
344
|
# ---- summary -------------------------------------------------------------
|