@event4u/agent-config 9.9.0 → 9.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 (479) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +212 -194
  3. package/README.md +13 -16
  4. package/agents/templates/.ai-council.yml.example +481 -0
  5. package/agents/templates/.ai-video.xml.example +247 -0
  6. package/dist/agent-src/commands/agent-status.md +12 -11
  7. package/dist/agent-src/commands/agents/user/accept.md +115 -30
  8. package/dist/agent-src/commands/agents/user/delete.md +147 -0
  9. package/dist/agent-src/commands/agents/user/review.md +65 -28
  10. package/dist/agent-src/commands/agents/user/show.md +82 -29
  11. package/dist/agent-src/commands/agents/user/update.md +2 -2
  12. package/dist/agent-src/commands/agents/user.md +16 -3
  13. package/dist/agent-src/commands/check-current-md.md +0 -10
  14. package/dist/agent-src/commands/condense.md +28 -97
  15. package/dist/agent-src/commands/cost/report.md +7 -0
  16. package/dist/agent-src/commands/fix/portability.md +0 -8
  17. package/dist/agent-src/commands/fix/refs.md +0 -8
  18. package/dist/agent-src/commands/humanize.md +2 -2
  19. package/dist/agent-src/commands/jira-ticket.md +1 -1
  20. package/dist/agent-src/commands/memory/load.md +11 -0
  21. package/dist/agent-src/commands/optimize/skills.md +1 -1
  22. package/dist/agent-src/commands/pr/create.md +4 -4
  23. package/dist/agent-src/commands/profile/show.md +3 -3
  24. package/dist/agent-src/commands/rule-compliance-audit.md +5 -4
  25. package/dist/agent-src/commands/security-audit-config.md +1 -1
  26. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  27. package/dist/agent-src/commands/tdd.md +21 -0
  28. package/dist/agent-src/commands/team/delegate.md +2 -2
  29. package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
  30. package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
  31. package/dist/agent-src/commands/team.md +4 -1
  32. package/dist/agent-src/commands/upstream-contribute.md +0 -1
  33. package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
  34. package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
  35. package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
  36. package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
  37. package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
  38. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
  39. package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
  40. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
  41. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
  42. package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
  43. package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
  44. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +67 -37
  45. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  46. package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
  47. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
  48. package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
  49. package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
  50. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +24 -0
  51. package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
  52. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
  53. package/dist/agent-src/contexts/execution/subagent-response-contract.md +5 -5
  54. package/dist/agent-src/contexts/execution/subagent-routing.md +11 -0
  55. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +13 -13
  56. package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
  57. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  58. package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
  59. package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
  60. package/dist/agent-src/contexts/model-recommendations.md +3 -2
  61. package/dist/agent-src/contexts/subagent-configuration.md +3 -3
  62. package/dist/agent-src/ghostwriter/README.md +2 -2
  63. package/dist/agent-src/packs/README.md +1 -1
  64. package/dist/agent-src/personas/README.md +5 -5
  65. package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
  66. package/dist/agent-src/personas/backend-architect.md +24 -23
  67. package/dist/agent-src/personas/eloquent-tamer.md +30 -30
  68. package/dist/agent-src/personas/frontend-engineer.md +30 -30
  69. package/dist/agent-src/personas/product-owner.md +41 -38
  70. package/dist/agent-src/personas/qa.md +13 -13
  71. package/dist/agent-src/personas/security-engineer.md +22 -22
  72. package/dist/agent-src/presets/README.md +3 -3
  73. package/dist/agent-src/profiles/README.md +3 -3
  74. package/dist/agent-src/rules/active-remediation.md +2 -2
  75. package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
  76. package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
  77. package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
  78. package/dist/agent-src/rules/broken-access-control.md +4 -4
  79. package/dist/agent-src/rules/code-comment-discipline.md +1 -1
  80. package/dist/agent-src/rules/code-provenance.md +2 -2
  81. package/dist/agent-src/rules/commit-policy.md +4 -9
  82. package/dist/agent-src/rules/communication-through-line.md +5 -5
  83. package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
  84. package/dist/agent-src/rules/design-fidelity.md +1 -1
  85. package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
  86. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  87. package/dist/agent-src/rules/domain-safety-pii.md +1 -1
  88. package/dist/agent-src/rules/external-code-graph-interop.md +1 -1
  89. package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
  90. package/dist/agent-src/rules/finance-safety-floor.md +1 -1
  91. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
  92. package/dist/agent-src/rules/history-discipline.md +1 -1
  93. package/dist/agent-src/rules/legal-safety-floor.md +1 -1
  94. package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
  95. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
  96. package/dist/agent-src/rules/media-governance-routing.md +13 -13
  97. package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
  98. package/dist/agent-src/rules/no-cheap-questions.md +7 -7
  99. package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
  100. package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
  101. package/dist/agent-src/rules/onboarding-gate.md +14 -4
  102. package/dist/agent-src/rules/persona-governance.md +2 -2
  103. package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
  104. package/dist/agent-src/rules/preservation-guard.md +10 -2
  105. package/dist/agent-src/rules/question-not-instruction.md +1 -1
  106. package/dist/agent-src/rules/roadmap-progress-sync.md +6 -6
  107. package/dist/agent-src/rules/rule-type-governance.md +1 -1
  108. package/dist/agent-src/rules/scale-discipline.md +1 -1
  109. package/dist/agent-src/rules/scope-control.md +1 -1
  110. package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
  111. package/dist/agent-src/rules/security-sensitive-stop.md +17 -11
  112. package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
  113. package/dist/agent-src/rules/session-canary.md +1 -1
  114. package/dist/agent-src/rules/skill-quality.md +1 -1
  115. package/dist/agent-src/rules/source-confidentiality.md +21 -19
  116. package/dist/agent-src/rules/source-of-truth.md +6 -5
  117. package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
  118. package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
  119. package/dist/agent-src/rules/think-before-action.md +5 -5
  120. package/dist/agent-src/rules/token-budget-discipline.md +5 -3
  121. package/dist/agent-src/rules/token-efficiency.md +2 -2
  122. package/dist/agent-src/rules/untrusted-input-defense.md +4 -4
  123. package/dist/agent-src/rules/user-interaction.md +12 -0
  124. package/dist/agent-src/rules/verify-before-complete.md +4 -24
  125. package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
  126. package/dist/agent-src/skills/agent-security-review/SKILL.md +52 -45
  127. package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
  128. package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
  129. package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
  130. package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
  131. package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
  132. package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
  133. package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
  134. package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
  135. package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
  136. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  137. package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
  138. package/dist/agent-src/skills/code-intelligence/SKILL.md +0 -1
  139. package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
  140. package/dist/agent-src/skills/code-review/SKILL.md +6 -6
  141. package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
  142. package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
  143. package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
  144. package/dist/agent-src/skills/context-document/SKILL.md +23 -21
  145. package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
  146. package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
  147. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  148. package/dist/agent-src/skills/design-review/SKILL.md +15 -14
  149. package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
  150. package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
  151. package/dist/agent-src/skills/docker/SKILL.md +1 -1
  152. package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
  153. package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
  154. package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
  155. package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
  156. package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
  157. package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
  158. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +21 -7
  159. package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
  160. package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
  161. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
  162. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  163. package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
  164. package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
  165. package/dist/agent-src/skills/grafana/SKILL.md +5 -0
  166. package/dist/agent-src/skills/humanizer/SKILL.md +83 -66
  167. package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
  168. package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
  169. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +82 -37
  170. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
  171. package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
  172. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
  173. package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
  174. package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
  175. package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
  176. package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
  177. package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
  178. package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
  179. package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
  180. package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
  181. package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
  182. package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
  183. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  184. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
  185. package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
  186. package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
  187. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +7 -7
  188. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +3 -3
  189. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +4 -4
  190. package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +0 -1
  191. package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
  192. package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
  193. package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
  194. package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
  195. package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
  196. package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
  197. package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
  198. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +129 -120
  199. package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
  200. package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
  201. package/dist/agent-src/skills/project-analysis-core/SKILL.md +4 -4
  202. package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
  203. package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
  204. package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
  205. package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
  206. package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
  207. package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
  208. package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
  209. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +55 -19
  210. package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
  211. package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
  212. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
  213. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -5
  214. package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
  215. package/dist/agent-src/skills/refine-ticket/SKILL.md +20 -2
  216. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  217. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  218. package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
  219. package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -77
  220. package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
  221. package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +52 -0
  222. package/dist/agent-src/skills/security-audit/SKILL.md +26 -9
  223. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +38 -16
  224. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +14 -11
  225. package/dist/agent-src/skills/skill-writing/SKILL.md +9 -8
  226. package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
  227. package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
  228. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
  229. package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
  230. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +22 -8
  231. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +28 -2
  232. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
  233. package/dist/agent-src/skills/systematic-debugging/SKILL.md +22 -21
  234. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
  235. package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
  236. package/dist/agent-src/skills/terraform/SKILL.md +2 -2
  237. package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
  238. package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
  239. package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
  240. package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  241. package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
  242. package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
  243. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
  244. package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
  245. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
  246. package/dist/agent-src/skills/video-director/SKILL.md +7 -7
  247. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +3 -3
  248. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  249. package/dist/agent-src/templates/contexts/knowledge-pages.md +47 -45
  250. package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
  251. package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
  252. package/dist/agent-src/templates/contexts.md +1 -1
  253. package/dist/agent-src/templates/features.md +1 -1
  254. package/dist/agent-src/templates/roadmaps.md +125 -116
  255. package/dist/agent-src/templates/rule.md +2 -1
  256. package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  257. package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  258. package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
  259. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
  260. package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
  261. package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +22 -2
  262. package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +21 -2
  263. package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
  264. package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
  265. package/dist/agent-src/templates/scripts/work_engine/state.ts +21 -4
  266. package/dist/agent-src/user-types/README.md +8 -8
  267. package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
  268. package/dist/agent-src/user-types/metalworking-shop.md +35 -34
  269. package/dist/agent-src/user-types/truck-driver.md +22 -20
  270. package/dist/cli/initRouting.js +74 -11
  271. package/dist/cli/initRouting.js.map +1 -1
  272. package/dist/cli/main.js +14 -3
  273. package/dist/cli/main.js.map +1 -1
  274. package/dist/cli/python/workspace_roles.js +2 -2
  275. package/dist/cli/python/workspace_roles.js.map +1 -1
  276. package/dist/cli-delegate/chunk-4SV3XGFA.js +6910 -0
  277. package/dist/cli-delegate/chunk-736JCWLM.js +1104 -0
  278. package/dist/cli-delegate/chunk-7DSAMZFU.js +356 -0
  279. package/dist/cli-delegate/chunk-7HQ52DHU.js +74 -0
  280. package/dist/cli-delegate/chunk-BJGXZNPM.js +266 -0
  281. package/dist/cli-delegate/chunk-FTAISGDQ.js +117 -0
  282. package/dist/cli-delegate/chunk-GME3Q44L.js +82 -0
  283. package/dist/cli-delegate/chunk-GRRPEPRN.js +336 -0
  284. package/dist/cli-delegate/chunk-HJ6DAJHR.js +502 -0
  285. package/dist/cli-delegate/chunk-IR7P7JWA.js +872 -0
  286. package/dist/cli-delegate/chunk-J55WI3RR.js +47 -0
  287. package/dist/cli-delegate/chunk-MCJYCQPF.js +35 -0
  288. package/dist/cli-delegate/chunk-NDJLNC6Q.js +169 -0
  289. package/dist/cli-delegate/chunk-OMIVVCG2.js +26 -0
  290. package/dist/cli-delegate/chunk-OY53J6II.js +7336 -0
  291. package/dist/cli-delegate/chunk-RDGRHAAB.js +259 -0
  292. package/dist/cli-delegate/chunk-TFG57JJM.js +1969 -0
  293. package/dist/cli-delegate/chunk-XX6TOPD7.js +715 -0
  294. package/dist/cli-delegate/chunk-YMFO6FDN.js +10603 -0
  295. package/dist/cli-delegate/cmd_analyze_session.js +294 -0
  296. package/dist/cli-delegate/cmd_conformance.js +646 -0
  297. package/dist/cli-delegate/cmd_converge.js +326 -0
  298. package/dist/cli-delegate/cmd_doctor.js +144 -0
  299. package/dist/cli-delegate/cmd_explain.js +2508 -0
  300. package/dist/cli-delegate/cmd_export.js +296 -0
  301. package/dist/cli-delegate/cmd_fleet.js +332 -0
  302. package/dist/cli-delegate/cmd_memory_get.js +3878 -0
  303. package/dist/cli-delegate/cmd_migrate.js +11 -0
  304. package/dist/cli-delegate/cmd_preflight.js +270 -0
  305. package/dist/cli-delegate/cmd_prune.js +444 -0
  306. package/dist/cli-delegate/cmd_refresh.js +28 -0
  307. package/dist/cli-delegate/cmd_settings_check.js +574 -0
  308. package/dist/cli-delegate/cmd_settings_migrate.js +223 -0
  309. package/dist/cli-delegate/cmd_sync.js +264 -0
  310. package/dist/cli-delegate/cmd_uninstall.js +656 -0
  311. package/dist/cli-delegate/cmd_update.js +425 -0
  312. package/dist/cli-delegate/cmd_upgrade.js +444 -0
  313. package/dist/cli-delegate/cmd_validate.js +305 -0
  314. package/dist/cli-delegate/cmd_versions.js +370 -0
  315. package/dist/discovery/deprecation-report.md +1 -1
  316. package/dist/discovery/discovery-manifest.json +100 -67
  317. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  318. package/dist/discovery/discovery-manifest.summary.md +4 -4
  319. package/dist/discovery/orphan-report.md +1 -1
  320. package/dist/discovery/packs.json +16 -10
  321. package/dist/discovery/trust-report.md +2 -2
  322. package/dist/discovery/workspaces.json +7 -5
  323. package/dist/hooks/dispatch.js +186 -12
  324. package/dist/install/emit_host_rules_cli.js +2 -1
  325. package/dist/install/emit_host_rules_cli.js.map +1 -1
  326. package/dist/install/install.mjs +418 -378
  327. package/dist/install/rule_scope.js +5 -1
  328. package/dist/install/rule_scope.js.map +1 -1
  329. package/dist/install/toolDetection.js +40 -12
  330. package/dist/install/toolDetection.js.map +1 -1
  331. package/dist/install/wizard-plan.js +2 -2
  332. package/dist/install/wizard-plan.js.map +1 -1
  333. package/dist/mcp/registry-manifest.json +3 -3
  334. package/dist/mcp/server.json +2 -2
  335. package/dist/mcp/server.mjs +2194 -1003
  336. package/dist/router.json +1 -1
  337. package/dist/scripts/_lib/compile_time_toggles.js +48 -0
  338. package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
  339. package/dist/scripts/condense.js +234 -217
  340. package/dist/scripts/condense.js.map +1 -1
  341. package/dist/server/schemas/settings.js +4 -0
  342. package/dist/server/schemas/settings.js.map +1 -1
  343. package/dist/shared/userMd/utils.js +30 -0
  344. package/dist/shared/userMd/utils.js.map +1 -1
  345. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -1
  346. package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
  347. package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
  348. package/package.json +4 -2
  349. package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  350. package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  351. package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
  352. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
  353. package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
  354. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +22 -2
  355. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +21 -2
  356. package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
  357. package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
  358. package/src/agent-src/templates/scripts/work_engine/state.ts +21 -4
  359. package/src/config/agent-settings.template.yml +32 -2
  360. package/src/config/ci-local-parity.yml +142 -0
  361. package/src/config/discovery/packs.yml +7 -0
  362. package/src/config/evaluator-budgets.json +1 -1
  363. package/src/config/gate-coverage.yml +127 -0
  364. package/src/config/pack-size-budget.json +27 -0
  365. package/src/config/preamble-payload-budget.json +44 -0
  366. package/src/install/emit_host_rules_cli.ts +2 -1
  367. package/src/install/rule_scope.ts +5 -1
  368. package/src/install/toolDetection.ts +39 -8
  369. package/src/install/wizard-plan.ts +2 -2
  370. package/src/scripts/_cli/cmd_conformance.ts +2 -1
  371. package/src/scripts/_cli/cmd_converge.ts +2 -1
  372. package/src/scripts/_cli/cmd_doctor.ts +292 -15
  373. package/src/scripts/_cli/cmd_export.ts +2 -1
  374. package/src/scripts/_cli/cmd_fleet.ts +2 -1
  375. package/src/scripts/_cli/cmd_migrate.ts +2 -1
  376. package/src/scripts/_cli/cmd_preflight.ts +2 -1
  377. package/src/scripts/_cli/cmd_refresh.ts +2 -1
  378. package/src/scripts/_cli/cmd_update.ts +2 -1
  379. package/src/scripts/_cli/cmd_upgrade.ts +2 -1
  380. package/src/scripts/_cli/cmd_versions.ts +2 -1
  381. package/src/scripts/_cli/detection_report.ts +480 -0
  382. package/src/scripts/_dispatch.bash +52 -14
  383. package/src/scripts/_lib/agent_user_profile.ts +381 -0
  384. package/src/scripts/_lib/agents_overlay.ts +9 -0
  385. package/src/scripts/_lib/anchor_eval.ts +311 -0
  386. package/src/scripts/_lib/cc_transcript.ts +316 -0
  387. package/src/scripts/_lib/changelog_eras.ts +103 -9
  388. package/src/scripts/_lib/compile_time_toggles.ts +79 -0
  389. package/src/scripts/_lib/confusables.ts +101 -0
  390. package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
  391. package/src/scripts/_lib/environment_detector.ts +441 -0
  392. package/src/scripts/_lib/managed_agents_folder.ts +181 -0
  393. package/src/scripts/_lib/package_root.ts +72 -0
  394. package/src/scripts/_lib/payload_hash_drift.ts +126 -0
  395. package/src/scripts/_lib/preservation_migration.ts +291 -0
  396. package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
  397. package/src/scripts/_lib/scan_scope.ts +115 -0
  398. package/src/scripts/_lib/user_global_memory_audit.ts +187 -0
  399. package/src/scripts/_lib/user_global_observations.ts +830 -0
  400. package/src/scripts/_lib/user_global_revocations.ts +110 -0
  401. package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
  402. package/src/scripts/ai_council/blind_review.ts +0 -0
  403. package/src/scripts/ai_council/budget_guard.ts +90 -11
  404. package/src/scripts/ai_council/bundler.ts +2 -2
  405. package/src/scripts/ai_council/clients.ts +59 -3
  406. package/src/scripts/ai_council/config.ts +53 -7
  407. package/src/scripts/ai_council/modes.ts +68 -2
  408. package/src/scripts/ai_council/orchestrator.ts +54 -9
  409. package/src/scripts/ai_council/transport_resolver.ts +331 -0
  410. package/src/scripts/ai_team/team_dispatch.ts +17 -6
  411. package/src/scripts/anchor_eval_falsify.ts +198 -0
  412. package/src/scripts/anchor_scoring_run.ts +239 -0
  413. package/src/scripts/annotate_discovery.ts +1 -65
  414. package/src/scripts/bench_quality_run.ts +168 -4
  415. package/src/scripts/cache_realization_report.ts +782 -0
  416. package/src/scripts/check_artefact_count_messaging.ts +5 -1
  417. package/src/scripts/check_augment_description_cap.ts +15 -4
  418. package/src/scripts/check_bundle_path_leakage.ts +10 -4
  419. package/src/scripts/check_ci_local_parity.ts +317 -0
  420. package/src/scripts/check_condensation.ts +96 -191
  421. package/src/scripts/check_context_paths.ts +38 -9
  422. package/src/scripts/check_dependency_floors.ts +153 -0
  423. package/src/scripts/check_gate_coverage.ts +299 -0
  424. package/src/scripts/check_iron_law_prominence.ts +22 -1
  425. package/src/scripts/check_kernel_prefix_stability.ts +0 -0
  426. package/src/scripts/check_no_new_legacy_path.ts +16 -6
  427. package/src/scripts/check_no_roadmap_refs.ts +22 -9
  428. package/src/scripts/check_originality_freshness.ts +167 -0
  429. package/src/scripts/check_pack_size.ts +188 -0
  430. package/src/scripts/check_preamble_payload_budget.ts +130 -0
  431. package/src/scripts/check_proposal.ts +0 -0
  432. package/src/scripts/check_references.ts +0 -1
  433. package/src/scripts/check_safety_floor_untouched.ts +171 -24
  434. package/src/scripts/check_site_links.ts +62 -3
  435. package/src/scripts/ci_status.ts +0 -0
  436. package/src/scripts/cluster_near_miss_patterns.ts +0 -0
  437. package/src/scripts/code_graph/build.ts +0 -0
  438. package/src/scripts/command_suggester/types.ts +0 -0
  439. package/src/scripts/compile_router.ts +10 -14
  440. package/src/scripts/condense.sh +3 -4
  441. package/src/scripts/condense.ts +247 -228
  442. package/src/scripts/cost/track.mjs +168 -33
  443. package/src/scripts/cost_summary.ts +33 -1
  444. package/src/scripts/council_cli.ts +51 -5
  445. package/src/scripts/discovery_graph.ts +0 -0
  446. package/src/scripts/encoding_corpus.ts +500 -0
  447. package/src/scripts/encoding_corpus_report.ts +216 -0
  448. package/src/scripts/evaluator_umbrella.sh +34 -1
  449. package/src/scripts/generate_index.ts +19 -2
  450. package/src/scripts/install-hooks.sh +2 -2
  451. package/src/scripts/learning_sidecar.ts +0 -0
  452. package/src/scripts/lint_confusables.ts +10 -72
  453. package/src/scripts/lint_eval_fixture_citations.ts +113 -0
  454. package/src/scripts/lint_featured_skills.ts +0 -0
  455. package/src/scripts/lint_hidden_unicode.ts +208 -0
  456. package/src/scripts/lint_load_context.ts +17 -5
  457. package/src/scripts/lint_new_skill_gate.ts +9 -3
  458. package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
  459. package/src/scripts/lint_originality.ts +1 -1
  460. package/src/scripts/lint_skill_originality.ts +1 -1
  461. package/src/scripts/lint_ticket_buildable.ts +1 -1
  462. package/src/scripts/lint_ui_stack_bundles.ts +170 -0
  463. package/src/scripts/mcp_server/tools.ts +4 -4
  464. package/src/scripts/measure_scope_dedup.ts +224 -0
  465. package/src/scripts/memory_lookup.ts +0 -0
  466. package/src/scripts/mine_session.ts +98 -0
  467. package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
  468. package/src/scripts/preamble_byte_census.ts +574 -0
  469. package/src/scripts/probe_skill_registration.ts +2 -2
  470. package/src/scripts/redact_hook_capture.ts +13 -0
  471. package/src/scripts/release.ts +65 -10
  472. package/src/scripts/router_telemetry.ts +1 -1
  473. package/src/scripts/second_brain_retrieval.ts +14 -4
  474. package/src/scripts/skill_linter.ts +5 -0
  475. package/src/scripts/surface-tiers.yml +2 -0
  476. package/src/scripts/validate_pack_yaml.ts +0 -0
  477. package/src/server/schemas/settings.ts +8 -0
  478. package/src/shared/userMd/utils.ts +31 -0
  479. package/dist/agent-src/rules/telegraph-speak.md +0 -87
@@ -19,14 +19,14 @@ install:
19
19
 
20
20
  # song-to-script
21
21
 
22
- > Turn a song into `<project>/script.md` — `## Scene N` blocks whose
23
- > `duration:` values sum to the track length and whose cut points land
24
- > on real section boundaries. Consumed by
22
+ > Turn a song into `<project>/script.md` — a sequence of `## Scene N`
23
+ > blocks whose `duration:` values sum to the track length and whose cut
24
+ > points land on real section boundaries. Consumed by
25
25
  > [`/video:from-song`](../../commands/video/from-song.md), then handed
26
26
  > to [`scene-expander`](../scene-expander/SKILL.md) and
27
27
  > [`video-director`](../video-director/SKILL.md). Never invents timing —
28
- > every boundary comes from the audio analysis, and its source (adapter
29
- > vs. probe `method`) tells this skill how musical those boundaries are.
28
+ > every boundary comes from the audio probe, and the probe's `method`
29
+ > tells this skill how musical (or not) those boundaries actually are.
30
30
 
31
31
  ## When to use
32
32
 
@@ -49,25 +49,27 @@ Do NOT use when:
49
49
  configured — see
50
50
  [`audio-adapter-contract.md`](../../scripts/ai-video/lib/audio-adapter-contract.md)):
51
51
  `{bpm, beats, downbeats, sections:[{start,end,label,energy?}]}` —
52
- real musical structure. Beats/downbeats = candidate cut grid;
53
- section labels musical (`verse`, `chorus`, …).
52
+ real musical structure. Beats/downbeats become the candidate cut
53
+ grid; section labels are musical (`verse`, `chorus`, …).
54
54
  - **Audio probe** — JSON from
55
55
  [`scripts/ai-video/lib/probe-audio.sh`](../../scripts/ai-video/lib/probe-audio.sh):
56
56
  `{duration, method, warning?, sections:[{start,end,energy,label}]}`.
57
- - `method: silence` — boundaries are real quiet gaps; trust as cuts.
58
- - `method: rms` — energy-delta inflections; usable but coarse.
59
- - `method: interval` — **track is structurally flat** (brick-walled
60
- / sustained); sections fixed-interval, NOT musical. `method:
61
- interval` (or `warning` set) → script header states timing is
62
- interval-based; operator should pass `--scene-durations` for
63
- musical sync. Never present interval cuts as beat-synced.
64
- - **Model capabilities** — chosen video model's renderable envelope from
65
- the multiplexer manifest:
57
+ - `method: silence` — boundaries are real quiet gaps; trust them as cuts.
58
+ - `method: rms` — boundaries are energy-delta inflections; usable but
59
+ coarse.
60
+ - `method: interval` — **the track is structurally flat** (brick-walled
61
+ / sustained); sections are fixed-interval, NOT musical. When `method`
62
+ is `interval` (or `warning` is set), the emitted script header states
63
+ that timing is interval-based and the operator should pass
64
+ `--scene-durations` for musical sync. Never present interval cuts as
65
+ beat-synced.
66
+ - **Model capabilities** — the chosen video model's renderable envelope
67
+ from the multiplexer manifest:
66
68
  `scripts/ai-video/adapters/<provider>.sh capability --model <id>` →
67
69
  `{min_duration, max_duration, audio_sync, aspect, verified}`. Scene
68
- durations MUST land inside `[min_duration, max_duration]`;
69
- `verified: false` entries surfaced in the report, never trusted
70
- silently.
70
+ durations MUST land inside `[min_duration, max_duration]`; a
71
+ `verified: false` manifest entry is surfaced in the report, never
72
+ trusted silently.
71
73
  - **Mode** — `brief` (operator text is the creative source) or `auto`
72
74
  (infer mood + action from energy).
73
75
  - **Brief** (brief mode only) — free text: story, settings, look.
@@ -80,26 +82,28 @@ Do NOT use when:
80
82
  ### Step 1: Map sections → scenes (capability-clamped, beat-aligned)
81
83
 
82
84
  One `## Scene N` per analysis section. `duration:` = `end - start`
83
- (rounded to 0.5 s). Then **clamp the plan to the model's renderable
84
- envelope** — `min_duration` / `max_duration` from the manifest
85
- (`<provider>.sh capability --model <id>`), provider tuning as fallback
86
- for single-model adapters:
87
-
88
- - **Section < `min_duration`** → merge into neighbour. With beat data,
89
- merge toward the neighbour keeping the joined cut on a **downbeat**
90
- (else any beat); without, merge into the shorter neighbour.
91
- - **Section > `max_duration`** → split into sub-scenes. With beat data,
92
- every split point on the **nearest downbeat** (else beat) to the
93
- equal-division point — never mid-beat; without, split equally.
94
- - **No valid plan** (song shorter than `min_duration`; section cannot
95
- split onto any beat inside the envelope) → **halt and surface the
96
- conflict** with model id + violated bound — an unbuildable plan never
97
- reaches the renderer.
85
+ (rounded to 0.5 s). Then **clamp the plan to the chosen model's
86
+ renderable envelope** — read `min_duration` / `max_duration` from the
87
+ model-capabilities manifest (`<provider>.sh capability --model <id>`),
88
+ falling back to the provider tuning for single-model adapters:
89
+
90
+ - **Section shorter than `min_duration`** → merge into its neighbour.
91
+ With beat data, merge toward the neighbour that keeps the joined cut
92
+ on a **downbeat** (else any beat); without beat data, merge into the
93
+ shorter neighbour.
94
+ - **Section longer than `max_duration`** → split into sub-scenes. With
95
+ beat data, place every split point on the **nearest downbeat** (else
96
+ beat) to the equal-division point — never mid-beat; without beat
97
+ data, split equally.
98
+ - **No valid plan exists** (e.g. the whole song is shorter than
99
+ `min_duration`, or a section cannot be split onto any beat inside the
100
+ envelope) → **halt and surface the conflict** with the model id and
101
+ the violated bound — an unbuildable plan never reaches the renderer.
98
102
 
99
103
  Every emitted scene satisfies
100
- `min_duration ≤ duration ≤ max_duration`. Manifest entry
101
- `verified: false` → say so in the report — documented-best-effort, not
102
- a smoke-traced fact.
104
+ `min_duration ≤ duration ≤ max_duration`. When the manifest entry is
105
+ `verified: false`, say so in the report — the envelope is
106
+ documented-best-effort, not a smoke-traced fact.
103
107
 
104
108
  ### Step 2: Assign mood + action
105
109
 
@@ -108,29 +112,31 @@ First decide the **subject mode**:
108
112
  - **Character mode** — `character.json` exists: every scene's `action:`
109
113
  names the locked subject, never a fresh description.
110
114
  - **Style mode** — no `character.json`: scenes describe setting, palette,
111
- motion continuity (the recurring *look*), not a person. Valid abstract
112
- / landscape / visualiser path — do not invent a human subject.
115
+ and motion continuity (the recurring *look*), not a person. This is the
116
+ valid abstract / landscape / visualiser path — do not invent a human
117
+ subject to fill the slot.
113
118
 
114
119
  Then pick the **prompt source per segment — the modality switch**:
115
120
 
116
- - **Lyric segment** (vocal map places ≥1 transcribed line inside it) →
117
- scene prompt derives from the **lyric line itself**: its imagery,
118
- subjects, verbs seed `mood:` + `action:` (character mode: acted by the
119
- locked subject; style mode: rendered as setting / weather / palette —
120
- never an invented human). Line lands in `dialogue:` per Step 3.
121
- - **Instrumental segment** (no vocal-map line) → prompt derives from the
122
- **audio features**: section `label` + `energy` via the intent table
123
- below. Never recycle a lyric from another segment into an
124
- instrumental one.
121
+ - **Lyric segment** (the vocal map places ≥1 transcribed line inside
122
+ it) → the scene prompt derives from the **lyric line itself**: its
123
+ imagery, subjects, and verbs seed `mood:` + `action:` (in character
124
+ mode, acted by the locked subject; in style mode, rendered as
125
+ setting / weather / palette — never an invented human). The line
126
+ lands in `dialogue:` per Step 3.
127
+ - **Instrumental segment** (no vocal-map line) → the scene prompt
128
+ derives from the **audio features**: section `label` + `energy` via
129
+ the intent table below. Never recycle a lyric from another segment
130
+ into an instrumental one.
125
131
 
126
132
  Then assign per scene:
127
133
 
128
134
  - **Brief mode** — distribute the brief's beats across scenes in order;
129
- modality switch still applies (lyric segments quote the brief's
130
- matching beat through the lyric's lens); energy modulates pacing. Do
131
- not add story the brief did not state.
132
- - **Auto mode** — derive mood per section from `energy` + `label`
133
- (probe labels and musical adapter labels both map):
135
+ the modality switch still applies (lyric segments quote the brief's
136
+ matching beat through the lyric's lens), and energy modulates pacing.
137
+ Do not add story the brief did not state.
138
+ - **Auto mode** — derive mood per section from `energy` and `label`
139
+ (probe labels and musical labels from the analysis adapter both map):
134
140
 
135
141
  | label / energy | default scene intent |
136
142
  |---|---|
@@ -142,8 +148,8 @@ Then assign per scene:
142
148
  | outro / fade | pull-back, resolve, hold |
143
149
 
144
150
  **Energy → cut frequency + motion intensity.** Section energy (0..1,
145
- relative to track mean) drives cut rate AND camera intensity — chorus =
146
- faster cuts / more motion:
151
+ relative to the track mean) drives both how often the edit cuts and how
152
+ hard the camera moves — chorus = faster cuts / more motion:
147
153
 
148
154
  | energy vs. track mean | cut length target | `camera:` motion intensity |
149
155
  |---|---|---|
@@ -151,9 +157,10 @@ faster cuts / more motion:
151
157
  | within ±0.10 of mean (verse / build) | medium — one scene per section or per 4-bar phrase | steady dolly, slow tighten |
152
158
  | ≤ mean − 0.10 (breakdown / outro) | long — merge toward `max_duration`, hold shots | locked-off or slow drift |
153
159
 
154
- High-energy splitting and low-energy merging stay inside the Step 1
155
- envelope and land on downbeats — the energy table picks *where inside
156
- the envelope* a length falls, never outside it.
160
+ High-energy splitting and low-energy merging both stay inside the
161
+ Step 1 capability envelope and land on downbeats — the energy table
162
+ chooses *where inside the envelope* a scene length falls, never
163
+ outside it.
157
164
 
158
165
  ### Step 3: Vocal map — transcribe, never guess (vocal tracks)
159
166
 
@@ -163,10 +170,10 @@ BRIEF / STORY SKELETON OR A GUESSED STRETCH. NEVER PUT ONE SINGER'S
163
170
  LINE ON ANOTHER SINGER'S SCENE.
164
171
  ```
165
172
 
166
- Track has vocals and the run intends lip-sync → build a **vocal map**
167
- from the real audio before assigning any `dialogue:`:
173
+ When the track has vocals and the run intends lip-sync, build a
174
+ **vocal map** from the real audio before assigning any `dialogue:`:
168
175
 
169
- 1. **Transcribe** audio to timestamped lines. Adapter-first: a
176
+ 1. **Transcribe** the audio to timestamped lines. Adapter-first: a
170
177
  configured `lyrics` provider (e.g.
171
178
  [`audio-adapters/whisperx.sh`](../../scripts/ai-video/audio-adapters/whisperx.sh))
172
179
  returns word-level timestamps **plus per-line diarization labels**
@@ -175,34 +182,35 @@ from the real audio before assigning any `dialogue:`:
175
182
  echo '{"audio_path":"<vocal-stem-or-song>"}' \
176
183
  | scripts/ai-video/audio-adapters/whisperx.sh analyze
177
184
  ```
178
- No lyrics provider → OpenAI `/v1/audio/transcriptions`
185
+ No lyrics provider configured → OpenAI `/v1/audio/transcriptions`
179
186
  (`response_format=verbose_json` → `segments[].{start,end,text}`) or
180
- local whisper (no speaker labels — every line starts as `"?"`).
181
- Either way the transcript is the only source of lyric timing.
187
+ local whisper as before (no speaker labels — every line starts as
188
+ `"?"`). Either way the transcript is the only source of lyric timing.
182
189
  2. **Label the singer** per line — map diarization labels (or unlabeled
183
- lines) to cast names via the operator's who-sings reference (roster,
184
- brief naming who sings which line, or character cast): one label ↦
185
- one cast name, consistently. Genuinely ambiguous (label `"?"`,
186
- mixed-speaker line, no roster match) → keep `singer: "?"`, surface
187
- it — never guess a singer to fill the slot.
188
- 3. **Emit** `<project>/vocal-map.json`: `[{start, end, text, singer}]`,
189
- timing verbatim from the transcript.
190
- 4. **Validate** — run the ground-truth enforcer before the sign-off
191
- gate:
190
+ lines) to cast names via the operator's who-sings reference (a
191
+ roster, a brief that names who sings which line, or a character
192
+ cast): one diarization label ↦ one cast name, consistently. If a
193
+ line's singer is genuinely ambiguous (label `"?"`, mixed-speaker
194
+ line, or no roster match), keep `singer: "?"` and surface it —
195
+ never guess a singer to fill the slot.
196
+ 3. **Emit** `<project>/vocal-map.json`:
197
+ `[{start, end, text, singer}]`, timing verbatim from the transcript.
198
+ 4. **Validate** — run the ground-truth enforcer before handing the map
199
+ to the sign-off gate:
192
200
  ```bash
193
201
  scripts/ai-video/lib/validate-vocal-map.sh <project>/vocal-map.json \
194
202
  <project>/transcript.json --roster "<cast names>"
195
203
  ```
196
- Rejects re-timed lines, lyrics not in the transcript, missing singers
197
- (exit 7, specific line named). Red validator = halt — fix the map,
198
- never bypass.
199
- 5. **Place lines into the matching scene's** `dialogue:` block using
204
+ It rejects re-timed lines, lyrics not in the transcript, and missing
205
+ singers (exit 7, specific line named). A red validator is a halt —
206
+ fix the map, never bypass.
207
+ 5. **Place lines into the matching scene's** `dialogue:` block using the
200
208
  transcript timing, tagged with the singer (`singer: "<line>"`). A
201
- scene's lip-sync subject MUST be the line's labelled singer; a `"?"`
202
- line gets NO lip-sync scene until the operator resolves it.
209
+ scene's lip-sync subject MUST be the line's labelled singer; a
210
+ `"?"` line gets NO lip-sync scene until the operator resolves it.
203
211
 
204
212
  No vocals / no transcript / no lip-sync intent → leave `dialogue:` empty;
205
- scene is performance / B-roll. **Never fabricate lyrics**, **never
213
+ the scene is performance / B-roll. **Never fabricate lyrics**, **never
206
214
  re-time a line off the brief**, and in style mode `dialogue:` stays empty
207
215
  (lip-sync needs a character subject). The `/video:from-song` sign-off
208
216
  gate (its Step 6) shows this map for approval before any render.
@@ -211,11 +219,11 @@ gate (its Step 6) shows this map for approval before any render.
211
219
 
212
220
  Write `<project>/script.md` (and `<project>/vocal-map.json` when the
213
221
  track has vocals). Report the delta, the section→scene map, **the probe
214
- `method`** (silence-derived, energy-derived, or interval-fallback), **and
215
- whether lyric timing is transcript-derived** (it must be — never
216
- brief-derived). Sum cannot be reconciled (e.g. provider max-duration
217
- forces more time than the song has) → **halt and surface the
218
- conflict** — do not pad silently.
222
+ `method`** (so the operator sees whether cuts are silence-derived,
223
+ energy-derived, or interval-fallback), **and whether lyric timing is
224
+ transcript-derived** (it must be — never brief-derived). If the sum
225
+ cannot be reconciled (e.g. provider max-duration forces more time than
226
+ the song has), **halt and surface the conflict** — do not pad silently.
219
227
 
220
228
  ### Step 5: Validate before handoff
221
229
 
@@ -12,8 +12,8 @@ packs:
12
12
  # sql
13
13
 
14
14
 
15
- > **Grounded corpus:** tuning decisions (indexes, keyset pagination, N+1,
16
- > trigram search, lock contention) ground via the
15
+ > **Grounded corpus:** tuning decisions (indexes, keyset pagination,
16
+ > N+1, trigram search, lock contention) ground via the
17
17
  > [`database`](../database/SKILL.md) corpus — `./scripts-run
18
18
  > <skills-root>/corpus-grounding/scripts/ground search
19
19
  > --manifest <skills-root>/database/data/manifest.json "<symptom>"`.
@@ -147,9 +147,10 @@ column is missing.
147
147
  becomes input to this skill for escalation. Boundary prose lives
148
148
  in [`docs/guidelines/cross-role-handoff.md`](../../../docs/guidelines/cross-role-handoff.md).
149
149
  - The trade-off is purely technical (perf vs storage, sync vs async)
150
- — route to [`decision-record`](../decision-record/SKILL.md); one costly
151
- choice on ≥ 3 options with user-weighted criteria → its § Weighted-matrix
152
- mode (this skill answers WHO pays; that mode answers WHICH option wins).
150
+ — route to [`decision-record`](../decision-record/SKILL.md); if it is
151
+ one costly choice on ≥ 3 options with user-weighted criteria, its
152
+ § Weighted-matrix mode scores it (this skill answers WHO pays; that
153
+ mode answers WHICH option wins).
153
154
  - The dominant axis is risk, not stakeholder cost — route to
154
155
  [`risk-officer`](../risk-officer/SKILL.md).
155
156
  - The output is the locked decision artifact — hand off to
@@ -11,76 +11,94 @@ packs:
11
11
 
12
12
  # standards-from-config
13
13
 
14
- Evidence v2 **Class A** — configured convention. Coding standards are not *guessed*
15
- and not *observed* — **derived from the real tooling config**. The config *is* the
16
- standard; this skill produces a **pointer + digest**, never a flattened claim.
17
- High-trust, auto-refreshable, drift-proof.
14
+ Evidence v2 **Class A** — configured convention. The safe, on-thesis half of
15
+ self-building project context: coding standards are not *guessed* and not
16
+ *observed*, they are **derived from the real tooling config**. The config *is*
17
+ the standard; this skill produces a **pointer + digest**, never a flattened
18
+ claim. High-trust, auto-refreshable, drift-proof — because the truth lives in
19
+ the config file, and the card only points at it plus distils the 3–5 points an
20
+ agent needs most while writing.
18
21
 
19
22
  Definitions (Class A/B/C, trust tiers, the v1↔v2 isolation contract) live in
20
23
  [`evidence-discipline`](../../agent-src/contexts/execution/evidence-discipline.md);
21
- parent context mechanism is [`context-document`](../context-document/SKILL.md).
24
+ the parent context mechanism is [`context-document`](../context-document/SKILL.md).
22
25
 
23
26
  ## When to use
24
27
 
25
- - Before writing or reformatting code in an unfamiliar project — need enforced style.
26
- - Before writing a commit message / branch name — need project's commit convention.
28
+ - Before writing or reformatting code in an unfamiliar project and you need its
29
+ enforced style (indent, line length, quote style, import order, naming).
30
+ - Before writing a commit message / branch name and you need the project's
31
+ commit convention.
27
32
  - When orienting in a repo and a committed Class-A standards card would save the
28
33
  next agent from re-deriving the same config.
29
34
 
30
- Do NOT use for: a standard with **no** config backing (that's Class B or nothing —
31
- never invent a Class-A claim); concrete shape of code (that's v1 `source-discovery`,
32
- read fresh); project with no tooling config (record a negative fact).
35
+ Do NOT use for: a standard that has **no** config backing (that is a *guessed*
36
+ or *observed* convention — Class B, not A; never invent a Class-A claim); the
37
+ concrete shape of code (that is v1 `source-discovery`, read fresh); a project
38
+ with no tooling config at all (record a negative fact: "no enforced standard
39
+ found", do not fabricate one).
33
40
 
34
41
  ## Procedure
35
42
 
36
- 1. **Detect real config sources** (read fresh, never from memory). By ecosystem — inspect
37
- what actually exists:
38
- - cross-stack: `.editorconfig`, `CONTRIBUTING.md`, commitlint / `.gitmessage`, CI lint steps.
39
- - JS/TS: `eslint.config.js` / `.eslintrc*`, `.prettierrc*`, `biome.json`, `tsconfig.json`.
43
+ 1. **Detect the real config sources** (read fresh, never from memory). Common
44
+ sources, by ecosystem — inspect what actually exists:
45
+ - cross-stack: `.editorconfig`, `CONTRIBUTING.md`, commitlint /
46
+ `.gitmessage`, the lint/format steps in the CI workflow.
47
+ - JS/TS: `eslint.config.js` / `.eslintrc*`, `.prettierrc*`, `biome.json`,
48
+ `tsconfig.json` (strictness).
40
49
  - PHP: `pint.json`, `.php-cs-fixer.dist.php`, `phpcs.xml`.
41
- - Python: `pyproject.toml` / `ruff.toml` (`[tool.ruff]`, `[tool.black]`), `setup.cfg`.
50
+ - Python: `pyproject.toml` / `ruff.toml` (`[tool.ruff]`, `[tool.black]`),
51
+ `setup.cfg`.
42
52
  - Ruby: `.rubocop.yml`. Go: `gofmt`/`golangci.yml`.
43
- 2. **Derive as pointer + digest, never a flattened claim.** Each standard is one line:
44
- the **value**, the **config file it came from**, and the **scope**. Write
45
- `ruff.toml → line-length = 88 (scope: src/**/*.py)`, NOT "the project uses line
46
- length 88". The pointer makes the claim re-checkable.
47
- 3. **Preserve scope; surface conflicts, never flatten them.** Two configs or an inline
48
- override disagree → emit **two pointers with two values + their scopes** — never
49
- one ambiguous merged claim. A visible conflict is correct.
53
+ 2. **Derive as pointer + digest, never a flattened claim.** Each standard is one
54
+ line: the **value**, the **config file it came from**, and the **scope** it
55
+ applies to. Write `ruff.toml → line-length = 88 (scope: src/**/*.py)`, NOT
56
+ "the project uses line length 88". The pointer makes the claim re-checkable
57
+ and the next agent can open the config to confirm.
58
+ 3. **Preserve scope; surface conflicts, never flatten them.** If two configs (or
59
+ an inline / per-directory override) give two values, emit **two pointers with
60
+ two values + their scopes** — never one ambiguous merged claim. A visible
61
+ conflict is correct; a hidden flattened guess is the failure mode.
50
62
  4. **Stamp staleness.** Record each source's `config_mtime` (or content hash).
51
- Digest is stale when config file's mtime/hash changes → re-derive. No human gate
52
- needed (Class A is deterministic) — digest **regenerated from config, never
53
- hand-edited**.
54
- 5. **Persist** as a Class-A context card under `agents/settings/contexts/`. Class A is
55
- high-trust *because* config-derived — read for heuristics only, never bypasses a
56
- fresh structural read (v1↔v2 isolation contract).
63
+ The digest is stale when the config file's mtime/hash changes → re-derive. No
64
+ human gate is needed (Class A is deterministic) — the digest is **regenerated
65
+ from the config, never hand-edited**.
66
+ 5. **Persist** as a Class-A context card under `agents/settings/contexts/` (see
67
+ Output format). Class A is high-trust *because* config-derived — it is read
68
+ for heuristics only and never bypasses a fresh structural read (the v1↔v2
69
+ isolation contract in `evidence-discipline`).
57
70
 
58
71
  ## Output format
59
72
 
60
73
  A Class-A standards card MUST contain, in order:
61
74
 
62
- 1. **Frontmatter** `class: A`, `trust: high (config-derived)`, and a `sources:` list
63
- of `{path, config_mtime}` for every config the digest reads.
75
+ 1. **Frontmatter** `class: A`, `trust: high (config-derived)`, and a
76
+ `sources:` list of `{path, config_mtime}` for every config the digest reads.
64
77
  2. **A pointer+digest table** — one row per standard: `standard | value | source
65
- (file:key) | scope`. No standard appears without a `source` cell.
66
- 3. **A conflicts block** (may be empty) — any standard where ≥2 sources/scopes
67
- disagree, as two-or-more rows, never one merged value.
68
- 4. **A refresh line** — card is regenerated when any listed `config_mtime` changes;
69
- read for heuristics only (never a structural bypass).
78
+ (file:key) | scope`. No standard appears without a `source` cell pointing at
79
+ a real config file.
80
+ 3. **A conflicts block** (may be empty) listing any standard where ≥2 sources /
81
+ scopes disagree, as two-or-more rows, never one merged value.
82
+ 4. **A refresh line** stating the card is regenerated when any listed
83
+ `config_mtime` changes, and is read for heuristics only (never a structural
84
+ bypass).
70
85
 
71
86
  ## Gotcha
72
87
 
73
- - A standard with no config backing is **not** Class A — do not write it here; it is
74
- Class B (observed) or nothing. Class A never fabricates.
75
- - Do not flatten conflicting configs into one value — the conflict is the signal.
76
- - Card is a **regenerated digest**, not a hand-edited doc — editing the value by hand
77
- defeats drift-proofing.
88
+ - A standard with no config backing is **not** Class A — do not write it here;
89
+ it is a guessed/observed convention (Class B) or nothing. Class A never
90
+ fabricates.
91
+ - Do not flatten conflicting configs into one value — the conflict is the
92
+ signal; surface both pointers.
93
+ - The card is a **regenerated digest**, not a hand-edited doc — editing the
94
+ value by hand instead of the config defeats the drift-proofing.
78
95
  - A green pointer is not "the code obeys this" — it means the config declares it;
79
- whether a given file complies is a fresh read.
96
+ whether a given file complies is a fresh read, not this card's claim.
80
97
 
81
98
  ## Do NOT
82
99
 
83
- - Do NOT emit a coding standard as a believed fact — emit a pointer to the config.
100
+ - Do NOT emit a coding standard as a believed fact ("we use 4 spaces") — emit a
101
+ pointer to the config that declares it.
84
102
  - Do NOT merge conflicting configs into a single claim.
85
103
  - Do NOT hand-edit the digest value instead of the config.
86
104
  - Do NOT use a Class-A card to skip a fresh structural read (v1 stays in force).
@@ -89,5 +107,5 @@ A Class-A standards card MUST contain, in order:
89
107
  ## See also
90
108
 
91
109
  - [`evidence-discipline`](../../agent-src/contexts/execution/evidence-discipline.md) — Class A/B/C, trust tiers, the isolation contract.
92
- - [`context-document`](../context-document/SKILL.md) — parent context mechanism + storage locations.
110
+ - [`context-document`](../context-document/SKILL.md) — the parent context mechanism + storage locations.
93
111
  - [`source-discovery`](../source-discovery/SKILL.md) — v1 structural discovery (read fresh; Class A never bypasses it).
@@ -107,6 +107,20 @@ Rules:
107
107
  size floor) — it never re-interprets the task text on vibes.
108
108
  - Ambiguous shape → `none` (in-session), never a speculative spawn — the
109
109
  delegation-policy default.
110
+ - **Fork vs. named subagent — an ordering, never a default (road-to-cache-economy
111
+ Phase 4).** On a host that offers a fork primitive, decide fork-vs-named
112
+ ORTHOGONALLY to the form picked above: tool and scope fit is first-order,
113
+ cache inheritance is second-order. A fork is preferred only when the child
114
+ continues the parent's task under identical tools and constraints (it then
115
+ reads the parent's cache on its first request); a named subagent is
116
+ preferred the moment isolation, a different tool set, or nested dispatch is
117
+ needed — a fork cannot nest, and forking forces background mode, which
118
+ changes the tool set and invalidates the very prefix that motivated the
119
+ fork. `do-in-parallel`-shaped fan-out from one parent has this shape by
120
+ construction (a known, unfixable upstream cost — see
121
+ [`prompts/README.md`](prompts/README.md) § Prompt-cache discipline). NEVER
122
+ encode "always fork" — that was proposed and cut (council 2026-07-30):
123
+ the cache-sharing benefit cannot be predicted before the fork happens.
110
124
  - Record the outcome in the telemetry line (`dispatch_mode` field, mode id
111
125
  or `none`) so the gate's value is measurable inside the ADR-117
112
126
  prove-or-drop window.
@@ -213,13 +227,13 @@ cross-*vendor* skeptics. Invariants, skeptic prompt, reconciliation, prove-or-dr
213
227
  gate → [`subagent-modes-detail`](../../agent-src/contexts/execution/subagent-modes-detail.md) § Mode 9
214
228
  + [`prompts/adversarial-verification-council.md`](prompts/adversarial-verification-council.md)
215
229
 
216
- > **Disposition (2026-07-28, honest null).** Adversarial-council
217
- > finding-coverage benchmark resolved as published null (`docs/benchmark.md`)
218
- > — mode NOT sold as defect-detection capability. Stays default-off bound to
219
- > that null; removal at next major unless external evidence (consumer-filed
220
- > case where the panel surfaced a real defect the single verifier missed)
221
- > appears first. Remaining honest value: perspective diversity + decision
222
- > documentation, nothing more.
230
+ > **Disposition (2026-07-28, honest null).** The adversarial-council finding-
231
+ > coverage benchmark resolved as a published null (see `docs/benchmark.md`) —
232
+ > this mode is NOT sold as a defect-detection capability. It stays default-off
233
+ > bound to that null; scheduled for removal at the next major unless external
234
+ > evidence (a consumer-filed case where the panel surfaced a real defect the
235
+ > single verifier missed) appears first. Its remaining honest value is
236
+ > perspective diversity + decision documentation, nothing more.
223
237
  (ADR-122).
224
238
 
225
239
  ## Status taxonomy — every subagent return uses one envelope
@@ -355,6 +369,6 @@ Skip emit when `subagents.enabled: false` or `spawn_count == 0`
355
369
  | Stepwise plan with judge gates | Inline — see [`prompts/do-in-steps.md`](prompts/do-in-steps.md) |
356
370
  | Standalone judge on an existing diff | Inline — see judge prompt in [`prompts/do-and-judge.md`](prompts/do-and-judge.md) |
357
371
  | External / networked second opinion | [`ai-council`](../ai-council/SKILL.md) |
358
- | Cross-model review WITH repo access | [`/team`](../../commands/team.md) (collaborative; subagents are in-session same-weights) |
372
+ | Cross-model review WITH repo access | [`/team`](../../domains/meta/team/command.md) (collaborative; subagents are in-session same-weights) |
359
373
  | Verifying completeness | [`verify-before-complete`](../verify-before-complete/SKILL.md) |
360
374
  | What a subagent owns vs never owns | [`subagent-boundary`](../../../docs/contracts/subagent-boundary.md) |
@@ -26,7 +26,10 @@ validates against that schema.
26
26
  ## Prompt-cache discipline
27
27
 
28
28
  When dispatching sibling subagents (e.g. `do-in-parallel` with N independent
29
- slices), **reuse a stable system-prompt prefix** across all siblings. Keep
29
+ slices), **reuse a stable dispatch-prompt prefix** across all siblings. On
30
+ this host the **system prompt comes from the agent definition**, not from
31
+ anything the orchestrator writes — the dispatch prompt (the templated user
32
+ message below) is the one prefix the orchestrator actually controls. Keep
30
33
  task-invariant text (role declaration, constraints, status enum, return-envelope
31
34
  instruction) in the prefix; put only the slice-specific `TASK:` and
32
35
  `CONTEXT FILES:` in the variable section. This maximises host-side prompt-cache
@@ -43,7 +46,30 @@ instead of a read, and the prefix must be re-hit within the **5-minute TTL**, so
43
46
  dispatch siblings promptly rather than trickling them. This is why the win is
44
47
  real for **fan-out** (many siblings, one prefix) and marginal for one-shot
45
48
  dispatch. Verify a cohort is actually reading, not re-writing, by checking
46
- `usage.cache_read_input_tokens > 0` on the 2nd+ sibling.
49
+ `usage.cache_read_input_tokens > 0` on the 2nd+ sibling. Measured effect
50
+ (anthropics/claude-code#74318): same-type sibling prefix hits reach **85%**
51
+ within a 5-minute window vs **45%** for a mismatched or trickled cohort.
52
+
53
+ **Sibling-uniformity rules** (follow from cache partitioning — the cache key
54
+ includes model and tool set, and any mismatch fragments the cohort's shared
55
+ prefix into separate caches): dispatch a cohort with the **same model**, the
56
+ same `effort`, and the **same tool set** across every sibling, and fire them
57
+ **promptly** rather than trickling dispatches one at a time — a sibling
58
+ dispatched after the 5-minute window has already closed pays the full write
59
+ premium alone, gaining nothing from the cohort.
60
+
61
+ **Fork vs. named subagent — an ordering, not a default.** Tool and scope fit
62
+ is first-order; cache inheritance is second-order. Prefer a **fork** when the
63
+ child continues the parent's task under identical tools and constraints (a
64
+ fork inherits the parent's system prompt, tools, and conversation history
65
+ exactly, so its first request reads the parent's cache). Prefer a **named
66
+ subagent** when the child needs isolation, a different tool set, or nested
67
+ dispatch — a fork cannot nest, and forking forces background mode, which
68
+ changes the tool set and therefore invalidates the very prefix that
69
+ motivated the fork in the first place. Never default to "always fork": that
70
+ option was considered and cut ([`../SKILL.md`](../SKILL.md) § Form gate)
71
+ precisely because the cache-sharing benefit cannot be predicted before the
72
+ fork happens, and background mode can erase it outright.
47
73
 
48
74
  ## Loading
49
75
 
@@ -11,16 +11,16 @@ packs:
11
11
 
12
12
  # supply-chain-intake
13
13
 
14
- An LLM generates a plausible-sounding package name token-by-token with no lookup against a real registry. ~19.7% of AI-recommended packages don't exist (576k-sample study); the same fake name recurs across runs, so attackers pre-register it as malware — "slopsquatting". The `huggingface-cli` PoC (an empty package matching a common hallucination) drew 30k+ downloads. Endor Labs: only ~1 in 5 AI-recommended dependency versions is both real *and* safe. A dependency the agent named is untrusted until verified — never install it just because the model produced the name.
14
+ An LLM generates a plausible-sounding package name token-by-token with no lookup against a real registry. ~19.7% of AI-recommended packages do not exist (576k-sample study); the same fake name recurs across runs, so attackers pre-register it as malware — "slopsquatting". The `huggingface-cli` proof-of-concept (an empty package matching a common hallucination) drew 30k+ downloads. Endor Labs: only ~1 in 5 AI-recommended dependency versions is both real *and* safe. A dependency the agent named is untrusted until verified — never install it just because the model produced the name.
15
15
 
16
16
  ## When to use
17
17
 
18
18
  - About to add a dependency to `package.json` / `requirements.txt` / `go.mod` / `Cargo.toml` / `composer.json` / `pyproject.toml`, or run `npm/pnpm/yarn install`, `pip install`, `go get`, `cargo add`, `composer require`.
19
- - Reviewing an AI-authored diff touching a dependency manifest or lockfile.
20
- - An install command was suggested (especially `curl … | bash`).
19
+ - Reviewing an AI-authored diff that touches a dependency manifest or lockfile.
20
+ - An install command was suggested (especially a `curl … | bash` one-liner).
21
21
  - About to add or connect an **MCP server** (an `npx`/`uvx`-launched package or a remote endpoint) to the agent config (`.mcp.json` / equivalent) — an MCP server is a dependency plus a tool-grant, so it runs the intake gate too.
22
22
 
23
- Do NOT use when: no dependency is added and no manifest/lockfile is touched.
23
+ Do NOT use when: no dependency is being added and no manifest/lockfile is touched.
24
24
 
25
25
  ## The Iron Law
26
26
 
@@ -32,16 +32,16 @@ PIN IT, LOCK IT, CVE-SCAN IT. NEVER PIPE A REMOTE SCRIPT STRAIGHT TO A SHELL.
32
32
 
33
33
  ## Procedure — intake gate (run in order before adding a dependency)
34
34
 
35
- 1. **Existence** — confirm the exact string resolves on the real registry, published before your session, with real usage:
35
+ 1. **Existence** — confirm the exact string resolves on the real registry, published before your session and with real usage:
36
36
  ```bash
37
37
  npm view <pkg> version # non-zero exit = does not exist (hallucination)
38
38
  pip index versions <pkg> # or: pip install <pkg>== to list
39
39
  go list -m <module>@latest
40
40
  cargo search <crate>
41
41
  ```
42
- Non-existent, brand-new (days old), or near-zero-download → **stop**, treat as hallucination/slopsquat.
43
- 2. **Typo-adjacency** — name within 1–2 chars of a far-more-popular package (`python-dateutil` vs `dateutil`, `lodahs` vs `lodash`)? Probably want the popular one — confirm before installing.
44
- 3. **Version safety** — the model's pin may predate a CVE fix (training-cutoff reintroduction). Take the current patched release, then scan:
42
+ Non-existent, brand-new (published days ago), or near-zero-download → **stop**, treat as hallucination/slopsquat.
43
+ 2. **Typo-adjacency** — is the name within 1–2 chars of a far-more-popular package (`python-dateutil` vs `dateutil`, `lodahs` vs `lodash`)? If so, you probably want the popular one — confirm before installing.
44
+ 3. **Version safety** — the model's version pin may predate a CVE fix (training-cutoff reintroduction). Take the current patched release, then scan:
45
45
  ```bash
46
46
  npm audit # block on high/critical
47
47
  pip-audit
@@ -51,7 +51,7 @@ PIN IT, LOCK IT, CVE-SCAN IT. NEVER PIPE A REMOTE SCRIPT STRAIGHT TO A SHELL.
51
51
  ```bash
52
52
  npm install --save-exact <pkg> && git add package-lock.json
53
53
  ```
54
- 5. **License** — confirm compatible with the project's declared license before it lands.
54
+ 5. **License** — confirm the license is compatible with the project's declared license before it lands.
55
55
  6. **No pipe-to-shell** — never `curl … | bash` an install; download → inspect → execute over pinned HTTPS, or surface it to the user for confirmation.
56
56
 
57
57
  ## MCP-server intake — the dependency gate plus two extra checks
@@ -76,20 +76,20 @@ rg -n 'curl[^|]*\|\s*(bash|sh)|wget[^|]*\|\s*(bash|sh)' .
76
76
 
77
77
  ## Output format
78
78
 
79
- 1. Per new dependency: name, resolved registry version, publish date / usage signal, and the existence-check command output (`npm view … → 4.17.21`) — proving it real.
79
+ 1. Per new dependency: name, resolved registry version, publish date / usage signal, and the existence-check command output (`npm view … → 4.17.21`) — proving it is real.
80
80
  2. The lockfile diff staged, and the `audit` / `osv-scanner` result (`0 high/critical`, or the finding + resolution).
81
- 3. For any suggested install command, confirmation it isn't `curl|bash` and the source is pinned HTTPS.
81
+ 3. For any install command suggested, confirmation it is not `curl|bash` and the source is pinned HTTPS.
82
82
 
83
83
  ## Gotcha
84
84
 
85
- - Hallucinated names are *repeatable* — re-prompting the same model yields the same fake name, so "it looked confident / consistent" isn't evidence it exists. Only the registry is.
85
+ - Hallucinated names are *repeatable* — re-prompting the same model yields the same fake name, so "it looked confident / consistent" is not evidence it exists. Only the registry is.
86
86
  - Short, "obvious" variants (`X-cli`, `X-client`, `X-sdk`) are the prime hallucination shape — verify these hardest.
87
87
  - A package that exists but was published this week with 12 downloads is a slopsquat candidate, not a safe dep — weigh age + usage, not just existence.
88
88
  - Lockfile integrity is part of the threat model: an unhashed or floating entry can pull a freshly-poisoned release even when a lockfile is "present".
89
89
 
90
90
  ## Do NOT
91
91
 
92
- - Do NOT run an install command for a package you haven't existence-checked this session.
92
+ - Do NOT run an install command for a package you have not existence-checked this session.
93
93
  - Do NOT accept the model's version pin as authoritative — re-check against current CVEs.
94
94
  - Do NOT commit a manifest change without its lockfile.
95
95
  - Do NOT pipe a fetched script into an interpreter.