@event4u/agent-config 1.16.0 → 1.17.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 (203) hide show
  1. package/.agent-src/commands/{agents-audit.md → agents/audit.md} +4 -3
  2. package/.agent-src/commands/{agents-cleanup.md → agents/cleanup.md} +12 -6
  3. package/.agent-src/commands/{agents-prepare.md → agents/prepare.md} +4 -3
  4. package/.agent-src/commands/agents.md +46 -0
  5. package/.agent-src/commands/{chat-history-checkpoint.md → chat-history/checkpoint.md} +4 -4
  6. package/.agent-src/commands/{chat-history-clear.md → chat-history/clear.md} +4 -4
  7. package/.agent-src/commands/{chat-history-resume.md → chat-history/resume.md} +4 -4
  8. package/.agent-src/commands/chat-history/show.md +107 -0
  9. package/.agent-src/commands/chat-history.md +33 -89
  10. package/.agent-src/commands/{commit-in-chunks.md → commit/in-chunks.md} +15 -13
  11. package/.agent-src/commands/commit.md +22 -2
  12. package/.agent-src/commands/{context-create.md → context/create.md} +4 -3
  13. package/.agent-src/commands/{context-refactor.md → context/refactor.md} +4 -3
  14. package/.agent-src/commands/context.md +44 -0
  15. package/.agent-src/commands/{copilot-agents-init.md → copilot-agents/init.md} +4 -3
  16. package/.agent-src/commands/{copilot-agents-optimize.md → copilot-agents/optimize.md} +4 -3
  17. package/.agent-src/commands/copilot-agents.md +44 -0
  18. package/.agent-src/commands/council/default.md +221 -0
  19. package/.agent-src/commands/{council-design.md → council/design.md} +6 -5
  20. package/.agent-src/commands/{council-optimize.md → council/optimize.md} +7 -6
  21. package/.agent-src/commands/{council-pr.md → council/pr.md} +6 -5
  22. package/.agent-src/commands/council.md +47 -212
  23. package/.agent-src/commands/{create-pr-description.md → create-pr/description-only.md} +4 -2
  24. package/.agent-src/commands/create-pr.md +26 -5
  25. package/.agent-src/commands/{feature-dev.md → feature/dev.md} +5 -10
  26. package/.agent-src/commands/{feature-explore.md → feature/explore.md} +4 -8
  27. package/.agent-src/commands/{feature-plan.md → feature/plan.md} +4 -8
  28. package/.agent-src/commands/{feature-refactor.md → feature/refactor.md} +4 -8
  29. package/.agent-src/commands/{feature-roadmap.md → feature/roadmap.md} +6 -10
  30. package/.agent-src/commands/feature.md +6 -12
  31. package/.agent-src/commands/{fix-ci.md → fix/ci.md} +4 -8
  32. package/.agent-src/commands/{fix-portability.md → fix/portability.md} +4 -8
  33. package/.agent-src/commands/{fix-pr-bot-comments.md → fix/pr-bots.md} +4 -8
  34. package/.agent-src/commands/{fix-pr-developer-comments.md → fix/pr-developers.md} +4 -8
  35. package/.agent-src/commands/{fix-pr-comments.md → fix/pr.md} +7 -11
  36. package/.agent-src/commands/{fix-references.md → fix/refs.md} +4 -8
  37. package/.agent-src/commands/{fix-seeder.md → fix/seeder.md} +4 -8
  38. package/.agent-src/commands/fix.md +7 -13
  39. package/.agent-src/commands/{do-and-judge.md → judge/on-diff.md} +4 -3
  40. package/.agent-src/commands/judge/solo.md +90 -0
  41. package/.agent-src/commands/{do-in-steps.md → judge/steps.md} +4 -3
  42. package/.agent-src/commands/judge.md +35 -70
  43. package/.agent-src/commands/{memory-add.md → memory/add.md} +4 -3
  44. package/.agent-src/commands/{memory-full.md → memory/load.md} +4 -3
  45. package/.agent-src/commands/{memory-promote.md → memory/promote.md} +4 -3
  46. package/.agent-src/commands/{propose-memory.md → memory/propose.md} +4 -3
  47. package/.agent-src/commands/memory.md +48 -0
  48. package/.agent-src/commands/{module-create.md → module/create.md} +4 -3
  49. package/.agent-src/commands/{module-explore.md → module/explore.md} +4 -3
  50. package/.agent-src/commands/module.md +44 -0
  51. package/.agent-src/commands/{optimize-agents.md → optimize/agents.md} +4 -8
  52. package/.agent-src/commands/{optimize-augmentignore.md → optimize/augmentignore.md} +4 -9
  53. package/.agent-src/commands/{optimize-rtk-filters.md → optimize/rtk.md} +4 -8
  54. package/.agent-src/commands/{optimize-skills.md → optimize/skills.md} +4 -8
  55. package/.agent-src/commands/optimize.md +4 -10
  56. package/.agent-src/commands/{override-create.md → override/create.md} +4 -3
  57. package/.agent-src/commands/{override-manage.md → override/manage.md} +4 -3
  58. package/.agent-src/commands/override.md +44 -0
  59. package/.agent-src/commands/{roadmap-create.md → roadmap/create.md} +4 -3
  60. package/.agent-src/commands/{roadmap-execute.md → roadmap/execute.md} +4 -3
  61. package/.agent-src/commands/roadmap.md +44 -0
  62. package/.agent-src/commands/{tests-create.md → tests/create.md} +4 -3
  63. package/.agent-src/commands/{tests-execute.md → tests/execute.md} +4 -3
  64. package/.agent-src/commands/tests.md +44 -0
  65. package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +72 -0
  66. package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +79 -0
  67. package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +98 -0
  68. package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +87 -0
  69. package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +62 -0
  70. package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +78 -0
  71. package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +85 -0
  72. package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +65 -0
  73. package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +78 -0
  74. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +62 -0
  75. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +55 -0
  76. package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +53 -0
  77. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +77 -0
  78. package/.agent-src/contexts/judges/no-consolidate-rationale.md +102 -0
  79. package/.agent-src/contexts/judges/persona-voice-rubric.md +140 -0
  80. package/.agent-src/rules/artifact-engagement-recording.md +13 -69
  81. package/.agent-src/rules/ask-when-uncertain.md +27 -42
  82. package/.agent-src/rules/augment-portability.md +15 -61
  83. package/.agent-src/rules/augment-source-of-truth.md +27 -93
  84. package/.agent-src/rules/cli-output-handling.md +10 -76
  85. package/.agent-src/rules/command-suggestion-policy.md +18 -59
  86. package/.agent-src/rules/commit-conventions.md +17 -14
  87. package/.agent-src/rules/direct-answers.md +34 -49
  88. package/.agent-src/rules/docker-commands.md +5 -5
  89. package/.agent-src/rules/docs-sync.md +15 -69
  90. package/.agent-src/rules/language-and-tone.md +48 -72
  91. package/.agent-src/rules/missing-tool-handling.md +28 -22
  92. package/.agent-src/rules/no-cheap-questions.md +45 -52
  93. package/.agent-src/rules/no-roadmap-references.md +73 -0
  94. package/.agent-src/rules/package-ci-checks.md +21 -61
  95. package/.agent-src/rules/preservation-guard.md +64 -29
  96. package/.agent-src/rules/review-routing-awareness.md +24 -43
  97. package/.agent-src/rules/roadmap-progress-sync.md +10 -71
  98. package/.agent-src/rules/security-sensitive-stop.md +8 -8
  99. package/.agent-src/rules/skill-quality.md +16 -48
  100. package/.agent-src/rules/slash-command-routing-policy.md +7 -4
  101. package/.agent-src/rules/think-before-action.md +52 -42
  102. package/.agent-src/rules/tool-safety.md +19 -16
  103. package/.agent-src/rules/ui-audit-gate.md +24 -38
  104. package/.agent-src/rules/user-interaction.md +13 -68
  105. package/.agent-src/skills/ai-council/SKILL.md +2 -0
  106. package/.agent-src/skills/api-testing/SKILL.md +1 -1
  107. package/.agent-src/skills/check-refs/SKILL.md +59 -40
  108. package/.agent-src/skills/conventional-commits-writing/SKILL.md +86 -28
  109. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +5 -5
  110. package/.agent-src/skills/developer-like-execution/SKILL.md +4 -4
  111. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +101 -65
  112. package/.agent-src/skills/flux/SKILL.md +30 -10
  113. package/.agent-src/skills/github-ci/SKILL.md +2 -2
  114. package/.agent-src/skills/judge-code-quality/SKILL.md +7 -8
  115. package/.agent-src/skills/judge-security-auditor/SKILL.md +4 -5
  116. package/.agent-src/skills/judge-test-coverage/SKILL.md +3 -4
  117. package/.agent-src/skills/lint-skills/SKILL.md +57 -39
  118. package/.agent-src/skills/md-language-check/SKILL.md +61 -39
  119. package/.agent-src/skills/override-management/SKILL.md +5 -5
  120. package/.agent-src/skills/quality-tools/SKILL.md +2 -2
  121. package/.agent-src/skills/react-shadcn-ui/SKILL.md +116 -43
  122. package/.agent-src/skills/readme-reviewer/SKILL.md +30 -29
  123. package/.agent-src/skills/readme-writing/SKILL.md +78 -53
  124. package/.agent-src/skills/readme-writing-package/SKILL.md +50 -47
  125. package/.agent-src/skills/receiving-code-review/SKILL.md +52 -47
  126. package/.agent-src/skills/refine-prompt/SKILL.md +0 -1
  127. package/.agent-src/skills/requesting-code-review/SKILL.md +35 -30
  128. package/.agent-src/skills/security/SKILL.md +7 -2
  129. package/.agent-src/skills/security-audit/SKILL.md +7 -3
  130. package/.agent-src/skills/systematic-debugging/SKILL.md +68 -60
  131. package/.agent-src/skills/test-driven-development/SKILL.md +59 -57
  132. package/.agent-src/skills/test-performance/SKILL.md +0 -1
  133. package/.agent-src/skills/traefik/SKILL.md +4 -4
  134. package/.agent-src/skills/verify-completion-evidence/SKILL.md +28 -26
  135. package/.claude-plugin/marketplace.json +22 -11
  136. package/AGENTS.md +2 -2
  137. package/CHANGELOG.md +90 -1
  138. package/README.md +18 -17
  139. package/docs/architecture.md +4 -6
  140. package/docs/catalog.md +67 -39
  141. package/docs/contracts/STABILITY.md +13 -7
  142. package/docs/contracts/adr-chat-history-split.md +1 -3
  143. package/docs/contracts/adr-command-suggestion.md +0 -2
  144. package/docs/contracts/adr-implement-ticket-runtime.md +1 -2
  145. package/docs/contracts/adr-product-ui-track.md +3 -6
  146. package/docs/contracts/adr-prompt-driven-execution.md +3 -4
  147. package/docs/contracts/agent-memory-contract.md +6 -11
  148. package/docs/contracts/artifact-engagement-flow.md +6 -9
  149. package/docs/contracts/command-clusters.md +56 -46
  150. package/docs/contracts/command-suggestion-flow.md +1 -3
  151. package/docs/contracts/context-paths.md +99 -0
  152. package/docs/contracts/file-ownership-matrix.json +6722 -0
  153. package/docs/contracts/file-ownership-matrix.md +134 -0
  154. package/docs/contracts/implement-ticket-flow.md +6 -9
  155. package/docs/contracts/linear-ai-rules-inclusion.md +0 -1
  156. package/docs/contracts/linear-ai-three-layers.md +0 -2
  157. package/docs/contracts/load-context-budget-model.md +178 -0
  158. package/docs/contracts/load-context-schema.md +1 -3
  159. package/docs/contracts/rule-interactions.md +0 -1
  160. package/docs/contracts/rule-priority-hierarchy.md +1 -1
  161. package/docs/contracts/ui-track-flow.md +7 -17
  162. package/docs/customization.md +2 -0
  163. package/docs/getting-started.md +5 -4
  164. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +100 -0
  165. package/package.json +1 -1
  166. package/scripts/_one_off_phase4_dispatch_latency.py +108 -0
  167. package/scripts/_one_off_phase6_trigger_jaccard.py +92 -0
  168. package/scripts/_phase2_shim_helper.py +109 -0
  169. package/scripts/agent-config +10 -0
  170. package/scripts/ai_council/_one_off_2a4_acceptance.py +208 -0
  171. package/scripts/ai_council/_one_off_context_layer_v1_estimate.py +67 -0
  172. package/scripts/ai_council/_one_off_context_layer_v1_review.py +292 -0
  173. package/scripts/ai_council/_one_off_followups_review.py +259 -0
  174. package/scripts/ai_council/_one_off_nondestructive_inline_audit.py +209 -0
  175. package/scripts/ai_council/_one_off_phase_2a_budget_rebalance.py +257 -0
  176. package/scripts/ai_council/_one_off_phase_2a_post_revert.py +197 -0
  177. package/scripts/ai_council/_one_off_rule_hardening_v1.py +251 -0
  178. package/scripts/ai_council/_one_off_structural_open_questions.py +232 -0
  179. package/scripts/ai_council/_one_off_structural_optimization.py +144 -0
  180. package/scripts/ai_council/_one_off_structural_v3_gaps.py +252 -0
  181. package/scripts/ai_council/_one_off_structural_v3_review.py +240 -0
  182. package/scripts/check_always_budget.py +363 -45
  183. package/scripts/check_cluster_patterns.py +159 -0
  184. package/scripts/check_command_count_messaging.py +14 -7
  185. package/scripts/check_context_paths.py +201 -0
  186. package/scripts/check_no_roadmap_refs.py +155 -0
  187. package/scripts/check_phase_coupling.py +148 -0
  188. package/scripts/check_portability.py +2 -0
  189. package/scripts/check_references.py +29 -2
  190. package/scripts/check_safety_floor_untouched.py +125 -0
  191. package/scripts/command_suggester/loader.py +4 -1
  192. package/scripts/compress.py +59 -13
  193. package/scripts/generate_index.py +6 -2
  194. package/scripts/generate_ownership_matrix.py +323 -0
  195. package/scripts/hooks/augment-roadmap-progress.sh +57 -0
  196. package/scripts/install.py +49 -28
  197. package/scripts/lint_no_new_atomic_commands.py +12 -11
  198. package/scripts/requirements-evals.txt +1 -0
  199. package/scripts/roadmap_progress_hook.py +159 -0
  200. package/scripts/schemas/command.schema.json +4 -3
  201. package/scripts/skill_linter.py +1 -0
  202. package/scripts/sync_agent_settings.py +25 -2
  203. package/scripts/update_counts.py +7 -0
@@ -3,20 +3,26 @@ type: "auto"
3
3
  description: "User prompt without /command but matching an eligible slash command — surface matches as numbered options with as-is escape hatch; never auto-executes, user always picks"
4
4
  alwaysApply: false
5
5
  source: package
6
+ load_context:
7
+ - .agent-src.uncompressed/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md
6
8
  ---
7
9
 
8
10
  # Command Suggestion
9
11
 
10
12
  When the user's prompt matches an eligible slash command, surface it
11
- as a **numbered option** alongside an "as-is" escape hatch. The user
12
- always picks. **Nothing auto-executes.** The suggestion layer is a
13
- read-only shortcut *finder*, not an invocation path.
13
+ as a **numbered option** alongside an "as-is" escape hatch the
14
+ "run prompt as-is" option is **always last** and **always present**,
15
+ never omitted. The user always picks. **Nothing auto-executes.** The
16
+ suggestion layer is a read-only shortcut *finder*, not an invocation
17
+ path.
14
18
 
15
19
  The deterministic engine lives in `scripts/command_suggester/`. The
16
20
  locked eligibility table lives in
17
21
  [`agents/contexts/command-suggestion-eligibility.md`](../../agents/contexts/command-suggestion-eligibility.md).
18
- The full design lives in
19
- [`road-to-context-aware-command-suggestion`](../../agents/roadmaps/road-to-context-aware-command-suggestion.md).
22
+ The scoring contract and hardening list live in
23
+ [`docs/contracts/adr-command-suggestion.md`](../../docs/contracts/adr-command-suggestion.md)
24
+ and
25
+ [`docs/contracts/command-suggestion-flow.md`](../../docs/contracts/command-suggestion-flow.md).
20
26
 
21
27
  ## Iron Law — never auto-execute
22
28
 
@@ -46,33 +52,6 @@ On a user turn that matches **all** of the following:
46
52
  When all six hold, the suggestion block is the **first and only**
47
53
  thing the agent emits that turn. No tools, no edits, no other prose.
48
54
 
49
- ## What to emit
50
-
51
- Render exactly one numbered-options block conforming to
52
- `user-interaction`:
53
-
54
- ```
55
- > 💡 Your request matches a command. Pick one or run the prompt as-is:
56
- >
57
- > 1. /implement-ticket — drive ticket end-to-end through refine → plan → implement → test
58
- > 2. /refine-ticket — tighten the AC and risks on a ticket before planning
59
- > 3. Just run the prompt as-is, no command
60
-
61
- **Recommendation: 1 — /implement-ticket** — the request matches its trigger description (`setze ticket abc-123 um`). Pick the last option to skip the command and run the prompt as written.
62
- ```
63
-
64
- Rules — non-negotiable:
65
-
66
- - The "run as-is" option is **always present**, **always last**, never removed.
67
- - At most `commands.suggestion.max_options` command suggestions
68
- precede the as-is option (default 4 → 5 total).
69
- - Exactly **one** `Recommendation:` line follows the block, naming
70
- the highest-scoring command — or no recommendation when the top
71
- two scores are within 0.05 of each other (single-source-of-truth
72
- Iron Law from `user-interaction`).
73
- - Free-text replies count as the as-is option unless they
74
- unambiguously name one of the listed commands.
75
-
76
55
  ## Subordination — when to stay silent
77
56
 
78
57
  The suggestion rule is **junior** to:
@@ -90,33 +69,6 @@ The suggestion rule is **junior** to:
90
69
  On any conflict → suggestion stays silent. Zero output. The user's
91
70
  prompt is processed as it would be without this rule.
92
71
 
93
- ## Anti-noise — silent when uncertain
94
-
95
- The engine's `rank.py` already drops:
96
-
97
- - Matches below the `confidence_floor` (default 0.6, per-command
98
- override in frontmatter).
99
- - Single matches scoring `< floor + 0.1` with no structural bonus
100
- (high uncertainty isn't worth interrupting for).
101
- - Short prompts (< 6 words) hitting > 2 commands with no structural
102
- bonus (ticket key, file path) — too vague to disambiguate.
103
- - Pure-continuation messages (`ok`, `weiter`, `mach weiter`, `go on`,
104
- …) — no new intent signal, no structural bonus → silent.
105
- - Suggestions that fired for the same `(command, evidence)` pair
106
- within the cooldown window (default 10m, per-command override).
107
-
108
- If the engine returns an empty list → emit nothing. The user's
109
- prompt runs exactly as it would without this rule.
110
-
111
- ## What this rule does NOT do
112
-
113
- - Invoke any command. Picking option N is what triggers `slash-command-routing-policy`.
114
- - Stack with other questions. One numbered-options block per turn.
115
- - Re-trigger on its own output. Command names emitted in the
116
- suggestion block are excluded from the next-turn matcher input.
117
- - Override `enabled: false`, blocklist entries, or per-conversation opt-out.
118
- - Suggest commands that are not in the locked eligibility table.
119
-
120
72
  ## Cloud Behavior
121
73
 
122
74
  On cloud surfaces (Claude.ai Web, Skills API) the rule is **inert**
@@ -124,6 +76,13 @@ unless the suggester package is shipped in the bundle. Treat
124
76
  `commands.suggestion.enabled` as `false` when the engine is not
125
77
  available — degrade silently, never crash the turn.
126
78
 
79
+ ## Mechanics — output format, anti-noise, what this rule does NOT do
80
+
81
+ The exact rendered options block, the `Recommendation:` rules, the
82
+ `max_options` cap, the `rank.py` anti-noise filters, and the
83
+ "what this rule does NOT do" catalog live in
84
+ [`contexts/communication/rules-auto/command-suggestion-policy-mechanics.md`](../contexts/communication/rules-auto/command-suggestion-policy-mechanics.md).
85
+
127
86
  ## Interactions
128
87
 
129
88
  - [`slash-command-routing-policy`](slash-command-routing-policy.md) — explicit `/command` skips suggestion entirely.
@@ -7,13 +7,15 @@ source: package
7
7
 
8
8
  # Commit Conventions
9
9
 
10
- All commit messages and squash/merge titles follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
10
+ All commit messages and squash/merge titles must follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
11
11
 
12
12
  ## Format
13
13
 
14
14
  - With scope: `<type>(<scope>): <description>`
15
- - Without scope: `<type>: <description>`
16
- - Always English. Imperative mood. Max 72 chars first line.
15
+ - Without scope: `<type>: <description>` (omit parentheses when no scope)
16
+ - **Always English** regardless of user's language.
17
+ - **Imperative mood** ("add feature", not "added feature").
18
+ - **First line max 72 characters.**
17
19
 
18
20
  ## Types
19
21
 
@@ -21,24 +23,24 @@ All commit messages and squash/merge titles follow [Conventional Commits](https:
21
23
  |---|---|
22
24
  | `feat` | New user-facing functionality |
23
25
  | `fix` | Bug fix |
24
- | `refactor` | Structure change, no behavior change |
26
+ | `refactor` | Code/structure change, no behavior change |
25
27
  | `docs` | Documentation only |
26
28
  | `test` | Tests only |
27
- | `chore` | Maintenance, deps, cleanup |
28
- | `ci` | CI/CD, workflows |
29
- | `style` | Formatting only |
29
+ | `chore` | Maintenance (deps, configs, tooling, cleanup) |
30
+ | `ci` | CI/CD and workflow changes |
31
+ | `style` | Code style (formatting, no logic change) |
30
32
  | `perf` | Performance improvement |
31
- | `build` | Build tooling, packaging |
33
+ | `build` | Build tooling / packaging changes |
32
34
 
33
35
  ## Scope
34
36
 
35
- - Jira ticket ID when branch has one: `DEV-1234`
36
- - Otherwise short area name: `api`, `auth`, `skills`
37
- - Optional — only add when it improves clarity.
37
+ - Use the **Jira ticket ID** as scope when the branch contains one (e.g. `DEV-1234`).
38
+ - Otherwise use a short module or area name (e.g. `api`, `auth`, `skills`).
39
+ - Scope is optional — only add when it improves clarity.
38
40
 
39
41
  ## Breaking changes
40
42
 
41
- Mark with `!` or `BREAKING CHANGE:` footer:
43
+ Mark explicitly with `!` after type/scope or `BREAKING CHANGE:` in footer:
42
44
 
43
45
  ```
44
46
  feat(api)!: rename invoice status values
@@ -47,7 +49,8 @@ refactor(auth)!: remove legacy session flow
47
49
 
48
50
  ## Commit splitting
49
51
 
50
- Mixed concerns split into multiple commits. Don't hide unrelated changes in one.
52
+ If a change mixes unrelated concerns, split into multiple commits.
53
+ Do NOT hide bug fixes, CI work, docs, and refactors in one commit.
51
54
 
52
55
  ## Examples
53
56
 
@@ -61,4 +64,4 @@ ci(lint): add skill-lint workflow
61
64
  docs(roadmap): add phase 3 implementation plan
62
65
  ```
63
66
 
64
- Type selection rules, anti-patterns, decision checklist: `docs/guidelines/php/git.md`
67
+ Full type selection rules and anti-patterns: see guideline `docs/guidelines/php/git.md`.
@@ -18,18 +18,12 @@ NEVER PRAISE THE USER'S IDEA TO MAKE THEM HAPPY.
18
18
  ANSWER THE SUBSTANCE. SHIP THE TRUTH.
19
19
  ```
20
20
 
21
- - No positive adjectives about the user, their question, idea, or
22
- work product as an opener.
23
- - No subjective judgments on the user's code, decisions, or work
24
- products ("nice approach", "clean design", "boring") unless the
25
- user asked for an evaluation.
26
- - "Good catch" / "you're right" only when literally true and
27
- load-bearing for the answer.
28
- - Acknowledge mistakes without performative apologies. One sentence,
29
- switch behavior.
30
-
31
- Failure mode: praise as a hedge before delivering bad news. Drop the
32
- cushion, deliver the news.
21
+ - No positive adjectives about user, question, idea, or work product as opener.
22
+ - No subjective judgments on user's code/decisions ("nice approach", "boring") unless evaluation was asked.
23
+ - "Good catch" / "you're right" only when literally true and load-bearing.
24
+ - Acknowledge mistakes without performative apologies — one sentence, switch behavior.
25
+
26
+ Failure mode: praise as a hedge before bad news. Drop the cushion, deliver the news.
33
27
 
34
28
  ## Iron Law 2 — No Invented Facts (severity-tiered)
35
29
 
@@ -39,19 +33,18 @@ THE MORE LOAD-BEARING THE CLAIM, THE HARDER YOU VERIFY.
39
33
  WHEN VERIFICATION IS NOT WORTH THE COST → ASK.
40
34
  ```
41
35
 
42
- | Severity | Examples | Required action |
43
- |---|---|---|
44
- | **High — load-bearing** | File paths, function/method signatures, version numbers, security claims, API contracts, "this test passes/fails", "this method exists" | MUST verify with tools (`view`, `grep`, `codebase-retrieval`, command output) before claiming. If too expensive → ask the user. |
45
- | **Medium — project-shape** | "This project uses X for Y", general conventions, file location guesses | Verify if one tool call reaches it; otherwise hedge explicitly ("I'd guess X — not checked"). |
46
- | **Low — well-known idioms** | Generic language/framework idioms, illustrative examples, well-documented public APIs | Inference acceptable. Mark as inference if not 100% sure. |
36
+ | Severity | Required action |
37
+ |---|---|
38
+ | **High — load-bearing** (file paths, signatures, version numbers, security claims, "this test passes") | MUST verify with `view`, `grep`, `codebase-retrieval`, or fresh command output. Too expensive → ask. |
39
+ | **Medium — project-shape** ("uses X for Y", conventions, file location) | Verify if one tool call reaches it; otherwise hedge: *"I'd guess X — not checked"*. |
40
+ | **Low — well-known idioms** (generic language/framework idioms, public APIs) | Inference acceptable. Mark as inference if not 100% sure. |
41
+
42
+ Concrete examples and hedge-language patterns:
43
+ [`asking-and-brevity-examples`](../../docs/guidelines/agent-infra/asking-and-brevity-examples.md#direct-answers--severity-tiered-claim-examples).
47
44
 
48
45
  User override: "just guess", "rough estimate is fine", "skip the
49
46
  verify" → drop to Low for that turn.
50
47
 
51
- Hedging language is explicit and short: "haven't verified X",
52
- "guess, not checked". Never bare "probably" / "vermutlich" without
53
- naming what's unverified.
54
-
55
48
  ## Iron Law 3 — Brevity by Default
56
49
 
57
50
  ```
@@ -60,45 +53,37 @@ LONG ANSWERS ARE A FAILURE MODE, NOT A SIGN OF EFFORT.
60
53
  ```
61
54
 
62
55
  - Skip restating the user's question.
63
- - Skip announcing intent ("Let me…", "I will now…"). Just do.
64
- - Skip explaining why a tool was used — the call result speaks.
65
- - Skip post-hoc summary unless the user must recheck a decision.
66
- - Multi-step work bullet points, not paragraphs.
67
- - Question with one true answer → one sentence + the answer.
68
-
69
- `token-efficiency` covers the loop side (no repeated tool calls);
70
- this rule covers the per-reply-length side. **Never overrides**
71
- `user-interaction` (numbered options stay) or command-mandated
72
- steps — brevity ≠ skipping required questions.
56
+ - Skip announcing intent ("Let me…", "I will now…") just do.
57
+ - Skip explaining tool use — the call result speaks.
58
+ - Skip post-hoc summary unless rechecking a decision.
59
+ - Multi-step → bullets, not paragraphs.
60
+ - One-true-answer question → one sentence + the answer.
73
61
 
74
- ## Emoji Scope Whitelist + Blacklist
62
+ `token-efficiency` covers the loop side; this rule covers per-reply
63
+ length. **Never overrides** `user-interaction` (numbered options
64
+ stay) or command-mandated steps.
75
65
 
76
- Emojis are **functional markers**, never decoration.
66
+ ## Emoji Scope — functional markers only
77
67
 
78
- **Whitelist allowed and expected:**
68
+ **Whitelist (allowed):**
79
69
 
80
- - Mandated markers from rules/scripts: `📒` (chat-history heartbeat,
81
- verbatim per `chat-history-visibility`), mode markers from
82
- `role-mode-adherence`.
83
- - CLI status icons: `❌`, `✅`, `⚠️` — two-space rule from
84
- `language-and-tone` § other-language-rules still applies.
85
- - Roadmap status checkboxes: `[x]`, `[~]`, `[-]`.
70
+ - Mandated markers: `📒` (chat-history heartbeat, verbatim per
71
+ `chat-history-visibility`), mode markers from `role-mode-adherence`.
72
+ - CLI status: `❌`, `✅`, `⚠️` (two-space rule from `language-and-tone`).
73
+ - Roadmap checkboxes: `[x]`, `[~]`, `[-]`.
86
74
 
87
- **Blacklist never in the agent's own prose:**
75
+ **Blacklist (never in prose):**
88
76
 
89
77
  - Opening flair: ✨, 🚀, 🎉, 💡, 🔥, 👍.
90
- - Empathy signaling: ❤️, 🤗, 😊.
91
- - Section dividers / headline ornaments.
92
- - Reaction reactions to the user's message.
78
+ - Empathy: ❤️, 🤗, 😊.
79
+ - Section dividers, headline ornaments, reaction emojis.
93
80
 
94
- If unsure whether a given emoji is functional → assume blacklist.
81
+ Unsure → assume blacklist.
95
82
 
96
83
  ## Failure modes the user will call out
97
84
 
98
- - "Great question, …" / "Das ist eine gute Frage" — Iron Law 1.
99
- - Stating a function name without `grep`/`view` — Iron Law 2.
100
- - Three paragraphs for a one-line answer — Iron Law 3.
101
- - ✨/🎉/💡 to mark "this is interesting" — emoji blacklist.
85
+ Trigger phrases per Iron Law and the in-language correction pattern:
86
+ [`asking-and-brevity-examples`](../../docs/guidelines/agent-infra/asking-and-brevity-examples.md#direct-answers--failure-modes-the-user-will-call-out).
102
87
 
103
88
  When called out: acknowledge once in the user's language, switch,
104
89
  no excuses (mirrors `language-and-tone` § slip handling).
@@ -44,10 +44,10 @@ docker compose exec -T <php-service> vendor/bin/phpunit
44
44
 
45
45
  ## Build / Task Runner
46
46
 
47
- Before using raw `docker compose exec`, check if the consumer project
48
- ships a `Makefile` it often wraps common ops (`make console`,
49
- `make test`, `make phpstan`). Read the Makefile first. If the project
50
- uses another task runner, inspect its config before falling back to
51
- raw `docker compose exec`.
47
+ Before using raw `docker compose exec` commands, check if the consumer
48
+ project ships a `Makefile` for common targets (e.g. `make console`,
49
+ `make test`, `make phpstan`). Read the Makefile first to discover
50
+ available shortcuts. If the project uses a different task runner,
51
+ inspect its config file before defaulting to raw `docker compose exec`.
52
52
 
53
53
  Frontend commands (npm, webpack) run on the host or in the node container.
@@ -2,6 +2,8 @@
2
2
  type: "auto"
3
3
  description: "Keeping .augment/ contexts, counts, and cross-references in sync when creating, renaming, or deleting skills, commands, rules, guidelines, templates, or any agent infrastructure files"
4
4
  source: package
5
+ load_context:
6
+ - .agent-src.uncompressed/contexts/communication/rules-auto/docs-sync-mechanics.md
5
7
  ---
6
8
 
7
9
  # Docs Sync
@@ -18,33 +20,16 @@ A new rule/skill/command without its index entry, count update, and context upda
18
20
  1. Create/delete the file
19
21
  2. **Immediately** update `contexts/augment-infrastructure.md` (counts + category tables)
20
22
  3. Check cross-references in contexts and routing hints (inline "see X skill" references)
23
+ 4. If a **skill** was added/renamed/deleted: update distribution manifests
24
+ 5. If a **hook** was added/renamed/deleted: update hook registries
25
+ 6. If **content** changed: run the consistency grep across other artefacts
21
26
 
22
- Steps 2–3 are NOT optional. Do NOT present the result to the user until all steps are done.
27
+ Steps 2–6 are NOT optional. Do NOT present the result to the user until all steps are done.
23
28
 
24
29
  **Two modes:**
25
- - **Reactive** (automatic): Triggered by add/remove/rename or scope/description/count changes → sync counts, contexts, cross-references.
30
+ - **Reactive** (automatic): Triggered by add/remove/rename or scope/description/count changes → sync counts, contexts, cross-references, manifests, registries.
26
31
  - **Proactive** (on demand): Full audit → find duplicates, thin skills, redundancy, stale content → fix or merge. Ask before destructive actions.
27
32
 
28
- ## What to update
29
-
30
- When a file is **added, removed, or renamed**:
31
-
32
- | Change | Files to update |
33
- |---|---|
34
- | Skill/command/rule count changes | `contexts/augment-infrastructure.md` (count + category table) |
35
- | New skill category | `contexts/augment-infrastructure.md` + `contexts/skills-and-commands.md` |
36
- | New workflow chain | `contexts/skills-and-commands.md` (workflow chains section) |
37
-
38
- ## Cross-reference updates
39
-
40
- When a skill is **added or its scope changes**, check and update:
41
-
42
- | What | Where to check |
43
- |---|---|
44
- | Inline routing hints | "see X skill" or "use X instead" references in other skills |
45
- | Guideline cross-references | Guidelines that reference the changed skill |
46
- | Command skill references | Commands that use the changed skill |
47
-
48
33
  ## Settings template sync
49
34
 
50
35
  When a skill, rule, or command **reads a new setting** from `.agent-settings.yml` that does not yet
@@ -61,54 +46,15 @@ exist in `.augment/templates/agent-settings.md`:
61
46
  **This step is mandatory.** If the template gains a new key but the local `.agent-settings.yml`
62
47
  is not updated, the user cannot discover the new setting exists.
63
48
 
64
- ## Distribution manifests and hook registries
65
-
66
- `.augment/`-internal sync (counts, contexts, cross-refs) is one half. The
67
- other half is **distribution manifests** that ship the package to consumers
68
- and **hook registries** that wire engine code into platform lifecycles.
69
- These are not auto-derived — they drift silently until CI catches them, and
70
- on cooperative platforms (no pre-commit) they can sit broken in a branch
71
- for hours.
72
-
73
- When a **skill** is added, renamed, or deleted under
74
- `.agent-src.uncompressed/skills/`:
75
-
76
- | Manifest | Required update |
77
- |---|---|
78
- | `.claude-plugin/marketplace.json` | Add/remove the `./.claude/skills/<name>` entry in `plugins[0].skills[]`, alphabetical position. Caught by `scripts/lint_marketplace.py` in CI. |
79
- | `.augment-plugin/marketplace.json` | Skill-name-agnostic — no update needed. Touch only when plugin metadata (description, tags) changes. |
80
- | `.github/plugin/marketplace.json` | Same as above — metadata-only manifest. |
81
-
82
- When a **hook** is added, renamed, or deleted under
83
- `.agent-src.uncompressed/templates/scripts/work_engine/hooks/builtin/`:
84
-
85
- | Registry | Required update |
86
- |---|---|
87
- | `templates/scripts/work_engine/hooks/builtin/__init__.py` | New hook class → add the import + `__all__` entry. Single source of truth for engine-side registration. |
88
- | `templates/consumer-settings/claude-settings.json` | Only when a **new platform event** is wired (e.g. first time a hook listens on `SessionEnd`). Existing hooks reuse the `./agent-config chat-history:hook --platform claude` dispatcher — no per-hook entry needed. |
89
- | `templates/consumer-settings/augment-cli-hooks.json` | Same logic — new platform event → new `command` block; new hook on existing event → no update. |
90
-
91
- Failure mode that motivated this section: a skill on disk without its
92
- `marketplace.json` entry passes local edits, builds, and tests — only
93
- CI catches it via `lint_marketplace`. The cooperative path is
94
- "agent updates the manifest in the same response as the skill"; the
95
- structural backstop is a pre-commit hook installed by
96
- `scripts/install-hooks.sh` that runs `lint_marketplace` on every
97
- commit. Run the installer once per clone; bypass for an unrelated WIP
98
- commit is `git commit --no-verify`.
99
-
100
- ## Content consistency
101
-
102
- **CRITICAL — MANDATORY CHECK:** When a rule, skill, or guideline's **content** is changed
103
- (not just metadata), you MUST search for **all other rules, skills, and guidelines that cover
104
- the same topic** and verify they are consistent.
105
-
106
- ```bash
107
- grep -rl "TOPIC" .augment/rules/ .augment/skills/ .augment/guidelines/ --include="*.md"
108
- ```
49
+ ## Lookup tables and details — see mechanics
109
50
 
110
- If any file contradicts or is missing the updated information → **update it in the same response**.
111
- Inconsistent documentation is worse than no documentation.
51
+ The exact "what to update" tables, cross-reference targets,
52
+ distribution-manifest update tables (`marketplace.json` etc.), hook
53
+ registry update tables (`__init__.py`, consumer-settings JSON), the
54
+ failure mode that motivated the manifest section, and the content
55
+ consistency `grep` snippet all live in
56
+ [`contexts/communication/rules-auto/docs-sync-mechanics.md`](../contexts/communication/rules-auto/docs-sync-mechanics.md).
57
+ Pull it whenever a sync trigger fires.
112
58
 
113
59
  ## Do NOT
114
60
 
@@ -17,96 +17,72 @@ NO MOMENTUM EXCEPTION. NO TECHNICAL-CONTEXT EXCEPTION.
17
17
  NO "SWITCH MID-PARAGRAPH". NO "LAST 20 TURNS WERE ENGLISH".
18
18
  ```
19
19
 
20
- **Overrides** conversation momentum, tool-output habits, prior-reply
21
- language, codebase language, open-file language, files-just-edited
22
- language, convenience. First thing to check on every reply, last thing
23
- to check before sending.
24
-
25
- Trigger is the user's last chat message, not turn count or message
26
- length — short German (`3`, `weiter`, `mach das`) after many English
27
- turns still flips the reply to German.
28
-
29
- ### Source of language truth — chat messages ONLY
30
-
31
- Only the most recent **chat message** sets the language. `.md` files,
32
- file contents read via `view` / `grep`, quoted commits / tickets / PRs,
33
- code identifiers, and the agent's own previous replies do **not** count.
34
- User opens an English roadmap and types German → reply in German.
20
+ Trigger is the user's last **chat message** not turn count, open
21
+ file, roadmap, ticket, codebase, `view` / `grep` output, prior reply,
22
+ or files just edited. Short German (`3`, `weiter`, `mach das`) after
23
+ many English turns flips the reply to German.
35
24
 
36
25
  ### Pre-send gate — MANDATORY before every reply
37
26
 
38
- Run silently **before** emitting any tokens:
27
+ Run silently before any output:
39
28
 
40
- 1. **Detect** — language of user's last **chat message** (not the open
41
- file, not the roadmap, not the prior reply). Mixed → mirror the
42
- **dominant** language; tie German wins (project default).
43
- 2. **Check** — is drafted prose (not code, not file contents) in that language?
44
- 3. **Rewrite** — if no, rewrite whole prose before sending. No exceptions, no
45
- "just this sentence", no "the technical term is English anyway".
46
- 4. **Confirm** — first sentence must be in target language. No English opener
29
+ 1. **Detect** — language of the user's last chat message. Mixed
30
+ **dominant** language; tie German (project default).
31
+ 2. **Check** is drafted prose (not code, not file contents) in
32
+ that language?
33
+ 3. **Rewrite** — if no, rewrite whole prose. No "just this sentence",
34
+ no "technical term is English anyway".
35
+ 4. **Confirm** — first sentence in target language. No English opener
47
36
  before switching mid-paragraph.
48
37
 
49
- ### The rule, spelled out
50
-
51
- - User writes German → **MUST** respond in German (informal "Du", never "Sie").
52
- "Du" capitalized at sentence start, lowercase otherwise.
53
- - User writes English → respond in English.
54
- - User switches mid-conversation → switch on the **very next** reply. No
55
- grace period, no "let me finish this thought in the old language".
56
- - Code blocks, command output, file contents, quoted tool output stay in
57
- their native language. Only the **prose around them** mirrors the user.
58
- - "I've been answering in English for a while" is NOT a reason to keep going.
59
- Trigger is the **latest user message**, not conversation momentum.
60
- - Numbered option lists (per `user-interaction`) mirror the user's language —
61
- `.md` source is English, rendered reply is translated at runtime.
38
+ ### Spelled out
62
39
 
63
- ### When the user calls out a language slip
40
+ - German respond in German, informal "Du" (never "Sie"). "Du"
41
+ capitalized at sentence start, lowercase otherwise.
42
+ - Code blocks, command output, file contents, and quoted tool output
43
+ stay in their native language; only the **prose around them**
44
+ mirrors the user.
45
+ - Numbered options (per `user-interaction`) — `.md` source English,
46
+ rendered reply translated at runtime.
64
47
 
65
- Acknowledge **once**, briefly, in the correct language ("Entschuldigung" /
66
- "Sorry"). Switch immediately on the same reply. Do **not** re-explain in
67
- the wrong language. Do **not** promise "from now on" — just do it. If
68
- user asks to harden the rule, harden it on this turn.
48
+ ### Slip handling
69
49
 
70
- ### Failure modes
50
+ Acknowledge **once**, briefly, in the correct language
51
+ ("Entschuldigung" / "Sorry"). Switch on the same reply. Do **not**
52
+ re-explain in the wrong language; do **not** promise "from now on" —
53
+ just do it.
71
54
 
72
- See [`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md)
73
- for the full failure-mode list.
55
+ Full failure-mode list and wrong-vs-correct examples in
56
+ [`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md).
74
57
 
75
58
  ## Other language rules
76
59
 
77
- - All code comments must be in English.
78
- - All `.md` documentation files must be in English (see section below). If
79
- an existing file is in German, translate it when you touch it.
80
- - Use two spaces after icons like ❌, ✅, ⚠️ in CLI output. One space is not enough. For other icons, one space is fine.
81
- - Avoid double and triple blank lines in code and output — one blank line is enough.
82
- - Every file MUST end with exactly one newline — no trailing blank lines.
60
+ - Code comments in English.
61
+ - `.md` documentation files in English (see section below).
62
+ Translate existing German `.md` files when you touch them.
63
+ - Two spaces after icons `❌`, `✅`, `⚠️` in CLI output; one space
64
+ for other icons.
65
+ - One blank line max; no double or triple blank lines.
66
+ - Every file ends with exactly one newline.
83
67
 
84
68
  ## `.md` files are ALWAYS English — no exceptions
85
69
 
86
- **Every** piece of text inside `.md` files in `.augment/` and `agents/`
87
- must be in English: headings, paragraphs, bullets, example option labels,
88
- example prompts/questions, template placeholders, ASCII-art labels in
89
- formatted output blocks, table headers and content.
90
-
91
- The agent translates to the user's language **at runtime** when
92
- presenting options. The `.md` source files are the English blueprint —
93
- they define WHAT to say, not in which language. Concrete wrong-vs-correct
94
- examples live in [`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md).
70
+ **Every** piece of text inside `.md` files in `.augment/`,
71
+ `.agent-src/`, `.agent-src.uncompressed/`, and `agents/` must be in
72
+ English: headings, paragraphs, bullets, option labels, example
73
+ prompts, template placeholders, ASCII-art labels, table headers and
74
+ content. The agent translates to the user's language **at runtime**.
95
75
 
96
- ### Quoted user-input examples — labeled-anchor exception
76
+ ### Labeled-anchor exception
97
77
 
98
- Drift pattern: a rule writes quoted German examples inside English prose.
99
- **Not allowed**. Two correct ways:
78
+ Quoting German examples inside English prose is **not allowed**.
79
+ Two correct ways:
100
80
 
101
- 1. **Translate to English.** Trigger recognition is semantic; the agent
102
- matches intent across languages regardless of the example.
103
- 2. **Use a labeled `DE: · EN: …` anchor list** when the multilingual
104
- nature of recognition is the point the **only** allowed location
105
- for German prose in an English `.md`. Reference established phrases
106
- abstractly later and link back to the anchor block.
107
-
108
- Wrong-vs-correct snippets in
109
- [`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md).
81
+ 1. **Translate to English** trigger recognition is semantic.
82
+ 2. **Use a labeled `DE: · EN: …` anchor list** when the
83
+ multilingual nature of recognition is the point. This is the
84
+ **only** allowed location for German prose in an English `.md`;
85
+ reference phrases abstractly elsewhere and link to the anchor.
110
86
 
111
87
  ### Detection heuristic
112
88
 
@@ -121,4 +97,4 @@ Before saving an `.md` file under `.augment/`, `.agent-src/`,
121
97
  - Non-English quoted phrases in body text (paragraphs, list items,
122
98
  table cells) when the surrounding prose is English.
123
99
 
124
- Hit → translate the fragment or move it into a `DE: … · EN: …` block.
100
+ Hit → translate it or move it into a `DE: … · EN: …` block.