@event4u/agent-config 2.24.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 (161) hide show
  1. package/.agent-src/commands/bug-fix.md +1 -0
  2. package/.agent-src/commands/create-pr/description-only.md +39 -11
  3. package/.agent-src/commands/create-pr.md +59 -5
  4. package/.agent-src/commands/feature/roadmap.md +2 -2
  5. package/.agent-src/commands/fix/seeder.md +3 -2
  6. package/.agent-src/commands/memory/add.md +3 -3
  7. package/.agent-src/commands/module/create.md +1 -0
  8. package/.agent-src/commands/module/explore.md +10 -6
  9. package/.agent-src/commands/onboard.md +9 -1
  10. package/.agent-src/commands/optimize/augmentignore.md +52 -20
  11. package/.agent-src/commands/optimize/rtk.md +56 -30
  12. package/.agent-src/commands/package-test.md +86 -10
  13. package/.agent-src/commands/quality-fix.md +49 -27
  14. package/.agent-src/commands/update-form-request-messages.md +2 -1
  15. package/.agent-src/commands/video/from-script.md +5 -5
  16. package/.agent-src/commands/video/storyboard.md +1 -1
  17. package/.agent-src/contexts/augment-infrastructure.md +4 -7
  18. package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -1
  19. package/.agent-src/contexts/contracts/research-schema.md +1 -1
  20. package/.agent-src/contexts/execution/interrupt-examples.md +34 -0
  21. package/.agent-src/contexts/execution/roadmap-process-loop.md +69 -14
  22. package/.agent-src/contexts/skills-and-commands.md +2 -2
  23. package/.agent-src/personas/README.md +3 -2
  24. package/.agent-src/personas/ai-video-technical-director.md +2 -2
  25. package/.agent-src/personas/hollywood-director.md +3 -3
  26. package/.agent-src/profiles/content_creator.yml +5 -0
  27. package/.agent-src/rules/architecture.md +24 -10
  28. package/.agent-src/rules/artifact-drafting-protocol.md +6 -0
  29. package/.agent-src/rules/augment-edit-discipline.md +28 -0
  30. package/.agent-src/rules/augment-source-of-truth.md +2 -2
  31. package/.agent-src/rules/autonomous-execution.md +31 -0
  32. package/.agent-src/rules/context-hygiene.md +1 -1
  33. package/.agent-src/rules/domain-adoption-policy.md +4 -5
  34. package/.agent-src/rules/domain-safety-disclaimer.md +114 -0
  35. package/.agent-src/rules/domain-safety-pii.md +142 -0
  36. package/.agent-src/rules/domain-safety-retention.md +86 -0
  37. package/.agent-src/rules/downstream-changes.md +4 -4
  38. package/.agent-src/rules/framework-neutrality-in-generic-skills.md +130 -0
  39. package/.agent-src/rules/git-history-discipline.md +99 -0
  40. package/.agent-src/rules/media-governance-routing.md +82 -0
  41. package/.agent-src/rules/minimal-safe-diff.md +6 -0
  42. package/.agent-src/rules/no-roadmap-references.md +4 -2
  43. package/.agent-src/rules/persona-governance.md +90 -0
  44. package/.agent-src/rules/provider-lifecycle-discipline.md +75 -0
  45. package/.agent-src/rules/roadmap-ci-steps-policy.md +145 -0
  46. package/.agent-src/rules/roadmap-progress-sync.md +11 -5
  47. package/.agent-src/rules/user-interrupt-priority.md +46 -0
  48. package/.agent-src/rules/verify-before-complete.md +11 -2
  49. package/.agent-src/skills/adversarial-review/SKILL.md +1 -1
  50. package/.agent-src/skills/ai-council/SKILL.md +1 -0
  51. package/.agent-src/skills/api-endpoint/SKILL.md +58 -154
  52. package/.agent-src/skills/api-testing/SKILL.md +11 -0
  53. package/.agent-src/skills/character-consistency/SKILL.md +12 -1
  54. package/.agent-src/skills/code-refactoring/SKILL.md +36 -30
  55. package/.agent-src/skills/code-review/SKILL.md +41 -36
  56. package/.agent-src/skills/context-authoring/SKILL.md +1 -1
  57. package/.agent-src/skills/dashboard-design/SKILL.md +1 -2
  58. package/.agent-src/skills/database/SKILL.md +8 -3
  59. package/.agent-src/skills/dependency-upgrade/SKILL.md +65 -19
  60. package/.agent-src/skills/developer-like-execution/SKILL.md +25 -14
  61. package/.agent-src/skills/eloquent/SKILL.md +1 -1
  62. package/.agent-src/skills/feature-planning/SKILL.md +1 -1
  63. package/.agent-src/skills/file-editor/SKILL.md +45 -19
  64. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  65. package/.agent-src/skills/git-workflow/SKILL.md +135 -2
  66. package/.agent-src/skills/laravel-api-endpoint/SKILL.md +187 -0
  67. package/.agent-src/skills/{dto-creator → laravel-dto}/SKILL.md +5 -4
  68. package/.agent-src/skills/{migration-creator → laravel-migration}/SKILL.md +11 -10
  69. package/.agent-src/skills/laravel-reverb/SKILL.md +3 -3
  70. package/.agent-src/skills/{websocket → laravel-websocket}/SKILL.md +4 -3
  71. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -1
  72. package/.agent-src/skills/merge-conflicts/SKILL.md +49 -17
  73. package/.agent-src/skills/migration-architect/SKILL.md +6 -6
  74. package/.agent-src/skills/module-management/SKILL.md +1 -0
  75. package/.agent-src/skills/motion-choreographer/SKILL.md +12 -0
  76. package/.agent-src/skills/multi-tenancy/SKILL.md +15 -8
  77. package/.agent-src/skills/pest-testing/SKILL.md +18 -0
  78. package/.agent-src/skills/php-debugging/SKILL.md +28 -0
  79. package/.agent-src/skills/php-service/SKILL.md +3 -3
  80. package/.agent-src/skills/pixar-storyteller/SKILL.md +19 -6
  81. package/.agent-src/skills/playwright-testing/SKILL.md +16 -1
  82. package/.agent-src/skills/project-analyzer/SKILL.md +68 -42
  83. package/.agent-src/skills/readme-writing-package/SKILL.md +94 -23
  84. package/.agent-src/skills/roadmap-management/SKILL.md +1 -1
  85. package/.agent-src/skills/roadmap-writing/SKILL.md +10 -0
  86. package/.agent-src/skills/rtk-output-filtering/SKILL.md +23 -8
  87. package/.agent-src/skills/rule-refactor/SKILL.md +145 -0
  88. package/.agent-src/skills/rule-writing/SKILL.md +34 -8
  89. package/.agent-src/skills/scene-expander/SKILL.md +22 -7
  90. package/.agent-src/skills/security/SKILL.md +38 -29
  91. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  92. package/.agent-src/skills/test-driven-development/SKILL.md +4 -4
  93. package/.agent-src/skills/test-performance/SKILL.md +6 -5
  94. package/.agent-src/skills/verify-completion-evidence/SKILL.md +24 -27
  95. package/.agent-src/skills/video-director/SKILL.md +13 -0
  96. package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  97. package/.agent-src/templates/copilot-instructions.md +2 -2
  98. package/.agent-src/templates/roadmaps.md +16 -0
  99. package/.agent-src/templates/rule.md +2 -2
  100. package/.claude-plugin/marketplace.json +6 -4
  101. package/AGENTS.md +1 -1
  102. package/CHANGELOG.md +80 -133
  103. package/README.md +6 -4
  104. package/config/agent-settings.template.yml +26 -0
  105. package/docs/architecture.md +2 -2
  106. package/docs/archive/CHANGELOG-pre-2.25.0.md +191 -0
  107. package/docs/catalog.md +20 -12
  108. package/docs/contracts/file-ownership-matrix.json +588 -90
  109. package/docs/contracts/kernel-membership.md +17 -0
  110. package/docs/contracts/provider-lifecycle.md +122 -0
  111. package/docs/contracts/smoke-contracts.md +8 -8
  112. package/docs/decisions/ADR-011-domain-pack-readiness.md +213 -0
  113. package/docs/decisions/INDEX.md +1 -0
  114. package/docs/getting-started-by-role.md +10 -0
  115. package/docs/getting-started.md +1 -1
  116. package/docs/guidelines/php/api-design.md +1 -1
  117. package/docs/guidelines/php/controllers.md +1 -1
  118. package/docs/guidelines/php/resources.md +1 -1
  119. package/docs/guidelines/php/validations.md +1 -1
  120. package/docs/personas.md +73 -26
  121. package/docs/profiles.md +9 -4
  122. package/package.json +1 -1
  123. package/scripts/_tmp_scan_framework_leakage.py +119 -0
  124. package/scripts/ai-video/adapters/gemini-veo.sh +5 -0
  125. package/scripts/ai-video/adapters/higgsfield.sh +6 -0
  126. package/scripts/ai-video/adapters/kling.sh +5 -0
  127. package/scripts/ai-video/adapters/openai-images.sh +5 -0
  128. package/scripts/ai-video/adapters/sora.sh +6 -0
  129. package/scripts/build_linear_digest.py +0 -1
  130. package/scripts/check_portability.py +6 -0
  131. package/scripts/lint_framework_leakage.py +348 -0
  132. package/scripts/lint_framework_leakage_allowlist.json +476 -0
  133. package/scripts/lint_media_policy_linkage.py +140 -0
  134. package/scripts/lint_persona_governance.py +164 -0
  135. package/scripts/lint_roadmap_ci_steps.py +182 -0
  136. package/scripts/measure_augment_budget.py +6 -0
  137. package/scripts/schemas/command.schema.json +5 -0
  138. package/scripts/schemas/skill.schema.json +5 -0
  139. package/scripts/skill_linter.py +60 -7
  140. package/scripts/smoke/kernel.sh +4 -4
  141. package/scripts/smoke/router.sh +2 -2
  142. package/scripts/smoke/schema.sh +1 -1
  143. package/.agent-src/personas/pixar-storyboard-artist.md +0 -98
  144. package/.agent-src/rules/agent-docs.md +0 -20
  145. package/.agent-src/rules/augment-portability.md +0 -23
  146. package/.agent-src/rules/capture-learnings.md +0 -19
  147. package/.agent-src/rules/docs-sync.md +0 -20
  148. package/.agent-src/rules/domain-safety-disclaimer-consulting.md +0 -52
  149. package/.agent-src/rules/domain-safety-disclaimer-financial.md +0 -54
  150. package/.agent-src/rules/domain-safety-disclaimer-legal.md +0 -49
  151. package/.agent-src/rules/domain-safety-disclaimer-medical.md +0 -56
  152. package/.agent-src/rules/domain-safety-export-redact.md +0 -65
  153. package/.agent-src/rules/domain-safety-logging-pii-floor.md +0 -55
  154. package/.agent-src/rules/domain-safety-pii-finance.md +0 -57
  155. package/.agent-src/rules/domain-safety-pii-marketing.md +0 -60
  156. package/.agent-src/rules/domain-safety-pii-recruiting.md +0 -56
  157. package/.agent-src/rules/domain-safety-pii-support.md +0 -57
  158. package/.agent-src/rules/domain-safety-retention-finance.md +0 -48
  159. package/.agent-src/rules/domain-safety-retention-support.md +0 -55
  160. package/.agent-src/rules/e2e-testing.md +0 -19
  161. package/.agent-src/rules/no-unsolicited-rebase.md +0 -107
@@ -9,6 +9,7 @@ suggestion:
9
9
  eligible: true
10
10
  trigger_description: "fix this bug, patch the issue, resolve this error"
11
11
  trigger_context: "branch name matches fix/* or bug/*"
12
+ framework: laravel
12
13
  ---
13
14
 
14
15
  # bug-fix
@@ -39,17 +39,45 @@ The user may or may not provide a PR URL or branch name.
39
39
  - If no PR found → use `git diff origin/{default}..HEAD --stat` for the branch diff.
40
40
  3. **Never** reuse a PR number from earlier in the conversation.
41
41
 
42
- ### 2. Gather context
43
-
44
- - **Jira ticket**: Extract ticket ID from branch name (e.g. `fix/DEV-4673-description` → `DEV-4673`).
45
- - If found fetch via Jira API (`GET /issue/{ticketId}`).
46
- - If not found ask the user for a ticket number. Proceed without if none.
47
- - **Diff summary**: `git diff origin/{default}..HEAD --stat` for changed files.
48
- - **Commit messages**: `git log origin/{default}..HEAD --format="%s"` for what was done.
49
- - **PR template**: **MUST** read `.github/pull_request_template.md`. This is mandatory, not optional.
50
- - **Read key changed files** to understand what was done — look for migrations, new classes,
51
- modified services, route changes, config changes.
52
- - **Check roadmap/agent docs** that describe the feature intent (if they exist).
42
+ ### 2. Gather context — **one parallel tool-call block**
43
+
44
+ The four primary fetches below are **independent** and **must** be
45
+ dispatched in a single parallel tool-call block, not serially. Serial
46
+ reads here add 3+ round-trips per PR for zero benefit.
47
+
48
+ ```
49
+ parallel:
50
+ 1. Jira API — GET /issue/{ticketId} (skip when no ticket ID)
51
+ 2. git diff — git diff origin/{default}..HEAD --stat
52
+ 3. git log — git log origin/{default}..HEAD --format="%s"
53
+ 4. view PR template — .github/pull_request_template.md
54
+ ```
55
+
56
+ After the block returns:
57
+
58
+ - **Jira ticket**: ticket ID is extracted from the branch name
59
+ (e.g. `fix/DEV-4673-description` → `DEV-4673`) **before** the
60
+ parallel block. No ticket → skip fetch 1 silently; ask the user
61
+ for a number only after the block, and only if needed.
62
+ - **PR template missing** → fall back to the structure in § 4.
63
+ - **Read key changed files** (migrations, new classes, modified
64
+ services, route/config changes) — second parallel block, keyed
65
+ off the diff summary. Group all file reads in one block.
66
+ - **Check roadmap/agent docs** that describe the feature intent
67
+ (if they exist) — fold into the second block.
68
+
69
+ Anti-pattern (do **not** do this):
70
+
71
+ ```
72
+ turn 1: fetch Jira
73
+ turn 2: git diff
74
+ turn 3: git log
75
+ turn 4: view template
76
+ turn 5: view file A
77
+ turn 6: view file B
78
+ ```
79
+
80
+ That's 6 round-trips for what should be 2.
53
81
 
54
82
  ### 3. Build the PR title
55
83
 
@@ -94,6 +94,44 @@ Resolve `"draft"` (first match wins):
94
94
  3. `routine_confirmations: true` → ask `1. draft / 2. ready`.
95
95
  4. Default → `true` (silent draft).
96
96
 
97
+ #### 3a. Tool selection — single-call mandate
98
+
99
+ ```
100
+ POST THE PR WITH ONE github-api CALL.
101
+ NEVER COMPOSE THE BODY THROUGH SHELL, PYTHON, OR TEMP FILES.
102
+ ```
103
+
104
+ Use the `github-api` tool **directly** with the markdown body in the
105
+ JSON `data` field. The body is a regular JSON string — escaping is the
106
+ tool's job, not yours.
107
+
108
+ ```
109
+ github-api
110
+ method: POST
111
+ path: /repos/{owner}/{repo}/pulls
112
+ data: { "title": "...", "body": "<markdown>", "head": "<branch>",
113
+ "base": "main", "draft": <bool> }
114
+ ```
115
+
116
+ **Hard prohibitions** (each one cost 3+ extra tool calls in past runs):
117
+
118
+ - ❌ `python3 -c "import urllib..."` / `python3 - <<PY ... PY` heredocs
119
+ to serialize the body or POST it.
120
+ - ❌ `save-file PR_BODY.md` → read back → `curl -d @PR_BODY.md`.
121
+ - ❌ `gh pr create --body-file …` shelling out when `github-api` is
122
+ available in this surface.
123
+ - ❌ Splitting `title` and `body` into two API calls (create + PATCH).
124
+
125
+ The body may contain any Markdown — code fences, tables, multi-line
126
+ HTML, emoji. Do **not** preprocess, escape, or strip newlines before
127
+ handing it to `github-api`.
128
+
129
+ If the surface genuinely lacks `github-api` (rare), fall back to
130
+ `gh pr create --title "..." --body-file <(echo -n "<body>")` as a
131
+ **single** shell call, never the python-urllib path.
132
+
133
+ #### 3b. Submit
134
+
97
135
  Create the PR with the approved title/body and the resolved `draft`.
98
136
 
99
137
  **Verify after `draft: false`** — the GitHub REST API sometimes ignores
@@ -126,18 +164,21 @@ Run this strip-pass **after PR creation and after every body PATCH**:
126
164
  - `Pull Request opened by [Augment Code]`
127
165
  - `Co-authored by Augment Code`
128
166
  - Any `augmentcode.com` link the user did not ask for
129
- 3. If any pattern is present, remove it together with surrounding
167
+ 3. **No match done.** Skip steps 4–5; the body is already clean.
168
+ This is the common path and **must not** spend a verify-GET.
169
+ 4. Match found → remove the footer(s) together with surrounding
130
170
  `---` separators and trailing whitespace, then:
131
171
  ```
132
172
  PATCH /repos/{owner}/{repo}/pulls/{number}
133
173
  { "body": "<cleaned body>" }
134
174
  ```
135
- 4. Re-fetch the body once more to verify the strip stuck. If a
136
- pattern reappears (server re-injection), repeat steps 2–4 once;
175
+ Re-fetch the body **once** to verify the strip stuck. If a
176
+ pattern reappears (server re-injection), repeat the PATCH once;
137
177
  if it still reappears, surface the issue to the user and stop
138
178
  (do not enter a strip/PATCH loop).
139
- 5. Briefly note in the reply how many footers were removed (or
140
- "no footers found" if clean).
179
+ 5. Briefly note in the reply how many footers were removed (omit
180
+ the line entirely when nothing was stripped — silence is the
181
+ expected path, not "no footers found").
141
182
 
142
183
  #### 4b. Show the PR URL (verbosity-gated)
143
184
 
@@ -154,6 +195,19 @@ Linked ticket + `routine_confirmations: true` → ask `1. Yes / 2. No`.
154
195
  Default (`false`) → skip silently. **Only emit a transition line when
155
196
  an actual Jira API call succeeded** — never announce "skipped".
156
197
 
198
+ #### 4d. Settings short-circuit — single read per run
199
+
200
+ `verbosity.routine_confirmations`, `verbosity.post_action_reports`, and
201
+ `commands.create_pr.preview_description` are read **once** at the top
202
+ of the run and cached for the whole `/create-pr` invocation. Do **not**
203
+ re-read `.agent-settings.yml` in 4b / 4c — both branches resolve from
204
+ the cached values from step 1.
205
+
206
+ When all three resolve to their silent defaults (`false` / `minimal` /
207
+ `false`), steps 4b–4c collapse to the single `→ #N opened: <url>` line
208
+ from 4b and a silent 4c. No extra file reads, no "checking settings…"
209
+ narration, no confirmation prompts.
210
+
157
211
  ### Rules
158
212
 
159
213
  - **Always use the PR template** from `.github/pull_request_template.md`.
@@ -97,7 +97,7 @@ For each roadmap, work through the phases interactively:
97
97
  - [ ] {concrete task with file reference}
98
98
  - [ ] {concrete task}
99
99
  - [ ] Tests: {what to test}
100
- - [ ] Quality: PHPStan + Rector
100
+ - [ ] Quality: project's type-checker + auto-fixer (see `quality-tools` skill — e.g. PHPStan + Rector for PHP, tsc + eslint --fix for TS, mypy + ruff for Python)
101
101
  ```
102
102
 
103
103
  ### 4. Generate the roadmap(s)
@@ -206,7 +206,7 @@ What's next?
206
206
  - **Always link roadmaps back to the feature** and vice versa.
207
207
  - **Use the roadmap template** at `.augment/templates/roadmaps.md`.
208
208
  - **Reference specific files** in roadmap tasks — not vague descriptions.
209
- - **Include quality gates** (PHPStan, Rector, tests) in every phase.
209
+ - **Include quality gates** in every phase — the project's type-checker, auto-fixer, and full test run. Look up the actual commands via `quality-tools` instead of hardcoding stack-specific tool names in the roadmap.
210
210
  - **Research the codebase** to make tasks concrete and realistic.
211
211
 
212
212
  ## See also
@@ -10,6 +10,7 @@ suggestion:
10
10
  eligible: true
11
11
  trigger_description: "the seeder is broken, foreign key errors in seeders"
12
12
  trigger_context: "seeder error output or recent edits in database/seeders/"
13
+ framework: laravel
13
14
  ---
14
15
 
15
16
  # /fix seeder
@@ -64,9 +65,9 @@ where the seeder class is NOT the owner of the data file.
64
65
 
65
66
  ### Known Exceptions
66
67
 
67
- Currently there are **no exceptions**. All circular deps have been resolved.
68
+ Currently there are **no exceptions**. All circular dependencies have been resolved.
68
69
 
69
- **Pattern for resolving circular deps:** Use two-phase seeding. The data file seeds
70
+ **Pattern for resolving circular dependencies:** Use two-phase seeding. The data file seeds
70
71
  records with placeholder values (e.g., empty arrays). The Seeder's `run()` method then updates
71
72
  records with the real values using `getReference()`. Since `run()` is called after all seeders
72
73
  are initialized, the circular dependency is broken.
@@ -137,6 +137,6 @@ Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
137
137
 
138
138
  - [`engineering-memory-data-format`](../../docs/guidelines/agent-infra/engineering-memory-data-format.md)
139
139
  — full schema
140
- - [`capture-learnings`](../rules/capture-learnings.md) — when a
141
- learning is better captured as an `incident-learnings` entry vs a
142
- rule/skill proposal
140
+ - [`skill:learning-to-rule-or-skill`](../skills/learning-to-rule-or-skill/SKILL.md) —
141
+ when a learning is better captured as an `incident-learnings` entry vs
142
+ a rule/skill proposal
@@ -10,6 +10,7 @@ suggestion:
10
10
  eligible: true
11
11
  trigger_description: "create a new module, scaffold a module for X"
12
12
  trigger_context: "prompt mentions a new domain area without an existing module"
13
+ framework: laravel
13
14
  ---
14
15
 
15
16
  # /module create
@@ -3,7 +3,7 @@ name: module:explore
3
3
  tier: 2
4
4
  cluster: module
5
5
  sub: explore
6
- skills: [laravel]
6
+ skills: [laravel, symfony-workflow, php-coder]
7
7
  description: Explore a module — load its structure, docs, and context into the current conversation
8
8
  disable-model-invocation: true
9
9
  suggestion:
@@ -17,17 +17,21 @@ suggestion:
17
17
 
18
18
  ### 1. Check for modules
19
19
 
20
- - **Laravel projects**: Check if `app/Modules/` exists.
21
- - **Composer projects / packages**: Check `./agents/` or `src/` for domain directories.
22
- - If neither exists:
20
+ - **Laravel HMVC**: Check `app/Modules/`.
21
+ - **Symfony / DDD-lite**: Check `src/<Domain>/` or `src/Module/<Domain>/`.
22
+ - **Composer packages / libraries**: Check `./agents/` or `src/` for domain directories.
23
+ - **Node / TS monorepo**: Check `packages/`, `apps/`, or `modules/`.
24
+ - **Python**: Check top-level package dirs under `src/<package>/` or flat `<package>/`.
25
+ - **Go**: Check `internal/<domain>/` or `cmd/<service>/`.
26
+ - If none of the above exists:
23
27
  ```
24
- ⚠️ No module system found (no app/Modules/ directory).
28
+ ⚠️ No module system found (no Modules/, src/<Domain>/, packages/, internal/, or equivalent directory).
25
29
  ```
26
30
  Stop.
27
31
 
28
32
  ### 2. List available modules
29
33
 
30
- Scan `app/Modules/` and show all modules (skip `.module-template` and hidden dirs):
34
+ Scan the detected modules directory (see step 1) and show all modules. Skip `.module-template`, `.example`, and hidden dirs:
31
35
 
32
36
  ```
33
37
  📦 Available modules:
@@ -217,7 +217,15 @@ no network call, file-existence only:
217
217
 
218
218
  ```bash
219
219
  stacks=()
220
- [ -f composer.json ] && stacks+=("php")
220
+ if [ -f composer.json ]; then
221
+ if grep -q '"laravel/framework"' composer.json 2>/dev/null; then
222
+ stacks+=("php-laravel")
223
+ elif grep -q '"symfony/framework-bundle"' composer.json 2>/dev/null; then
224
+ stacks+=("php-symfony")
225
+ else
226
+ stacks+=("php")
227
+ fi
228
+ fi
221
229
  [ -f package.json ] && stacks+=("node")
222
230
  [ -f Cargo.toml ] && stacks+=("rust")
223
231
  [ -f go.mod ] && stacks+=("go")
@@ -31,11 +31,24 @@ and creates/updates `.augmentignore` accordingly. Also identifies irrelevant
31
31
  | `go.mod` exists | `go.sum` |
32
32
  | `.idea/` exists | `.idea/` |
33
33
  | `.vscode/` exists | `.vscode/` |
34
- | `_ide_helper.php` exists | `_ide_helper.php`, `_ide_helper_models.php`, `.phpstorm.meta.php` |
34
+ | `_ide_helper.php` exists (Laravel `barryvdh/laravel-ide-helper`) | `_ide_helper.php`, `_ide_helper_models.php`, `.phpstorm.meta.php` |
35
35
  | `public/build/` exists | `public/build/` |
36
- | `storage/` exists (Laravel) | `storage/logs/`, `storage/framework/cache/`, `storage/framework/sessions/`, `storage/framework/views/` |
36
+ | `storage/` exists AND `artisan` exists (Laravel) | `storage/logs/`, `storage/framework/cache/`, `storage/framework/sessions/`, `storage/framework/views/` |
37
37
  | `docker-compose.yml` exists | `.storage/`, `.composer/` |
38
38
  | `.env` exists | `.env`, `.env.*` |
39
+ | `pyproject.toml` exists | `__pycache__/`, `*.pyc`, `*.pyo`, `.pytest_cache/`, `.mypy_cache/`, `.ruff_cache/`, `.tox/`, `.nox/`, `dist/`, `build/`, `*.egg-info/` |
40
+ | `Pipfile` or `Pipfile.lock` exists | `Pipfile.lock` |
41
+ | `poetry.lock` exists | `poetry.lock` |
42
+ | `Cargo.toml` exists | `target/`, `Cargo.lock` (binaries only — keep for libraries) |
43
+ | `go.mod` exists | `go.sum`, `vendor/` (if `go mod vendor` is used) |
44
+ | `Gemfile` exists | `.bundle/`, `vendor/bundle/`, `Gemfile.lock` (apps only — keep for gems) |
45
+ | `next.config.js` / `next.config.mjs` / `next.config.ts` exists | `.next/`, `out/` |
46
+ | `nuxt.config.ts` / `nuxt.config.js` exists | `.nuxt/`, `.output/` |
47
+ | `vite.config.*` exists | `dist/`, `.vite/` |
48
+ | `astro.config.*` exists | `.astro/`, `dist/` |
49
+ | `svelte.config.*` exists | `.svelte-kit/`, `build/` |
50
+ | `tsconfig.json` exists | `*.tsbuildinfo`, `.tscache/` |
51
+ | `.terraform/` exists | `.terraform/`, `*.tfstate`, `*.tfstate.backup`, `.terraform.lock.hcl` (debatable — keep if collaborating) |
39
52
 
40
53
  ### 2. Find large files polluting the index
41
54
 
@@ -62,7 +75,9 @@ For each large file, decide: is this **source code** (keep) or **generated/fixtu
62
75
  | `**/.docker/**/*.json` | Generated dashboard/config JSONs (Grafana, etc.) |
63
76
  | `.github/workflows/` | CI YAML — large, rarely relevant for code context |
64
77
  | `.github/actions/` | CI actions — same reason |
65
- | `lang/*/validation.php` | Translation files — huge, static, rarely needed |
78
+ | `lang/*/validation.php` (Laravel) | Translation files — huge, static, rarely needed |
79
+ | `locales/**/*.json` (i18next / next-intl / vue-i18n) | Translation bundles — large, mostly static |
80
+ | `messages/**/*.{json,po,properties}` (gettext / Java-style) | Same reason |
66
81
 
67
82
  ### 3. Find duplicate content
68
83
 
@@ -88,21 +103,33 @@ If many exist in specific dirs, add the directory pattern.
88
103
 
89
104
  ### 6. Whitelist own packages
90
105
 
91
- Check `composer.json` for the project's own organization namespace:
92
- - Look at `name` field (e.g., `your-org/project-name` org is `your-org`)
93
- - Look at `repositories` for private packages from the same org
94
- - Add negation pattern: `!vendor/{org}/` to keep own packages in the retrieval index
106
+ Detect the project's own organization namespace from whichever manifest is present.
107
+ Add a negation pattern after the broad ignore so the agent can still index
108
+ first-party packages via `codebase-retrieval`:
95
109
 
96
- This ensures the agent can find code in own packages via `codebase-retrieval`,
97
- while still excluding the thousands of third-party vendor files.
110
+ | Manifest | Where the org lives | Negation pattern |
111
+ |------------------|-------------------------------------------------------------|-------------------------------------------|
112
+ | `composer.json` | `name` (`vendor/pkg`) + `repositories[]` for private repos | `!vendor/{org}/` |
113
+ | `package.json` | `name` (`@scope/pkg`) — derive `@scope` | `!node_modules/@{scope}/` |
114
+ | `pyproject.toml` | `[project].name` + `[tool.poetry].repositories` | `!**/site-packages/{org}*/` (rare — most Python projects don't vendor) |
115
+ | `go.mod` | `module example.com/{org}/{repo}` — derive `example.com/{org}` | `!vendor/example.com/{org}/` (only if `go mod vendor` is used) |
116
+ | `Cargo.toml` | `[package].name` / workspace members | Not applicable — Cargo does not vendor by default; skip |
117
+ | `Gemfile` | Git source URLs pointing to the org | `!vendor/bundle/ruby/*/gems/{org-prefix}*/` |
118
+
119
+ Effect: the broad ignore (`vendor/` / `node_modules/` / `vendor/bundle/`) excludes
120
+ thousands of third-party files; the negation keeps first-party packages indexed.
98
121
 
99
122
  ### 7. Cross-reference with .gitignore
100
123
 
101
124
  Read `.gitignore` — most entries there should also be in `.augmentignore`.
102
- But `.augmentignore` should ALSO include:
103
- - Lock files (`composer.lock`, `package-lock.json`) tracked in Git but useless for retrieval.
104
- - IDE helpers (`_ide_helper.php`) tracked in Git but huge generated files.
105
- - OpenAPI specs — tracked but too large for context.
125
+ But `.augmentignore` should ALSO include the following — these are typically
126
+ tracked in Git (so absent from `.gitignore`) yet useless for the retrieval
127
+ index because they are large, generated, or duplicate first-class source:
128
+
129
+ - Lock files (`composer.lock`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`, `poetry.lock`, `Pipfile.lock`, `Gemfile.lock`, `go.sum`, `Cargo.lock` for binaries) — tracked but useless for code understanding.
130
+ - IDE helpers and codegen artefacts (`_ide_helper.php`, `_ide_helper_models.php`, `.phpstorm.meta.php`, `*.generated.ts`, `*.gen.go`, `__generated__/`) — tracked but huge.
131
+ - API contracts that are generated, not authored (`openapi.{yaml,json}` produced by codegen, `schema.graphql` generated from resolvers, `swagger.json`) — keep the source, drop the generated.
132
+ - Translation bundles when the project ships them in source control (`lang/`, `locales/`, `i18n/` files larger than ~20 KB).
106
133
 
107
134
  ### 8. Analyze irrelevant agent skills
108
135
 
@@ -112,10 +139,16 @@ Each ignored skill saves ~3 lines of system prompt tokens per request.
112
139
  **How:**
113
140
 
114
141
  1. Read `AGENTS.md` — extract tech stack (framework, language, DB, frontend, infra).
115
- 2. Read `composer.json` extract `require` and `require-dev` packages.
116
- 3. Read `package.json` (if exists) — extract frontend dependencies.
117
- 4. List all skills: `ls .augment/skills/`
118
- 5. For each skill, decide: **is this relevant to the detected stack?**
142
+ 2. Read every package manifest present in the project root — extract dependencies:
143
+ - `composer.json` `require`, `require-dev`
144
+ - `package.json` `dependencies`, `devDependencies`, `peerDependencies`
145
+ - `pyproject.toml` `[project].dependencies`, `[tool.poetry.dependencies]`, `[dependency-groups]`
146
+ - `requirements*.txt` / `Pipfile` → package list
147
+ - `go.mod` → `require` blocks
148
+ - `Cargo.toml` → `[dependencies]`, `[dev-dependencies]`, workspace members
149
+ - `Gemfile` → `gem` lines
150
+ 3. List all skills: `ls .augment/skills/`
151
+ 4. For each skill, decide: **is this relevant to the detected stack?**
119
152
 
120
153
  **Decision matrix — ignore when ALL conditions are true:**
121
154
 
@@ -165,7 +198,6 @@ Only consider rules with a `description` frontmatter (auto-loaded by topic match
165
198
 
166
199
  | Rule | Ignore when... |
167
200
  |---|---|
168
- | `e2e-testing.md` | No Playwright / no E2E tests in project |
169
201
  | `lang-files.md` | No `lang/` directory in project |
170
202
 
171
203
  **Conservative approach:**
@@ -262,9 +294,9 @@ echo "Rules ignored: $rules_count"
262
294
  - **Lock files are always ignored** — they're huge and provide zero code insight.
263
295
  - **IDE helpers are always ignored** — generated, 20k+ lines, stale quickly.
264
296
  - **When in doubt, ignore files** — false positive is easy to fix, false negative wastes tokens silently.
265
- - **When in doubt, keep skills** — ignoring a needed skill bad output, keeping an unneeded one just wastes ~3 lines.
297
+ - **When in doubt, keep skills** — ignoring a needed skill causes bad output, keeping an unneeded one just wastes ~3 lines.
266
298
  - **Never ignore always-active rules** — only auto-loaded rules (those with `description` frontmatter) may be ignored.
267
- - **Never ignore meta/agent-system skills** — `agent-docs-writing-writing`, `commands`, `context-create`, `override-management`, `guidelines`, `project-docs`, `roadmap-management`, `naming`, `skill-reviewer`, `file-editor`, `copilot-config`, `copilot-agents-optimization`.
299
+ - **Never ignore meta / agent-system skills** — these are framework-independent and used by every project regardless of stack: `agent-docs-writing`, `agents-md-thin-root`, `check-refs`, `command-routing`, `command-writing`, `compress-memory`, `context-authoring`, `copilot-agents-optimization`, `copilot-config`, `description-assist`, `file-editor`, `guideline-writing`, `learning-to-rule-or-skill`, `lint-skills`, `md-language-check`, `override-management`, `persona-writing`, `project-analyzer`, `project-docs`, `project-health`, `roadmap-writing`, `rule-writing`, `skill-improvement-pipeline`, `skill-management`, `skill-reviewer`, `skill-writing`.
268
300
  - **Restore previously ignored skills** when the stack changes (e.g., Vue added to project → restore `vue` skill).
269
301
 
270
302
  ## Cloud Behavior
@@ -26,21 +26,29 @@ which rtk
26
26
 
27
27
  Scan the project to determine which CLI tools are used:
28
28
 
29
- | Check | Tool detected |
30
- |---|---|
31
- | `composer.json` contains `phpstan` or `larastan` | PHPStan |
32
- | `composer.json` contains `pestphp/pest` or `phpunit/phpunit` | Pest / PHPUnit |
33
- | `composer.json` contains `symplify/easy-coding-standard` | ECS |
34
- | `composer.json` contains `rector/rector` | Rector |
35
- | `composer.json` contains scripts like `quality:phpstan` | Artisan quality commands |
36
- | `package.json` contains `playwright` | Playwright |
37
- | `package.json` contains `vitest` or `jest` | JS test runner |
38
- | `package.json` contains `biome` or `eslint` | JS linter |
39
- | `package.json` contains `typescript` | TypeScript compiler |
40
- | `docker-compose.yml` or `docker-compose.yaml` exists | Docker Compose |
41
- | `Makefile` exists | Make targets |
42
- | `Cargo.toml` exists | Rust / Cargo |
43
- | `go.mod` exists | Go |
29
+ | Detection | Tool |
30
+ |------------------------------------------------------------------------------------------------|----------------------------|
31
+ | `composer.json` contains `phpstan` or `larastan` | PHPStan |
32
+ | `composer.json` contains `pestphp/pest` or `phpunit/phpunit` | Pest / PHPUnit |
33
+ | `composer.json` contains `symplify/easy-coding-standard` | ECS |
34
+ | `composer.json` contains `rector/rector` | Rector |
35
+ | `composer.json` contains scripts like `quality:phpstan` | Artisan / Composer quality wrappers |
36
+ | `package.json` contains `typescript` | tsc |
37
+ | `package.json` contains `eslint` | ESLint |
38
+ | `package.json` contains `prettier` | Prettier |
39
+ | `package.json` contains `@biomejs/biome` | Biome |
40
+ | `package.json` contains `vitest` | Vitest |
41
+ | `package.json` contains `jest` | Jest |
42
+ | `package.json` contains `playwright` / `@playwright/test` | Playwright |
43
+ | `pyproject.toml` / `requirements*.txt` contains `ruff` | Ruff |
44
+ | `pyproject.toml` / `requirements*.txt` contains `mypy` / `pyright` | mypy / Pyright |
45
+ | `pyproject.toml` / `requirements*.txt` contains `pytest` | pytest |
46
+ | `.golangci.yml` exists OR `golangci-lint` in `go.mod` tool dependencies | golangci-lint |
47
+ | `go.mod` exists | `go test` / `go vet` |
48
+ | `Cargo.toml` exists | cargo (build / test / clippy / fmt) |
49
+ | `Gemfile` contains `rubocop` / `standard` | RuboCop / Standard |
50
+ | `docker-compose.yml` or `docker-compose.yaml` exists | Docker Compose |
51
+ | `Makefile` exists | Make targets |
44
52
 
45
53
  ### 3. Read existing filters
46
54
 
@@ -77,16 +85,24 @@ max_lines = <appropriate limit>
77
85
 
78
86
  **Common noise patterns per tool:**
79
87
 
80
- | Tool | Noise to strip |
81
- |---|---|
82
- | PHPStan | Progress bars (`\d+/\d+`), separator lines (`━`), notes |
83
- | Pest/PHPUnit | Empty lines, box-drawing chars (`│`, `⇂`) |
84
- | ECS/Rector | Separator lines, empty lines |
85
- | Composer | Download progress, "Loading composer" |
86
- | Docker Compose | Build context lines, pull progress |
87
- | npm/yarn | Audit warnings, funding messages |
88
- | Playwright | Browser download progress |
89
- | cargo | Compiling lines (keep errors), download progress |
88
+ | Tool | Noise to strip |
89
+ |----------------|------------------------------------------------------------------------------|
90
+ | PHPStan | Progress bars (`\d+/\d+`), separator lines (`━`), notes |
91
+ | Pest / PHPUnit | Empty lines, box-drawing chars (`│`, `⇂`) |
92
+ | ECS / Rector | Separator lines, empty lines |
93
+ | Composer | Download progress, "Loading composer" |
94
+ | tsc | Progress dots, repeated cache-hit notes, watch-mode banners |
95
+ | ESLint | Numeric prefix per line (`123:45`), summary divider, `0 errors / 0 warnings` |
96
+ | Prettier | File-list output when only formatting (`✔ src/foo.ts`) |
97
+ | Vitest / Jest | Spinner frames, watch banner, coverage summary table when not requested |
98
+ | Playwright | Browser launch banner, retry notices, trace-file paths repeated per run |
99
+ | Ruff | Progress (`Checking N files`), repeated file headers in `--watch` |
100
+ | mypy / Pyright | `Daemon running` banners, success summary repeated per file |
101
+ | golangci-lint | Progress (`linters`), divider lines between linters |
102
+ | `go test` | `=== RUN` / `--- PASS` per sub-test (suppress in passing runs) |
103
+ | Cargo | ` Compiling …` lines for dependencies, `Finished release` banner |
104
+ | npm / yarn | Audit warnings, funding messages |
105
+ | Docker Compose | Build-context lines, pull progress |
90
106
 
91
107
  ### 5. Write the filters file
92
108
 
@@ -114,11 +130,21 @@ Read `verbosity.post_action_reports` from `.agent-settings.yml` (default
114
130
  - `full` → multi-line summary table:
115
131
 
116
132
  ```
117
- | # | Filter | Match | Max Lines |
118
- |---|---|---|---|
119
- | 1 | phpstan | phpstan\|quality:phpstan\|vendor/bin/phpstan | 80 |
120
- | 2 | pest | pest\|phpunit\|artisan test | 60 |
121
- | ... | ... | ... | ... |
133
+ | # | Filter | Match | Max |
134
+ |-----|--------------|---------------------------------------------------------------|------|
135
+ | 1 | phpstan | phpstan\|quality:phpstan\|vendor/bin/phpstan | 80 |
136
+ | 2 | pest | pest\|phpunit\|artisan test | 60 |
137
+ | 3 | tsc | tsc\|tsc --noEmit | 60 |
138
+ | 4 | eslint | eslint\|next lint | 50 |
139
+ | 5 | vitest | vitest\|jest | 50 |
140
+ | 6 | playwright | playwright\|@playwright/test | 40 |
141
+ | 7 | ruff | ruff check\|ruff format | 60 |
142
+ | 8 | mypy | mypy\|pyright | 50 |
143
+ | 9 | pytest | pytest\|python -m pytest | 50 |
144
+ | 10 | golangci | golangci-lint\|go vet | 50 |
145
+ | 11 | gotest | go test | 40 |
146
+ | 12 | cargo | cargo build\|cargo check\|cargo clippy\|cargo test\|cargo fmt | 50 |
147
+ | ... | ... | (add per project as the toolchain grows) | ... |
122
148
  ```
123
149
 
124
150
  ### Rules