@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,9 +19,10 @@ packs:
19
19
  > **Grounded corpus (Tier-1 consultation):** the threat corpus's
20
20
  > `authorization` + `tenancy` rows (IDOR, mass-assignment escalation,
21
21
  > unscoped queries, sealed job context — each with negative tests) come
22
- > from `./scripts-run <skills-root>/corpus-grounding/scripts/ground ground --manifest
23
- > <skills-root>/threat-modeling/data/manifest.json "<check under review>"`.
24
- > Cite corpus rows in findings; surface the evidence gap when no row.
22
+ > from `./scripts-run <skills-root>/corpus-grounding/scripts/ground ground
23
+ > --manifest <skills-root>/threat-modeling/data/manifest.json "<the check
24
+ > being reviewed>"`. Cite corpus rows in findings instead of restating from
25
+ > memory; surface the evidence gap when the corpus has no row.
25
26
 
26
27
  > You are a reviewer specialized in **end-to-end authorization enforcement**.
27
28
  > Your only job is to walk a request path from entry to response and confirm
@@ -95,13 +96,13 @@ file:line and a specific actor who can reach the gap.
95
96
  ## Broken-access-control depth
96
97
 
97
98
  Depth for the [`broken-access-control`](../../rules/broken-access-control.md)
98
- rule (migrated per P4 of `road-to-kernel-and-router.md`); the Iron Law and the
99
- three negative tests stay in the rule.
99
+ rule (migrated here per P4 of `road-to-kernel-and-router.md`); the Iron Law and
100
+ the three negative tests stay in the rule.
100
101
 
101
102
  Why this class dominates: the single most common — and most damaging — failure
102
103
  in real systems and in AI-written code is that you log in as one user and see
103
104
  another user's data. The login check passes, so the endpoint *feels* protected;
104
- the per-object ownership/tenant check is the separate line devs and AI omit —
105
+ the per-object ownership/tenant check is a separate line that devs and AI omit —
105
106
  especially when the object id comes straight from the request. Broken Access
106
107
  Control is OWASP Web #1 (A01:2021) and API #1 (BOLA/IDOR), trivially
107
108
  scriptable, and a recurring real-world breach class — e.g. First American
@@ -109,31 +110,31 @@ Financial (885M documents exposed via sequential ids with no ownership check).
109
110
 
110
111
  ### Non-optional controls (every data-returning surface)
111
112
 
112
- - **Server-derived principal.** Ownership/tenant derived from the session/token, **never** from a request header/param/body the caller controls. A matching id in the request is not authorization.
113
+ - **Server-derived principal.** Ownership/tenant is derived from the session/token, **never** from a request header/param/body the caller controls. A matching id in the request is not authorization.
113
114
  - **Ownership/tenant check on every request id** before returning data. `findById(params.id)` with no `where owner/tenant = currentPrincipal` is the canonical bug.
114
- - **Tenant-scoped by construction.** Every query on a tenant table carries the tenant predicate; prefer a base scope that injects it so a forgotten clause can't leak. (DSGVO: Mandantentrennung / Trennungskontrolle is a required TOM — a missing `tenant_id` filter is a compliance failure, not just a bug.)
115
- - **Response minimization.** Return only entitled fields — no `SELECT *` / full-object serialization leaking PII "because the model has it" (Art. 25(2)).
115
+ - **Tenant-scoped by construction.** Every query on a tenant table carries the tenant predicate; prefer a base scope that injects it so a forgotten clause can't leak. (German DSGVO: Mandantentrennung / Trennungskontrolle is a required TOM — a missing `tenant_id` filter is a compliance failure, not just a bug.)
116
+ - **Response minimization.** Return only the fields the caller is entitled to — no `SELECT *` / full-object serialization leaking PII "because the model has it" (Art. 25(2) by default).
116
117
  - **Property-level authz (BOPLA / mass assignment).** Reject `role` / `user_id` / `tenant_id` / `is_admin` from the request body; explicit field allow-list, never whole-body binding.
117
118
  - **Role/field-level output filtering (vertical BOPLA).** *Which* fields a principal receives depends on role + business rules — a driver role must not receive `price`; an office role must not receive the boss's `offer`. Serialize via a **role-scoped output DTO**, never the raw model / `to_json()`; sensitive fields (`price`/`cost`/`margin`/`salary`/`discount`/`offer`/internal notes) default-deny per role.
118
119
  - **No guessable public ids** on sensitive resources — UUID/ULID, not sequential integers (turns one bug into full-DB enumeration).
119
120
 
120
121
  ### Role-based field-level access — both directions (vertical BOPLA + BFLA)
121
122
 
122
- Object-ownership (above) is *horizontal* (may this principal touch this record). This is *vertical*: which **fields** and which **functions** a role may reach — the maintainer's case (driver ≠ price, office worker ≠ boss's offer). Depends on role + business rules, and **the server is the only boundary** — the frontend hiding a field does not protect it: the raw JSON on the wire is readable via `curl`/DevTools/a proxy (3Fun leak: a privacy toggle filtered only in the app; the server returned every user's location to a direct query).
123
+ Object-ownership (above) is *horizontal* (may this principal touch this record). This is *vertical*: which **fields** and which **functions** a role may reach — the maintainer's case (driver ≠ price, office worker ≠ boss's offer). It depends on role + business rules, and **the server is the only boundary** — the frontend hiding a field does not protect it: the raw JSON on the wire is readable via `curl`/DevTools/a proxy (the 3Fun leak: a privacy toggle filtered only in the app; the server returned every user's location to a direct query).
123
124
 
124
125
  - **Read side (CWE-213 / Excessive Data Exposure).** Build the response from a **role-scoped output DTO** — never serialize the ORM model directly. Sensitive fields default-deny per role. A client `?fields=` selection is ergonomics, not authorization — intersect it server-side with the role's read-allowlist.
125
- - **Write side (CWE-915).** Bind input through a **role-scoped write-allowlist** — never the raw body. Read-allowed ≠ write-allowed: a role may *see* `status` but not *set* `status:"approved"`; two independent sets.
126
+ - **Write side (CWE-915).** Bind input through a **role-scoped write-allowlist** — never the raw body. Read-allowed ≠ write-allowed: a role may *see* `status` but not *set* `status:"approved"`; the two allowlists are independent sets.
126
127
  - **Function level (BFLA, OWASP API #5).** A role must not reach a function/verb reserved for a higher role. Gate **every mutating verb** (POST/PUT/PATCH/DELETE), deny-by-default — not just the GET you were asked about. The admin button being hidden is not a control.
127
128
  - **Nested / GraphQL.** Field-level checks propagate to nested selections; a low-role token selecting a restricted field gets null/error, not data.
128
- - **Negative tests, per (role × sensitive field), both directions:** lower-role token → the field is **absent from the raw response body** (assert the body, not the UI); lower-role setting it on input → rejected/ignored, **verified by re-reading the persisted record**; every privileged verb → 403 for lower roles (403/404 on sensitive object reads).
129
+ - **Negative tests, per (role × sensitive field), both directions:** lower-role token → the field is **absent from the raw response body** (assert the body, not the UI); lower-role setting the field on input → rejected/ignored, **verified by re-reading the persisted record**; every privileged verb → 403 for lower roles (403/404 on sensitive object reads).
129
130
 
130
131
  ### Defense-in-depth (so one miss can't leak)
131
132
 
132
- Stack ≥2 independent layers on sensitive data — query-level ownership scoping, a centralized default-deny policy layer (a route with no policy is denied, not silently open), and DB row-level security as the backstop for a forgotten `WHERE tenant_id`. (Merged with the pre-existing Gotcha bullet "Defense-in-depth so one miss can't leak" below — that bullet carries the concrete RLS configuration and is the stronger, operative statement.)
133
+ Stack ≥2 independent layers on sensitive data — query-level ownership scoping, a centralized default-deny policy layer (a route with no policy is denied, not silently open), and DB row-level security as the backstop for a forgotten `WHERE tenant_id`. (Merged with the pre-existing Gotcha bullet "Defense-in-depth so one miss can't leak" below, which carries the concrete RLS configuration — that bullet is the stronger, operative statement.)
133
134
 
134
135
  ### GDPR / DSGVO — data protection by design
135
136
 
136
- A cross-user data leak violates **Art. 5(1)(f)** (integrity & confidentiality — a principle → higher fine tier), **Art. 25** (by design/default: default-deny + least privilege + response minimization), and **Art. 32** — which also **mandates a process for regularly testing effectiveness** of these controls (untested authz is a direct Art. 32 gap; hence the three negative tests are non-optional). A discovered live exposure is a **notifiable breach** (Art. 33, 72 h from discovery) — surface as "notify + remediate", never a silent patch. Data-protection context, not legal advice → [`privacy-review`](../privacy-review/SKILL.md), `domain-safety-pii`.
137
+ A cross-user data leak violates **Art. 5(1)(f)** (integrity & confidentiality — a principle → higher fine tier), **Art. 25** (by design/default: default-deny + least privilege + response minimization), and **Art. 32** — which also **mandates a process for regularly testing the effectiveness** of these controls (untested authz is a direct Art. 32 gap; this is why the three negative tests are non-optional). A discovered live exposure is a **notifiable breach** (Art. 33, 72 h from discovery) — surface it as "notify + remediate", never a silent patch. This is data-protection context, not legal advice → [`privacy-review`](../privacy-review/SKILL.md), `domain-safety-pii`.
137
138
 
138
139
  ### Backstop greps (authoring-time)
139
140
 
@@ -259,4 +260,4 @@ Runtime confirmation (e.g. *"reproduce the cross-tenant read against staging"*,
259
260
  [`data-exposure-review`](../data-exposure-review/SKILL.md),
260
261
  [`judge-security-auditor`](../judge-security-auditor/SKILL.md),
261
262
  [`security`](../security/SKILL.md),
262
- [`security-audit`](../security-audit/SKILL.md) — sibling review / impl skills.
263
+ [`security-audit`](../security-audit/SKILL.md) — sibling review / implementation skills.
@@ -21,9 +21,9 @@ Do NOT use when:
21
21
 
22
22
  ## Procedure: Modify AWS infrastructure
23
23
 
24
- 1. Read the `.aws/` directory (or equivalent) for env configs and templates.
24
+ 1. Read the `.aws/` directory (or equivalent) for environment configs and templates.
25
25
  2. Read CI/CD workflows (e.g., `.github/workflows/`) for the deployment pipeline.
26
- 3. Check the env-specific vars files.
26
+ 3. Check the environment-specific vars files.
27
27
  4. **Read project-level overrides** — check `agents/overrides/skills/aws-infrastructure.md` for project-specific service names, prefixes, and infrastructure details.
28
28
 
29
29
  ## Architecture overview
@@ -43,7 +43,7 @@ Do NOT use when:
43
43
  | **ECS Fargate** | Container orchestration (no EC2 instances) |
44
44
  | **ECR** | Docker image registry |
45
45
  | **EFS** | Shared filesystem (private + public access points) |
46
- | **Secrets Manager** | `.env` file storage per env |
46
+ | **Secrets Manager** | `.env` file storage per environment |
47
47
  | **IAM Roles** | OIDC-based GitHub Actions authentication |
48
48
  | **VPC** | Networking (security groups, subnets) |
49
49
 
@@ -102,7 +102,7 @@ Template variables:
102
102
  ### Authentication
103
103
 
104
104
  - GitHub Actions uses **OIDC** (no long-lived AWS credentials).
105
- - Role ARN is per-env in the vars file.
105
+ - Role ARN is per-environment in the vars file.
106
106
  - `aws-actions/configure-aws-credentials` handles the OIDC exchange.
107
107
 
108
108
  ### Image tagging
@@ -144,7 +144,7 @@ See the `terraform` and `terragrunt` skills for general IaC conventions.
144
144
 
145
145
  ## Gotcha
146
146
 
147
- - Never hardcode AWS credentials — always use Secrets Manager or env variables.
147
+ - Never hardcode AWS credentials — always use Secrets Manager or environment variables.
148
148
  - ECS task definitions are immutable — you create new revisions, not edit existing ones.
149
149
  - gomplate templates use `{{ }}` which conflicts with other template engines — escape carefully.
150
150
 
@@ -130,7 +130,7 @@ current state on the next polish round.
130
130
 
131
131
  ## Taste Dials
132
132
 
133
- `DESIGN.md` `## Taste Dials` → honour: Variance → layout-family spread + asymmetry; Motion → animation budget + reduced-motion posture; Density → spacing scale + info-per-viewport. Absent → follow brief's inferred dials.
133
+ When `DESIGN.md` declares `## Taste Dials`, honour them: Variance → layout-family spread + asymmetry tolerance; Motion → animation budget + reduced-motion posture; Density → spacing scale + information-per-viewport. Absent → follow the design brief's inferred dials.
134
134
 
135
135
  ## Do NOT
136
136
 
@@ -154,18 +154,27 @@ This is especially important for:
154
154
  - Create a **failing test** that reproduces the bug.
155
155
  - Implement a **single, focused fix** — not multiple changes.
156
156
  - Consider side effects — does the fix affect other code paths?
157
- - Check if similar patterns exist elsewhere that need the same fix — run variant analysis below before closing.
157
+ - Check if similar patterns exist elsewhere that need the same fix — run the
158
+ variant analysis below before closing the bug.
158
159
 
159
160
  #### Variant analysis — one bug found, find its siblings
160
161
 
161
- Root cause confirmed → sweep for variants before closing:
162
-
163
- 1. **Extract the signature** — minimal code shape that makes the bug (e.g. "optional relation accessed without null check after `first()`").
164
- 2. **Sweep** — grep/`codebase-retrieval` for the shape, not the symptom: same API misuse, same copy-pasted block, same missing guard.
165
- 3. **Verify each hit through the false-positive gate** (§ 4 proactive mode) — matching shape whose inputs cannot reach the bad state = rejected candidate, not a variant.
166
- 4. **Report** — confirmed variants join the fix (same commit if within `minimal-safe-diff`'s remediation carve-out) or land as noted follow-up.
167
-
168
- Worked example: root cause `$order->customer->email` crashes when customer soft-deleted. Signature: `->customer->` after unguarded relation. Sweep finds 3 more sites; 2 are variants (same nullable relation), 1 rejected (eager-loaded with `whereHas`, cannot be null there).
162
+ Once the root cause is confirmed, sweep for variants before closing:
163
+
164
+ 1. **Extract the signature** — the minimal code shape that makes the bug
165
+ (e.g. "optional relation accessed without null check after `first()`").
166
+ 2. **Sweep** — grep/`codebase-retrieval` for the shape, not the symptom:
167
+ the same API misuse, the same copy-pasted block, the same missing guard.
168
+ 3. **Verify each hit through the false-positive gate** (§ 4 proactive mode)
169
+ — a matching shape whose inputs cannot reach the bad state is a rejected
170
+ candidate, not a variant.
171
+ 4. **Report** — confirmed variants join the fix (same commit if within
172
+ `minimal-safe-diff`'s remediation carve-out) or land as a noted follow-up.
173
+
174
+ Worked example: root cause `$order->customer->email` crashes when the
175
+ customer was soft-deleted. Signature: `->customer->` after an unguarded
176
+ relation. Sweep finds 3 more sites; 2 are variants (same nullable relation),
177
+ 1 is rejected (eager-loaded with `whereHas`, cannot be null there).
169
178
  - Add validation/monitoring (e.g. `MonitoringHelper::captureException()`) for data quality issues.
170
179
  - Verify the fix with the test from step 1.
171
180
 
@@ -200,15 +209,24 @@ For each code path, test these scenarios mentally:
200
209
 
201
210
  ### 4. False-positive gate (proactive mode)
202
211
 
203
- Before a candidate enters the report, restate as one falsifiable sentence: concrete input or state that triggers it + observable wrong behavior that follows. Candidate whose trigger you cannot name = **not a finding** — trace further or drop with one-line reason.
212
+ Before a candidate enters the report, restate it as one falsifiable sentence:
213
+ the concrete input or state that triggers it, and the observable wrong
214
+ behavior that follows. A candidate whose trigger you cannot name is **not a
215
+ finding** — trace further or drop it with a one-line reason.
204
216
 
205
- Route verification by severity: Low/Medium finding with traced trigger reports normally (**Standard**); High/Critical finding gets devil's-advocate pass first (**Deep**) — actively try to refute (guard clause upstream? framework default? unreachable input?), report only what survives. List killed candidates one-line under *Rejected candidates* so triage is auditable.
217
+ Route verification by severity: a Low/Medium finding with a traced trigger
218
+ reports normally (**Standard**); a High/Critical finding gets a
219
+ devil's-advocate pass first (**Deep**) — actively try to refute it (guard
220
+ clause upstream? framework default? unreachable input?) and report only what
221
+ survives. List killed candidates one-line under *Rejected candidates* so the
222
+ triage is auditable.
206
223
 
207
224
  ### 5. Output format (proactive mode)
208
225
 
209
226
  For each bug found: **Bug** → **Location** → **Severity** → **Root Cause** → **Trigger** → **Fix** → **Confidence**
210
227
 
211
- Close with **Rejected candidates** — one line per looks-broken-but-benign pattern the gate killed, with traced reason.
228
+ Close with **Rejected candidates** — one line per looks-broken-but-benign
229
+ pattern the gate killed, with the traced reason.
212
230
 
213
231
  ## Commands
214
232
 
@@ -2,7 +2,6 @@
2
2
  model_tier: inherit
3
3
  name: code-intelligence
4
4
  description: "Route codebase-structure questions (who calls X, where used, what imports, change-impact) to a code-graph first, grep fallback. Triggers 'who calls', 'where is this used', 'call graph'."
5
- source: package
6
5
  domain: engineering
7
6
  workspaces:
8
7
  - engineering
@@ -0,0 +1,52 @@
1
+ {
2
+ "skill": "code-intelligence",
3
+ "last_eval": "2026-07-30",
4
+ "description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger covers DE + EN phrasings for code-graph-answerable STRUCTURE questions — callers, references, import graph, symbol change-impact, how two symbols connect. Should-not-trigger covers the near-miss neighbours (blast-radius impact narrative, source-discovery structural evidence, the refactor executor, deep codebase audit, content/semantic grep) whose vocabulary overlaps.",
5
+ "queries": [
6
+ {
7
+ "q": "who calls PaymentService::refund? build me the call graph",
8
+ "trigger": true
9
+ },
10
+ {
11
+ "q": "where is this helper actually used across the repo?",
12
+ "trigger": true
13
+ },
14
+ {
15
+ "q": "what breaks if I change the signature of this method — show me every referencing symbol",
16
+ "trigger": true
17
+ },
18
+ {
19
+ "q": "wer ruft diese Funktion auf und was importiert sie?",
20
+ "trigger": true
21
+ },
22
+ {
23
+ "q": "how do these two classes connect — is there a path from the controller to the mailer?",
24
+ "trigger": true
25
+ },
26
+ {
27
+ "q": "before I edit this shared trait, list every call site, queue worker, event consumer and migration it touches with file:line",
28
+ "trigger": false,
29
+ "note": "planned-edit dependency enumeration across runtime consumers, not a symbol-relation query → blast-radius-analyzer"
30
+ },
31
+ {
32
+ "q": "what columns does the orders table actually have before I code against it?",
33
+ "trigger": false,
34
+ "note": "structural evidence from a real DB/API source, not a code-symbol relation → source-discovery"
35
+ },
36
+ {
37
+ "q": "rename this class everywhere and update all the callers",
38
+ "trigger": false,
39
+ "note": "executing the change, not answering a relationship question → code-refactoring"
40
+ },
41
+ {
42
+ "q": "do a deep multi-pass audit of this codebase and map its architecture",
43
+ "trigger": false,
44
+ "note": "whole-project audit orchestration, not a targeted symbol lookup → universal-project-analysis"
45
+ },
46
+ {
47
+ "q": "find every place we log the string 'password' in the repo",
48
+ "trigger": false,
49
+ "note": "content/text search, not a symbol relationship — plain grep is correct; the skill explicitly excludes content questions"
50
+ }
51
+ ]
52
+ }
@@ -26,17 +26,17 @@ Use this skill when:
26
26
 
27
27
  ### Mindset
28
28
 
29
- - **Be thorough but pragmatic** — catch real bugs, not style nitpicks tools handle.
30
- - **Understand intent first** — read PR description, linked ticket, commit messages before code.
31
- - **Check the full picture** — a service change may require test / migration / doc changes.
29
+ - **Be thorough but pragmatic** — catch real bugs, not style nitpicks that tools handle.
30
+ - **Understand intent first** — read the PR description, linked ticket, and commit messages before looking at code.
31
+ - **Check the full picture** — a change in a service may require changes in tests, migrations, docs.
32
32
  - **Assume good intent** — suggest improvements, don't criticize.
33
33
 
34
34
  ### Review order
35
35
 
36
36
  1. **Understand the goal** — what is this change trying to achieve?
37
- 2. **Detect the change-type + depth** — route to the right checklist, pick review depth (below).
38
- 3. **Architecture** — approach sound? Right layer? Right pattern?
39
- 4. **Correctness** — does it work? Edge cases? Error handling?
37
+ 2. **Detect the change-type + depth** — route to the right checklist and pick the review depth (below).
38
+ 3. **Architecture** — does the approach make sense? Right layer? Right pattern?
39
+ 4. **Correctness** — does it actually work? Edge cases? Error handling?
40
40
  5. **Quality** — types, naming, readability, DRY, SOLID?
41
41
  6. **Security** — input validation, authorization, injection?
42
42
  7. **Performance** — N+1 queries, missing indexes, unbounded queries?
@@ -72,11 +72,12 @@ output — surface it as-is. The two flows are mutually exclusive at the
72
72
  state-file level: one `.work-state.json` carries one envelope at a
73
73
  time, and the engine refuses to switch mid-flight.
74
74
 
75
- Unified `./agent-config migrate` sweeps a legacy
75
+ The unified `./agent-config migrate` command sweeps any legacy
76
76
  `.implement-ticket-state.json` file into the v1 `.work-state.json`
77
- schema as one cleanup step (see `docs/contracts/migrate-command.md`).
78
- Wrapper invokes it automatically when legacy file is detected;
79
- agents should not bypass the dispatcher.
77
+ schema as one of its cleanup steps (see
78
+ `docs/contracts/migrate-command.md`). The wrapper invokes it
79
+ automatically when the legacy file is detected; agents should not
80
+ bypass the dispatcher.
80
81
 
81
82
  ## GitHub API: Replying to PR review comments
82
83
 
@@ -158,7 +158,7 @@ Packages are published to a private Composer registry. Check the organization's
158
158
  ## Output format
159
159
 
160
160
  1. Package files following standard Composer structure
161
- 2. Updated composer.json with correct autoloading and deps
161
+ 2. Updated composer.json with correct autoloading and dependencies
162
162
  3. Service provider and config publishing (if Laravel package)
163
163
 
164
164
  ## Auto-trigger keywords
@@ -177,6 +177,6 @@ Packages are published to a private Composer registry. Check the organization's
177
177
 
178
178
  - Do NOT use `*` version constraints in library packages.
179
179
  - Do NOT require specific patch versions — use `^` or `||` ranges.
180
- - Do NOT include dev deps in `require` — use `require-dev`.
180
+ - Do NOT include dev dependencies in `require` — use `require-dev`.
181
181
  - Do NOT forget to run `composer validate` before publishing.
182
182
  - Do NOT publish without updating the changelog and tagging.
@@ -16,63 +16,65 @@ packs:
16
16
 
17
17
  # condense-memory
18
18
 
19
- > **Experimental.** Output-side telegraph dialect did not meet kill-criterion in [`internal/bench/reports/telegraph-v1.md`](../../../bench/reports/telegraph-v1.md) (`vs_terse` median −9.27 %). Input-side memory condensation is orthogonal use case: savings target always-loaded memory budget, not reply stream. Treat ship-criterion as **per-target measurement**, not v1 verdict.
19
+ <!-- cloud_safe: noop -->
20
+
21
+ > **Experimental.** Output-side telegraph dialect did not meet the kill-criterion in [`internal/bench/reports/telegraph-v1.md`](../../../bench/reports/telegraph-v1.md) (`vs_terse` median −9.27 %). Input-side memory condensation is an orthogonal use case: the savings target the always-loaded memory budget, not the reply stream. Treat ship-criterion as **per-target measurement**, not the v1 verdict.
20
22
 
21
23
  ## When to use
22
24
 
23
25
  Use when:
24
26
 
25
- - Always-loaded memory file (`AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `GEMINI.md`, `.windsurfrules`) close to or above host tool's char budget and maintainer wants to recover input-token headroom.
26
- - Consumer-shipped `templates/AGENTS.md` failing `agents-md-thin-root` cap and pointer-extraction options exhausted.
27
- - Maintainer asks to "condense this memory file" or "shrink AGENTS.md" or names input-side telegraph.
27
+ - An always-loaded memory file (`AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `GEMINI.md`, `.windsurfrules`) is close to or above the host tool's char budget and the maintainer wants to recover input-token headroom.
28
+ - A consumer-shipped `templates/AGENTS.md` is failing the `agents-md-thin-root` cap and the pointer-extraction options are exhausted.
29
+ - The maintainer asks to "condense this memory file" or "shrink AGENTS.md" or names input-side telegraph.
28
30
 
29
31
  ## Do NOT
30
32
 
31
- - Condense reply, commit message, PR body, ticket summary, or any deliverable written *for* human reader — those are carve-outs in [`telegraph-speak § Carve-outs`](../../rules/telegraph-speak.md) and stay verbatim.
32
- - Condense path matching sensitive-file denylist (`.env*`, `.netrc`, `credentials*`, `secrets*`, `id_rsa*`, `*.pem|key|p12|pfx|crt|cer|jks`, `.ssh/*`) — script refuses with `SensitivePathError` and so should you.
33
- - Condense generated file (`dist/agent-src/`, `.augment/`, `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`) — edit source in `src/` and regenerate via package's sync + generate-tools scripts (`scripts/condense.sh --sync` + `scripts/condense.ts --generate-tools`).
34
- - Hand-edit condensed memory file in place — run `--decondense` first; next condense pass refuses on body-hash drift (`CondensationRefused`).
35
- - Commit condensed file without committing matching `.original.md` backup — round-trip breaks otherwise.
33
+ - Condense a reply, commit message, PR body, ticket summary, or any deliverable written *for* a human reader — those are carve-outs in [`telegraph-speak § Carve-outs`](../../rules/telegraph-speak.md) and stay verbatim.
34
+ - Condense a path matching the sensitive-file denylist (`.env*`, `.netrc`, `credentials*`, `secrets*`, `id_rsa*`, `*.pem|key|p12|pfx|crt|cer|jks`, `.ssh/*`) — the script refuses with `SensitivePathError` and so should you.
35
+ - Condense a generated file (`dist/agent-src/`, `.augment/`, `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`) — edit the source in `src/` and regenerate via the package's sync + generate-tools scripts (`scripts/condense.sh --sync` + `scripts/condense.ts --generate-tools`).
36
+ - Hand-edit a condensed memory file in place — run `--decondense` first; the next condense pass refuses on body-hash drift (`CondensationRefused`).
37
+ - Commit the condensed file without committing the matching `.original.md` backup — round-trip breaks otherwise.
36
38
 
37
39
  ## Procedure
38
40
 
39
- 1. **Analyse target first.** Before any write, **inspect** target with `view` or `wc -l` to confirm it is always-loaded memory file (`AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `GEMINI.md`, `.windsurfrules`), not generated, and has prose paragraphs to condense (pointer-only Thin-Root file may net near-zero). Skip rest of procedure if any check fails.
40
- 2. **Check denylist gate.** Run `./scripts-run src/scripts/condense_memory <path> --check` — exit 0 = safe; exit 2 = denylist hit, stop and surface refusal.
41
- 3. **Record baseline.** `wc -c <path>` — capture pre-condensation char count for commit message.
42
- 4. **Condense.** `./scripts-run src/scripts/condense_memory <path>`. Script writes `<path>.original.md` (verbatim backup) and rewrites `<path>` with `original_sha256:` + `condensed_at:` frontmatter.
43
- 5. **Inspect diff.** Eyeball every Iron-Law fence, numbered-options block, code fence, backtick span, `❌`/`⚠️`/`✅` line, and frontmatter pair — all must be byte-identical. Body prose may have lost articles (`the`/`a`/`an`) and auxiliaries (`is`/`are`/`was`/`be`/`that`/`which`).
44
- 6. **Validate idempotency.** Re-run `./scripts-run src/scripts/condense_memory <path>` — clean re-run is no-op (body hash matches). Non-zero exit = stop, escalate.
45
- 7. **Commit both files together.** `<path>` and `<path>.original.md` ship as pair. Backup is rollback path; never commit one without other.
46
- 8. **Rollback path.** If readability fails review at step 5: `./scripts-run src/scripts/condense_memory <path> --decondense` restores backup and deletes `.original.md`.
41
+ 1. **Analyse the target first.** Before any write, **inspect** the target with `view` or `wc -l` to confirm it is an always-loaded memory file (`AGENTS.md`, `CLAUDE.md`, `.cursorrules`, `GEMINI.md`, `.windsurfrules`), is not generated, and has prose paragraphs to condense (a pointer-only Thin-Root file may net near-zero). Skip the rest of the procedure if any check fails.
42
+ 2. **Check denylist gate.** Run `./scripts-run src/scripts/condense_memory <path> --check` — exit 0 = safe; exit 2 = denylist hit, stop and surface the refusal.
43
+ 3. **Record baseline.** `wc -c <path>` — capture pre-condensation char count for the commit message.
44
+ 4. **Condense.** `./scripts-run src/scripts/condense_memory <path>`. The script writes `<path>.original.md` (verbatim backup) and rewrites `<path>` with `original_sha256:` + `condensed_at:` frontmatter.
45
+ 5. **Inspect the diff.** Eyeball every Iron-Law fence, numbered-options block, code fence, backtick span, `❌`/`⚠️`/`✅` line, and frontmatter pair — all must be byte-identical. Body prose may have lost articles (`the`/`a`/`an`) and auxiliaries (`is`/`are`/`was`/`be`/`that`/`which`).
46
+ 6. **Validate idempotency.** Re-run `./scripts-run src/scripts/condense_memory <path>` — clean re-run is a no-op (body hash matches). Non-zero exit = stop, escalate.
47
+ 7. **Commit both files together.** `<path>` and `<path>.original.md` ship as a pair. The backup is the rollback path; never commit one without the other.
48
+ 8. **Rollback path.** If readability fails review at step 5: `./scripts-run src/scripts/condense_memory <path> --decondense` restores the backup and deletes `.original.md`.
47
49
 
48
50
  ## Output format
49
51
 
50
- Maintainer-facing report after invoking script MUST contain, in this order:
52
+ The maintainer-facing report after invoking the script MUST contain, in this order:
51
53
 
52
- 1. **Diff line** — pre/post `wc -c` as single line (`AGENTS.md: 2,891 → 2,453 chars (−15.1 %)`).
53
- 2. **Backup path** — full path of `.original.md` backup so maintainer can verify it landed on disk.
54
- 3. **Carve-out check** — one line confirming seven carve-out classes round-tripped (`carve-outs: 7 classes preserved · idempotent re-run: clean`).
55
- 4. **Exit-code surface** — on failure, surface verbatim exit code and exception name (`SensitivePathError → exit 2`, `CondensationRefused → exit 3`, `FileNotFoundError → exit 4`); do not paraphrase.
54
+ 1. **Diff line** — pre/post `wc -c` as a single line (`AGENTS.md: 2,891 → 2,453 chars (−15.1 %)`).
55
+ 2. **Backup path** — full path of the `.original.md` backup so the maintainer can verify it landed on disk.
56
+ 3. **Carve-out check** — one line confirming the seven carve-out classes round-tripped (`carve-outs: 7 classes preserved · idempotent re-run: clean`).
57
+ 4. **Exit-code surface** — on failure, surface the verbatim exit code and exception name (`SensitivePathError → exit 2`, `CondensationRefused → exit 3`, `FileNotFoundError → exit 4`); do not paraphrase.
56
58
 
57
- Do **not** narrate algorithm, grammar rules, or carve-out theory — rule and this skill document contract; output reports result.
59
+ Do **not** narrate the algorithm, the grammar rules, or the carve-out theory — the rule and this skill document the contract; the output reports the result.
58
60
 
59
61
  ## Carve-outs — byte-for-byte preserved
60
62
 
61
- Mirrors seven carve-out classes in [`telegraph-speak`](../../rules/telegraph-speak.md). Condensation engine in [`src/scripts/condense_memory.ts`](../../../src/scripts/condense_memory.ts) preserves:
63
+ Mirrors the seven carve-out classes in [`telegraph-speak`](../../rules/telegraph-speak.md). The condensation engine in [`src/scripts/condense_memory.ts`](../../../src/scripts/condense_memory.ts) preserves:
62
64
 
63
65
  1. **Triple-backtick fences** — any language, any depth.
64
- 2. **Numbered-options lines** — `^>?\s*\d+\.\s` plus `**Recommendation:**` / `**Empfehlung:**` label.
66
+ 2. **Numbered-options lines** — `^>?\s*\d+\.\s` plus the `**Recommendation:**` / `**Empfehlung:**` label.
65
67
  3. **Backtick spans** — file paths, command names, identifiers inside body prose.
66
68
  4. **Status / error markers** — lines starting with `❌`, `⚠️`, `✅`.
67
69
  5. **Iron-Law ALL-CAPS lines** — `^[A-Z][A-Z0-9 ,.\-_/']{3,}$`.
68
- 6. **Frontmatter blocks** — `---` fence pairs at head of file.
70
+ 6. **Frontmatter blocks** — `---` fence pairs at the head of the file.
69
71
  7. **Mode markers** per [`role-mode-adherence`](../../rules/role-mode-adherence.md).
70
72
 
71
- Mangling any of these breaks Iron-Law surface host tool reads. Unit tests in `tests/scripts/condense_memory.test.ts` lock each carve-out class as regression case.
73
+ Mangling any of these breaks the Iron-Law surface the host tool reads. The unit tests in `tests/scripts/condense_memory.test.ts` lock each carve-out class as a regression case.
72
74
 
73
75
  ## Idempotency contract — Step 9 guard
74
76
 
75
- Script is **idempotent on clean re-runs**: running it twice on same target is no-op because body hash matches recondensed hash. Script **refuses** on **body drift**:
77
+ The script is **idempotent on clean re-runs**: running it twice on the same target is a no-op because the body hash matches the recondensed hash. The script **refuses** on **body drift**:
76
78
 
77
79
  | State | Outcome |
78
80
  |---|---|
@@ -80,11 +82,11 @@ Script is **idempotent on clean re-runs**: running it twice on same target is no
80
82
  | SHA marker present, body re-condenses to same hash | No-op (return target unchanged). |
81
83
  | SHA marker present, body hash diverged | **Refuse** with `CondensationRefused` exit 3. |
82
84
 
83
- If you need to edit condensed memory file, run `--decondense` first, edit restored `.original.md` content, then re-run condenseor. Never hand-edit condensed body — next CI run will either silently corrupt your edit (if it happens to re-condense to same shape) or hard-fail next condense pass.
85
+ If you need to edit a condensed memory file, run `--decondense` first, edit the restored `.original.md` content, then re-run the condenseor. Never hand-edit the condensed body — the next CI run will either silently corrupt your edit (if it happens to re-condense to the same shape) or hard-fail the next condense pass.
84
86
 
85
87
  ## Sensitive-path gate
86
88
 
87
- Every read path passes through [`src/scripts/validate_safe_paths.ts`](../../../src/scripts/validate_safe_paths.ts) `assert_safe()` before bytes leave disk. Gate is security floor for Phase 2 (input-side condensation) per `step-16-telegraph-substance.md` Phase 0; rollback of gate is rollback of this skill.
89
+ Every read path passes through [`src/scripts/validate_safe_paths.ts`](../../../src/scripts/validate_safe_paths.ts) `assert_safe()` before bytes leave disk. The gate is the security floor for Phase 2 (input-side condensation) per `step-16-telegraph-substance.md` Phase 0; rollback of the gate is rollback of this skill.
88
90
 
89
91
  CLI exit codes:
90
92
 
@@ -95,30 +97,30 @@ CLI exit codes:
95
97
 
96
98
  ## Gotchas
97
99
 
98
- - **Body-hash drift after manual edit** — hand-editing condensed body breaks `original_sha256:` invariant. Next condense pass refuses with `CondensationRefused` (exit 3). Recovery: `--decondense`, edit restored body, re-condense.
99
- - **`.original.md` backup missing on `--decondense`** — exit 4 (`FileNotFoundError`). Either someone deleted backup or `--decondense` already ran. Restore from git history; never regenerate backup by hand (regenerated content would not be byte-identical).
100
- - **Denylist false positive** — sensitive-looking filename outside denylist surface (project-specific naming) will still pass `assert_safe()`. Denylist necessary but not sufficient; maintainer responsible for never feeding secrets to condenseor.
101
- - **Frontmatter ordering with existing keys** — if target already has frontmatter, condenseor preserves existing keys, drops any prior `original_sha256:` / `condensed_at:` entries, and appends new pair. Other agents reading file should treat SHA + timestamp pair as canonical condensation marker, not file size.
102
- - **Negative savings on pointer-heavy files** — `templates/AGENTS.md` already following Thin-Root (≥ 40 % pointers, ≥ 60-char *why*-clauses) has little prose left to drop; condensation may net near-zero or even add bytes via frontmatter. Run [`agents-md-thin-root`](../agents-md-thin-root/SKILL.md) first to maximise pointer share, then measure whether this skill still pays.
103
- - **Generated-tree drift** — condensing `.agent-src.uncondensed/templates/AGENTS.md` does NOT propagate to `.augment/`, `.claude/`, etc. until package's sync + generate-tools scripts run (`scripts/condense.sh --sync` + `scripts/condense.ts --generate-tools`). Always regenerate after condensing templated file.
100
+ - **Body-hash drift after manual edit** — hand-editing the condensed body breaks the `original_sha256:` invariant. The next condense pass refuses with `CondensationRefused` (exit 3). Recovery: `--decondense`, edit the restored body, re-condense.
101
+ - **`.original.md` backup missing on `--decondense`** — exit 4 (`FileNotFoundError`). Either someone deleted the backup or `--decondense` already ran. Restore from git history; never regenerate the backup by hand (the regenerated content would not be byte-identical).
102
+ - **Denylist false positive** — a sensitive-looking filename outside the denylist surface (project-specific naming) will still pass `assert_safe()`. The denylist is necessary but not sufficient; the maintainer is responsible for never feeding secrets to the condenseor.
103
+ - **Frontmatter ordering with existing keys** — if the target already has frontmatter, the condenseor preserves existing keys, drops any prior `original_sha256:` / `condensed_at:` entries, and appends the new pair. Other agents reading the file should treat the SHA + timestamp pair as the canonical condensation marker, not the file size.
104
+ - **Negative savings on pointer-heavy files** — a `templates/AGENTS.md` that already follows Thin-Root (≥ 40 % pointers, ≥ 60-char *why*-clauses) has little prose left to drop; condensation may net near-zero or even add bytes via frontmatter. Run [`agents-md-thin-root`](../agents-md-thin-root/SKILL.md) first to maximise pointer share, then measure whether this skill still pays.
105
+ - **Generated-tree drift** — condensing `.agent-src.uncondensed/templates/AGENTS.md` does NOT propagate to `.augment/`, `.claude/`, etc. until the package's sync + generate-tools scripts run (`scripts/condense.sh --sync` + `scripts/condense.ts --generate-tools`). Always regenerate after condensing a templated file.
104
106
 
105
107
  ## Measurement — when to condense
106
108
 
107
- No published `telegraph-v2` baseline for input-side savings yet (Step 11 of `step-16-telegraph-substance.md` ships that). Until then, maintainer judges per-target whether condensation pays its readability cost. Suggested workflow:
109
+ There is no published `telegraph-v2` baseline for input-side savings yet (Step 11 of `step-16-telegraph-substance.md` ships that). Until then, the maintainer judges per-target whether the condensation pays its readability cost. Suggested workflow:
108
110
 
109
111
  1. `wc -c <path>` before — record baseline char count.
110
112
  2. `./scripts-run src/scripts/condense_memory <path>` — condense + back up.
111
113
  3. `wc -c <path>` after — record post-condensation char count.
112
- 4. Eyeball diff: does prose stay legible? Are all Iron-Law fences intact?
114
+ 4. Eyeball the diff: does the prose stay legible? Are all Iron-Law fences intact?
113
115
  5. If yes → commit both `<path>` and `<path>.original.md`. If no → `--decondense`.
114
116
 
115
- Future `telegraph-v2.md` will tabulate realised input-token saving against `agents-md-thin-root` 40 % pointer-ratio constraint so maintainer has numerical floor.
117
+ A future `telegraph-v2.md` will tabulate the realised input-token saving against the `agents-md-thin-root` 40 % pointer-ratio constraint so the maintainer has a numerical floor.
116
118
 
117
119
  ## Cross-references
118
120
 
119
- - [`telegraph-speak`](../../rules/telegraph-speak.md) — runtime rule script mirrors for input-side targets; `telegraph.speak_scope` does **not** gate this script (input-side runs regardless).
121
+ - [`telegraph-speak`](../../rules/telegraph-speak.md) — runtime rule the script mirrors for input-side targets; `telegraph.speak_scope` does **not** gate this script (input-side runs regardless).
120
122
  - [`src/scripts/validate_safe_paths.ts`](../../../src/scripts/validate_safe_paths.ts) — Phase 0 gate; ported from upstream Telegraph `63a91ec`.
121
123
  - [`src/scripts/condense_memory.ts`](../../../src/scripts/condense_memory.ts) — implementation.
122
124
  - [`tests/scripts/condense_memory.test.ts`](../../../tests/scripts/condense_memory.test.ts) — regression locks for each carve-out + idempotency + denylist.
123
125
  - [`docs/contracts/condensation-default-kill-criterion.md`](../../../docs/contracts/condensation-default-kill-criterion.md) — v1 verdict (output-side; informs but does not gate this skill).
124
- - [`agents-md-thin-root`](../agents-md-thin-root/SKILL.md) — caps consumer-shipped `templates/AGENTS.md`; this skill is one tool to land under cap.
126
+ - [`agents-md-thin-root`](../agents-md-thin-root/SKILL.md) — caps the consumer-shipped `templates/AGENTS.md`; this skill is one tool to land under the cap.
@@ -70,9 +70,9 @@ agents/settings/contexts/ # Project-wide contexts
70
70
  | **Integration** | External API/system integration | `probaus-api.md` |
71
71
  | **Infrastructure** | DevOps or infrastructure concern | `queue-system.md` |
72
72
  | **Knowledge card** | Trust-tiered cache of *expensive* (remote) structural evidence — negative facts + pointers durable, positive structure a hypothesis | `lodash.md`, `stripe-api.md` |
73
- | **Standards card (Class A)** | Coding standards **derived from real tooling config** — pointer + digest, `trust: high (config-derived)`, auto-refreshed when config changes; never a flattened claim | `coding-standards.md` (points at `ruff.toml`, `.editorconfig`) |
74
- | **Lesson card (Class C)** | Learned lesson — `symptom` (fact) split from `hypothesis` (decaying theory), `trust: low`, subject-not-person, anti-calcification decay; promoted only via human gate (accumulation layer is eval-gated) | `agents/memory/curated/lessons/<slug>.md` |
75
- | **Knowledge page (typed)** | Team-shared, lifecycle-typed knowledge grown while working the project — episodic sessions, semantic concepts, procedures on the way to a skill, small decisions | `agents/knowledge/concepts/api-response-shape.md` |
73
+ | **Standards card (Class A)** | Coding standards **derived from real tooling config** — pointer + digest, `trust: high (config-derived)`, auto-refreshed when the config changes; never a flattened claim | `coding-standards.md` (points at `ruff.toml`, `.editorconfig`) |
74
+ | **Lesson card (Class C)** | A learned lesson — `symptom` (fact) split from `hypothesis` (decaying theory), `trust: low`, subject-not-person, anti-calcification decay; promoted only via the human gate (accumulation layer is eval-gated) | `agents/memory/curated/lessons/<slug>.md` |
75
+ | **Knowledge page (typed)** | Team-shared, lifecycle-typed knowledge that grows while working a project — episodic sessions, semantic concepts, procedures on their way to a skill, small decisions | `agents/knowledge/concepts/api-response-shape.md` |
76
76
 
77
77
  ## Where to store contexts
78
78
 
@@ -86,19 +86,6 @@ agents/settings/contexts/ # Project-wide contexts
86
86
  | **Evidence Report / probe dumps / absence log** (ephemeral) | `agents/memory/knowledge/session/` (gitignored, overwritten each task) |
87
87
  | If unsure | Ask the user |
88
88
 
89
- ### Standards cards — Class A configured convention (Evidence v2)
90
-
91
- A **standards card** is a present-state context whose claims are **derived from the
92
- project's real tooling config** (`.editorconfig`, `eslint.config.js`, `pint.json`,
93
- `pyproject.toml`/`ruff.toml`, commit-lint, CI lint steps). It is `trust: high
94
- (config-derived)` — high *because* the config is the truth. Each standard is a
95
- **pointer + digest** (value + `source: file:key` + scope), never a flattened claim;
96
- conflicting configs surface as two pointers, never merged. Digest is **regenerated**
97
- when a source config's mtime/hash changes (auto-refresh, no human gate). Read for
98
- heuristics only, never to bypass a fresh structural read. Build with
99
- [`standards-from-config`](../standards-from-config/SKILL.md) skill; store under
100
- `agents/settings/contexts/`.
101
-
102
89
  ### Knowledge cards — a specialized, evidence-disciplined context type
103
90
 
104
91
  A **knowledge card** extends this mechanism for the evidence-first discipline; it
@@ -117,17 +104,32 @@ for the full model.
117
104
  ### Knowledge pages — the typed sibling directories
118
105
 
119
106
  Alongside knowledge cards, `agents/knowledge/{sessions,concepts,procedures,decisions}/`
120
- holds team-shared knowledge grown **while working the project** — coding
121
- standards observed, module structure, API endpoint shapes, recurring
107
+ holds team-shared knowledge that grows **while working the project** —
108
+ coding standards observed, module structure, API endpoint shapes, recurring
122
109
  mistakes, small decisions not big enough for an ADR. Fill new pages from the
123
110
  [`knowledge-pages`](../../agent-src/templates/contexts/knowledge-pages.md)
124
111
  template.
125
112
 
126
113
  **Retrieval protocol — index-first, then grep, then read.** Read
127
114
  `agents/knowledge/INDEX.md` first (one line per page, regenerated by
128
- `src/scripts/generate_knowledge_index.ts`); `grep` keywords second; read the
129
- specific file third. Never enumerate every knowledge file directly — no
130
- search infrastructure by design.
115
+ `src/scripts/generate_knowledge_index.ts`); `grep` for keywords second; read
116
+ the specific file third. Never enumerate every knowledge file directly —
117
+ there is no search infrastructure by design.
118
+
119
+ ### Standards cards — Class A configured convention (Evidence v2)
120
+
121
+ A **standards card** is a present-state context whose claims are **derived from
122
+ the project's real tooling config** (`.editorconfig`, `eslint.config.js`,
123
+ `pint.json`, `pyproject.toml`/`ruff.toml`, commit-lint, CI lint steps). It is
124
+ `trust: high (config-derived)` — high *because* the config is the truth, not
125
+ because the agent believes it. Each standard is a **pointer + digest** (value +
126
+ `source: file:key` + scope), never a flattened claim; conflicting configs are
127
+ surfaced as two pointers, never merged. The digest is **regenerated** when a
128
+ source config's mtime/hash changes (auto-refresh, no human gate — Class A is
129
+ deterministic) and is read for heuristics only, never to bypass a fresh
130
+ structural read. Build it with the
131
+ [`standards-from-config`](../standards-from-config/SKILL.md) skill; store under
132
+ `agents/settings/contexts/`.
131
133
 
132
134
  ### Shared vs. project-specific contexts
133
135
 
@@ -26,6 +26,11 @@ Do NOT use when:
26
26
 
27
27
  ## Procedure: Configure Copilot
28
28
 
29
+ 1. **Inspect current Copilot config** — Read `.github/copilot-instructions.md` (if any) and the *What Copilot Can and Cannot Read* table below to confirm Copilot Code Review vs. Chat scope.
30
+ 2. **Decide self-contained scope** — Identify which rules must live in `copilot-instructions.md` (PR-review-relevant) vs. `.augment/` (agent-only).
31
+ 3. **Apply changes** — Edit `copilot-instructions.md` with coding-standards, review-comment rules, and any new conventions; keep it self-contained.
32
+ 4. **Verify** — Open a draft PR, confirm Copilot reads the new rules; for Chat, ask Copilot to summarize the active instructions.
33
+
29
34
  ### Configuration File
30
35
 
31
36
  **`.github/copilot-instructions.md`** — the single source of truth for Copilot behavior.
@@ -191,7 +196,7 @@ Copilot and Augment complement each other:
191
196
  ## Gotcha
192
197
 
193
198
  - copilot-instructions.md is for GitHub Copilot, NOT for Augment — don't mix audiences.
194
- - Don't duplicate .augment/ content into copilot-instructions.md — it bloats the file and → drift.
199
+ - Don't duplicate .augment/ content into copilot-instructions.md — it bloats the file and causes drift.
195
200
  - Copilot reads the ENTIRE instructions file on every request — keep it under 500 lines.
196
201
 
197
202
  ## Do NOT