@event4u/agent-config 14.10.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.
Files changed (399) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +335 -0
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/design.md +88 -0
  7. package/dist/agent-src/commands/project/analyze.md +47 -0
  8. package/dist/agent-src/commands/review/changes.md +67 -6
  9. package/dist/agent-src/commands/roadmap/create.md +49 -0
  10. package/dist/agent-src/commands/roadmap/next.md +27 -11
  11. package/dist/agent-src/commands/roadmap/process-full.md +14 -0
  12. package/dist/agent-src/commands/video/from-script.md +60 -3
  13. package/dist/agent-src/commands/video/stitch.md +14 -0
  14. package/dist/agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -0
  15. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +154 -2
  16. package/dist/agent-src/rules/active-remediation.md +3 -3
  17. package/dist/agent-src/rules/code-provenance.md +2 -2
  18. package/dist/agent-src/rules/context-hygiene.md +13 -33
  19. package/dist/agent-src/rules/council-availability.md +2 -2
  20. package/dist/agent-src/rules/decision-revisit-gate.md +3 -1
  21. package/dist/agent-src/rules/design-fidelity.md +18 -0
  22. package/dist/agent-src/rules/design-review-after-ui-write.md +2 -2
  23. package/dist/agent-src/rules/evaluator-independence.md +56 -44
  24. package/dist/agent-src/rules/fix-what-you-see.md +9 -1
  25. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  26. package/dist/agent-src/rules/minimal-safe-diff.md +14 -20
  27. package/dist/agent-src/rules/missing-skill-recovery.md +13 -1
  28. package/dist/agent-src/rules/playbook-precedence.md +105 -0
  29. package/dist/agent-src/rules/recurring-criticism.md +3 -1
  30. package/dist/agent-src/rules/roadmap-progress-sync.md +14 -13
  31. package/dist/agent-src/rules/scale-discipline.md +24 -0
  32. package/dist/agent-src/rules/security-sensitive-stop.md +2 -2
  33. package/dist/agent-src/rules/settings-ask-protocol.md +2 -2
  34. package/dist/agent-src/rules/ui-audit-gate.md +27 -15
  35. package/dist/agent-src/rules/untrusted-input-defense.md +2 -2
  36. package/dist/agent-src/skills/accessibility-auditor/SKILL.md +19 -0
  37. package/dist/agent-src/skills/adr-create/SKILL.md +7 -0
  38. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +33 -0
  39. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +17 -3
  40. package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +31 -0
  41. package/dist/agent-src/skills/ai-council/references/procedure.md +19 -0
  42. package/dist/agent-src/skills/alerting-doctrine/SKILL.md +225 -0
  43. package/dist/agent-src/skills/alerting-doctrine/evals/triggers.json +17 -0
  44. package/dist/agent-src/skills/authz-review/SKILL.md +0 -1
  45. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +32 -0
  46. package/dist/agent-src/skills/brand/SKILL.md +3 -0
  47. package/dist/agent-src/skills/brand-asset-generation/SKILL.md +3 -0
  48. package/dist/agent-src/skills/brand-audit/SKILL.md +3 -0
  49. package/dist/agent-src/skills/brand-identity/SKILL.md +3 -0
  50. package/dist/agent-src/skills/brand-strategy/SKILL.md +3 -0
  51. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +3 -0
  52. package/dist/agent-src/skills/check-refs/SKILL.md +3 -0
  53. package/dist/agent-src/skills/code-review/SKILL.md +11 -0
  54. package/dist/agent-src/skills/command-routing/SKILL.md +6 -0
  55. package/dist/agent-src/skills/condense-memory/SKILL.md +3 -0
  56. package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
  57. package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +3 -0
  58. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +10 -0
  59. package/dist/agent-src/skills/corpus-grounding/SKILL.md +3 -0
  60. package/dist/agent-src/skills/design-intelligence/SKILL.md +3 -0
  61. package/dist/agent-src/skills/design-intelligence/data/landing.csv +36 -35
  62. package/dist/agent-src/skills/design-intelligence/data/stacks/threejs.csv +1 -0
  63. package/dist/agent-src/skills/design-review/SKILL.md +79 -1
  64. package/dist/agent-src/skills/design-review/references/verification-automation.md +41 -0
  65. package/dist/agent-src/skills/design-system-capture/SKILL.md +35 -40
  66. package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +50 -0
  67. package/dist/agent-src/skills/design-tokens/SKILL.md +3 -0
  68. package/dist/agent-src/skills/design-variations/SKILL.md +3 -0
  69. package/dist/agent-src/skills/developer-like-execution/SKILL.md +3 -0
  70. package/dist/agent-src/skills/estimate-ticket/SKILL.md +3 -0
  71. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +20 -3
  72. package/dist/agent-src/skills/fe-design/SKILL.md +74 -41
  73. package/dist/agent-src/skills/fe-design/evals/triggers.json +65 -53
  74. package/dist/agent-src/skills/fe-design/references/craft-floor.md +52 -0
  75. package/dist/agent-src/skills/fe-design/references/source-led-port.md +36 -0
  76. package/dist/agent-src/skills/file-editor/SKILL.md +5 -0
  77. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  78. package/dist/agent-src/skills/git-workflow/SKILL.md +3 -0
  79. package/dist/agent-src/skills/html-deck/SKILL.md +3 -0
  80. package/dist/agent-src/skills/iconography/SKILL.md +3 -0
  81. package/dist/agent-src/skills/image-editing/SKILL.md +3 -0
  82. package/dist/agent-src/skills/image-generation/SKILL.md +3 -0
  83. package/dist/agent-src/skills/image-provider-routing/SKILL.md +3 -0
  84. package/dist/agent-src/skills/incident-commander/SKILL.md +10 -0
  85. package/dist/agent-src/skills/js-library-packaging/SKILL.md +173 -0
  86. package/dist/agent-src/skills/js-library-packaging/evals/triggers.json +17 -0
  87. package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.ts +270 -0
  88. package/dist/agent-src/skills/laravel-migration/SKILL.md +3 -0
  89. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +3 -0
  90. package/dist/agent-src/skills/lint-skills/SKILL.md +3 -0
  91. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +3 -0
  92. package/dist/agent-src/skills/logging-monitoring/SKILL.md +234 -51
  93. package/dist/agent-src/skills/logo-generation/SKILL.md +3 -0
  94. package/dist/agent-src/skills/md-language-check/SKILL.md +3 -0
  95. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +149 -0
  96. package/dist/agent-src/skills/monorepo-workspace/evals/triggers.json +17 -0
  97. package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -0
  98. package/dist/agent-src/skills/multi-tenancy/SKILL.md +4 -0
  99. package/dist/agent-src/skills/operational-readiness/SKILL.md +184 -0
  100. package/dist/agent-src/skills/operational-readiness/evals/triggers.json +17 -0
  101. package/dist/agent-src/skills/override-management/SKILL.md +3 -0
  102. package/dist/agent-src/skills/persona-improvement/SKILL.md +3 -0
  103. package/dist/agent-src/skills/pest-testing/SKILL.md +3 -0
  104. package/dist/agent-src/skills/playbook-authoring/SKILL.md +162 -0
  105. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -0
  106. package/dist/agent-src/skills/privacy-review/SKILL.md +3 -0
  107. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -0
  108. package/dist/agent-src/skills/quality-tools/SKILL.md +5 -0
  109. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +52 -21
  110. package/dist/agent-src/skills/readme-reviewer/SKILL.md +3 -0
  111. package/dist/agent-src/skills/readme-writing/SKILL.md +3 -0
  112. package/dist/agent-src/skills/readme-writing-package/SKILL.md +3 -0
  113. package/dist/agent-src/skills/receiving-code-review/SKILL.md +2 -2
  114. package/dist/agent-src/skills/refine-prompt/SKILL.md +3 -0
  115. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -0
  116. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  117. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  118. package/dist/agent-src/skills/roadmap-writing/SKILL.md +23 -41
  119. package/dist/agent-src/skills/roadmap-writing/references/follow-up-roadmap-shape.md +47 -0
  120. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +22 -6
  121. package/dist/agent-src/skills/runway-cognition/SKILL.md +3 -0
  122. package/dist/agent-src/skills/scene-expander/scene-blueprint.schema.yaml +26 -0
  123. package/dist/agent-src/skills/secrets-management/SKILL.md +4 -0
  124. package/dist/agent-src/skills/server-hardening/SKILL.md +159 -0
  125. package/dist/agent-src/skills/server-hardening/evals/triggers.json +17 -0
  126. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -0
  127. package/dist/agent-src/skills/skill-management/SKILL.md +3 -0
  128. package/dist/agent-src/skills/skill-reviewer/SKILL.md +3 -0
  129. package/dist/agent-src/skills/skill-writing/SKILL.md +6 -0
  130. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +3 -0
  131. package/dist/agent-src/skills/storybook-workshop/SKILL.md +194 -0
  132. package/dist/agent-src/skills/storybook-workshop/evals/triggers.json +17 -0
  133. package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.ts +134 -0
  134. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  135. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +25 -0
  136. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +12 -0
  137. package/dist/agent-src/skills/systematic-debugging/SKILL.md +1 -1
  138. package/dist/agent-src/skills/terraform/SKILL.md +3 -0
  139. package/dist/agent-src/skills/test-driven-development/SKILL.md +1 -1
  140. package/dist/agent-src/skills/threat-modeling/SKILL.md +0 -3
  141. package/dist/agent-src/skills/token-optimizer/SKILL.md +3 -0
  142. package/dist/agent-src/skills/typography-system/SKILL.md +3 -0
  143. package/dist/agent-src/skills/ui-component-architect/SKILL.md +9 -1
  144. package/dist/agent-src/skills/upstream-contribute/SKILL.md +3 -0
  145. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -0
  146. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +2 -2
  147. package/dist/agent-src/skills/wireframe/SKILL.md +3 -0
  148. package/dist/agent-src/skills/wireframe/references/story-beat-ledger.schema.json +115 -0
  149. package/dist/agent-src/skills/workspace-link/SKILL.md +131 -0
  150. package/dist/agent-src/skills/workspace-link/evals/triggers.json +17 -0
  151. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  152. package/dist/agent-src/templates/playbook.md +75 -0
  153. package/dist/agent-src/templates/roadmaps.md +37 -0
  154. package/dist/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
  155. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
  156. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
  157. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
  158. package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
  159. package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
  160. package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
  161. package/dist/cli/commands/uiAudit.js +221 -0
  162. package/dist/cli/commands/uiAudit.js.map +1 -0
  163. package/dist/cli/commands/uiRender.js +206 -0
  164. package/dist/cli/commands/uiRender.js.map +1 -0
  165. package/dist/cli/main.js +22 -1
  166. package/dist/cli/main.js.map +1 -1
  167. package/dist/cli/mcp/content.js +64 -1
  168. package/dist/cli/mcp/content.js.map +1 -1
  169. package/dist/cli/mcp/dispatch.js +175 -10
  170. package/dist/cli/mcp/dispatch.js.map +1 -1
  171. package/dist/cli/registry.js +3 -0
  172. package/dist/cli/registry.js.map +1 -1
  173. package/dist/cli-delegate/{chunk-H4VIVD4C.js → chunk-236PNQZK.js} +413 -391
  174. package/dist/cli-delegate/{chunk-G23AT6GD.js → chunk-DMSZHXZS.js} +57 -1
  175. package/dist/cli-delegate/{chunk-77GR3VD4.js → chunk-FF7WAFMR.js} +58 -3
  176. package/dist/cli-delegate/{chunk-PLSG6UL5.js → chunk-K4FFODTS.js} +341 -204
  177. package/dist/cli-delegate/{chunk-YM4GZDJG.js → chunk-L43NCYPB.js} +5 -0
  178. package/dist/cli-delegate/{chunk-B2ERU2VA.js → chunk-WOKWX5PL.js} +1 -1
  179. package/dist/cli-delegate/cmd_brand_status.js +8 -6
  180. package/dist/cli-delegate/cmd_conformance.js +3 -3
  181. package/dist/cli-delegate/cmd_doctor.js +3 -3
  182. package/dist/cli-delegate/cmd_export.js +4 -4
  183. package/dist/cli-delegate/cmd_handoff.js +1 -1
  184. package/dist/cli-delegate/cmd_preflight.js +2 -2
  185. package/dist/cli-delegate/cmd_prune.js +4 -4
  186. package/dist/cli-delegate/cmd_session_recycle.js +70 -9
  187. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  188. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  189. package/dist/cli-delegate/cmd_sync.js +4 -4
  190. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  191. package/dist/cli-delegate/cmd_validate.js +4 -4
  192. package/dist/discovery/deprecation-report.md +1 -1
  193. package/dist/discovery/discovery-manifest.json +359 -124
  194. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  195. package/dist/discovery/discovery-manifest.summary.md +4 -4
  196. package/dist/discovery/dormancy-report.md +1 -1
  197. package/dist/discovery/orphan-report.md +1 -1
  198. package/dist/discovery/packs.json +18 -8
  199. package/dist/discovery/trust-report.md +3 -3
  200. package/dist/discovery/workspaces.json +16 -6
  201. package/dist/hooks/dispatch.js +2337 -1436
  202. package/dist/install/install.mjs +795 -708
  203. package/dist/mcp/registry-manifest.json +3 -3
  204. package/dist/mcp/server.json +2 -2
  205. package/dist/mcp/server.mjs +1685 -1250
  206. package/dist/router.json +1 -1
  207. package/dist/scripts/_lib/lean_projection_mode.js +40 -0
  208. package/dist/scripts/_lib/lean_projection_mode.js.map +1 -0
  209. package/dist/scripts/_lib/scoped_projection.js +84 -0
  210. package/dist/scripts/_lib/scoped_projection.js.map +1 -1
  211. package/dist/scripts/_lib/ui_surface.js +89 -0
  212. package/dist/scripts/_lib/ui_surface.js.map +1 -0
  213. package/dist/scripts/condense.js +6 -10
  214. package/dist/scripts/condense.js.map +1 -1
  215. package/dist/scripts/project_thin_rules.js +40 -2
  216. package/dist/scripts/project_thin_rules.js.map +1 -1
  217. package/dist/server/schemas/settings.js +3 -0
  218. package/dist/server/schemas/settings.js.map +1 -1
  219. package/dist/shared/skillRanking.js +159 -0
  220. package/dist/shared/skillRanking.js.map +1 -0
  221. package/docs/contracts/provider-lifecycle.md +47 -18
  222. package/docs/contracts/settings-classes.md +14 -4
  223. package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +49 -0
  224. package/docs/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  225. package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +45 -1
  226. package/docs/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  227. package/docs/guidelines/design-antipatterns.md +4 -2
  228. package/docs/guidelines/design-asset-discipline.md +38 -0
  229. package/docs/guidelines/design-fidelity-mechanics.md +45 -29
  230. package/docs/guidelines/design-handover-extraction.md +35 -5
  231. package/docs/guidelines/design-modes.md +41 -1
  232. package/docs/guidelines/monorepo-antipatterns.md +141 -0
  233. package/llms.txt +50 -39
  234. package/package.json +1 -1
  235. package/src/agent-src/templates/scripts/check_playbook_invokes.ts +231 -0
  236. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +24 -0
  237. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -0
  238. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +216 -0
  239. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +159 -0
  240. package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +73 -4
  241. package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +325 -40
  242. package/src/config/agent-settings.template.yml +28 -0
  243. package/src/config/assurance-capability-registry.json +223 -0
  244. package/src/config/assurance-threshold-budget.json +65 -0
  245. package/src/config/ci-local-parity.yml +14 -0
  246. package/src/config/discovery/unassigned-artefacts.yml +2 -0
  247. package/src/config/dispatch-economy-metrics.json +4 -2
  248. package/src/config/evaluator-budgets.json +14 -14
  249. package/src/config/gate-coverage.yml +207 -8
  250. package/src/config/gate-violation-baselines.json +76 -72
  251. package/src/config/hook-latency-budget.json +1 -0
  252. package/src/config/hook-token-budget.json +137 -125
  253. package/src/config/pack-size-budget.json +4 -2
  254. package/src/config/quorum-attendance-budget.json +12 -4
  255. package/src/config/rule-activation-census.json +7 -3
  256. package/src/config/rule-enforcement-baseline.json +0 -1
  257. package/src/config/rule-stub-ceilings.json +112 -91
  258. package/src/scripts/_cli/cmd_doctor.ts +15 -16
  259. package/src/scripts/_cli/doctor_install_mode.ts +49 -0
  260. package/src/scripts/_cli/doctor_overrides.ts +154 -0
  261. package/src/scripts/_dispatch.bash +17 -0
  262. package/src/scripts/_lib/as_of.ts +412 -0
  263. package/src/scripts/_lib/exec_evidence.ts +7 -0
  264. package/src/scripts/_lib/hook_settings.ts +33 -0
  265. package/src/scripts/_lib/host_listing_model.ts +192 -0
  266. package/src/scripts/_lib/lean_projection_mode.ts +44 -0
  267. package/src/scripts/_lib/mcp_bridge.ts +199 -0
  268. package/src/scripts/_lib/review_independence.ts +62 -10
  269. package/src/scripts/_lib/rule_injection.ts +239 -0
  270. package/src/scripts/_lib/run_checkpoint.ts +54 -1
  271. package/src/scripts/_lib/scoped_projection.ts +96 -0
  272. package/src/scripts/_lib/session_register.ts +44 -2
  273. package/src/scripts/_lib/skill_catalogue.ts +38 -2
  274. package/src/scripts/_lib/transcript_reads.ts +207 -0
  275. package/src/scripts/_lib/ui_authority.test.ts +251 -0
  276. package/src/scripts/_lib/ui_authority.ts +343 -0
  277. package/src/scripts/ai-video/adapters/fal.sh +8 -3
  278. package/src/scripts/ai-video/adapters/gemini-veo.sh +10 -0
  279. package/src/scripts/ai-video/adapters/higgsfield.sh +10 -2
  280. package/src/scripts/ai-video/adapters/kling.sh +10 -0
  281. package/src/scripts/ai-video/adapters/sora.sh +10 -0
  282. package/src/scripts/ai-video/lib/calibrate-cost.sh +145 -0
  283. package/src/scripts/ai-video/lib/model-capabilities/README.md +53 -7
  284. package/src/scripts/ai-video/lib/model-capabilities/comfyui.json +15 -3
  285. package/src/scripts/ai-video/lib/model-capabilities/fal.json +36 -6
  286. package/src/scripts/ai-video/lib/model-capabilities/gemini-veo.json +23 -0
  287. package/src/scripts/ai-video/lib/model-capabilities/higgsfield.json +23 -0
  288. package/src/scripts/ai-video/lib/model-capabilities/kling.json +23 -0
  289. package/src/scripts/ai-video/lib/model-capabilities/musetalk.json +8 -2
  290. package/src/scripts/ai-video/lib/model-capabilities/replicate.json +36 -6
  291. package/src/scripts/ai-video/lib/model-capabilities/sora.json +45 -0
  292. package/src/scripts/ai-video/lib/model-capabilities/syncso.json +8 -2
  293. package/src/scripts/ai-video/lib/parse-blueprint.sh +52 -5
  294. package/src/scripts/ai-video/lib/resume-scan.sh +92 -3
  295. package/src/scripts/ai-video/lib/seam-plan.sh +212 -0
  296. package/src/scripts/ai-video/smoke-trace.sh +450 -2
  297. package/src/scripts/ai-video/stitch.sh +191 -10
  298. package/src/scripts/ai-video/test-pipeline.sh +84 -6
  299. package/src/scripts/ai_council/cli_agency_bounds.ts +139 -0
  300. package/src/scripts/ai_council/cli_least_agency_canary.ts +347 -0
  301. package/src/scripts/ai_council/clients.ts +3 -2
  302. package/src/scripts/ai_council/consensus.ts +63 -6
  303. package/src/scripts/ai_council/events_log.ts +46 -1
  304. package/src/scripts/ai_council/orchestrator.ts +103 -108
  305. package/src/scripts/ai_council/orchestrator_results.ts +166 -0
  306. package/src/scripts/ai_council/prompts.ts +12 -5
  307. package/src/scripts/ai_council/quorum.ts +82 -1
  308. package/src/scripts/ai_council/quorum_wiring.ts +82 -5
  309. package/src/scripts/ai_council/stance_tally.ts +22 -0
  310. package/src/scripts/bench_hook_latency.ts +62 -0
  311. package/src/scripts/build_proof.ts +12 -1
  312. package/src/scripts/capture_skill_catalogue.ts +21 -0
  313. package/src/scripts/check_always_budget.ts +2 -1
  314. package/src/scripts/check_augmentignore.ts +2 -1
  315. package/src/scripts/check_beta_review_markers.ts +2 -1
  316. package/src/scripts/check_composite_arming.ts +364 -0
  317. package/src/scripts/check_corpus_staleness.ts +2 -1
  318. package/src/scripts/check_council_pin_staleness.ts +3 -1
  319. package/src/scripts/check_enforcement_coverage.ts +116 -3
  320. package/src/scripts/check_enforcement_denominator.ts +365 -0
  321. package/src/scripts/check_gate_coverage.ts +2 -1
  322. package/src/scripts/check_hook_bundle_freshness.ts +13 -1
  323. package/src/scripts/check_knowledge_cards.ts +2 -1
  324. package/src/scripts/check_knowledge_pages.ts +3 -2
  325. package/src/scripts/check_memory.ts +2 -1
  326. package/src/scripts/check_no_automerge_key.ts +287 -0
  327. package/src/scripts/check_pack_conformance_fixture.ts +565 -0
  328. package/src/scripts/check_proposal.ts +2 -1
  329. package/src/scripts/check_reach_staleness.ts +2 -1
  330. package/src/scripts/check_release_adjacent_health.ts +2 -1
  331. package/src/scripts/check_release_pr_shape.ts +5 -0
  332. package/src/scripts/check_review_schema.ts +34 -1
  333. package/src/scripts/check_roadmap_trackable.ts +48 -3
  334. package/src/scripts/check_source_size_budget.ts +2 -1
  335. package/src/scripts/check_standing_payload_delta.ts +505 -0
  336. package/src/scripts/check_trigger_evals.ts +2 -1
  337. package/src/scripts/classify_change_risk.ts +281 -0
  338. package/src/scripts/compute_skill_tiers.ts +186 -0
  339. package/src/scripts/condense.ts +8 -13
  340. package/src/scripts/council_attendance_metrics.ts +183 -0
  341. package/src/scripts/council_cli.ts +10 -8
  342. package/src/scripts/council_parse_rate.ts +116 -0
  343. package/src/scripts/derive_playbooks.ts +406 -0
  344. package/src/scripts/design_slop_rules.test.ts +7 -0
  345. package/src/scripts/design_slop_rules.ts +56 -2
  346. package/src/scripts/dispatch_r2_reviewer.ts +16 -0
  347. package/src/scripts/frontend_corpus_hash.ts +116 -0
  348. package/src/scripts/grade_target_readiness.ts +478 -0
  349. package/src/scripts/hook_manifest.json +1 -1
  350. package/src/scripts/hook_manifest.yaml +97 -16
  351. package/src/scripts/hooks/concern_registry.ts +4 -0
  352. package/src/scripts/hooks/design_pass_hook.ts +356 -0
  353. package/src/scripts/hooks/rtk_wrap_hook.ts +30 -7
  354. package/src/scripts/hooks/rule_inject_hook.ts +318 -0
  355. package/src/scripts/hot_context_hook.ts +74 -7
  356. package/src/scripts/install.ts +40 -89
  357. package/src/scripts/lint_adapter_tier.ts +663 -0
  358. package/src/scripts/lint_archived_skills.ts +93 -0
  359. package/src/scripts/lint_budget_ownership.ts +2 -1
  360. package/src/scripts/lint_deterministic_time.ts +470 -0
  361. package/src/scripts/lint_framework_leakage.ts +5 -0
  362. package/src/scripts/lint_handoffs.ts +525 -1
  363. package/src/scripts/lint_judge_prompt_expectation.ts +155 -0
  364. package/src/scripts/lint_marketplace.ts +88 -0
  365. package/src/scripts/lint_media_policy_linkage.ts +140 -1
  366. package/src/scripts/lint_one_off_age.ts +6 -1
  367. package/src/scripts/lint_override_kernel_guard.ts +87 -5
  368. package/src/scripts/lint_roadmap_complexity.ts +56 -0
  369. package/src/scripts/lint_rule_enforcement_declaration.ts +24 -7
  370. package/src/scripts/lint_rule_norm_pin.ts +321 -0
  371. package/src/scripts/lint_spawn_payload.ts +42 -5
  372. package/src/scripts/lint_symptom_intake.ts +2 -1
  373. package/src/scripts/mcp_parity_smoke.ts +30 -4
  374. package/src/scripts/mcp_render.ts +66 -1
  375. package/src/scripts/mcp_tool_fingerprint.ts +241 -0
  376. package/src/scripts/measure_risk_class_drift.ts +140 -0
  377. package/src/scripts/measure_skill_ranker_baseline.ts +212 -0
  378. package/src/scripts/media/lib/adapter-common.sh +211 -1
  379. package/src/scripts/media/lib/adapter-contract.md +74 -6
  380. package/src/scripts/model_rule_injection.ts +907 -0
  381. package/src/scripts/project_thin_rules.ts +45 -2
  382. package/src/scripts/release.ts +66 -860
  383. package/src/scripts/release_drill.ts +59 -3
  384. package/src/scripts/release_env.ts +298 -0
  385. package/src/scripts/release_publication.ts +720 -0
  386. package/src/scripts/roadmap_context.ts +778 -0
  387. package/src/scripts/schemas/fidelity-measurement-sheet.schema.json +169 -0
  388. package/src/scripts/schemas/rule.schema.json +24 -2
  389. package/src/scripts/schemas/skill.schema.json +39 -0
  390. package/src/scripts/schemas/ui-authority.schema.json +114 -0
  391. package/src/scripts/session_register_hook.ts +29 -3
  392. package/src/scripts/sessions_cli.ts +67 -3
  393. package/src/scripts/skill_tools/score_skill_relevance.ts +36 -53
  394. package/src/scripts/token_sink_report.ts +239 -0
  395. package/src/scripts/trigger_coverage.ts +122 -3
  396. package/src/scripts/update_counts.ts +7 -3
  397. package/src/scripts/validate_frontmatter.ts +66 -0
  398. package/src/server/schemas/settings.ts +5 -0
  399. package/src/shared/skillRanking.ts +183 -0
@@ -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 repo root | `components.json` |
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/*` and any locally vendored `components/ui/*.tsx` files. Write into `state.ui_audit.shadcn_inventory`:
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 repo root.
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) before calling
69
- it done, and scope the verdict honestly: render-scoped when you can render
70
- it, otherwise explicitly static-scoped, naming which checks actually ran.
71
- "Looks good" with neither scope named is a verdict without evidence.
72
-
73
- ### The heuristics — here, not one hop away
74
-
75
- The load-bearing subset, inline so that "loaded" means the content is in
76
- context. Depth stays in [`references/design-patterns.md`](references/design-patterns.md).
77
-
78
- 1. **Audit outranks heuristic.** A token, primitive or convention the audit
79
- found wins over anything on this list; say `[audit override]` when it does.
80
- 2. **Reuse tokens, never raw values.** A hex, font or px literal where the
81
- audit found a token is off-brand by construction.
82
- 3. **All five states are designed.** `empty` is a helpful message, not a blank
83
- region; `loading` prefers a skeleton over a spinner (it shows structure, so
84
- it reads as faster); `error` says what to do next.
85
- 4. **Labels are always visible.** No placeholder-only inputs.
86
- 5. **Validate on blur and on submit**, never on every keystroke; the message
87
- goes below the field and is specific.
88
- 6. **Mobile-first, and 320 px actually works.** Default styles are the small
89
- viewport; complexity is added at larger breakpoints, never removed at
90
- smaller ones.
91
- 7. **A11y minimums are non-negotiable:** 4.5:1 contrast for text (3:1 large),
92
- every interactive element reachable by Tab, a visible focus ring, semantic
93
- elements over `div`, and an `aria-label` wherever there is no visible text.
94
- 8. **Every action gets feedback.** Users read silence as failure.
95
- 9. **Prefer undo over a confirmation dialog** — confirmations get clicked
96
- through; an undo affordance actually protects the user.
97
- 10. **Tables:** numbers right-aligned, text left-aligned, a designed empty
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 any UI layout, component, or aesthetic direction, pull
218
- [`docs/guidelines/design-antipatterns.md`](../../../docs/guidelines/design-antipatterns.md)
219
- and scan the Visual (V1–V7), Layout (L1–L8), and Quality-floors (Q1–Q12) sections.
220
- If the first-impulse design matches a listed pattern, either choose a different
221
- approach or explicitly invoke the override condition in the design brief.
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
- "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 — new — 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.",
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
- ]
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.
@@ -0,0 +1,36 @@
1
+ # Source-led port — adopt the mechanics, do not re-derive them
2
+
3
+ Pulled when `ui_authority.reference_maturity` is `runnable-artifact`. Contract:
4
+ [`ui-authority`](../../../../../docs/contracts/ui-authority.md).
5
+
6
+ When `reference_maturity` is `runnable-artifact`, the artifact's own markup, CSS
7
+ and JS is the data basis and adapting it is the DEFAULT. A from-scratch
8
+ re-derivation is a deviation and needs the same confirmation as a swapped
9
+ control (per [`design-fidelity`](../../rules/design-fidelity.md)).
10
+
11
+ Account for every mechanic the source carries, in the engine's own vocabulary
12
+ (`COVERAGE_BUCKETS`, shared rather than copied — `agent-config ui:audit`
13
+ re-exports it):
14
+
15
+ - **`honoured`** — carried across intact.
16
+ - **`translated`** — expressed differently in the target stack, same observable
17
+ behaviour. Name the substitution.
18
+ - **`flagged`** — cannot be carried; say so explicitly.
19
+
20
+ ```
21
+ A MECHANIC THAT IS PRESENT IN THE SOURCE AND ABSENT FROM THE OUTPUT WITH NO
22
+ `flagged` ENTRY IS A SILENT DROP. TARGET: ZERO.
23
+ ```
24
+
25
+ `container-type` / `@container`, `clamp()` type scales, `:has()` state
26
+ selectors, `IntersectionObserver` reveals and view transitions are the classes
27
+ that vanish most often, because each one *looks* like decoration and is
28
+ actually behaviour. `tests/eval/frontend-corpus/near-miss/artifact-source-not-rederived`
29
+ is the pinned case: three mechanics, and an output that silently becomes a plain
30
+ media-query grid fails it.
31
+
32
+ **Maturity itself is not decided here.** `reference_maturity` arrives on the
33
+ authority object, and per-value provenance for a comp belongs to
34
+ `road-to-frontend-fidelity-calibration` Phases 0 and 2. This skill adds no
35
+ second maturity discriminator.
36
+
@@ -3,6 +3,11 @@ model_tier: lite
3
3
  name: file-editor
4
4
  description: "Use when opening edited files in the user's IDE. Reads settings from .agent-settings.yml to determine IDE and whether auto-open is enabled."
5
5
  domain: process
6
+ scope:
7
+ write:
8
+ - pattern: "**"
9
+ access: "write"
10
+ verification_reason: "the write target IS the caller's argument — this skill edits whatever path it is pointed at, so its scope is the tree by construction. A narrower glob would be false, not tighter."
6
11
  execution:
7
12
  type: assisted
8
13
  handler: shell
@@ -61,7 +61,7 @@ or [`fix-pr-comments`](../../commands/fix-pr-comments.md) instead.
61
61
  ### 2. Verify readiness
62
62
 
63
63
  Run the end-of-work gate before presenting any options — see
64
- [`verify-before-complete`](../verify-before-complete/SKILL.md).
64
+ [`verify-completion-evidence`](../verify-completion-evidence/SKILL.md).
65
65
  Steps 1–3 run only when `quality.local_auto_run: true`; under the
66
66
  default (`false` / missing) skip them without asking — the user runs
67
67
  quality tools manually, remote CI on the PR is the authoritative gate,
@@ -226,7 +226,7 @@ After the chosen option completes, report:
226
226
 
227
227
  ## When to hand over to another skill / command
228
228
 
229
- * Final pre-merge verification → [`verify-before-complete`](../verify-before-complete/SKILL.md)
229
+ * Final pre-merge verification → [`verify-completion-evidence`](../verify-completion-evidence/SKILL.md)
230
230
  * Rebasing the stack before PR → [`prepare-for-review`](../../commands/prepare-for-review.md)
231
231
  * Writing the commit for any last-minute tweaks →
232
232
  [`commit`](../../commands/commit.md),
@@ -3,6 +3,9 @@ model_tier: medium
3
3
  name: git-workflow
4
4
  description: "Use when working with Git — branch naming, commit messages, PR creation, rebasing, or the code review process — even when the user says 'push this' or 'merge the branch' without naming Git."
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
@@ -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
  ---
@@ -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
  ---
@@ -12,6 +12,9 @@ trust:
12
12
  level: experimental
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
  ---
@@ -12,6 +12,9 @@ trust:
12
12
  level: experimental
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
  ---
@@ -12,6 +12,9 @@ trust:
12
12
  level: experimental
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
  ---
@@ -143,3 +143,13 @@ Post-mortem owner: <role>
143
143
  - Do NOT close an incident without a post-mortem owner assigned.
144
144
  - Do NOT edit the timeline after the fact; corrections are new
145
145
  entries.
146
+
147
+ ## See also
148
+
149
+ - [`alerting-doctrine`](../alerting-doctrine/SKILL.md) — what earned the page
150
+ that opened this incident, and the runbook contract the first responder reads.
151
+ A page arrives with an owner, a runbook and a first diagnostic step; if it did
152
+ not, that is a configuration defect to record in the post-mortem.
153
+ - [`logging-monitoring`](../logging-monitoring/SKILL.md) — the signal posture the
154
+ incident is being diagnosed through, and why a `proposed` threshold is not a
155
+ breach.