@event4u/agent-config 1.20.0 → 1.21.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 (238) hide show
  1. package/.agent-src/commands/agents.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +1 -1
  3. package/.agent-src/commands/bug-investigate.md +2 -2
  4. package/.agent-src/commands/chat-history/import.md +60 -64
  5. package/.agent-src/commands/compress.md +12 -0
  6. package/.agent-src/commands/context/create.md +2 -2
  7. package/.agent-src/commands/context.md +1 -1
  8. package/.agent-src/commands/copilot-agents.md +1 -1
  9. package/.agent-src/commands/council/default.md +17 -5
  10. package/.agent-src/commands/council.md +1 -1
  11. package/.agent-src/commands/e2e-heal.md +1 -1
  12. package/.agent-src/commands/e2e-plan.md +1 -1
  13. package/.agent-src/commands/feature/dev.md +3 -3
  14. package/.agent-src/commands/feature.md +1 -1
  15. package/.agent-src/commands/fix/seeder.md +2 -2
  16. package/.agent-src/commands/fix.md +1 -1
  17. package/.agent-src/commands/jira-ticket.md +1 -1
  18. package/.agent-src/commands/judge.md +2 -2
  19. package/.agent-src/commands/memory.md +1 -1
  20. package/.agent-src/commands/mode.md +5 -5
  21. package/.agent-src/commands/module.md +1 -1
  22. package/.agent-src/commands/onboard.md +4 -4
  23. package/.agent-src/commands/optimize/augmentignore.md +1 -1
  24. package/.agent-src/commands/optimize-prompt.md +61 -0
  25. package/.agent-src/commands/optimize.md +1 -1
  26. package/.agent-src/commands/override.md +1 -1
  27. package/.agent-src/commands/review-changes.md +1 -1
  28. package/.agent-src/commands/review-routing.md +1 -1
  29. package/.agent-src/commands/roadmap.md +1 -1
  30. package/.agent-src/commands/set-cost-profile.md +3 -3
  31. package/.agent-src/commands/sync-agent-settings.md +2 -2
  32. package/.agent-src/commands/tests/create.md +2 -2
  33. package/.agent-src/commands/tests.md +1 -1
  34. package/.agent-src/commands/threat-model.md +4 -4
  35. package/.agent-src/contexts/authority/commit-mechanics.md +14 -1
  36. package/.agent-src/contexts/authority/destructive-mechanics.md +14 -1
  37. package/.agent-src/contexts/authority/scope-mechanics.md +5 -0
  38. package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +76 -0
  39. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
  40. package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +98 -0
  41. package/.agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +93 -0
  42. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +128 -5
  43. package/.agent-src/contexts/execution/autonomy-mechanics.md +44 -0
  44. package/.agent-src/contexts/model-recommendations.md +2 -2
  45. package/.agent-src/contexts/override-system.md +1 -1
  46. package/.agent-src/personas/product-owner.md +2 -2
  47. package/.agent-src/personas/qa.md +1 -1
  48. package/.agent-src/rules/agent-authority.md +5 -6
  49. package/.agent-src/rules/agent-docs.md +11 -53
  50. package/.agent-src/rules/analysis-skill-routing.md +10 -40
  51. package/.agent-src/rules/architecture.md +6 -1
  52. package/.agent-src/rules/artifact-drafting-protocol.md +5 -0
  53. package/.agent-src/rules/artifact-engagement-recording.md +23 -59
  54. package/.agent-src/rules/ask-when-uncertain.md +24 -47
  55. package/.agent-src/rules/augment-portability.md +14 -62
  56. package/.agent-src/rules/augment-source-of-truth.md +10 -1
  57. package/.agent-src/rules/autonomous-execution.md +17 -98
  58. package/.agent-src/rules/capture-learnings.md +9 -80
  59. package/.agent-src/rules/cli-output-handling.md +12 -42
  60. package/.agent-src/rules/command-suggestion-policy.md +25 -73
  61. package/.agent-src/rules/commit-conventions.md +9 -58
  62. package/.agent-src/rules/commit-policy.md +16 -47
  63. package/.agent-src/rules/context-hygiene.md +5 -0
  64. package/.agent-src/rules/direct-answers.md +21 -50
  65. package/.agent-src/rules/docker-commands.md +11 -45
  66. package/.agent-src/rules/docs-sync.md +10 -56
  67. package/.agent-src/rules/downstream-changes.md +5 -0
  68. package/.agent-src/rules/e2e-testing.md +9 -44
  69. package/.agent-src/rules/guidelines.md +13 -75
  70. package/.agent-src/rules/improve-before-implement.md +10 -2
  71. package/.agent-src/rules/language-and-tone.md +41 -106
  72. package/.agent-src/rules/laravel-translations.md +11 -40
  73. package/.agent-src/rules/markdown-safe-codeblocks.md +4 -0
  74. package/.agent-src/rules/minimal-safe-diff.md +4 -0
  75. package/.agent-src/rules/missing-tool-handling.md +4 -0
  76. package/.agent-src/rules/model-recommendation.md +9 -61
  77. package/.agent-src/rules/no-attribution-footers.md +5 -0
  78. package/.agent-src/rules/no-cheap-questions.md +11 -27
  79. package/.agent-src/rules/no-council-references.md +76 -0
  80. package/.agent-src/rules/no-roadmap-references.md +7 -0
  81. package/.agent-src/rules/non-destructive-by-default.md +13 -43
  82. package/.agent-src/rules/onboarding-gate.md +9 -117
  83. package/.agent-src/rules/package-ci-checks.md +10 -37
  84. package/.agent-src/rules/php-coding.md +10 -55
  85. package/.agent-src/rules/preservation-guard.md +9 -0
  86. package/.agent-src/rules/review-routing-awareness.md +9 -97
  87. package/.agent-src/rules/reviewer-awareness.md +8 -83
  88. package/.agent-src/rules/roadmap-progress-sync.md +7 -170
  89. package/.agent-src/rules/role-mode-adherence.md +6 -2
  90. package/.agent-src/rules/rule-type-governance.md +8 -66
  91. package/.agent-src/rules/runtime-safety.md +5 -0
  92. package/.agent-src/rules/scope-control.md +17 -62
  93. package/.agent-src/rules/security-sensitive-stop.md +7 -1
  94. package/.agent-src/rules/size-enforcement.md +6 -1
  95. package/.agent-src/rules/skill-improvement-trigger.md +9 -49
  96. package/.agent-src/rules/skill-quality.md +7 -113
  97. package/.agent-src/rules/slash-command-routing-policy.md +11 -63
  98. package/.agent-src/rules/think-before-action.md +22 -87
  99. package/.agent-src/rules/token-efficiency.md +10 -74
  100. package/.agent-src/rules/token-optimizer-maintenance.md +68 -0
  101. package/.agent-src/rules/tool-safety.md +4 -0
  102. package/.agent-src/rules/ui-audit-gate.md +25 -61
  103. package/.agent-src/rules/upstream-proposal.md +9 -67
  104. package/.agent-src/rules/user-interaction.md +22 -108
  105. package/.agent-src/rules/verify-before-complete.md +1 -1
  106. package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  107. package/.agent-src/skills/ai-council/SKILL.md +65 -0
  108. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  109. package/.agent-src/skills/analysis-skill-router/SKILL.md +3 -3
  110. package/.agent-src/skills/artisan-commands/SKILL.md +2 -2
  111. package/.agent-src/skills/authz-review/SKILL.md +1 -1
  112. package/.agent-src/skills/aws-infrastructure/SKILL.md +5 -5
  113. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +8 -8
  114. package/.agent-src/skills/bug-analyzer/SKILL.md +5 -5
  115. package/.agent-src/skills/code-refactoring/SKILL.md +4 -4
  116. package/.agent-src/skills/code-review/SKILL.md +2 -2
  117. package/.agent-src/skills/command-writing/SKILL.md +11 -0
  118. package/.agent-src/skills/composer-packages/SKILL.md +2 -2
  119. package/.agent-src/skills/context-authoring/SKILL.md +11 -0
  120. package/.agent-src/skills/context-document/SKILL.md +1 -1
  121. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +23 -0
  122. package/.agent-src/skills/copilot-config/SKILL.md +1 -1
  123. package/.agent-src/skills/dependency-upgrade/SKILL.md +2 -2
  124. package/.agent-src/skills/devcontainer/SKILL.md +2 -2
  125. package/.agent-src/skills/developer-like-execution/SKILL.md +1 -1
  126. package/.agent-src/skills/docker/SKILL.md +1 -1
  127. package/.agent-src/skills/dto-creator/SKILL.md +1 -1
  128. package/.agent-src/skills/estimate-ticket/SKILL.md +2 -2
  129. package/.agent-src/skills/fe-design/SKILL.md +4 -4
  130. package/.agent-src/skills/feature-planning/SKILL.md +5 -5
  131. package/.agent-src/skills/funnel-analysis/SKILL.md +1 -1
  132. package/.agent-src/skills/laravel/SKILL.md +1 -1
  133. package/.agent-src/skills/laravel-notifications/SKILL.md +5 -5
  134. package/.agent-src/skills/laravel-pennant/SKILL.md +1 -1
  135. package/.agent-src/skills/laravel-pulse/SKILL.md +4 -4
  136. package/.agent-src/skills/laravel-reverb/SKILL.md +2 -2
  137. package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -1
  138. package/.agent-src/skills/migration-creator/SKILL.md +7 -7
  139. package/.agent-src/skills/multi-tenancy/SKILL.md +8 -8
  140. package/.agent-src/skills/performance-analysis/SKILL.md +3 -3
  141. package/.agent-src/skills/pest-testing/SKILL.md +6 -6
  142. package/.agent-src/skills/php-service/SKILL.md +2 -2
  143. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
  144. package/.agent-src/skills/project-analysis-react/SKILL.md +1 -1
  145. package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
  146. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
  147. package/.agent-src/skills/project-analyzer/SKILL.md +4 -4
  148. package/.agent-src/skills/prompt-optimizer/SKILL.md +108 -0
  149. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  150. package/.agent-src/skills/rule-writing/SKILL.md +33 -0
  151. package/.agent-src/skills/sentry-integration/SKILL.md +1 -1
  152. package/.agent-src/skills/skill-writing/SKILL.md +14 -0
  153. package/.agent-src/skills/terraform/SKILL.md +2 -2
  154. package/.agent-src/skills/terragrunt/SKILL.md +8 -8
  155. package/.agent-src/skills/test-performance/SKILL.md +5 -5
  156. package/.agent-src/skills/threat-modeling/SKILL.md +2 -2
  157. package/.agent-src/skills/token-optimizer/SKILL.md +110 -0
  158. package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  159. package/.agent-src/templates/AGENTS.md +1 -1
  160. package/.agent-src/templates/agent-settings.md +21 -16
  161. package/.agent-src/templates/contexts/tenant-boundaries.md +2 -2
  162. package/.agent-src/templates/contexts.md +1 -1
  163. package/.agent-src/templates/copilot-instructions.md +21 -0
  164. package/.agent-src/templates/copilot-review-instructions.md +76 -0
  165. package/.agent-src/templates/features.md +1 -1
  166. package/.agent-src/templates/rule.md +127 -0
  167. package/.claude-plugin/marketplace.json +4 -1
  168. package/AGENTS.md +32 -5
  169. package/CHANGELOG.md +69 -3
  170. package/README.md +22 -21
  171. package/config/agent-settings.template.yml +44 -10
  172. package/config/gitignore-block.txt +7 -0
  173. package/docs/architecture.md +86 -5
  174. package/docs/catalog.md +16 -6
  175. package/docs/contracts/agent-memory-contract.md +1 -1
  176. package/docs/contracts/context-paths.md +2 -1
  177. package/docs/contracts/file-ownership-matrix.json +354 -500
  178. package/docs/contracts/iron-law-overrides.txt +25 -0
  179. package/docs/contracts/kernel-membership.md +273 -0
  180. package/docs/contracts/load-context-schema.md +26 -11
  181. package/docs/contracts/pilot/agent-authority.md +24 -0
  182. package/docs/contracts/pilot/direct-answers.md +70 -0
  183. package/docs/contracts/pilot/language-and-tone.md +63 -0
  184. package/docs/contracts/rule-classification.md +170 -0
  185. package/docs/contracts/rule-router.md +153 -0
  186. package/docs/customization.md +17 -6
  187. package/docs/decisions/ADR-001-kernel-swap-deferred.md +109 -0
  188. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +124 -0
  189. package/docs/decisions/ADR-rule-kernel-and-router.md +122 -0
  190. package/docs/getting-started.md +2 -2
  191. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +176 -0
  192. package/docs/guidelines/agent-infra/rule-type-governance.md +73 -0
  193. package/docs/guidelines/agent-infra/size-and-scope.md +13 -2
  194. package/docs/guidelines/agent-infra/skill-quality-checklist.md +119 -0
  195. package/docs/guidelines/augment-portability-patterns.md +68 -0
  196. package/docs/guidelines/php/php-coding-patterns.md +62 -0
  197. package/package.json +1 -1
  198. package/scripts/_p43_bodies.py +235 -0
  199. package/scripts/_p43_compress.py +118 -0
  200. package/scripts/_p4_migrate.py +199 -0
  201. package/scripts/_pilot_council_question.py +57 -0
  202. package/scripts/_pilot_measure.py +53 -0
  203. package/scripts/ai_council/session.py +107 -5
  204. package/scripts/build_linear_digest.py +3 -5
  205. package/scripts/check_always_budget.py +39 -6
  206. package/scripts/check_compressed_paths.py +213 -0
  207. package/scripts/check_compression.py +15 -0
  208. package/scripts/check_context_paths.py +1 -0
  209. package/scripts/check_council_layout.py +105 -0
  210. package/scripts/check_council_references.py +145 -0
  211. package/scripts/check_portability.py +2 -0
  212. package/scripts/check_references.py +2 -0
  213. package/scripts/check_token_optimizer_freshness.py +131 -0
  214. package/scripts/compile_router.py +148 -0
  215. package/scripts/compress.py +219 -11
  216. package/scripts/council_cli.py +9 -5
  217. package/scripts/council_prune.py +81 -0
  218. package/scripts/count_token_optimizer_usage.sh +54 -0
  219. package/scripts/install.sh +44 -2
  220. package/scripts/iron_law_sha.py +98 -0
  221. package/scripts/lint_load_context.py +35 -5
  222. package/scripts/measure_rule_budget.py +314 -0
  223. package/scripts/prototype_lint_contradictions.py +150 -0
  224. package/scripts/schemas/rule.schema.json +55 -6
  225. package/scripts/skill_linter.py +196 -6
  226. package/scripts/smoke_path_resolution.py +93 -0
  227. package/scripts/validate_frontmatter.py +41 -1
  228. package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +0 -72
  229. package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +0 -79
  230. package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +0 -87
  231. package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +0 -62
  232. package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +0 -78
  233. package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +0 -85
  234. package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +0 -65
  235. package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +0 -78
  236. package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +0 -53
  237. /package/{docs → .agent-src/contexts}/contracts/artifact-engagement-flow.md +0 -0
  238. /package/{docs → .agent-src/contexts}/contracts/command-suggestion-flow.md +0 -0
@@ -26,9 +26,9 @@ Use this skill when the user asks to create a database migration, add a column,
26
26
 
27
27
  ## Laravel projects
28
28
 
29
- ### Multi-database architecture
29
+ ### Multi-DB architecture
30
30
 
31
- Some projects use multiple database connections. Check `config/database.php` for connections.
31
+ Some projects use multiple DB connections. Check `config/database.php` for connections.
32
32
 
33
33
  | Check | How |
34
34
  |---|---|
@@ -36,9 +36,9 @@ Some projects use multiple database connections. Check `config/database.php` for
36
36
  | Migration directories | `database/migrations/` (default), check for additional directories |
37
37
  | Custom migrate commands | `php artisan list migrate` — look for project-specific commands |
38
38
 
39
- **Always determine which database the table belongs to before creating a migration.**
39
+ **Always determine which DB the table belongs to before creating a migration.**
40
40
 
41
- ### API database migration
41
+ ### API DB migration
42
42
 
43
43
  ```bash
44
44
  php artisan make:migration create_example_table
@@ -72,13 +72,13 @@ return new class extends Migration {
72
72
  };
73
73
  ```
74
74
 
75
- ### Customer database migration
75
+ ### Customer DB migration
76
76
 
77
77
  ```bash
78
78
  php artisan make:migration:customer AddWeatherColumn --table=cl_lv_weather
79
79
  ```
80
80
 
81
- Customer database tables use the `cl_` prefix (e.g. `cl_user`, `cl_lv_weather`).
81
+ Customer DB tables use the `cl_` prefix (e.g. `cl_user`, `cl_lv_weather`).
82
82
 
83
83
  ### Adding a column (with explicit connection)
84
84
 
@@ -152,7 +152,7 @@ Focus on the "Database migrations" attack questions: Can this destroy data? Is r
152
152
 
153
153
  ## Auto-trigger keywords
154
154
 
155
- - database migration
155
+ - DB migration
156
156
  - create migration
157
157
  - table prefix
158
158
  - column naming
@@ -8,11 +8,11 @@ source: package
8
8
 
9
9
  ## When to use
10
10
 
11
- Use this skill when working with tenant-specific data, customer database connections, or any code that touches the dual-database architecture.
11
+ Use this skill when working with tenant-specific data, customer database connections, or any code that touches the dual-DB architecture.
12
12
 
13
13
 
14
14
  Do NOT use when:
15
- - Single-database applications
15
+ - Single-DB applications
16
16
  - Frontend-only changes
17
17
 
18
18
  ## Procedure: Work with multi-tenancy
@@ -32,7 +32,7 @@ Request → Identify Tenant (JWT / subdomain / API key)
32
32
  → All tenant queries use tenant connection
33
33
  ```
34
34
 
35
- ### Dual-database pattern
35
+ ### Dual-DB pattern
36
36
 
37
37
  | Connection type | Purpose | Scope |
38
38
  |---|---|---|
@@ -53,7 +53,7 @@ Search the codebase for the service responsible for tenant switching. Typical re
53
53
  1. Store tenant context (e.g., in Laravel Context or a singleton)
54
54
  2. Load tenant configuration
55
55
  3. Set monitoring context (tenant ID, name, domain)
56
- 4. Reconfigure the database connection with tenant credentials
56
+ 4. Reconfigure the DB connection with tenant credentials
57
57
  5. Bind tenant-specific services via the container
58
58
 
59
59
  ## Model conventions
@@ -89,7 +89,7 @@ Check the project for the actual connection names and namespace conventions.
89
89
  ## Testing with tenants
90
90
 
91
91
  - Tests use dedicated tenant seeders (check `agents/docs/` for seeder conventions).
92
- - The testing database may consolidate multiple connections into a single DB for simplicity.
92
+ - The testing DB may consolidate multiple connections into a single DB for simplicity.
93
93
  - Use `RefreshDatabase` or manual seeding — never assume a specific tenant state from previous tests.
94
94
 
95
95
  ## Common pitfalls
@@ -111,19 +111,19 @@ Check the project for the actual connection names and namespace conventions.
111
111
 
112
112
  - multi-tenant
113
113
  - tenant isolation
114
- - customer database
114
+ - customer DB
115
115
  - FQDN routing
116
116
 
117
117
  ## Gotcha
118
118
 
119
- - Always verify which database connection is active before running queries — cross-tenant data leaks are critical bugs.
119
+ - Always verify which DB connection is active before running queries — cross-tenant data leaks are critical bugs.
120
120
  - The model forgets to switch back to the main connection after tenant operations.
121
121
  - Queue jobs serialize the connection state — ensure the tenant context is restored when the job runs.
122
122
  - Don't use `DB::connection()` directly — use the tenant switching helpers.
123
123
 
124
124
  ## Do NOT
125
125
 
126
- - Do NOT hardcode database names — always use connection names.
126
+ - Do NOT hardcode DB names — always use connection names.
127
127
  - Do NOT assume `customer_database` is available in service providers or early boot.
128
128
  - Do NOT access tenant data in global middleware that runs before customer identification.
129
129
  - Do NOT store tenant DB credentials in code — they come from the `customer_databases` table.
@@ -80,7 +80,7 @@ Focus on code paths with high execution frequency or large data volumes:
80
80
  - Missing CDN for static assets
81
81
  - Missing response caching for read-heavy endpoints
82
82
  - Database connection pooling and limits
83
- - Queue worker concurrency vs database connection limits
83
+ - Queue worker concurrency vs DB connection limits
84
84
 
85
85
  ## Output format
86
86
 
@@ -101,12 +101,12 @@ For each bottleneck:
101
101
  - **performance** — complementary: performance is about writing fast code, this is about finding slow code
102
102
  - **test-performance** — for test suite speed specifically
103
103
  - **bug-analyzer** — some performance issues are actually bugs (N+1, infinite loops)
104
- - **database** — for deep DB optimization guidance
104
+ - **DB** — for deep DB optimization guidance
105
105
 
106
106
  ## Gotcha
107
107
 
108
108
  - Don't present raw numbers without context — "200ms" means nothing without knowing the baseline.
109
- - The model tends to focus on code-level optimization when the bottleneck is a database query.
109
+ - The model tends to focus on code-level optimization when the bottleneck is a DB query.
110
110
  - Profiling in development differs from production — different data volumes, different query plans.
111
111
 
112
112
  ## Do NOT
@@ -53,9 +53,9 @@ For bug fixes and new features, prefer test-driven development:
53
53
 
54
54
  ### Why test-first matters
55
55
 
56
- Tests written **after** implementation pass immediately. Passing immediately proves nothing:
56
+ Tests written **after** impl pass immediately. Passing immediately proves nothing:
57
57
  - The test might test the wrong thing.
58
- - The test might test implementation, not behavior.
58
+ - The test might test impl, not behavior.
59
59
  - You never saw it catch the bug — so you don't know if it would.
60
60
 
61
61
  ### Bug fix TDD
@@ -120,7 +120,7 @@ The test proves the fix works AND prevents regression.
120
120
  - For JSON APIs, assert:
121
121
  - exact relevant fields
122
122
  - error structure when applicable
123
- - database state after the request
123
+ - DB state after the request
124
124
  - Do not only assert `200` — verify meaningful behavior.
125
125
 
126
126
  ## Validation tests
@@ -258,7 +258,7 @@ When reviewing or auditing existing tests, check for these anti-patterns:
258
258
 
259
259
  - Do not test private methods directly.
260
260
  - Do not over-mock Laravel internals.
261
- - Do not assert implementation details when behavior assertions are enough.
261
+ - Do not assert impl details when behavior assertions are enough.
262
262
  - Do not write brittle tests tied to formatting or irrelevant response noise.
263
263
  - Do not create giant tests that cover many behaviors at once.
264
264
  - Do not skip authorization or validation coverage for important endpoints.
@@ -285,7 +285,7 @@ When generating Pest tests:
285
285
  - Don't use `readonly` or `final` on Pest test helper classes — it breaks mocking.
286
286
  - Don't add `use` statements for global classes (`Exception`, `DateTimeImmutable`) in Pest files — they're auto-imported.
287
287
  - The model forgets `$this->travel(5)->seconds()` for time-dependent tests — never rely on `now()` differing between lines.
288
- - Parallel tests share the database — don't assume column values are null unless you explicitly set them.
288
+ - Parallel tests share the DB — don't assume column values are null unless you explicitly set them.
289
289
 
290
290
  ## Do NOT
291
291
 
@@ -297,7 +297,7 @@ When generating Pest tests:
297
297
  When generating new tests, focus on:
298
298
  - **Business logic**: calculations, status transitions, validation rules, data transformations
299
299
  - **Edge cases**: null, empty string, zero, negative numbers, boundary values, max length
300
- - **Error paths**: invalid input, missing dependencies, exception handling
300
+ - **Error paths**: invalid input, missing deps, exception handling
301
301
  - **Different code branches**: if/else, early returns, fallback behavior
302
302
 
303
303
  What NOT to test:
@@ -38,7 +38,7 @@ Do NOT use when:
38
38
  1. Location: `app/Services/{Domain}/` or `app/Modules/{Module}/App/Services/`.
39
39
  2. `declare(strict_types=1)`, proper namespace.
40
40
  3. Constructor inject dependencies (repositories, other services).
41
- 4. Max 4 constructor dependencies — if more, split the service.
41
+ 4. Max 4 constructor deps — if more, split the service.
42
42
 
43
43
  ### Step 2: Implement methods
44
44
 
@@ -69,7 +69,7 @@ public function __invoke(
69
69
 
70
70
  - Run PHPStan on the service — must pass at level 9.
71
71
  - Verify single responsibility: service does one thing, no mixed concerns.
72
- - Confirm all dependencies are constructor-injected (no `app()` or facades in service).
72
+ - Confirm all deps are constructor-injected (no `app()` or facades in service).
73
73
  - Run affected tests — must pass.
74
74
 
75
75
  ## Output format
@@ -11,7 +11,7 @@ source: package
11
11
  Use this skill when:
12
12
 
13
13
  * There is a concrete issue to explain
14
- * Multiple root causes are plausible
14
+ * Multiple root are plausible
15
15
  * The system spans several layers
16
16
  * A shallow single-explanation answer would be risky
17
17
  * `universal-project-analysis` or `bug-analyzer` routes here
@@ -27,7 +27,7 @@ Do NOT use when:
27
27
  * Never stop at the first plausible explanation
28
28
  * Code, docs, and evidence beat intuition
29
29
  * Rejected hypotheses matter
30
- * Multiple interacting causes are common
30
+ * Multiple interacting are common
31
31
  * Uncertainty must be marked explicitly
32
32
 
33
33
  ## Procedure
@@ -89,7 +89,7 @@ Ask:
89
89
 
90
90
  * does this fully explain the behavior?
91
91
  * what remains unexplained?
92
- * could multiple causes interact?
92
+ * could multiple interact?
93
93
  * does contradictory evidence exist?
94
94
 
95
95
  If anything major remains unexplained: continue analysis, do not present a final conclusion yet.
@@ -107,7 +107,7 @@ Check:
107
107
  ## Gotcha
108
108
 
109
109
  * React bugs often come from stale state, not broken logic.
110
- * Missing dependencies in hooks are one of the most common root causes.
110
+ * Missing deps in hooks are one of the most common root causes.
111
111
  * Overusing memoization can make code harder to reason about without solving real problems.
112
112
 
113
113
  ## Do NOT
@@ -34,7 +34,7 @@ Do NOT use when:
34
34
  ### 1. Confirm Symfony version and app shape
35
35
 
36
36
  Check: `composer.lock`, `composer.json`, Symfony packages/components, PHP version, environment config structure.
37
- Validate: Symfony version is explicit, major bundles/components are identified, environment-specific config layout is known.
37
+ Validate: Symfony version is explicit, major bundles/components are identified, env-specific config layout is known.
38
38
 
39
39
  ### 2. Analyze kernel and container boot
40
40
 
@@ -44,7 +44,7 @@ Check:
44
44
 
45
45
  * merge order surprises
46
46
  * missing overrides
47
- * environment config mismatches
47
+ * env config mismatches
48
48
  * heavy bootstrap logic
49
49
 
50
50
  ### 3. Analyze ServiceManager behavior
@@ -96,7 +96,7 @@ Check:
96
96
  ## Gotcha
97
97
 
98
98
  * Many Zend/Laminas issues are caused by config order and service resolution, not controller code.
99
- * Shared services and legacy migration remnants can create cross-request or environment-specific bugs.
99
+ * Shared services and legacy migration remnants can create cross-request or env-specific bugs.
100
100
  * Old project behavior may depend on historical bootstrap side effects that are easy to miss.
101
101
 
102
102
  ## Do NOT
@@ -233,7 +233,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
233
233
  ### Phase 3: Data layer
234
234
 
235
235
  - List all models with their connections, tables, and key relationships
236
- - Map database schema: tables, foreign keys, indexes
236
+ - Map DB schema: tables, foreign keys, indexes
237
237
  - Document multi-tenant split (which tables in which DB)
238
238
  - **Output:** `agents/analysis/models/api-database.md`, `customer-database.md`
239
239
 
@@ -242,7 +242,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
242
242
  - Identify domains from models, services, routes, and directory structure
243
243
  - For each domain: map models → services → controllers → jobs → events
244
244
  - Document business rules and data flows
245
- - Document inter-domain dependencies
245
+ - Document inter-domain deps
246
246
  - **Output:** `agents/analysis/domains/{domain}.md` (one per domain)
247
247
 
248
248
  ### Phase 5: API surface
@@ -254,7 +254,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
254
254
 
255
255
  ### Phase 6: Service map
256
256
 
257
- - List all services with purpose, key methods, and dependencies
257
+ - List all services with purpose, key methods, and deps
258
258
  - Map service → repository → model relationships
259
259
  - Identify God services (too many responsibilities)
260
260
  - **Output:** `agents/analysis/services/service-map.md`
@@ -315,7 +315,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
315
315
  ## Output format
316
316
 
317
317
  1. Structured analysis document in agents/analysis/
318
- 2. Tech stack inventory with versions and dependencies
318
+ 2. Tech stack inventory with versions and deps
319
319
  3. Architecture diagram or module map
320
320
 
321
321
  ## Auto-trigger keywords
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: prompt-optimizer
3
+ description: "Use when the user wants a prompt optimized for ChatGPT, Claude, Gemini, or another AI — 'make this prompt better', 'optimize for ChatGPT', 'rewrite my prompt' — even without saying 'optimize'."
4
+ source: package
5
+ ---
6
+
7
+ # prompt-optimizer
8
+
9
+ > Persona: **Lyra** — a master-level prompt-optimization specialist. Mission: turn a raw user prompt into a precision-crafted prompt that lands well on the user's chosen external AI (ChatGPT, Claude, Gemini, Perplexity, …). Sibling of [`refine-prompt`](../refine-prompt/SKILL.md) which is engine-inbound; this skill is engine-outbound (the polished prompt is text the user will paste elsewhere).
10
+
11
+ ## When to use
12
+
13
+ - The user pastes a rough prompt and asks for it to be optimized, rewritten, sharpened, or "made better".
14
+ - The user mentions a target AI (ChatGPT, Claude, Gemini, Perplexity, Copilot) and wants their prompt tuned for it.
15
+ - The user invokes [`/optimize-prompt`](../../commands/optimize-prompt.md).
16
+ - The user describes a goal ("I need a marketing-email prompt for ChatGPT") and the deliverable is a prompt, not the email itself.
17
+
18
+ ## When NOT to use (near-misses)
19
+
20
+ | Phrasing | Route to |
21
+ |---|---|
22
+ | "refine this ticket / prompt for the engine" | [`refine-prompt`](../refine-prompt/SKILL.md) |
23
+ | "make this skill description pushier" | [`description-assist`](../description-assist/SKILL.md) |
24
+ | "write the marketing email itself" | direct execution — the user wants the artifact, not a prompt |
25
+ | "review my code / commit" | [`review-changes`](../../commands/review-changes.md) and friends |
26
+
27
+ ## The 4-D Methodology
28
+
29
+ 1. **Deconstruct** — extract core intent, key entities, output shape, constraints; map what's provided vs missing.
30
+ 2. **Diagnose** — audit clarity gaps, ambiguity, missing specificity, missing structure; flag unstated assumptions.
31
+ 3. **Develop** — pick techniques by request type:
32
+ - *Creative* → multi-perspective + tone anchoring
33
+ - *Technical* → constraint-based + precision focus
34
+ - *Educational* → few-shot examples + clear structure
35
+ - *Complex* → chain-of-thought + systematic framing
36
+ - Assign an AI role/expertise; layer context; add logical structure.
37
+ 4. **Deliver** — output the optimized prompt + a short "what changed" + (DETAIL only) techniques applied + one pro-tip.
38
+
39
+ ## Modes — BASIC vs DETAIL
40
+
41
+ **Auto-detect on first turn:**
42
+
43
+ | Signal | Mode |
44
+ |---|---|
45
+ | User wrote "BASIC" or "DETAIL" verbatim | honor it |
46
+ | One-line ask, common task (resume help, casual email, summary) | BASIC |
47
+ | Multi-paragraph context, professional/technical scope, named audience, named tone | DETAIL |
48
+ | Target AI not named AND request implies platform-sensitive output | DETAIL |
49
+ | **Tiebreaker** — both BASIC and DETAIL signals fire | DETAIL (safer default) |
50
+
51
+ **BASIC** — apply core 4-D fixes silently, return optimized prompt + 3-bullet "what changed". No questions.
52
+
53
+ **DETAIL** — gather missing context **one question per turn** (Iron Law from `ask-when-uncertain`). Stop asking once Deconstruct + Diagnose are clean. Then deliver.
54
+
55
+ **Always inform mode + override**: first reply names the chosen mode and offers the other in one numbered-options block. Re-pick is silent on subsequent turns.
56
+
57
+ ## Procedure
58
+
59
+ ### 1. Receive input
60
+
61
+ Capture: (a) the rough prompt, (b) target AI if named, (c) explicit BASIC/DETAIL marker if present. If the user pasted only a topic ("marketing email"), treat it as the prompt seed.
62
+
63
+ ### 2. Auto-detect mode + announce
64
+
65
+ Apply the table above. State: *"Running in BASIC — say `DETAIL` to switch."* (or vice-versa). Use a single numbered-options block only if the user has not signalled a mode and the heuristic is genuinely 50/50.
66
+
67
+ ### 3. Inspect + Diagnose (Deconstruct)
68
+
69
+ Identify each slot in the rough prompt: intent · entities · output shape · constraints · target AI · tone · audience. List every missing slot. Check for ambiguity, unstated assumptions, and contradictory requirements.
70
+
71
+ ### 4a. BASIC path
72
+
73
+ Fill missing slots with safe defaults (general audience, neutral tone, the named AI or "any modern LLM"). Skip to step 5.
74
+
75
+ ### 4b. DETAIL path
76
+
77
+ Ask **one** question for the highest-leverage missing slot. Order: target AI → output shape → audience → tone → constraints. Stop asking once the prompt would land cleanly. Never batch. Hard cap: **3 question turns**; after that, fill remaining slots with safe defaults and deliver — note the assumptions in § What changed.
78
+
79
+ ### 5. Develop
80
+
81
+ Pick techniques per request type (see § 4-D step 3). Assign role ("You are a senior X…"), layer context, add structure (numbered steps, bullet headers, output format spec, length cap), and inject specificity (concrete numbers, named formats, explicit success criteria — replace "good", "professional", "high-quality" with measurable criteria).
82
+
83
+ ### 6. Deliver
84
+
85
+ Format per § Output format. Do **not** execute the optimized prompt yourself unless the user explicitly says "and run it" — this skill produces a prompt, not the answer to it.
86
+
87
+ ## Output format
88
+
89
+ 1. **Optimized prompt** — fenced code block, ready to copy. Top line names the target AI if known.
90
+ 2. **What changed** — 3-5 bullets, each ≤ 12 words.
91
+ 3. **Techniques applied** *(DETAIL only)* — bullet list naming the techniques (e.g. "few-shot", "chain-of-thought", "role assignment").
92
+ 4. **Pro tip** — one sentence, platform-specific when target AI is known (e.g. "Claude responds well to XML tags"; "ChatGPT honors length caps in the system message").
93
+
94
+ ## Gotcha
95
+
96
+ - The model tends to **execute** the rough prompt instead of optimizing it — when the user pastes "write a marketing email", treat the whole line as the *seed*, not the *task*. Confirm by asking "optimize this prompt, or write the email?" if genuinely ambiguous.
97
+ - The model tends to ask **multiple** clarifying questions in DETAIL mode — Iron Law is one per turn. Pick the highest-leverage missing slot and stop.
98
+ - The model tends to invent platform tips that aren't true — only emit a pro-tip when the technique is well-known for the named AI; otherwise omit the section.
99
+ - The model tends to over-engineer BASIC mode — for a one-line ask, the optimized prompt should still be short. No 800-word system prompts for "help with my resume".
100
+ - Don't drift into German welcome text. The optimized prompt mirrors the user's source-language preference; the skill's own scaffolding stays English (per `language-and-tone` for `.md`).
101
+ - The model tends to **mix languages** in the optimized prompt when the user wrote in German but named an English-speaking target audience — pick one language for the whole optimized prompt body (default: source-language of the rough prompt unless the user explicitly named the target audience's language).
102
+
103
+ ## Do NOT
104
+
105
+ - Do NOT execute the optimized prompt and return its answer unless the user explicitly asks for both.
106
+ - Do NOT ask more than one clarifying question per turn (`ask-when-uncertain` Iron Law).
107
+ - Do NOT add an "I'm Lyra" preamble on every turn — the welcome belongs to the command entry point, not every reply.
108
+ - Do NOT modify project files — this skill is conversational, no file writes, no commits.
@@ -54,7 +54,7 @@ Inspect truth-defining files:
54
54
  - Config files, tests, existing docs
55
55
 
56
56
  Verify: install steps exist, commands work, features are implemented,
57
- dependencies are real.
57
+ deps are real.
58
58
 
59
59
  ### 3. Validate installation and setup
60
60
 
@@ -82,6 +82,29 @@ no silent edits, max two rounds.
82
82
  * No numbered procedures — if you need steps, it is a skill.
83
83
  * Link out to guidelines for deep reference instead of inlining them.
84
84
 
85
+ ### 3b. Path conventions in frontmatter and body — load-bearing
86
+
87
+ Three different surfaces, three different rules. Mixing them up will
88
+ either fail the schema (`python3 scripts/validate_frontmatter.py`) or
89
+ fail `python3 scripts/lint_load_context.py`. Canonical reference:
90
+ [`templates/rule.md`](../../templates/rule.md) § Path conventions and
91
+ [`docs/contracts/load-context-schema.md`](../../../docs/contracts/load-context-schema.md).
92
+
93
+ | Field | Form | Example |
94
+ |---|---|---|
95
+ | `load_context:` / `load_context_eager:` | **Logical name** rooted at the source — never `.agent-src.uncompressed/` | `contexts/execution/verification-mechanics.md` |
96
+ | `triggers[].path_prefix:` | **Literal match pattern** the host evaluates against the file the agent is editing — not rewritten | `.agent-src.uncompressed/skills/` (source-of-truth rules) or `agents/`, `app/`, `.augment/` |
97
+ | Body links to guidelines / contracts | **Verbatim relative form** — `../../docs/...` works in any markdown viewer; rewriter handles depth | `[guideline](../../docs/guidelines/<group>/<name>.md)` |
98
+
99
+ The compress-time rewriter (`scripts/compress.py::_rewrite_paths`) is
100
+ idempotent and depth-aware — it resolves logical names and body links
101
+ to the deployment-correct relative path at compress time, leaving
102
+ `path_prefix:` literally as written. The schema regex
103
+ (`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.py`
104
+ both reject the `.agent-src.uncompressed/` prefix in `load_context:` /
105
+ `load_context_eager:` with an error pointing at the canonical logical
106
+ name.
107
+
85
108
  ### 4. Enforce the size budget
86
109
 
87
110
  Normative source: [`size-enforcement`](../../rules/size-enforcement.md) +
@@ -113,9 +136,19 @@ type: "auto" # or "always"
113
136
  description: "Trigger-shaped sentence — domain + symptoms — soft cap 200 chars"
114
137
  alwaysApply: false # true only if type: always
115
138
  source: package # or project for consumer-local rules
139
+ load_context: # logical names only — `contexts/<area>/<file>.md`
140
+ - contexts/execution/verification-mechanics.md
141
+ triggers: # path_prefix is literal, not rewritten
142
+ - path_prefix: ".agent-src.uncompressed/rules/"
143
+ routes_to:
144
+ - "skill:related-skill"
116
145
  ---
117
146
  ```
118
147
 
148
+ See § 3b above for the load-bearing distinction between `load_context:`
149
+ (logical, rewritten), `triggers[].path_prefix:` (literal, verbatim),
150
+ and body links (relative `../../docs/...`, rewriter handles depth).
151
+
119
152
  ## Output format
120
153
 
121
154
  1. Complete rule file at `.agent-src.uncompressed/rules/{name}.md`
@@ -152,7 +152,7 @@ search_events(organizationSlug='my-org', naturalLanguageQuery='count of database
152
152
 
153
153
  ## Gotcha
154
154
 
155
- - Sentry groups errors by stacktrace — different root causes may appear as the same issue. Check multiple events.
155
+ - Sentry groups errors by stacktrace — different root may appear as the same issue. Check multiple events.
156
156
  - The model tends to analyze only the latest event — check the "Events" tab for patterns across time.
157
157
  - Don't use Sentry MCP tools for simple lookups — use the Sentry web UI link instead (saves tokens).
158
158
 
@@ -258,6 +258,20 @@ Example:
258
258
  * Validation must be concrete
259
259
  * One skill = one job
260
260
 
261
+ ### Cross-references and paths
262
+
263
+ * Body links to guidelines / contracts use the verbatim relative form
264
+ (`../../docs/guidelines/<group>/<name>.md`,
265
+ `../../docs/contracts/<name>.md`). The compress-time rewriter
266
+ resolves them to depth-aware single-up form — do not pre-rewrite in
267
+ source.
268
+ * Skills do **not** declare `load_context:` / `load_context_eager:`;
269
+ those frontmatter keys are rule-only. If a skill needs to point at a
270
+ context, link to it inline (`[context-name](../../contexts/<area>/<file>.md)`).
271
+ * Never write `.agent-src.uncompressed/` in any skill body link or
272
+ example — it ships into `.augment/skills/` and breaks consumer
273
+ resolution. See `rule-writing` § 3b for the canonical reference.
274
+
261
275
  ### Execution metadata (optional)
262
276
 
263
277
  Skills may declare an `execution` frontmatter block (`type`, `handler`,
@@ -106,8 +106,8 @@ Used for workers and schedulers:
106
106
 
107
107
  ### GitHub OIDC IAM role
108
108
 
109
- Each environment has a GitHub IAM role with:
110
- - OIDC trust policy (scoped to repo + environment)
109
+ Each env has a GitHub IAM role with:
110
+ - OIDC trust policy (scoped to repo + env)
111
111
  - Policies for ECR push/pull, ECS deployment, Secrets Manager read, CloudWatch logs
112
112
 
113
113
  ## Output format
@@ -12,7 +12,7 @@ Use this skill when working with Terragrunt configurations (`.hcl` files), manag
12
12
 
13
13
  ## Procedure: Write Terragrunt config
14
14
 
15
- 1. Read the `root.hcl` in the target environment (`environments/pro/root.hcl` or `environments/sta/root.hcl`).
15
+ 1. Read the `root.hcl` in the target env (`environments/pro/root.hcl` or `environments/sta/root.hcl`).
16
16
  2. Check existing `terragrunt.hcl` files in sibling directories for patterns.
17
17
  3. Read the target module's `variables.tf` to understand required inputs.
18
18
 
@@ -36,7 +36,7 @@ environments/
36
36
 
37
37
  ## Root configuration (`root.hcl`)
38
38
 
39
- The root HCL defines shared settings for all modules in an environment:
39
+ The root HCL defines shared settings for all modules in an env:
40
40
 
41
41
  ### Environment variables
42
42
 
@@ -50,9 +50,9 @@ locals {
50
50
  }
51
51
  ```
52
52
 
53
- - `.env.yaml` — committed, shared environment config
53
+ - `.env.yaml` — committed, shared env config
54
54
  - `.env.local.yaml` — gitignored, local overrides (AWS profiles, etc.)
55
- - Real environment variables take precedence over file values.
55
+ - Real env variables take precedence over file values.
56
56
 
57
57
  ### Remote state
58
58
 
@@ -101,7 +101,7 @@ Each module directory contains a `terragrunt.hcl` that:
101
101
  1. **Loads module-specific variables** from a YAML file
102
102
  2. **Includes the root config** for backend and providers
103
103
  3. **Points to the Terraform module source**
104
- 4. **Declares dependencies** on other modules
104
+ 4. **Declares deps** on other modules
105
105
  5. **Passes inputs** by merging dependency outputs with local variables
106
106
 
107
107
  ### Example pattern
@@ -183,19 +183,19 @@ devbox run d # terragrunt destroy
183
183
 
184
184
  ## Output format
185
185
 
186
- 1. Terragrunt HCL files with DRY environment configuration
186
+ 1. Terragrunt HCL files with DRY env configuration
187
187
  2. Dependency graph and remote state references
188
188
 
189
189
  ## Auto-trigger keywords
190
190
 
191
191
  - Terragrunt
192
- - multi-environment
192
+ - multi-env
193
193
  - DRY config
194
194
  - remote state
195
195
 
196
196
  ## Gotcha
197
197
 
198
- - Terragrunt `dependency` blocks create implicit ordering — circular dependencies cause cryptic errors.
198
+ - Terragrunt `dependency` blocks create implicit ordering — circular deps cause cryptic errors.
199
199
  - Don't duplicate Terraform variables in terragrunt.hcl — use `inputs` to pass them through.
200
200
  - The model tends to hardcode values that should come from `include` blocks — use DRY patterns.
201
201
 
@@ -15,7 +15,7 @@ Use this skill when:
15
15
  - Parallel testing needs optimization
16
16
  - Seeders need performance analysis
17
17
  - CI pipeline test jobs need to be faster
18
- - Investigating flaky tests caused by database state
18
+ - Investigating flaky tests caused by DB state
19
19
 
20
20
  ## Procedure: Analyze test performance
21
21
 
@@ -55,7 +55,7 @@ Check these areas in order of typical impact:
55
55
  | **Migration count** | How many CREATE TABLE statements? | High if >20 |
56
56
  | **Schema dump** | Is `database/schema/` used? | High if missing |
57
57
  | **Seeder INSERT method** | Individual `save()` vs bulk insert? | Medium |
58
- | **Truncation** | Per-seeder truncate vs centralized? | Low (but causes correctness issues) |
58
+ | **Truncation** | Per-seeder truncate vs centralized? | Low (but correctness issues) |
59
59
  | **Connection discovery** | Dynamic `getPdo()` probing? | Low |
60
60
  | **Parallel worker setup** | Does each worker re-migrate? | High |
61
61
 
@@ -76,7 +76,7 @@ php artisan schema:dump --database=api_database
76
76
  #### B. Template DB Cloning (high ROI for parallel tests)
77
77
 
78
78
  Instead of each parallel worker running migrate+seed independently:
79
- 1. Prepare ONE template database (migrate + seed)
79
+ 1. Prepare ONE template DB (migrate + seed)
80
80
  2. Clone template for each worker via mysqldump
81
81
 
82
82
  ```bash
@@ -92,7 +92,7 @@ mysqldump template_db | mysql worker_db_test_1
92
92
 
93
93
  #### C. Skip Migrate+Seed Flag (high ROI for local dev)
94
94
 
95
- Add a config flag to skip database setup when DB is already prepared:
95
+ Add a config flag to skip DB setup when DB is already prepared:
96
96
 
97
97
  ```php
98
98
  // config/testing.php
@@ -158,7 +158,7 @@ Replace dynamic `getPdo()` probing with explicit config:
158
158
  ## Gotcha
159
159
 
160
160
  - Don't use RefreshDatabase when DatabaseTransactions suffices — full refresh is 10x slower.
161
- - The model forgets that parallel tests share the database — use unique identifiers in test data.
161
+ - The model forgets that parallel tests share the DB — use unique identifiers in test data.
162
162
  - Seeder optimization has the highest ROI — a 2s seeder running 100 times = 200s wasted.
163
163
  - Don't add indexes to test databases just for test performance — the real fix is better test design.
164
164
 
@@ -6,7 +6,7 @@ source: package
6
6
 
7
7
  # threat-modeling
8
8
 
9
- > You are a reviewer specialized in **pre-implementation threat analysis**.
9
+ > You are a reviewer specialized in **pre-impl threat analysis**.
10
10
  > Your only job is to produce a compact threat model for a planned change —
11
11
  > actors, assets, trust boundaries, abuse cases, and the minimum controls
12
12
  > the implementer must add. You do **not** audit existing code end-to-end,
@@ -186,4 +186,4 @@ run tests**.
186
186
  - [`authz-review`](../authz-review/SKILL.md),
187
187
  [`data-exposure-review`](../data-exposure-review/SKILL.md),
188
188
  [`security`](../security/SKILL.md),
189
- [`security-audit`](../security-audit/SKILL.md) — sibling review / implementation skills.
189
+ [`security-audit`](../security-audit/SKILL.md) — sibling review / impl skills.