@event4u/agent-config 1.15.0 → 1.16.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 (244) hide show
  1. package/.agent-src/commands/bug-fix.md +1 -1
  2. package/.agent-src/commands/bug-investigate.md +2 -2
  3. package/.agent-src/commands/chat-history-checkpoint.md +1 -1
  4. package/.agent-src/commands/chat-history-clear.md +1 -1
  5. package/.agent-src/commands/chat-history.md +1 -1
  6. package/.agent-src/commands/check-current-md.md +1 -1
  7. package/.agent-src/commands/council-design.md +96 -0
  8. package/.agent-src/commands/council-optimize.md +115 -0
  9. package/.agent-src/commands/council-pr.md +123 -0
  10. package/.agent-src/commands/council.md +219 -0
  11. package/.agent-src/commands/create-pr.md +23 -0
  12. package/.agent-src/commands/do-and-judge.md +3 -3
  13. package/.agent-src/commands/do-in-steps.md +4 -4
  14. package/.agent-src/commands/e2e-heal.md +1 -1
  15. package/.agent-src/commands/e2e-plan.md +1 -1
  16. package/.agent-src/commands/feature-dev.md +8 -0
  17. package/.agent-src/commands/feature-explore.md +6 -1
  18. package/.agent-src/commands/feature-plan.md +33 -2
  19. package/.agent-src/commands/feature-refactor.md +5 -0
  20. package/.agent-src/commands/feature-roadmap.md +6 -1
  21. package/.agent-src/commands/feature.md +58 -0
  22. package/.agent-src/commands/fix-ci.md +5 -0
  23. package/.agent-src/commands/fix-portability.md +5 -0
  24. package/.agent-src/commands/fix-pr-bot-comments.md +5 -0
  25. package/.agent-src/commands/fix-pr-comments.md +5 -0
  26. package/.agent-src/commands/fix-pr-developer-comments.md +5 -0
  27. package/.agent-src/commands/fix-references.md +5 -0
  28. package/.agent-src/commands/fix-seeder.md +5 -0
  29. package/.agent-src/commands/fix.md +60 -0
  30. package/.agent-src/commands/jira-ticket.md +1 -1
  31. package/.agent-src/commands/judge.md +1 -1
  32. package/.agent-src/commands/memory-add.md +3 -3
  33. package/.agent-src/commands/memory-full.md +2 -2
  34. package/.agent-src/commands/memory-promote.md +2 -2
  35. package/.agent-src/commands/mode.md +5 -5
  36. package/.agent-src/commands/onboard.md +3 -3
  37. package/.agent-src/commands/optimize-agents.md +6 -1
  38. package/.agent-src/commands/optimize-augmentignore.md +5 -0
  39. package/.agent-src/commands/optimize-rtk-filters.md +5 -0
  40. package/.agent-src/commands/optimize-skills.md +6 -1
  41. package/.agent-src/commands/optimize.md +54 -0
  42. package/.agent-src/commands/propose-memory.md +2 -2
  43. package/.agent-src/commands/review-changes.md +26 -1
  44. package/.agent-src/commands/review-routing.md +1 -1
  45. package/.agent-src/commands/roadmap-create.md +29 -2
  46. package/.agent-src/commands/set-cost-profile.md +3 -3
  47. package/.agent-src/commands/sync-agent-settings.md +2 -2
  48. package/.agent-src/commands/tests-create.md +1 -1
  49. package/.agent-src/commands/upstream-contribute.md +1 -1
  50. package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
  51. package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
  52. package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
  53. package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
  54. package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
  55. package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
  56. package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
  57. package/.agent-src/personas/README.md +1 -1
  58. package/.agent-src/rules/agent-authority.md +24 -0
  59. package/.agent-src/rules/architecture.md +1 -1
  60. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  61. package/.agent-src/rules/artifact-engagement-recording.md +1 -1
  62. package/.agent-src/rules/ask-when-uncertain.md +1 -1
  63. package/.agent-src/rules/autonomous-execution.md +78 -114
  64. package/.agent-src/rules/capture-learnings.md +1 -1
  65. package/.agent-src/rules/chat-history-cadence.md +3 -3
  66. package/.agent-src/rules/chat-history-ownership.md +3 -3
  67. package/.agent-src/rules/chat-history-visibility.md +3 -3
  68. package/.agent-src/rules/{command-suggestion.md → command-suggestion-policy.md} +7 -7
  69. package/.agent-src/rules/commit-conventions.md +1 -1
  70. package/.agent-src/rules/commit-policy.md +14 -42
  71. package/.agent-src/rules/context-hygiene.md +3 -3
  72. package/.agent-src/rules/direct-answers.md +1 -1
  73. package/.agent-src/rules/docs-sync.md +1 -1
  74. package/.agent-src/rules/e2e-testing.md +1 -1
  75. package/.agent-src/rules/guidelines.md +4 -4
  76. package/.agent-src/rules/improve-before-implement.md +2 -2
  77. package/.agent-src/rules/language-and-tone.md +37 -96
  78. package/.agent-src/rules/minimal-safe-diff.md +3 -3
  79. package/.agent-src/rules/model-recommendation.md +4 -4
  80. package/.agent-src/rules/no-cheap-questions.md +89 -0
  81. package/.agent-src/rules/non-destructive-by-default.md +15 -49
  82. package/.agent-src/rules/onboarding-gate.md +5 -5
  83. package/.agent-src/rules/review-routing-awareness.md +9 -9
  84. package/.agent-src/rules/roadmap-progress-sync.md +26 -33
  85. package/.agent-src/rules/role-mode-adherence.md +2 -2
  86. package/.agent-src/rules/scope-control.md +65 -46
  87. package/.agent-src/rules/security-sensitive-stop.md +2 -2
  88. package/.agent-src/rules/size-enforcement.md +1 -1
  89. package/.agent-src/rules/think-before-action.md +5 -5
  90. package/.agent-src/rules/token-efficiency.md +4 -4
  91. package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +3 -3
  92. package/.agent-src/rules/user-interaction.md +3 -3
  93. package/.agent-src/rules/verify-before-complete.md +12 -67
  94. package/.agent-src/scripts/update_roadmap_progress.py +9 -4
  95. package/.agent-src/skills/ai-council/SKILL.md +333 -0
  96. package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
  97. package/.agent-src/skills/blade-ui/SKILL.md +1 -1
  98. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  99. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
  100. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  101. package/.agent-src/skills/command-writing/SKILL.md +1 -1
  102. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -1
  103. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  104. package/.agent-src/skills/developer-like-execution/SKILL.md +2 -2
  105. package/.agent-src/skills/flux/SKILL.md +1 -1
  106. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  107. package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
  108. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  109. package/.agent-src/skills/livewire/SKILL.md +1 -1
  110. package/.agent-src/skills/override-management/SKILL.md +2 -2
  111. package/.agent-src/skills/php-coder/SKILL.md +1 -1
  112. package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
  113. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  114. package/.agent-src/skills/readme-writing/SKILL.md +1 -1
  115. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -1
  116. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -1
  117. package/.agent-src/skills/review-routing/SKILL.md +2 -2
  118. package/.agent-src/skills/rule-writing/SKILL.md +1 -1
  119. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  120. package/.agent-src/skills/skill-writing/SKILL.md +3 -3
  121. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
  122. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -1
  123. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
  124. package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  125. package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +2 -2
  126. package/.agent-src/templates/agent-settings.md +8 -8
  127. package/.agent-src/templates/contexts/auth-model.md +1 -1
  128. package/.agent-src/templates/scripts/README.md +2 -2
  129. package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
  130. package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
  131. package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
  132. package/.agent-src/templates/scripts/telemetry_record.py +14 -1
  133. package/.claude-plugin/marketplace.json +10 -2
  134. package/AGENTS.md +11 -9
  135. package/CHANGELOG.md +123 -1
  136. package/README.md +28 -30
  137. package/config/agent-settings.template.yml +58 -1
  138. package/config/gitignore-block.txt +3 -0
  139. package/docs/architecture.md +4 -4
  140. package/docs/catalog.md +331 -0
  141. package/docs/contracts/STABILITY.md +39 -0
  142. package/docs/contracts/adr-command-suggestion.md +3 -3
  143. package/docs/contracts/adr-product-ui-track.md +2 -2
  144. package/docs/contracts/agent-memory-contract.md +2 -2
  145. package/docs/contracts/artifact-engagement-flow.md +1 -1
  146. package/docs/contracts/command-clusters.md +2 -2
  147. package/docs/contracts/command-suggestion-flow.md +3 -3
  148. package/docs/contracts/implement-ticket-flow.md +2 -2
  149. package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
  150. package/docs/contracts/load-context-schema.md +186 -0
  151. package/docs/contracts/rule-interactions.yml +96 -0
  152. package/docs/contracts/rule-priority-hierarchy.md +87 -0
  153. package/docs/contracts/ui-track-flow.md +1 -1
  154. package/docs/customization.md +14 -0
  155. package/docs/end-to-end-walkthroughs.md +165 -0
  156. package/docs/getting-started.md +26 -8
  157. package/docs/github-topics.md +12 -3
  158. package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
  159. package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
  160. package/docs/guidelines/php/git.md +164 -0
  161. package/docs/migrations/commands-1.15.0.md +1 -1
  162. package/docs/showcase.md +9 -4
  163. package/docs/skills-catalog.md +14 -8
  164. package/docs/ui-track-mental-model.md +2 -2
  165. package/llms.txt +13 -7
  166. package/package.json +1 -1
  167. package/scripts/agent-config +23 -0
  168. package/scripts/ai_council/__init__.py +39 -0
  169. package/scripts/ai_council/_default_prices.py +41 -0
  170. package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
  171. package/scripts/ai_council/_one_off_roundtrip.py +106 -0
  172. package/scripts/ai_council/budget_guard.py +172 -0
  173. package/scripts/ai_council/bundler.py +261 -0
  174. package/scripts/ai_council/clients.py +381 -0
  175. package/scripts/ai_council/modes.py +127 -0
  176. package/scripts/ai_council/orchestrator.py +350 -0
  177. package/scripts/ai_council/pricing.py +213 -0
  178. package/scripts/ai_council/project_context.py +159 -0
  179. package/scripts/ai_council/prompts.py +232 -0
  180. package/scripts/ai_council/session.py +144 -0
  181. package/scripts/check_always_budget.py +126 -0
  182. package/scripts/check_augmentignore.py +69 -0
  183. package/scripts/check_command_count_messaging.py +120 -0
  184. package/scripts/check_portability.py +55 -0
  185. package/scripts/check_public_catalog_links.py +122 -0
  186. package/scripts/check_references.py +4 -1
  187. package/scripts/check_roadmap_trackable.py +111 -0
  188. package/scripts/command_suggester/cooldown.py +1 -1
  189. package/scripts/generate_index.py +266 -0
  190. package/scripts/install_anthropic_key.sh +5 -0
  191. package/scripts/install_openai_key.sh +106 -0
  192. package/scripts/lint_load_context.py +163 -0
  193. package/scripts/schemas/command.schema.json +20 -0
  194. package/scripts/schemas/rule.schema.json +10 -0
  195. package/scripts/skill_linter.py +12 -4
  196. package/scripts/sync_agent_settings.py +1 -1
  197. package/scripts/update_counts.py +9 -4
  198. package/scripts/update_prices.py +124 -0
  199. package/.agent-src/guidelines/php/git.md +0 -96
  200. /package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +0 -0
  201. /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
  202. /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
  203. /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
  204. /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
  205. /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
  206. /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
  207. /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
  208. /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
  209. /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
  210. /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
  211. /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
  212. /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
  213. /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
  214. /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
  215. /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
  216. /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
  217. /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
  218. /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
  219. /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
  220. /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
  221. /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
  222. /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
  223. /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
  224. /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
  225. /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
  226. /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
  227. /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
  228. /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
  229. /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
  230. /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
  231. /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
  232. /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
  233. /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
  234. /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
  235. /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
  236. /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
  237. /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
  238. /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
  239. /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
  240. /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
  241. /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
  242. /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
  243. /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
  244. /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
@@ -138,7 +138,7 @@ links over stacked inline blocks. Occasionally-needed detail (long
138
138
  platform quirks, troubleshooting): use `<details>` — never for install,
139
139
  first example, or requirements.
140
140
 
141
- → See `guidelines/docs/readme-size-and-splitting.md` for thresholds,
141
+ → See `docs/guidelines/docs/readme-size-and-splitting.md` for thresholds,
142
142
  deep-link-table pattern, collapsibles, anti-patterns (premature
143
143
  splitting, duplication between README and `/docs/`).
144
144
 
@@ -75,7 +75,7 @@ For each blocking/important comment:
75
75
  * Check whether the suggested fix would break another test or caller
76
76
  * Check `git blame` / history — current code may be that way for a reason
77
77
  * **Consult memory for prior context.** Via
78
- [`memory-access`](../../guidelines/agent-infra/memory-access.md),
78
+ [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md),
79
79
  call `retrieve(types=["historical-patterns", "architecture-decisions"],
80
80
  keys=<files in the review>, limit=3)`. A registered historical pattern
81
81
  may confirm the reviewer's concern (accept) or an architecture
@@ -53,7 +53,7 @@ back. If neither file exists, emit the generic role-based fallback
53
53
  using [`reviewer-awareness`](../../rules/reviewer-awareness.md).
54
54
 
55
55
  **Also** pull agent-written signals via the shared abstraction (see
56
- [`memory-access`](../../guidelines/agent-infra/memory-access.md)):
56
+ [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md)):
57
57
 
58
58
  ```python
59
59
  from scripts.memory_lookup import retrieve
@@ -189,7 +189,7 @@ Data source: <"ownership-map.yml + historical-bug-patterns.yml"
189
189
 
190
190
  - [`reviewer-awareness`](../../rules/reviewer-awareness.md)
191
191
  - [`review-routing-awareness`](../../rules/review-routing-awareness.md)
192
- - [`review-routing-data-format`](../../guidelines/agent-infra/review-routing-data-format.md)
192
+ - [`review-routing-data-format`](../../../docs/guidelines/agent-infra/review-routing-data-format.md)
193
193
  - [`create-pr-description`](../create-pr-description/SKILL.md)
194
194
  - [`judge-test-coverage`](../judge-test-coverage/SKILL.md) — consumes
195
195
  the `required_test` entries from matched patterns.
@@ -85,7 +85,7 @@ no silent edits, max two rounds.
85
85
  ### 4. Enforce the size budget
86
86
 
87
87
  Normative source: [`size-enforcement`](../../rules/size-enforcement.md) +
88
- `guidelines/agent-infra/size-and-scope.md`.
88
+ `docs/guidelines/agent-infra/size-and-scope.md`.
89
89
 
90
90
  | Category | Target |
91
91
  |---|---|
@@ -83,7 +83,7 @@ The highest-signal content in a skill. Documents failure patterns.
83
83
 
84
84
  ### Killer 5: Monolithic Blob
85
85
 
86
- Skill exceeds size limits (see `guidelines/agent-infra/size-and-scope.md`).
86
+ Skill exceeds size limits (see `docs/guidelines/agent-infra/size-and-scope.md`).
87
87
 
88
88
  **Check:** Review at >300 lines. Strongly consider split at >1200 words / >1500 words.
89
89
  **Fix:** Extract reference tables, templates, and examples into separate files
@@ -70,7 +70,7 @@ Do NOT create a skill or rule for:
70
70
 
71
71
  ### Size and structure hints
72
72
 
73
- → See `guidelines/agent-infra/size-and-scope.md` for full limits.
73
+ → See `docs/guidelines/agent-infra/size-and-scope.md` for full limits.
74
74
 
75
75
  * Target: 300–900 words. Review for split above 1200 words. Strongly consider split above 1500 words.
76
76
  * If multiple workflows exist → split into multiple skills
@@ -262,7 +262,7 @@ Example:
262
262
 
263
263
  Skills may declare an `execution` frontmatter block (`type`, `handler`,
264
264
  `timeout_seconds`, `safety_mode`, `allowed_tools`). Default is `manual`
265
- (instructional only). See `guidelines/agent-infra/runtime-layer.md` for
265
+ (instructional only). See `docs/guidelines/agent-infra/runtime-layer.md` for
266
266
  the full specification and `assisted` / `automated` semantics.
267
267
 
268
268
  ### When to create a `project-analysis-*` skill
@@ -285,5 +285,5 @@ utility libs, or simple state managers.
285
285
 
286
286
  * Write documentation-style, pointer-only, or too-broad skills ("Laravel skill")
287
287
  * Skip Procedure or use vague validation
288
- * Exceed size limits (see `guidelines/agent-infra/size-and-scope.md`)
288
+ * Exceed size limits (see `docs/guidelines/agent-infra/size-and-scope.md`)
289
289
  * Duplicate rules
@@ -187,4 +187,5 @@ the judge verdict.
187
187
  | Do-and-judge loop | [`/do-and-judge`](../../commands/do-and-judge.md) |
188
188
  | Stepwise plan with judge gates | [`/do-in-steps`](../../commands/do-in-steps.md) |
189
189
  | Standalone judge on an existing diff | [`/judge`](../../commands/judge.md) |
190
+ | External / networked second opinion | [`ai-council`](../ai-council/SKILL.md) |
190
191
  | Verifying completeness | [`verify-before-complete`](../verify-before-complete/SKILL.md) |
@@ -72,7 +72,7 @@ Goal: locate the failure in a single component, layer, or call site.
72
72
  3. Check recent changes: `git log`, `git blame` on the failing line,
73
73
  recent dependency updates, config edits, infra changes.
74
74
  4. **Consult memory for prior matches.** Via
75
- [`memory-access`](../../guidelines/agent-infra/memory-access.md):
75
+ [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md):
76
76
  ```python
77
77
  from scripts.memory_lookup import retrieve
78
78
  priors = retrieve(
@@ -178,7 +178,7 @@ If not in the package repo, note that these checks will run in CI after the PR i
178
178
 
179
179
  If the contribution originates from a proposal under `agents/proposals/`
180
180
  (produced by `learning-to-rule-or-skill` via the pipeline in
181
- [`self-improvement-pipeline`](../../guidelines/agent-infra/self-improvement-pipeline.md)),
181
+ [`self-improvement-pipeline`](../../../docs/guidelines/agent-infra/self-improvement-pipeline.md)),
182
182
  run the Stage-4 gate before opening the PR:
183
183
 
184
184
  ```bash
@@ -45,7 +45,7 @@ Verify the request doesn't conflict with:
45
45
  - Data flow (does it bypass existing services or repositories?)
46
46
  - **Product rules and domain invariants** — pull active rules via the
47
47
  shared abstraction (see
48
- [`memory-access`](../../guidelines/agent-infra/memory-access.md)):
48
+ [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md)):
49
49
 
50
50
  ```python
51
51
  from scripts.memory_lookup import retrieve
@@ -60,7 +60,7 @@ Verify the request doesn't conflict with:
60
60
  (e.g., "free plan caps at 3 users"); the feature must either respect
61
61
  it or explicitly propose to retire it. Cite the matching `id:` in
62
62
  the findings. Schema:
63
- [`engineering-memory-data-format`](../../guidelines/agent-infra/engineering-memory-data-format.md).
63
+ [`engineering-memory-data-format`](../../../docs/guidelines/agent-infra/engineering-memory-data-format.md).
64
64
 
65
65
  **If contradiction found** → show the existing pattern, explain why it matters.
66
66
 
@@ -1,10 +1,10 @@
1
1
  ---
2
- name: verify-before-complete
2
+ name: verify-completion-evidence
3
3
  description: "Use when claiming 'done', suggesting a commit, push, or PR — runs the evidence gate so completion claims come from fresh output in this message, not memory or earlier runs."
4
4
  source: package
5
5
  ---
6
6
 
7
- # verify-before-complete
7
+ # verify-completion-evidence
8
8
 
9
9
  ## When to use
10
10
 
@@ -14,7 +14,7 @@ Keep the format regular — 2-space indent, no tabs, no lists, one nesting
14
14
  level only. The installer's YAML handler is a restricted stdlib parser, not
15
15
  a full YAML engine. Ask the agent to normalize after manual edits — it
16
16
  follows the merge rules in
17
- [`layered-settings`](../guidelines/agent-infra/layered-settings.md#section-aware-merge-rules).
17
+ [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules).
18
18
 
19
19
  ### Migration from the legacy `.agent-settings` (key=value)
20
20
 
@@ -36,7 +36,7 @@ This block defines the personal and project-level settings that
36
36
  `scripts/install.py` (via `config/agent-settings.template.yml`)
37
37
  writes to `.agent-settings.yml` on first install. Subsequent edits are
38
38
  made by the user directly or by the agent on request, following the
39
- [section-aware merge rules](../guidelines/agent-infra/layered-settings.md#section-aware-merge-rules).
39
+ [section-aware merge rules](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules).
40
40
 
41
41
  ```yaml
42
42
  # Agent Settings
@@ -276,7 +276,7 @@ onboarding:
276
276
  # When the user's free-form prompt matches an eligible slash command,
277
277
  # the agent surfaces a numbered-options block with the recommendation
278
278
  # plus an always-present "run as-is" option. The suggestion layer
279
- # never auto-executes — the user picks. See `rules/command-suggestion.md`.
279
+ # never auto-executes — the user picks. See `rules/command-suggestion-policy.md`.
280
280
  commands:
281
281
  suggestion:
282
282
  # Master switch (true, false). `false` = the layer is silent;
@@ -328,7 +328,7 @@ telemetry:
328
328
 
329
329
  Personal and project-level settings (initial file written by
330
330
  `scripts/install.py`, edits follow the merge rules in
331
- [`layered-settings`](../guidelines/agent-infra/layered-settings.md#section-aware-merge-rules)).
331
+ [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules)).
332
332
  **Key paths use dot-notation** to denote nesting: `personal.user_name`
333
333
  lives under `personal:` in YAML.
334
334
 
@@ -365,12 +365,12 @@ lives under `personal:` in YAML.
365
365
  | `subagents.implementer_model` | model alias or empty | _(empty)_ | Model for implementer subagents. Empty = same tier as session model. See [subagent-configuration](../contexts/subagent-configuration.md). |
366
366
  | `subagents.judge_model` | model alias or empty | _(empty)_ | Model for judge subagents. Empty = one tier above implementer (opus if sonnet, sonnet if haiku). |
367
367
  | `subagents.max_parallel` | integer | `3` | Maximum parallel subagent invocations. `1` serializes. |
368
- | `roles.default_role` | `""`, `developer`, `reviewer`, `tester`, `po`, `incident`, `planner` | _(empty)_ | Role the agent defaults to at the start of a session. See [`role-contracts`](../guidelines/agent-infra/role-contracts.md). |
368
+ | `roles.default_role` | `""`, `developer`, `reviewer`, `tester`, `po`, `incident`, `planner` | _(empty)_ | Role the agent defaults to at the start of a session. See [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md). |
369
369
  | `roles.active_role` | same as `default_role` | _(empty)_ | Role currently active; set by `/mode <name>`, cleared by `/mode none`. Enables the `role-mode-adherence` rule. |
370
- | `personas.override` | list of persona ids | `[]` | Developer-local override of the team default lens cast. Empty = inherit `personas.default` from `.agent-project-settings.yml`. See [`layered-settings`](../guidelines/agent-infra/layered-settings.md). |
370
+ | `personas.override` | list of persona ids | `[]` | Developer-local override of the team default lens cast. Empty = inherit `personas.default` from `.agent-project-settings.yml`. See [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md). |
371
371
  | `personas.ignore` | list of persona ids | `[]` | Persona ids dropped from the default cast locally. Ignored personas stay invokable via `--personas=<id>`. |
372
372
  | `onboarding.onboarded` | `true`, `false` | `false` | Whether `/onboard` has run on this project. The `onboarding-gate` rule prompts for `/onboard` when this is `false`. Missing entirely = legacy project, treated as onboarded. |
373
- | `commands.suggestion.enabled` | `true`, `false` | `true` | Master switch for the command-suggestion layer. `false` = the layer is silent; explicit `/commands` still work. See `rules/command-suggestion.md`. |
373
+ | `commands.suggestion.enabled` | `true`, `false` | `true` | Master switch for the command-suggestion layer. `false` = the layer is silent; explicit `/commands` still work. See `rules/command-suggestion-policy.md`. |
374
374
  | `commands.suggestion.confidence_floor` | `0.0`–`1.0` | `0.6` | Minimum match score before a suggestion surfaces. Per-command frontmatter (`suggestion.confidence_floor`) overrides this global floor. |
375
375
  | `commands.suggestion.cooldown_seconds` | integer | `600` | Cooldown between re-suggestions of the same `(command, evidence)` pair. `600` = 10m. |
376
376
  | `commands.suggestion.max_options` | integer | `4` | Max number of command suggestions before the always-present "run as-is" option (total rendered = `max_options + 1`). |
@@ -432,7 +432,7 @@ they ship with a live consumer in code and get documented here, not before.
432
432
  ## Sync rules
433
433
 
434
434
  When new settings are added to this template, the
435
- [section-aware merge rules](../guidelines/agent-infra/layered-settings.md#section-aware-merge-rules)
435
+ [section-aware merge rules](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules)
436
436
  govern the update:
437
437
 
438
438
  1. Missing keys are added with their **default value** from this template,
@@ -55,5 +55,5 @@
55
55
 
56
56
  - `agents/contexts/tenant-boundaries.md` — tenancy scope, multi-tenant
57
57
  rules that sit on top of the role model
58
- - `.augment/guidelines/agent-infra/*` — reviewer skills that read this
58
+ - `../../../docs/guidelines/agent-infra/*` — reviewer skills that read this
59
59
  file
@@ -111,7 +111,7 @@ _Data source: ownership-map.yml + historical-bug-patterns.yml. …_
111
111
  ```
112
112
 
113
113
  Curate `ownership-map.yml` and `historical-bug-patterns.yml` over time —
114
- see `.augment/guidelines/agent-infra/review-routing-data-format.md` for
114
+ see `../../../docs/guidelines/agent-infra/review-routing-data-format.md` for
115
115
  the full schema.
116
116
 
117
117
  ## Uninstall
@@ -191,5 +191,5 @@ python3 scripts/check_memory.py --path agents/memory
191
191
  Exit `0` = clean, `1` = violations (missing required fields, duplicate
192
192
  ids, or obvious secrets — staleness alone is informational).
193
193
 
194
- Schema reference: `.augment/guidelines/agent-infra/engineering-memory-data-format.md`.
194
+ Schema reference: `../../../docs/guidelines/agent-infra/engineering-memory-data-format.md`.
195
195
  Schema examples: `.augment/templates/agents/memory/*.example.yml`.
@@ -26,7 +26,12 @@ from datetime import datetime, timezone
26
26
  from pathlib import Path
27
27
  from typing import Iterable, Iterator
28
28
 
29
- from .engagement import EngagementEvent, EngagementSchemaError, parse_event
29
+ from .engagement import (
30
+ ALLOWED_OUTCOMES,
31
+ EngagementEvent,
32
+ EngagementSchemaError,
33
+ parse_event,
34
+ )
30
35
 
31
36
 
32
37
  @dataclass(frozen=True)
@@ -53,6 +58,10 @@ class AggregateResult:
53
58
  earliest_ts: str | None = None
54
59
  latest_ts: str | None = None
55
60
  artefacts: dict[tuple[str, str], dict[str, object]] = field(default_factory=dict)
61
+ # Event-level outcome counts (boundary outcomes, not per-artefact).
62
+ # Initialised lazily in :func:`aggregate` so empty logs yield an
63
+ # empty dict rather than zeros across all five categories.
64
+ outcomes: dict[str, int] = field(default_factory=dict)
56
65
 
57
66
  def stats(self) -> list[ArtefactStat]:
58
67
  """Materialise the accumulated buckets as immutable stats."""
@@ -121,6 +130,12 @@ def aggregate(
121
130
  if result.latest_ts is None or event.ts > result.latest_ts:
122
131
  result.latest_ts = event.ts
123
132
  _accumulate(result.artefacts, event.consulted, event.applied, event.ts)
133
+ if event.outcomes:
134
+ for label in event.outcomes:
135
+ # Validator already restricted to ALLOWED_OUTCOMES, but
136
+ # the explicit guard documents intent and is cheap.
137
+ if label in ALLOWED_OUTCOMES:
138
+ result.outcomes[label] = result.outcomes.get(label, 0) + 1
124
139
  return result
125
140
 
126
141
 
@@ -10,9 +10,24 @@ adds the redaction validator on top. The contract here is:
10
10
  "boundary_kind": "task" | "phase-step" | "tool-call",
11
11
  "consulted": {"skills": [...], "rules": [...], ...},
12
12
  "applied": {"skills": [...], "rules": [...], ...},
13
+ "outcomes": ["blocked", "verification_failed", ...] # optional
13
14
  "tokens_estimate": {"consulted_load": <int>} # optional
14
15
  }
15
16
 
17
+ Outcomes (optional, additive in schema v1) capture *what happened*
18
+ during the boundary, not which artefacts were consulted. The five
19
+ allowed categories are scoped tightly so reports stay actionable:
20
+
21
+ - ``blocked`` — Hard-Floor / scope-control gate fired, work paused.
22
+ - ``partial`` — boundary closed without finishing the planned scope.
23
+ - ``memory_influenced_decision`` — a memory entry shaped a non-trivial decision.
24
+ - ``verification_failed`` — verify-before-complete gate rejected the result.
25
+ - ``stop_rule_triggered`` — context-hygiene 3-failure / tool-loop stop fired.
26
+
27
+ Outcomes compose: a single boundary may carry multiple. Order is
28
+ preserved as recorded; duplicates are rejected to keep reports
29
+ honest.
30
+
16
31
  Design choices:
17
32
 
18
33
  - Dataclass + manual ``validate()`` (no pydantic — keep the engine
@@ -48,6 +63,18 @@ ALLOWED_BOUNDARY_KINDS: tuple[str, ...] = (
48
63
  "tool-call",
49
64
  )
50
65
 
66
+ # Outcome categories — see module docstring for semantics. The set is
67
+ # intentionally small; widening requires an explicit follow-up roadmap
68
+ # step. Reports group by these labels, so renaming is breaking.
69
+ ALLOWED_OUTCOMES: tuple[str, ...] = (
70
+ "blocked",
71
+ "partial",
72
+ "memory_influenced_decision",
73
+ "verification_failed",
74
+ "stop_rule_triggered",
75
+ )
76
+ MAX_OUTCOMES_PER_EVENT = len(ALLOWED_OUTCOMES)
77
+
51
78
  # Phase 5 redaction validator — keep id fields from leaking paths,
52
79
  # free-text, or filenames. Repository-internal artefact ids and
53
80
  # task ids never contain these characters.
@@ -115,6 +142,7 @@ class EngagementEvent:
115
142
  boundary_kind: str
116
143
  consulted: dict[str, list[str]] = field(default_factory=dict)
117
144
  applied: dict[str, list[str]] = field(default_factory=dict)
145
+ outcomes: list[str] | None = None
118
146
  tokens_estimate: dict[str, int] | None = None
119
147
  schema_version: int = SCHEMA_VERSION
120
148
 
@@ -134,6 +162,8 @@ class EngagementEvent:
134
162
  )
135
163
  _validate_artefact_dict("consulted", self.consulted)
136
164
  _validate_artefact_dict("applied", self.applied)
165
+ if self.outcomes is not None:
166
+ _validate_outcomes(self.outcomes)
137
167
  if self.tokens_estimate is not None:
138
168
  if not isinstance(self.tokens_estimate, dict):
139
169
  raise EngagementSchemaError(
@@ -160,6 +190,8 @@ class EngagementEvent:
160
190
  "consulted": _normalise_artefact_dict(self.consulted),
161
191
  "applied": _normalise_artefact_dict(self.applied),
162
192
  }
193
+ if self.outcomes:
194
+ out["outcomes"] = list(self.outcomes)
163
195
  if self.tokens_estimate:
164
196
  out["tokens_estimate"] = dict(self.tokens_estimate)
165
197
  return out
@@ -198,6 +230,32 @@ def _normalise_artefact_dict(payload: dict[str, list[str]]) -> dict[str, list[st
198
230
  return {kind: list(payload[kind]) for kind in ALLOWED_KINDS if payload.get(kind)}
199
231
 
200
232
 
233
+ def _validate_outcomes(payload: Any) -> None:
234
+ if not isinstance(payload, list):
235
+ raise EngagementSchemaError(
236
+ "outcomes must be a list of str or None"
237
+ )
238
+ if len(payload) > MAX_OUTCOMES_PER_EVENT:
239
+ raise EngagementSchemaError(
240
+ f"outcomes exceeds {MAX_OUTCOMES_PER_EVENT} entries"
241
+ )
242
+ seen: set[str] = set()
243
+ for label in payload:
244
+ if not isinstance(label, str) or not label:
245
+ raise EngagementSchemaError(
246
+ "outcomes must contain non-empty str labels"
247
+ )
248
+ if label not in ALLOWED_OUTCOMES:
249
+ raise EngagementSchemaError(
250
+ f"outcomes contains {label!r}; allowed: {ALLOWED_OUTCOMES!r}"
251
+ )
252
+ if label in seen:
253
+ raise EngagementSchemaError(
254
+ f"outcomes contains duplicate {label!r}"
255
+ )
256
+ seen.add(label)
257
+
258
+
201
259
  def parse_event(line: str) -> EngagementEvent:
202
260
  if not isinstance(line, str) or not line.strip():
203
261
  raise EngagementSchemaError("line must be a non-empty JSONL record")
@@ -213,6 +271,7 @@ def parse_event(line: str) -> EngagementEvent:
213
271
  boundary_kind=raw.get("boundary_kind", ""),
214
272
  consulted=raw.get("consulted", {}) or {},
215
273
  applied=raw.get("applied", {}) or {},
274
+ outcomes=raw.get("outcomes"),
216
275
  tokens_estimate=raw.get("tokens_estimate"),
217
276
  schema_version=raw.get("schema_version", SCHEMA_VERSION),
218
277
  )
@@ -20,7 +20,7 @@ from dataclasses import dataclass
20
20
  from typing import Any, Sequence
21
21
 
22
22
  from .aggregator import AggregateResult, ArtefactStat, rank_artefacts
23
- from .engagement import check_id_redaction
23
+ from .engagement import ALLOWED_OUTCOMES, check_id_redaction
24
24
 
25
25
  QUARTILE_TOP_RATIO = 0.20
26
26
  QUARTILE_BOTTOM_RATIO = 0.20
@@ -93,6 +93,23 @@ def render_markdown(
93
93
  lines.append(f"- ts range: `{aggregate.earliest_ts}` → `{aggregate.latest_ts}`")
94
94
  lines.append("")
95
95
 
96
+ # Outcomes summary — one row per category, in declared order, only
97
+ # when the log carries any outcome data. Stable column order so two
98
+ # reports over the same log render byte-identical.
99
+ outcomes_total = sum(aggregate.outcomes.values())
100
+ if outcomes_total:
101
+ lines.append("## Outcomes")
102
+ lines.append("")
103
+ lines.append("| outcome | count | share |")
104
+ lines.append("|---|---:|---:|")
105
+ for label in ALLOWED_OUTCOMES:
106
+ count = aggregate.outcomes.get(label, 0)
107
+ if not count:
108
+ continue
109
+ share = count / outcomes_total
110
+ lines.append(f"| {label} | {count} | {share:.2f} |")
111
+ lines.append("")
112
+
96
113
  titles = {
97
114
  BUCKET_TOP: "Essential (top 20 %)",
98
115
  BUCKET_MID: "Useful (mid 60 %)",
@@ -136,6 +153,15 @@ def render_json(
136
153
  if top is not None:
137
154
  for bucket in grouped:
138
155
  grouped[bucket] = grouped[bucket][:top]
156
+ # Outcomes — declared order, zeros omitted, total at top so callers
157
+ # can short-circuit without iterating the dict. Empty when no event
158
+ # in the window carried outcomes.
159
+ outcomes_total = sum(aggregate.outcomes.values())
160
+ outcomes_payload: dict[str, Any] = {"total": outcomes_total, "by_category": {}}
161
+ for label in ALLOWED_OUTCOMES:
162
+ count = aggregate.outcomes.get(label, 0)
163
+ if count:
164
+ outcomes_payload["by_category"][label] = count
139
165
  payload = {
140
166
  "schema_version": 1,
141
167
  "summary": {
@@ -146,6 +172,7 @@ def render_json(
146
172
  "latest_ts": aggregate.latest_ts,
147
173
  "since_label": since_label,
148
174
  },
175
+ "outcomes": outcomes_payload,
149
176
  "buckets": grouped,
150
177
  }
151
178
  return json.dumps(payload, sort_keys=True, indent=2) + "\n"
@@ -19,7 +19,8 @@ Usage:
19
19
  ./agent-config telemetry:record \\
20
20
  --task-id ticket-PROJ-42 --boundary task \\
21
21
  --consulted skills:php-coder --consulted rules:scope-control \\
22
- --applied skills:php-coder
22
+ --applied skills:php-coder \\
23
+ --outcome verification_failed --outcome stop_rule_triggered
23
24
 
24
25
  Exit codes:
25
26
  0 success or disabled (silent)
@@ -38,6 +39,7 @@ from pathlib import Path
38
39
  # the script is dispatched from the package or from a consumer copy.
39
40
  from telemetry.boundary import record_event
40
41
  from telemetry.engagement import (
42
+ ALLOWED_OUTCOMES,
41
43
  EngagementEvent,
42
44
  EngagementSchemaError,
43
45
  now_utc_iso,
@@ -71,6 +73,7 @@ def _build_event_from_args(args: argparse.Namespace) -> EngagementEvent:
71
73
  boundary_kind=args.boundary,
72
74
  consulted=_parse_kv_list(args.consulted or []),
73
75
  applied=_parse_kv_list(args.applied or []),
76
+ outcomes=list(args.outcome) if args.outcome else None,
74
77
  )
75
78
 
76
79
 
@@ -87,6 +90,7 @@ def _build_event_from_payload(raw: str) -> EngagementEvent:
87
90
  boundary_kind=data.get("boundary_kind", ""),
88
91
  consulted=data.get("consulted", {}) or {},
89
92
  applied=data.get("applied", {}) or {},
93
+ outcomes=data.get("outcomes"),
90
94
  tokens_estimate=data.get("tokens_estimate"),
91
95
  )
92
96
 
@@ -107,6 +111,15 @@ def main(argv: list[str] | None = None) -> int:
107
111
  )
108
112
  parser.add_argument("--consulted", action="append")
109
113
  parser.add_argument("--applied", action="append")
114
+ parser.add_argument(
115
+ "--outcome",
116
+ action="append",
117
+ choices=ALLOWED_OUTCOMES,
118
+ help=(
119
+ "Boundary outcome label; repeat for multiple. "
120
+ "Allowed: " + ", ".join(ALLOWED_OUTCOMES) + "."
121
+ ),
122
+ )
110
123
  parser.add_argument("--ts", default="")
111
124
  parser.add_argument("--payload-file", type=Path)
112
125
  parser.add_argument("--stdin", action="store_true")
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
9
- "version": "1.15.0"
9
+ "version": "1.16.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
@@ -22,6 +22,7 @@
22
22
  "./.claude/skills/agents-audit",
23
23
  "./.claude/skills/agents-cleanup",
24
24
  "./.claude/skills/agents-prepare",
25
+ "./.claude/skills/ai-council",
25
26
  "./.claude/skills/analysis-autonomous-mode",
26
27
  "./.claude/skills/analysis-skill-router",
27
28
  "./.claude/skills/analyze-reference-repo",
@@ -59,6 +60,10 @@
59
60
  "./.claude/skills/copilot-agents-optimization",
60
61
  "./.claude/skills/copilot-agents-optimize",
61
62
  "./.claude/skills/copilot-config",
63
+ "./.claude/skills/council",
64
+ "./.claude/skills/council-design",
65
+ "./.claude/skills/council-optimize",
66
+ "./.claude/skills/council-pr",
62
67
  "./.claude/skills/create-pr",
63
68
  "./.claude/skills/create-pr-description",
64
69
  "./.claude/skills/dashboard-design",
@@ -79,6 +84,7 @@
79
84
  "./.claude/skills/estimate-ticket",
80
85
  "./.claude/skills/existing-ui-audit",
81
86
  "./.claude/skills/fe-design",
87
+ "./.claude/skills/feature",
82
88
  "./.claude/skills/feature-dev",
83
89
  "./.claude/skills/feature-explore",
84
90
  "./.claude/skills/feature-plan",
@@ -87,6 +93,7 @@
87
93
  "./.claude/skills/feature-roadmap",
88
94
  "./.claude/skills/file-editor",
89
95
  "./.claude/skills/finishing-a-development-branch",
96
+ "./.claude/skills/fix",
90
97
  "./.claude/skills/fix-ci",
91
98
  "./.claude/skills/fix-portability",
92
99
  "./.claude/skills/fix-pr-bot-comments",
@@ -136,6 +143,7 @@
136
143
  "./.claude/skills/multi-tenancy",
137
144
  "./.claude/skills/onboard",
138
145
  "./.claude/skills/openapi",
146
+ "./.claude/skills/optimize",
139
147
  "./.claude/skills/optimize-agents",
140
148
  "./.claude/skills/optimize-augmentignore",
141
149
  "./.claude/skills/optimize-rtk-filters",
@@ -213,7 +221,7 @@
213
221
  "./.claude/skills/upstream-contribute",
214
222
  "./.claude/skills/using-git-worktrees",
215
223
  "./.claude/skills/validate-feature-fit",
216
- "./.claude/skills/verify-before-complete",
224
+ "./.claude/skills/verify-completion-evidence",
217
225
  "./.claude/skills/websocket",
218
226
  "./.claude/skills/work"
219
227
  ]
package/AGENTS.md CHANGED
@@ -14,8 +14,9 @@ when they install the package.
14
14
 
15
15
  ## What this repo is
16
16
 
17
- - A distribution package, not an application.
18
- - `type: library` in `composer.json`; no `app/` directory, no Laravel runtime.
17
+ - A distribution package, not an application of any framework.
18
+ - `type: library` in `composer.json`; no `app/` directory, no application
19
+ runtime (no Laravel, Symfony, Next.js, or other framework app code).
19
20
  - Published to Composer and npm as `event4u/agent-config` / `@event4u/agent-config`.
20
21
  - Installed into consumer projects via `scripts/install.sh` (Bash) and
21
22
  `scripts/install.py` (Python bridge).
@@ -43,8 +44,9 @@ and run `task sync` (or `task ci`) to compress + regenerate the tool directories
43
44
  - **Taskfile** — developer entrypoints (`task ci`, `task sync`, `task test`)
44
45
  - **GitHub Actions** — CI workflow under `.github/workflows/`
45
46
 
46
- No PHP, no Laravel, no JavaScript runtime dependencies. The `composer.json` /
47
- `package.json` are thin distribution manifests.
47
+ No application code or framework runtime (no Laravel / Symfony / Next.js /
48
+ Express). The `composer.json` / `package.json` are thin distribution
49
+ manifests.
48
50
 
49
51
  ## Working on this repo
50
52
 
@@ -78,7 +80,7 @@ When a user's free-form prompt matches a command's purpose, the agent
78
80
  surfaces matches as a numbered-options block with an always-present
79
81
  "run the prompt as-is" escape. **Nothing auto-executes** — the user
80
82
  picks every time. Engine: `scripts/command_suggester/`. Rule:
81
- [`.agent-src/rules/command-suggestion.md`](.agent-src/rules/command-suggestion.md).
83
+ [`.agent-src/rules/command-suggestion-policy.md`](.agent-src/rules/command-suggestion-policy.md).
82
84
  Locked eligibility table, scoring contract, and hardening list:
83
85
  [`docs/contracts/adr-command-suggestion.md`](docs/contracts/adr-command-suggestion.md)
84
86
  and
@@ -100,14 +102,14 @@ and
100
102
 
101
103
  ```
102
104
  .agent-src.uncompressed/ ← edit here
103
- skills/ (128 skills)
104
- rules/ (55 rules)
105
- commands/ (77 commands)
106
- guidelines/ (46 guidelines)
105
+ skills/ (129 skills)
106
+ rules/ (57 rules)
107
+ commands/ (84 files — 69 active + 15 deprecation shims)
107
108
  personas/ (7 personas)
108
109
  templates/ (AGENTS.md, copilot-instructions.md, skill.md, …)
109
110
  contexts/
110
111
 
112
+ docs/guidelines/ (47 guidelines — reference material, not packaged)
111
113
  .agent-src/ ← compressed output shipped in the package
112
114
  .augment/ ← local projection for Augment Code (gitignored)
113
115
  scripts/ ← install.sh, install.py, compress.py, linters