@event4u/agent-config 16.5.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/skills/install-agent-config/SKILL.md +4 -4
- package/CHANGELOG.md +463 -498
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +10 -6
- package/dist/agent-src/commands/agents/init.md +66 -3
- package/dist/agent-src/commands/agents/user/init.md +3 -0
- package/dist/agent-src/commands/{optimize/deep.md → analyze/and-optimize.md} +72 -33
- package/dist/agent-src/commands/analyze/inbox.md +168 -37
- package/dist/agent-src/commands/analyze/pr.md +144 -0
- package/dist/agent-src/commands/analyze/{repo.md → reference.md} +85 -14
- package/dist/agent-src/commands/analyze/roadmap-repos.md +19 -10
- package/dist/agent-src/commands/analyze.md +28 -12
- package/dist/agent-src/commands/audit.md +115 -0
- package/dist/agent-src/commands/brand/review.md +13 -2
- package/dist/agent-src/commands/brand/tokens.md +3 -3
- package/dist/agent-src/commands/brand/voice.md +8 -5
- package/dist/agent-src/commands/brand.md +2 -2
- package/dist/agent-src/commands/challenge-me/closure.md +25 -0
- package/dist/agent-src/commands/design-system/import.md +8 -3
- package/dist/agent-src/commands/design-system/sync.md +98 -0
- package/dist/agent-src/commands/design-system.md +6 -1
- package/dist/agent-src/commands/evals/analyze.json +44 -0
- package/dist/agent-src/commands/evals/audit.json +12 -0
- package/dist/agent-src/commands/evals/retro.json +12 -0
- package/dist/agent-src/commands/fix/ci.md +10 -8
- package/dist/agent-src/commands/ghostwriter/write.md +22 -0
- package/dist/agent-src/commands/memory/learn-low-impact.md +70 -83
- package/dist/agent-src/commands/memory/propose.md +12 -0
- package/dist/agent-src/commands/memory.md +1 -1
- package/dist/agent-src/commands/optimize.md +4 -3
- package/dist/agent-src/commands/post-as/me.md +18 -0
- package/dist/agent-src/commands/pr/create.md +17 -342
- package/dist/agent-src/commands/pr/merge.md +129 -368
- package/dist/agent-src/commands/retro.md +121 -0
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +4 -1
- package/dist/agent-src/commands/roadmap/process-full.md +46 -333
- package/dist/agent-src/commands/roadmap/triage-parked.md +6 -2
- package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -2
- package/dist/agent-src/commands/team-knowledge.md +1 -1
- package/dist/agent-src/commands/threat-model.md +1 -1
- package/dist/agent-src/commands/upstream-contribute.md +91 -101
- package/dist/agent-src/commands/worktree/cleanup.md +18 -11
- package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +54 -0
- package/dist/agent-src/contexts/execution/analysis-loop.md +137 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +3 -3
- package/dist/agent-src/contexts/execution/decision-closure-execution.md +1 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +6 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +11 -4
- package/dist/agent-src/contexts/execution/pr-create-branches-content.md +250 -0
- package/dist/agent-src/contexts/execution/pr-create-branches-freshness.md +150 -0
- package/dist/agent-src/contexts/execution/pr-merge-queue.md +287 -0
- package/dist/agent-src/contexts/execution/pr-merge-sync.md +276 -0
- package/dist/agent-src/contexts/execution/pr-merge-trust-boundary.md +69 -0
- package/dist/agent-src/contexts/execution/process-full-all.md +233 -0
- package/dist/agent-src/contexts/execution/process-full-delivery.md +231 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract-branches.md +42 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -35
- package/dist/agent-src/contexts/execution/roadmap-process-loop-close.md +235 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-prescan.md +216 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-run.md +253 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-set.md +212 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +25 -864
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +14 -2
- package/dist/agent-src/contexts/execution/subagent-steering.md +65 -8
- package/dist/agent-src/contexts/model-recommendations.md +5 -5
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +11 -5
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/dist/agent-src/guidelines/design-antipatterns.md +5 -0
- package/dist/agent-src/guidelines/design-asset-discipline.md +17 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +1 -0
- package/dist/agent-src/guidelines/php/api-design.md +10 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +7 -6
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +0 -1
- package/dist/agent-src/rules/design-fidelity.md +12 -13
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/rules/fix-what-you-see.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +14 -15
- package/dist/agent-src/rules/missing-skill-recovery.md +12 -11
- package/dist/agent-src/rules/neighbour-precedence.md +1 -1
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +2 -2
- package/dist/agent-src/rules/token-budget-discipline.md +1 -1
- package/dist/agent-src/scripts/dashboard_mode.ts +4 -1
- package/dist/agent-src/scripts/roadmap_age.ts +175 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -3
- package/dist/agent-src/skills/agent-security-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +12 -4
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +7 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +11 -1
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +7 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +7 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +19 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +7 -0
- package/dist/agent-src/skills/api-design/SKILL.md +2 -2
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/authz-review/SKILL.md +5 -3
- package/dist/agent-src/skills/blade-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/brand/SKILL.md +7 -3
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +13 -6
- package/dist/agent-src/skills/brand-audit/SKILL.md +2 -1
- package/dist/agent-src/skills/brand-identity/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-strategy/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +18 -39
- package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +2 -2
- package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +2 -2
- package/dist/agent-src/skills/canvas-design/SKILL.md +12 -2
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/composer-packages/SKILL.md +18 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +8 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +6 -6
- package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +13 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.mjs +1706 -0
- package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +7 -1
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-flow-mapper/SKILL.md +5 -2
- package/dist/agent-src/skills/database/SKILL.md +5 -4
- package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +12 -0
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +1 -1
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +61 -11
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +1 -1
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +10 -2
- package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
- package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -3
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +14 -14
- package/dist/agent-src/skills/{wireframe → design-review}/references/story-beat-ledger.schema.json +1 -1
- package/dist/agent-src/skills/design-review/references/verification-automation.md +11 -3
- package/dist/agent-src/skills/design-system-capture/SKILL.md +15 -10
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -5
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +2 -2
- package/dist/agent-src/skills/design-tokens/SKILL.md +23 -23
- package/dist/agent-src/skills/design-tokens/scripts/tokens.mjs +1037 -0
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +336 -13
- package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +52 -53
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +14 -276
- package/dist/agent-src/skills/existing-ui-audit/procedure.yaml +44 -0
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md +4 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01-enumerate-components.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md +7 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/02-identify-design-system.md +12 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/03-detect-design-tokens.md +35 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md +13 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04b-live-storybook-read.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/05-list-reusable-patterns.md +14 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/06-match-candidates.md +52 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/07-greenfield-branch.md +29 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/08-a11y-baseline.md +40 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/09-validate-and-write.md +5 -0
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +16 -2
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +1 -1
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +6 -6
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/form-handler/SKILL.md +15 -2
- package/dist/agent-src/skills/git-workflow/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +7 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +12 -0
- package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +10 -0
- package/dist/agent-src/skills/gtm-launch/SKILL.md +8 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +7 -2
- package/dist/agent-src/skills/humanizer/SKILL.md +16 -3
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +13 -1
- package/dist/agent-src/skills/humanizer/references/fixtures.md +8 -0
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +5 -4
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.mjs +197 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +18 -22
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +5 -5
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +18 -0
- package/dist/agent-src/skills/logo-generation/SKILL.md +9 -3
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +6 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +8 -1
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +2 -0
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +10 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/references/ev-fixtures.md +13 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/references/odds-and-bonus.md +7 -0
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analyzer/SKILL.md +14 -75
- package/dist/agent-src/skills/project-analyzer/procedure.yaml +39 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/01-project-overview.md +9 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/02-architecture.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/03-data-layer.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/04-business-domains.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/05-api-surface.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/06-service-map.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/07-module-inventory.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/08-infrastructure-and-testing.md +5 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/09-agent-docs-audit.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/10-gap-analysis.md +6 -0
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +10 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +13 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +11 -0
- package/dist/agent-src/skills/react-native-setup/SKILL.md +7 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +5 -1
- package/dist/agent-src/skills/react-shadcn-ui/references/registry.md +13 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.mjs +315 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +6 -6
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +2 -2
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/archival.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +9 -2
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -4
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +1 -2
- package/dist/agent-src/skills/security/SKILL.md +41 -5
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +23 -8
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +19 -1
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/standards-from-config/SKILL.md +2 -2
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +5 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.mjs +99 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +13 -13
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +4 -3
- package/dist/agent-src/skills/svg-authoring/SKILL.md +7 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +8 -3
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.mjs +482 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +8 -1
- package/dist/agent-src/skills/threat-modeling/data/manifest.json +5 -2
- package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -10
- package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +11 -10
- package/dist/agent-src/skills/threat-modeling/data/threats.csv +34 -20
- package/dist/agent-src/skills/type-design/SKILL.md +196 -0
- package/dist/agent-src/skills/type-design/references/font-spec.md +90 -0
- package/dist/agent-src/skills/type-design/references/gates.md +113 -0
- package/dist/agent-src/skills/type-design/references/toolchain.md +66 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +21 -11
- package/dist/agent-src/skills/typography-system/references/worked-scales.md +85 -0
- package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +120 -125
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +71 -2
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +16 -14
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +1 -1
- package/dist/agent-src/templates/github-workflows/advisories-daily.yml +85 -0
- package/dist/agent-src/templates/roadmaps.md +39 -1
- package/dist/agent-src/templates/scripts/check_memory.ts +2 -2
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/dist/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/dist/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/dist/cli/commands/uiRender.js +72 -17
- package/dist/cli/commands/uiRenderAsset.js +10 -2
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +8 -20
- package/dist/cli/initRouting.js +1 -1
- package/dist/cli/mcp/dispatch.js +31 -9
- package/dist/cli/python/knowledge_ingest.js +7 -39
- package/dist/cli/python/workspace_secrets.js +4 -177
- package/dist/cli/registry.js +4 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +3 -2
- package/dist/cli-delegate/check_update_banner.js +635 -266
- package/dist/cli-delegate/{chunk-TMWYUOK4.js → chunk-2CX7NWRB.js} +224 -437
- package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-2SFOOFJJ.js} +259 -159
- package/dist/cli-delegate/chunk-2Y5AMLMY.js +136 -0
- package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
- package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-4SHNERBL.js} +37 -16
- package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
- package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
- package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
- package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
- package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
- package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
- package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
- package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
- package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
- package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
- package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CAL76ADI.js} +4215 -682
- package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
- package/dist/cli-delegate/chunk-E6XNBVE4.js +581 -0
- package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-ESUNQ5XR.js} +46 -10
- package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
- package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
- package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
- package/dist/cli-delegate/chunk-GOMILC3O.js +918 -0
- package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
- package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
- package/dist/cli-delegate/chunk-IROAQ77A.js +137 -0
- package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
- package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-JHMMWNJ2.js} +54 -40
- package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
- package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
- package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
- package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
- package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
- package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-SIOMDAKL.js} +980 -784
- package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
- package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
- package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
- package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
- package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
- package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
- package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
- package/dist/cli-delegate/cmd_adr_effective.js +41 -2
- package/dist/cli-delegate/cmd_analyze_session.js +7 -7
- package/dist/cli-delegate/cmd_brand_status.js +1287 -10
- package/dist/cli-delegate/cmd_ci_settle.js +330 -0
- package/dist/cli-delegate/cmd_conformance.js +483 -817
- package/dist/cli-delegate/cmd_doctor.js +26 -16
- package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
- package/dist/cli-delegate/cmd_explain.js +9 -24
- package/dist/cli-delegate/cmd_export.js +14 -11
- package/dist/cli-delegate/cmd_fleet.js +5 -3
- package/dist/cli-delegate/cmd_git_convention.js +8 -4
- package/dist/cli-delegate/cmd_handoff.js +79 -242
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +4 -2
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_preflight.js +7 -5
- package/dist/cli-delegate/cmd_prune.js +16 -13
- package/dist/cli-delegate/cmd_route_audit.js +11 -8
- package/dist/cli-delegate/cmd_route_explain.js +649 -16
- package/dist/cli-delegate/cmd_session_recycle.js +15 -6
- package/dist/cli-delegate/cmd_settings_check.js +2 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +14 -11
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +16 -13
- package/dist/cli-delegate/cmd_uninstall.js +185 -31
- package/dist/cli-delegate/cmd_update.js +67 -3
- package/dist/cli-delegate/cmd_upgrade.js +38 -7
- package/dist/cli-delegate/cmd_validate.js +16 -13
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/dashboard_mode.js +1 -1
- package/dist/cli-delegate/gate_execute.js +4 -3
- package/dist/cli-delegate/roadmap_age.js +22 -0
- package/dist/cli-delegate/roadmap_gates.js +4 -3
- package/dist/cli-delegate/update_roadmap_progress.js +3 -2
- package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +373 -190
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +21 -16
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17506 -18692
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/egress_engine.chunk.cjs +915 -0
- package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
- package/dist/hooks/svg_rules.chunk.cjs +281 -49
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
- package/dist/install/conflict.js +36 -6
- package/dist/install/conflictTracker.js +81 -7
- package/dist/install/detect.js +3 -3
- package/dist/install/hostPermissionsAdapter.js +106 -0
- package/dist/install/install.mjs +3117 -1949
- package/dist/install/installThinLayer.js +1 -1
- package/dist/install/manifestFiles.js +21 -0
- package/dist/install/noGoDenyRows.js +300 -0
- package/dist/install/noGoRules.js +368 -0
- package/dist/install/ownershipLedger.js +133 -0
- package/dist/install/plan.js +1 -1
- package/dist/install/preflight.js +39 -8
- package/dist/install/preserve.js +74 -12
- package/dist/install/recordedOwnership.js +88 -5
- package/dist/install/rule_scope.js +20 -3
- package/dist/install/stagedRuntime.js +455 -0
- package/dist/install/toolsArg.js +19 -0
- package/dist/install/userPin.js +47 -0
- package/dist/install/wizard-plan.js +26 -4
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
- package/dist/mcp/registry-manifest.json +6 -5
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +9831 -5546
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +7 -12
- package/dist/scripts/_lib/asset_render_record.js +219 -0
- package/dist/scripts/_lib/claude_builtin_names.js +9 -4
- package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
- package/dist/scripts/_lib/egress_rules.js +766 -0
- package/dist/scripts/_lib/environment_detector.js +24 -33
- package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
- package/dist/scripts/_lib/guidelines_lane.js +10 -1
- package/dist/scripts/_lib/identifier_redaction.js +24 -0
- package/dist/scripts/_lib/installed_layer.js +17 -0
- package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
- package/dist/scripts/_lib/lean_projection_mode.js +34 -152
- package/dist/scripts/_lib/project_tree_form.js +118 -0
- package/dist/scripts/_lib/scoped_projection.js +133 -3
- package/dist/scripts/_lib/settings_removed_keys.js +29 -0
- package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
- package/dist/scripts/_lib/subagent_native_fields.js +35 -0
- package/dist/scripts/_lib/svg_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_rules.js +2 -0
- package/dist/scripts/_lib/ui_surface.js +19 -0
- package/dist/scripts/_lib/verification_command.js +364 -0
- package/dist/scripts/_lib/workspace_secrets.js +229 -0
- package/dist/scripts/ai_council/seat_policy.js +27 -0
- package/dist/scripts/ai_council/transport_resolver.js +9 -10
- package/dist/scripts/condense.js +25 -29
- package/dist/server/io/substituteTemplate.js +2 -2
- package/dist/server/io/yamlIO.js +2 -2
- package/dist/server/routes/install.js +5 -1
- package/dist/server/routes/settings.js +2 -2
- package/dist/server/routes/wizard.js +1 -1
- package/dist/server/schemas/settings.js +22 -16
- package/dist/server/serverInfo.js +1 -1
- package/dist/shared/brandTokenDocument.js +47 -0
- package/dist/shared/brandTokenPaths.js +43 -0
- package/dist/shared/settingsCarveOut.js +0 -7
- package/dist/shared/skillRanking.js +103 -5
- package/dist/shared/userMd/formAdapter.js +16 -0
- package/dist/shared/userMd/schema.js +17 -0
- package/dist/ui/assets/index-w70Ado09.js +23 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +89 -2
- package/docs/THIRD-PARTY-NOTICES.md +27 -0
- package/docs/contracts/settings-classes.md +27 -9
- package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
- package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/docs/guidelines/design-antipatterns.md +5 -0
- package/docs/guidelines/design-asset-discipline.md +17 -0
- package/docs/guidelines/design-fidelity-routing.md +1 -0
- package/docs/guidelines/php/api-design.md +10 -1
- package/llms.txt +12 -10
- package/package.json +13 -4
- package/src/agent-src/scripts/dashboard_mode.ts +4 -1
- package/src/agent-src/scripts/roadmap_age.ts +175 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/check_memory.ts +2 -2
- package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/src/config/agent-settings.template.yml +120 -57
- package/src/config/agents-paths.yml +13 -7
- package/src/config/ci-local-parity.yml +44 -0
- package/src/config/continuity-surface.json +51 -2
- package/src/config/depth-audit-samples.json +5 -0
- package/src/config/discovery/command-verbs.yml +1 -0
- package/src/config/dispatch-economy-metrics.json +1 -0
- package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
- package/src/config/egress-mutations/credential-token-restores.json +7 -0
- package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
- package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +149 -3
- package/src/config/gate-reachability-exemptions.json +3 -5
- package/src/config/gate-violation-baselines.json +26 -22
- package/src/config/gitignore-block.txt +6 -3
- package/src/config/hook-bundle-budget.json +34 -3
- package/src/config/hook-carrier-probes.json +30 -0
- package/src/config/hook-latency-budget.json +4 -2
- package/src/config/host-injection-effect.json +8 -1
- package/src/config/host-skill-frontmatter-keys.json +56 -0
- package/src/config/layer-form-brakes.json +4 -0
- package/src/config/layer-form-comparison-corpus.json +42 -0
- package/src/config/loop-surfaces.yaml +28 -47
- package/src/config/memory-twin-verdicts.yml +9 -1
- package/src/config/metric-registry.yml +40 -3
- package/src/config/pack-size-budget.json +15 -0
- package/src/config/procedure-core-budget.json +21 -0
- package/src/config/profiles/minimal.ini +1 -1
- package/src/config/project-tree-form.json +24 -0
- package/src/config/reach-channels.yml +3 -3
- package/src/config/reach-prescriptions-intake.yml +1 -1
- package/src/config/roadmap-step-size-baseline.json +118 -0
- package/src/config/routing-coverage-seed.json +93 -2
- package/src/config/skill-body-budget.json +686 -0
- package/src/config/skill-fork-pilot.json +17 -0
- package/src/config/skill-lifecycle-probes-codex.json +57 -0
- package/src/config/skill-lifecycle-probes.json +57 -0
- package/src/config/skill-output-shape.json +316 -0
- package/src/config/step-depth-table.json +58 -0
- package/src/config/turnaround-budget.json +90 -0
- package/src/install/conflict.ts +38 -6
- package/src/install/conflictTracker.ts +126 -8
- package/src/install/detect.ts +3 -3
- package/src/install/hostPermissionsAdapter.ts +136 -0
- package/src/install/installThinLayer.ts +6 -1
- package/src/install/manifestFiles.ts +24 -0
- package/src/install/noGoDenyRows.ts +368 -0
- package/src/install/noGoRules.ts +438 -0
- package/src/install/ownershipLedger.ts +180 -0
- package/src/install/plan.ts +1 -1
- package/src/install/preflight.ts +42 -10
- package/src/install/preserve.ts +94 -12
- package/src/install/recordedOwnership.ts +121 -3
- package/src/install/rule_scope.ts +20 -3
- package/src/install/stagedRuntime.ts +528 -0
- package/src/install/toolsArg.ts +16 -0
- package/src/install/types.ts +23 -2
- package/src/install/userPin.ts +54 -0
- package/src/install/wizard-plan.ts +25 -4
- package/src/scripts/_cli/_doctor_emit.ts +24 -0
- package/src/scripts/_cli/cmd_brand_status.ts +223 -12
- package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -44
- package/src/scripts/_cli/cmd_route_explain.ts +176 -2
- package/src/scripts/_cli/cmd_uninstall.ts +270 -26
- package/src/scripts/_cli/cmd_update.ts +34 -1
- package/src/scripts/_cli/cmd_upgrade.ts +38 -2
- package/src/scripts/_cli/detection_report.ts +7 -0
- package/src/scripts/_cli/doctor_execution.ts +1 -2
- package/src/scripts/_cli/doctor_install_mode.ts +39 -0
- package/src/scripts/_cli/doctor_network_posture.ts +3 -3
- package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
- package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
- package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
- package/src/scripts/_cli/upgrade_unattended.ts +548 -0
- package/src/scripts/_dispatch.bash +42 -9
- package/src/scripts/_lib/activation_ladder.ts +1 -1
- package/src/scripts/_lib/advisory_inventory.ts +405 -0
- package/src/scripts/_lib/advisory_notice.ts +270 -0
- package/src/scripts/_lib/advisory_sources.ts +752 -0
- package/src/scripts/_lib/advisory_verdicts.ts +363 -0
- package/src/scripts/_lib/agent_artifact_location.ts +177 -0
- package/src/scripts/_lib/agent_settings.ts +7 -12
- package/src/scripts/_lib/arrival_record.ts +217 -0
- package/src/scripts/_lib/asset_render_record.ts +247 -0
- package/src/scripts/_lib/billing_grant.ts +4 -2
- package/src/scripts/_lib/brand_voice_slot.ts +258 -0
- package/src/scripts/_lib/canary_status.ts +24 -0
- package/src/scripts/_lib/cc_transcript.ts +276 -0
- package/src/scripts/_lib/changelog_eras.ts +83 -0
- package/src/scripts/_lib/claim_phrases.ts +71 -0
- package/src/scripts/_lib/classify_update.ts +171 -0
- package/src/scripts/_lib/claude_builtin_names.ts +9 -4
- package/src/scripts/_lib/claude_hook_scope.ts +195 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
- package/src/scripts/_lib/codex_resident_set.ts +460 -0
- package/src/scripts/_lib/codex_skill_finder.ts +225 -0
- package/src/scripts/_lib/confusables.ts +19 -0
- package/src/scripts/_lib/consumer_impact.ts +199 -0
- package/src/scripts/_lib/content_class.ts +127 -0
- package/src/scripts/_lib/counted_probe.ts +68 -1
- package/src/scripts/_lib/credential_deny_rows.ts +151 -0
- package/src/scripts/_lib/credential_files.ts +367 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
- package/src/scripts/_lib/depth_flip.ts +141 -0
- package/src/scripts/_lib/design_lock.ts +117 -0
- package/src/scripts/_lib/design_sync_ledger.ts +142 -0
- package/src/scripts/_lib/design_sync_plan.ts +177 -0
- package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
- package/src/scripts/_lib/design_sync_verify.ts +99 -0
- package/src/scripts/_lib/design_system_claude_design.ts +323 -0
- package/src/scripts/_lib/design_system_import.ts +84 -6
- package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
- package/src/scripts/_lib/egress_credential_env.ts +35 -0
- package/src/scripts/_lib/egress_engine.ts +22 -0
- package/src/scripts/_lib/egress_known_values.ts +223 -0
- package/src/scripts/_lib/egress_normalize.ts +67 -0
- package/src/scripts/_lib/egress_prefixes.ts +42 -0
- package/src/scripts/_lib/egress_rules.ts +896 -0
- package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
- package/src/scripts/_lib/egress_sender_scan.ts +290 -0
- package/src/scripts/_lib/egress_session_table.ts +510 -0
- package/src/scripts/_lib/egress_text.ts +63 -0
- package/src/scripts/_lib/egress_token.ts +252 -0
- package/src/scripts/_lib/empty_cycles.ts +1 -1
- package/src/scripts/_lib/environment_detector.ts +45 -30
- package/src/scripts/_lib/exemption_shape.ts +75 -1
- package/src/scripts/_lib/floor_posture.ts +185 -0
- package/src/scripts/_lib/forge_protection.ts +140 -2
- package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
- package/src/scripts/_lib/guidelines_lane.ts +12 -1
- package/src/scripts/_lib/hand_kinds.ts +65 -0
- package/src/scripts/_lib/headless_invocation.ts +3 -3
- package/src/scripts/_lib/host_capability.ts +34 -2
- package/src/scripts/_lib/host_env_write.ts +39 -18
- package/src/scripts/_lib/host_listing_model.ts +14 -7
- package/src/scripts/_lib/identifier_redaction.ts +26 -0
- package/src/scripts/_lib/impact_bump.ts +70 -0
- package/src/scripts/_lib/install_reach_checks.ts +53 -1
- package/src/scripts/_lib/installed_layer.ts +31 -0
- package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/layer_form_corpus.ts +165 -0
- package/src/scripts/_lib/layer_form_decision.ts +248 -0
- package/src/scripts/_lib/layer_form_evidence.ts +112 -0
- package/src/scripts/_lib/lean_projection_mode.ts +32 -161
- package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
- package/src/scripts/_lib/loop_guards.ts +8 -120
- package/src/scripts/_lib/major_surface.ts +207 -0
- package/src/scripts/_lib/mcp_bridge.ts +30 -69
- package/src/scripts/_lib/merge_clearance_record.ts +384 -0
- package/src/scripts/_lib/neighbour_census.ts +18 -1
- package/src/scripts/_lib/orchestration_record.ts +61 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
- package/src/scripts/_lib/pin_advice.ts +49 -0
- package/src/scripts/_lib/platform_anchor.ts +222 -0
- package/src/scripts/_lib/procedure_checks.ts +5 -0
- package/src/scripts/_lib/project_tree_form.ts +134 -0
- package/src/scripts/_lib/projection_key_migration.ts +122 -0
- package/src/scripts/_lib/prompt_shape.ts +13 -2
- package/src/scripts/_lib/provenance_verify.ts +272 -0
- package/src/scripts/_lib/quota_parked.ts +27 -1
- package/src/scripts/_lib/ratification_artifact.ts +64 -1
- package/src/scripts/_lib/ratification_subject.ts +508 -46
- package/src/scripts/_lib/release_findings_ingest.ts +52 -5
- package/src/scripts/_lib/release_highlights.ts +72 -2
- package/src/scripts/_lib/release_settings_surface.ts +392 -0
- package/src/scripts/_lib/review_round.ts +134 -0
- package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
- package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
- package/src/scripts/_lib/roadmap_step_size.ts +75 -0
- package/src/scripts/_lib/run_checkpoint.ts +60 -3
- package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
- package/src/scripts/_lib/scope_guard.sh +64 -5
- package/src/scripts/_lib/scoped_projection.ts +136 -3
- package/src/scripts/_lib/secret_detector.ts +24 -103
- package/src/scripts/_lib/security_fix.ts +429 -0
- package/src/scripts/_lib/security_fix_context.ts +133 -0
- package/src/scripts/_lib/self_repair.ts +69 -39
- package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
- package/src/scripts/_lib/self_repair_payload.ts +86 -0
- package/src/scripts/_lib/session_eol.ts +3 -0
- package/src/scripts/_lib/session_pr_watch.ts +207 -0
- package/src/scripts/_lib/session_register.ts +51 -1
- package/src/scripts/_lib/session_tag.ts +51 -0
- package/src/scripts/_lib/settings_removed_keys.ts +30 -0
- package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
- package/src/scripts/_lib/skill_catalogue.ts +66 -25
- package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
- package/src/scripts/_lib/skill_leases.ts +203 -0
- package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
- package/src/scripts/_lib/skill_materialisation.ts +388 -0
- package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
- package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
- package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
- package/src/scripts/_lib/skill_origin.ts +21 -1
- package/src/scripts/_lib/skill_reach.ts +342 -0
- package/src/scripts/_lib/source_shape.ts +7 -2
- package/src/scripts/_lib/sqlite_guard.ts +1 -1
- package/src/scripts/_lib/step_anatomy.ts +330 -0
- package/src/scripts/_lib/subagent_capsule.ts +8 -2
- package/src/scripts/_lib/subagent_native_fields.ts +30 -0
- package/src/scripts/_lib/subagent_spawn.ts +36 -0
- package/src/scripts/_lib/subagent_steering.ts +367 -0
- package/src/scripts/_lib/svg_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_rules.ts +2 -0
- package/src/scripts/_lib/test_delta.ts +89 -6
- package/src/scripts/_lib/tier_downshift_verdict.ts +222 -0
- package/src/scripts/_lib/tool_result_census.ts +62 -0
- package/src/scripts/_lib/trigger_routers.ts +1 -0
- package/src/scripts/_lib/turnaround_throughput.ts +378 -0
- package/src/scripts/_lib/ui_surface.ts +22 -0
- package/src/scripts/_lib/unattended_gates.ts +100 -0
- package/src/scripts/_lib/undeployed_fixes.ts +34 -0
- package/src/scripts/_lib/update_check.ts +143 -12
- package/src/scripts/_lib/update_invite.ts +116 -0
- package/src/scripts/_lib/update_notice.ts +259 -0
- package/src/scripts/_lib/verify_clause.ts +4 -2
- package/src/scripts/_lib/version_order.ts +146 -0
- package/src/scripts/_lib/worker_reuse.ts +191 -0
- package/src/scripts/_lib/workspace_secrets.ts +273 -0
- package/src/scripts/_lib/worktree_git.ts +67 -0
- package/src/scripts/_lib/worktree_ignored.ts +116 -0
- package/src/scripts/adoption_status.ts +330 -3
- package/src/scripts/adr_cite_check.ts +93 -0
- package/src/scripts/advisories.ts +803 -0
- package/src/scripts/ai-image/adapters/flux.sh +1 -0
- package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
- package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
- package/src/scripts/ai-image/adapters/recraft.sh +1 -0
- package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
- package/src/scripts/ai-video/adapters/fal.sh +1 -0
- package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
- package/src/scripts/ai-video/adapters/kling.sh +1 -0
- package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
- package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
- package/src/scripts/ai-video/adapters/replicate.sh +1 -0
- package/src/scripts/ai-video/adapters/sora.sh +1 -0
- package/src/scripts/ai-video/adapters/syncso.sh +1 -0
- package/src/scripts/ai-video/stitch.sh +115 -2
- package/src/scripts/ai_council/airgap.ts +1 -0
- package/src/scripts/ai_council/api_transport.ts +27 -4
- package/src/scripts/ai_council/budget_guard.ts +300 -11
- package/src/scripts/ai_council/bundler.ts +20 -29
- package/src/scripts/ai_council/chairman.ts +17 -2
- package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
- package/src/scripts/ai_council/cli_launch_env.ts +54 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
- package/src/scripts/ai_council/clients.ts +55 -73
- package/src/scripts/ai_council/config.ts +16 -22
- package/src/scripts/ai_council/council_egress.ts +167 -0
- package/src/scripts/ai_council/exposure_ledger.ts +117 -0
- package/src/scripts/ai_council/free_hand_shadow.ts +276 -0
- package/src/scripts/ai_council/free_route.ts +216 -0
- package/src/scripts/ai_council/free_route_catalog.ts +173 -0
- package/src/scripts/ai_council/free_route_client.ts +95 -0
- package/src/scripts/ai_council/free_rung.ts +61 -0
- package/src/scripts/ai_council/hand_payload.ts +230 -0
- package/src/scripts/ai_council/hand_schemas.ts +123 -0
- package/src/scripts/ai_council/jury_aggregate.ts +155 -1
- package/src/scripts/ai_council/kind_flip.ts +221 -0
- package/src/scripts/ai_council/kind_flip_state.ts +19 -0
- package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
- package/src/scripts/ai_council/modification_review.ts +98 -5
- package/src/scripts/ai_council/necessity.ts +7 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -16
- package/src/scripts/ai_council/pricing.ts +10 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
- package/src/scripts/ai_council/response_render.ts +27 -4
- package/src/scripts/ai_council/round_reservations.ts +119 -0
- package/src/scripts/ai_council/route_chooser.ts +161 -0
- package/src/scripts/ai_council/route_liveness.ts +152 -0
- package/src/scripts/ai_council/route_member.ts +52 -0
- package/src/scripts/ai_council/seat_policy.ts +40 -0
- package/src/scripts/ai_council/seat_resume.ts +40 -0
- package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
- package/src/scripts/ai_council/spend_gate.ts +18 -2
- package/src/scripts/ai_council/status_surface.ts +37 -0
- package/src/scripts/ai_council/transport_resolver.ts +15 -18
- package/src/scripts/analysis_analysts.ts +226 -0
- package/src/scripts/analysis_anchors.ts +140 -0
- package/src/scripts/analysis_and_optimize.ts +44 -0
- package/src/scripts/analysis_emit.ts +150 -0
- package/src/scripts/analysis_exchange.ts +186 -0
- package/src/scripts/analysis_gate.ts +158 -0
- package/src/scripts/analysis_inbox_final.ts +173 -0
- package/src/scripts/analysis_ledger.ts +119 -0
- package/src/scripts/analysis_pr_optimize.ts +219 -0
- package/src/scripts/analysis_pr_review.ts +240 -0
- package/src/scripts/analysis_pr_target.ts +121 -0
- package/src/scripts/analysis_prompts.ts +130 -0
- package/src/scripts/analysis_publish.ts +358 -0
- package/src/scripts/analysis_questions.ts +78 -0
- package/src/scripts/analysis_run.ts +248 -0
- package/src/scripts/analysis_run_record.ts +210 -0
- package/src/scripts/analysis_target.ts +343 -0
- package/src/scripts/analysis_validate.ts +161 -0
- package/src/scripts/anchor_eval_falsify.ts +1 -1
- package/src/scripts/arrival_report.ts +115 -0
- package/src/scripts/ask_transport.ts +284 -35
- package/src/scripts/backfill_model_tier.ts +4 -5
- package/src/scripts/before_complete_hook.ts +48 -2
- package/src/scripts/bench_hook_latency.ts +3 -3
- package/src/scripts/bench_procedure_cursor.ts +440 -0
- package/src/scripts/bootstrap.sh +3 -3
- package/src/scripts/build_exit_code_register.ts +440 -0
- package/src/scripts/build_proof.ts +23 -1
- package/src/scripts/cache_realization_report.ts +155 -14
- package/src/scripts/canary_liveness.ts +117 -0
- package/src/scripts/chat_history.ts +12 -15
- package/src/scripts/check_account_surface.ts +318 -0
- package/src/scripts/check_agent_artifact_location.ts +17 -160
- package/src/scripts/check_bundle_path_leakage.ts +6 -0
- package/src/scripts/check_ci_local_parity.ts +21 -13
- package/src/scripts/check_claims.ts +77 -2
- package/src/scripts/check_completion_review.ts +34 -1
- package/src/scripts/check_concern_admissions.ts +41 -5
- package/src/scripts/check_consumer_scope_flip.ts +1 -1
- package/src/scripts/check_context_paths.ts +2 -0
- package/src/scripts/check_council_layout.ts +9 -0
- package/src/scripts/check_credential_spelling.ts +267 -0
- package/src/scripts/check_egress_mutations.ts +239 -0
- package/src/scripts/check_enforcement_coverage.ts +16 -3
- package/src/scripts/check_estate_count.ts +16 -1
- package/src/scripts/check_finding_dispositions.ts +147 -0
- package/src/scripts/check_gate_coverage.ts +123 -21
- package/src/scripts/check_gate_reachability.ts +16 -2
- package/src/scripts/check_generator_sync.ts +46 -0
- package/src/scripts/check_hook_bundle_composition.ts +139 -1
- package/src/scripts/check_host_docs_digest.ts +142 -5
- package/src/scripts/check_kernel_edit_ratified.ts +301 -76
- package/src/scripts/check_kernel_rule_bundle.ts +14 -10
- package/src/scripts/check_knowledge_cards.ts +83 -3
- package/src/scripts/check_memory.ts +13 -3
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_permission_deny_syntax.ts +247 -0
- package/src/scripts/check_platform_anchor.ts +243 -0
- package/src/scripts/check_proposal.ts +183 -1
- package/src/scripts/check_reach_channels.ts +5 -3
- package/src/scripts/check_references.ts +5 -2
- package/src/scripts/check_release_manifest_content.ts +33 -0
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_rule_invariants.ts +9 -1
- package/src/scripts/check_skill_body_budget.ts +343 -0
- package/src/scripts/check_skill_requires.ts +137 -1
- package/src/scripts/check_step_receipts.ts +246 -0
- package/src/scripts/check_structural_breaking.ts +7 -1
- package/src/scripts/check_suppression_hygiene.ts +8 -0
- package/src/scripts/check_test_weakening.ts +14 -0
- package/src/scripts/check_token_quality_golden.ts +5 -1
- package/src/scripts/check_update_banner.ts +50 -3
- package/src/scripts/check_verify_expectation_delta.ts +2 -1
- package/src/scripts/check_voice_lexicon.ts +531 -0
- package/src/scripts/ci_os_attribution.ts +327 -0
- package/src/scripts/ci_platform_scope.ts +69 -0
- package/src/scripts/ci_settle.ts +4 -1
- package/src/scripts/ci_status.ts +0 -1
- package/src/scripts/ci_time_to_green.ts +748 -0
- package/src/scripts/classify_merge_risk.ts +407 -19
- package/src/scripts/code_graph/sqlite_store.ts +1 -1
- package/src/scripts/compile_trigger_evals.ts +353 -0
- package/src/scripts/condense.ts +25 -31
- package/src/scripts/consumer_matrix.ts +61 -3
- package/src/scripts/council_availability_hook.ts +12 -4
- package/src/scripts/council_cli.ts +48 -38
- package/src/scripts/cross_repo_retrieve.ts +9 -72
- package/src/scripts/design_lock.ts +106 -0
- package/src/scripts/design_slop_rules.ts +30 -0
- package/src/scripts/design_sync.ts +264 -0
- package/src/scripts/design_system_import.ts +30 -13
- package/src/scripts/dispatch_economy_report.ts +46 -1
- package/src/scripts/dispatch_r2_reviewer.ts +41 -5
- package/src/scripts/egress_canary.ts +166 -0
- package/src/scripts/egress_sender_census.ts +101 -0
- package/src/scripts/external_sources_denylist.json +94 -12
- package/src/scripts/generate_catalog.ts +6 -2
- package/src/scripts/generate_owned_digest.ts +163 -0
- package/src/scripts/generate_reference_toc.ts +143 -0
- package/src/scripts/generate_subagent_floor.ts +11 -1
- package/src/scripts/handoff_context_hook.ts +34 -0
- package/src/scripts/hook_carrier_census.ts +263 -0
- package/src/scripts/hook_chunks.d.mts +12 -0
- package/src/scripts/hook_chunks.mjs +114 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +65 -42
- package/src/scripts/hooks/block_config_weakening.ts +127 -3
- package/src/scripts/hooks/block_credential_reads.ts +165 -0
- package/src/scripts/hooks/block_no_verify.ts +47 -23
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +38 -7
- package/src/scripts/hooks/category_a.ts +202 -25
- package/src/scripts/hooks/concern_failure_policy.ts +6 -6
- package/src/scripts/hooks/concern_registry.ts +31 -6
- package/src/scripts/hooks/concern_registry_types.ts +11 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
- package/src/scripts/hooks/design_pass_hook.ts +42 -10
- package/src/scripts/hooks/dispatch_hook.ts +13 -12
- package/src/scripts/hooks/egress_engine_loader.ts +125 -0
- package/src/scripts/hooks/egress_stage.ts +440 -0
- package/src/scripts/hooks/hook_stdin.ts +29 -4
- package/src/scripts/hooks/host_docs_pages.ts +194 -0
- package/src/scripts/hooks/host_docs_pages.yaml +75 -0
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.yaml +22 -21
- package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
- package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
- package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
- package/src/scripts/hooks/lazy_concern.ts +148 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
- package/src/scripts/hooks/payload_stub.ts +16 -6
- package/src/scripts/hooks/permission_gate.ts +7 -7
- package/src/scripts/hooks/push_settle_hook.ts +32 -3
- package/src/scripts/hooks/replay_hook.ts +43 -0
- package/src/scripts/hooks/reread_guard_hook.ts +87 -10
- package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +8 -1
- package/src/scripts/hooks/session_eol_hook.ts +48 -1
- package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
- package/src/scripts/hooks/spawn_guard_shadow_hook.ts +203 -10
- package/src/scripts/hooks/state_io.ts +2 -2
- package/src/scripts/hooks/svg_obligation.ts +75 -19
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
- package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
- package/src/scripts/hooks_doctor.ts +31 -0
- package/src/scripts/hooks_status.ts +58 -3
- package/src/scripts/inbox_source_census.ts +74 -13
- package/src/scripts/install +25 -3
- package/src/scripts/install.ts +60 -91
- package/src/scripts/interruption_report.ts +11 -1
- package/src/scripts/layer_baseline_report.ts +267 -0
- package/src/scripts/learning_sidecar.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +3 -0
- package/src/scripts/lint_blocker_citations.ts +104 -0
- package/src/scripts/lint_breaking_changes_index.ts +40 -7
- package/src/scripts/lint_consolidation_lineage.ts +144 -16
- package/src/scripts/lint_consumer_internal_refs.ts +90 -42
- package/src/scripts/lint_context_spine_usage.ts +21 -0
- package/src/scripts/lint_design_antipattern_parity.ts +39 -7
- package/src/scripts/lint_evidence_artifacts.ts +31 -0
- package/src/scripts/lint_example_fences.ts +11 -2
- package/src/scripts/lint_ghostwriter_source.ts +42 -10
- package/src/scripts/lint_hook_manifest.ts +94 -0
- package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
- package/src/scripts/lint_mcp_config_security.ts +9 -11
- package/src/scripts/lint_plan_risk_register.ts +28 -1
- package/src/scripts/lint_positioning.ts +4 -4
- package/src/scripts/lint_provenance.ts +1 -0
- package/src/scripts/lint_roadmap_blockers.ts +65 -4
- package/src/scripts/lint_roadmap_complexity.ts +98 -0
- package/src/scripts/lint_skill_link_reach.ts +251 -9
- package/src/scripts/lint_skill_procedures.ts +252 -0
- package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
- package/src/scripts/lint_subagent_determinism.ts +14 -1
- package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
- package/src/scripts/mcp_registry_submit.sh +2 -2
- package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
- package/src/scripts/mcp_server/suggest_skill.ts +89 -4
- package/src/scripts/mcp_server/tools.ts +2 -33
- package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
- package/src/scripts/measure_turn_end_gate.ts +61 -1
- package/src/scripts/merge_clearance.ts +225 -0
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/network_sources.ts +236 -0
- package/src/scripts/no_go_deny_rows.ts +225 -0
- package/src/scripts/orchestration_record.ts +15 -2
- package/src/scripts/plan_test_shards.ts +103 -0
- package/src/scripts/pr_url_reminder_hook.ts +10 -0
- package/src/scripts/print_required_checks.ts +5 -5
- package/src/scripts/probe_depth_shadow.ts +406 -0
- package/src/scripts/probe_turnaround.ts +342 -10
- package/src/scripts/ratification_subject.ts +176 -0
- package/src/scripts/rdp_gate_classify.ts +1 -0
- package/src/scripts/rdp_quality_eval.ts +1 -0
- package/src/scripts/release.ts +26 -55
- package/src/scripts/release_drill.ts +52 -23
- package/src/scripts/release_env.ts +37 -0
- package/src/scripts/release_publication.ts +11 -1
- package/src/scripts/report_consumer_gate_reach.ts +233 -0
- package/src/scripts/report_merge_gate_load.ts +295 -0
- package/src/scripts/report_project_contract.ts +123 -0
- package/src/scripts/report_reducible_classes.ts +342 -0
- package/src/scripts/report_required_checks_drift.ts +5 -3
- package/src/scripts/report_skill_host_census.ts +199 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/retro.ts +758 -0
- package/src/scripts/retro_facts.ts +575 -0
- package/src/scripts/retro_queue.ts +739 -0
- package/src/scripts/retro_session_facts.ts +218 -0
- package/src/scripts/retro_sweep.ts +493 -0
- package/src/scripts/retro_triage.ts +126 -0
- package/src/scripts/roadmap_context.ts +2 -2
- package/src/scripts/roadmap_drain_queue.ts +601 -0
- package/src/scripts/run_supervise.ts +24 -2
- package/src/scripts/schemas/agent-settings.schema.json +0 -16
- package/src/scripts/schemas/command.schema.json +3 -3
- package/src/scripts/schemas/review-findings.schema.json +8 -0
- package/src/scripts/schemas/skill.schema.json +7 -6
- package/src/scripts/schemas/subagent.schema.json +33 -2
- package/src/scripts/score_skill_selection.ts +5 -2
- package/src/scripts/second_brain_retrieval.ts +1 -0
- package/src/scripts/second_brain_run.ts +1 -0
- package/src/scripts/self_repair_cli.ts +563 -87
- package/src/scripts/self_review_gate.ts +59 -4
- package/src/scripts/session_register_hook.ts +91 -4
- package/src/scripts/sessions_cli.ts +100 -5
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
- package/src/scripts/skill_trigger_eval.ts +4 -2
- package/src/scripts/source_adapters.ts +183 -0
- package/src/scripts/step_receipt.ts +100 -0
- package/src/scripts/sync_pr_branch.ts +4 -0
- package/src/scripts/test_council_qualification.ts +1 -1
- package/src/scripts/trigger_eval_grandfather.json +3 -49
- package/src/scripts/trigger_eval_rotation.ts +31 -3
- package/src/scripts/ui_conformance_probe.ts +405 -1
- package/src/scripts/update_counts.ts +230 -11
- package/src/scripts/update_invite_hook.ts +245 -0
- package/src/scripts/update_notice_hook.ts +298 -0
- package/src/scripts/validate_frontmatter.ts +85 -0
- package/src/scripts/worker_reuse_shadow_report.ts +121 -0
- package/src/scripts/worktree_cleanup_check.ts +915 -121
- package/src/server/io/yamlIO.ts +2 -2
- package/src/server/schemas/settings.ts +37 -23
- package/src/shared/brandTokenDocument.ts +46 -0
- package/src/shared/brandTokenPaths.ts +43 -0
- package/src/shared/settingsCarveOut.ts +0 -8
- package/src/shared/skillRanking.ts +106 -5
- package/src/shared/userMd/formAdapter.ts +15 -1
- package/src/shared/userMd/schema.ts +22 -0
- package/src/templates/agent-user.md +4 -0
- package/src/templates/agent-user.yml +4 -0
- package/dist/cli-delegate/chunk-4DBG5K7M.js +0 -1123
- package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
- package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
- package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
- package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
- package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
- package/dist/ui/assets/index-C3djEJah.js +0 -23
- package/src/scripts/_lib/continuation_ladder.ts +0 -335
- package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
|
@@ -65,280 +65,20 @@ Design starts from project truth, not generic aesthetic memory.
|
|
|
65
65
|
|
|
66
66
|
## Procedure: Audit the existing UI surface
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
1.
|
|
71
|
-
2.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
Capture each component/template as:
|
|
83
|
-
`{path, name, kind: component|view|style|page, exports?: [props]}`.
|
|
84
|
-
|
|
85
|
-
The `kind` set is the one `agent-config ui:audit` actually emits — its single
|
|
86
|
-
definition is `AUDIT_KINDS` in `src/cli/commands/uiAudit.ts`, and a test asserts
|
|
87
|
-
this line against that constant rather than restating it. It read
|
|
88
|
-
`page|partial|component|layout` until 2026-08-26; only two of those four values
|
|
89
|
-
existed in the code, so an artefact written by the command was being read here
|
|
90
|
-
against a contract it did not satisfy.
|
|
91
|
-
|
|
92
|
-
`partial` and `layout` are not in the set. Neither has an operational definition
|
|
93
|
-
that survives contact with a real tree, and adding a branch for a category
|
|
94
|
-
nobody can test is how the previous mismatch happened.
|
|
95
|
-
|
|
96
|
-
`view` is the **Blade** classification — `*.blade.php` and `resources/views/`.
|
|
97
|
-
It reads zero in a JavaScript tree by construction, which is not the same as
|
|
98
|
-
unused.
|
|
99
|
-
|
|
100
|
-
### 1b. Detect the component-granularity taxonomy the project already chose
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
npx tsx scripts/work_engine/taxonomy/detect.ts # or import detect_component_taxonomy(root)
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Returns the project's **own** tier names joined with `/` — `atoms/molecules/organisms`, `primitives/patterns/features`, whatever it actually uses — or `none`. Record it as `state.ui_audit.component_taxonomy`, with `state.ui_audit.component_root` for where the components live. `none` is a real answer, and leaves every downstream step behaving exactly as it did before this detection existed. Never write a taxonomy the project does not evidence, and never "tidy" a layout into one — this step *finds* the project's structure, it never supplies one. Detection rules, the declared-beats-inferred precedence and the two collision floors: [`references/component-taxonomy-detection.md`](references/component-taxonomy-detection.md).
|
|
107
|
-
|
|
108
|
-
### 2. Identify the design system
|
|
109
|
-
|
|
110
|
-
Detect markers, in order. **Stop at the first match** — projects rarely run more than one design system.
|
|
111
|
-
|
|
112
|
-
| Marker | Signal | Where |
|
|
113
|
-
|---|---|---|
|
|
114
|
-
| Flux | `livewire/flux` in `composer.json`, `<flux:*>` tags in views | `composer.json`, grep `resources/views` |
|
|
115
|
-
| shadcn/ui | `components.json` exists at the **workspace** root — the package that owns it; in a monorepo this is never the repository root | `components.json` |
|
|
116
|
-
| Headless UI | `@headlessui/react` or `@headlessui/vue` in `package.json` | `package.json` |
|
|
117
|
-
| Radix | `@radix-ui/*` in `package.json` (without shadcn marker) | `package.json` |
|
|
118
|
-
| Material/Chakra/Mantine/Ant | their package names in `package.json` | `package.json` |
|
|
119
|
-
| Custom / none | none of the above match | — |
|
|
120
|
-
|
|
121
|
-
### 3. Detect design tokens
|
|
122
|
-
|
|
123
|
-
Write into `state.ui_audit.design_tokens` (object, never null — empty object is fine):
|
|
124
|
-
|
|
125
|
-
| Source | What to extract |
|
|
126
|
-
|---|---|
|
|
127
|
-
| **`tailwind-v3`** (`axes.css`) — `tailwind.config.{js,ts,cjs,mjs}` | `theme.colors`, `theme.spacing`, `theme.fontFamily`, `theme.extend.*` |
|
|
128
|
-
| **`tailwind-v4`** (`axes.css`) — the `@theme` block in the entry CSS; **no config file exists**, and `components.json` `"tailwind": {"config": ""}` is the marker | every `--token: value` declared inside `@theme` / `@theme inline` |
|
|
129
|
-
| `:root { --... }` blocks in `resources/css/`, `app/globals.css`, `src/app/globals.css` | every `--token-name: value` pair |
|
|
130
|
-
| `theme.json` / `tokens.json` (any depth) | flat or nested token tree |
|
|
131
|
-
| `app/css/variables.css`, `assets/scss/_tokens.scss` | SCSS `$var: value` and CSS custom properties |
|
|
132
|
-
| **A supplied `design-system.json`** (handed over with a provided artifact) | `colors`, `typography`, `spacing`, `radius`, `shadow`, **and `motion`** (`durations`, `easings`) — read as the answer, never re-derived |
|
|
133
|
-
| **A supplied artifact's own `:root { --… }` / inline `<style>`** (the handover file itself, e.g. `design.html`) | every `--token-name: value` pair, when no `design-system.json` accompanies it |
|
|
134
|
-
|
|
135
|
-
Group output by category: `colors`, `spacing`, `radius`, `font`, `shadow`, `breakpoint`, `other`.
|
|
136
|
-
|
|
137
|
-
**Branch on the axis, do not probe for a config file.** `detect_stack()` emits
|
|
138
|
-
`axes.css` as `tailwind-v3` or `tailwind-v4`
|
|
139
|
-
(`work_engine/stack/detect.ts:521-524`); reading it is how this step and
|
|
140
|
-
`react-shadcn-ui` § Gotcha stay on the same key. Absence of
|
|
141
|
-
`tailwind.config.*` is v4's normal state, never a missing file.
|
|
142
|
-
|
|
143
|
-
**Artifact-sourced tokens stay distinguishable from project tokens.** Every
|
|
144
|
-
group carries a `source` — `project` for the first four rows, `artifact` for the
|
|
145
|
-
last two — because the mapping between them is the thing a port has to keep
|
|
146
|
-
visible. Collapsing them loses the answer to "did this value come from what the
|
|
147
|
-
user handed me, or from what the repo already had?", and that is exactly the
|
|
148
|
-
question the apply coverage report has to answer per item. The two sets may
|
|
149
|
-
disagree; when they do, surface the conflict rather than merging it (a supplied
|
|
150
|
-
spec outranks house taste, but not a registered brand token — see
|
|
151
|
-
[`brand-source-of-truth`](../../rules/brand-source-of-truth.md)).
|
|
152
|
-
|
|
153
|
-
`motion` is new here: the block has existed in the `design-system.json` schema
|
|
154
|
-
since capture shipped and **nothing consumed it**. On the port branch it is
|
|
155
|
-
read, so easing and duration stop being values the brief silently regenerates.
|
|
156
|
-
|
|
157
|
-
### 4. Detect shadcn inventory (only when `state.stack.frontend == "react-shadcn"`)
|
|
158
|
-
|
|
159
|
-
Read `components.json` for the registered style + base color, then read the `package.json` **of the scope root** — `state.stack.scope_root`, relative to the project root, empty when the project root *is* the scope — for `@radix-ui/*` or the unified `radix-ui` package, plus any locally vendored `components/ui/*.tsx` files. In a monorepo the repository root carries neither the marker nor the dependency, so reading it finds nothing. Write into `state.ui_audit.shadcn_inventory`:
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
{
|
|
163
|
-
version: <from package.json shadcn registry CLI version, or null>,
|
|
164
|
-
style: "default" | "new-york" | <other>,
|
|
165
|
-
base_color: "slate" | "zinc" | ...,
|
|
166
|
-
primitives: ["Button", "Dialog", "Form", "Table", ...], // names of files in components/ui/
|
|
167
|
-
installed_radix: ["@radix-ui/react-dialog", ...] // raw radix list
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### 4b. Prefer a live Storybook read over the hand-read inventory — when one is running
|
|
172
|
-
|
|
173
|
-
When the project carries `@storybook/addon-mcp` **and** a Storybook is running, query it
|
|
174
|
-
instead of reading files: `docs-list` for the inventory, then `docs-show` for the components
|
|
175
|
-
that matter. **The live read wins; the hand-read inventory of step 4 is the fallback and is
|
|
176
|
-
never removed** — an agent that cannot reach a running Storybook must still be able to
|
|
177
|
-
inventory the library. The channel disappearing is normal, not an error.
|
|
178
|
-
|
|
179
|
-
**The names are version-bound, and these are the current ones.** Own derivation, from a
|
|
180
|
-
throwaway `npm install` on 2026-09-13, not from any document: at `@storybook/addon-mcp@10.6.0`
|
|
181
|
-
the docs tools are registered by `storybook`'s own `createDocsToolset` under the method ids
|
|
182
|
-
`docs.list` / `docs.show` / `docs.showStory`, and `toMcpToolName` renders those as `docs-list`,
|
|
183
|
-
`docs-show` and `docs-show-story`. The older `list-all-documentation` / `get-documentation` were
|
|
184
|
-
the literal names at `@storybook/addon-mcp@0.7.0` (via `@storybook/mcp@0.8.0`); at 10.6.0 they
|
|
185
|
-
survive only as the tools' human-readable **titles**. There is no 10.5.x of the addon — it goes
|
|
186
|
-
0.7.0 → 10.6.0 — so a project on the current scaffold gets the `docs-*` names. If a live
|
|
187
|
-
`tools/list` disagrees, the live read wins over this paragraph.
|
|
188
|
-
|
|
189
|
-
**React-only while the toolset is in preview.** Storybook's own MCP FAQ (docs **10.5**,
|
|
190
|
-
`docs/ai/mcp/overview` § FAQ) states the documentation toolset supports React only during
|
|
191
|
-
preview, so Vue, Angular, and Web Components take the file-read path. Stated here rather than
|
|
192
|
-
discovered at runtime, because the failure otherwise looks like a broken MCP server.
|
|
193
|
-
|
|
194
|
-
Discipline for what the live read returns is [`storybook-workshop`](../storybook-workshop/SKILL.md)'s
|
|
195
|
-
— in particular: never use a prop the manifest does not document, and fetch the project's
|
|
196
|
-
story instructions before writing a story.
|
|
197
|
-
|
|
198
|
-
### 5. List reusable patterns
|
|
199
|
-
|
|
200
|
-
Categorize what already exists. Empty arrays are valid, never omit the keys.
|
|
201
|
-
|
|
202
|
-
```
|
|
203
|
-
state.ui_audit.patterns = {
|
|
204
|
-
forms: [<component path:str>, ...], // any component with <form>, useForm, <flux:input>, <Input> + <Button type=submit>
|
|
205
|
-
tables: [...], // <table>, <flux:table>, DataTable, headless table primitives
|
|
206
|
-
modals: [...], // <flux:modal>, <Dialog>, AlertDialog, Sheet
|
|
207
|
-
empty_states: [...], // components matching grep "no results"|"empty"|"keine"|"nothing yet"
|
|
208
|
-
navigation: [...], // sidebar, breadcrumb, tabs
|
|
209
|
-
data_display: [...] // cards, lists, stat tiles
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### 6. Match candidates for the current input
|
|
214
|
-
|
|
215
|
-
For each item in `state.ui_audit.components`, score similarity to `state.input.data` (fuzzy on filename + props/slots + co-occurring terms). Keep top 5 with `score >= 0.3`. Write into `state.ui_audit.candidates`:
|
|
216
|
-
|
|
217
|
-
```
|
|
218
|
-
[{path, name, score, reason: "matches 'settings' + 'toggle' in props"}, ...]
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
If `candidates` is empty, the user is building net-new. That is normal — record the empty list, do not halt.
|
|
222
|
-
|
|
223
|
-
#### 6b. Conformance gate — when a provided artifact is the spec
|
|
224
|
-
|
|
225
|
-
Similarity above is scored against `state.input.data`. That answers *"is this
|
|
226
|
-
component like the thing being asked for"* and it does **not** answer *"does
|
|
227
|
-
this component satisfy the artifact"* — which is a different question with a
|
|
228
|
-
different answer, because a candidate can be an excellent name-and-props match
|
|
229
|
-
and still use the wrong type scale, the wrong control, or a colour the artifact
|
|
230
|
-
never states. Until this step existed nothing anywhere asked the second
|
|
231
|
-
question, while `ui-audit-gate` carried *"reuse
|
|
232
|
-
beats duplication"* as unqualified prose. Reused on an artifact port, an
|
|
233
|
-
unconforming candidate is a fidelity deviation dressed as good hygiene.
|
|
234
|
-
|
|
235
|
-
So when a provided design artifact is the spec
|
|
236
|
-
([`design-fidelity`](../../rules/design-fidelity.md)), each candidate carries a
|
|
237
|
-
**conformance verdict** alongside its score, and reuse is conditional on it:
|
|
238
|
-
|
|
239
|
-
```
|
|
240
|
-
[{path, name, score, reason,
|
|
241
|
-
conformance: {verdict: "conforms|deviates|unknown",
|
|
242
|
-
dimensions: {structure, values, behaviour, responsive},
|
|
243
|
-
refused_by: "values"}}, ...]
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
- **`conforms`** → reuse it. This is the ordinary case and nothing changed.
|
|
247
|
-
- **`deviates`** → do **not** reuse silently. Name the dimension that refused
|
|
248
|
-
it — *"`Card` deviates on `values`: type scale 14/20 against the artifact's
|
|
249
|
-
16/24"* — and surface reuse-with-adaptation versus build-new as a choice.
|
|
250
|
-
A bare "candidate rejected" is not a discharge; the caller cannot act on it.
|
|
251
|
-
- **`unknown`** → the candidate was not scored against the artifact (no
|
|
252
|
-
extraction yet, or a subtree the audit could not read). Treat as `deviates`
|
|
253
|
-
for the purpose of not reusing silently, and say which of the two it is —
|
|
254
|
-
"did not conform" and "was not checked" are different facts.
|
|
255
|
-
|
|
256
|
-
**And the decision moves after extraction, not before it.** A conformance
|
|
257
|
-
verdict needs the artifact's own values, so a reuse decision taken before
|
|
258
|
-
extraction is taken without the evidence that decides it. Where the run has an
|
|
259
|
-
artifact, order is: extract → audit → score → conform → decide. The unqualified
|
|
260
|
-
reuse-first ordering stands only where there is no artifact to conform to.
|
|
261
|
-
|
|
262
|
-
**Scope:** this is a gate on REUSE, not a license to rewrite the incumbent. A
|
|
263
|
-
candidate that deviates is left alone; the choice is whether *this* work builds
|
|
264
|
-
on it.
|
|
265
|
-
|
|
266
|
-
### 7. Greenfield branch
|
|
267
|
-
|
|
268
|
-
If **all** are true:
|
|
269
|
-
- `state.ui_audit.components` is empty
|
|
270
|
-
- `state.ui_audit.design_system == "custom-or-none"`
|
|
271
|
-
- `state.ui_audit.design_tokens` is empty (no Tailwind config customizations, no `:root`)
|
|
272
|
-
|
|
273
|
-
then set `state.ui_audit.greenfield = true` and emit a halt:
|
|
274
|
-
|
|
275
|
-
```
|
|
276
|
-
> No existing UI surface detected — this looks like greenfield.
|
|
277
|
-
>
|
|
278
|
-
> 1. Scaffold a minimal token set + a base component primitive folder
|
|
279
|
-
> before building (recommended for projects with >1 planned screen)
|
|
280
|
-
> 2. Proceed bare with Tailwind defaults (recommended for one-off prototypes)
|
|
281
|
-
> 3. Point me at an external design-system reference (URL or file)
|
|
282
|
-
> 4. Scaffold + a granularity convention — as 1, and new components go into
|
|
283
|
-
> named granularity folders you pick the names for; rename or drop it later
|
|
284
|
-
> and nothing here objects
|
|
285
|
-
|
|
286
|
-
**Recommendation: 1 — Scaffold tokens + primitives** — even one extra screen
|
|
287
|
-
benefits from a shared base; the scaffold cost is ~10 min and saves
|
|
288
|
-
re-doing every primitive on screen 2. Caveat: flip to 2 if this is a
|
|
289
|
-
demo or single-page prototype that will not grow.
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Option 4 is an **offer**, and the only one made anywhere: a project that already exists is never asked (§ 1b reads what it chose), and a greenfield project picking any other number has declined terminally, because the halt is a no-op once any decision is recorded. It stays one more number in the same block rather than a second question — a single number still answers it, which is what the reply-shape rule requires.
|
|
293
|
-
|
|
294
|
-
Record the user's pick in `state.ui_audit.greenfield_decision` (`scaffold` | `bare` | `external_reference` | `granularity_convention`). Re-running the skill on the same state-file with `greenfield_decision` set is a no-op for the halt (audit findings stay). `granularity_convention` takes the same scaffold path as `scaffold` — it adds the convention, it does not replace the scaffolding.
|
|
295
|
-
|
|
296
|
-
### 8. (Optional) Capture an a11y baseline
|
|
297
|
-
|
|
298
|
-
The R4 visual-review-loop contract reads `state.ui_audit.a11y_baseline`
|
|
299
|
-
when present; the review gate then filters incoming
|
|
300
|
-
`state.ui_review.a11y.violations` against it so pre-existing
|
|
301
|
-
violations stay informational and only NEW or CHANGED entries block
|
|
302
|
-
the polish loop. Without a baseline the gate sees every violation as
|
|
303
|
-
actionable — fine for greenfield, noisy for legacy surfaces.
|
|
304
|
-
|
|
305
|
-
Capture the baseline when:
|
|
306
|
-
|
|
307
|
-
- The audit covers components with known a11y debt the project does
|
|
308
|
-
not intend to fix in this run (legacy templates, third-party
|
|
309
|
-
embeds, vendor widgets).
|
|
310
|
-
- The user says "don't block on existing a11y issues" or similar.
|
|
311
|
-
|
|
312
|
-
Skip the baseline (omit the key, leave `state.ui_audit.a11y_baseline`
|
|
313
|
-
unset) when:
|
|
314
|
-
|
|
315
|
-
- The surface is greenfield — the review gate should treat every
|
|
316
|
-
violation as new.
|
|
317
|
-
- The project's a11y posture is "zero known violations" and any
|
|
318
|
-
finding is by definition actionable.
|
|
319
|
-
|
|
320
|
-
Shape (each entry must carry at least `rule` + `selector`; severity
|
|
321
|
-
is optional but recommended so the review gate's severity-floor
|
|
322
|
-
filter behaves the same on replay):
|
|
323
|
-
|
|
324
|
-
```
|
|
325
|
-
state.ui_audit.a11y_baseline = [
|
|
326
|
-
{rule: "color-contrast", selector: ".legacy-tab", severity: "moderate"},
|
|
327
|
-
{rule: "label", selector: "form#search input[type=search]"},
|
|
328
|
-
...
|
|
329
|
-
]
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
Producer parity: the review skill that writes
|
|
333
|
-
`state.ui_review.a11y.violations` MUST use the same `(rule, selector)`
|
|
334
|
-
shape, otherwise the engine's de-dup will miss matches and pre-existing
|
|
335
|
-
violations will surface as new findings on every run.
|
|
336
|
-
|
|
337
|
-
### 9. Validate and write findings
|
|
338
|
-
|
|
339
|
-
1. Verify every key in the **Output format** below is present in `state.ui_audit` (empty arrays/objects allowed; `null` only for `shadcn_inventory` outside the react-shadcn stack).
|
|
340
|
-
2. Verify `state.ui_audit.greenfield == true` implies `state.ui_audit.greenfield_decision` is set.
|
|
341
|
-
3. Write the full object back into the state-file. Audit completes with outcome `done` — the dispatcher's audit gate now passes.
|
|
68
|
+
The order is held by [`procedure.yaml`](procedure.yaml). Open the steps one at a time, in order, and start a step only after the one before it has met its exit. A `judgement` exit is sequenced, not verified: state what you decided before moving on.
|
|
69
|
+
|
|
70
|
+
1. [0. Inspect stack and input](references/steps/00-inspect-stack-and-input.md) — exit: `judgement`
|
|
71
|
+
2. [1. Enumerate components and templates](references/steps/01-enumerate-components.md) — exit: `check: ui-audit-components-in-tree`
|
|
72
|
+
3. [1b. Detect the component-granularity taxonomy](references/steps/01b-detect-component-taxonomy.md) — exit: `check: ui-audit-taxonomy-root-in-tree`
|
|
73
|
+
4. [2. Identify the design system](references/steps/02-identify-design-system.md) — exit: `judgement`
|
|
74
|
+
5. [3. Detect design tokens](references/steps/03-detect-design-tokens.md) — exit: `judgement`
|
|
75
|
+
6. [4. Detect shadcn inventory (react-shadcn only)](references/steps/04-detect-shadcn-inventory.md) — exit: `judgement`
|
|
76
|
+
7. [4b. Prefer a live Storybook read when one is running](references/steps/04b-live-storybook-read.md) — exit: `judgement`
|
|
77
|
+
8. [5. List reusable patterns](references/steps/05-list-reusable-patterns.md) — exit: `check: ui-audit-patterns-in-tree`
|
|
78
|
+
9. [6. Match candidates for the current input (with the 6b conformance gate)](references/steps/06-match-candidates.md) — exit: `check: ui-audit-candidates-from-inventory`
|
|
79
|
+
10. [7. Greenfield branch](references/steps/07-greenfield-branch.md) — exit: `check: ui-audit-greenfield-consistent`
|
|
80
|
+
11. [8. (Optional) Capture an a11y baseline](references/steps/08-a11y-baseline.md) — exit: `judgement`
|
|
81
|
+
12. [9. Validate and write findings](references/steps/09-validate-and-write.md) — exit: `check: ui-audit-complete`
|
|
342
82
|
|
|
343
83
|
## Section index — load on demand
|
|
344
84
|
|
|
@@ -347,8 +87,6 @@ Load on demand once the audit needs the pitfall catalog:
|
|
|
347
87
|
- [`references/anti-slop-cross-reference.md`](references/anti-slop-cross-reference.md) — Anti-slop cross-reference
|
|
348
88
|
- [`references/component-taxonomy-detection.md`](references/component-taxonomy-detection.md) — Component-taxonomy detection rules
|
|
349
89
|
|
|
350
|
-
- [`references/output-and-pitfalls.md`](references/output-and-pitfalls.md) — Output format · Gotcha · Anti-slop cross-reference
|
|
351
|
-
|
|
352
90
|
## Output format
|
|
353
91
|
|
|
354
92
|
1. **`state.ui_audit.components`** — array of component/template descriptors (path, name, kind, exports)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
brief:
|
|
3
|
+
goal: Inventory the existing UI surface into state.ui_audit so design and apply reuse what exists.
|
|
4
|
+
inputs:
|
|
5
|
+
- state.stack.frontend
|
|
6
|
+
- state.input
|
|
7
|
+
done_when: state.ui_audit carries every Output format key and the tree agrees with its inventory.
|
|
8
|
+
steps:
|
|
9
|
+
- id: inspect-stack-and-input
|
|
10
|
+
file: references/steps/00-inspect-stack-and-input.md
|
|
11
|
+
exit: judgement
|
|
12
|
+
- id: enumerate-components
|
|
13
|
+
file: references/steps/01-enumerate-components.md
|
|
14
|
+
exit: 'check: ui-audit-components-in-tree'
|
|
15
|
+
- id: detect-component-taxonomy
|
|
16
|
+
file: references/steps/01b-detect-component-taxonomy.md
|
|
17
|
+
exit: 'check: ui-audit-taxonomy-root-in-tree'
|
|
18
|
+
- id: identify-design-system
|
|
19
|
+
file: references/steps/02-identify-design-system.md
|
|
20
|
+
exit: judgement
|
|
21
|
+
- id: detect-design-tokens
|
|
22
|
+
file: references/steps/03-detect-design-tokens.md
|
|
23
|
+
exit: judgement
|
|
24
|
+
- id: detect-shadcn-inventory
|
|
25
|
+
file: references/steps/04-detect-shadcn-inventory.md
|
|
26
|
+
exit: judgement
|
|
27
|
+
- id: live-storybook-read
|
|
28
|
+
file: references/steps/04b-live-storybook-read.md
|
|
29
|
+
exit: judgement
|
|
30
|
+
- id: list-reusable-patterns
|
|
31
|
+
file: references/steps/05-list-reusable-patterns.md
|
|
32
|
+
exit: 'check: ui-audit-patterns-in-tree'
|
|
33
|
+
- id: match-candidates
|
|
34
|
+
file: references/steps/06-match-candidates.md
|
|
35
|
+
exit: 'check: ui-audit-candidates-from-inventory'
|
|
36
|
+
- id: greenfield-branch
|
|
37
|
+
file: references/steps/07-greenfield-branch.md
|
|
38
|
+
exit: 'check: ui-audit-greenfield-consistent'
|
|
39
|
+
- id: a11y-baseline
|
|
40
|
+
file: references/steps/08-a11y-baseline.md
|
|
41
|
+
exit: judgement
|
|
42
|
+
- id: validate-and-write
|
|
43
|
+
file: references/steps/09-validate-and-write.md
|
|
44
|
+
exit: 'check: ui-audit-complete'
|
|
@@ -24,7 +24,7 @@ wrong about one of them:
|
|
|
24
24
|
|
|
25
25
|
A corrective direction change against a supplied spec is not a design
|
|
26
26
|
improvement, it is overriding a decision the user already made — the failure
|
|
27
|
-
[`design-fidelity`](
|
|
27
|
+
[`design-fidelity`](../../../rules/design-fidelity.md) exists to prevent, arriving
|
|
28
28
|
through the audit's side door. Precedence and its exact scope:
|
|
29
29
|
[`design-fidelity-mechanics`](../../../guidelines/design-fidelity-mechanics.md)
|
|
30
30
|
§ Provided-artifact precedence. Where the two sources disagree, surface the
|
package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
# 0. Inspect stack and input
|
|
2
|
+
|
|
3
|
+
1. Read `state.stack.frontend` — set by `scripts/work_engine/stack/detect.ts` (one of `blade-livewire-flux`, `react-shadcn`, `vue`, `plain`).
|
|
4
|
+
2. Read `state.input` — the request being processed. The audit must answer: "what already exists that is similar to this request?"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 1. Enumerate components and templates
|
|
2
|
+
|
|
3
|
+
| Stack | Where to look |
|
|
4
|
+
|---|---|
|
|
5
|
+
| `blade-livewire-flux` | `resources/views/components/`, `resources/views/livewire/`, `resources/views/partials/`, `resources/views/layouts/`, `app/View/Components/`, `app/Livewire/` |
|
|
6
|
+
| `react-shadcn` | `components/`, `app/components/`, `src/components/`, `src/app/(routes)/`, plus any `app/**/page.tsx` for Next.js |
|
|
7
|
+
| `vue` | `resources/js/components/`, `src/components/`, `pages/` |
|
|
8
|
+
| `plain` | `resources/views/`, plus any `*.html` under `public/` |
|
|
9
|
+
|
|
10
|
+
Capture each component/template as:
|
|
11
|
+
`{path, name, kind: component|view|style|page, exports?: [props]}`.
|
|
12
|
+
|
|
13
|
+
The `kind` set is the one `agent-config ui:audit` actually emits — its single
|
|
14
|
+
definition is `AUDIT_KINDS` in `src/cli/commands/uiAudit.ts`, and a test asserts
|
|
15
|
+
this line against that constant rather than restating it. It read
|
|
16
|
+
`page|partial|component|layout` until 2026-08-26; only two of those four values
|
|
17
|
+
existed in the code, so an artefact written by the command was being read here
|
|
18
|
+
against a contract it did not satisfy.
|
|
19
|
+
|
|
20
|
+
`partial` and `layout` are not in the set. Neither has an operational definition
|
|
21
|
+
that survives contact with a real tree, and adding a branch for a category
|
|
22
|
+
nobody can test is how the previous mismatch happened.
|
|
23
|
+
|
|
24
|
+
`view` is the **Blade** classification — `*.blade.php` and `resources/views/`.
|
|
25
|
+
It reads zero in a JavaScript tree by construction, which is not the same as
|
|
26
|
+
unused.
|
package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 1b. Detect the component-granularity taxonomy the project already chose
|
|
2
|
+
|
|
3
|
+
```bash
|
|
4
|
+
npx tsx scripts/work_engine/taxonomy/detect.ts # or import detect_component_taxonomy(root)
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Returns the project's **own** tier names joined with `/` — `atoms/molecules/organisms`, `primitives/patterns/features`, whatever it actually uses — or `none`. Record it as `state.ui_audit.component_taxonomy`, with `state.ui_audit.component_root` for where the components live. `none` is a real answer, and leaves every downstream step behaving exactly as it did before this detection existed. Never write a taxonomy the project does not evidence, and never "tidy" a layout into one — this step *finds* the project's structure, it never supplies one. Detection rules, the declared-beats-inferred precedence and the two collision floors: [`references/component-taxonomy-detection.md`](../component-taxonomy-detection.md).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 2. Identify the design system
|
|
2
|
+
|
|
3
|
+
Detect markers, in order. **Stop at the first match** — projects rarely run more than one design system.
|
|
4
|
+
|
|
5
|
+
| Marker | Signal | Where |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Flux | `livewire/flux` in `composer.json`, `<flux:*>` tags in views | `composer.json`, grep `resources/views` |
|
|
8
|
+
| shadcn/ui | `components.json` exists at the **workspace** root — the package that owns it; in a monorepo this is never the repository root | `components.json` |
|
|
9
|
+
| Headless UI | `@headlessui/react` or `@headlessui/vue` in `package.json` | `package.json` |
|
|
10
|
+
| Radix | `@radix-ui/*` in `package.json` (without shadcn marker) | `package.json` |
|
|
11
|
+
| Material/Chakra/Mantine/Ant | their package names in `package.json` | `package.json` |
|
|
12
|
+
| Custom / none | none of the above match | — |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# 3. Detect design tokens
|
|
2
|
+
|
|
3
|
+
Write into `state.ui_audit.design_tokens` (object, never null — empty object is fine):
|
|
4
|
+
|
|
5
|
+
| Source | What to extract |
|
|
6
|
+
|---|---|
|
|
7
|
+
| **`tailwind-v3`** (`axes.css`) — `tailwind.config.{js,ts,cjs,mjs}` | `theme.colors`, `theme.spacing`, `theme.fontFamily`, `theme.extend.*` |
|
|
8
|
+
| **`tailwind-v4`** (`axes.css`) — the `@theme` block in the entry CSS; **no config file exists**, and `components.json` `"tailwind": {"config": ""}` is the marker | every `--token: value` declared inside `@theme` / `@theme inline` |
|
|
9
|
+
| `:root { --... }` blocks in `resources/css/`, `app/globals.css`, `src/app/globals.css` | every `--token-name: value` pair |
|
|
10
|
+
| `theme.json` / `tokens.json` (any depth) | flat or nested token tree |
|
|
11
|
+
| `app/css/variables.css`, `assets/scss/_tokens.scss` | SCSS `$var: value` and CSS custom properties |
|
|
12
|
+
| **A supplied `design-system.json`** (handed over with a provided artifact) | `colors`, `typography`, `spacing`, `radius`, `shadow`, **and `motion`** (`durations`, `easings`) — read as the answer, never re-derived |
|
|
13
|
+
| **A supplied artifact's own `:root { --… }` / inline `<style>`** (the handover file itself, e.g. `design.html`) | every `--token-name: value` pair, when no `design-system.json` accompanies it |
|
|
14
|
+
|
|
15
|
+
Group output by category: `colors`, `spacing`, `radius`, `font`, `shadow`, `breakpoint`, `other`.
|
|
16
|
+
|
|
17
|
+
**Branch on the axis, do not probe for a config file.** `detect_stack()` emits
|
|
18
|
+
`axes.css` as `tailwind-v3` or `tailwind-v4`
|
|
19
|
+
(`work_engine/stack/detect.ts:521-524`); reading it is how this step and
|
|
20
|
+
`react-shadcn-ui` § Gotcha stay on the same key. Absence of
|
|
21
|
+
`tailwind.config.*` is v4's normal state, never a missing file.
|
|
22
|
+
|
|
23
|
+
**Artifact-sourced tokens stay distinguishable from project tokens.** Every
|
|
24
|
+
group carries a `source` — `project` for the first four rows, `artifact` for the
|
|
25
|
+
last two — because the mapping between them is the thing a port has to keep
|
|
26
|
+
visible. Collapsing them loses the answer to "did this value come from what the
|
|
27
|
+
user handed me, or from what the repo already had?", and that is exactly the
|
|
28
|
+
question the apply coverage report has to answer per item. The two sets may
|
|
29
|
+
disagree; when they do, surface the conflict rather than merging it (a supplied
|
|
30
|
+
spec outranks house taste, but not a registered brand token — see
|
|
31
|
+
[`brand-source-of-truth`](../../../../rules/brand-source-of-truth.md)).
|
|
32
|
+
|
|
33
|
+
`motion` is new here: the block has existed in the `design-system.json` schema
|
|
34
|
+
since capture shipped and **nothing consumed it**. On the port branch it is
|
|
35
|
+
read, so easing and duration stop being values the brief silently regenerates.
|
package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 4. Detect shadcn inventory (only when `state.stack.frontend == "react-shadcn"`)
|
|
2
|
+
|
|
3
|
+
Read `components.json` for the registered style + base color, then read the `package.json` **of the scope root** — `state.stack.scope_root`, relative to the project root, empty when the project root *is* the scope — for `@radix-ui/*` or the unified `radix-ui` package, plus any locally vendored `components/ui/*.tsx` files. In a monorepo the repository root carries neither the marker nor the dependency, so reading it finds nothing. Write into `state.ui_audit.shadcn_inventory`:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
{
|
|
7
|
+
version: <from package.json shadcn registry CLI version, or null>,
|
|
8
|
+
style: "default" | "new-york" | <other>,
|
|
9
|
+
base_color: "slate" | "zinc" | ...,
|
|
10
|
+
primitives: ["Button", "Dialog", "Form", "Table", ...], // names of files in components/ui/
|
|
11
|
+
installed_radix: ["@radix-ui/react-dialog", ...] // raw radix list
|
|
12
|
+
}
|
|
13
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 4b. Prefer a live Storybook read over the hand-read inventory — when one is running
|
|
2
|
+
|
|
3
|
+
When the project carries `@storybook/addon-mcp` **and** a Storybook is running, query it
|
|
4
|
+
instead of reading files: `docs-list` for the inventory, then `docs-show` for the components
|
|
5
|
+
that matter. **The live read wins; the hand-read inventory of step 4 is the fallback and is
|
|
6
|
+
never removed** — an agent that cannot reach a running Storybook must still be able to
|
|
7
|
+
inventory the library. The channel disappearing is normal, not an error.
|
|
8
|
+
|
|
9
|
+
**The names are version-bound, and these are the current ones.** Own derivation, from a
|
|
10
|
+
throwaway `npm install` on 2026-09-13, not from any document: at `@storybook/addon-mcp@10.6.0`
|
|
11
|
+
the docs tools are registered by `storybook`'s own `createDocsToolset` under the method ids
|
|
12
|
+
`docs.list` / `docs.show` / `docs.showStory`, and `toMcpToolName` renders those as `docs-list`,
|
|
13
|
+
`docs-show` and `docs-show-story`. The older `list-all-documentation` / `get-documentation` were
|
|
14
|
+
the literal names at `@storybook/addon-mcp@0.7.0` (via `@storybook/mcp@0.8.0`); at 10.6.0 they
|
|
15
|
+
survive only as the tools' human-readable **titles**. There is no 10.5.x of the addon — it goes
|
|
16
|
+
0.7.0 → 10.6.0 — so a project on the current scaffold gets the `docs-*` names. If a live
|
|
17
|
+
`tools/list` disagrees, the live read wins over this paragraph.
|
|
18
|
+
|
|
19
|
+
**React-only while the toolset is in preview.** Storybook's own MCP FAQ (docs **10.5**,
|
|
20
|
+
`docs/ai/mcp/overview` § FAQ) states the documentation toolset supports React only during
|
|
21
|
+
preview, so Vue, Angular, and Web Components take the file-read path. Stated here rather than
|
|
22
|
+
discovered at runtime, because the failure otherwise looks like a broken MCP server.
|
|
23
|
+
|
|
24
|
+
Discipline for what the live read returns is [`storybook-workshop`](../../../storybook-workshop/SKILL.md)'s
|
|
25
|
+
— in particular: never use a prop the manifest does not document, and fetch the project's
|
|
26
|
+
story instructions before writing a story.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 5. List reusable patterns
|
|
2
|
+
|
|
3
|
+
Categorize what already exists. Empty arrays are valid, never omit the keys.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
state.ui_audit.patterns = {
|
|
7
|
+
forms: [<component path:str>, ...], // any component with <form>, useForm, <flux:input>, <Input> + <Button type=submit>
|
|
8
|
+
tables: [...], // <table>, <flux:table>, DataTable, headless table primitives
|
|
9
|
+
modals: [...], // <flux:modal>, <Dialog>, AlertDialog, Sheet
|
|
10
|
+
empty_states: [...], // components matching grep "no results"|"empty"|"keine"|"nothing yet"
|
|
11
|
+
navigation: [...], // sidebar, breadcrumb, tabs
|
|
12
|
+
data_display: [...] // cards, lists, stat tiles
|
|
13
|
+
}
|
|
14
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 6. Match candidates for the current input
|
|
2
|
+
|
|
3
|
+
For each item in `state.ui_audit.components`, score similarity to `state.input.data` (fuzzy on filename + props/slots + co-occurring terms). Keep top 5 with `score >= 0.3`. Write into `state.ui_audit.candidates`:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
[{path, name, score, reason: "matches 'settings' + 'toggle' in props"}, ...]
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
If `candidates` is empty, the user is building net-new. That is normal — record the empty list, do not halt.
|
|
10
|
+
|
|
11
|
+
## 6b. Conformance gate — when a provided artifact is the spec
|
|
12
|
+
|
|
13
|
+
Similarity above is scored against `state.input.data`. That answers *"is this
|
|
14
|
+
component like the thing being asked for"* and it does **not** answer *"does
|
|
15
|
+
this component satisfy the artifact"* — which is a different question with a
|
|
16
|
+
different answer, because a candidate can be an excellent name-and-props match
|
|
17
|
+
and still use the wrong type scale, the wrong control, or a colour the artifact
|
|
18
|
+
never states. Until this step existed nothing anywhere asked the second
|
|
19
|
+
question, while `ui-audit-gate` carried *"reuse
|
|
20
|
+
beats duplication"* as unqualified prose. Reused on an artifact port, an
|
|
21
|
+
unconforming candidate is a fidelity deviation dressed as good hygiene.
|
|
22
|
+
|
|
23
|
+
So when a provided design artifact is the spec
|
|
24
|
+
([`design-fidelity`](../../../../rules/design-fidelity.md)), each candidate carries a
|
|
25
|
+
**conformance verdict** alongside its score, and reuse is conditional on it:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
[{path, name, score, reason,
|
|
29
|
+
conformance: {verdict: "conforms|deviates|unknown",
|
|
30
|
+
dimensions: {structure, values, behaviour, responsive},
|
|
31
|
+
refused_by: "values"}}, ...]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- **`conforms`** → reuse it. This is the ordinary case and nothing changed.
|
|
35
|
+
- **`deviates`** → do **not** reuse silently. Name the dimension that refused
|
|
36
|
+
it — *"`Card` deviates on `values`: type scale 14/20 against the artifact's
|
|
37
|
+
16/24"* — and surface reuse-with-adaptation versus build-new as a choice.
|
|
38
|
+
A bare "candidate rejected" is not a discharge; the caller cannot act on it.
|
|
39
|
+
- **`unknown`** → the candidate was not scored against the artifact (no
|
|
40
|
+
extraction yet, or a subtree the audit could not read). Treat as `deviates`
|
|
41
|
+
for the purpose of not reusing silently, and say which of the two it is —
|
|
42
|
+
"did not conform" and "was not checked" are different facts.
|
|
43
|
+
|
|
44
|
+
**And the decision moves after extraction, not before it.** A conformance
|
|
45
|
+
verdict needs the artifact's own values, so a reuse decision taken before
|
|
46
|
+
extraction is taken without the evidence that decides it. Where the run has an
|
|
47
|
+
artifact, order is: extract → audit → score → conform → decide. The unqualified
|
|
48
|
+
reuse-first ordering stands only where there is no artifact to conform to.
|
|
49
|
+
|
|
50
|
+
**Scope:** this is a gate on REUSE, not a license to rewrite the incumbent. A
|
|
51
|
+
candidate that deviates is left alone; the choice is whether *this* work builds
|
|
52
|
+
on it.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# 7. Greenfield branch
|
|
2
|
+
|
|
3
|
+
If **all** are true:
|
|
4
|
+
- `state.ui_audit.components` is empty
|
|
5
|
+
- `state.ui_audit.design_system == "custom-or-none"`
|
|
6
|
+
- `state.ui_audit.design_tokens` is empty (no Tailwind config customizations, no `:root`)
|
|
7
|
+
|
|
8
|
+
then set `state.ui_audit.greenfield = true` and emit a halt:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
> No existing UI surface detected — this looks like greenfield.
|
|
12
|
+
>
|
|
13
|
+
> 1. Scaffold a minimal token set + a base component primitive folder
|
|
14
|
+
> before building (recommended for projects with >1 planned screen)
|
|
15
|
+
> 2. Proceed bare with Tailwind defaults (recommended for one-off prototypes)
|
|
16
|
+
> 3. Point me at an external design-system reference (URL or file)
|
|
17
|
+
> 4. Scaffold + a granularity convention — as 1, and new components go into
|
|
18
|
+
> named granularity folders you pick the names for; rename or drop it later
|
|
19
|
+
> and nothing here objects
|
|
20
|
+
|
|
21
|
+
**Recommendation: 1 — Scaffold tokens + primitives** — even one extra screen
|
|
22
|
+
benefits from a shared base; the scaffold cost is ~10 min and saves
|
|
23
|
+
re-doing every primitive on screen 2. Caveat: flip to 2 if this is a
|
|
24
|
+
demo or single-page prototype that will not grow.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Option 4 is an **offer**, and the only one made anywhere: a project that already exists is never asked (§ 1b reads what it chose), and a greenfield project picking any other number has declined terminally, because the halt is a no-op once any decision is recorded. It stays one more number in the same block rather than a second question — a single number still answers it, which is what the reply-shape rule requires.
|
|
28
|
+
|
|
29
|
+
Record the user's pick in `state.ui_audit.greenfield_decision` (`scaffold` | `bare` | `external_reference` | `granularity_convention`). Re-running the skill on the same state-file with `greenfield_decision` set is a no-op for the halt (audit findings stay). `granularity_convention` takes the same scaffold path as `scaffold` — it adds the convention, it does not replace the scaffolding.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 8. (Optional) Capture an a11y baseline
|
|
2
|
+
|
|
3
|
+
The R4 visual-review-loop contract reads `state.ui_audit.a11y_baseline`
|
|
4
|
+
when present; the review gate then filters incoming
|
|
5
|
+
`state.ui_review.a11y.violations` against it so pre-existing
|
|
6
|
+
violations stay informational and only NEW or CHANGED entries block
|
|
7
|
+
the polish loop. Without a baseline the gate sees every violation as
|
|
8
|
+
actionable — fine for greenfield, noisy for legacy surfaces.
|
|
9
|
+
|
|
10
|
+
Capture the baseline when:
|
|
11
|
+
|
|
12
|
+
- The audit covers components with known a11y debt the project does
|
|
13
|
+
not intend to fix in this run (legacy templates, third-party
|
|
14
|
+
embeds, vendor widgets).
|
|
15
|
+
- The user says "don't block on existing a11y issues" or similar.
|
|
16
|
+
|
|
17
|
+
Skip the baseline (omit the key, leave `state.ui_audit.a11y_baseline`
|
|
18
|
+
unset) when:
|
|
19
|
+
|
|
20
|
+
- The surface is greenfield — the review gate should treat every
|
|
21
|
+
violation as new.
|
|
22
|
+
- The project's a11y posture is "zero known violations" and any
|
|
23
|
+
finding is by definition actionable.
|
|
24
|
+
|
|
25
|
+
Shape (each entry must carry at least `rule` + `selector`; severity
|
|
26
|
+
is optional but recommended so the review gate's severity-floor
|
|
27
|
+
filter behaves the same on replay):
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
state.ui_audit.a11y_baseline = [
|
|
31
|
+
{rule: "color-contrast", selector: ".legacy-tab", severity: "moderate"},
|
|
32
|
+
{rule: "label", selector: "form#search input[type=search]"},
|
|
33
|
+
...
|
|
34
|
+
]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Producer parity: the review skill that writes
|
|
38
|
+
`state.ui_review.a11y.violations` MUST use the same `(rule, selector)`
|
|
39
|
+
shape, otherwise the engine's de-dup will miss matches and pre-existing
|
|
40
|
+
violations will surface as new findings on every run.
|