@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
@@ -10,9 +10,10 @@ source: package
10
10
 
11
11
  ## When to use
12
12
 
13
- * PR has review comments (bots like Copilot, Greptile, Augment, or human
14
- reviewers) and the next step is addressing them
15
- * Someone pasted review feedback and asks you to "fix it" or "handle it"
13
+ * A PR has review comments (from bots like Copilot, Greptile, Augment,
14
+ or from human reviewers) and the next step is to address them
15
+ * Someone pasted review feedback into the conversation and asks you
16
+ to "fix it" or "handle it"
16
17
  * A pair-programming partner gave verbal suggestions about code you
17
18
  just wrote
18
19
  * You are tempted to reply "you are absolutely right" before reading
@@ -21,10 +22,10 @@ source: package
21
22
  Do NOT use when:
22
23
 
23
24
  * You are writing a review yourself (different discipline)
24
- * User explicitly asks for blind implementation of a specific change
25
- not framed as review feedback
26
- * Pure style/formatting the linter should decide automatically — run
27
- the linter
25
+ * The user explicitly asks for blind implementation of a specific change
26
+ that is not framed as review feedback
27
+ * The feedback is pure style/formatting that a linter should decide
28
+ automatically — just run the linter
28
29
 
29
30
  ## Goal
30
31
 
@@ -40,40 +41,42 @@ NO IMPLEMENTATION UNTIL THE FEEDBACK IS UNDERSTOOD AND VERIFIED.
40
41
  ```
41
42
 
42
43
  A "fix" implemented against a misread comment is worse than no fix —
43
- ships the wrong behavior under the label of "addressed feedback".
44
+ it ships the wrong behavior under the label of "addressed feedback".
44
45
 
45
46
  ## Procedure
46
47
 
47
48
  ### 1. Read the full comment set before touching code
48
49
 
49
50
  Read **every** open comment on the PR first. Comments often relate to
50
- each other — fixing comment #3 in isolation can conflict with #5. Group:
51
+ each other — fixing comment #3 in isolation can conflict with comment
52
+ #5. Group them:
51
53
 
52
54
  * **Blocking** — breaks behavior, introduces a bug, security issue
53
- * **Important** — logic correct but design / readability issue
55
+ * **Important** — logic is correct but design / readability issue
54
56
  * **Minor** — naming, comment style, formatting the linter missed
55
- * **Wrong** — reviewer misunderstood the code, or suggestion regresses
56
- another behavior
57
+ * **Wrong** — reviewer misunderstood the code, or suggestion would
58
+ regress another behavior
57
59
 
58
60
  ### 2. Restate each comment in your own words
59
61
 
60
62
  For every comment, write (internally or to the user): *"The reviewer
61
63
  is asking me to X because Y."*
62
64
 
63
- Cannot complete that sentence confidently → the comment is unclear. Ask
64
- for clarification **before** implementing anything. Do not implement
65
- the clear ones first and ask later — they may be linked.
65
+ If you cannot complete that sentence confidently → the comment is
66
+ unclear. Ask for clarification **before** implementing anything. Do
67
+ not implement the clear ones first and ask later — they may be linked.
66
68
 
67
69
  ### 3. Verify each claim against the code
68
70
 
69
- For each blocking/important comment:
71
+ For each comment classified as blocking/important:
70
72
 
71
73
  * Reproduce the alleged issue locally (run the test, hit the endpoint,
72
74
  read the actual runtime value — see [`systematic-debugging`](../systematic-debugging/SKILL.md))
73
75
  * Check what the code actually does, not what the reviewer **thinks**
74
76
  it does
75
77
  * Check whether the suggested fix would break another test or caller
76
- * Check `git blame` / history — current code may be that way for a reason
78
+ * Check `git blame` / history — the current code may be the way it is
79
+ for a reason
77
80
  * **Consult memory for prior context.** Via
78
81
  [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md),
79
82
  call `retrieve(types=["historical-patterns", "architecture-decisions"],
@@ -86,21 +89,21 @@ For each blocking/important comment:
86
89
 
87
90
  | Situation | Response |
88
91
  |---|---|
89
- | Reviewer right, fix local, no caller impact | Implement, reference the comment in the commit message |
90
- | Reviewer right but fix affects other callers | Note downstream effects in the reply, then implement |
91
- | Reviewer wrong — misreading the code | Reply with evidence (specific line / test / value), do not change code |
92
+ | Reviewer is right, fix is local, no caller impact | Implement, reference the comment in the commit message |
93
+ | Reviewer is right but fix affects other callers | Note the downstream effects in the reply, then implement |
94
+ | Reviewer is wrong — based on misreading the code | Reply with evidence (specific line / test / value), do not change code |
92
95
  | Reviewer suggests a feature the codebase does not use (YAGNI) | Reply asking whether the feature is actually needed, do not build speculatively |
93
96
  | Reviewer and user / architecture disagree | Escalate to the user before implementing either path |
94
97
 
95
98
  ### 5. Reply in the right place, with the right tone
96
99
 
97
- * Inline PR comments → reply **in the thread** of that comment, not as
98
- a top-level PR comment
100
+ * For inline PR comments → reply **in the thread** of that comment,
101
+ not as a top-level PR comment
99
102
  * Quote **evidence**, not opinion — "line 47 already handles this via
100
103
  `$x->isNull()`" beats "I think that's fine"
101
104
  * No flattery. No "great catch", "absolutely right", "thanks for
102
- noticing". The `language-and-tone` rule already bans this — actions
103
- are the acknowledgement
105
+ noticing". The existing `language-and-tone` rule already bans this —
106
+ actions are the acknowledgement
104
107
  * If you were wrong in your earlier pushback, state it factually and
105
108
  move on. No long apology
106
109
 
@@ -108,11 +111,11 @@ For each blocking/important comment:
108
111
 
109
112
  1. Blocking issues first
110
113
  2. Important issues next
111
- 3. Minor issues last (or bundle into a single commit)
114
+ 3. Minor issues last (or bundle them into a single commit)
112
115
  4. Wrong / YAGNI: no code change, only a reply with reasoning
113
116
 
114
- Run relevant tests and linters **between** each group — do not batch
115
- four changes and then run tests once. See
117
+ Run the relevant tests and linters **between** each group — do not
118
+ batch four changes and then run tests once. See
116
119
  [`verify-before-complete`](../verify-before-complete/SKILL.md).
117
120
 
118
121
  ## Output format
@@ -122,34 +125,36 @@ When reporting back to the user after handling review:
122
125
  1. **Triage table** — comment → classification → decision
123
126
  2. **Implemented changes** — bullet per change with file + commit ref
124
127
  3. **Pushed back** — bullet per rejected comment with the evidence
125
- 4. **Outstanding** — anything awaiting clarification, with the specific
126
- question
128
+ 4. **Outstanding** — anything awaiting clarification, with the
129
+ specific question
127
130
 
128
131
  ## Gotchas
129
132
 
130
133
  * Bot comments (Copilot, Greptile) are **not** automatically right.
131
- Frequently flag false positives on patterns the codebase uses
132
- deliberately. Verify like a human comment.
133
- * A comment reading like a question ("should this be X?") is often a
134
- polite way of saying "change it to X". Ask if unclear.
134
+ They frequently flag false positives on patterns the codebase uses
135
+ deliberately. Verify like you would a human comment.
136
+ * A comment that reads like a question ("should this be X?") is often
137
+ a polite way of saying "change it to X". Ask if unclear instead of
138
+ guessing the register.
135
139
  * Resolving a comment in the GitHub UI without an accompanying fix or
136
- reply silently marks it handled — reviewers may miss the lack of
137
- substance.
140
+ reply silently marks it handled — reviewers may not notice the lack
141
+ of substance.
138
142
  * Stacked PRs — a comment on the base PR may already be fixed in the
139
143
  child PR. Check both before touching code.
140
144
  * A suggestion that passes review aesthetics but fails the test suite
141
145
  is still a regression. Run tests even when "the change is trivial".
142
- * Flattery leaks in as "good point" or "thanks". Delete before sending.
146
+ * Flattery leaks in as "good point" or "thanks". Delete before
147
+ sending. The code change itself is the acknowledgement.
143
148
 
144
149
  ## Do NOT
145
150
 
146
151
  * Do NOT reply "you are absolutely right", "great catch", or any
147
152
  flattery variant — actions acknowledge, words do not
148
153
  * Do NOT implement a suggestion before verifying it against the code
149
- * Do NOT fix the clear items first and ask about the unclear ones later
150
- when the items are linked
151
- * Do NOT accept a reviewer's suggestion that conflicts with an explicit
152
- architectural decision without raising it
154
+ * Do NOT fix the clear items first and ask about the unclear ones
155
+ later when the items are linked
156
+ * Do NOT accept a reviewer's suggestion that conflicts with an
157
+ explicit architectural decision without raising it
153
158
  * Do NOT batch multiple unrelated fixes into one commit — reviewers
154
159
  cannot re-review selectively
155
160
  * Do NOT mark a comment resolved without either a code change or a
@@ -159,15 +164,15 @@ When reporting back to the user after handling review:
159
164
 
160
165
  * Replying "Fixed!" after a commit that does not actually address the
161
166
  comment (wrong file, missed case)
162
- * Rewriting the comment author's suggestion into your own words without
163
- checking whether the reinterpretation still matches intent
167
+ * Rewriting the comment author's suggestion into your own words
168
+ without checking whether the reinterpretation still matches intent
164
169
  * Implementing the YAGNI-suggested feature "just in case" the reviewer
165
170
  comes back
166
171
  * Silent disagreement — ignoring a comment without a reply
167
172
 
168
173
  ## When to hand over to another skill / command
169
174
 
170
- * Executing fixes across many comments → [`fix-pr-comments`](../../commands/fix-pr-comments.md)
175
+ * Executing the fixes across many comments → [`fix-pr-comments`](../../commands/fix-pr-comments.md)
171
176
  (handles both bot + developer), [`fix-pr-bot-comments`](../../commands/fix-pr-bot-comments.md),
172
177
  [`fix-pr-developer-comments`](../../commands/fix-pr-developer-comments.md)
173
178
  * Running the full verification gate before pushing replies →
@@ -181,10 +186,10 @@ When reporting back to the user after handling review:
181
186
 
182
187
  Before considering review handling done:
183
188
 
184
- * [ ] Every open comment read, classified, decision made
185
- * [ ] No comment implemented without a one-sentence restatement
186
- * [ ] Every implemented fix verified by a test or runtime check
189
+ * [ ] Every open comment has been read, classified, and has a decision
190
+ * [ ] No comment was implemented without a one-sentence restatement
191
+ * [ ] Every implemented fix has been verified by a test or runtime check
187
192
  * [ ] Every rejected comment has a reply quoting evidence
188
- * [ ] No comment marked resolved without code change or reply
193
+ * [ ] No comment was marked resolved without code change or reply
189
194
  * [ ] No reply contains flattery
190
195
  * [ ] Linters and relevant tests pass after the changes
@@ -217,4 +217,3 @@ For `low`, the question replaces the AC list:
217
217
  - [`work_engine.scoring.confidence`](../../templates/scripts/work_engine/scoring/confidence.py) — rubric + band thresholds
218
218
  - [`ask-when-uncertain`](../../rules/ask-when-uncertain.md) — one-question-per-turn Iron Law
219
219
  - [`artifact-drafting-protocol`](../../rules/artifact-drafting-protocol.md) — this skill was drafted under it
220
- - `agents/roadmaps/archive/road-to-prompt-driven-execution.md` — Phase 3 owns this skill (archived on completion)
@@ -11,17 +11,19 @@ source: package
11
11
  ## When to use
12
12
 
13
13
  * About to run `/create-pr` or `/prepare-for-review`
14
- * Feature or bug fix is code-complete and the next step is "get eyes on it"
15
- * A stacked PR is ready and the parent-branch reviewer needs to
14
+ * A feature or bug fix is code-complete and the next step is "get
15
+ eyes on it"
16
+ * A stacked PR is ready and you need the parent branch reviewer to
16
17
  context-switch smoothly
17
- * Asking a human for a quick sanity check on a specific commit or diff
18
+ * Asking a human for a quick sanity check on a specific commit or
19
+ diff
18
20
 
19
21
  Do NOT use when:
20
22
 
21
23
  * You are *processing* review feedback — use [`receiving-code-review`](../receiving-code-review/SKILL.md)
22
- * Branch is not yet code-complete — the review-request gate requires
23
- green tests and a clean diff
24
- * Change is documentation-only with no behavior impact
24
+ * The branch is not yet code-complete — the review-request gate
25
+ requires green tests and a clean diff
26
+ * The change is documentation-only and has no behavior impact
25
27
 
26
28
  ## Goal
27
29
 
@@ -36,9 +38,9 @@ process. A well-framed review request **halves** review time and
36
38
  NEVER REQUEST REVIEW FROM A BRANCH YOU HAVE NOT REVIEWED YOURSELF.
37
39
  ```
38
40
 
39
- Self-review is the single cheapest filter. Catches the issues a human
40
- reviewer would flag in round one, so the human can spend time on
41
- issues only they can see.
41
+ Self-review is the single cheapest filter. It catches the issues a
42
+ human reviewer would flag in round one, so the human reviewer can
43
+ spend time on the issues only they can see.
42
44
 
43
45
  ## Procedure
44
46
 
@@ -46,18 +48,19 @@ issues only they can see.
46
48
 
47
49
  Before asking anyone else:
48
50
 
49
- * Read the full diff (`git diff <base>...<head>`), not just files you
50
- remember touching
51
+ * Read the full diff (`git diff <base>...<head>`), not just the files
52
+ you remember touching
51
53
  * Check for accidental debug output, dead code, leftover `dd()`,
52
54
  `console.log`, commented-out blocks
53
55
  * Check for secrets in diff — API keys, connection strings, tokens
54
56
  * Check file-system side effects — generated files, lockfile churn,
55
57
  IDE configs, `.env` changes
56
58
  * Run the linter + tests (see [`verify-before-complete`](../verify-before-complete/SKILL.md))
57
- * Find issues → fix them, do **not** ship and hope the reviewer flags
59
+ * If you find issues → fix them, do **not** ship them and hope the
60
+ reviewer flags them
58
61
 
59
- Use [`review-changes`](../../commands/review-changes.md) as the
60
- structured walk-through.
62
+ Use the [`review-changes`](../../commands/review-changes.md) command
63
+ as the structured walk-through.
61
64
 
62
65
  ### 2. Establish the diff baseline
63
66
 
@@ -78,8 +81,8 @@ review 80 unrelated commits.
78
81
 
79
82
  ### 3. Write the review request context
80
83
 
81
- Any review request must answer four questions. Missing any the
82
- reviewer will ask, and that round trip is preventable.
84
+ Any review request must answer four questions. If any is missing, the
85
+ reviewer will ask and that round trip is preventable.
83
86
 
84
87
  | Question | Where it lives |
85
88
  |---|---|
@@ -96,22 +99,24 @@ for the title format.
96
99
  ### 4. Keep the PR reviewable in size
97
100
 
98
101
  * Target < 400 lines of real diff (excluding generated / lockfiles)
99
- * Bigger — consider splitting into a stack (refactor PR → feature PR)
100
- so reviewers can handle each in one sitting
101
- * Flag generated files explicitly in the description so reviewers skip
102
- * Never mix a refactor + behavior change in one PR — reviewers cannot
103
- isolate the risk
102
+ * If bigger — consider splitting into a stack (refactor PR → feature
103
+ PR) so reviewers can handle each in one sitting
104
+ * Flag generated files explicitly in the description so reviewers
105
+ skip them
106
+ * Never mix a refactor + behavior change in the same PR — reviewers
107
+ cannot isolate the risk
104
108
 
105
109
  ### 5. Pick the right reviewer set
106
110
 
107
- * **Architectural impact** → code owner for the affected area
108
- * **Security-sensitive** → a security-reviewer role if the project has one
111
+ * **Architectural impact** → the code owner for the affected area
112
+ * **Security-sensitive** → a security-reviewer role if the project has
113
+ one
109
114
  * **Bots** → let Copilot / Greptile / Augment run automatically; do not
110
115
  gate human review on bot completion
111
116
  * **Cross-team change** → each affected team's owner
112
117
 
113
- Project with a `CODEOWNERS` file GitHub handles this automatically;
114
- do not override without a reason.
118
+ If the project has a `CODEOWNERS` file, GitHub handles this
119
+ automatically — do not override without a reason.
115
120
 
116
121
  ### 6. Send and wait — do not nudge early
117
122
 
@@ -119,8 +124,8 @@ After the PR is open:
119
124
 
120
125
  * Respond to questions, not to the implicit "where is my review?"
121
126
  schedule
122
- * Review blocking and overdue → a single short nudge is appropriate;
123
- do not re-open or force-push to bump the PR list
127
+ * If the review is blocking and overdue → a single short nudge is
128
+ appropriate; do not re-open or force-push to bump the PR list
124
129
 
125
130
  When review comments arrive → switch to
126
131
  [`receiving-code-review`](../receiving-code-review/SKILL.md).
@@ -144,9 +149,9 @@ When handing the review request to the reviewer (PR body, Slack, email):
144
149
  * A 1000-line PR with "no behavior change" still needs review — the
145
150
  reviewer has no way to confirm "no behavior change" without reading
146
151
  every line
147
- * Auto-merge on approval bypasses re-review after later force-pushes
148
- use deliberately, not by habit
149
- * A PR description saying "see the code" is not a description —
152
+ * Auto-merge on approval bypasses re-review after later force-pushes
153
+ use deliberately, not by habit
154
+ * A PR description that says "see the code" is not a description —
150
155
  reviewers need the why
151
156
  * Requesting review from someone without context (new hire, other
152
157
  team) without a longer pairing — they cannot do a deep review cold
@@ -11,8 +11,13 @@ source: package
11
11
  Use when implementing authentication, authorization, or any security-sensitive functionality.
12
12
 
13
13
  Do NOT use when:
14
- - Validation logic only (use `laravel-validation` skill)
15
- - Full security audit (use `security-audit` skill)
14
+
15
+ * Validation logic only route to [`laravel-validation`](../laravel-validation/SKILL.md)
16
+ * Full security audit — route to [`security-audit`](../security-audit/SKILL.md)
17
+ * You need a pre-implementation threat model — route to
18
+ [`threat-modeling`](../threat-modeling/SKILL.md)
19
+ * You need end-to-end authorization analysis — route to
20
+ [`authz-review`](../authz-review/SKILL.md)
16
21
 
17
22
  ## Procedure: Implement security for a feature
18
23
 
@@ -24,9 +24,13 @@ Use this skill when:
24
24
 
25
25
  Do NOT use when:
26
26
 
27
- - Writing new auth/policy code use `security`
28
- - Hunting for functional bugs use `bug-analyzer` (proactive mode)
29
- - Investigating performance use `performance-analysis`
27
+ * Writing new auth/policy code route to [`security`](../security/SKILL.md)
28
+ * Hunting for functional bugs route to [`bug-analyzer`](../bug-analyzer/SKILL.md) (proactive mode)
29
+ * Investigating performance route to [`performance-analysis`](../performance-analysis/SKILL.md)
30
+ * You need a pre-implementation threat model for a new feature — route to
31
+ [`threat-modeling`](../threat-modeling/SKILL.md)
32
+ * You need end-to-end authorization analysis for one route/action — route to
33
+ [`authz-review`](../authz-review/SKILL.md)
30
34
 
31
35
  ## Procedure: Security audit
32
36
 
@@ -8,8 +8,8 @@ source: package
8
8
 
9
9
  ## When to use
10
10
 
11
- * Test fails and failure is not self-explanatory
12
- * Bug reported (Jira, Sentry, user message), root cause not obvious
11
+ * A test fails and the failure is not self-explanatory
12
+ * A bug is reported (Jira, Sentry, user message) and the root cause is not obvious
13
13
  * Production or staging shows unexpected behavior
14
14
  * Code behaves differently than the developer expected
15
15
  * A previous fix did not resolve the issue or introduced a new one
@@ -17,14 +17,19 @@ source: package
17
17
 
18
18
  Do NOT use when:
19
19
 
20
- * Failure message names the fix (typo, missing import, obvious off-by-one) — fix it
20
+ * The failure message already names the fix (typo, missing import, obvious
21
+ off-by-one) — fix it and move on
21
22
  * Pure style / formatting / lint issues
22
23
  * Documentation-only questions
24
+ * You need a static trace of a specific data element — route to
25
+ [`data-flow-mapper`](../data-flow-mapper/SKILL.md)
26
+ * You need to enumerate what a planned change will touch — route to
27
+ [`blast-radius-analyzer`](../blast-radius-analyzer/SKILL.md)
23
28
 
24
29
  ## Goal
25
30
 
26
- Find the **root cause** before changing any code. A symptom fix papering
27
- over an unknown cause is a regression waiting to happen.
31
+ Find the **root cause** before changing any code. A symptom fix that
32
+ papers over an unknown cause is a regression waiting to happen.
28
33
 
29
34
  ## The Iron Law
30
35
 
@@ -37,30 +42,31 @@ diff, a reproduced failure — those are evidence.
37
42
 
38
43
  ## Procedure
39
44
 
40
- Complete each phase before the next. Skipping ahead is the single
41
- biggest cause of wasted debug time.
45
+ Complete each phase before starting the next. Skipping ahead is the
46
+ single biggest cause of wasted debug time.
42
47
 
43
48
  ### Phase 1 — Reproduce
44
49
 
45
- Goal: make the failure happen on demand, smallest possible setup.
50
+ Goal: make the failure happen on demand, with the smallest possible setup.
46
51
 
47
- 1. Read the error message, stack trace, and logs **in full**. Note exact
48
- file, line, and the chain of calls above it.
49
- 2. Identify the minimum input, state, or action sequence triggering the
50
- failure. Intermittent gather more data before guessing.
52
+ 1. Read the error message, stack trace, and logs **in full**. Note the
53
+ exact file, line, and the chain of calls above it.
54
+ 2. Identify the minimum input, state, or sequence of actions that
55
+ triggers the failure. If it is intermittent — gather more data before
56
+ guessing.
51
57
  3. Capture the exact reproduction as a command or a test. Prefer a
52
58
  failing test (see [`test-driven-development`](../test-driven-development/SKILL.md))
53
- — turns Phase 4 into a verified fix.
59
+ it turns Phase 4 into a verified fix.
54
60
 
55
- Cannot reproduce? You do not yet understand the bug. Stop. Add logging,
56
- re-run, collect more evidence.
61
+ If you cannot reproduce, you do not yet understand the bug. Stop. Add
62
+ logging, re-run, collect more evidence.
57
63
 
58
64
  ### Phase 2 — Isolate
59
65
 
60
66
  Goal: locate the failure in a single component, layer, or call site.
61
67
 
62
- 1. Bisect the surface area. Smallest code path that still fails? Turn
63
- off/skip/mock adjacent features to narrow the window.
68
+ 1. Bisect the surface area. What is the smallest code path that still
69
+ fails? Turn off/skip/mock adjacent features to narrow the window.
64
70
  2. For multi-component systems (frontend → API → service → DB, or
65
71
  CI → build → deploy), log at **each boundary**:
66
72
 
@@ -68,7 +74,8 @@ Goal: locate the failure in a single component, layer, or call site.
68
74
  * What leaves the component
69
75
  * What config/env the component actually sees
70
76
 
71
- Goal: answer "which boundary has expected ≠ actual?".
77
+ The goal is not to fix — it is to answer "which boundary is the one
78
+ where expected ≠ actual?".
72
79
  3. Check recent changes: `git log`, `git blame` on the failing line,
73
80
  recent dependency updates, config edits, infra changes.
74
81
  4. **Consult memory for prior matches.** Via
@@ -81,13 +88,13 @@ Goal: locate the failure in a single component, layer, or call site.
81
88
  limit=3,
82
89
  )
83
90
  ```
84
- A matching `incident-learning` may already name the root cause, fix,
85
- and regression test. A matching `historical-pattern` narrows the
86
- hypothesis space before Phase 3. Cite matching `id`s in the evidence
87
- trail.
88
- 5. Trace backwards from the symptom. `null` arrives at line 42 — where
89
- does the value originate? Walk up the call stack until the origin is
90
- found. Fix at origin, not at line 42.
91
+ A matching `incident-learning` may already name the root cause, the
92
+ fix, and the regression test. A matching `historical-pattern`
93
+ narrows the hypothesis space before Phase 3. Cite matching `id`s in
94
+ the Phase 1–4 evidence trail.
95
+ 5. Trace backwards from the symptom. If `null` arrives at line 42 —
96
+ where does the value originate? Walk up the call stack until the
97
+ origin is found. Fix at origin, not at line 42.
91
98
 
92
99
  ### Phase 3 — Hypothesize
93
100
 
@@ -95,35 +102,35 @@ Goal: one testable hypothesis at a time, rejected or confirmed by evidence.
95
102
 
96
103
  1. State the hypothesis in one sentence: *"The failure happens because
97
104
  X, which I can confirm by observing Y."*
98
- 2. Design the smallest possible experiment that confirms or rejects the
99
- hypothesis. One variable at a time.
105
+ 2. Design the smallest possible experiment that either confirms or
106
+ rejects the hypothesis. One variable at a time.
100
107
  3. Run it. Read the output.
101
- 4. Confirmed → Phase 4. Rejected → back to Phase 2 with new
108
+ 4. If confirmed → Phase 4. If rejected → back to Phase 2 with the new
102
109
  information, then form a new hypothesis.
103
110
 
104
- Three hypotheses in a row fail stop. You do not understand the system
105
- well enough yet, or the architecture itself is the problem — see
111
+ If three hypotheses in a row fail, stop. You do not understand the
112
+ system well enough yet, or the architecture is the problem itself — see
106
113
  "Three-strike rule" below.
107
114
 
108
115
  ### Phase 4 — Verify the fix
109
116
 
110
117
  Goal: the fix resolves the root cause, not just the observed symptom.
111
118
 
112
- 1. Write or update a failing test reproducing the bug (if not already
113
- done in Phase 1).
119
+ 1. Write or update a failing test that reproduces the bug (if not
120
+ already done in Phase 1).
114
121
  2. Apply a single, minimal fix targeting the root cause. No bundled
115
122
  refactors, no "while I'm here".
116
- 3. Re-run the reproduction — failure gone.
117
- 4. Re-run the surrounding test suite — nothing adjacent turned red.
118
- 5. Read output carefully — no new warnings, deprecations, or silent
119
- retries masking the same bug recurring.
123
+ 3. Re-run the reproduction — the failure is gone.
124
+ 4. Re-run the surrounding test suite — nothing adjacent has turned red.
125
+ 5. Read the output carefully — no new warnings, deprecations, or
126
+ silent retries that would mask the same bug recurring.
120
127
 
121
- Fix does not work? **Do not** stack a second fix on top. Go back to
122
- Phase 2, treat the failure as new evidence.
128
+ If the fix does not work, **do not** stack a second fix on top. Go back
129
+ to Phase 2, treat the failure as new evidence.
123
130
 
124
131
  ## Three-strike rule
125
132
 
126
- After **three** attempted fixes with the bug still present:
133
+ If you have tried **three** fixes and the bug is still present:
127
134
 
128
135
  * Stop attempting fixes.
129
136
  * Re-read phases 1–3 — something about the root cause is wrong.
@@ -150,7 +157,7 @@ right line beats five minutes of IDE breakpoints.
150
157
  ## Condition-based waiting (intermittent bugs)
151
158
 
152
159
  Intermittent tests and race conditions usually stem from waiting on
153
- time instead of a condition. Replace `sleep(100)` or
160
+ time instead of on a condition. Replace `sleep(100)` or
154
161
  `setTimeout(r, 100)` with an explicit wait-for:
155
162
 
156
163
  ```ts
@@ -172,11 +179,12 @@ async function waitFor<T>(
172
179
  ```
173
180
 
174
181
  Only use an arbitrary timeout when the timing itself is the contract
175
- (debounce, throttle) — add a comment explaining **why** the exact value.
182
+ (debounce, throttle) — and add a comment explaining **why** the exact
183
+ value.
176
184
 
177
185
  ## Output format
178
186
 
179
- When reporting debug findings:
187
+ When reporting debug findings to the user:
180
188
 
181
189
  1. **Symptom** — what was observed (one sentence + failure message)
182
190
  2. **Reproduction** — the command or test that triggers it
@@ -189,27 +197,27 @@ When reporting debug findings:
189
197
 
190
198
  * Reading half a stack trace and jumping to a fix — the actual cause is
191
199
  usually two or three frames above the one you read.
192
- * "It works on my machine" — different env than the bug report.
193
- Reproduce with exact conditions from the report.
194
- * Adding a retry or sleep to mask an intermittent failure — hides the
195
- race condition, does not fix it. Use condition-based waiting.
196
- * Fixing the first line that throws when the bad value came from up the
197
- call chain. Trace backwards to the origin.
200
+ * "It works on my machine" — you are running a different env than the
201
+ bug report. Reproduce with the exact conditions from the report.
202
+ * Adding a retry or sleep to mask an intermittent failure — this hides
203
+ the race condition, it does not fix it. Use condition-based waiting.
204
+ * Fixing the first line that throws, when the bad value came from
205
+ somewhere up the call chain. Trace backwards to the origin.
198
206
  * "The fix works, the test is just flaky" — flaky tests are bugs in the
199
207
  test or the code. Diagnose them, do not retry-until-green.
200
- * Turning a failing assertion into a softer one ("maybe 2 or 3 retries,
201
- accept both") to make it pass.
202
- * Bundling a bug fix with a refactor — test goes red again, cannot tell
203
- which change broke it.
208
+ * Turning a failing assertion into a softer one ("maybe it's 2 or 3
209
+ retries, let's accept both") to make it pass.
210
+ * Bundling a bug fix with a refactor — if the test goes red again you
211
+ cannot tell which change broke it.
204
212
 
205
213
  ## Red flags — STOP and restart from Phase 1
206
214
 
207
215
  * "Let me just try X and see if it works"
208
216
  * "I don't fully understand it, but this probably fixes it"
209
217
  * Proposing a fix without having reproduced the bug
210
- * Bundling multiple changes in one attempt
218
+ * Bundling multiple changes in one attempt ("fixing this and refactoring that")
211
219
  * "It's probably a race condition, let me add a sleep"
212
- * A green test run after changes without having first seen it red
220
+ * A green test run after changes, without having first seen it red
213
221
  * "This looks similar to bug X, so it's the same fix"
214
222
  * Suppressing a log, warning, or exception instead of tracing its source
215
223
 
@@ -219,7 +227,7 @@ When reporting debug findings:
219
227
  * Do NOT change two things at once in a single experiment
220
228
  * Do NOT silence a warning, failing test, or noisy log as a "fix"
221
229
  * Do NOT mark a bug as fixed without a regression test
222
- * Do NOT attempt fix #4 after three failed fixes — surface the pattern
230
+ * Do NOT attempt fix #4 after three failed fixes — surface the pattern instead
223
231
 
224
232
  ## When to hand over to another skill
225
233
 
@@ -234,11 +242,11 @@ When reporting debug findings:
234
242
 
235
243
  Before declaring a bug fixed:
236
244
 
237
- * [ ] Failure was reproduced before any code changed
238
- * [ ] Root cause named explicitly, not "probably"
245
+ * [ ] The failure was reproduced before any code changed
246
+ * [ ] The root cause is named explicitly, not "probably"
239
247
  * [ ] Evidence (log, trace, diff) supports the named root cause
240
- * [ ] Failing test reproducing the bug was added or updated
241
- * [ ] Fix is minimal, targets the root cause, not the symptom
242
- * [ ] Regression test now passes
248
+ * [ ] A failing test reproducing the bug was added or updated
249
+ * [ ] The fix is minimal and targets the root cause, not the symptom
250
+ * [ ] The regression test now passes
243
251
  * [ ] Adjacent tests still pass
244
252
  * [ ] No warning or suppressed output hides a recurrence