@event4u/agent-config 1.15.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 (354) 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/bug-fix.md +1 -1
  6. package/.agent-src/commands/bug-investigate.md +2 -2
  7. package/.agent-src/commands/{chat-history-checkpoint.md → chat-history/checkpoint.md} +5 -5
  8. package/.agent-src/commands/{chat-history-clear.md → chat-history/clear.md} +5 -5
  9. package/.agent-src/commands/{chat-history-resume.md → chat-history/resume.md} +4 -4
  10. package/.agent-src/commands/chat-history/show.md +107 -0
  11. package/.agent-src/commands/chat-history.md +33 -89
  12. package/.agent-src/commands/check-current-md.md +1 -1
  13. package/.agent-src/commands/{commit-in-chunks.md → commit/in-chunks.md} +15 -13
  14. package/.agent-src/commands/commit.md +22 -2
  15. package/.agent-src/commands/{context-create.md → context/create.md} +4 -3
  16. package/.agent-src/commands/{context-refactor.md → context/refactor.md} +4 -3
  17. package/.agent-src/commands/context.md +44 -0
  18. package/.agent-src/commands/{copilot-agents-init.md → copilot-agents/init.md} +4 -3
  19. package/.agent-src/commands/{copilot-agents-optimize.md → copilot-agents/optimize.md} +4 -3
  20. package/.agent-src/commands/copilot-agents.md +44 -0
  21. package/.agent-src/commands/council/default.md +221 -0
  22. package/.agent-src/commands/council/design.md +97 -0
  23. package/.agent-src/commands/council/optimize.md +116 -0
  24. package/.agent-src/commands/council/pr.md +124 -0
  25. package/.agent-src/commands/council.md +54 -0
  26. package/.agent-src/commands/{create-pr-description.md → create-pr/description-only.md} +4 -2
  27. package/.agent-src/commands/create-pr.md +49 -5
  28. package/.agent-src/commands/e2e-heal.md +1 -1
  29. package/.agent-src/commands/e2e-plan.md +1 -1
  30. package/.agent-src/commands/{feature-dev.md → feature/dev.md} +6 -3
  31. package/.agent-src/commands/{feature-explore.md → feature/explore.md} +5 -4
  32. package/.agent-src/commands/{feature-plan.md → feature/plan.md} +32 -5
  33. package/.agent-src/commands/{feature-refactor.md → feature/refactor.md} +4 -3
  34. package/.agent-src/commands/{feature-roadmap.md → feature/roadmap.md} +7 -6
  35. package/.agent-src/commands/feature.md +52 -0
  36. package/.agent-src/commands/{fix-ci.md → fix/ci.md} +4 -3
  37. package/.agent-src/commands/{fix-portability.md → fix/portability.md} +4 -3
  38. package/.agent-src/commands/{fix-pr-bot-comments.md → fix/pr-bots.md} +4 -3
  39. package/.agent-src/commands/{fix-pr-developer-comments.md → fix/pr-developers.md} +4 -3
  40. package/.agent-src/commands/{fix-pr-comments.md → fix/pr.md} +7 -6
  41. package/.agent-src/commands/{fix-references.md → fix/refs.md} +4 -3
  42. package/.agent-src/commands/{fix-seeder.md → fix/seeder.md} +4 -3
  43. package/.agent-src/commands/fix.md +54 -0
  44. package/.agent-src/commands/jira-ticket.md +1 -1
  45. package/.agent-src/commands/{do-and-judge.md → judge/on-diff.md} +7 -6
  46. package/.agent-src/commands/judge/solo.md +90 -0
  47. package/.agent-src/commands/{do-in-steps.md → judge/steps.md} +8 -7
  48. package/.agent-src/commands/judge.md +35 -70
  49. package/.agent-src/commands/{memory-add.md → memory/add.md} +7 -6
  50. package/.agent-src/commands/{memory-full.md → memory/load.md} +6 -5
  51. package/.agent-src/commands/{memory-promote.md → memory/promote.md} +6 -5
  52. package/.agent-src/commands/{propose-memory.md → memory/propose.md} +6 -5
  53. package/.agent-src/commands/memory.md +48 -0
  54. package/.agent-src/commands/mode.md +5 -5
  55. package/.agent-src/commands/{module-create.md → module/create.md} +4 -3
  56. package/.agent-src/commands/{module-explore.md → module/explore.md} +4 -3
  57. package/.agent-src/commands/module.md +44 -0
  58. package/.agent-src/commands/onboard.md +3 -3
  59. package/.agent-src/commands/{optimize-agents.md → optimize/agents.md} +5 -4
  60. package/.agent-src/commands/{optimize-augmentignore.md → optimize/augmentignore.md} +4 -4
  61. package/.agent-src/commands/{optimize-rtk-filters.md → optimize/rtk.md} +4 -3
  62. package/.agent-src/commands/{optimize-skills.md → optimize/skills.md} +5 -4
  63. package/.agent-src/commands/optimize.md +48 -0
  64. package/.agent-src/commands/{override-create.md → override/create.md} +4 -3
  65. package/.agent-src/commands/{override-manage.md → override/manage.md} +4 -3
  66. package/.agent-src/commands/override.md +44 -0
  67. package/.agent-src/commands/review-changes.md +26 -1
  68. package/.agent-src/commands/review-routing.md +1 -1
  69. package/.agent-src/commands/{roadmap-create.md → roadmap/create.md} +33 -5
  70. package/.agent-src/commands/{roadmap-execute.md → roadmap/execute.md} +4 -3
  71. package/.agent-src/commands/roadmap.md +44 -0
  72. package/.agent-src/commands/set-cost-profile.md +3 -3
  73. package/.agent-src/commands/sync-agent-settings.md +2 -2
  74. package/.agent-src/commands/{tests-create.md → tests/create.md} +5 -4
  75. package/.agent-src/commands/{tests-execute.md → tests/execute.md} +4 -3
  76. package/.agent-src/commands/tests.md +44 -0
  77. package/.agent-src/commands/upstream-contribute.md +1 -1
  78. package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
  79. package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
  80. package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
  81. package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +72 -0
  82. package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +79 -0
  83. package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +98 -0
  84. package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +87 -0
  85. package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +62 -0
  86. package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +78 -0
  87. package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +85 -0
  88. package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +65 -0
  89. package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +78 -0
  90. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +62 -0
  91. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +55 -0
  92. package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +53 -0
  93. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +77 -0
  94. package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
  95. package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
  96. package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
  97. package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
  98. package/.agent-src/contexts/judges/no-consolidate-rationale.md +102 -0
  99. package/.agent-src/contexts/judges/persona-voice-rubric.md +140 -0
  100. package/.agent-src/personas/README.md +1 -1
  101. package/.agent-src/rules/agent-authority.md +24 -0
  102. package/.agent-src/rules/architecture.md +1 -1
  103. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  104. package/.agent-src/rules/artifact-engagement-recording.md +14 -70
  105. package/.agent-src/rules/ask-when-uncertain.md +28 -43
  106. package/.agent-src/rules/augment-portability.md +15 -61
  107. package/.agent-src/rules/augment-source-of-truth.md +27 -93
  108. package/.agent-src/rules/autonomous-execution.md +78 -114
  109. package/.agent-src/rules/capture-learnings.md +1 -1
  110. package/.agent-src/rules/chat-history-cadence.md +3 -3
  111. package/.agent-src/rules/chat-history-ownership.md +3 -3
  112. package/.agent-src/rules/chat-history-visibility.md +3 -3
  113. package/.agent-src/rules/cli-output-handling.md +10 -76
  114. package/.agent-src/rules/command-suggestion-policy.md +93 -0
  115. package/.agent-src/rules/commit-conventions.md +17 -14
  116. package/.agent-src/rules/commit-policy.md +14 -42
  117. package/.agent-src/rules/context-hygiene.md +3 -3
  118. package/.agent-src/rules/direct-answers.md +34 -49
  119. package/.agent-src/rules/docker-commands.md +5 -5
  120. package/.agent-src/rules/docs-sync.md +16 -70
  121. package/.agent-src/rules/e2e-testing.md +1 -1
  122. package/.agent-src/rules/guidelines.md +4 -4
  123. package/.agent-src/rules/improve-before-implement.md +2 -2
  124. package/.agent-src/rules/language-and-tone.md +50 -133
  125. package/.agent-src/rules/minimal-safe-diff.md +3 -3
  126. package/.agent-src/rules/missing-tool-handling.md +28 -22
  127. package/.agent-src/rules/model-recommendation.md +4 -4
  128. package/.agent-src/rules/no-cheap-questions.md +82 -0
  129. package/.agent-src/rules/no-roadmap-references.md +73 -0
  130. package/.agent-src/rules/non-destructive-by-default.md +15 -49
  131. package/.agent-src/rules/onboarding-gate.md +5 -5
  132. package/.agent-src/rules/package-ci-checks.md +21 -61
  133. package/.agent-src/rules/preservation-guard.md +64 -29
  134. package/.agent-src/rules/review-routing-awareness.md +26 -45
  135. package/.agent-src/rules/roadmap-progress-sync.md +28 -96
  136. package/.agent-src/rules/role-mode-adherence.md +2 -2
  137. package/.agent-src/rules/scope-control.md +65 -46
  138. package/.agent-src/rules/security-sensitive-stop.md +9 -9
  139. package/.agent-src/rules/size-enforcement.md +1 -1
  140. package/.agent-src/rules/skill-quality.md +16 -48
  141. package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +7 -4
  142. package/.agent-src/rules/think-before-action.md +55 -45
  143. package/.agent-src/rules/token-efficiency.md +4 -4
  144. package/.agent-src/rules/tool-safety.md +19 -16
  145. package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +27 -41
  146. package/.agent-src/rules/user-interaction.md +16 -71
  147. package/.agent-src/rules/verify-before-complete.md +12 -67
  148. package/.agent-src/scripts/update_roadmap_progress.py +9 -4
  149. package/.agent-src/skills/ai-council/SKILL.md +335 -0
  150. package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
  151. package/.agent-src/skills/api-testing/SKILL.md +1 -1
  152. package/.agent-src/skills/blade-ui/SKILL.md +1 -1
  153. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  154. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
  155. package/.agent-src/skills/check-refs/SKILL.md +59 -40
  156. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  157. package/.agent-src/skills/command-writing/SKILL.md +1 -1
  158. package/.agent-src/skills/conventional-commits-writing/SKILL.md +86 -28
  159. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +7 -7
  160. package/.agent-src/skills/developer-like-execution/SKILL.md +6 -6
  161. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +101 -65
  162. package/.agent-src/skills/flux/SKILL.md +31 -11
  163. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  164. package/.agent-src/skills/github-ci/SKILL.md +2 -2
  165. package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
  166. package/.agent-src/skills/judge-code-quality/SKILL.md +7 -8
  167. package/.agent-src/skills/judge-security-auditor/SKILL.md +4 -5
  168. package/.agent-src/skills/judge-test-coverage/SKILL.md +3 -4
  169. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  170. package/.agent-src/skills/lint-skills/SKILL.md +57 -39
  171. package/.agent-src/skills/livewire/SKILL.md +1 -1
  172. package/.agent-src/skills/md-language-check/SKILL.md +61 -39
  173. package/.agent-src/skills/override-management/SKILL.md +7 -7
  174. package/.agent-src/skills/php-coder/SKILL.md +1 -1
  175. package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
  176. package/.agent-src/skills/quality-tools/SKILL.md +2 -2
  177. package/.agent-src/skills/react-shadcn-ui/SKILL.md +116 -43
  178. package/.agent-src/skills/readme-reviewer/SKILL.md +31 -30
  179. package/.agent-src/skills/readme-writing/SKILL.md +79 -54
  180. package/.agent-src/skills/readme-writing-package/SKILL.md +51 -48
  181. package/.agent-src/skills/receiving-code-review/SKILL.md +53 -48
  182. package/.agent-src/skills/refine-prompt/SKILL.md +0 -1
  183. package/.agent-src/skills/requesting-code-review/SKILL.md +35 -30
  184. package/.agent-src/skills/review-routing/SKILL.md +2 -2
  185. package/.agent-src/skills/rule-writing/SKILL.md +1 -1
  186. package/.agent-src/skills/security/SKILL.md +7 -2
  187. package/.agent-src/skills/security-audit/SKILL.md +7 -3
  188. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  189. package/.agent-src/skills/skill-writing/SKILL.md +3 -3
  190. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
  191. package/.agent-src/skills/systematic-debugging/SKILL.md +69 -61
  192. package/.agent-src/skills/test-driven-development/SKILL.md +59 -57
  193. package/.agent-src/skills/test-performance/SKILL.md +0 -1
  194. package/.agent-src/skills/traefik/SKILL.md +4 -4
  195. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
  196. package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  197. package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +30 -28
  198. package/.agent-src/templates/agent-settings.md +8 -8
  199. package/.agent-src/templates/contexts/auth-model.md +1 -1
  200. package/.agent-src/templates/scripts/README.md +2 -2
  201. package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
  202. package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
  203. package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
  204. package/.agent-src/templates/scripts/telemetry_record.py +14 -1
  205. package/.claude-plugin/marketplace.json +31 -12
  206. package/AGENTS.md +11 -9
  207. package/CHANGELOG.md +213 -2
  208. package/README.md +43 -44
  209. package/config/agent-settings.template.yml +58 -1
  210. package/config/gitignore-block.txt +3 -0
  211. package/docs/architecture.md +5 -7
  212. package/docs/catalog.md +359 -0
  213. package/docs/contracts/STABILITY.md +46 -1
  214. package/docs/contracts/adr-chat-history-split.md +1 -3
  215. package/docs/contracts/adr-command-suggestion.md +3 -5
  216. package/docs/contracts/adr-implement-ticket-runtime.md +1 -2
  217. package/docs/contracts/adr-product-ui-track.md +5 -8
  218. package/docs/contracts/adr-prompt-driven-execution.md +3 -4
  219. package/docs/contracts/agent-memory-contract.md +8 -13
  220. package/docs/contracts/artifact-engagement-flow.md +7 -10
  221. package/docs/contracts/command-clusters.md +56 -46
  222. package/docs/contracts/command-suggestion-flow.md +4 -6
  223. package/docs/contracts/context-paths.md +99 -0
  224. package/docs/contracts/file-ownership-matrix.json +6722 -0
  225. package/docs/contracts/file-ownership-matrix.md +134 -0
  226. package/docs/contracts/implement-ticket-flow.md +8 -11
  227. package/docs/contracts/linear-ai-rules-inclusion.md +1 -2
  228. package/docs/contracts/linear-ai-three-layers.md +0 -2
  229. package/docs/contracts/load-context-budget-model.md +178 -0
  230. package/docs/contracts/load-context-schema.md +184 -0
  231. package/docs/contracts/rule-interactions.md +0 -1
  232. package/docs/contracts/rule-interactions.yml +96 -0
  233. package/docs/contracts/rule-priority-hierarchy.md +87 -0
  234. package/docs/contracts/ui-track-flow.md +8 -18
  235. package/docs/customization.md +16 -0
  236. package/docs/end-to-end-walkthroughs.md +165 -0
  237. package/docs/getting-started.md +29 -10
  238. package/docs/github-topics.md +12 -3
  239. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +100 -0
  240. package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
  241. package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
  242. package/docs/guidelines/php/git.md +164 -0
  243. package/docs/migrations/commands-1.15.0.md +1 -1
  244. package/docs/showcase.md +9 -4
  245. package/docs/skills-catalog.md +14 -8
  246. package/docs/ui-track-mental-model.md +2 -2
  247. package/llms.txt +13 -7
  248. package/package.json +1 -1
  249. package/scripts/_one_off_phase4_dispatch_latency.py +108 -0
  250. package/scripts/_one_off_phase6_trigger_jaccard.py +92 -0
  251. package/scripts/_phase2_shim_helper.py +109 -0
  252. package/scripts/agent-config +33 -0
  253. package/scripts/ai_council/__init__.py +39 -0
  254. package/scripts/ai_council/_default_prices.py +41 -0
  255. package/scripts/ai_council/_one_off_2a4_acceptance.py +208 -0
  256. package/scripts/ai_council/_one_off_context_layer_v1_estimate.py +67 -0
  257. package/scripts/ai_council/_one_off_context_layer_v1_review.py +292 -0
  258. package/scripts/ai_council/_one_off_followups_review.py +259 -0
  259. package/scripts/ai_council/_one_off_nondestructive_inline_audit.py +209 -0
  260. package/scripts/ai_council/_one_off_phase_2a_budget_rebalance.py +257 -0
  261. package/scripts/ai_council/_one_off_phase_2a_post_revert.py +197 -0
  262. package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
  263. package/scripts/ai_council/_one_off_roundtrip.py +106 -0
  264. package/scripts/ai_council/_one_off_rule_hardening_v1.py +251 -0
  265. package/scripts/ai_council/_one_off_structural_open_questions.py +232 -0
  266. package/scripts/ai_council/_one_off_structural_optimization.py +144 -0
  267. package/scripts/ai_council/_one_off_structural_v3_gaps.py +252 -0
  268. package/scripts/ai_council/_one_off_structural_v3_review.py +240 -0
  269. package/scripts/ai_council/budget_guard.py +172 -0
  270. package/scripts/ai_council/bundler.py +261 -0
  271. package/scripts/ai_council/clients.py +381 -0
  272. package/scripts/ai_council/modes.py +127 -0
  273. package/scripts/ai_council/orchestrator.py +350 -0
  274. package/scripts/ai_council/pricing.py +213 -0
  275. package/scripts/ai_council/project_context.py +159 -0
  276. package/scripts/ai_council/prompts.py +232 -0
  277. package/scripts/ai_council/session.py +144 -0
  278. package/scripts/check_always_budget.py +444 -0
  279. package/scripts/check_augmentignore.py +69 -0
  280. package/scripts/check_cluster_patterns.py +159 -0
  281. package/scripts/check_command_count_messaging.py +127 -0
  282. package/scripts/check_context_paths.py +201 -0
  283. package/scripts/check_no_roadmap_refs.py +155 -0
  284. package/scripts/check_phase_coupling.py +148 -0
  285. package/scripts/check_portability.py +57 -0
  286. package/scripts/check_public_catalog_links.py +122 -0
  287. package/scripts/check_references.py +33 -3
  288. package/scripts/check_roadmap_trackable.py +111 -0
  289. package/scripts/check_safety_floor_untouched.py +125 -0
  290. package/scripts/command_suggester/cooldown.py +1 -1
  291. package/scripts/command_suggester/loader.py +4 -1
  292. package/scripts/compress.py +59 -13
  293. package/scripts/generate_index.py +270 -0
  294. package/scripts/generate_ownership_matrix.py +323 -0
  295. package/scripts/hooks/augment-roadmap-progress.sh +57 -0
  296. package/scripts/install.py +49 -28
  297. package/scripts/install_anthropic_key.sh +5 -0
  298. package/scripts/install_openai_key.sh +106 -0
  299. package/scripts/lint_load_context.py +163 -0
  300. package/scripts/lint_no_new_atomic_commands.py +12 -11
  301. package/scripts/requirements-evals.txt +1 -0
  302. package/scripts/roadmap_progress_hook.py +159 -0
  303. package/scripts/schemas/command.schema.json +22 -1
  304. package/scripts/schemas/rule.schema.json +10 -0
  305. package/scripts/skill_linter.py +13 -4
  306. package/scripts/sync_agent_settings.py +26 -3
  307. package/scripts/update_counts.py +16 -4
  308. package/scripts/update_prices.py +124 -0
  309. package/.agent-src/guidelines/php/git.md +0 -96
  310. package/.agent-src/rules/command-suggestion.md +0 -134
  311. /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
  312. /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
  313. /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
  314. /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
  315. /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
  316. /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
  317. /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
  318. /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
  319. /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
  320. /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
  321. /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
  322. /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
  323. /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
  324. /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
  325. /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
  326. /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
  327. /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
  328. /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
  329. /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
  330. /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
  331. /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
  332. /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
  333. /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
  334. /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
  335. /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
  336. /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
  337. /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
  338. /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
  339. /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
  340. /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
  341. /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
  342. /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
  343. /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
  344. /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
  345. /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
  346. /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
  347. /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
  348. /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
  349. /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
  350. /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
  351. /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
  352. /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
  353. /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
  354. /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
@@ -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,11 +74,12 @@ 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
75
- [`memory-access`](../../guidelines/agent-infra/memory-access.md):
82
+ [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md):
76
83
  ```python
77
84
  from scripts.memory_lookup import retrieve
78
85
  priors = retrieve(
@@ -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
@@ -9,23 +9,23 @@ source: package
9
9
  ## When to use
10
10
 
11
11
  * Adding a new function, method, or behavior
12
- * Fixing a bug (bug needs a regression test before the fix)
12
+ * Fixing a bug (the bug needs a regression test before the fix)
13
13
  * Refactoring a unit whose current behavior is unclear
14
14
  * Any task where expected behavior can be expressed as an assertion
15
15
 
16
16
  Do NOT use when:
17
17
 
18
- * Throwaway prototype or spike code explicitly marked as exploration
19
- * Boilerplate generation (migrations, config, scaffolding)
20
- * Pure documentation (`.md`, `AGENTS.md`, README)
18
+ * Writing throwaway prototype or spike code explicitly marked as exploration
19
+ * Generating boilerplate (migrations, config files, scaffolding)
20
+ * Editing pure documentation (`.md`, `AGENTS.md`, README)
21
21
  * Working inside this `agent-config` package on skill/rule markdown
22
22
 
23
23
  ## Goal
24
24
 
25
- * Drive implementation from a verified-failing test, not the agent's
26
- belief that code "should work".
27
- * Catch edge cases **before** production bugs.
28
- * Leave every change with a regression test running in CI.
25
+ * Drive implementation from a verified-failing test, not from the agent's
26
+ belief that the code "should work".
27
+ * Catch edge cases **before** they become production bugs.
28
+ * Leave every change with a regression test that runs in CI.
29
29
 
30
30
  ## The core discipline
31
31
 
@@ -38,7 +38,7 @@ Do NOT use when:
38
38
  ```
39
39
 
40
40
  If step 2 is skipped, the test is not trusted — a test that has never
41
- failed proves nothing.
41
+ failed proves nothing about the code under test.
42
42
 
43
43
  ## Procedure
44
44
 
@@ -46,21 +46,21 @@ failed proves nothing.
46
46
 
47
47
  State in one sentence: *"When X happens, the system should do Y."*
48
48
 
49
- Cannot state in one sentence? Scope too big — split into multiple tests,
50
- one sentence each.
49
+ If you cannot state it in one sentence, the scope is too big — split into
50
+ multiple tests, each covering one sentence.
51
51
 
52
52
  ### 2. Write the failing test first
53
53
 
54
- Smallest test expressing step-1 sentence.
54
+ Write the smallest test that expresses the sentence from step 1.
55
55
 
56
- * One assertion per behavior (multiple assertions OK only when describing
57
- the same single behavior).
56
+ * One assertion per behavior (multiple assertions are OK only when they
57
+ describe the same single behavior).
58
58
  * Real code paths, not mocks — mock only at I/O boundaries (HTTP, DB, time).
59
- * Descriptive name: `it_rejects_empty_email`, not `test_email_1`.
59
+ * Use a descriptive name: `it_rejects_empty_email`, not `test_email_1`.
60
60
 
61
61
  ### 3. Run the test and watch it fail
62
62
 
63
- Execute the single test (targeted, not full suite):
63
+ Execute the single test (targeted, not the full suite):
64
64
 
65
65
  ```bash
66
66
  # PHP/Pest
@@ -72,26 +72,27 @@ npx vitest run --testNamePattern "rejects empty email"
72
72
 
73
73
  Required observations **before proceeding**:
74
74
 
75
- * Test **fails** (not errors).
76
- * Failure message matches expectation (missing behavior, not typo).
77
- * Passes immediately → it does not test what you think. Fix the test,
78
- do not start writing production code.
75
+ * The test **fails** (not errors).
76
+ * The failure message matches what you expected (missing behavior, not typo).
77
+ * If the test passes immediately → it does not test what you think. Fix
78
+ the test, do not start writing production code.
79
79
 
80
80
  ### 4. Write minimum code to pass
81
81
 
82
- **Just enough** production code to make the test green. No extra
82
+ Add **just enough** production code to make the test green. No extra
83
83
  features, no unrelated refactoring, no "while I'm here" cleanups.
84
84
 
85
- Urge to add a parameter, edge case, or helper not covered by current
86
- test stop. Belongs in the next RED step, not this GREEN step.
85
+ If you feel the urge to add a parameter, edge case, or helper not covered
86
+ by the current test stop. That belongs in the next RED step, not this
87
+ GREEN step.
87
88
 
88
89
  ### 5. Run again and watch it pass
89
90
 
90
91
  Re-run the same targeted command. Required:
91
92
 
92
- * New test passes.
93
- * No previously green tests turned red.
94
- * Output clean (no new warnings, deprecations, or noise).
93
+ * The new test passes.
94
+ * No previously green tests have turned red.
95
+ * Test output is clean (no new warnings, deprecations, or noise).
95
96
 
96
97
  ### 6. Refactor (only if green)
97
98
 
@@ -101,8 +102,8 @@ With all tests green, you may:
101
102
  * Extract duplication into helpers
102
103
  * Tighten types
103
104
 
104
- Do **not** add new behavior during refactor — needs its own failing test
105
- first. Re-run tests after refactor to confirm still-green.
105
+ Do **not** add new behavior during refactor — that needs its own failing
106
+ test first. Re-run tests after the refactor to confirm still-green.
106
107
 
107
108
  ### 7. Repeat for the next behavior
108
109
 
@@ -110,25 +111,25 @@ Back to step 1 with the next single-sentence behavior.
110
111
 
111
112
  ## Output format
112
113
 
113
- 1. Failing test (file + test name) with captured failure output
114
- 2. Minimum-code diff that makes it pass
114
+ 1. The failing test (file + test name) with captured failure output
115
+ 2. The minimum-code diff that makes it pass
115
116
  3. Captured green-run output
116
- 4. Refactor diff (optional)
117
+ 4. Any refactor diff (optional)
117
118
 
118
119
  ## Anti-rationalizations table
119
120
 
120
- The urge to skip TDD is strongest when TDD matters most. Name the
121
- rationalization and reject it:
121
+ The urge to skip TDD is strongest on tasks where TDD matters most. Name
122
+ the rationalization and reject it:
122
123
 
123
124
  | Thought | Reality |
124
125
  |---|---|
125
- | "Too simple to need a test" | Simple code still breaks. A test costs less than one debug cycle. |
126
- | "I'll add the test after the code works" | A test written after code passes on first run — never failed. Proves nothing. |
127
- | "I already ran it manually" | Manual runs not repeatable. Next edit breaks it silently. |
128
- | "Deleting code I just wrote is wasteful" | Sunk cost. Cheap path: delete, write test, reimplement minimally. |
129
- | "I'll keep the code as reference while I write the test" | You will adapt it. That is test-after-the-fact with extra steps. Delete it. |
130
- | "I just need to explore the API first" | Spike on a throwaway branch. Then delete and restart with TDD. |
131
- | "The test is too hard to write" | Signals a design problem in the code, not the test. Listen. |
126
+ | "This is too simple to need a test" | Simple code still breaks. A test takes less time than one debug cycle. |
127
+ | "I'll add the test after the code works" | A test written after code passes on the first run — it has never failed. It does not prove the code is correct. |
128
+ | "I already ran it manually" | Manual runs are not repeatable. The next edit breaks it silently. |
129
+ | "Deleting this code I just wrote is wasteful" | Sunk cost. The cheap path is: delete, write the test, reimplement minimally. |
130
+ | "I'll keep the code as reference while I write the test" | You will read it and adapt it. That is test-after-the-fact with extra steps. Delete it. |
131
+ | "I just need to explore the API first" | Spike it on a throwaway branch. Then delete it and restart with TDD. |
132
+ | "The test is too hard to write" | That signals a design problem in the code, not in the test. Listen to it. |
132
133
  | "This bug is urgent, no time for a test" | The test **is** the fastest path to a verified fix. Guessing takes longer. |
133
134
 
134
135
 
@@ -162,7 +163,7 @@ final class EmailValidator
162
163
  }
163
164
  ```
164
165
 
165
- Run filter again → passes. No additional rules (format, MX, length)
166
+ Run the filter again → passes. No additional rules (format, MX, length)
166
167
  until a next failing test drives them.
167
168
 
168
169
  ### JS / Vitest
@@ -184,7 +185,7 @@ it('retries a failing operation up to 3 times', async () => {
184
185
  ```
185
186
 
186
187
  Run: `npx vitest run --testNamePattern "retries a failing"` → fails
187
- (`retry` undefined).
188
+ (`retry` is undefined).
188
189
 
189
190
  ```ts
190
191
  // src/retry.ts — GREEN (minimum)
@@ -197,21 +198,22 @@ export async function retry<T>(op: () => Promise<T>): Promise<T> {
197
198
  }
198
199
  ```
199
200
 
200
- Run again → passes. Configurable attempt count, backoff, jitter all
201
+ Run again → passes. Configurable attempt count, backoff, and jitter all
201
202
  wait for their own failing tests.
202
203
 
203
204
  ## Gotchas
204
205
 
205
206
  * Running the full suite instead of a filtered test hides the RED→GREEN
206
207
  signal in noise. Always target first.
207
- * A test that passes on the very first run is not TDD — written against
208
- existing code.
208
+ * A test that passes on the very first run is not TDD — it was written
209
+ against code that already exists.
209
210
  * `expect()` with three or four assertions on unrelated fields describes
210
211
  multiple behaviors. Split them.
211
- * Snapshot tests invert the discipline — they generate the expected
212
- value from the code. Only use where human-readable output is the
213
- contract (CLI, SQL strings).
214
- * Mocking the thing under test (instead of its I/O) tests the mock.
212
+ * Snapshot tests invert the discipline — they generate the expected value
213
+ from the code. Only use snapshots where human-readable output is the
214
+ contract (CLI output, SQL strings).
215
+ * Mocking the thing under test (instead of its I/O) tests the mock, not
216
+ the code.
215
217
 
216
218
  ## Do NOT
217
219
 
@@ -219,22 +221,22 @@ wait for their own failing tests.
219
221
  and has been observed to fail
220
222
  * Do NOT accept a test that never failed as evidence the code works
221
223
  * Do NOT bundle refactors into the GREEN step
222
- * Do NOT silence a flaky test — diagnose or delete it
223
- * Do NOT skip the targeted RED-run because "I know it fails"
224
+ * Do NOT silence a flaky test — diagnose it, or delete it
225
+ * Do NOT skip the targeted RED-run because "I just wrote it, I know it fails"
224
226
 
225
227
  ## Anti-patterns
226
228
 
227
229
  * `it('works')` — no behavior described
228
230
  * One test covering "and/and/and" — split per behavior
229
- * Test reaching into private state instead of observable behavior
230
- * Test duplicating the production code's algorithm (tautology)
231
+ * Test that reaches into private state instead of testing observable behavior
232
+ * Test that duplicates the production code's algorithm (tautology)
231
233
 
232
234
  ## When to hand over to another skill
233
235
 
234
236
  * Quality tools, PHPStan, ECS, Rector → [`quality-tools`](../quality-tools/SKILL.md)
235
237
  * Full Pest conventions, Laravel testing helpers → [`pest-testing`](../pest-testing/SKILL.md)
236
238
  * Running tests inside Docker → [`tests-execute`](../tests-execute/SKILL.md)
237
- * Investigating why a test fails for non-obvious reasons →
239
+ * Investigating why a test is failing for non-obvious reasons →
238
240
  [`systematic-debugging`](../systematic-debugging/SKILL.md)
239
241
 
240
242
  ## Validation checklist
@@ -243,10 +245,10 @@ Before marking TDD work complete:
243
245
 
244
246
  * [ ] Every new behavior has a test
245
247
  * [ ] Each test was observed to fail first, with a matching failure message
246
- * [ ] Minimum code was written to turn each RED into GREEN
248
+ * [ ] The minimum code was written to turn each RED into GREEN
247
249
  * [ ] All targeted tests pass
248
- * [ ] No adjacent test turned red
249
- * [ ] Output clean (no new warnings or deprecations)
250
+ * [ ] No adjacent test has turned red
251
+ * [ ] Test output is clean (no new warnings or deprecations)
250
252
 
251
253
  See also [`developer-like-execution`](../developer-like-execution/SKILL.md)
252
254
  for the broader think → analyze → verify loop this skill plugs into.
@@ -148,7 +148,6 @@ Replace dynamic `getPdo()` probing with explicit config:
148
148
 
149
149
  ## Related project docs
150
150
 
151
- - `agents/roadmaps/test-performance-refactor.md` — active roadmap for this project
152
151
  - `agents/docs/seeders.md` — seeder conventions (if exists)
153
152
 
154
153
  ## Output format
@@ -18,11 +18,11 @@ Use this skill when:
18
18
 
19
19
  ### 0. Understand current setup
20
20
 
21
- Before changing routing:
21
+ Before changing any routing configuration:
22
22
 
23
- 1. Check existing proxy — `docker ps | grep traefik`
24
- 2. Review docker-compose for existing labels and network config
25
- 3. Check `/etc/hosts` or dnsmasq for existing domain mappings
23
+ 1. **Check existing proxy setup** is Traefik already running? Check `docker ps | grep traefik`.
24
+ 2. **Review docker-compose** — read `docker-compose.yml` for existing labels and network config.
25
+ 3. **Check DNS/hosts** — review `/etc/hosts` or dnsmasq for existing domain mappings.
26
26
 
27
27
  ### Architecture
28
28
 
@@ -178,7 +178,7 @@ If not in the package repo, note that these checks will run in CI after the PR i
178
178
 
179
179
  If the contribution originates from a proposal under `agents/proposals/`
180
180
  (produced by `learning-to-rule-or-skill` via the pipeline in
181
- [`self-improvement-pipeline`](../../guidelines/agent-infra/self-improvement-pipeline.md)),
181
+ [`self-improvement-pipeline`](../../../docs/guidelines/agent-infra/self-improvement-pipeline.md)),
182
182
  run the Stage-4 gate before opening the PR:
183
183
 
184
184
  ```bash
@@ -45,7 +45,7 @@ Verify the request doesn't conflict with:
45
45
  - Data flow (does it bypass existing services or repositories?)
46
46
  - **Product rules and domain invariants** — pull active rules via the
47
47
  shared abstraction (see
48
- [`memory-access`](../../guidelines/agent-infra/memory-access.md)):
48
+ [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md)):
49
49
 
50
50
  ```python
51
51
  from scripts.memory_lookup import retrieve
@@ -60,7 +60,7 @@ Verify the request doesn't conflict with:
60
60
  (e.g., "free plan caps at 3 users"); the feature must either respect
61
61
  it or explicitly propose to retire it. Cite the matching `id:` in
62
62
  the findings. Schema:
63
- [`engineering-memory-data-format`](../../guidelines/agent-infra/engineering-memory-data-format.md).
63
+ [`engineering-memory-data-format`](../../../docs/guidelines/agent-infra/engineering-memory-data-format.md).
64
64
 
65
65
  **If contradiction found** → show the existing pattern, explain why it matters.
66
66