@event4u/agent-config 14.11.0 → 14.12.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 (350) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +156 -538
  5. package/README.md +1 -1
  6. package/dist/agent-src/contexts/execution/evidence-discipline.md +26 -0
  7. package/dist/agent-src/skills/code-refactoring/SKILL.md +45 -1
  8. package/dist/agent-src/skills/code-review/SKILL.md +65 -6
  9. package/dist/agent-src/skills/command-writing/SKILL.md +35 -0
  10. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +8 -1
  11. package/dist/agent-src/skills/project-analysis-core/SKILL.md +23 -0
  12. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +29 -12
  13. package/dist/agent-src/skills/skill-writing/references/procedure.md +24 -2
  14. package/dist/agent-src/skills/storybook-workshop/SKILL.md +9 -0
  15. package/dist/agent-src/skills/ui-component-architect/SKILL.md +8 -0
  16. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  17. package/dist/cli-delegate/{chunk-L43NCYPB.js → chunk-JCW7ZLHK.js} +5 -0
  18. package/dist/cli-delegate/{chunk-236PNQZK.js → chunk-JJA2QEWA.js} +1 -1
  19. package/dist/cli-delegate/cmd_export.js +2 -2
  20. package/dist/cli-delegate/cmd_prune.js +2 -2
  21. package/dist/cli-delegate/cmd_settings_migrate.js +2 -2
  22. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  23. package/dist/cli-delegate/cmd_sync.js +2 -2
  24. package/dist/cli-delegate/cmd_uninstall.js +2 -2
  25. package/dist/cli-delegate/cmd_validate.js +2 -2
  26. package/dist/discovery/deprecation-report.md +1 -1
  27. package/dist/discovery/discovery-manifest.json +10 -10
  28. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  29. package/dist/discovery/discovery-manifest.summary.md +1 -1
  30. package/dist/discovery/dormancy-report.md +1 -1
  31. package/dist/discovery/orphan-report.md +1 -1
  32. package/dist/discovery/packs.json +2 -2
  33. package/dist/discovery/trust-report.md +1 -1
  34. package/dist/discovery/workspaces.json +2 -2
  35. package/dist/hooks/dispatch.js +1081 -879
  36. package/dist/install/install.mjs +5 -0
  37. package/dist/mcp/registry-manifest.json +2 -2
  38. package/dist/mcp/server.json +2 -2
  39. package/dist/server/schemas/settings.js +3 -0
  40. package/docs/contracts/settings-classes.md +24 -4
  41. package/docs/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  42. package/docs/guidelines/code-clarity.md +21 -0
  43. package/docs/guidelines/redundancy-taxonomy.md +180 -0
  44. package/package.json +6 -2
  45. package/src/config/agent-settings.template.yml +16 -0
  46. package/src/config/budgets.yml +19 -0
  47. package/src/config/ci-local-parity.yml +15 -0
  48. package/src/config/discovery/prompt-patterns.yml +56 -0
  49. package/src/config/estate-count-budget.json +8 -3
  50. package/src/config/gate-coverage.yml +191 -6
  51. package/src/config/gate-violation-baselines.json +3 -3
  52. package/src/config/pack-size-budget.json +39 -12
  53. package/src/config/preamble-payload-budget.json +97 -71
  54. package/src/config/routing-coverage-seed.json +29 -0
  55. package/src/config/suggestion-capture.json +28 -0
  56. package/src/config/surface-matrix.yml +21 -2
  57. package/src/config/web-launch-readiness.json +188 -0
  58. package/src/scripts/_lib/gate_baseline.ts +150 -1
  59. package/src/scripts/_lib/skill_estate.ts +115 -0
  60. package/src/scripts/ai_council/argument_exhaustion.ts +130 -0
  61. package/src/scripts/check_bundle_path_leakage.ts +162 -7
  62. package/src/scripts/check_command_examples.ts +557 -0
  63. package/src/scripts/check_estate_count.ts +122 -3
  64. package/src/scripts/check_preamble_payload_budget.ts +30 -3
  65. package/src/scripts/check_routing_coverage.ts +352 -0
  66. package/src/scripts/check_score_contract.ts +505 -0
  67. package/src/scripts/check_skill_admissions.ts +514 -0
  68. package/src/scripts/check_web_launch_readiness.ts +705 -0
  69. package/src/scripts/description_route_check.ts +494 -0
  70. package/src/scripts/hook_manifest.json +1 -1
  71. package/src/scripts/hook_manifest.yaml +29 -2
  72. package/src/scripts/hooks/concern_registry.ts +2 -0
  73. package/src/scripts/hooks/suggestion_capture_hook.ts +368 -0
  74. package/src/scripts/lint_budget_ownership.ts +54 -4
  75. package/src/scripts/lint_skill_trigger_corpus.ts +349 -0
  76. package/src/scripts/pack_install_smoke.ts +363 -0
  77. package/src/scripts/pr_conflict_census.ts +187 -0
  78. package/src/scripts/report_pack_delta.ts +204 -0
  79. package/src/scripts/select_analysis_mode.ts +112 -0
  80. package/src/scripts/sync_pr_branch.ts +40 -1
  81. package/src/server/schemas/settings.ts +5 -0
  82. package/dist/agent-src/skills/accessibility-auditor/evals/evals.json +0 -15
  83. package/dist/agent-src/skills/agent-security-review/evals/triggers.json +0 -52
  84. package/dist/agent-src/skills/ai-code-blindspots/evals/triggers.json +0 -52
  85. package/dist/agent-src/skills/alerting-doctrine/evals/triggers.json +0 -17
  86. package/dist/agent-src/skills/analysis-skill-router/evals/evals.json +0 -13
  87. package/dist/agent-src/skills/brand/evals/triggers.json +0 -17
  88. package/dist/agent-src/skills/brand-asset-generation/evals/triggers.json +0 -17
  89. package/dist/agent-src/skills/brand-audit/evals/triggers.json +0 -17
  90. package/dist/agent-src/skills/brand-identity/evals/triggers.json +0 -17
  91. package/dist/agent-src/skills/brand-strategy/evals/triggers.json +0 -17
  92. package/dist/agent-src/skills/brand-to-tokens/evals/triggers.json +0 -17
  93. package/dist/agent-src/skills/bug-analyzer/evals/evals.json +0 -13
  94. package/dist/agent-src/skills/canvas-design/evals/triggers.json +0 -17
  95. package/dist/agent-src/skills/character-consistency/evals/evals.json +0 -16
  96. package/dist/agent-src/skills/code-intelligence/evals/triggers.json +0 -52
  97. package/dist/agent-src/skills/code-review/evals/evals.json +0 -100
  98. package/dist/agent-src/skills/command-routing/evals/evals.json +0 -14
  99. package/dist/agent-src/skills/complexity-first-planning/evals/triggers.json +0 -17
  100. package/dist/agent-src/skills/contract-review/evals/triggers.json +0 -17
  101. package/dist/agent-src/skills/conventional-commits-writing/evals/evals.json +0 -15
  102. package/dist/agent-src/skills/corpus-grounding/evals/triggers.json +0 -17
  103. package/dist/agent-src/skills/dashboard-design/evals/evals.json +0 -16
  104. package/dist/agent-src/skills/dcf-modeling/evals/domain-truth.json +0 -29
  105. package/dist/agent-src/skills/dcf-modeling/evals/evals.json +0 -20
  106. package/dist/agent-src/skills/decision-record/evals/evals.json +0 -20
  107. package/dist/agent-src/skills/decision-record/evals/triggers.json +0 -87
  108. package/dist/agent-src/skills/design-intelligence/evals/evals.json +0 -14
  109. package/dist/agent-src/skills/design-intelligence/evals/triggers.json +0 -17
  110. package/dist/agent-src/skills/design-system-capture/evals/evals.json +0 -15
  111. package/dist/agent-src/skills/design-tokens/evals/triggers.json +0 -17
  112. package/dist/agent-src/skills/design-variations/evals/triggers.json +0 -17
  113. package/dist/agent-src/skills/developer-like-execution/evals/evals.json +0 -16
  114. package/dist/agent-src/skills/doc-coauthoring/evals/evals.json +0 -16
  115. package/dist/agent-src/skills/doc-coauthoring/evals/triggers.json +0 -17
  116. package/dist/agent-src/skills/docx-authoring/evals/triggers.json +0 -52
  117. package/dist/agent-src/skills/dpa-review/evals/triggers.json +0 -17
  118. package/dist/agent-src/skills/editorial-calendar/evals/domain-truth.json +0 -16
  119. package/dist/agent-src/skills/editorial-calendar/evals/evals.json +0 -16
  120. package/dist/agent-src/skills/eloquent/evals/triggers.json +0 -17
  121. package/dist/agent-src/skills/estimate-ticket/evals/evals.json +0 -16
  122. package/dist/agent-src/skills/estimate-ticket/evals/output-schema.yml +0 -20
  123. package/dist/agent-src/skills/estimate-ticket/evals/triggers.json +0 -19
  124. package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +0 -52
  125. package/dist/agent-src/skills/existing-ui-audit/evals/triggers.json +0 -47
  126. package/dist/agent-src/skills/experiment-loop/evals/output-schema.yml +0 -27
  127. package/dist/agent-src/skills/experiment-loop/evals/triggers.json +0 -17
  128. package/dist/agent-src/skills/fe-design/evals/triggers.json +0 -67
  129. package/dist/agent-src/skills/forecasting/evals/domain-truth.json +0 -29
  130. package/dist/agent-src/skills/forecasting/evals/evals.json +0 -20
  131. package/dist/agent-src/skills/forensics-report/evals/triggers.json +0 -17
  132. package/dist/agent-src/skills/frontend-render-security/evals/triggers.json +0 -52
  133. package/dist/agent-src/skills/fundraising-narrative/evals/domain-truth.json +0 -16
  134. package/dist/agent-src/skills/fundraising-narrative/evals/evals.json +0 -16
  135. package/dist/agent-src/skills/gated-reach/evals/triggers.json +0 -72
  136. package/dist/agent-src/skills/github-ci/evals/evals.json +0 -25
  137. package/dist/agent-src/skills/history-design/evals/triggers.json +0 -17
  138. package/dist/agent-src/skills/html-deck/evals/triggers.json +0 -17
  139. package/dist/agent-src/skills/humanizer/evals/strip_fixtures.json +0 -57
  140. package/dist/agent-src/skills/humanizer/evals/triggers.json +0 -17
  141. package/dist/agent-src/skills/iconography/evals/triggers.json +0 -17
  142. package/dist/agent-src/skills/image-analyser/evals/triggers.json +0 -17
  143. package/dist/agent-src/skills/image-creator/evals/triggers.json +0 -17
  144. package/dist/agent-src/skills/image-editing/evals/triggers.json +0 -17
  145. package/dist/agent-src/skills/image-generation/evals/triggers.json +0 -17
  146. package/dist/agent-src/skills/image-provider-routing/evals/triggers.json +0 -17
  147. package/dist/agent-src/skills/incident-commander/evals/domain-truth.json +0 -16
  148. package/dist/agent-src/skills/incident-commander/evals/evals.json +0 -20
  149. package/dist/agent-src/skills/js-library-packaging/evals/triggers.json +0 -17
  150. package/dist/agent-src/skills/judge-artifact-completeness/evals/triggers.json +0 -17
  151. package/dist/agent-src/skills/judge-injection-defense/evals/triggers.json +0 -17
  152. package/dist/agent-src/skills/judge-synthesis/evals/triggers.json +0 -17
  153. package/dist/agent-src/skills/launch-readiness/evals/evals.json +0 -21
  154. package/dist/agent-src/skills/learning-tutor/evals/triggers.json +0 -52
  155. package/dist/agent-src/skills/legal-intake-triage/evals/triggers.json +0 -17
  156. package/dist/agent-src/skills/legal-practice-profile/evals/triggers.json +0 -17
  157. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +0 -52
  158. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +0 -52
  159. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +0 -52
  160. package/dist/agent-src/skills/llm-provider-knowledge/evals/triggers.json +0 -20
  161. package/dist/agent-src/skills/logging-monitoring/evals/evals.json +0 -16
  162. package/dist/agent-src/skills/logo-generation/evals/triggers.json +0 -17
  163. package/dist/agent-src/skills/messaging-architecture/evals/domain-truth.json +0 -16
  164. package/dist/agent-src/skills/messaging-architecture/evals/evals.json +0 -16
  165. package/dist/agent-src/skills/monorepo-workspace/evals/triggers.json +0 -17
  166. package/dist/agent-src/skills/nda-triage/evals/triggers.json +0 -17
  167. package/dist/agent-src/skills/operational-readiness/evals/triggers.json +0 -17
  168. package/dist/agent-src/skills/pdf-tools/evals/triggers.json +0 -52
  169. package/dist/agent-src/skills/perf-feedback-craft/evals/evals.json +0 -16
  170. package/dist/agent-src/skills/persona-improvement/evals/triggers.json +0 -52
  171. package/dist/agent-src/skills/php-coder/evals/triggers.json +0 -17
  172. package/dist/agent-src/skills/prediction-pool-optimizer/evals/triggers.json +0 -21
  173. package/dist/agent-src/skills/prompt-engineering-image/evals/triggers.json +0 -17
  174. package/dist/agent-src/skills/prompt-engineering-patterns/evals/evals.json +0 -16
  175. package/dist/agent-src/skills/prompt-validator/evals/triggers.json +0 -17
  176. package/dist/agent-src/skills/quality-tools/evals/evals.json +0 -15
  177. package/dist/agent-src/skills/reasoning-orchestrator/evals/triggers.json +0 -17
  178. package/dist/agent-src/skills/refine-prompt/evals/evals.json +0 -16
  179. package/dist/agent-src/skills/refine-ticket/evals/evals.json +0 -16
  180. package/dist/agent-src/skills/refine-ticket/evals/output-schema.yml +0 -16
  181. package/dist/agent-src/skills/refine-ticket/evals/triggers.json +0 -17
  182. package/dist/agent-src/skills/release-comms/evals/evals.json +0 -16
  183. package/dist/agent-src/skills/rice-prioritization/evals/evals.json +0 -20
  184. package/dist/agent-src/skills/runway-cognition/evals/domain-truth.json +0 -29
  185. package/dist/agent-src/skills/runway-cognition/evals/evals.json +0 -20
  186. package/dist/agent-src/skills/scenario-modeling/evals/domain-truth.json +0 -29
  187. package/dist/agent-src/skills/scenario-modeling/evals/evals.json +0 -20
  188. package/dist/agent-src/skills/schema-review/evals/triggers.json +0 -17
  189. package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +0 -52
  190. package/dist/agent-src/skills/security-maturity-assessment/evals/triggers.json +0 -52
  191. package/dist/agent-src/skills/server-hardening/evals/triggers.json +0 -17
  192. package/dist/agent-src/skills/skill-writing/evals/triggers.json +0 -17
  193. package/dist/agent-src/skills/spreadsheet-authoring/evals/triggers.json +0 -47
  194. package/dist/agent-src/skills/storybook-workshop/evals/triggers.json +0 -17
  195. package/dist/agent-src/skills/subagent-orchestration/evals/evals.json +0 -60
  196. package/dist/agent-src/skills/supply-chain-intake/evals/triggers.json +0 -52
  197. package/dist/agent-src/skills/systematic-debugging/evals/evals.json +0 -20
  198. package/dist/agent-src/skills/test-case-discovery/evals/triggers.json +0 -52
  199. package/dist/agent-src/skills/test-driven-development/evals/evals.json +0 -16
  200. package/dist/agent-src/skills/threat-modeling/evals/evals.json +0 -21
  201. package/dist/agent-src/skills/typography-system/evals/evals.json +0 -14
  202. package/dist/agent-src/skills/typography-system/evals/triggers.json +0 -17
  203. package/dist/agent-src/skills/unit-economics-modeling/evals/domain-truth.json +0 -40
  204. package/dist/agent-src/skills/unit-economics-modeling/evals/evals.json +0 -24
  205. package/dist/agent-src/skills/verify-completion-evidence/evals/evals.json +0 -16
  206. package/dist/agent-src/skills/verify-repair-loop/evals/output-schema.yml +0 -20
  207. package/dist/agent-src/skills/verify-repair-loop/evals/triggers.json +0 -17
  208. package/dist/agent-src/skills/vision-articulation/evals/evals.json +0 -16
  209. package/dist/agent-src/skills/voice-and-tone-design/evals/evals.json +0 -16
  210. package/dist/agent-src/skills/wireframe/evals/triggers.json +0 -17
  211. package/dist/agent-src/skills/workspace-link/evals/triggers.json +0 -17
  212. package/dist/agent-src/skills/worktree-lifecycle/evals/evals.json +0 -38
  213. package/dist/agent-src/skills/worktree-lifecycle/evals/triggers.json +0 -52
  214. package/dist/cli/agent-config.js.map +0 -1
  215. package/dist/cli/bash/runBash.js.map +0 -1
  216. package/dist/cli/commands/commands.js.map +0 -1
  217. package/dist/cli/commands/config.js.map +0 -1
  218. package/dist/cli/commands/doctorShell.js.map +0 -1
  219. package/dist/cli/commands/mcpServer.js.map +0 -1
  220. package/dist/cli/commands/packs.js.map +0 -1
  221. package/dist/cli/commands/profiles.js.map +0 -1
  222. package/dist/cli/commands/recordTriggerEval.js.map +0 -1
  223. package/dist/cli/commands/rtkDetect.js.map +0 -1
  224. package/dist/cli/commands/settings.js.map +0 -1
  225. package/dist/cli/commands/uiAudit.js.map +0 -1
  226. package/dist/cli/commands/uiRender.js.map +0 -1
  227. package/dist/cli/commands/uiServe.js.map +0 -1
  228. package/dist/cli/commands/versions.js.map +0 -1
  229. package/dist/cli/commands/workspaces.js.map +0 -1
  230. package/dist/cli/configRoot.js.map +0 -1
  231. package/dist/cli/discovery/loadManifest.js.map +0 -1
  232. package/dist/cli/firstRunNotice.js.map +0 -1
  233. package/dist/cli/help.js.map +0 -1
  234. package/dist/cli/initRouting.js.map +0 -1
  235. package/dist/cli/log/logger.js.map +0 -1
  236. package/dist/cli/main.js.map +0 -1
  237. package/dist/cli/mcp/content.js.map +0 -1
  238. package/dist/cli/mcp/dispatch.js.map +0 -1
  239. package/dist/cli/mcp/stdio.js.map +0 -1
  240. package/dist/cli/paths.js.map +0 -1
  241. package/dist/cli/python/knowledge_ingest.js.map +0 -1
  242. package/dist/cli/python/workspace_analytics.js.map +0 -1
  243. package/dist/cli/python/workspace_crypto.js.map +0 -1
  244. package/dist/cli/python/workspace_documents.js.map +0 -1
  245. package/dist/cli/python/workspace_drive.js.map +0 -1
  246. package/dist/cli/python/workspace_drive_health.js.map +0 -1
  247. package/dist/cli/python/workspace_explain.js.map +0 -1
  248. package/dist/cli/python/workspace_hosts.js.map +0 -1
  249. package/dist/cli/python/workspace_inbox.js.map +0 -1
  250. package/dist/cli/python/workspace_render.js.map +0 -1
  251. package/dist/cli/python/workspace_roles.js.map +0 -1
  252. package/dist/cli/python/workspace_secrets.js.map +0 -1
  253. package/dist/cli/python/workspace_sessions.js.map +0 -1
  254. package/dist/cli/python/workspace_skills.js.map +0 -1
  255. package/dist/cli/registry.js.map +0 -1
  256. package/dist/install/agentSwitchDetection.js.map +0 -1
  257. package/dist/install/agentSwitchProfile.js.map +0 -1
  258. package/dist/install/atomic.js.map +0 -1
  259. package/dist/install/claudePathsPlan.js.map +0 -1
  260. package/dist/install/conflict.js.map +0 -1
  261. package/dist/install/detect.js.map +0 -1
  262. package/dist/install/emit_host_rules_cli.js.map +0 -1
  263. package/dist/install/globalRuleLayers.js.map +0 -1
  264. package/dist/install/hostLayerFingerprint.js.map +0 -1
  265. package/dist/install/partitionEligibility.js.map +0 -1
  266. package/dist/install/paths.js.map +0 -1
  267. package/dist/install/plan.js.map +0 -1
  268. package/dist/install/preflight.js.map +0 -1
  269. package/dist/install/rtkDetection.js.map +0 -1
  270. package/dist/install/ruleInScope.js.map +0 -1
  271. package/dist/install/ruleLayerPartition.js.map +0 -1
  272. package/dist/install/rule_scope.js.map +0 -1
  273. package/dist/install/rule_scope_cli.js.map +0 -1
  274. package/dist/install/selectedTools.js.map +0 -1
  275. package/dist/install/toolDetection.js.map +0 -1
  276. package/dist/install/txlog.js.map +0 -1
  277. package/dist/install/types.js.map +0 -1
  278. package/dist/install/wizard-plan.js.map +0 -1
  279. package/dist/install/wizardDismissals.js.map +0 -1
  280. package/dist/scripts/_lib/agent_settings.js.map +0 -1
  281. package/dist/scripts/_lib/agent_src.js.map +0 -1
  282. package/dist/scripts/_lib/claude_builtin_names.js.map +0 -1
  283. package/dist/scripts/_lib/claude_plugin.js.map +0 -1
  284. package/dist/scripts/_lib/claude_settings_hooks.js.map +0 -1
  285. package/dist/scripts/_lib/compile_time_toggles.js.map +0 -1
  286. package/dist/scripts/_lib/environment_detector.js.map +0 -1
  287. package/dist/scripts/_lib/host_launch.js.map +0 -1
  288. package/dist/scripts/_lib/install_layout.js.map +0 -1
  289. package/dist/scripts/_lib/installed_lock.js.map +0 -1
  290. package/dist/scripts/_lib/lean_projection_mode.js.map +0 -1
  291. package/dist/scripts/_lib/model_tier.js.map +0 -1
  292. package/dist/scripts/_lib/prune_empty_dirs.js.map +0 -1
  293. package/dist/scripts/_lib/scoped_projection.js.map +0 -1
  294. package/dist/scripts/_lib/script_output.js.map +0 -1
  295. package/dist/scripts/_lib/spawn_env.js.map +0 -1
  296. package/dist/scripts/_lib/surface_tiers.js.map +0 -1
  297. package/dist/scripts/_lib/token_count.js.map +0 -1
  298. package/dist/scripts/_lib/trigger_eval_floors.js.map +0 -1
  299. package/dist/scripts/_lib/ui_surface.js.map +0 -1
  300. package/dist/scripts/_lib/user_global_paths.js.map +0 -1
  301. package/dist/scripts/ai_council/modes.js.map +0 -1
  302. package/dist/scripts/ai_council/transport_resolver.js.map +0 -1
  303. package/dist/scripts/condense.js.map +0 -1
  304. package/dist/scripts/project_thin_rules.js.map +0 -1
  305. package/dist/server/app.js.map +0 -1
  306. package/dist/server/io/atomicMultiWrite.js.map +0 -1
  307. package/dist/server/io/atomicWrite.js.map +0 -1
  308. package/dist/server/io/sharedWriteCheck.js.map +0 -1
  309. package/dist/server/io/substituteTemplate.js.map +0 -1
  310. package/dist/server/io/yamlIO.js.map +0 -1
  311. package/dist/server/nicknameResolver.js.map +0 -1
  312. package/dist/server/port.js.map +0 -1
  313. package/dist/server/routes/discovery.js.map +0 -1
  314. package/dist/server/routes/install.js.map +0 -1
  315. package/dist/server/routes/ping.js.map +0 -1
  316. package/dist/server/routes/schema.js.map +0 -1
  317. package/dist/server/routes/settings.js.map +0 -1
  318. package/dist/server/routes/settingsChanges.js.map +0 -1
  319. package/dist/server/routes/userMd.js.map +0 -1
  320. package/dist/server/routes/wizard.js.map +0 -1
  321. package/dist/server/routes/workspace.js.map +0 -1
  322. package/dist/server/schemas/settings.js.map +0 -1
  323. package/dist/server/serverInfo.js.map +0 -1
  324. package/dist/server/token.js.map +0 -1
  325. package/dist/server/writeRoot.js.map +0 -1
  326. package/dist/shared/capabilities.js.map +0 -1
  327. package/dist/shared/interactiveContext.js.map +0 -1
  328. package/dist/shared/nicknamePrefill.js.map +0 -1
  329. package/dist/shared/settingsAsks.js.map +0 -1
  330. package/dist/shared/settingsCarveOut.js.map +0 -1
  331. package/dist/shared/settingsClasses.js.map +0 -1
  332. package/dist/shared/settingsConsent.js.map +0 -1
  333. package/dist/shared/settingsSurface.js.map +0 -1
  334. package/dist/shared/skillRanking.js.map +0 -1
  335. package/dist/shared/userMd/formAdapter.js.map +0 -1
  336. package/dist/shared/userMd/schema.js.map +0 -1
  337. package/dist/shared/userMd/utils.js.map +0 -1
  338. package/dist/ui/assets/index-Cxgy63kz.js.map +0 -1
  339. package/src/scripts/_lib/adr_frontmatter.test.ts +0 -365
  340. package/src/scripts/_lib/adversarial_council_gate.test.ts +0 -112
  341. package/src/scripts/_lib/adversarial_reconcile.test.ts +0 -197
  342. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +0 -150
  343. package/src/scripts/_lib/secret_detector.test.ts +0 -108
  344. package/src/scripts/_lib/secret_detector_adversarial.test.ts +0 -116
  345. package/src/scripts/_lib/ui_authority.test.ts +0 -251
  346. package/src/scripts/_lib/untrusted_content.test.ts +0 -175
  347. package/src/scripts/check_secret_leak.test.ts +0 -90
  348. package/src/scripts/design_slop_rules.test.ts +0 -246
  349. package/src/scripts/self_review_gate.test.ts +0 -296
  350. package/src/shared/capabilities.test.ts +0 -43
@@ -0,0 +1,204 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Branch-vs-base packed-payload delta — make accretion legible while it is small.
4
+ *
5
+ * WHY, and this is the whole argument: the 2026-08-24 cap trip was a **merge
6
+ * artifact**. `origin/main` measured 8.3911 and the branch 8.4305, against a cap
7
+ * of 8.4 — *neither side was over alone*, and together they crossed. No
8
+ * per-branch absolute check can see that shape, which is why the cap had to be
9
+ * re-baselined rather than the payload fixed. `check_pack_size` answers "is the
10
+ * total under the cap"; this answers "how much did THIS branch add", which is
11
+ * the number that would have made the accretion visible four raises ago.
12
+ *
13
+ * It is a REPORT, not a gate. It prints a delta and exits 0 whatever the number,
14
+ * because a threshold here would be a second cap with no derivation behind it
15
+ * and the absolute cap already owns the refusal. `--fail-over <MB>` exists for a
16
+ * caller that wants one, and is deliberately not wired into CI.
17
+ *
18
+ * Measurement matches `pack-size-budget.json`'s documented conditions exactly —
19
+ * `npm pack --dry-run --json --ignore-scripts` on an unbuilt tree — because a
20
+ * delta between two figures measured differently is noise. Both sides are
21
+ * measured in throwaway detached worktrees for the same reason: a built working
22
+ * tree reads ~2 MB high, which the budget file records as a trap its own method
23
+ * invites.
24
+ *
25
+ * ```bash
26
+ * report_pack_delta # vs origin/main
27
+ * report_pack_delta --base origin/main --head HEAD
28
+ * report_pack_delta --json
29
+ * report_pack_delta --markdown # a PR-comment / step-summary block
30
+ * ```
31
+ *
32
+ * Exit codes: 0 = reported · 2 = could not measure (a missing ref, a failed
33
+ * pack). Never non-zero for a large delta unless `--fail-over` says so.
34
+ */
35
+ import * as fs from 'node:fs';
36
+ import * as os from 'node:os';
37
+ import * as path from 'node:path';
38
+ import { spawnSync } from 'node:child_process';
39
+ import { fileURLToPath, pathToFileURL } from 'node:url';
40
+
41
+ const _FILE = fileURLToPath(import.meta.url);
42
+ const REPO = path.resolve(path.dirname(_FILE), '..', '..');
43
+
44
+ export interface Side {
45
+ readonly ref: string;
46
+ readonly packedBytes: number;
47
+ readonly unpackedBytes: number;
48
+ readonly entries: number;
49
+ }
50
+
51
+ export interface Delta {
52
+ readonly base: Side;
53
+ readonly head: Side;
54
+ readonly packedDeltaBytes: number;
55
+ readonly entryDelta: number;
56
+ readonly capMb: number | null;
57
+ readonly headroomBytes: number | null;
58
+ }
59
+
60
+ const run = (cmd: string, args: readonly string[], cwd: string): { code: number; out: string; err: string } => {
61
+ const r = spawnSync(cmd, [...args], {
62
+ cwd,
63
+ encoding: 'utf8',
64
+ timeout: 600_000,
65
+ maxBuffer: 64 * 1024 * 1024,
66
+ });
67
+ return { code: r.status ?? 1, out: r.stdout ?? '', err: r.stderr ?? '' };
68
+ };
69
+
70
+ /** Measure one ref in a throwaway detached worktree, unbuilt. */
71
+ export function measure(ref: string): Side {
72
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'ac-pack-delta-'));
73
+ const tree = path.join(dir, 'tree');
74
+ try {
75
+ const add = run('git', ['worktree', 'add', '--quiet', '--detach', tree, ref], REPO);
76
+ if (add.code !== 0) throw new Error(`cannot check out ${ref}: ${add.err.trim()}`);
77
+ const packed = run('npm', ['pack', '--dry-run', '--json', '--ignore-scripts'], tree);
78
+ if (packed.code !== 0) throw new Error(`npm pack failed for ${ref}: ${packed.err.slice(-600)}`);
79
+ const start = packed.out.indexOf('[');
80
+ if (start === -1) throw new Error(`npm pack produced no JSON for ${ref}`);
81
+ const meta = JSON.parse(packed.out.slice(start)) as Array<{
82
+ size: number;
83
+ unpackedSize: number;
84
+ entryCount: number;
85
+ }>;
86
+ const m = meta[0];
87
+ if (m === undefined) throw new Error(`npm pack produced no entry for ${ref}`);
88
+ return { ref, packedBytes: m.size, unpackedBytes: m.unpackedSize, entries: m.entryCount };
89
+ } finally {
90
+ run('git', ['worktree', 'remove', '--force', tree], REPO);
91
+ fs.rmSync(dir, { recursive: true, force: true });
92
+ }
93
+ }
94
+
95
+ function readCap(): number | null {
96
+ try {
97
+ const raw = fs.readFileSync(path.join(REPO, 'src', 'config', 'pack-size-budget.json'), 'utf8');
98
+ const d = JSON.parse(raw) as { budgets?: { packed_size_mb?: { max?: number } } };
99
+ const max = d.budgets?.packed_size_mb?.max;
100
+ return typeof max === 'number' ? max : null;
101
+ } catch {
102
+ return null;
103
+ }
104
+ }
105
+
106
+ export function delta(baseRef: string, headRef: string): Delta {
107
+ const base = measure(baseRef);
108
+ const head = measure(headRef);
109
+ const capMb = readCap();
110
+ return {
111
+ base,
112
+ head,
113
+ packedDeltaBytes: head.packedBytes - base.packedBytes,
114
+ entryDelta: head.entries - base.entries,
115
+ capMb,
116
+ headroomBytes: capMb === null ? null : Math.round(capMb * 1e6 - head.packedBytes),
117
+ };
118
+ }
119
+
120
+ const kb = (n: number): string => `${(n / 1024).toFixed(1)} KB`;
121
+ const mb = (n: number): string => `${(n / 1e6).toFixed(4)} MB`;
122
+ const signed = (n: number): string => `${n >= 0 ? '+' : '−'}${kb(Math.abs(n))}`;
123
+
124
+ export function markdown(d: Delta): string {
125
+ const dir = d.packedDeltaBytes === 0 ? 'unchanged' : d.packedDeltaBytes > 0 ? 'grew' : 'shrank';
126
+ const lines = [
127
+ `**Packed payload ${dir}: ${signed(d.packedDeltaBytes)}**`,
128
+ '',
129
+ '| | packed | entries |',
130
+ '|---|---|---|',
131
+ `| base \`${d.base.ref}\` | ${mb(d.base.packedBytes)} | ${d.base.entries} |`,
132
+ `| head \`${d.head.ref}\` | ${mb(d.head.packedBytes)} | ${d.head.entries} |`,
133
+ `| delta | **${signed(d.packedDeltaBytes)}** | ${d.entryDelta >= 0 ? '+' : ''}${d.entryDelta} |`,
134
+ ];
135
+ if (d.capMb !== null && d.headroomBytes !== null) {
136
+ lines.push(
137
+ '',
138
+ `Cap ${d.capMb} MB · headroom after this branch **${kb(d.headroomBytes)}**.`,
139
+ '',
140
+ '<sub>Measured `npm pack --dry-run --ignore-scripts` on unbuilt detached worktrees of both refs — the ' +
141
+ 'conditions `pack-size-budget.json` documents. A report, not a gate: the absolute cap owns the refusal. ' +
142
+ 'This line exists because the 2026-08-24 trip was a MERGE artifact — neither side was over alone.</sub>',
143
+ );
144
+ }
145
+ return lines.join('\n');
146
+ }
147
+
148
+ export function main(argv: readonly string[] = process.argv.slice(2)): number {
149
+ const arg = (name: string, dflt: string): string => {
150
+ const i = argv.indexOf(name);
151
+ return i !== -1 && argv[i + 1] !== undefined ? (argv[i + 1] as string) : dflt;
152
+ };
153
+ const baseRef = arg('--base', 'origin/main');
154
+ const headRef = arg('--head', 'HEAD');
155
+ const failOver = arg('--fail-over', '');
156
+
157
+ let d: Delta;
158
+ try {
159
+ d = delta(baseRef, headRef);
160
+ } catch (exc) {
161
+ process.stderr.write(`report_pack_delta: ${String(exc)}\n`);
162
+ return 2;
163
+ }
164
+
165
+ if (argv.includes('--json')) {
166
+ process.stdout.write(`${JSON.stringify(d, null, 2)}\n`);
167
+ } else if (argv.includes('--markdown')) {
168
+ process.stdout.write(`${markdown(d)}\n`);
169
+ } else {
170
+ process.stdout.write(
171
+ `pack delta ${baseRef} → ${headRef}: ${signed(d.packedDeltaBytes)} ` +
172
+ `(${mb(d.base.packedBytes)} → ${mb(d.head.packedBytes)}, ` +
173
+ `${d.entryDelta >= 0 ? '+' : ''}${d.entryDelta} entries)\n`,
174
+ );
175
+ if (d.capMb !== null && d.headroomBytes !== null) {
176
+ process.stdout.write(` cap ${d.capMb} MB · headroom ${kb(d.headroomBytes)}\n`);
177
+ }
178
+ }
179
+ // `scanned:` per the gate-coverage contract — two refs is what it inspected.
180
+ process.stdout.write('scanned: 2\n');
181
+
182
+ if (failOver !== '') {
183
+ const limit = Number(failOver) * 1e6;
184
+ if (Number.isFinite(limit) && d.packedDeltaBytes > limit) {
185
+ process.stderr.write(`report_pack_delta: delta ${kb(d.packedDeltaBytes)} exceeds --fail-over ${failOver} MB\n`);
186
+ return 1;
187
+ }
188
+ }
189
+ return 0;
190
+ }
191
+
192
+ function _isCliEntry(): boolean {
193
+ const a = process.argv[1];
194
+ if (!a) return false;
195
+ if (a === _FILE || pathToFileURL(path.resolve(a)).href === import.meta.url) return true;
196
+ try {
197
+ return fs.realpathSync(a) === fs.realpathSync(_FILE);
198
+ } catch {
199
+ return false;
200
+ }
201
+ }
202
+ if (_isCliEntry()) process.exit(main());
203
+
204
+ export { REPO };
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * `select_analysis_mode` — full analysis, or a targeted delta?
4
+ *
5
+ * `project-analysis-core` writes an artefact per analysed target under the
6
+ * `agents/knowledge/concepts/` convention. Re-running it against a target that
7
+ * already has one rewrites a page that mostly still holds, which costs a full
8
+ * read of the codebase to reproduce conclusions already on disk.
9
+ *
10
+ * This decides which path to take, and it decides ONE thing only: write
11
+ * economics. It does NOT change the trust status of the existing artefact.
12
+ * A concept page is a hypothesis cache, never truth (`context-document`,
13
+ * `source-discovery-gate` § v1↔v2 isolation), so the delta path still
14
+ * re-verifies every structural claim it carries forward against a live source.
15
+ * A cheaper write is not a licence to trust a cached read.
16
+ *
17
+ * Exit codes: 0 always — this is a router, not a gate. The answer is on stdout.
18
+ */
19
+ import * as fs from 'node:fs';
20
+ import * as path from 'node:path';
21
+ import process from 'node:process';
22
+ import { fileURLToPath } from 'node:url';
23
+
24
+ const HERE = fileURLToPath(import.meta.url);
25
+ const REPO_ROOT = path.resolve(path.dirname(HERE), '..', '..');
26
+
27
+ /** Where `/team-knowledge consolidate` lands concept pages. */
28
+ export const CONCEPTS_DIR = 'agents/knowledge/concepts';
29
+
30
+ export type AnalysisMode = 'full' | 'delta';
31
+
32
+ export interface ModeVerdict {
33
+ mode: AnalysisMode;
34
+ /** The artefact the delta path would update, repo-relative. Null on `full`. */
35
+ artefact: string | null;
36
+ /** One sentence, printed — why this path. */
37
+ reason: string;
38
+ }
39
+
40
+ /** `Auth Module` / `auth-module` / `auth module` all address the same page. */
41
+ export function slugify(target: string): string {
42
+ return target
43
+ .trim()
44
+ .toLowerCase()
45
+ .replace(/[^a-z0-9]+/g, '-')
46
+ .replace(/^-+|-+$/g, '');
47
+ }
48
+
49
+ /**
50
+ * Does a concept page for this target already exist?
51
+ *
52
+ * Matched on the slug, so the caller's phrasing does not decide the answer. An
53
+ * EMPTY file is deliberately treated as absent: a zero-byte page carries no
54
+ * conclusions to delta against, and taking the delta path on one would produce
55
+ * an update of nothing while reporting a saving.
56
+ */
57
+ export function selectAnalysisMode(target: string, root: string = REPO_ROOT): ModeVerdict {
58
+ const slug = slugify(target);
59
+ if (slug === '') {
60
+ return {
61
+ mode: 'full',
62
+ artefact: null,
63
+ reason: 'the target resolves to an empty slug, so no artefact can be addressed',
64
+ };
65
+ }
66
+ const dir = path.join(root, CONCEPTS_DIR);
67
+ const candidate = path.join(dir, `${slug}.md`);
68
+ let stat: fs.Stats;
69
+ try {
70
+ stat = fs.statSync(candidate);
71
+ } catch {
72
+ return {
73
+ mode: 'full',
74
+ artefact: null,
75
+ reason: `no ${CONCEPTS_DIR}/${slug}.md — nothing to delta against`,
76
+ };
77
+ }
78
+ if (!stat.isFile() || stat.size === 0) {
79
+ return {
80
+ mode: 'full',
81
+ artefact: null,
82
+ reason: `${CONCEPTS_DIR}/${slug}.md is empty — it carries no conclusions to carry forward`,
83
+ };
84
+ }
85
+ return {
86
+ mode: 'delta',
87
+ artefact: path.join(CONCEPTS_DIR, `${slug}.md`),
88
+ reason:
89
+ `${CONCEPTS_DIR}/${slug}.md exists (${String(stat.size)} bytes) — read it first and ` +
90
+ 'analyse the gaps, stale sections and new patterns, not the whole tree. Its ' +
91
+ 'structural claims are still re-verified against a live source.',
92
+ };
93
+ }
94
+
95
+ export function main(argv: string[] = process.argv.slice(2), root = REPO_ROOT): number {
96
+ const target = argv.filter((a) => !a.startsWith('--')).join(' ');
97
+ if (target === '') {
98
+ process.stderr.write('usage: select_analysis_mode <target>\n');
99
+ return 2;
100
+ }
101
+ const v = selectAnalysisMode(target, root);
102
+ if (argv.includes('--json')) {
103
+ process.stdout.write(`${JSON.stringify(v)}\n`);
104
+ } else {
105
+ process.stdout.write(`${v.mode}: ${v.reason}\n`);
106
+ }
107
+ return 0;
108
+ }
109
+
110
+ if (path.resolve(process.argv[1] ?? '') === path.resolve(HERE)) {
111
+ process.exit(main());
112
+ }
@@ -83,6 +83,44 @@ const GENERATED = [
83
83
  // measured for road-to-merge-hotspot-drawdown. Regenerate; never merge.
84
84
  'agents/roadmaps/archive/INDEX.md',
85
85
  'agents/roadmaps/archive/index.json',
86
+ // ── Added 2026-08-25 (road-to-merge-surface-zero 1.1). Each carries its
87
+ // write site, because this list tells a human to DISCARD one side, and an
88
+ // entry added on a conflict count alone would tell them to discard hand
89
+ // work. Counts are from `pr_conflict_census --limit 2000` over 60 days.
90
+ //
91
+ // Written by `build_proof.ts:500` from `docs/CLAIMS.md`. 26 resolutions, and
92
+ // it fails in pairs: a CLAIMS.md edit leaves it stale, which reds both the
93
+ // drift-guard test and `demo-commands-still-pass`.
94
+ 'docs/proof.md',
95
+ // Both written by `generate_catalog.ts` (`:166` for llms.txt) from SKILL.md
96
+ // frontmatter. Neither has ever been hand-authored.
97
+ 'docs/skills-catalog.md',
98
+ 'llms.txt',
99
+ // Written by `lint_originality.ts:340`. Named by step 1.1 and included
100
+ // although the census found ZERO conflicts on it in either window — it is
101
+ // genuinely generated and classifying it costs nothing. Recorded rather than
102
+ // quietly dropped: the step named it on conflict frequency, and that premise
103
+ // does not hold.
104
+ 'agents/reports/originality.json',
105
+ 'agents/reports/originality.md',
106
+ ];
107
+
108
+ /**
109
+ * Generated paths a literal cannot express.
110
+ *
111
+ * `isGenerated` matches on equality or a trailing-slash prefix, so a per-pack
112
+ * manifest needs a pattern. Kept as a separate named list rather than by
113
+ * loosening the literal matcher: a glob inside the array above would make every
114
+ * future entry ambiguous about which kind of match it asks for.
115
+ */
116
+ const GENERATED_PATTERNS: readonly { readonly re: RegExp; readonly why: string }[] = [
117
+ {
118
+ // `generate_pack_manifests.ts:427`, and the file's own first line reads
119
+ // "Generated by scripts/generate_pack_manifests.ts — DO NOT EDIT BY
120
+ // HAND". 12 resolutions over 60 days across two packs.
121
+ re: /^src\/domains\/[^/]+\/pack\.yaml$/,
122
+ why: 'per-pack manifest written by generate_pack_manifests.ts',
123
+ },
86
124
  ];
87
125
 
88
126
  /**
@@ -159,7 +197,8 @@ export function isUntrackedByDesign(rel: string): boolean {
159
197
 
160
198
  export function isGenerated(rel: string): boolean {
161
199
  const norm = rel.replace(/\\/g, '/');
162
- return GENERATED.some((g) => (g.endsWith('/') ? norm.startsWith(g) : norm === g));
200
+ if (GENERATED.some((g) => (g.endsWith('/') ? norm.startsWith(g) : norm === g))) return true;
201
+ return GENERATED_PATTERNS.some((p) => p.re.test(norm));
163
202
  }
164
203
 
165
204
  /**
@@ -526,6 +526,11 @@ export const settingsSchema = z.object({
526
526
  'PreToolUse code-graph nudge (ADR-124 Phase 4). Default off. When on AND a native code-graph cache or a consumer-shipped graph.json/SCIP index is present, warns once per session (never blocks) as the agent is about to Grep/Glob or Read a source file — query the graph first for who-calls/where-used/impact questions (or rebuild if stale, build if absent). Source G’s strict block-first-read mode is deliberately un-ported.',
527
527
  ),
528
528
  }).default({}),
529
+ suggestion_capture: z.object({
530
+ enabled: z.boolean().default(false).describe(
531
+ 'Suggestion-block capture (road-to-suggestion-block-capture Phase 2). Default off. Two slots: `stop` reads `last_assistant_message` — a payload field, so no transcript file is read — and latches that the assistant turn carried a numbered-options block; `user_prompt_submit` CONSUMES that latch and classifies the answering turn as option_n / as_is / other / stale_block. Consume-once is the correctness guard: the latch is deleted on read, so a bare "1" three turns later meets no latch and classifies `other`, and a latch past its TTL or unparseable is `stale_block` rather than a guess. Writes COUNTS ONLY to agents/runtime/state/audit/suggestion-capture.jsonl — the record type has no field able to hold a prompt, an option label or a command name, and a test asserts the written key set against src/config/suggestion-capture.json. Off by default because this is an INSTRUMENT rather than a feature: it exists so a capture rate can be measured on a maintainer workspace over a fixed soak window, and there is nothing in it for a consumer to gain.',
532
+ ),
533
+ }).default({}),
529
534
  // `turn_end_gate` is deliberately ABSENT. The stop-slot turn-end gate is
530
535
  // always armed (2026-08-12) and has no settings surface: whether it
531
536
  // fires is decided by each detector's own trigger conditions, not by a
@@ -1,15 +0,0 @@
1
- {
2
- "skill": "accessibility-auditor",
3
- "_calibration": "Behavioural fixtures (road-to-skill-eval-coverage Phase 2, rich set). Deterministic `contains` asserts a real WCAG audit property (the standard is cited); finding_floor n=2 is a conservative floor (an icon-button with no name + a placeholder-only input surface ≥2 issues), not a calibrated per-host number; the rubric names the specific missing control as a pinned-judge known-limit.",
4
- "scenarios": [
5
- {
6
- "id": "audit-icon-button-and-placeholder-input",
7
- "prompt": "Audit this UI for accessibility and list each issue as its own bullet point:\n```html\n<button onclick=\"save()\"><svg width=\"16\" height=\"16\"></svg></button>\n<input type=\"text\" placeholder=\"Email address\">\n```",
8
- "assertions": [
9
- { "kind": "finding_floor", "n": 2, "pattern": "(?m)^\\s*[-*+]\\s+" },
10
- { "kind": "contains", "value": "WCAG" },
11
- { "kind": "rubric", "criterion": "Names the icon-only button's missing accessible name (aria-label / visible label) AND the placeholder-not-a-label problem on the input." }
12
- ]
13
- }
14
- ]
15
- }
@@ -1,52 +0,0 @@
1
- {
2
- "skill": "agent-security-review",
3
- "last_eval": "2026-06-16",
4
- "description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger covers DE + EN phrasings for adversarial review of an agent's CONFIG/behaviour (rules, skills, MCP, hooks, permissions). Should-not-trigger covers the near-miss neighbours (code threat-model, code security-audit, the static config-audit command, privacy review, dependency CVE scan) whose vocabulary overlaps.",
5
- "queries": [
6
- {
7
- "q": "red-team my agent setup — could someone weaponise my CLAUDE.md or MCP servers?",
8
- "trigger": true
9
- },
10
- {
11
- "q": "do an adversarial security review of this agent config and its skills",
12
- "trigger": true
13
- },
14
- {
15
- "q": "is this third-party skill pack safe to install, attacker's view?",
16
- "trigger": true
17
- },
18
- {
19
- "q": "prüfe meine Agent-Konfiguration adversarial auf Angriffsketten",
20
- "trigger": true
21
- },
22
- {
23
- "q": "what could an attacker do with my rules files, hooks and tool permissions?",
24
- "trigger": true
25
- },
26
- {
27
- "q": "threat-model this new payments endpoint before I build it",
28
- "trigger": false,
29
- "note": "code change threat model → threat-modeling"
30
- },
31
- {
32
- "q": "find vulnerabilities in my application code",
33
- "trigger": false,
34
- "note": "code vulnerability hunt → security-audit"
35
- },
36
- {
37
- "q": "give me an A-F score for my agent config",
38
- "trigger": false,
39
- "note": "static scored audit → /security-audit-config command, not the adversarial skill"
40
- },
41
- {
42
- "q": "are we GDPR compliant with this data flow?",
43
- "trigger": false,
44
- "note": "regulatory-regime read → privacy-review"
45
- },
46
- {
47
- "q": "scan my dependencies for known CVEs",
48
- "trigger": false,
49
- "note": "dependency CVE audit → security-audit dependency pass"
50
- }
51
- ]
52
- }
@@ -1,52 +0,0 @@
1
- {
2
- "skill": "ai-code-blindspots",
3
- "last_eval": "2026-07-09",
4
- "description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger covers DE + EN phrasings for the pre-ship 'what invisible cross-cutting controls did the AI omit?' checklist across code surfaces. Should-not-trigger covers near-miss neighbours (deep single-surface skills, prose/docs edits, adversarial config review) whose vocabulary overlaps.",
5
- "queries": [
6
- {
7
- "q": "I just wrote this endpoint — what invisible controls did I forget before I call it done?",
8
- "trigger": true
9
- },
10
- {
11
- "q": "run the senior pre-ship checklist over this diff for cross-cutting controls",
12
- "trigger": true
13
- },
14
- {
15
- "q": "what does AI-generated code usually omit here — authz, tenant scope, validation?",
16
- "trigger": true
17
- },
18
- {
19
- "q": "prüf meinen Code auf die unsichtbaren Kontrollen, die die KI weglässt",
20
- "trigger": true
21
- },
22
- {
23
- "q": "before I finish this migration and query, what am I blind to?",
24
- "trigger": true
25
- },
26
- {
27
- "q": "review this React component specifically for XSS and client secrets",
28
- "trigger": false,
29
- "note": "single frontend surface → frontend-render-security"
30
- },
31
- {
32
- "q": "is this npm package safe to add?",
33
- "trigger": false,
34
- "note": "dependency intake → supply-chain-intake"
35
- },
36
- {
37
- "q": "threat-model this new payments endpoint before I build it",
38
- "trigger": false,
39
- "note": "pre-build threat model → threat-modeling / security-sensitive-stop"
40
- },
41
- {
42
- "q": "fix the typo in this README",
43
- "trigger": false,
44
- "note": "prose/docs edit — no code surface"
45
- },
46
- {
47
- "q": "red-team my agent's CLAUDE.md and MCP config",
48
- "trigger": false,
49
- "note": "agent-config adversarial review → agent-security-review"
50
- }
51
- ]
52
- }
@@ -1,17 +0,0 @@
1
- {
2
- "skill": "alerting-doctrine",
3
- "last_eval": "2026-08-23",
4
- "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers alert classification and the malformed-page contract. Should-not-trigger covers the near-miss neighbours this skill deliberately does not own: signal existence (logging-monitoring), the go/no-go verdict (operational-readiness), running an open incident (incident-commander), dashboard layout (dashboard-design) and host security (server-hardening).",
5
- "queries": [
6
- {"q": "should this condition page someone or just open a ticket?", "trigger": true},
7
- {"q": "review our alert rules — too many of them wake the on-call", "trigger": true},
8
- {"q": "what has to be in a runbook for it to be worth paging into?", "trigger": true},
9
- {"q": "this alert has no owner, is that a problem?", "trigger": true},
10
- {"q": "define what earns a page versus an info notification", "trigger": true},
11
- {"q": "does this project even have an error rate metric?", "trigger": false, "note": "signal existence and detection → logging-monitoring"},
12
- {"q": "are we ready to ship this to production?", "trigger": false, "note": "go/no-go readiness verdict → operational-readiness"},
13
- {"q": "the outage started 10 minutes ago, what do I do now?", "trigger": false, "note": "running an open incident → incident-commander"},
14
- {"q": "how should I lay out the panels on this monitoring dashboard?", "trigger": false, "note": "dashboard layout and visualization → dashboard-design"},
15
- {"q": "harden ssh and set up unattended upgrades on this box", "trigger": false, "note": "host security posture → server-hardening"}
16
- ]
17
- }
@@ -1,13 +0,0 @@
1
- {
2
- "skill": "analysis-skill-router",
3
- "_calibration": "Behavioural fixtures (road-to-skill-eval-coverage Phase 2, router set). Deterministic `contains` asserts the router picks the NARROWEST matching project-analysis-* skill (the whole routing contract) — a mis-route names the wrong or a generic skill.",
4
- "scenarios": [
5
- {
6
- "id": "route-laravel-slow-queries",
7
- "prompt": "Analyze why our Laravel app's database queries are slow. Which analysis skill should handle this?",
8
- "assertions": [
9
- { "kind": "contains", "value": "project-analysis-laravel" }
10
- ]
11
- }
12
- ]
13
- }
@@ -1,17 +0,0 @@
1
- {
2
- "skill": "brand",
3
- "last_eval": "2026-06-16",
4
- "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers grounding a brand decision against the corpus (archetype, voice, colour, naming, archetype->type). Should-not-trigger covers near-miss neighbors: UI style grounding (design-intelligence), token authoring (design-tokens), generating a logo asset (logo-generation), validation of emitted artifacts (brand-consistency), and font-pairing lookup without a brand frame (typography-system style path).",
5
- "queries": [
6
- {"q": "which brand archetype fits a rugged outdoor gear company?", "trigger": true},
7
- {"q": "ground the voice and tone for a challenger fintech brand", "trigger": true},
8
- {"q": "what colour direction does the corpus suggest for a children's education brand?", "trigger": true},
9
- {"q": "which naming pattern suits a coined-word tech startup brand?", "trigger": true},
10
- {"q": "what type pairing-filter does a luxury law firm archetype imply?", "trigger": true},
11
- {"q": "which UI style and palette fit a fintech dashboard?", "trigger": false, "note": "frontend style grounding → design-intelligence, not brand strategy"},
12
- {"q": "emit the brand colours as DTCG CSS variables", "trigger": false, "note": "token authoring/emission → design-tokens / brand-to-tokens"},
13
- {"q": "generate a logo image for this bakery", "trigger": false, "note": "asset generation → logo-generation, not brand grounding"},
14
- {"q": "check whether this landing page copy is on-brand", "trigger": false, "note": "post-action validation → brand-consistency rule"},
15
- {"q": "what's a good serif font pairing for a magazine?", "trigger": false, "note": "font-pairing lookup with no brand frame → typography-system style path"}
16
- ]
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "last_eval": "2026-06-16",
3
- "should_trigger": [
4
- "Generate a banner for our product launch — use the brand colors from .tokens.json",
5
- "Create a social card for the Open Graph meta tag, 1200×630, matching our brand palette",
6
- "Make a LinkedIn cover image using our brand typography and voice",
7
- "Generate a CIP header element for the website hero section with brand-token injection",
8
- "Produce a branded social media image for the campaign — we have pack-brand installed"
9
- ],
10
- "should_not_trigger": [
11
- "Design a logo for our new startup",
12
- "Generate a product photo of a coffee mug on a white background",
13
- "Which image provider should I use for text-heavy images?",
14
- "Write a prompt for Midjourney to create a realistic landscape",
15
- "Create a brand strategy document outlining our positioning and target audience"
16
- ]
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "skill": "brand-audit",
3
- "last_eval": "2026-06-16",
4
- "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers auditing/inventorying current brand expression and flagging drift. Should-not covers near-miss neighbors.",
5
- "queries": [
6
- {"q": "audit our brand consistency across the site and decks", "trigger": true},
7
- {"q": "is our brand applied consistently — find where we drift", "trigger": true},
8
- {"q": "inventory how the logo and colours are used today across all touchpoints", "trigger": true},
9
- {"q": "baseline our current brand expression before the refresh", "trigger": true},
10
- {"q": "where does our copy drift from the brand voice", "trigger": true},
11
- {"q": "define a new brand strategy from scratch", "trigger": false, "note": "strategy definition -> brand-strategy"},
12
- {"q": "generate a new logo for us", "trigger": false, "note": "generation -> logo-generation"},
13
- {"q": "audit just the UI components to find reuse opportunities", "trigger": false, "note": "UI component inventory -> existing-ui-audit"},
14
- {"q": "emit our brand tokens as CSS custom properties", "trigger": false, "note": "emission -> brand-to-tokens"},
15
- {"q": "validate this single banner asset against the token spec in CI", "trigger": false, "note": "automated validation gate -> brand-consistency rule"}
16
- ]
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "skill": "brand-identity",
3
- "last_eval": "2026-06-16",
4
- "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers defining the identity constraint set (colour story, type story, logo direction) from a strategy. Should-not covers near-miss neighbors.",
5
- "queries": [
6
- {"q": "define the colour story for our brand based on this archetype", "trigger": true},
7
- {"q": "what type story fits a challenger archetype in the fintech sector", "trigger": true},
8
- {"q": "give me a logo direction for our identity — what mark style and form language fits", "trigger": true},
9
- {"q": "assemble the brand identity constraint set from our confirmed strategy", "trigger": true},
10
- {"q": "what imagery direction should we use for our brand — subject matter, mood, composition", "trigger": true},
11
- {"q": "who is our brand for and how should we position it in the market", "trigger": false, "note": "strategy -> brand-strategy"},
12
- {"q": "generate the actual logo image for our brand", "trigger": false, "note": "generation -> logo-generation"},
13
- {"q": "emit the colour tokens as CSS variables and a DTCG JSON file", "trigger": false, "note": "emission -> brand-to-tokens"},
14
- {"q": "pick a font pairing for a modern SaaS product with no brand frame yet", "trigger": false, "note": "style path -> typography-system"},
15
- {"q": "check whether this asset is on-brand and consistent with our guidelines", "trigger": false, "note": "validation -> brand-consistency rule"}
16
- ]
17
- }
@@ -1,17 +0,0 @@
1
- {
2
- "skill": "brand-strategy",
3
- "last_eval": "2026-06-16",
4
- "description": "5 should-trigger + 5 should-not-trigger. Should-trigger covers grounding brand strategy (archetype, positioning, voice, messaging). Should-not covers near-miss neighbors.",
5
- "queries": [
6
- {"q": "which brand archetype fits a B2B SaaS startup targeting mid-market ops teams", "trigger": true},
7
- {"q": "write an opposable positioning statement for our challenger brand", "trigger": true},
8
- {"q": "define the voice and tone profile for our brand — what do we sound like and what do we never say", "trigger": true},
9
- {"q": "which messaging framework should we use — jobs-to-be-done or category creation", "trigger": true},
10
- {"q": "who is this brand actually for and what makes us different from the obvious competitors", "trigger": true},
11
- {"q": "what UI style and colour palette should the dashboard use", "trigger": false, "note": "frontend style grounding -> design-intelligence"},
12
- {"q": "generate a logo image for our new product line", "trigger": false, "note": "asset generation -> logo-generation"},
13
- {"q": "emit our brand colours as CSS custom properties and a DTCG token file", "trigger": false, "note": "token emission -> brand-to-tokens / design-tokens"},
14
- {"q": "check whether this landing page copy is consistent with our brand voice", "trigger": false, "note": "validation -> brand-consistency rule"},
15
- {"q": "audit how consistently our brand is applied across our marketing site and product", "trigger": false, "note": "audit -> brand-audit"}
16
- ]
17
- }