@event4u/agent-config 14.9.0 → 14.11.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 +1 -1
- package/CHANGELOG.md +384 -0
- package/README.md +1 -1
- package/dist/agent-src/commands/design.md +88 -0
- package/dist/agent-src/commands/project/analyze.md +47 -0
- package/dist/agent-src/commands/review/changes.md +67 -6
- package/dist/agent-src/commands/roadmap/create.md +49 -0
- package/dist/agent-src/commands/roadmap/next.md +27 -11
- package/dist/agent-src/commands/roadmap/process-full.md +14 -0
- package/dist/agent-src/commands/video/from-script.md +60 -3
- package/dist/agent-src/commands/video/stitch.md +14 -0
- package/dist/agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +154 -2
- package/dist/agent-src/rules/active-remediation.md +3 -3
- package/dist/agent-src/rules/code-provenance.md +2 -2
- package/dist/agent-src/rules/context-hygiene.md +13 -33
- package/dist/agent-src/rules/council-availability.md +2 -2
- package/dist/agent-src/rules/decision-revisit-gate.md +3 -1
- package/dist/agent-src/rules/design-fidelity.md +18 -0
- package/dist/agent-src/rules/design-review-after-ui-write.md +2 -2
- package/dist/agent-src/rules/evaluator-independence.md +56 -44
- package/dist/agent-src/rules/fix-what-you-see.md +9 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +14 -20
- package/dist/agent-src/rules/missing-skill-recovery.md +13 -1
- package/dist/agent-src/rules/playbook-precedence.md +105 -0
- package/dist/agent-src/rules/recurring-criticism.md +3 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +14 -13
- package/dist/agent-src/rules/scale-discipline.md +24 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +2 -2
- package/dist/agent-src/rules/settings-ask-protocol.md +2 -2
- package/dist/agent-src/rules/ui-audit-gate.md +27 -15
- package/dist/agent-src/rules/untrusted-input-defense.md +2 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +19 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +7 -0
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +33 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +17 -3
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +31 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +19 -0
- package/dist/agent-src/skills/alerting-doctrine/SKILL.md +225 -0
- package/dist/agent-src/skills/alerting-doctrine/evals/triggers.json +17 -0
- package/dist/agent-src/skills/async-python-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/authz-review/SKILL.md +0 -1
- package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +32 -0
- package/dist/agent-src/skills/brand/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-audit/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-identity/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-strategy/SKILL.md +3 -0
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +3 -0
- package/dist/agent-src/skills/check-refs/SKILL.md +3 -0
- package/dist/agent-src/skills/code-refactoring/SKILL.md +1 -1
- package/dist/agent-src/skills/code-review/SKILL.md +11 -0
- package/dist/agent-src/skills/command-routing/SKILL.md +6 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +4 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +4 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +10 -0
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +3 -0
- package/dist/agent-src/skills/design-intelligence/SKILL.md +3 -0
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +36 -35
- package/dist/agent-src/skills/design-intelligence/data/stacks/threejs.csv +1 -0
- package/dist/agent-src/skills/design-review/SKILL.md +80 -2
- package/dist/agent-src/skills/design-review/references/verification-automation.md +41 -0
- package/dist/agent-src/skills/design-system-capture/SKILL.md +35 -40
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +50 -0
- package/dist/agent-src/skills/design-tokens/SKILL.md +3 -0
- package/dist/agent-src/skills/design-variations/SKILL.md +3 -0
- package/dist/agent-src/skills/developer-like-execution/SKILL.md +3 -0
- package/dist/agent-src/skills/discovery-interview/SKILL.md +1 -1
- package/dist/agent-src/skills/doc-coauthoring/SKILL.md +1 -1
- package/dist/agent-src/skills/docx-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/editorial-calendar/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +3 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +20 -3
- package/dist/agent-src/skills/fe-design/SKILL.md +74 -41
- package/dist/agent-src/skills/fe-design/evals/triggers.json +65 -53
- package/dist/agent-src/skills/fe-design/references/craft-floor.md +52 -0
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +36 -0
- package/dist/agent-src/skills/file-editor/SKILL.md +5 -0
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/SKILL.md +3 -0
- package/dist/agent-src/skills/github-ci/SKILL.md +1 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +3 -0
- package/dist/agent-src/skills/iconography/SKILL.md +3 -0
- package/dist/agent-src/skills/image-editing/SKILL.md +3 -0
- package/dist/agent-src/skills/image-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +3 -0
- package/dist/agent-src/skills/incident-commander/SKILL.md +10 -0
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +173 -0
- package/dist/agent-src/skills/js-library-packaging/evals/triggers.json +17 -0
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +270 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-migration/SKILL.md +3 -0
- package/dist/agent-src/skills/laravel-validation/SKILL.md +1 -1
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +3 -0
- package/dist/agent-src/skills/legal-intake-triage/SKILL.md +1 -1
- package/dist/agent-src/skills/legal-practice-profile/SKILL.md +1 -1
- package/dist/agent-src/skills/lint-skills/SKILL.md +3 -0
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +3 -0
- package/dist/agent-src/skills/logging-monitoring/SKILL.md +234 -51
- package/dist/agent-src/skills/logo-generation/SKILL.md +3 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +3 -0
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +1 -1
- package/dist/agent-src/skills/migration-architect/SKILL.md +1 -1
- package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +1 -1
- package/dist/agent-src/skills/module-management/SKILL.md +1 -1
- package/dist/agent-src/skills/monorepo-workspace/SKILL.md +149 -0
- package/dist/agent-src/skills/monorepo-workspace/evals/triggers.json +17 -0
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +7 -1
- package/dist/agent-src/skills/multi-tenancy/SKILL.md +4 -0
- package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
- package/dist/agent-src/skills/operational-readiness/SKILL.md +184 -0
- package/dist/agent-src/skills/operational-readiness/evals/triggers.json +17 -0
- package/dist/agent-src/skills/override-management/SKILL.md +3 -0
- package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
- package/dist/agent-src/skills/persona-improvement/SKILL.md +3 -0
- package/dist/agent-src/skills/pest-testing/SKILL.md +3 -0
- package/dist/agent-src/skills/playbook-authoring/SKILL.md +162 -0
- package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -0
- package/dist/agent-src/skills/privacy-review/SKILL.md +3 -0
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -0
- package/dist/agent-src/skills/prompt-optimizer/SKILL.md +1 -1
- package/dist/agent-src/skills/quality-tools/SKILL.md +5 -0
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +52 -21
- package/dist/agent-src/skills/readme-reviewer/SKILL.md +3 -0
- package/dist/agent-src/skills/readme-writing/SKILL.md +3 -0
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +3 -0
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/refine-prompt/SKILL.md +3 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -0
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +23 -41
- package/dist/agent-src/skills/roadmap-writing/references/follow-up-roadmap-shape.md +47 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +22 -6
- package/dist/agent-src/skills/runway-cognition/SKILL.md +3 -0
- package/dist/agent-src/skills/scene-expander/SKILL.md +1 -1
- package/dist/agent-src/skills/scene-expander/scene-blueprint.schema.yaml +26 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +5 -1
- package/dist/agent-src/skills/server-hardening/SKILL.md +159 -0
- package/dist/agent-src/skills/server-hardening/evals/triggers.json +17 -0
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-management/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +3 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +6 -0
- package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +3 -0
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +194 -0
- package/dist/agent-src/skills/storybook-workshop/evals/triggers.json +17 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.ts +134 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +25 -0
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +12 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
- package/dist/agent-src/skills/terraform/SKILL.md +3 -0
- package/dist/agent-src/skills/test-driven-development/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +0 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +3 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +3 -0
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +9 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +3 -0
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -0
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +3 -0
- package/dist/agent-src/skills/wireframe/references/story-beat-ledger.schema.json +115 -0
- package/dist/agent-src/skills/workspace-link/SKILL.md +131 -0
- package/dist/agent-src/skills/workspace-link/evals/triggers.json +17 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/playbook.md +75 -0
- package/dist/agent-src/templates/roadmaps.md +37 -0
- package/dist/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
- package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
- package/dist/cli/commands/uiAudit.js +221 -0
- package/dist/cli/commands/uiAudit.js.map +1 -0
- package/dist/cli/commands/uiRender.js +206 -0
- package/dist/cli/commands/uiRender.js.map +1 -0
- package/dist/cli/main.js +22 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mcp/content.js +64 -1
- package/dist/cli/mcp/content.js.map +1 -1
- package/dist/cli/mcp/dispatch.js +175 -10
- package/dist/cli/mcp/dispatch.js.map +1 -1
- package/dist/cli/registry.js +3 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-H4VIVD4C.js → chunk-236PNQZK.js} +413 -391
- package/dist/cli-delegate/{chunk-G23AT6GD.js → chunk-DMSZHXZS.js} +57 -1
- package/dist/cli-delegate/{chunk-77GR3VD4.js → chunk-FF7WAFMR.js} +58 -3
- package/dist/cli-delegate/{chunk-PLSG6UL5.js → chunk-K4FFODTS.js} +341 -204
- package/dist/cli-delegate/{chunk-YM4GZDJG.js → chunk-L43NCYPB.js} +5 -0
- package/dist/cli-delegate/{chunk-B2ERU2VA.js → chunk-WOKWX5PL.js} +1 -1
- package/dist/cli-delegate/cmd_brand_status.js +8 -6
- package/dist/cli-delegate/cmd_conformance.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +3 -3
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +1 -1
- package/dist/cli-delegate/cmd_preflight.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_session_recycle.js +70 -9
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +380 -145
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +18 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -6
- package/dist/hooks/dispatch.js +2337 -1436
- package/dist/install/install.mjs +795 -708
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +1685 -1250
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/lean_projection_mode.js +40 -0
- package/dist/scripts/_lib/lean_projection_mode.js.map +1 -0
- package/dist/scripts/_lib/scoped_projection.js +84 -0
- package/dist/scripts/_lib/scoped_projection.js.map +1 -1
- package/dist/scripts/_lib/ui_surface.js +89 -0
- package/dist/scripts/_lib/ui_surface.js.map +1 -0
- package/dist/scripts/condense.js +6 -10
- package/dist/scripts/condense.js.map +1 -1
- package/dist/scripts/project_thin_rules.js +40 -2
- package/dist/scripts/project_thin_rules.js.map +1 -1
- package/dist/server/schemas/settings.js +3 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/skillRanking.js +159 -0
- package/dist/shared/skillRanking.js.map +1 -0
- package/docs/contracts/provider-lifecycle.md +47 -18
- package/docs/contracts/settings-classes.md +14 -4
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +49 -0
- package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +45 -1
- package/docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
- package/docs/guidelines/design-antipatterns.md +4 -2
- package/docs/guidelines/design-asset-discipline.md +38 -0
- package/docs/guidelines/design-fidelity-mechanics.md +45 -29
- package/docs/guidelines/design-handover-extraction.md +35 -5
- package/docs/guidelines/design-modes.md +41 -1
- package/docs/guidelines/monorepo-antipatterns.md +141 -0
- package/llms.txt +50 -39
- package/package.json +1 -1
- package/src/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
- package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
- package/src/config/agent-settings.template.yml +28 -0
- package/src/config/assurance-capability-registry.json +223 -0
- package/src/config/assurance-threshold-budget.json +65 -0
- package/src/config/ci-local-parity.yml +14 -0
- package/src/config/discovery/unassigned-artefacts.yml +2 -0
- package/src/config/dispatch-economy-metrics.json +4 -2
- package/src/config/evaluator-budgets.json +14 -14
- package/src/config/gate-coverage.yml +227 -8
- package/src/config/gate-violation-baselines.json +76 -72
- package/src/config/hook-latency-budget.json +1 -0
- package/src/config/hook-token-budget.json +137 -125
- package/src/config/pack-size-budget.json +4 -2
- package/src/config/preamble-payload-budget.json +71 -67
- package/src/config/quorum-attendance-budget.json +12 -4
- package/src/config/rule-activation-census.json +7 -3
- package/src/config/rule-enforcement-baseline.json +0 -1
- package/src/config/rule-stub-ceilings.json +112 -91
- package/src/scripts/_cli/cmd_doctor.ts +15 -16
- package/src/scripts/_cli/doctor_install_mode.ts +49 -0
- package/src/scripts/_cli/doctor_overrides.ts +154 -0
- package/src/scripts/_dispatch.bash +17 -0
- package/src/scripts/_lib/as_of.ts +412 -0
- package/src/scripts/_lib/exec_evidence.ts +7 -0
- package/src/scripts/_lib/hook_settings.ts +33 -0
- package/src/scripts/_lib/host_listing_model.ts +192 -0
- package/src/scripts/_lib/lean_projection_mode.ts +44 -0
- package/src/scripts/_lib/mcp_bridge.ts +199 -0
- package/src/scripts/_lib/review_independence.ts +62 -10
- package/src/scripts/_lib/rule_injection.ts +239 -0
- package/src/scripts/_lib/run_checkpoint.ts +54 -1
- package/src/scripts/_lib/scoped_projection.ts +96 -0
- package/src/scripts/_lib/session_register.ts +44 -2
- package/src/scripts/_lib/skill_catalogue.ts +38 -2
- package/src/scripts/_lib/transcript_reads.ts +207 -0
- package/src/scripts/_lib/ui_authority.test.ts +251 -0
- package/src/scripts/_lib/ui_authority.ts +343 -0
- package/src/scripts/ai-video/adapters/fal.sh +8 -3
- package/src/scripts/ai-video/adapters/gemini-veo.sh +10 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +10 -2
- package/src/scripts/ai-video/adapters/kling.sh +10 -0
- package/src/scripts/ai-video/adapters/sora.sh +10 -0
- package/src/scripts/ai-video/lib/calibrate-cost.sh +145 -0
- package/src/scripts/ai-video/lib/model-capabilities/README.md +53 -7
- package/src/scripts/ai-video/lib/model-capabilities/comfyui.json +15 -3
- package/src/scripts/ai-video/lib/model-capabilities/fal.json +36 -6
- package/src/scripts/ai-video/lib/model-capabilities/gemini-veo.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/higgsfield.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/kling.json +23 -0
- package/src/scripts/ai-video/lib/model-capabilities/musetalk.json +8 -2
- package/src/scripts/ai-video/lib/model-capabilities/replicate.json +36 -6
- package/src/scripts/ai-video/lib/model-capabilities/sora.json +45 -0
- package/src/scripts/ai-video/lib/model-capabilities/syncso.json +8 -2
- package/src/scripts/ai-video/lib/parse-blueprint.sh +52 -5
- package/src/scripts/ai-video/lib/resume-scan.sh +92 -3
- package/src/scripts/ai-video/lib/seam-plan.sh +212 -0
- package/src/scripts/ai-video/smoke-trace.sh +450 -2
- package/src/scripts/ai-video/stitch.sh +191 -10
- package/src/scripts/ai-video/test-pipeline.sh +84 -6
- package/src/scripts/ai_council/cli_agency_bounds.ts +139 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +347 -0
- package/src/scripts/ai_council/clients.ts +3 -2
- package/src/scripts/ai_council/consensus.ts +63 -6
- package/src/scripts/ai_council/events_log.ts +46 -1
- package/src/scripts/ai_council/orchestrator.ts +103 -108
- package/src/scripts/ai_council/orchestrator_results.ts +166 -0
- package/src/scripts/ai_council/prompts.ts +12 -5
- package/src/scripts/ai_council/quorum.ts +82 -1
- package/src/scripts/ai_council/quorum_wiring.ts +82 -5
- package/src/scripts/ai_council/seating.ts +211 -0
- package/src/scripts/ai_council/stance_tally.ts +22 -0
- package/src/scripts/bench_hook_latency.ts +62 -0
- package/src/scripts/build_proof.ts +12 -1
- package/src/scripts/capture_skill_catalogue.ts +21 -0
- package/src/scripts/check_always_budget.ts +2 -1
- package/src/scripts/check_augmentignore.ts +2 -1
- package/src/scripts/check_beta_review_markers.ts +2 -1
- package/src/scripts/check_composite_arming.ts +364 -0
- package/src/scripts/check_corpus_staleness.ts +2 -1
- package/src/scripts/check_council_pin_staleness.ts +3 -1
- package/src/scripts/check_enforcement_coverage.ts +116 -3
- package/src/scripts/check_enforcement_denominator.ts +365 -0
- package/src/scripts/check_gate_coverage.ts +2 -1
- package/src/scripts/check_hook_bundle_freshness.ts +13 -1
- package/src/scripts/check_knowledge_cards.ts +2 -1
- package/src/scripts/check_knowledge_pages.ts +3 -2
- package/src/scripts/check_memory.ts +2 -1
- package/src/scripts/check_no_automerge_key.ts +287 -0
- package/src/scripts/check_pack_conformance_fixture.ts +565 -0
- package/src/scripts/check_pack_passport_reconciliation.ts +274 -0
- package/src/scripts/check_proposal.ts +2 -1
- package/src/scripts/check_reach_staleness.ts +2 -1
- package/src/scripts/check_release_adjacent_health.ts +2 -1
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_review_schema.ts +34 -1
- package/src/scripts/check_roadmap_trackable.ts +48 -3
- package/src/scripts/check_source_size_budget.ts +2 -1
- package/src/scripts/check_standing_payload_delta.ts +505 -0
- package/src/scripts/check_trigger_evals.ts +2 -1
- package/src/scripts/classify_change_risk.ts +281 -0
- package/src/scripts/compute_skill_tiers.ts +186 -0
- package/src/scripts/condense.ts +8 -13
- package/src/scripts/council_attendance_metrics.ts +183 -0
- package/src/scripts/council_cli.ts +10 -8
- package/src/scripts/council_parse_rate.ts +116 -0
- package/src/scripts/derive_playbooks.ts +406 -0
- package/src/scripts/design_slop_rules.test.ts +7 -0
- package/src/scripts/design_slop_rules.ts +56 -2
- package/src/scripts/dispatch_r2_reviewer.ts +16 -0
- package/src/scripts/frontend_corpus_hash.ts +116 -0
- package/src/scripts/generate_pack_manifests.ts +78 -0
- package/src/scripts/grade_target_readiness.ts +478 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +97 -16
- package/src/scripts/hooks/concern_registry.ts +4 -0
- package/src/scripts/hooks/design_pass_hook.ts +356 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +30 -7
- package/src/scripts/hooks/rule_inject_hook.ts +318 -0
- package/src/scripts/hot_context_hook.ts +74 -7
- package/src/scripts/install.ts +40 -89
- package/src/scripts/lint_adapter_tier.ts +663 -0
- package/src/scripts/lint_archived_skills.ts +93 -0
- package/src/scripts/lint_budget_ownership.ts +2 -1
- package/src/scripts/lint_deterministic_time.ts +470 -0
- package/src/scripts/lint_framework_leakage.ts +5 -0
- package/src/scripts/lint_handoffs.ts +525 -1
- package/src/scripts/lint_judge_prompt_expectation.ts +155 -0
- package/src/scripts/lint_marketplace.ts +88 -0
- package/src/scripts/lint_media_policy_linkage.ts +140 -1
- package/src/scripts/lint_one_off_age.ts +6 -1
- package/src/scripts/lint_override_kernel_guard.ts +87 -5
- package/src/scripts/lint_roadmap_complexity.ts +56 -0
- package/src/scripts/lint_rule_enforcement_declaration.ts +24 -7
- package/src/scripts/lint_rule_norm_pin.ts +321 -0
- package/src/scripts/lint_spawn_payload.ts +42 -5
- package/src/scripts/lint_symptom_intake.ts +2 -1
- package/src/scripts/mcp_parity_smoke.ts +30 -4
- package/src/scripts/mcp_render.ts +66 -1
- package/src/scripts/mcp_tool_fingerprint.ts +241 -0
- package/src/scripts/measure_risk_class_drift.ts +140 -0
- package/src/scripts/measure_skill_ranker_baseline.ts +212 -0
- package/src/scripts/media/lib/adapter-common.sh +211 -1
- package/src/scripts/media/lib/adapter-contract.md +74 -6
- package/src/scripts/model_rule_injection.ts +907 -0
- package/src/scripts/project_thin_rules.ts +45 -2
- package/src/scripts/release.ts +66 -860
- package/src/scripts/release_drill.ts +59 -3
- package/src/scripts/release_env.ts +298 -0
- package/src/scripts/release_publication.ts +720 -0
- package/src/scripts/roadmap_context.ts +778 -0
- package/src/scripts/schemas/fidelity-measurement-sheet.schema.json +169 -0
- package/src/scripts/schemas/pack.schema.json +62 -4
- package/src/scripts/schemas/rule.schema.json +24 -2
- package/src/scripts/schemas/skill.schema.json +41 -2
- package/src/scripts/schemas/ui-authority.schema.json +114 -0
- package/src/scripts/session_register_hook.ts +29 -3
- package/src/scripts/sessions_cli.ts +67 -3
- package/src/scripts/skill_tools/score_skill_relevance.ts +36 -53
- package/src/scripts/tighten_skill_descriptions.ts +264 -0
- package/src/scripts/token_sink_report.ts +239 -0
- package/src/scripts/trigger_coverage.ts +122 -3
- package/src/scripts/update_counts.ts +7 -3
- package/src/scripts/validate_frontmatter.ts +66 -0
- package/src/server/schemas/settings.ts +5 -0
- package/src/shared/skillRanking.ts +183 -0
|
@@ -10,6 +10,9 @@ workspaces:
|
|
|
10
10
|
packs:
|
|
11
11
|
- frontend-design
|
|
12
12
|
token_budget_class: rich
|
|
13
|
+
scope:
|
|
14
|
+
write: []
|
|
15
|
+
verification_reason: "execution declares no handler, so this skill runs nothing of its own — every write is the calling agent's, under the rules that govern it. No command can prove a scope the skill never executes."
|
|
13
16
|
execution:
|
|
14
17
|
type: manual
|
|
15
18
|
---
|
|
@@ -68,8 +71,30 @@ should apply consistently across all UI tasks in this project. Unlike
|
|
|
68
71
|
|
|
69
72
|
## Design philosophy
|
|
70
73
|
One sentence: [density/formality/complexity philosophy]
|
|
74
|
+
|
|
75
|
+
## Owned components
|
|
76
|
+
| Component | Status | Story file | Registry item |
|
|
77
|
+
|---|---|---|---|
|
|
78
|
+
| [Name] | stable \| experimental \| deprecated | [path to *.stories.tsx] | [registry item name, or —] |
|
|
71
79
|
Example: "Information-dense dashboard; optimize for power users, not casual exploration."
|
|
72
80
|
|
|
81
|
+
## Owned components — filled from the tree, never from memory
|
|
82
|
+
|
|
83
|
+
The § Owned components table is populated by **globbing `*.stories.tsx`** (and, when a
|
|
84
|
+
Storybook manifest is reachable, reading it — see
|
|
85
|
+
[`storybook-workshop`](../storybook-workshop/SKILL.md) § MCP path). One row per component
|
|
86
|
+
the project owns: its name, its status, its story file, and its registry item where the
|
|
87
|
+
library publishes one.
|
|
88
|
+
|
|
89
|
+
**Never write a row from memory.** A remembered component is exactly the row a reader will
|
|
90
|
+
trust and a `ui-component-architect` run will then skip re-checking — an inventory that is
|
|
91
|
+
wrong in the direction of "we already have this" causes the duplicate it exists to prevent.
|
|
92
|
+
A component with no story file gets a row with an empty story cell, not an omission: absent
|
|
93
|
+
from the table reads as "does not exist".
|
|
94
|
+
|
|
95
|
+
`deprecated` rows stay in the table. Deleting one loses the only durable record that the
|
|
96
|
+
component should not be reached for again.
|
|
97
|
+
|
|
73
98
|
## Visual system
|
|
74
99
|
|
|
75
100
|
### Elevation and radius
|
|
@@ -194,46 +219,16 @@ Example: "Dashboard = control panel for power users, not an exploration space."
|
|
|
194
219
|
|
|
195
220
|
## Importing an extracted design system
|
|
196
221
|
|
|
197
|
-
A consumer can reverse-engineer an existing site/repo's look-and-feel with any
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
`/design-system:import <file>`, which accepts a native artifact, a DTCG token
|
|
208
|
-
file, or an extraction tool's raw JSON and emits the contract. Lanes and
|
|
209
|
-
documented producers:
|
|
210
|
-
[`references/design-system-json.md`](references/design-system-json.md)
|
|
211
|
-
§ Extractor compatibility. The adapter is offline and pure — it does not change
|
|
212
|
-
what this skill owns.
|
|
213
|
-
|
|
214
|
-
**Import procedure:**
|
|
215
|
-
|
|
216
|
-
1. Read `design-system.json`; reject it if `source` (kind + ref + captured_at)
|
|
217
|
-
is missing — no provenance, no import.
|
|
218
|
-
2. Diff every field against the current `DESIGN.md`.
|
|
219
|
-
3. Surface a **per-field confirm/merge proposal** — the artifact is *observed,
|
|
220
|
-
not authoritative* (mirrors `source-discovery`). Never write silently.
|
|
221
|
-
4. **Conflict with a registered brand value** (a confirmed `.tokens.json` /
|
|
222
|
-
brand token) → **flag, never auto-apply** (`brand-source-of-truth`:
|
|
223
|
-
consumer brand wins). Precedence: brand tokens > confirmed `DESIGN.md` >
|
|
224
|
-
imported observation.
|
|
225
|
-
5. On the human's accept, persist the chosen fields into `DESIGN.md`. Where the
|
|
226
|
-
consumer wants a token source of truth, hand the mapped DTCG fields to
|
|
227
|
-
[`brand-to-tokens`](../brand-to-tokens/SKILL.md) / `design-tokens` to
|
|
228
|
-
materialise `.tokens.json` — do not invent a parallel token format.
|
|
229
|
-
|
|
230
|
-
**Two sources, one shape:**
|
|
231
|
-
|
|
232
|
-
- **External target** (a site/repo you don't own) → an external tool emits the
|
|
233
|
-
artifact; import it here.
|
|
234
|
-
- **Current repo** → prefer [`existing-ui-audit`](../existing-ui-audit/SKILL.md);
|
|
235
|
-
it already inventories the codebase and can emit the same `design-system.json`
|
|
236
|
-
shape, so the import path is identical either way.
|
|
222
|
+
A consumer can reverse-engineer an existing site/repo's look-and-feel with any external
|
|
223
|
+
static-extraction tool and hand the result to this skill as a `design-system.json`
|
|
224
|
+
artifact. We own the **import contract**, not the crawler. The artifact is *observed, not
|
|
225
|
+
authoritative*: never write it in silently, and a conflict with a registered brand value is
|
|
226
|
+
flagged rather than applied (`brand-source-of-truth`).
|
|
227
|
+
|
|
228
|
+
Import contract, the `/design-system:import` supply path, the five-step procedure and the
|
|
229
|
+
two source shapes — read only when an import is requested:
|
|
230
|
+
[`references/import-procedure.md`](references/import-procedure.md). Full schema:
|
|
231
|
+
[`references/design-system-json.md`](references/design-system-json.md).
|
|
237
232
|
|
|
238
233
|
## How the design skills consume these documents
|
|
239
234
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Importing an extracted design system
|
|
2
|
+
|
|
3
|
+
> The import contract, the supply path, the five-step procedure, and the two source shapes
|
|
4
|
+
|
|
5
|
+
_Split out of [`SKILL.md`](../SKILL.md) § Importing an extracted design system, which keeps
|
|
6
|
+
the one-line obligation and routes here. The split is ADR-217's rich-class ceiling doing its
|
|
7
|
+
job: adding the owned-components inventory took the skill to 3,764 tokens against a 3,500
|
|
8
|
+
ceiling, and this block is the largest self-contained one that a reader needs only when an
|
|
9
|
+
import is actually requested — the same lazy-load posture the schema reference already has._
|
|
10
|
+
|
|
11
|
+
A consumer can reverse-engineer an existing site/repo's look-and-feel with any
|
|
12
|
+
external static-extraction tool and hand the result to this skill as a
|
|
13
|
+
`design-system.json` artifact. We own the **import contract**, not the crawler:
|
|
14
|
+
the package never ships the Playwright runtime, a font-bundler, or a `.skill`
|
|
15
|
+
auto-installer (out of scope). Full schema is lazy-loaded from
|
|
16
|
+
[`design-system-json.md`](design-system-json.md) — read it
|
|
17
|
+
only when an import is requested.
|
|
18
|
+
|
|
19
|
+
**The supply path is real, and it is one command.** Where an extractor's output
|
|
20
|
+
is not already in this shape, run it through the three-lane adapter first —
|
|
21
|
+
`/design-system:import <file>`, which accepts a native artifact, a DTCG token
|
|
22
|
+
file, or an extraction tool's raw JSON and emits the contract. Lanes and
|
|
23
|
+
documented producers:
|
|
24
|
+
[`design-system-json.md`](design-system-json.md)
|
|
25
|
+
§ Extractor compatibility. The adapter is offline and pure — it does not change
|
|
26
|
+
what this skill owns.
|
|
27
|
+
|
|
28
|
+
**Import procedure:**
|
|
29
|
+
|
|
30
|
+
1. Read `design-system.json`; reject it if `source` (kind + ref + captured_at)
|
|
31
|
+
is missing — no provenance, no import.
|
|
32
|
+
2. Diff every field against the current `DESIGN.md`.
|
|
33
|
+
3. Surface a **per-field confirm/merge proposal** — the artifact is *observed,
|
|
34
|
+
not authoritative* (mirrors `source-discovery`). Never write silently.
|
|
35
|
+
4. **Conflict with a registered brand value** (a confirmed `.tokens.json` /
|
|
36
|
+
brand token) → **flag, never auto-apply** (`brand-source-of-truth`:
|
|
37
|
+
consumer brand wins). Precedence: brand tokens > confirmed `DESIGN.md` >
|
|
38
|
+
imported observation.
|
|
39
|
+
5. On the human's accept, persist the chosen fields into `DESIGN.md`. Where the
|
|
40
|
+
consumer wants a token source of truth, hand the mapped DTCG fields to
|
|
41
|
+
[`brand-to-tokens`](../../brand-to-tokens/SKILL.md) / `design-tokens` to
|
|
42
|
+
materialise `.tokens.json` — do not invent a parallel token format.
|
|
43
|
+
|
|
44
|
+
**Two sources, one shape:**
|
|
45
|
+
|
|
46
|
+
- **External target** (a site/repo you don't own) → an external tool emits the
|
|
47
|
+
artifact; import it here.
|
|
48
|
+
- **Current repo** → prefer [`existing-ui-audit`](../../existing-ui-audit/SKILL.md);
|
|
49
|
+
it already inventories the codebase and can emit the same `design-system.json`
|
|
50
|
+
shape, so the import path is identical either way.
|
|
@@ -13,6 +13,9 @@ trust:
|
|
|
13
13
|
level: professional
|
|
14
14
|
install:
|
|
15
15
|
removable: true
|
|
16
|
+
scope:
|
|
17
|
+
write: []
|
|
18
|
+
verification_reason: "execution declares no handler, so this skill runs nothing of its own — every write is the calling agent's, under the rules that govern it. No command can prove a scope the skill never executes."
|
|
16
19
|
execution:
|
|
17
20
|
type: manual
|
|
18
21
|
---
|
|
@@ -12,6 +12,9 @@ trust:
|
|
|
12
12
|
level: professional
|
|
13
13
|
install:
|
|
14
14
|
removable: true
|
|
15
|
+
scope:
|
|
16
|
+
write: []
|
|
17
|
+
verification_reason: "execution declares no handler, so this skill runs nothing of its own — every write is the calling agent's, under the rules that govern it. No command can prove a scope the skill never executes."
|
|
15
18
|
execution:
|
|
16
19
|
type: manual
|
|
17
20
|
---
|
|
@@ -3,6 +3,9 @@ model_tier: inherit
|
|
|
3
3
|
name: developer-like-execution
|
|
4
4
|
description: "Use when implementing, debugging, refactoring, or reviewing code — enforces the think → analyze → verify → execute workflow — even when the user just says 'implement X' without naming it."
|
|
5
5
|
domain: process
|
|
6
|
+
scope:
|
|
7
|
+
write: []
|
|
8
|
+
verification_reason: "execution.handler is internal, so this skill spawns no subprocess — writes happen through the agent's declared allowed_tools. No command can prove a scope the skill never executes."
|
|
6
9
|
execution:
|
|
7
10
|
type: assisted
|
|
8
11
|
handler: internal
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: inherit
|
|
3
3
|
name: discovery-interview
|
|
4
|
-
description: "
|
|
4
|
+
description: "When running discovery interviews — question-bank build, bias audit, insight extraction. Triggers on 'audit my guide', 'extract insights from transcript', 'is my hypothesis falsifiable'."
|
|
5
5
|
status: active
|
|
6
6
|
tier: senior
|
|
7
7
|
domain: product
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: inherit
|
|
3
3
|
name: doc-coauthoring
|
|
4
|
-
description: "
|
|
4
|
+
description: "When co-authoring a PRD, design doc, RFC, decision doc, or technical spec — 3-stage flow (context → section-by-section → reader-test) — even if the user just says 'help me write this spec'."
|
|
5
5
|
domain: process
|
|
6
6
|
workspaces:
|
|
7
7
|
- agent-config-maintainer
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: medium
|
|
3
3
|
name: docx-authoring
|
|
4
|
-
description: "
|
|
4
|
+
description: "When generating or editing a Word .docx — create, fill a template, or edit body XML via a consumer library; round-trip validated. Triggers on 'generate a docx', 'fill this Word template'."
|
|
5
5
|
status: active
|
|
6
6
|
tier: senior
|
|
7
7
|
domain: process
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: inherit
|
|
3
3
|
name: editorial-calendar
|
|
4
|
-
description: "
|
|
4
|
+
description: "When shaping cadence — evergreen / campaign / reactive split, beat-mapping across channel stages, content-debt management. Triggers on 'plan our content cadence', 'what should we publish'."
|
|
5
5
|
status: active
|
|
6
6
|
tier: senior
|
|
7
7
|
domain: product
|
|
@@ -10,6 +10,9 @@ personas:
|
|
|
10
10
|
- critical-challenger
|
|
11
11
|
- ai-agent
|
|
12
12
|
domain: product
|
|
13
|
+
scope:
|
|
14
|
+
write: []
|
|
15
|
+
verification_reason: "execution.handler is internal, so this skill spawns no subprocess — writes happen through the agent's declared allowed_tools. No command can prove a scope the skill never executes."
|
|
13
16
|
execution:
|
|
14
17
|
type: assisted
|
|
15
18
|
handler: internal
|
|
@@ -88,7 +88,7 @@ Detect markers, in order. **Stop at the first match** — projects rarely run mo
|
|
|
88
88
|
| Marker | Signal | Where |
|
|
89
89
|
|---|---|---|
|
|
90
90
|
| Flux | `livewire/flux` in `composer.json`, `<flux:*>` tags in views | `composer.json`, grep `resources/views` |
|
|
91
|
-
| shadcn/ui | `components.json` exists at
|
|
91
|
+
| 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` |
|
|
92
92
|
| Headless UI | `@headlessui/react` or `@headlessui/vue` in `package.json` | `package.json` |
|
|
93
93
|
| Radix | `@radix-ui/*` in `package.json` (without shadcn marker) | `package.json` |
|
|
94
94
|
| Material/Chakra/Mantine/Ant | their package names in `package.json` | `package.json` |
|
|
@@ -125,7 +125,7 @@ read, so easing and duration stop being values the brief silently regenerates.
|
|
|
125
125
|
|
|
126
126
|
### 4. Detect shadcn inventory (only when `state.stack.frontend == "react-shadcn"`)
|
|
127
127
|
|
|
128
|
-
Read `components.json` for the registered style + base color, then read `package.json` for `@radix-ui/*`
|
|
128
|
+
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`:
|
|
129
129
|
|
|
130
130
|
```
|
|
131
131
|
{
|
|
@@ -137,6 +137,23 @@ Read `components.json` for the registered style + base color, then read `package
|
|
|
137
137
|
}
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
+
### 4b. Prefer a live Storybook read over the hand-read inventory — when one is running
|
|
141
|
+
|
|
142
|
+
When the project carries `@storybook/addon-mcp` **and** a Storybook is running, query it
|
|
143
|
+
instead of reading files: `list-all-documentation` for the inventory, then `get-documentation`
|
|
144
|
+
for the components that matter. **The live read wins; the hand-read inventory of step 4 is the
|
|
145
|
+
fallback and is never removed** — an agent that cannot reach a running Storybook must still be
|
|
146
|
+
able to inventory the library. The channel disappearing is normal, not an error.
|
|
147
|
+
|
|
148
|
+
**React-only while the toolset is in preview.** Storybook's own MCP FAQ (docs **10.5**,
|
|
149
|
+
`docs/ai/mcp/overview` § FAQ) states the documentation toolset supports React only during
|
|
150
|
+
preview, so Vue, Angular, and Web Components take the file-read path. Stated here rather than
|
|
151
|
+
discovered at runtime, because the failure otherwise looks like a broken MCP server.
|
|
152
|
+
|
|
153
|
+
Discipline for what the live read returns is [`storybook-workshop`](../storybook-workshop/SKILL.md)'s
|
|
154
|
+
— in particular: never use a prop the manifest does not document, and fetch the project's
|
|
155
|
+
story instructions before writing a story.
|
|
156
|
+
|
|
140
157
|
### 5. List reusable patterns
|
|
141
158
|
|
|
142
159
|
Categorize what already exists. Empty arrays are valid, never omit the keys.
|
|
@@ -264,7 +281,7 @@ tool produces, so the import path is uniform.
|
|
|
264
281
|
|
|
265
282
|
- The model tends to skip the audit and start designing straight from the request — the dispatcher gate at `directives/ui/audit.ts` enforces "no design without audit findings". Never treat this skill as optional for non-trivial UI.
|
|
266
283
|
- The model tends to misidentify a single Tailwind utility as a "design token" — tokens come from the config or `:root`, not from class strings in templates.
|
|
267
|
-
- Don't assume a Radix-only `package.json` means shadcn — shadcn requires `components.json` at
|
|
284
|
+
- Don't assume a Radix-only `package.json` means shadcn — shadcn requires `components.json` at the workspace root that owns the components. Each workspace carries its own; the repository root carries none, which is the layout the shadcn CLI scaffolds.
|
|
268
285
|
- `state.ui_audit.shadcn_inventory.version` is often missing; the shadcn CLI does not always pin itself in `package.json`. Record `null` rather than guessing.
|
|
269
286
|
- Greenfield is detected, not assumed — a project with one Blade layout and no components is still greenfield only if tokens AND design system markers AND components are all empty.
|
|
270
287
|
- **There is no mtime cache.** An earlier revision told you to cache by
|
|
@@ -22,6 +22,16 @@ dispatching this?**
|
|
|
22
22
|
|---|---|---|
|
|
23
23
|
| A ticketed run — the UI directive set is dispatching | `directives/ui/*` | a reference it cites |
|
|
24
24
|
| Anything else — "build me the page", "improve this form", "implement the approved design" | **you, in this turn** | the executor |
|
|
25
|
+
| A renderer axis is in play — WebGL / Three.js / canvas / scroll-scrubbed video | **still you** — the renderer is a grounding question, not a second executor | the executor, grounded via `search_stack` |
|
|
26
|
+
|
|
27
|
+
The third row is an **axis**, not an owner. Renderer selection resolves through
|
|
28
|
+
machinery that already exists: `search_stack` in
|
|
29
|
+
[`corpus-grounding`](../corpus-grounding/SKILL.md)
|
|
30
|
+
(`scripts/decision_engine.ts`), whose stack corpus carries `threejs.csv` among
|
|
31
|
+
its stacks, read beside the register in
|
|
32
|
+
[`design-intelligence`](../design-intelligence/references/context-and-registers.md)
|
|
33
|
+
§ Register. No second frontend executor is declared, and none is needed: a
|
|
34
|
+
renderer changes what you ground against, never who writes the UI.
|
|
25
35
|
|
|
26
36
|
Outside the engine, nothing else owns the design quality of a UI write. Reading
|
|
27
37
|
this skill and then writing the UI from priors is the failure it exists to
|
|
@@ -65,42 +75,36 @@ else runs the loop.
|
|
|
65
75
|
artifact's own markup/CSS/JS is stack-compatible, adapt **that code**;
|
|
66
76
|
re-deriving it from scratch is a deviation needing confirmation
|
|
67
77
|
(`design-fidelity-mechanics` § Adopt the code).
|
|
68
|
-
5. **Review** — run [`design-review`](../design-review/SKILL.md)
|
|
69
|
-
it done, and scope the verdict honestly: render-scoped when
|
|
70
|
-
it, otherwise explicitly static-scoped, naming which checks
|
|
71
|
-
"Looks good" with neither scope named is a verdict without
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
state, and a sticky header on anything long enough to scroll.
|
|
99
|
-
11. **No placeholder microcopy ships.** Lorem ipsum, `TODO`, and
|
|
100
|
-
`[Your text here]` are unfinished output, not drafts.
|
|
101
|
-
|
|
102
|
-
Before proposing a direction, run the anti-slop scan named under
|
|
103
|
-
[Anti-slop discipline](#anti-slop-discipline) below.
|
|
78
|
+
5. **Review, then re-enter** — run [`design-review`](../design-review/SKILL.md)
|
|
79
|
+
before calling it done, and scope the verdict honestly: render-scoped when
|
|
80
|
+
you can render it, otherwise explicitly static-scoped, naming which checks
|
|
81
|
+
actually ran. "Looks good" with neither scope named is a verdict without
|
|
82
|
+
evidence. Findings → fix them and **re-enter step 5**, at most **2 rounds**,
|
|
83
|
+
and **stop early on a null**: a round that produces **no new finding** ends
|
|
84
|
+
the loop, and a round that produces only findings the provided artifact
|
|
85
|
+
already covers produces no new finding. At the 2-round ceiling with findings
|
|
86
|
+
still open, stop and hand the remaining list back — ship-as-is or abort is
|
|
87
|
+
the user's call, never another silent pass. Judgement alone never buys a
|
|
88
|
+
third round.
|
|
89
|
+
|
|
90
|
+
The ceiling is **2**, the same number the engine enforces
|
|
91
|
+
(`directives/ui/polish.ts`, `POLISH_CEILING`), so the ad-hoc path and the
|
|
92
|
+
ticketed path bound the loop identically rather than by two conventions that
|
|
93
|
+
can drift. Fixtures: `daf-adhoc-converges` (round 2 is a null, loop ends) and
|
|
94
|
+
`daf-adhoc-ceiling` (findings remain at the ceiling, loop hands back).
|
|
95
|
+
|
|
96
|
+
### The floors — pulled immediately before the write
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
PULL references/craft-floor.md IMMEDIATELY BEFORE THE WRITE, NOT AT SKILL LOAD.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Twelve universal floors that do not vary by mode, register, intent or stack.
|
|
103
|
+
They were inline here until the delivery point moved: a floor read at skill-load
|
|
104
|
+
time can be a compaction away from the write it governs (`ADR-227`).
|
|
105
|
+
|
|
106
|
+
One precedence rule stays here because it is authority, not craft: **the audit
|
|
107
|
+
outranks every heuristic.** Say `[audit override]` when it does.
|
|
104
108
|
|
|
105
109
|
## Positioning — reference inside the engine, executor outside it
|
|
106
110
|
|
|
@@ -212,13 +216,42 @@ When this skill's content is folded into a design brief or review:
|
|
|
212
216
|
- Heuristics in this reference apply across stacks; do not promote them to project rules without checking the audit.
|
|
213
217
|
- Mobile-first is not optional — every layout must work on 320px width.
|
|
214
218
|
|
|
219
|
+
## Read the authority object — never re-infer it
|
|
220
|
+
|
|
221
|
+
Read the resolved `ui_authority`
|
|
222
|
+
([contract](../../../docs/contracts/ui-authority.md)) before the loop:
|
|
223
|
+
`surface_mode`, `register`, `change_intent`, `reference_maturity`,
|
|
224
|
+
`constraints`. This skill is a **declared consumer** — a second decision table
|
|
225
|
+
beside the object is a drift surface, so do not re-derive any field.
|
|
226
|
+
|
|
227
|
+
`surface_mode` sets density, hierarchy and expressiveness only, per
|
|
228
|
+
[`design-modes`](../../../docs/guidelines/design-modes.md) § The second axis.
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
QUALITY FLOORS DO NOT VARY BY SURFACE MODE.
|
|
232
|
+
A FLOOR THAT MOVES WITH THE MODE IS A PREFERENCE WEARING A FLOOR'S NAME.
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### The source-led path
|
|
236
|
+
|
|
237
|
+
`reference_maturity: runnable-artifact` → the artifact's own markup, CSS and JS
|
|
238
|
+
is the data basis; adapting it is the **default** and a from-scratch
|
|
239
|
+
re-derivation is a deviation. Sort every mechanic into `honoured` / `translated`
|
|
240
|
+
/ `flagged`; one present, absent and unflagged is a **silent drop**, target zero.
|
|
241
|
+
Procedure and the vanishing-mechanic classes:
|
|
242
|
+
[`references/source-led-port.md`](references/source-led-port.md).
|
|
243
|
+
|
|
244
|
+
Maturity is not decided here — it arrives on the authority object, and per-value
|
|
245
|
+
provenance belongs to `road-to-frontend-fidelity-calibration` Phases 0 and 2.
|
|
246
|
+
|
|
215
247
|
## Anti-slop discipline
|
|
216
248
|
|
|
217
|
-
Before proposing
|
|
218
|
-
[`
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
249
|
+
Before proposing a direction, scan the Visual (V1–V7) and Layout (L1–L8)
|
|
250
|
+
sections of [`design-antipatterns`](../../../docs/guidelines/design-antipatterns.md).
|
|
251
|
+
On a match, choose differently or invoke the entry's own override condition in
|
|
252
|
+
the brief — every entry has one, and they are register-scoped. The Q* floors are
|
|
253
|
+
in [`references/craft-floor.md`](references/craft-floor.md) instead of here, so
|
|
254
|
+
they arrive at the write rather than at skill load.
|
|
222
255
|
|
|
223
256
|
## Do NOT
|
|
224
257
|
|
|
@@ -1,55 +1,67 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
2
|
+
"skill": "fe-design",
|
|
3
|
+
"last_eval": "2026-08-12",
|
|
4
|
+
"description": "Should-trigger covers BOTH halves of this skill's two modes: planning/exploration (give me directions, explore, plan the flow, pattern choice) AND \u2014 new \u2014 ad-hoc implementation, because outside a ticketed run no other artefact owns the design quality of a UI write. The implementation query used to be labelled should-not-trigger on the reasoning that it belongs to the apply step; that step only exists as a dispatch target inside the engine, so the label routed ad-hoc implementation prompts to nobody. Should-not-trigger keeps the genuine near-misses: inventorying existing UI (existing-ui-audit owns it in both modes), a ui-trivial one-line edit, and non-UI work. Scroll-storytelling rows added 2026-08-23: a scroll-driven narrative build is an ad-hoc UI write and routes here, and the renderer axis is a third row in this skill's mode table rather than a second executor. The should-NOT-trigger row is the one that matters \u2014 \"scroll position resets when I navigate back\" is a state/restoration bug and belongs to the frontend-engineer lens, not to design. Without it the word \"scroll\" alone would route every scroll bug to a design skill.",
|
|
5
|
+
"queries": [
|
|
6
|
+
{
|
|
7
|
+
"q": "give me three directions for the pricing page",
|
|
8
|
+
"trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"q": "explore a few visual directions for the dashboard before we commit",
|
|
12
|
+
"trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"q": "design the multi-step onboarding flow",
|
|
16
|
+
"trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"q": "should this filter be a modal or an inline panel?",
|
|
20
|
+
"trigger": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"q": "plan the responsive layout for the settings screen",
|
|
24
|
+
"trigger": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"q": "implement the selected checkout design in React exactly as approved",
|
|
28
|
+
"trigger": true
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"q": "build the settings page",
|
|
32
|
+
"trigger": true
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"q": "improve this form, it feels clunky",
|
|
36
|
+
"trigger": true
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"q": "what form components do we already have in the codebase?",
|
|
40
|
+
"trigger": false
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"q": "change the primary button colour to green",
|
|
44
|
+
"trigger": false
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"q": "add a database index on orders.status",
|
|
48
|
+
"trigger": false
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"q": "fix the failing unit test in the auth module",
|
|
52
|
+
"trigger": false
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"q": "build the scroll-driven story section for the launch page",
|
|
56
|
+
"trigger": true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"q": "make the hero pin and scrub through three beats as you scroll",
|
|
60
|
+
"trigger": true
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"q": "the scroll position resets when I navigate back \u2014 fix the restoration bug",
|
|
64
|
+
"trigger": false
|
|
65
|
+
}
|
|
66
|
+
]
|
|
55
67
|
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Craft floor — load this immediately before the write
|
|
2
|
+
|
|
3
|
+
Universal floors. They do not vary by surface mode, register, change intent or
|
|
4
|
+
stack. Taste and direction stay mode-scoped in
|
|
5
|
+
[`fe-design`](../SKILL.md); nothing on this page is a preference.
|
|
6
|
+
|
|
7
|
+
**Why this is a separate page rather than inline.** The skill body used to carry
|
|
8
|
+
these inline, on the argument that "loaded" should mean the content is in
|
|
9
|
+
context. That argument is kept and the delivery point moved: a floor read at
|
|
10
|
+
*skill-load* time can be many turns and a compaction away from the write it
|
|
11
|
+
governs, and `ADR-227` records that a path-scoped carrier is not re-injected
|
|
12
|
+
after `/compact`. This page is pulled **immediately before the write**, which is
|
|
13
|
+
the moment the floor has to be present. Same content, later delivery.
|
|
14
|
+
|
|
15
|
+
## The floors
|
|
16
|
+
|
|
17
|
+
1. **Reuse tokens, never raw values.** A hex, font or px literal where the audit
|
|
18
|
+
found a token is off-brand by construction.
|
|
19
|
+
2. **All five states are designed.** `empty` is a helpful message, not a blank
|
|
20
|
+
region. `loading` prefers a skeleton over a spinner — it shows structure, so
|
|
21
|
+
it reads as faster. `error` says what to do next.
|
|
22
|
+
3. **Labels are always visible.** No placeholder-only inputs.
|
|
23
|
+
4. **Validate on blur and on submit**, never on every keystroke. The message
|
|
24
|
+
goes below the field and is specific.
|
|
25
|
+
5. **Mobile-first, and 320 px actually works.** Default styles are the small
|
|
26
|
+
viewport; complexity is added at larger breakpoints, never removed at smaller
|
|
27
|
+
ones. `agent-config ui:render` captures 320 px so this is measurable rather
|
|
28
|
+
than asserted.
|
|
29
|
+
6. **Accessibility minimums are non-negotiable.** 4.5:1 contrast for text (3:1
|
|
30
|
+
large), every interactive element reachable by Tab, a visible focus ring,
|
|
31
|
+
semantic elements over `div`, and an `aria-label` wherever there is no
|
|
32
|
+
visible text.
|
|
33
|
+
7. **Every action gets feedback.** Users read silence as failure.
|
|
34
|
+
8. **Prefer undo over a confirmation dialog.** Confirmations get clicked
|
|
35
|
+
through; an undo affordance actually protects the user.
|
|
36
|
+
9. **Tables:** numbers right-aligned, text left-aligned, a designed empty state,
|
|
37
|
+
and a sticky header on anything long enough to scroll.
|
|
38
|
+
10. **No placeholder microcopy ships.** Lorem ipsum, `TODO` and
|
|
39
|
+
`[Your text here]` are unfinished output, not drafts.
|
|
40
|
+
11. **A default font pick is declared or changed.** Inter, Roboto, DM Sans,
|
|
41
|
+
Geist, Space Grotesk and Instrument Serif are the AI defaults. In the
|
|
42
|
+
product register "one reliable family" is a complete reason — but state it.
|
|
43
|
+
An undeclared pick is an undeclared choice (T7).
|
|
44
|
+
12. **Zero silent drops.** A mechanic present in a supplied source and absent
|
|
45
|
+
from the output, with no `flagged` entry, is a silent drop.
|
|
46
|
+
|
|
47
|
+
## What is NOT on this page
|
|
48
|
+
|
|
49
|
+
Density, hierarchy, expressiveness, palette character, type personality,
|
|
50
|
+
motion register. Those are surface-mode and register decisions and they live in
|
|
51
|
+
`fe-design`. Putting them here would make a preference look like a floor, which
|
|
52
|
+
is the failure this split exists to prevent.
|