@event4u/agent-config 2.25.0 → 2.26.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 (122) hide show
  1. package/.agent-src/commands/bug-fix.md +1 -0
  2. package/.agent-src/commands/feature/roadmap.md +2 -2
  3. package/.agent-src/commands/fix/seeder.md +3 -2
  4. package/.agent-src/commands/memory/add.md +3 -3
  5. package/.agent-src/commands/module/create.md +1 -0
  6. package/.agent-src/commands/module/explore.md +10 -6
  7. package/.agent-src/commands/onboard.md +9 -1
  8. package/.agent-src/commands/optimize/augmentignore.md +52 -20
  9. package/.agent-src/commands/optimize/rtk.md +56 -30
  10. package/.agent-src/commands/package-test.md +86 -10
  11. package/.agent-src/commands/quality-fix.md +49 -27
  12. package/.agent-src/commands/update-form-request-messages.md +2 -1
  13. package/.agent-src/contexts/augment-infrastructure.md +4 -7
  14. package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -1
  15. package/.agent-src/contexts/contracts/research-schema.md +1 -1
  16. package/.agent-src/contexts/execution/interrupt-examples.md +34 -0
  17. package/.agent-src/contexts/skills-and-commands.md +2 -2
  18. package/.agent-src/rules/architecture.md +24 -10
  19. package/.agent-src/rules/artifact-drafting-protocol.md +6 -0
  20. package/.agent-src/rules/augment-edit-discipline.md +28 -0
  21. package/.agent-src/rules/augment-source-of-truth.md +2 -2
  22. package/.agent-src/rules/autonomous-execution.md +31 -0
  23. package/.agent-src/rules/context-hygiene.md +1 -1
  24. package/.agent-src/rules/domain-adoption-policy.md +4 -5
  25. package/.agent-src/rules/domain-safety-disclaimer.md +114 -0
  26. package/.agent-src/rules/domain-safety-pii.md +142 -0
  27. package/.agent-src/rules/domain-safety-retention.md +86 -0
  28. package/.agent-src/rules/downstream-changes.md +4 -4
  29. package/.agent-src/rules/framework-neutrality-in-generic-skills.md +130 -0
  30. package/.agent-src/rules/git-history-discipline.md +99 -0
  31. package/.agent-src/rules/minimal-safe-diff.md +6 -0
  32. package/.agent-src/rules/no-roadmap-references.md +4 -2
  33. package/.agent-src/rules/user-interrupt-priority.md +46 -0
  34. package/.agent-src/rules/verify-before-complete.md +11 -2
  35. package/.agent-src/skills/adversarial-review/SKILL.md +1 -1
  36. package/.agent-src/skills/ai-council/SKILL.md +1 -0
  37. package/.agent-src/skills/api-endpoint/SKILL.md +58 -154
  38. package/.agent-src/skills/api-testing/SKILL.md +11 -0
  39. package/.agent-src/skills/code-refactoring/SKILL.md +36 -30
  40. package/.agent-src/skills/code-review/SKILL.md +41 -36
  41. package/.agent-src/skills/context-authoring/SKILL.md +1 -1
  42. package/.agent-src/skills/dashboard-design/SKILL.md +1 -2
  43. package/.agent-src/skills/database/SKILL.md +8 -3
  44. package/.agent-src/skills/dependency-upgrade/SKILL.md +65 -19
  45. package/.agent-src/skills/developer-like-execution/SKILL.md +25 -14
  46. package/.agent-src/skills/eloquent/SKILL.md +1 -1
  47. package/.agent-src/skills/feature-planning/SKILL.md +1 -1
  48. package/.agent-src/skills/file-editor/SKILL.md +45 -19
  49. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  50. package/.agent-src/skills/git-workflow/SKILL.md +4 -4
  51. package/.agent-src/skills/laravel-api-endpoint/SKILL.md +187 -0
  52. package/.agent-src/skills/{dto-creator → laravel-dto}/SKILL.md +5 -4
  53. package/.agent-src/skills/{migration-creator → laravel-migration}/SKILL.md +11 -10
  54. package/.agent-src/skills/laravel-reverb/SKILL.md +3 -3
  55. package/.agent-src/skills/{websocket → laravel-websocket}/SKILL.md +4 -3
  56. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -1
  57. package/.agent-src/skills/merge-conflicts/SKILL.md +49 -17
  58. package/.agent-src/skills/migration-architect/SKILL.md +6 -6
  59. package/.agent-src/skills/module-management/SKILL.md +1 -0
  60. package/.agent-src/skills/multi-tenancy/SKILL.md +15 -8
  61. package/.agent-src/skills/pest-testing/SKILL.md +18 -0
  62. package/.agent-src/skills/php-debugging/SKILL.md +28 -0
  63. package/.agent-src/skills/php-service/SKILL.md +3 -3
  64. package/.agent-src/skills/playwright-testing/SKILL.md +16 -1
  65. package/.agent-src/skills/project-analyzer/SKILL.md +68 -42
  66. package/.agent-src/skills/readme-writing-package/SKILL.md +94 -23
  67. package/.agent-src/skills/roadmap-management/SKILL.md +1 -1
  68. package/.agent-src/skills/rtk-output-filtering/SKILL.md +23 -8
  69. package/.agent-src/skills/rule-refactor/SKILL.md +145 -0
  70. package/.agent-src/skills/rule-writing/SKILL.md +34 -8
  71. package/.agent-src/skills/security/SKILL.md +38 -29
  72. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  73. package/.agent-src/skills/test-driven-development/SKILL.md +4 -4
  74. package/.agent-src/skills/test-performance/SKILL.md +6 -5
  75. package/.agent-src/skills/verify-completion-evidence/SKILL.md +24 -27
  76. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  77. package/.agent-src/templates/copilot-instructions.md +2 -2
  78. package/.agent-src/templates/rule.md +2 -2
  79. package/.claude-plugin/marketplace.json +6 -4
  80. package/AGENTS.md +1 -1
  81. package/CHANGELOG.md +74 -170
  82. package/README.md +2 -2
  83. package/docs/architecture.md +2 -2
  84. package/docs/archive/CHANGELOG-pre-2.25.0.md +191 -0
  85. package/docs/catalog.md +17 -12
  86. package/docs/contracts/file-ownership-matrix.json +473 -43
  87. package/docs/contracts/kernel-membership.md +17 -0
  88. package/docs/contracts/smoke-contracts.md +8 -8
  89. package/docs/getting-started.md +1 -1
  90. package/docs/guidelines/php/api-design.md +1 -1
  91. package/docs/guidelines/php/controllers.md +1 -1
  92. package/docs/guidelines/php/resources.md +1 -1
  93. package/docs/guidelines/php/validations.md +1 -1
  94. package/package.json +1 -1
  95. package/scripts/build_linear_digest.py +0 -1
  96. package/scripts/lint_framework_leakage.py +348 -0
  97. package/scripts/lint_framework_leakage_allowlist.json +476 -0
  98. package/scripts/measure_augment_budget.py +6 -0
  99. package/scripts/schemas/command.schema.json +5 -0
  100. package/scripts/schemas/skill.schema.json +5 -0
  101. package/scripts/skill_linter.py +60 -7
  102. package/scripts/smoke/kernel.sh +4 -4
  103. package/scripts/smoke/router.sh +2 -2
  104. package/.agent-src/rules/agent-docs.md +0 -20
  105. package/.agent-src/rules/augment-portability.md +0 -23
  106. package/.agent-src/rules/capture-learnings.md +0 -19
  107. package/.agent-src/rules/docs-sync.md +0 -20
  108. package/.agent-src/rules/domain-safety-disclaimer-consulting.md +0 -52
  109. package/.agent-src/rules/domain-safety-disclaimer-financial.md +0 -54
  110. package/.agent-src/rules/domain-safety-disclaimer-legal.md +0 -49
  111. package/.agent-src/rules/domain-safety-disclaimer-medical.md +0 -56
  112. package/.agent-src/rules/domain-safety-export-redact.md +0 -65
  113. package/.agent-src/rules/domain-safety-logging-pii-floor.md +0 -55
  114. package/.agent-src/rules/domain-safety-pii-finance.md +0 -57
  115. package/.agent-src/rules/domain-safety-pii-marketing.md +0 -60
  116. package/.agent-src/rules/domain-safety-pii-recruiting.md +0 -56
  117. package/.agent-src/rules/domain-safety-pii-support.md +0 -57
  118. package/.agent-src/rules/domain-safety-retention-finance.md +0 -48
  119. package/.agent-src/rules/domain-safety-retention-support.md +0 -55
  120. package/.agent-src/rules/e2e-testing.md +0 -19
  121. package/.agent-src/rules/no-unsolicited-rebase.md +0 -107
  122. package/.agent-src/rules/post-push-rewrite-discipline.md +0 -70
@@ -0,0 +1,476 @@
1
+ {
2
+ "version": 1,
3
+ "_doc": "Each entry: { file: relative path from repo root, lines: [int,...] | \"*\" for whole file, reason: short justification }. Use sparingly \u2014 first ask whether the file should be neutralized instead.",
4
+ "entries": [
5
+ {
6
+ "file": ".agent-src.uncompressed/skills/using-git-worktrees/SKILL.md",
7
+ "lines": [
8
+ 130,
9
+ 131,
10
+ 132,
11
+ 152
12
+ ],
13
+ "reason": "Multi-stack package-manager comparison table"
14
+ },
15
+ {
16
+ "file": ".agent-src.uncompressed/skills/refine-prompt/SKILL.md",
17
+ "lines": [
18
+ 88,
19
+ 90,
20
+ 92,
21
+ 137,
22
+ 180,
23
+ 269
24
+ ],
25
+ "reason": "Project-detection enumeration listing all supported stacks"
26
+ },
27
+ {
28
+ "file": ".agent-src.uncompressed/commands/onboard.md",
29
+ "lines": [
30
+ 220,
31
+ 221,
32
+ 224
33
+ ],
34
+ "reason": "Stack-detection enumeration in onboard flow"
35
+ },
36
+ {
37
+ "file": ".agent-src.uncompressed/commands/analyze-reference-repo.md",
38
+ "lines": [
39
+ 62
40
+ ],
41
+ "reason": "Manifest-file enumeration across ecosystems"
42
+ },
43
+ {
44
+ "file": ".agent-src.uncompressed/commands/optimize/augmentignore.md",
45
+ "lines": "*",
46
+ "reason": "Per-stack augmentignore rules \u2014 by definition stack-aware"
47
+ },
48
+ {
49
+ "file": ".agent-src.uncompressed/commands/optimize/rtk.md",
50
+ "lines": "*",
51
+ "reason": "Per-tool rtk filter detection \u2014 by definition tool-aware"
52
+ },
53
+ {
54
+ "file": ".agent-src.uncompressed/rules/framework-neutrality-in-generic-skills.md",
55
+ "lines": "*",
56
+ "reason": "The neutrality rule itself enumerates the forbidden tokens to forbid them"
57
+ },
58
+ {
59
+ "file": ".agent-src.uncompressed/rules/roadmap-ci-steps-policy.md",
60
+ "lines": [
61
+ 4,
62
+ 11,
63
+ 12,
64
+ 66
65
+ ],
66
+ "reason": "Roadmap CI policy explicitly enumerates forbidden commands and trigger keywords"
67
+ },
68
+ {
69
+ "file": ".agent-src.uncompressed/rules/architecture.md",
70
+ "lines": [
71
+ 19,
72
+ 20,
73
+ 26,
74
+ 27,
75
+ 62
76
+ ],
77
+ "reason": "Stack-routing pointers and cross-stack enumeration of validation/handler primitives"
78
+ },
79
+ {
80
+ "file": ".agent-src.uncompressed/skills/api-endpoint/SKILL.md",
81
+ "lines": [
82
+ 41,
83
+ 58
84
+ ],
85
+ "reason": "Cross-stack validation primitive enumeration and pointer to laravel-api-endpoint carve-out"
86
+ },
87
+ {
88
+ "file": ".agent-src.uncompressed/skills/code-review/SKILL.md",
89
+ "lines": [
90
+ 40,
91
+ 41,
92
+ 42,
93
+ 49,
94
+ 62,
95
+ 63,
96
+ 74,
97
+ 83,
98
+ 85,
99
+ 87,
100
+ 219
101
+ ],
102
+ "reason": "Cross-stack code-review checklist enumerates handler shape, validation, authz, ORM, escaping per framework"
103
+ },
104
+ {
105
+ "file": ".agent-src.uncompressed/skills/security/SKILL.md",
106
+ "lines": [
107
+ 16,
108
+ 23,
109
+ 27,
110
+ 28,
111
+ 37,
112
+ 41,
113
+ 48,
114
+ 58,
115
+ 76
116
+ ],
117
+ "reason": "Cross-stack security review enumerates auth primitives (Policies, voters, guards, middleware) and config paths"
118
+ },
119
+ {
120
+ "file": ".agent-src.uncompressed/skills/verify-completion-evidence/SKILL.md",
121
+ "lines": [
122
+ 53,
123
+ 54,
124
+ 55,
125
+ 100,
126
+ 177
127
+ ],
128
+ "reason": "Evidence-mapping table enumerates the type-checker / linter / refactor tool per stack including PHPStan, Rector, ECS"
129
+ },
130
+ {
131
+ "file": ".agent-src.uncompressed/commands/tests/execute.md",
132
+ "lines": "*",
133
+ "reason": "Multi-stack test runner dispatch (Pest/PHPUnit/Jest/pytest/cargo-test) \u2014 enumerates per-stack commands by design"
134
+ },
135
+ {
136
+ "file": ".agent-src.uncompressed/commands/tests/create.md",
137
+ "lines": "*",
138
+ "reason": "Multi-stack test framework selection \u2014 enumerates Pest/PHPUnit/Jest/pytest options by design"
139
+ },
140
+ {
141
+ "file": ".agent-src.uncompressed/commands/module/explore.md",
142
+ "lines": "*",
143
+ "reason": "Multi-stack module detection (Laravel HMVC / Symfony bundles / DDD-lite) \u2014 enumerates per-stack patterns by design"
144
+ },
145
+ {
146
+ "file": ".agent-src.uncompressed/commands/package-test.md",
147
+ "lines": "*",
148
+ "reason": "Multi-stack package linking (composer/npm/pip/cargo/go) \u2014 declared in skills frontmatter"
149
+ },
150
+ {
151
+ "file": ".agent-src.uncompressed/commands/package-reset.md",
152
+ "lines": "*",
153
+ "reason": "Multi-stack package reset (composer/npm) \u2014 declared in skills frontmatter"
154
+ },
155
+ {
156
+ "file": ".agent-src.uncompressed/skills/dependency-upgrade/SKILL.md",
157
+ "lines": "*",
158
+ "reason": "Multi-stack dependency upgrade examples (composer/npm/pip) \u2014 declared stack-agnostic in description"
159
+ },
160
+ {
161
+ "file": ".agent-src.uncompressed/skills/fe-design/SKILL.md",
162
+ "lines": "*",
163
+ "reason": "Cross-stack frontend design enumerates Blade/Livewire/Flux/React-shadcn for stack-routing dispatch"
164
+ },
165
+ {
166
+ "file": ".agent-src.uncompressed/skills/code-refactoring/SKILL.md",
167
+ "lines": "*",
168
+ "reason": "Multi-stack refactoring examples (Laravel app/Modules + Nx + mono-repo) per stack-detection"
169
+ },
170
+ {
171
+ "file": ".agent-src.uncompressed/skills/database/SKILL.md",
172
+ "lines": "*",
173
+ "reason": "Cross-stack ORM enumeration (Eloquent/Doctrine) with carve-out pointers"
174
+ },
175
+ {
176
+ "file": ".agent-src.uncompressed/commands/project-analyze.md",
177
+ "lines": "*",
178
+ "reason": "Stack-detection templates show per-framework default outputs (Laravel/Standalone PHP/etc.) \u2014 multi-stack by design"
179
+ },
180
+ {
181
+ "file": ".agent-src.uncompressed/commands/commit.md",
182
+ "lines": "*",
183
+ "reason": "Example commit block uses Laravel paths from a reference project; the procedure itself is stack-agnostic"
184
+ },
185
+ {
186
+ "file": ".agent-src.uncompressed/skills/test-driven-development/SKILL.md",
187
+ "lines": "*",
188
+ "reason": "Multi-stack TDD examples \u2014 PHP/Pest and TypeScript/Jest sections both present"
189
+ },
190
+ {
191
+ "file": ".agent-src.uncompressed/skills/context-authoring/SKILL.md",
192
+ "lines": "*",
193
+ "reason": "Cross-stack context examples enumerate per-stack auth/ORM primitives"
194
+ },
195
+ {
196
+ "file": ".agent-src.uncompressed/skills/migration-architect/SKILL.md",
197
+ "lines": "*",
198
+ "reason": "Cross-stack migration architecture enumerates laravel-migration/Doctrine/Alembic/Prisma carve-outs"
199
+ },
200
+ {
201
+ "file": ".agent-src.uncompressed/skills/api-design/SKILL.md",
202
+ "lines": "*",
203
+ "reason": "Cross-stack API design enumerates per-framework validation/handler primitives"
204
+ },
205
+ {
206
+ "file": ".agent-src.uncompressed/skills/error-handling-patterns/SKILL.md",
207
+ "lines": "*",
208
+ "reason": "Cross-stack error handling enumerates exceptions/Result/Maybe per language"
209
+ },
210
+ {
211
+ "file": ".agent-src.uncompressed/skills/security-audit/SKILL.md",
212
+ "lines": "*",
213
+ "reason": "Cross-stack security audit enumerates per-stack auth/ORM/escaping primitives"
214
+ },
215
+ {
216
+ "file": ".agent-src.uncompressed/skills/skill-writing/SKILL.md",
217
+ "lines": "*",
218
+ "reason": "Skill-writing references PHPStan/Pest as examples drawn from this package's own dogfooded skills"
219
+ },
220
+ {
221
+ "file": ".agent-src.uncompressed/skills/systematic-debugging/SKILL.md",
222
+ "lines": "*",
223
+ "reason": "Debugging examples drawn from PHP project; the procedure is stack-agnostic (reproduce \u2192 isolate \u2192 hypothesize \u2192 verify)"
224
+ },
225
+ {
226
+ "file": ".agent-src.uncompressed/skills/testing-anti-patterns/SKILL.md",
227
+ "lines": "*",
228
+ "reason": "Anti-pattern examples drawn from Pest/PHPUnit; the iron laws apply to all test frameworks"
229
+ },
230
+ {
231
+ "file": ".agent-src.uncompressed/skills/testing-anti-patterns/process-anti-patterns.md",
232
+ "lines": "*",
233
+ "reason": "Anti-pattern examples drawn from Pest; the rules apply to all test frameworks"
234
+ },
235
+ {
236
+ "file": ".agent-src.uncompressed/skills/api-testing/SKILL.md",
237
+ "lines": "*",
238
+ "reason": "Cross-stack API testing enumerates Pest/PHPUnit/Jest/pytest"
239
+ },
240
+ {
241
+ "file": ".agent-src.uncompressed/skills/agent-docs-writing/SKILL.md",
242
+ "lines": "*",
243
+ "reason": "Agent-docs examples reference PHPStan/Pest as this package's dogfooded toolchain"
244
+ },
245
+ {
246
+ "file": ".agent-src.uncompressed/skills/bug-analyzer/SKILL.md",
247
+ "lines": "*",
248
+ "reason": "Bug-analysis examples drawn from PHP project; the procedure is stack-agnostic"
249
+ },
250
+ {
251
+ "file": ".agent-src.uncompressed/skills/defense-in-depth/SKILL.md",
252
+ "lines": "*",
253
+ "reason": "Defense-in-depth examples enumerate per-stack validation primitives"
254
+ },
255
+ {
256
+ "file": ".agent-src.uncompressed/skills/existing-ui-audit/SKILL.md",
257
+ "lines": "*",
258
+ "reason": "UI-audit references Blade/Livewire/Flux/React-shadcn as stack-routing options"
259
+ },
260
+ {
261
+ "file": ".agent-src.uncompressed/skills/form-handler/SKILL.md",
262
+ "lines": "*",
263
+ "reason": "Form-handling examples enumerate per-framework validation/submission primitives"
264
+ },
265
+ {
266
+ "file": ".agent-src.uncompressed/skills/learning-to-rule-or-skill/SKILL.md",
267
+ "lines": "*",
268
+ "reason": "Examples drawn from PHP/Pest as this package's dogfooded toolchain"
269
+ },
270
+ {
271
+ "file": ".agent-src.uncompressed/skills/markitdown/SKILL.md",
272
+ "lines": "*",
273
+ "reason": "Markitdown skill references Composer/pip as install paths"
274
+ },
275
+ {
276
+ "file": ".agent-src.uncompressed/skills/mcp/SKILL.md",
277
+ "lines": "*",
278
+ "reason": "MCP examples enumerate Python/Node/PHP server implementations"
279
+ },
280
+ {
281
+ "file": ".agent-src.uncompressed/skills/mcp-builder/SKILL.md",
282
+ "lines": "*",
283
+ "reason": "MCP-builder enumerates Python FastMCP and Node TypeScript SDK with examples per language"
284
+ },
285
+ {
286
+ "file": ".agent-src.uncompressed/skills/readme-writing/SKILL.md",
287
+ "lines": "*",
288
+ "reason": "README examples reference composer.json/package.json/pyproject.toml per ecosystem"
289
+ },
290
+ {
291
+ "file": ".agent-src.uncompressed/skills/ui-component-architect/SKILL.md",
292
+ "lines": "*",
293
+ "reason": "Cross-stack UI component architecture enumerates Blade/Livewire/React"
294
+ },
295
+ {
296
+ "file": ".agent-src.uncompressed/commands/bug-investigate.md",
297
+ "lines": "*",
298
+ "reason": "Bug-investigate examples reference PHPStan/Pest from package's dogfooded toolchain"
299
+ },
300
+ {
301
+ "file": ".agent-src.uncompressed/commands/commit/in-chunks.md",
302
+ "lines": "*",
303
+ "reason": "Commit-in-chunks examples drawn from Laravel reference project; procedure is stack-agnostic"
304
+ },
305
+ {
306
+ "file": ".agent-src.uncompressed/commands/compress.md",
307
+ "lines": "*",
308
+ "reason": "Compress command references this package's own .agent-src.uncompressed Laravel-tooling examples"
309
+ },
310
+ {
311
+ "file": ".agent-src.uncompressed/commands/council/default.md",
312
+ "lines": "*",
313
+ "reason": "AI Council examples reference PHP/Laravel from package's dogfooded toolchain"
314
+ },
315
+ {
316
+ "file": ".agent-src.uncompressed/commands/fix/pr-bot-comments.md",
317
+ "lines": "*",
318
+ "reason": "PR-comment fix examples reference Rector/PHPStan from package's dogfooded toolchain"
319
+ },
320
+ {
321
+ "file": ".agent-src.uncompressed/commands/fix/pr-developer-comments.md",
322
+ "lines": "*",
323
+ "reason": "PR developer-comment fix examples reference PHP review patterns from package's dogfooded toolchain"
324
+ },
325
+ {
326
+ "file": ".agent-src.uncompressed/commands/quality-fix.md",
327
+ "lines": "*",
328
+ "reason": "Quality-fix dispatches per stack (PHPStan/ECS/Rector for PHP, tsc/biome for JS) \u2014 multi-stack by design"
329
+ },
330
+ {
331
+ "file": ".agent-src.uncompressed/commands/roadmap/create.md",
332
+ "lines": "*",
333
+ "reason": "Roadmap creation examples drawn from this package's own Laravel-tooling work"
334
+ },
335
+ {
336
+ "file": ".agent-src.uncompressed/commands/rule-compliance-audit.md",
337
+ "lines": "*",
338
+ "reason": "Rule-audit examples reference this package's own rule corpus including PHP/Laravel rules"
339
+ },
340
+ {
341
+ "file": ".agent-src.uncompressed/skills/blast-radius-analyzer/SKILL.md",
342
+ "lines": "*",
343
+ "reason": "Blast-radius examples drawn from Laravel reference project; procedure is stack-agnostic"
344
+ },
345
+ {
346
+ "file": ".agent-src.uncompressed/skills/data-flow-mapper/SKILL.md",
347
+ "lines": "*",
348
+ "reason": "Data-flow examples drawn from Laravel reference project; procedure is stack-agnostic"
349
+ },
350
+ {
351
+ "file": ".agent-src.uncompressed/skills/file-editor/SKILL.md",
352
+ "lines": "*",
353
+ "reason": "File-editor references PHP filename heuristic for IDE detection"
354
+ },
355
+ {
356
+ "file": ".agent-src.uncompressed/skills/launch-readiness/SKILL.md",
357
+ "lines": "*",
358
+ "reason": "Launch-readiness checklist references Laravel Pulse/Horizon as monitoring options"
359
+ },
360
+ {
361
+ "file": ".agent-src.uncompressed/skills/logging-monitoring/SKILL.md",
362
+ "lines": "*",
363
+ "reason": "Logging-monitoring enumerates per-stack log shippers including Laravel channels"
364
+ },
365
+ {
366
+ "file": ".agent-src.uncompressed/skills/memory-consolidation/SKILL.md",
367
+ "lines": "*",
368
+ "reason": "Memory examples drawn from PHP/Laravel reference project; procedure is stack-agnostic"
369
+ },
370
+ {
371
+ "file": ".agent-src.uncompressed/skills/performance/SKILL.md",
372
+ "lines": "*",
373
+ "reason": "Performance examples drawn from Laravel reference project; principles are stack-agnostic"
374
+ },
375
+ {
376
+ "file": ".agent-src.uncompressed/skills/po-discovery/SKILL.md",
377
+ "lines": "*",
378
+ "reason": "PO-discovery examples drawn from Laravel reference project; procedure is stack-agnostic"
379
+ },
380
+ {
381
+ "file": ".agent-src.uncompressed/skills/project-analyzer/SKILL.md",
382
+ "lines": "*",
383
+ "reason": "Project-analyzer skill enumerates vendor/ and node_modules/ as third-party paths to exclude"
384
+ },
385
+ {
386
+ "file": ".agent-src.uncompressed/skills/readme-reviewer/SKILL.md",
387
+ "lines": "*",
388
+ "reason": "README reviewer enumerates composer.json/package.json/pyproject.toml per ecosystem"
389
+ },
390
+ {
391
+ "file": ".agent-src.uncompressed/skills/repomix-packer/SKILL.md",
392
+ "lines": "*",
393
+ "reason": "Repomix examples drawn from package's own Laravel toolchain"
394
+ },
395
+ {
396
+ "file": ".agent-src.uncompressed/skills/roadmap-management/SKILL.md",
397
+ "lines": "*",
398
+ "reason": "Roadmap examples drawn from this package's own framework-neutrality work"
399
+ },
400
+ {
401
+ "file": ".agent-src.uncompressed/skills/rule-writing/SKILL.md",
402
+ "lines": "*",
403
+ "reason": "Rule-writing examples reference this package's own dogfooded PHP/Laravel rules"
404
+ },
405
+ {
406
+ "file": ".agent-src.uncompressed/skills/sentry-integration/SKILL.md",
407
+ "lines": "*",
408
+ "reason": "Sentry integration examples drawn from Laravel reference project"
409
+ },
410
+ {
411
+ "file": ".agent-src.uncompressed/skills/skill-reviewer/SKILL.md",
412
+ "lines": "*",
413
+ "reason": "Skill-reviewer references this package's own dogfooded PHP/Laravel skills"
414
+ },
415
+ {
416
+ "file": ".agent-src.uncompressed/skills/upstream-contribute/SKILL.md",
417
+ "lines": "*",
418
+ "reason": "Upstream-contribute examples drawn from this package's own Laravel-tooling contributions"
419
+ },
420
+ {
421
+ "file": ".agent-src.uncompressed/commands/agents/init.md",
422
+ "lines": "*",
423
+ "reason": "Agents-init references PHP/Laravel as one detected stack"
424
+ },
425
+ {
426
+ "file": ".agent-src.uncompressed/commands/challenge-me/vision.md",
427
+ "lines": "*",
428
+ "reason": "Challenge-me examples drawn from PHP/Laravel reference project"
429
+ },
430
+ {
431
+ "file": ".agent-src.uncompressed/commands/challenge-me/with-docs.md",
432
+ "lines": "*",
433
+ "reason": "Challenge-me examples drawn from PHP/Laravel reference project"
434
+ },
435
+ {
436
+ "file": ".agent-src.uncompressed/commands/feature/dev.md",
437
+ "lines": "*",
438
+ "reason": "Feature-dev examples drawn from Laravel reference project; procedure is stack-agnostic"
439
+ },
440
+ {
441
+ "file": ".agent-src.uncompressed/commands/jira-ticket.md",
442
+ "lines": "*",
443
+ "reason": "Jira-ticket examples drawn from Laravel reference project; procedure is stack-agnostic"
444
+ },
445
+ {
446
+ "file": ".agent-src.uncompressed/commands/override/create.md",
447
+ "lines": "*",
448
+ "reason": "Override-create examples drawn from this package's own Laravel-rule overrides"
449
+ },
450
+ {
451
+ "file": ".agent-src.uncompressed/commands/project-health.md",
452
+ "lines": "*",
453
+ "reason": "Project-health examples drawn from Laravel reference project; check itself is stack-agnostic"
454
+ },
455
+ {
456
+ "file": ".agent-src.uncompressed/commands/sync-agent-settings.md",
457
+ "lines": "*",
458
+ "reason": "Sync-agent-settings references PHP/Laravel from package's dogfooded toolchain"
459
+ },
460
+ {
461
+ "file": ".agent-src.uncompressed/commands/sync-gitignore.md",
462
+ "lines": "*",
463
+ "reason": "Sync-gitignore enumerates per-stack ignore patterns including PHP/Composer"
464
+ },
465
+ {
466
+ "file": ".agent-src.uncompressed/commands/sync-gitignore/fix.md",
467
+ "lines": "*",
468
+ "reason": "Sync-gitignore-fix enumerates per-stack ignore patterns"
469
+ },
470
+ {
471
+ "file": ".agent-src.uncompressed/commands/upstream-contribute.md",
472
+ "lines": "*",
473
+ "reason": "Upstream-contribute examples drawn from this package's own Laravel-tooling contributions"
474
+ }
475
+ ]
476
+ }
@@ -42,6 +42,12 @@ RULES_DIR = REPO_ROOT / ".augment" / "rules"
42
42
  TREND_FILE = REPO_ROOT / "agents" / ".augment-budget-history.jsonl"
43
43
 
44
44
  # Augment workspace-guidelines ceiling — empirical 2026-05-08.
45
+ # TOTAL_CAP is the hard ceiling Augment itself enforces. FAIL_THRESHOLD is the
46
+ # soft safety-margin gate (0.95). When a branch breaches it, the discipline
47
+ # is: DO NOT loosen the threshold — invoke the `rule-refactor` skill, which
48
+ # audits all rules for merge / delete / move-to-context / promote-to-skill
49
+ # candidates. Threshold-lift is explicitly rejected as a tool-shape anti-
50
+ # pattern (see the validation-budget rule). Only an ADR may grow the cap.
45
51
  TOTAL_CAP = 49_512
46
52
  WARN_THRESHOLD = 0.85
47
53
  FAIL_THRESHOLD = 0.95
@@ -67,6 +67,11 @@
67
67
  "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
68
68
  "description": "Semver release in which this command became a shim (e.g. '1.15.0')."
69
69
  },
70
+ "framework": {
71
+ "type": "string",
72
+ "pattern": "^[a-z][a-z0-9-]*$",
73
+ "description": "Framework carve-out marker. Set on commands that are 100% coupled to one stack (e.g. `framework: laravel` on update-form-request-messages). Generic, multi-stack commands MUST omit this key. Routed by .agent-src.uncompressed/rules/framework-neutrality-in-generic-skills.md (Tier 2)."
74
+ },
70
75
  "council_depth": {
71
76
  "type": "string",
72
77
  "enum": ["deep"],
@@ -35,6 +35,11 @@
35
35
  "type": "string",
36
36
  "pattern": "^[a-z][a-z0-9-]*$"
37
37
  },
38
+ "framework": {
39
+ "type": "string",
40
+ "pattern": "^[a-z][a-z0-9-]*$",
41
+ "description": "Framework carve-out marker. Set on skills that are 100% coupled to one stack (e.g. `framework: laravel` on laravel-* skills). Generic, multi-stack skills MUST omit this key. Routed by .agent-src.uncompressed/rules/framework-neutrality-in-generic-skills.md (Tier 2)."
42
+ },
38
43
  "personas": {
39
44
  "type": "array",
40
45
  "items": {
@@ -472,6 +472,21 @@ def _command_delegation_signal(text: str, frontmatter: Optional[str]) -> bool:
472
472
  return False
473
473
 
474
474
 
475
+ def _strip_markdown_for_check(text: str) -> str:
476
+ """Strip fenced code, inline code spans, and markdown links so heuristic
477
+ regex matches operate on prose only.
478
+
479
+ Used by rule-body heuristics whose targets (e.g. ``procedural_rule``)
480
+ must not flip on legitimate skill pointers like ``[git-workflow](…)``
481
+ or ``` `skill:symfony-workflow` ```. Frontmatter is handled by the
482
+ caller via ``text.split("---", 2)[-1]``.
483
+ """
484
+ text = re.sub(r"```[^\n]*\n.*?```", "", text, flags=re.DOTALL)
485
+ text = re.sub(r"`[^`\n]+`", "", text)
486
+ text = re.sub(r"\[[^\]]*\]\([^)]*\)", "", text)
487
+ return text
488
+
489
+
475
490
  def _iron_law_blocks(text: str) -> int:
476
491
  """Count fenced blocks that look like verbatim Iron-Law imperatives.
477
492
 
@@ -575,10 +590,36 @@ def has_validation_step(procedure_block: str) -> bool:
575
590
  return any(signal in lowered for signal in good_signals)
576
591
 
577
592
 
593
+ _INSPECT_VERB_PATTERN = re.compile(
594
+ r"\b(?:"
595
+ # Direct inspection
596
+ r"inspect|examine|audit|survey"
597
+ # Read / look
598
+ r"|read|look\s+at"
599
+ # Check (word-boundary — matches "check that", "check current", "check what")
600
+ r"|check"
601
+ # Review (broad — matches "review existing", "review the failures")
602
+ r"|review"
603
+ # Comprehension / orientation
604
+ r"|understand|identify|analyze|analyse"
605
+ # Discovery
606
+ r"|detect|gather|discover"
607
+ r")\b",
608
+ re.IGNORECASE,
609
+ )
610
+
611
+
578
612
  def has_inspect_step(procedure_block: str) -> bool:
579
- lowered = procedure_block.lower()
580
- inspect_signals = ["inspect", "check current", "review existing", "identify", "analyze"]
581
- return any(signal in lowered for signal in inspect_signals)
613
+ """Return True if the procedure block opens with an inspect / read step.
614
+
615
+ Corpus-driven verb list (see docs/contracts/linter-structural-model.md):
616
+ the first ordered step in a skill procedure should orient the agent in
617
+ the live system — read existing code, examine current state, detect
618
+ stack — before mutating anything. Regex uses word boundaries to avoid
619
+ substring matches inside unrelated words (e.g. ``read`` inside
620
+ ``already``).
621
+ """
622
+ return bool(_INSPECT_VERB_PATTERN.search(procedure_block))
582
623
 
583
624
 
584
625
  def find_vague_validation(text: str) -> list[str]:
@@ -678,8 +719,9 @@ def lint_skill(path: Path, text: str) -> LintResult:
678
719
  if skill_name and "-" not in skill_name and len(skill_name) >= 3:
679
720
  # Single word without qualifier — likely too generic
680
721
  ALLOWED_BARE_NOUNS = {"database", "devcontainer", "docker", "eloquent", "flux", "forecasting",
681
- "grafana", "laravel", "livewire", "mcp", "openapi", "performance",
682
- "security", "terraform", "terragrunt", "traefik", "websocket"}
722
+ "grafana", "laravel", "livewire", "markitdown", "mcp", "openapi",
723
+ "performance", "security", "terraform", "terragrunt", "traefik",
724
+ "websocket"}
683
725
  if skill_name.lower() not in ALLOWED_BARE_NOUNS:
684
726
  issues.append(Issue("warning", "bare_noun_name",
685
727
  f"Bare-noun skill name `{skill_name}` — consider adding a qualifier (e.g., `{skill_name}-management`)"))
@@ -1504,9 +1546,20 @@ def lint_rule(path: Path, text: str) -> LintResult:
1504
1546
  if bad_sign in text:
1505
1547
  issues.append(Issue("error", "rule_looks_like_skill", f"Rule contains skill-like section: {bad_sign}"))
1506
1548
 
1507
- # Exclude frontmatter from procedural check (frontmatter may contain "type")
1549
+ # Procedural-rule heuristic: a rule "looks procedural" only when its own
1550
+ # prose AND its own structure both signal a procedure. We:
1551
+ # 1. Exclude frontmatter (may contain "type", path strings, etc.).
1552
+ # 2. Strip code spans, fenced blocks, and markdown links — so legitimate
1553
+ # pointers to procedural skills (e.g. `skill:git-workflow`,
1554
+ # [symfony-workflow](…)) do not flip the keyword count.
1555
+ # 3. Require ≥ 2 keyword occurrences in stripped prose AND ≥ 3 ordered
1556
+ # steps AND no Iron-Law block — that combination distinguishes a
1557
+ # mis-classified procedure from a rule that merely references one.
1508
1558
  body = text.split("---", 2)[-1] if frontmatter else text
1509
- if re.search(r"\b(procedure|workflow)\b", body, re.IGNORECASE):
1559
+ stripped_body = _strip_markdown_for_check(body)
1560
+ kw_count = len(re.findall(r"\b(procedure|workflow)\b", stripped_body, re.IGNORECASE))
1561
+ ordered_steps = len(re.findall(r"^\s*\d+\.\s+", body, re.MULTILINE))
1562
+ if kw_count >= 2 and ordered_steps >= 3 and _iron_law_blocks(text) == 0:
1510
1563
  issues.append(Issue("warning", "procedural_rule", "Rule looks procedural; consider a skill instead"))
1511
1564
 
1512
1565
  return LintResult(
@@ -2,9 +2,9 @@
2
2
  # scripts/smoke/kernel.sh — kernel-tier smoke (step-11 Phase 3 Step 2).
3
3
  #
4
4
  # Asserts:
5
- # 1. router.json lists exactly 9 kernel rules.
5
+ # 1. router.json lists exactly 10 kernel rules.
6
6
  # 2. Every kernel rule file exists at .agent-src/rules/<id>.md.
7
- # 3. 8 of 9 carry at least one Iron-Law fenced block.
7
+ # 3. 9 of 10 carry at least one Iron-Law fenced block.
8
8
  # agent-authority is the dispatch index, exempt from the fence
9
9
  # requirement (docs/contracts/smoke-contracts.md § 3.1).
10
10
  # 4. Kernel-bucket char budget breaches ≤ EXPECTED_BREACHES.
@@ -16,8 +16,8 @@
16
16
 
17
17
  set -euo pipefail
18
18
 
19
- EXPECTED_KERNEL_COUNT=9
20
- EXPECTED_FENCE_CARRIERS=8
19
+ EXPECTED_KERNEL_COUNT=10
20
+ EXPECTED_FENCE_CARRIERS=9
21
21
  EXPECTED_BREACHES=2
22
22
  EXEMPT_FROM_FENCE="agent-authority"
23
23
 
@@ -2,7 +2,7 @@
2
2
  # scripts/smoke/router.sh — router-tier smoke (step-11 Phase 3 Step 3).
3
3
  #
4
4
  # Asserts router.json structural integrity:
5
- # 1. 75 ids = 9 kernel + 24 tier_1 + 42 tier_2 (locked count).
5
+ # 1. 68 ids = 10 kernel + 23 tier_1 + 35 tier_2 (locked count).
6
6
  # 2. Every id resolves to .agent-src/rules/<id>.md (0 broken).
7
7
  # 3. Every routes_to ref resolves through its prefix
8
8
  # (skill:, command:, guideline:, contract:); missing-contract
@@ -15,7 +15,7 @@
15
15
 
16
16
  set -euo pipefail
17
17
 
18
- EXPECTED_TOTAL_IDS=75
18
+ EXPECTED_TOTAL_IDS=68
19
19
  EXPECTED_MISSING_CONTRACTS=2
20
20
 
21
21
  quiet="${SMOKE_QUIET:-0}"
@@ -1,20 +0,0 @@
1
- ---
2
- type: "auto"
3
- tier: "2a"
4
- description: "Reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md"
5
- source: package
6
- triggers:
7
- - path_prefix: "agents/"
8
- - path_prefix: ".github/copilot-instructions"
9
- - keyword: "AGENTS.md"
10
- - keyword: "roadmap"
11
- routes_to:
12
- - "skill:agent-docs-writing"
13
- ---
14
-
15
- # Agent Docs
16
-
17
- **Iron Law.** Read agent docs (`AGENTS.md`, `agents/`, module `agents/`) before work; update them after structural changes.
18
-
19
- Body migrated to `skill:agent-docs-writing` (per P4 of `road-to-kernel-and-router.md`).
20
- Trigger-set above activates this routing under the `balanced` and `full` profiles.