@event4u/agent-config 1.9.1

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 (446) hide show
  1. package/.agent-src/README.md +64 -0
  2. package/.agent-src/commands/agent-handoff.md +64 -0
  3. package/.agent-src/commands/agent-status.md +83 -0
  4. package/.agent-src/commands/agents-audit.md +243 -0
  5. package/.agent-src/commands/agents-cleanup.md +169 -0
  6. package/.agent-src/commands/agents-prepare.md +137 -0
  7. package/.agent-src/commands/analyze-reference-repo.md +191 -0
  8. package/.agent-src/commands/bug-fix.md +181 -0
  9. package/.agent-src/commands/bug-investigate.md +175 -0
  10. package/.agent-src/commands/commit.md +121 -0
  11. package/.agent-src/commands/compress.md +177 -0
  12. package/.agent-src/commands/config-agent-settings.md +126 -0
  13. package/.agent-src/commands/context-create.md +167 -0
  14. package/.agent-src/commands/context-refactor.md +170 -0
  15. package/.agent-src/commands/copilot-agents-init.md +150 -0
  16. package/.agent-src/commands/copilot-agents-optimize.md +251 -0
  17. package/.agent-src/commands/create-pr-description.md +112 -0
  18. package/.agent-src/commands/create-pr.md +76 -0
  19. package/.agent-src/commands/do-and-judge.md +114 -0
  20. package/.agent-src/commands/do-in-steps.md +84 -0
  21. package/.agent-src/commands/e2e-heal.md +98 -0
  22. package/.agent-src/commands/e2e-plan.md +85 -0
  23. package/.agent-src/commands/estimate-ticket.md +80 -0
  24. package/.agent-src/commands/feature-dev.md +111 -0
  25. package/.agent-src/commands/feature-explore.md +180 -0
  26. package/.agent-src/commands/feature-plan.md +288 -0
  27. package/.agent-src/commands/feature-refactor.md +181 -0
  28. package/.agent-src/commands/feature-roadmap.md +184 -0
  29. package/.agent-src/commands/fix-ci.md +48 -0
  30. package/.agent-src/commands/fix-portability.md +97 -0
  31. package/.agent-src/commands/fix-pr-bot-comments.md +146 -0
  32. package/.agent-src/commands/fix-pr-comments.md +58 -0
  33. package/.agent-src/commands/fix-pr-developer-comments.md +152 -0
  34. package/.agent-src/commands/fix-references.md +94 -0
  35. package/.agent-src/commands/fix-seeder.md +146 -0
  36. package/.agent-src/commands/implement-ticket.md +133 -0
  37. package/.agent-src/commands/jira-ticket.md +71 -0
  38. package/.agent-src/commands/judge.md +86 -0
  39. package/.agent-src/commands/memory-add.md +130 -0
  40. package/.agent-src/commands/memory-full.md +97 -0
  41. package/.agent-src/commands/memory-promote.md +144 -0
  42. package/.agent-src/commands/mode.md +121 -0
  43. package/.agent-src/commands/module-create.md +132 -0
  44. package/.agent-src/commands/module-explore.md +157 -0
  45. package/.agent-src/commands/optimize-agents.md +139 -0
  46. package/.agent-src/commands/optimize-augmentignore.md +262 -0
  47. package/.agent-src/commands/optimize-rtk-filters.md +120 -0
  48. package/.agent-src/commands/optimize-skills.md +121 -0
  49. package/.agent-src/commands/override-create.md +97 -0
  50. package/.agent-src/commands/override-manage.md +96 -0
  51. package/.agent-src/commands/package-reset.md +154 -0
  52. package/.agent-src/commands/package-test.md +154 -0
  53. package/.agent-src/commands/prepare-for-review.md +91 -0
  54. package/.agent-src/commands/project-analyze.md +300 -0
  55. package/.agent-src/commands/project-health.md +95 -0
  56. package/.agent-src/commands/propose-memory.md +108 -0
  57. package/.agent-src/commands/quality-fix.md +106 -0
  58. package/.agent-src/commands/refine-ticket.md +81 -0
  59. package/.agent-src/commands/review-changes.md +130 -0
  60. package/.agent-src/commands/review-routing.md +111 -0
  61. package/.agent-src/commands/roadmap-create.md +110 -0
  62. package/.agent-src/commands/roadmap-execute.md +68 -0
  63. package/.agent-src/commands/rule-compliance-audit.md +139 -0
  64. package/.agent-src/commands/tests-create.md +73 -0
  65. package/.agent-src/commands/tests-execute.md +58 -0
  66. package/.agent-src/commands/threat-model.md +115 -0
  67. package/.agent-src/commands/update-form-request-messages.md +189 -0
  68. package/.agent-src/commands/upstream-contribute.md +171 -0
  69. package/.agent-src/contexts/augment-infrastructure.md +181 -0
  70. package/.agent-src/contexts/documentation-hierarchy.md +142 -0
  71. package/.agent-src/contexts/model-recommendations.md +142 -0
  72. package/.agent-src/contexts/override-system.md +187 -0
  73. package/.agent-src/contexts/skills-and-commands.md +154 -0
  74. package/.agent-src/contexts/subagent-configuration.md +62 -0
  75. package/.agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +110 -0
  76. package/.agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  77. package/.agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  78. package/.agent-src/guidelines/agent-infra/engineering-memory-data-format.md +117 -0
  79. package/.agent-src/guidelines/agent-infra/layered-settings.md +158 -0
  80. package/.agent-src/guidelines/agent-infra/memory-access.md +121 -0
  81. package/.agent-src/guidelines/agent-infra/naming.md +69 -0
  82. package/.agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  83. package/.agent-src/guidelines/agent-infra/review-routing-data-format.md +144 -0
  84. package/.agent-src/guidelines/agent-infra/role-contracts.md +211 -0
  85. package/.agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  86. package/.agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  87. package/.agent-src/guidelines/agent-infra/self-improvement-pipeline.md +135 -0
  88. package/.agent-src/guidelines/agent-infra/size-and-scope.md +189 -0
  89. package/.agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  90. package/.agent-src/guidelines/docs/readme-size-and-splitting.md +153 -0
  91. package/.agent-src/guidelines/e2e/playwright.md +363 -0
  92. package/.agent-src/guidelines/php/api-design.md +115 -0
  93. package/.agent-src/guidelines/php/artisan-commands.md +81 -0
  94. package/.agent-src/guidelines/php/blade-ui.md +78 -0
  95. package/.agent-src/guidelines/php/controllers.md +90 -0
  96. package/.agent-src/guidelines/php/database.md +111 -0
  97. package/.agent-src/guidelines/php/eloquent.md +208 -0
  98. package/.agent-src/guidelines/php/flux.md +80 -0
  99. package/.agent-src/guidelines/php/general.md +191 -0
  100. package/.agent-src/guidelines/php/git.md +96 -0
  101. package/.agent-src/guidelines/php/jobs.md +111 -0
  102. package/.agent-src/guidelines/php/livewire.md +71 -0
  103. package/.agent-src/guidelines/php/logging.md +79 -0
  104. package/.agent-src/guidelines/php/naming.md +89 -0
  105. package/.agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  106. package/.agent-src/guidelines/php/patterns/dtos.md +199 -0
  107. package/.agent-src/guidelines/php/patterns/events.md +67 -0
  108. package/.agent-src/guidelines/php/patterns/factory.md +53 -0
  109. package/.agent-src/guidelines/php/patterns/pipelines.md +66 -0
  110. package/.agent-src/guidelines/php/patterns/policies.md +66 -0
  111. package/.agent-src/guidelines/php/patterns/repositories.md +122 -0
  112. package/.agent-src/guidelines/php/patterns/service-layer.md +64 -0
  113. package/.agent-src/guidelines/php/patterns/strategy.md +69 -0
  114. package/.agent-src/guidelines/php/patterns.md +28 -0
  115. package/.agent-src/guidelines/php/performance.md +92 -0
  116. package/.agent-src/guidelines/php/resources.md +100 -0
  117. package/.agent-src/guidelines/php/security.md +110 -0
  118. package/.agent-src/guidelines/php/sql.md +97 -0
  119. package/.agent-src/guidelines/php/validations.md +119 -0
  120. package/.agent-src/guidelines/php/websocket.md +100 -0
  121. package/.agent-src/personas/README.md +104 -0
  122. package/.agent-src/personas/ai-agent.md +77 -0
  123. package/.agent-src/personas/critical-challenger.md +73 -0
  124. package/.agent-src/personas/developer.md +73 -0
  125. package/.agent-src/personas/product-owner.md +78 -0
  126. package/.agent-src/personas/qa.md +67 -0
  127. package/.agent-src/personas/senior-engineer.md +77 -0
  128. package/.agent-src/personas/stakeholder.md +78 -0
  129. package/.agent-src/rules/agent-docs.md +61 -0
  130. package/.agent-src/rules/analysis-skill-routing.md +48 -0
  131. package/.agent-src/rules/architecture.md +62 -0
  132. package/.agent-src/rules/artifact-drafting-protocol.md +73 -0
  133. package/.agent-src/rules/ask-when-uncertain.md +52 -0
  134. package/.agent-src/rules/augment-portability.md +38 -0
  135. package/.agent-src/rules/augment-source-of-truth.md +128 -0
  136. package/.agent-src/rules/capture-learnings.md +89 -0
  137. package/.agent-src/rules/cli-output-handling.md +94 -0
  138. package/.agent-src/rules/commit-conventions.md +64 -0
  139. package/.agent-src/rules/context-hygiene.md +90 -0
  140. package/.agent-src/rules/docker-commands.md +55 -0
  141. package/.agent-src/rules/docs-sync.md +79 -0
  142. package/.agent-src/rules/downstream-changes.md +70 -0
  143. package/.agent-src/rules/e2e-testing.md +53 -0
  144. package/.agent-src/rules/guidelines.md +90 -0
  145. package/.agent-src/rules/improve-before-implement.md +94 -0
  146. package/.agent-src/rules/language-and-tone.md +104 -0
  147. package/.agent-src/rules/laravel-translations.md +48 -0
  148. package/.agent-src/rules/markdown-safe-codeblocks.md +18 -0
  149. package/.agent-src/rules/minimal-safe-diff.md +87 -0
  150. package/.agent-src/rules/missing-tool-handling.md +62 -0
  151. package/.agent-src/rules/model-recommendation.md +70 -0
  152. package/.agent-src/rules/package-ci-checks.md +80 -0
  153. package/.agent-src/rules/php-coding.md +63 -0
  154. package/.agent-src/rules/preservation-guard.md +29 -0
  155. package/.agent-src/rules/review-routing-awareness.md +125 -0
  156. package/.agent-src/rules/reviewer-awareness.md +92 -0
  157. package/.agent-src/rules/roadmap-progress-sync.md +56 -0
  158. package/.agent-src/rules/role-mode-adherence.md +54 -0
  159. package/.agent-src/rules/rule-type-governance.md +46 -0
  160. package/.agent-src/rules/runtime-safety.md +42 -0
  161. package/.agent-src/rules/scope-control.md +40 -0
  162. package/.agent-src/rules/security-sensitive-stop.md +77 -0
  163. package/.agent-src/rules/size-enforcement.md +29 -0
  164. package/.agent-src/rules/skill-improvement-trigger.md +58 -0
  165. package/.agent-src/rules/skill-quality.md +110 -0
  166. package/.agent-src/rules/slash-commands.md +30 -0
  167. package/.agent-src/rules/think-before-action.md +91 -0
  168. package/.agent-src/rules/token-efficiency.md +99 -0
  169. package/.agent-src/rules/tool-safety.md +36 -0
  170. package/.agent-src/rules/upstream-proposal.md +76 -0
  171. package/.agent-src/rules/user-interaction.md +79 -0
  172. package/.agent-src/rules/verify-before-complete.md +120 -0
  173. package/.agent-src/scripts/scan-seeder-violations.php +145 -0
  174. package/.agent-src/scripts/update_roadmap_progress.py +244 -0
  175. package/.agent-src/skills/adversarial-review/SKILL.md +149 -0
  176. package/.agent-src/skills/agent-docs-writing/SKILL.md +234 -0
  177. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +197 -0
  178. package/.agent-src/skills/analysis-skill-router/SKILL.md +134 -0
  179. package/.agent-src/skills/api-design/SKILL.md +104 -0
  180. package/.agent-src/skills/api-endpoint/SKILL.md +185 -0
  181. package/.agent-src/skills/api-testing/SKILL.md +206 -0
  182. package/.agent-src/skills/artisan-commands/SKILL.md +78 -0
  183. package/.agent-src/skills/authz-review/SKILL.md +171 -0
  184. package/.agent-src/skills/aws-infrastructure/SKILL.md +152 -0
  185. package/.agent-src/skills/blade-ui/SKILL.md +75 -0
  186. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +185 -0
  187. package/.agent-src/skills/bug-analyzer/SKILL.md +256 -0
  188. package/.agent-src/skills/check-refs/SKILL.md +72 -0
  189. package/.agent-src/skills/code-refactoring/SKILL.md +200 -0
  190. package/.agent-src/skills/code-review/SKILL.md +214 -0
  191. package/.agent-src/skills/command-routing/SKILL.md +96 -0
  192. package/.agent-src/skills/command-writing/SKILL.md +143 -0
  193. package/.agent-src/skills/composer-packages/SKILL.md +172 -0
  194. package/.agent-src/skills/context-authoring/SKILL.md +157 -0
  195. package/.agent-src/skills/context-document/SKILL.md +153 -0
  196. package/.agent-src/skills/conventional-commits-writing/SKILL.md +70 -0
  197. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +220 -0
  198. package/.agent-src/skills/copilot-config/SKILL.md +203 -0
  199. package/.agent-src/skills/dashboard-design/SKILL.md +116 -0
  200. package/.agent-src/skills/data-flow-mapper/SKILL.md +160 -0
  201. package/.agent-src/skills/database/SKILL.md +91 -0
  202. package/.agent-src/skills/dependency-upgrade/SKILL.md +204 -0
  203. package/.agent-src/skills/description-assist/SKILL.md +169 -0
  204. package/.agent-src/skills/design-review/SKILL.md +228 -0
  205. package/.agent-src/skills/devcontainer/SKILL.md +121 -0
  206. package/.agent-src/skills/developer-like-execution/SKILL.md +276 -0
  207. package/.agent-src/skills/docker/SKILL.md +245 -0
  208. package/.agent-src/skills/dto-creator/SKILL.md +117 -0
  209. package/.agent-src/skills/eloquent/SKILL.md +92 -0
  210. package/.agent-src/skills/eloquent/evals/last-run.json +99 -0
  211. package/.agent-src/skills/eloquent/evals/triggers.json +16 -0
  212. package/.agent-src/skills/estimate-ticket/SKILL.md +186 -0
  213. package/.agent-src/skills/estimate-ticket/evals/output-schema.yml +20 -0
  214. package/.agent-src/skills/estimate-ticket/evals/triggers.json +18 -0
  215. package/.agent-src/skills/fe-design/SKILL.md +223 -0
  216. package/.agent-src/skills/feature-planning/SKILL.md +226 -0
  217. package/.agent-src/skills/file-editor/SKILL.md +129 -0
  218. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +200 -0
  219. package/.agent-src/skills/flux/SKILL.md +64 -0
  220. package/.agent-src/skills/git-workflow/SKILL.md +102 -0
  221. package/.agent-src/skills/github-ci/SKILL.md +122 -0
  222. package/.agent-src/skills/grafana/SKILL.md +168 -0
  223. package/.agent-src/skills/guideline-writing/SKILL.md +147 -0
  224. package/.agent-src/skills/jira-integration/SKILL.md +182 -0
  225. package/.agent-src/skills/jobs-events/SKILL.md +87 -0
  226. package/.agent-src/skills/judge-bug-hunter/SKILL.md +157 -0
  227. package/.agent-src/skills/judge-code-quality/SKILL.md +158 -0
  228. package/.agent-src/skills/judge-security-auditor/SKILL.md +167 -0
  229. package/.agent-src/skills/judge-test-coverage/SKILL.md +154 -0
  230. package/.agent-src/skills/laravel/SKILL.md +195 -0
  231. package/.agent-src/skills/laravel-horizon/SKILL.md +169 -0
  232. package/.agent-src/skills/laravel-mail/SKILL.md +193 -0
  233. package/.agent-src/skills/laravel-middleware/SKILL.md +185 -0
  234. package/.agent-src/skills/laravel-notifications/SKILL.md +168 -0
  235. package/.agent-src/skills/laravel-pennant/SKILL.md +188 -0
  236. package/.agent-src/skills/laravel-pulse/SKILL.md +160 -0
  237. package/.agent-src/skills/laravel-reverb/SKILL.md +205 -0
  238. package/.agent-src/skills/laravel-scheduling/SKILL.md +167 -0
  239. package/.agent-src/skills/laravel-validation/SKILL.md +71 -0
  240. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +249 -0
  241. package/.agent-src/skills/lint-skills/SKILL.md +72 -0
  242. package/.agent-src/skills/livewire/SKILL.md +79 -0
  243. package/.agent-src/skills/logging-monitoring/SKILL.md +100 -0
  244. package/.agent-src/skills/mcp/SKILL.md +193 -0
  245. package/.agent-src/skills/merge-conflicts/SKILL.md +158 -0
  246. package/.agent-src/skills/migration-creator/SKILL.md +160 -0
  247. package/.agent-src/skills/module-management/SKILL.md +154 -0
  248. package/.agent-src/skills/multi-tenancy/SKILL.md +129 -0
  249. package/.agent-src/skills/openapi/SKILL.md +154 -0
  250. package/.agent-src/skills/override-management/SKILL.md +186 -0
  251. package/.agent-src/skills/performance/SKILL.md +69 -0
  252. package/.agent-src/skills/performance-analysis/SKILL.md +118 -0
  253. package/.agent-src/skills/pest-testing/SKILL.md +321 -0
  254. package/.agent-src/skills/php-coder/SKILL.md +78 -0
  255. package/.agent-src/skills/php-coder/evals/triggers.json +16 -0
  256. package/.agent-src/skills/php-debugging/SKILL.md +184 -0
  257. package/.agent-src/skills/php-service/SKILL.md +96 -0
  258. package/.agent-src/skills/playwright-testing/SKILL.md +244 -0
  259. package/.agent-src/skills/project-analysis-core/SKILL.md +138 -0
  260. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +130 -0
  261. package/.agent-src/skills/project-analysis-laravel/SKILL.md +119 -0
  262. package/.agent-src/skills/project-analysis-nextjs/SKILL.md +123 -0
  263. package/.agent-src/skills/project-analysis-node-express/SKILL.md +111 -0
  264. package/.agent-src/skills/project-analysis-react/SKILL.md +119 -0
  265. package/.agent-src/skills/project-analysis-symfony/SKILL.md +111 -0
  266. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +108 -0
  267. package/.agent-src/skills/project-analyzer/SKILL.md +341 -0
  268. package/.agent-src/skills/project-docs/SKILL.md +137 -0
  269. package/.agent-src/skills/quality-tools/SKILL.md +411 -0
  270. package/.agent-src/skills/readme-reviewer/SKILL.md +187 -0
  271. package/.agent-src/skills/readme-writing/SKILL.md +142 -0
  272. package/.agent-src/skills/readme-writing-package/SKILL.md +185 -0
  273. package/.agent-src/skills/receiving-code-review/SKILL.md +190 -0
  274. package/.agent-src/skills/refine-ticket/SKILL.md +310 -0
  275. package/.agent-src/skills/refine-ticket/detection-map.yml +124 -0
  276. package/.agent-src/skills/refine-ticket/evals/output-schema.yml +16 -0
  277. package/.agent-src/skills/refine-ticket/evals/triggers.json +16 -0
  278. package/.agent-src/skills/requesting-code-review/SKILL.md +199 -0
  279. package/.agent-src/skills/review-routing/SKILL.md +195 -0
  280. package/.agent-src/skills/roadmap-management/SKILL.md +303 -0
  281. package/.agent-src/skills/rtk-output-filtering/SKILL.md +184 -0
  282. package/.agent-src/skills/rule-writing/SKILL.md +148 -0
  283. package/.agent-src/skills/security/SKILL.md +79 -0
  284. package/.agent-src/skills/security-audit/SKILL.md +123 -0
  285. package/.agent-src/skills/sentry-integration/SKILL.md +170 -0
  286. package/.agent-src/skills/sequential-thinking/SKILL.md +158 -0
  287. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +155 -0
  288. package/.agent-src/skills/skill-management/SKILL.md +121 -0
  289. package/.agent-src/skills/skill-reviewer/SKILL.md +218 -0
  290. package/.agent-src/skills/skill-writing/SKILL.md +291 -0
  291. package/.agent-src/skills/skill-writing/evals/triggers.json +16 -0
  292. package/.agent-src/skills/sql-writing/SKILL.md +74 -0
  293. package/.agent-src/skills/subagent-orchestration/SKILL.md +190 -0
  294. package/.agent-src/skills/systematic-debugging/SKILL.md +244 -0
  295. package/.agent-src/skills/technical-specification/SKILL.md +185 -0
  296. package/.agent-src/skills/terraform/SKILL.md +137 -0
  297. package/.agent-src/skills/terragrunt/SKILL.md +217 -0
  298. package/.agent-src/skills/test-driven-development/SKILL.md +252 -0
  299. package/.agent-src/skills/test-performance/SKILL.md +172 -0
  300. package/.agent-src/skills/threat-modeling/SKILL.md +189 -0
  301. package/.agent-src/skills/traefik/SKILL.md +319 -0
  302. package/.agent-src/skills/universal-project-analysis/SKILL.md +179 -0
  303. package/.agent-src/skills/upstream-contribute/SKILL.md +255 -0
  304. package/.agent-src/skills/using-git-worktrees/SKILL.md +148 -0
  305. package/.agent-src/skills/validate-feature-fit/SKILL.md +113 -0
  306. package/.agent-src/skills/verify-before-complete/SKILL.md +188 -0
  307. package/.agent-src/skills/websocket/SKILL.md +75 -0
  308. package/.agent-src/templates/AGENTS.md +146 -0
  309. package/.agent-src/templates/agent-settings.md +256 -0
  310. package/.agent-src/templates/agents/.gitattributes.fragment +16 -0
  311. package/.agent-src/templates/agents/agent-project-settings.example.yml +138 -0
  312. package/.agent-src/templates/agents/memory/architecture-decisions.example.yml +95 -0
  313. package/.agent-src/templates/agents/memory/domain-invariants.example.yml +80 -0
  314. package/.agent-src/templates/agents/memory/historical-patterns.example.yml +82 -0
  315. package/.agent-src/templates/agents/memory/incident-learnings.example.yml +113 -0
  316. package/.agent-src/templates/agents/memory/ownership.example.yml +75 -0
  317. package/.agent-src/templates/agents/memory/product-rules.example.yml +87 -0
  318. package/.agent-src/templates/agents/proposal.example.md +143 -0
  319. package/.agent-src/templates/command.md +84 -0
  320. package/.agent-src/templates/contexts/auth-model.md +59 -0
  321. package/.agent-src/templates/contexts/data-sensitivity.md +60 -0
  322. package/.agent-src/templates/contexts/deployment-order.md +72 -0
  323. package/.agent-src/templates/contexts/observability.md +64 -0
  324. package/.agent-src/templates/contexts/tenant-boundaries.md +68 -0
  325. package/.agent-src/templates/contexts.md +116 -0
  326. package/.agent-src/templates/copilot-instructions.md +115 -0
  327. package/.agent-src/templates/features.md +125 -0
  328. package/.agent-src/templates/github-workflows/memory-hygiene.yml +133 -0
  329. package/.agent-src/templates/github-workflows/pr-risk-review.yml +123 -0
  330. package/.agent-src/templates/github-workflows/proposal-drift.yml +118 -0
  331. package/.agent-src/templates/overrides/command.md +24 -0
  332. package/.agent-src/templates/overrides/guideline.md +21 -0
  333. package/.agent-src/templates/overrides/rule.md +19 -0
  334. package/.agent-src/templates/overrides/skill.md +24 -0
  335. package/.agent-src/templates/overrides/template.md +21 -0
  336. package/.agent-src/templates/persona.md +99 -0
  337. package/.agent-src/templates/roadmaps.md +109 -0
  338. package/.agent-src/templates/scripts/README.md +195 -0
  339. package/.agent-src/templates/scripts/check_memory.py +283 -0
  340. package/.agent-src/templates/scripts/check_memory_proposal.py +180 -0
  341. package/.agent-src/templates/scripts/historical-bug-patterns.example.yml +84 -0
  342. package/.agent-src/templates/scripts/implement_ticket/__init__.py +57 -0
  343. package/.agent-src/templates/scripts/implement_ticket/__main__.py +9 -0
  344. package/.agent-src/templates/scripts/implement_ticket/cli.py +171 -0
  345. package/.agent-src/templates/scripts/implement_ticket/delivery_state.py +130 -0
  346. package/.agent-src/templates/scripts/implement_ticket/dispatcher.py +134 -0
  347. package/.agent-src/templates/scripts/implement_ticket/persona_policy.py +85 -0
  348. package/.agent-src/templates/scripts/implement_ticket/steps/__init__.py +49 -0
  349. package/.agent-src/templates/scripts/implement_ticket/steps/analyze.py +98 -0
  350. package/.agent-src/templates/scripts/implement_ticket/steps/implement.py +145 -0
  351. package/.agent-src/templates/scripts/implement_ticket/steps/memory.py +136 -0
  352. package/.agent-src/templates/scripts/implement_ticket/steps/plan.py +175 -0
  353. package/.agent-src/templates/scripts/implement_ticket/steps/refine.py +140 -0
  354. package/.agent-src/templates/scripts/implement_ticket/steps/report.py +195 -0
  355. package/.agent-src/templates/scripts/implement_ticket/steps/test.py +180 -0
  356. package/.agent-src/templates/scripts/implement_ticket/steps/verify.py +170 -0
  357. package/.agent-src/templates/scripts/memory_hash.py +75 -0
  358. package/.agent-src/templates/scripts/memory_lookup.py +216 -0
  359. package/.agent-src/templates/scripts/memory_report.py +184 -0
  360. package/.agent-src/templates/scripts/memory_signal.py +167 -0
  361. package/.agent-src/templates/scripts/memory_status.py +156 -0
  362. package/.agent-src/templates/scripts/ownership-map.example.yml +87 -0
  363. package/.agent-src/templates/scripts/pr-risk-config.example.yml +76 -0
  364. package/.agent-src/templates/scripts/pr_review_routing.py +340 -0
  365. package/.agent-src/templates/scripts/pr_risk_review.py +211 -0
  366. package/.agent-src/templates/skill.md +136 -0
  367. package/.augment-plugin/marketplace.json +32 -0
  368. package/.augment-plugin/plugin.json +21 -0
  369. package/.claude-plugin/marketplace.json +119 -0
  370. package/AGENTS.md +121 -0
  371. package/CHANGELOG.md +279 -0
  372. package/CONTRIBUTING.md +176 -0
  373. package/LICENSE +21 -0
  374. package/README.md +357 -0
  375. package/bin/install.php +38 -0
  376. package/composer.json +29 -0
  377. package/config/agent-settings.template.yml +96 -0
  378. package/config/profiles/balanced.ini +10 -0
  379. package/config/profiles/full.ini +10 -0
  380. package/config/profiles/minimal.ini +10 -0
  381. package/docs/architecture.md +144 -0
  382. package/docs/customization.md +88 -0
  383. package/docs/development.md +171 -0
  384. package/docs/getting-started.md +130 -0
  385. package/docs/github-topics.md +84 -0
  386. package/docs/installation.md +376 -0
  387. package/docs/mcp.md +133 -0
  388. package/docs/quality.md +98 -0
  389. package/docs/skills-catalog.md +136 -0
  390. package/docs/troubleshooting.md +167 -0
  391. package/llms.txt +130 -0
  392. package/package.json +31 -0
  393. package/scripts/audit_skill_descriptions.py +168 -0
  394. package/scripts/check_compression.py +221 -0
  395. package/scripts/check_memory.py +341 -0
  396. package/scripts/check_memory_proposal.py +180 -0
  397. package/scripts/check_portability.py +320 -0
  398. package/scripts/check_proposal.py +269 -0
  399. package/scripts/check_references.py +400 -0
  400. package/scripts/ci_summary.py +131 -0
  401. package/scripts/compress.py +671 -0
  402. package/scripts/compress.sh +18 -0
  403. package/scripts/first-run.sh +109 -0
  404. package/scripts/generate_catalog.py +116 -0
  405. package/scripts/install +151 -0
  406. package/scripts/install-hooks.sh +29 -0
  407. package/scripts/install.py +487 -0
  408. package/scripts/install.sh +637 -0
  409. package/scripts/install_anthropic_key.sh +101 -0
  410. package/scripts/inventory_frontmatter.py +164 -0
  411. package/scripts/lint_marketplace.py +142 -0
  412. package/scripts/lint_regression.py +232 -0
  413. package/scripts/mcp_render.py +159 -0
  414. package/scripts/measure_patterns.py +376 -0
  415. package/scripts/memory_hash.py +75 -0
  416. package/scripts/memory_lookup.py +441 -0
  417. package/scripts/memory_report.py +336 -0
  418. package/scripts/memory_signal.py +210 -0
  419. package/scripts/memory_status.py +195 -0
  420. package/scripts/postinstall.sh +60 -0
  421. package/scripts/readme_linter.py +580 -0
  422. package/scripts/refine_ticket_detect.py +623 -0
  423. package/scripts/requirements-evals.txt +7 -0
  424. package/scripts/runtime_dispatcher.py +265 -0
  425. package/scripts/runtime_handler.py +148 -0
  426. package/scripts/runtime_registry.py +166 -0
  427. package/scripts/schemas/command.schema.json +32 -0
  428. package/scripts/schemas/persona.schema.json +42 -0
  429. package/scripts/schemas/rule.schema.json +28 -0
  430. package/scripts/schemas/skill.schema.json +73 -0
  431. package/scripts/setup.sh +230 -0
  432. package/scripts/setup_eval_venv.sh +58 -0
  433. package/scripts/skill_linter.py +2175 -0
  434. package/scripts/skill_trigger_eval.py +651 -0
  435. package/scripts/tool_registry.py +146 -0
  436. package/scripts/tools/__init__.py +1 -0
  437. package/scripts/tools/adapter_errors.py +63 -0
  438. package/scripts/tools/base_adapter.py +91 -0
  439. package/scripts/tools/github_adapter.py +128 -0
  440. package/scripts/tools/jira_adapter.py +115 -0
  441. package/scripts/update_counts.py +147 -0
  442. package/scripts/validate_frontmatter.py +424 -0
  443. package/templates/consumer-settings/README.md +46 -0
  444. package/templates/consumer-settings/augment-settings.json +12 -0
  445. package/templates/consumer-settings/claude-settings.json +9 -0
  446. package/templates/consumer-settings/copilot-settings.json +14 -0
@@ -0,0 +1,145 @@
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ /**
6
+ * Scans all PhpDataSeeder data files for foreign key references that use raw seeder constants
7
+ * instead of getReference(). Raw constants don't trigger lazy initialization of the referenced
8
+ * seeder, causing "items not available" errors when seeders run in unpredictable order.
9
+ *
10
+ * Usage (inside Docker container):
11
+ * php .augment/scripts/scan-seeder-violations.php
12
+ *
13
+ * Used by: /fix-seeder command
14
+ */
15
+
16
+ $seedersDir = __DIR__ . '/../../database/seeders';
17
+ $dataDir = __DIR__ . '/../../database/seeder-data/data';
18
+
19
+ if (!is_dir($seedersDir) || !is_dir($dataDir)) {
20
+ echo "Error: seeders or data directory not found. Run from project root.\n";
21
+ exit(1);
22
+ }
23
+
24
+ // Step 1: Build map of seeder short class name -> data file relative path
25
+ $seederMap = [];
26
+ $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($seedersDir));
27
+
28
+ foreach ($iterator as $file) {
29
+ if ($file->getExtension() !== 'php') {
30
+ continue;
31
+ }
32
+
33
+ $content = file_get_contents($file->getRealPath());
34
+
35
+ if (preg_match('/class\s+(\w+)\s+extends\s+(?:Php|Json)DataSeeder/', $content, $classMatch)
36
+ && preg_match('/\$dataFile\s*=\s*[\'"]([^\'"]+)[\'"]/', $content, $dataMatch)) {
37
+ $seederMap[$classMatch[1]] = $dataMatch[1];
38
+ }
39
+ }
40
+
41
+ // Known exceptions: circular dependencies where getReference() would cause infinite loops.
42
+ // Format: 'OwnerSeeder' => ['ReferencedSeeder', ...]
43
+ // Currently empty — all circular dependencies have been resolved via two-phase seeding
44
+ // (e.g., UserWageTypeRuleSeeder uses run() to apply project mappings after initReferences).
45
+ $exceptions = [];
46
+
47
+ // Step 2: For each data file, find violations
48
+ $violations = [];
49
+
50
+ foreach ($seederMap as $ownerSeeder => $dataFile) {
51
+ $filePath = $dataDir . '/' . str_replace('\\', '/', $dataFile);
52
+
53
+ if (!file_exists($filePath)) {
54
+ continue;
55
+ }
56
+
57
+ $lines = file($filePath);
58
+
59
+ if (!$lines) {
60
+ continue;
61
+ }
62
+
63
+ $fileExtension = pathinfo($filePath, PATHINFO_EXTENSION);
64
+
65
+ foreach ($lines as $lineNum => $line) {
66
+ if (!preg_match_all('/(\w+Seeder)::([A-Z][A-Z0-9_]+)/', $line, $matches, PREG_SET_ORDER)) {
67
+ continue;
68
+ }
69
+
70
+ foreach ($matches as $match) {
71
+ $referencedSeeder = $match[1];
72
+ $constant = $match[2];
73
+
74
+ // Skip own seeder constants (primary keys are OK)
75
+ if ($referencedSeeder === $ownerSeeder) {
76
+ continue;
77
+ }
78
+
79
+ // Skip known exceptions (circular dependencies)
80
+ if (isset($exceptions[$ownerSeeder]) && in_array($referencedSeeder, $exceptions[$ownerSeeder], true)) {
81
+ continue;
82
+ }
83
+
84
+ // Skip if the line already contains getReference/getReferences for this seeder
85
+ if (preg_match('/' . preg_quote($referencedSeeder, '/') . '::getReference/', $line)) {
86
+ continue;
87
+ }
88
+
89
+ // Check multiline: previous line may have getReference(
90
+ if ($lineNum > 0) {
91
+ $prevLine = $lines[$lineNum - 1];
92
+ if (preg_match('/' . preg_quote($referencedSeeder, '/') . '::getReference\s*\(\s*$/', trim($prevLine))) {
93
+ continue;
94
+ }
95
+ }
96
+
97
+ $violations[] = [
98
+ 'file' => str_replace($dataDir . '/', '', $filePath),
99
+ 'line' => $lineNum + 1,
100
+ 'owner' => $ownerSeeder,
101
+ 'referenced' => $referencedSeeder,
102
+ 'constant' => $constant,
103
+ 'full' => $referencedSeeder . '::' . $constant,
104
+ 'lineContent' => trim($line),
105
+ 'extension' => $fileExtension,
106
+ ];
107
+ }
108
+ }
109
+ }
110
+
111
+ // Step 3: Output results
112
+ if (empty($violations)) {
113
+ echo "✅ No violations found.\n";
114
+ exit(0);
115
+ }
116
+
117
+ $phpCount = count(array_filter($violations, static fn(array $v): bool => $v['extension'] === 'php'));
118
+ $jsonCount = count(array_filter($violations, static fn(array $v): bool => $v['extension'] === 'json'));
119
+
120
+ echo "Found " . count($violations) . " violation(s)";
121
+
122
+ if ($jsonCount > 0) {
123
+ echo " ($phpCount in PHP files, $jsonCount in JSON files — JSON cannot be auto-fixed)";
124
+ }
125
+
126
+ echo ":\n\n";
127
+
128
+ printf("%-4s %-65s %-6s %-55s %s\n", '#', 'Data File', 'Line', 'Violation', 'Owner');
129
+ echo str_repeat('-', 185) . "\n";
130
+
131
+ foreach ($violations as $i => $v) {
132
+ $prefix = $v['extension'] === 'json' ? '[JSON] ' : '';
133
+ printf(
134
+ "%-4d %-65s %-6d %-55s %s\n",
135
+ $i + 1,
136
+ $prefix . $v['file'],
137
+ $v['line'],
138
+ $v['full'],
139
+ $v['owner']
140
+ );
141
+ }
142
+
143
+ echo "\nPHP violations (auto-fixable): $phpCount\n";
144
+ echo "JSON violations (manual fix needed): $jsonCount\n";
145
+
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env python3
2
+ """Generate `agents/roadmaps-progress.md` — aggregated progress across open roadmaps.
3
+
4
+ Scans every roadmap under `agents/roadmaps/` (excluding `archive/`, `skipped/`,
5
+ `template.md`, `README.md`, `open-questions*.md`), counts checkbox states per
6
+ phase, and writes a dashboard at `agents/roadmaps-progress.md` (outside the
7
+ `roadmaps/` folder to keep it clean) with:
8
+
9
+ - Overall progress (open-roadmap count, steps done, %)
10
+ - A summary table of every open roadmap
11
+ - Per-roadmap phase breakdown
12
+
13
+ Checkbox states:
14
+ [x] done [ ] open [~] deferred [-] cancelled
15
+
16
+ Percentage = done / (done + open). Deferred and cancelled do not count towards
17
+ "open" (they are explicit decisions).
18
+
19
+ Invocation (from project root):
20
+ python3 .augment/scripts/update_roadmap_progress.py # rewrite
21
+ python3 .augment/scripts/update_roadmap_progress.py --check # CI: exit 1 if stale
22
+ """
23
+
24
+ from __future__ import annotations
25
+
26
+ import argparse
27
+ import re
28
+ import sys
29
+ from dataclasses import dataclass, field
30
+ from pathlib import Path
31
+
32
+ CHECKBOX_RE = re.compile(r"^\s*[-*]\s+\[([ xX~\-])\]\s", re.MULTILINE)
33
+ # H2 or H3 heading starting with "Phase <number>"; separator (colon, em-dash,
34
+ # hyphen, or whitespace) and name are optional.
35
+ PHASE_RE = re.compile(r"^(#{2,3})\s+Phase\s+(\d+)(?:[\s:\u2014\-]+(.*?))?\s*$", re.MULTILINE)
36
+ TITLE_RE = re.compile(r"^#\s+(?:Roadmap:\s*)?(.+?)\s*$", re.MULTILINE)
37
+ EXCLUDE_NAMES = {"template.md", "README.md", "progress.md", "roadmaps-progress.md"}
38
+ EXCLUDE_PREFIXES = ("open-questions",)
39
+ EXCLUDE_DIRS = {"archive", "skipped"}
40
+
41
+
42
+ @dataclass
43
+ class PhaseStats:
44
+ number: int
45
+ name: str
46
+ done: int = 0
47
+ open_: int = 0
48
+ deferred: int = 0
49
+ cancelled: int = 0
50
+
51
+ @property
52
+ def total_active(self) -> int: # denominator for %
53
+ return self.done + self.open_
54
+
55
+ @property
56
+ def percent(self) -> int:
57
+ return round(self.done * 100 / self.total_active) if self.total_active else 0
58
+
59
+ @property
60
+ def state(self) -> str:
61
+ if self.total_active == 0 and (self.deferred or self.cancelled):
62
+ return "⏭️ skipped"
63
+ if self.total_active == 0:
64
+ return "⬜ empty"
65
+ if self.done == 0:
66
+ return "⬜ not started"
67
+ if self.open_ == 0:
68
+ return "✅ done"
69
+ return "🟡 in progress"
70
+
71
+
72
+ @dataclass
73
+ class RoadmapStats:
74
+ path: Path
75
+ rel: str
76
+ title: str
77
+ phases: list[PhaseStats] = field(default_factory=list)
78
+
79
+ @property
80
+ def done(self) -> int:
81
+ return sum(p.done for p in self.phases)
82
+
83
+ @property
84
+ def open_(self) -> int:
85
+ return sum(p.open_ for p in self.phases)
86
+
87
+ @property
88
+ def deferred(self) -> int:
89
+ return sum(p.deferred for p in self.phases)
90
+
91
+ @property
92
+ def cancelled(self) -> int:
93
+ return sum(p.cancelled for p in self.phases)
94
+
95
+ @property
96
+ def total_active(self) -> int:
97
+ return self.done + self.open_
98
+
99
+ @property
100
+ def percent(self) -> int:
101
+ return round(self.done * 100 / self.total_active) if self.total_active else 0
102
+
103
+
104
+ def is_roadmap_candidate(path: Path) -> bool:
105
+ if path.name in EXCLUDE_NAMES:
106
+ return False
107
+ if any(path.name.startswith(p) for p in EXCLUDE_PREFIXES):
108
+ return False
109
+ if any(part in EXCLUDE_DIRS for part in path.parts):
110
+ return False
111
+ return True
112
+
113
+
114
+ def count_checkboxes(text: str) -> tuple[int, int, int, int]:
115
+ done = open_ = deferred = cancelled = 0
116
+ for m in CHECKBOX_RE.finditer(text):
117
+ c = m.group(1).lower()
118
+ if c == "x":
119
+ done += 1
120
+ elif c == " ":
121
+ open_ += 1
122
+ elif c == "~":
123
+ deferred += 1
124
+ elif c == "-":
125
+ cancelled += 1
126
+ return done, open_, deferred, cancelled
127
+
128
+
129
+ def parse_roadmap(path: Path, roadmap_root: Path) -> RoadmapStats | None:
130
+ text = path.read_text(encoding="utf-8")
131
+ phase_matches = list(PHASE_RE.finditer(text))
132
+ if not phase_matches:
133
+ return None # not a roadmap — no ## Phase headings
134
+ title_match = TITLE_RE.search(text)
135
+ title = title_match.group(1).strip() if title_match else path.stem
136
+ rel = str(path.relative_to(roadmap_root))
137
+ stats = RoadmapStats(path=path, rel=rel, title=title)
138
+ for i, pm in enumerate(phase_matches):
139
+ start = pm.end()
140
+ end = phase_matches[i + 1].start() if i + 1 < len(phase_matches) else len(text)
141
+ d, o, df, c = count_checkboxes(text[start:end])
142
+ number = int(pm.group(2))
143
+ name = (pm.group(3) or "").strip() or f"Phase {number}"
144
+ stats.phases.append(PhaseStats(number, name, d, o, df, c))
145
+ return stats
146
+
147
+
148
+ def bar(pct: int, width: int = 10) -> str:
149
+ filled = round(pct * width / 100)
150
+ return "█" * filled + "░" * (width - filled)
151
+
152
+
153
+ def collect(roadmap_root: Path) -> list[RoadmapStats]:
154
+ results: list[RoadmapStats] = []
155
+ for path in sorted(roadmap_root.rglob("*.md")):
156
+ if not path.is_file() or not is_roadmap_candidate(path):
157
+ continue
158
+ stats = parse_roadmap(path, roadmap_root)
159
+ if stats:
160
+ results.append(stats)
161
+ return results
162
+
163
+
164
+ def render(roadmaps: list[RoadmapStats]) -> str:
165
+ total_done = sum(r.done for r in roadmaps)
166
+ total_active = sum(r.total_active for r in roadmaps)
167
+ overall_pct = round(total_done * 100 / total_active) if total_active else 0
168
+ lines: list[str] = []
169
+ lines.append("# Roadmap Progress\n")
170
+ lines.append(
171
+ "> Auto-generated by `.augment/scripts/update_roadmap_progress.py`. "
172
+ "Do not edit — regenerated on every roadmap-create, -execute, or "
173
+ "completion change (last-modified timestamp lives in git history).\n>\n"
174
+ f"> {len(roadmaps)} open roadmap"
175
+ f"{'s' if len(roadmaps) != 1 else ''} · "
176
+ "[roadmaps/](roadmaps/) · [archive/](roadmaps/archive/) · "
177
+ "[skipped/](roadmaps/skipped/)\n"
178
+ )
179
+ lines.append("## Overall\n")
180
+ lines.append(f"**{total_done} / {total_active} steps done · {overall_pct}%**\n")
181
+ lines.append("```text\n" + bar(overall_pct, 40) + f" {overall_pct}%\n```\n")
182
+ if not roadmaps:
183
+ lines.append("_No open roadmaps._\n")
184
+ return "\n".join(lines) + "\n"
185
+ lines.append("## Open roadmaps\n")
186
+ lines.append("| # | Roadmap | Phases | Steps | Done | Open | Deferred | Cancelled | Progress |")
187
+ lines.append("|---|---|---:|---:|---:|---:|---:|---:|---|")
188
+ for i, r in enumerate(roadmaps, 1):
189
+ lines.append(
190
+ f"| {i} | [{r.rel}](roadmaps/{r.rel}) | {len(r.phases)} | {r.total_active} | "
191
+ f"{r.done} | {r.open_} | {r.deferred} | {r.cancelled} | "
192
+ f"{bar(r.percent)} {r.percent}% |"
193
+ )
194
+ lines.append("")
195
+ lines.append("---\n")
196
+ lines.append("## Per-roadmap phase breakdown\n")
197
+ for r in roadmaps:
198
+ lines.append(f"### [{r.rel}](roadmaps/{r.rel})\n")
199
+ lines.append(f"**{r.title}** — {r.done} / {r.total_active} done ({r.percent}%)\n")
200
+ lines.append("| # | Phase | State | Done | Open | Deferred | Cancelled | % |")
201
+ lines.append("|---|---|---|---:|---:|---:|---:|---:|")
202
+ for p in r.phases:
203
+ lines.append(
204
+ f"| {p.number} | {p.name} | {p.state} | {p.done} | {p.open_} | "
205
+ f"{p.deferred} | {p.cancelled} | {p.percent}% |"
206
+ )
207
+ lines.append("")
208
+ return "\n".join(lines) + "\n"
209
+
210
+
211
+ def main() -> int:
212
+ parser = argparse.ArgumentParser(description=__doc__)
213
+ parser.add_argument("--check", action="store_true", help="exit 1 if progress.md is stale")
214
+ parser.add_argument("--repo-root", type=Path, default=Path.cwd(),
215
+ help="project root (default: cwd)")
216
+ args = parser.parse_args()
217
+ roadmap_root = args.repo_root / "agents" / "roadmaps"
218
+ target = args.repo_root / "agents" / "roadmaps-progress.md"
219
+ if not roadmap_root.is_dir():
220
+ # No roadmaps directory yet — skip silently so the CI check is safe in
221
+ # consumer projects that haven't adopted roadmaps.
222
+ if args.check:
223
+ return 0
224
+ print(f"ℹ️ No roadmaps directory at {roadmap_root} — nothing to do.")
225
+ return 0
226
+ roadmaps = collect(roadmap_root)
227
+ new_text = render(roadmaps)
228
+ current = target.read_text(encoding="utf-8") if target.exists() else ""
229
+ if args.check:
230
+ if current != new_text:
231
+ print(f"❌ {target.relative_to(args.repo_root)} is stale. "
232
+ f"Run `task roadmap-progress` to regenerate.", file=sys.stderr)
233
+ return 1
234
+ print(f"✅ {target.relative_to(args.repo_root)} is up to date.")
235
+ return 0
236
+ target.write_text(new_text, encoding="utf-8")
237
+ print(f"✅ Wrote {target.relative_to(args.repo_root)} · "
238
+ f"{len(roadmaps)} roadmap(s) · "
239
+ f"{sum(r.done for r in roadmaps)}/{sum(r.total_active for r in roadmaps)} steps done.")
240
+ return 0
241
+
242
+
243
+ if __name__ == "__main__":
244
+ raise SystemExit(main())
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: adversarial-review
3
+ description: "ONLY when user explicitly requests adversarial review, devil's advocate analysis, stress-testing a plan, or 'poke holes in this' — NOT for regular code review or design feedback."
4
+ personas:
5
+ - critical-challenger
6
+ source: package
7
+ ---
8
+
9
+ # Adversarial Review
10
+
11
+ ## When to use
12
+
13
+ Use this skill when:
14
+ - You've completed a plan, design, or proposed fix and are about to present it.
15
+ - The change is non-trivial (affects multiple files, changes behavior, touches critical paths).
16
+ - You're about to recommend an architecture or design decision.
17
+
18
+ Do NOT use when:
19
+ - The task is trivial (renaming, formatting, simple config change).
20
+ - The user explicitly asked for a quick/rough draft.
21
+ - You're exploring options, not committing to one yet.
22
+
23
+ ## Procedure: Adversarial review
24
+
25
+ ### Step 1: Attack (Grumpy Senior Engineer)
26
+
27
+ Assume your plan/fix is flawed. Ask yourself:
28
+
29
+ - What's the weakest assumption?
30
+ - Where will this break under load, at scale, or with edge cases?
31
+ - What did I ignore or hand-wave?
32
+ - Is this over-engineered for the actual problem?
33
+ - Would a simpler approach work just as well?
34
+ - What will the next developer curse me for?
35
+
36
+ ### Step 2: Defend (Balanced Engineer)
37
+
38
+ Counter the criticism fairly:
39
+
40
+ - Which criticisms are valid and must be addressed now?
41
+ - Which are theoretical and can be deferred?
42
+ - What's the pragmatic middle ground?
43
+
44
+ ### Step 3: Revise
45
+
46
+ - Fix the valid issues in your plan/fix.
47
+ - Move deferred concerns to "Open Questions" or "Known Limitations".
48
+ - Present the improved version to the user.
49
+
50
+ **Do this internally** — the user sees the improved result, not the raw debate.
51
+ Only surface trade-offs or concerns that need the user's input.
52
+
53
+ ## Context-specific attack questions
54
+
55
+ ### Feature plans / Architecture
56
+
57
+ - Is this the simplest solution that works?
58
+ - What happens when requirements change (and they will)?
59
+ - Are there hidden dependencies or coupling?
60
+ - Does this respect existing patterns or introduce a new one unnecessarily?
61
+ - What's the migration/rollback story?
62
+
63
+ ### Bug fixes
64
+
65
+ - Is this the root cause or just a symptom?
66
+ - Will this fix break something else?
67
+ - Does the fix handle the edge case that caused the bug?
68
+ - Is there a regression test that proves the fix works?
69
+ - Are there other places with the same bug pattern?
70
+
71
+ ### Code changes / Refactoring
72
+
73
+ - Would I understand this code in 6 months without context?
74
+ - Did I check all callers and downstream effects?
75
+ - Are the tests actually testing the right behavior?
76
+ - Did I introduce a new pattern where an existing one would work?
77
+
78
+ ### Database migrations
79
+
80
+ - Can this destroy or corrupt data?
81
+ - Is rollback possible?
82
+ - What happens to running queries during migration?
83
+ - Did I check the table size (large table ALTER can lock)?
84
+
85
+ ### API design
86
+
87
+ - Is this a breaking change?
88
+ - Is it consistent with existing endpoints?
89
+ - Are error responses clear and actionable?
90
+ - Did I consider pagination, filtering, versioning?
91
+
92
+ ### Security-sensitive changes
93
+
94
+ - Where is the attack surface I'm not seeing?
95
+ - Am I trusting user input anywhere?
96
+ - Are there authorization gaps?
97
+ - Would this pass a security review?
98
+
99
+ ## Integration with other skills
100
+
101
+ - **feature-planning** — adversarial review after Understanding Lock, before presenting the plan.
102
+ - **bug-analyzer** — review the proposed fix before implementing.
103
+ - **code-review** — self-review before creating a PR.
104
+ - **migration-creator** — review migration for data safety.
105
+ - **api-design** — review API design for consistency and breaking changes.
106
+ - **security** — review security-sensitive changes for attack surface.
107
+
108
+ ## Auto-trigger keywords
109
+
110
+ - adversarial review
111
+ - self-review
112
+ - challenge plan
113
+ - review my approach
114
+ - sanity check
115
+
116
+ ### Validate
117
+
118
+ - Confirm each identified risk has a concrete mitigation or explicit acceptance.
119
+ - Verify the review produced at least one actionable finding (or explicit "no issues found").
120
+ - Check that the review did not just restate the plan — it must challenge assumptions.
121
+
122
+ ## Output format
123
+
124
+ 1. Improved plan/code incorporating adversarial findings
125
+ 2. Risk summary — top concerns discovered and how they were addressed
126
+ 3. Remaining open risks (if any) with severity rating
127
+
128
+ ## Gotcha
129
+
130
+ - Don't use this on trivial changes — it adds overhead without value on simple renames or config tweaks.
131
+ - The model tends to invent risks that don't exist. Ground every concern in actual code, not hypotheticals.
132
+ - Don't challenge the user's explicit requirements — challenge the implementation, not the goal.
133
+
134
+ ## Do NOT
135
+
136
+ - Do NOT present the raw adversarial debate to the user — only the improved result.
137
+ - Do NOT use this as an excuse to delay work — the review should take seconds, not minutes.
138
+ - Do NOT apply this to trivial changes — it adds overhead without value.
139
+ - Do NOT let the "grumpy engineer" kill good ideas — the balanced engineer must counter.
140
+ - Do NOT skip Step 3 (Revise) — attacking without improving is just complaining.
141
+
142
+ ## References
143
+
144
+ - **Tree-of-Thoughts (ToT)** — [arxiv.org/abs/2305.10601](https://arxiv.org/abs/2305.10601)
145
+ Deliberate problem-solving by exploring multiple reasoning branches.
146
+ This skill adapts ToT by pitting a grumpy engineer against a
147
+ balanced engineer — the branching happens between roles, not
148
+ between thought-tree nodes.
149
+