@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.
- package/.agent-src/commands/bug-fix.md +1 -0
- package/.agent-src/commands/create-pr/description-only.md +39 -11
- package/.agent-src/commands/create-pr.md +59 -5
- package/.agent-src/commands/feature/roadmap.md +2 -2
- package/.agent-src/commands/fix/seeder.md +3 -2
- package/.agent-src/commands/memory/add.md +3 -3
- package/.agent-src/commands/module/create.md +1 -0
- package/.agent-src/commands/module/explore.md +10 -6
- package/.agent-src/commands/onboard.md +9 -1
- package/.agent-src/commands/optimize/augmentignore.md +52 -20
- package/.agent-src/commands/optimize/rtk.md +56 -30
- package/.agent-src/commands/package-test.md +86 -10
- package/.agent-src/commands/quality-fix.md +49 -27
- package/.agent-src/commands/update-form-request-messages.md +2 -1
- package/.agent-src/commands/video/from-script.md +5 -5
- package/.agent-src/commands/video/storyboard.md +1 -1
- package/.agent-src/contexts/augment-infrastructure.md +4 -7
- package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -1
- package/.agent-src/contexts/contracts/research-schema.md +1 -1
- package/.agent-src/contexts/execution/interrupt-examples.md +34 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +69 -14
- package/.agent-src/contexts/skills-and-commands.md +2 -2
- package/.agent-src/personas/README.md +3 -2
- package/.agent-src/personas/ai-video-technical-director.md +2 -2
- package/.agent-src/personas/hollywood-director.md +3 -3
- package/.agent-src/profiles/content_creator.yml +5 -0
- package/.agent-src/rules/architecture.md +24 -10
- package/.agent-src/rules/artifact-drafting-protocol.md +6 -0
- package/.agent-src/rules/augment-edit-discipline.md +28 -0
- package/.agent-src/rules/augment-source-of-truth.md +2 -2
- package/.agent-src/rules/autonomous-execution.md +31 -0
- package/.agent-src/rules/context-hygiene.md +1 -1
- package/.agent-src/rules/domain-adoption-policy.md +4 -5
- package/.agent-src/rules/domain-safety-disclaimer.md +114 -0
- package/.agent-src/rules/domain-safety-pii.md +142 -0
- package/.agent-src/rules/domain-safety-retention.md +86 -0
- package/.agent-src/rules/downstream-changes.md +4 -4
- package/.agent-src/rules/framework-neutrality-in-generic-skills.md +130 -0
- package/.agent-src/rules/git-history-discipline.md +99 -0
- package/.agent-src/rules/media-governance-routing.md +82 -0
- package/.agent-src/rules/minimal-safe-diff.md +6 -0
- package/.agent-src/rules/no-roadmap-references.md +4 -2
- package/.agent-src/rules/persona-governance.md +90 -0
- package/.agent-src/rules/provider-lifecycle-discipline.md +75 -0
- package/.agent-src/rules/roadmap-ci-steps-policy.md +145 -0
- package/.agent-src/rules/roadmap-progress-sync.md +11 -5
- package/.agent-src/rules/user-interrupt-priority.md +46 -0
- package/.agent-src/rules/verify-before-complete.md +11 -2
- package/.agent-src/skills/adversarial-review/SKILL.md +1 -1
- package/.agent-src/skills/ai-council/SKILL.md +1 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +58 -154
- package/.agent-src/skills/api-testing/SKILL.md +11 -0
- package/.agent-src/skills/character-consistency/SKILL.md +12 -1
- package/.agent-src/skills/code-refactoring/SKILL.md +36 -30
- package/.agent-src/skills/code-review/SKILL.md +41 -36
- package/.agent-src/skills/context-authoring/SKILL.md +1 -1
- package/.agent-src/skills/dashboard-design/SKILL.md +1 -2
- package/.agent-src/skills/database/SKILL.md +8 -3
- package/.agent-src/skills/dependency-upgrade/SKILL.md +65 -19
- package/.agent-src/skills/developer-like-execution/SKILL.md +25 -14
- package/.agent-src/skills/eloquent/SKILL.md +1 -1
- package/.agent-src/skills/feature-planning/SKILL.md +1 -1
- package/.agent-src/skills/file-editor/SKILL.md +45 -19
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
- package/.agent-src/skills/git-workflow/SKILL.md +135 -2
- package/.agent-src/skills/laravel-api-endpoint/SKILL.md +187 -0
- package/.agent-src/skills/{dto-creator → laravel-dto}/SKILL.md +5 -4
- package/.agent-src/skills/{migration-creator → laravel-migration}/SKILL.md +11 -10
- package/.agent-src/skills/laravel-reverb/SKILL.md +3 -3
- package/.agent-src/skills/{websocket → laravel-websocket}/SKILL.md +4 -3
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +1 -1
- package/.agent-src/skills/merge-conflicts/SKILL.md +49 -17
- package/.agent-src/skills/migration-architect/SKILL.md +6 -6
- package/.agent-src/skills/module-management/SKILL.md +1 -0
- package/.agent-src/skills/motion-choreographer/SKILL.md +12 -0
- package/.agent-src/skills/multi-tenancy/SKILL.md +15 -8
- package/.agent-src/skills/pest-testing/SKILL.md +18 -0
- package/.agent-src/skills/php-debugging/SKILL.md +28 -0
- package/.agent-src/skills/php-service/SKILL.md +3 -3
- package/.agent-src/skills/pixar-storyteller/SKILL.md +19 -6
- package/.agent-src/skills/playwright-testing/SKILL.md +16 -1
- package/.agent-src/skills/project-analyzer/SKILL.md +68 -42
- package/.agent-src/skills/readme-writing-package/SKILL.md +94 -23
- package/.agent-src/skills/roadmap-management/SKILL.md +1 -1
- package/.agent-src/skills/roadmap-writing/SKILL.md +10 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +23 -8
- package/.agent-src/skills/rule-refactor/SKILL.md +145 -0
- package/.agent-src/skills/rule-writing/SKILL.md +34 -8
- package/.agent-src/skills/scene-expander/SKILL.md +22 -7
- package/.agent-src/skills/security/SKILL.md +38 -29
- package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/test-driven-development/SKILL.md +4 -4
- package/.agent-src/skills/test-performance/SKILL.md +6 -5
- package/.agent-src/skills/verify-completion-evidence/SKILL.md +24 -27
- package/.agent-src/skills/video-director/SKILL.md +13 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.agent-src/templates/copilot-instructions.md +2 -2
- package/.agent-src/templates/roadmaps.md +16 -0
- package/.agent-src/templates/rule.md +2 -2
- package/.claude-plugin/marketplace.json +6 -4
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +80 -133
- package/README.md +6 -4
- package/config/agent-settings.template.yml +26 -0
- package/docs/architecture.md +2 -2
- package/docs/archive/CHANGELOG-pre-2.25.0.md +191 -0
- package/docs/catalog.md +20 -12
- package/docs/contracts/file-ownership-matrix.json +588 -90
- package/docs/contracts/kernel-membership.md +17 -0
- package/docs/contracts/provider-lifecycle.md +122 -0
- package/docs/contracts/smoke-contracts.md +8 -8
- package/docs/decisions/ADR-011-domain-pack-readiness.md +213 -0
- package/docs/decisions/INDEX.md +1 -0
- package/docs/getting-started-by-role.md +10 -0
- package/docs/getting-started.md +1 -1
- package/docs/guidelines/php/api-design.md +1 -1
- package/docs/guidelines/php/controllers.md +1 -1
- package/docs/guidelines/php/resources.md +1 -1
- package/docs/guidelines/php/validations.md +1 -1
- package/docs/personas.md +73 -26
- package/docs/profiles.md +9 -4
- package/package.json +1 -1
- package/scripts/_tmp_scan_framework_leakage.py +119 -0
- package/scripts/ai-video/adapters/gemini-veo.sh +5 -0
- package/scripts/ai-video/adapters/higgsfield.sh +6 -0
- package/scripts/ai-video/adapters/kling.sh +5 -0
- package/scripts/ai-video/adapters/openai-images.sh +5 -0
- package/scripts/ai-video/adapters/sora.sh +6 -0
- package/scripts/build_linear_digest.py +0 -1
- package/scripts/check_portability.py +6 -0
- package/scripts/lint_framework_leakage.py +348 -0
- package/scripts/lint_framework_leakage_allowlist.json +476 -0
- package/scripts/lint_media_policy_linkage.py +140 -0
- package/scripts/lint_persona_governance.py +164 -0
- package/scripts/lint_roadmap_ci_steps.py +182 -0
- package/scripts/measure_augment_budget.py +6 -0
- package/scripts/schemas/command.schema.json +5 -0
- package/scripts/schemas/skill.schema.json +5 -0
- package/scripts/skill_linter.py +60 -7
- package/scripts/smoke/kernel.sh +4 -4
- package/scripts/smoke/router.sh +2 -2
- package/scripts/smoke/schema.sh +1 -1
- package/.agent-src/personas/pixar-storyboard-artist.md +0 -98
- package/.agent-src/rules/agent-docs.md +0 -20
- package/.agent-src/rules/augment-portability.md +0 -23
- package/.agent-src/rules/capture-learnings.md +0 -19
- package/.agent-src/rules/docs-sync.md +0 -20
- package/.agent-src/rules/domain-safety-disclaimer-consulting.md +0 -52
- package/.agent-src/rules/domain-safety-disclaimer-financial.md +0 -54
- package/.agent-src/rules/domain-safety-disclaimer-legal.md +0 -49
- package/.agent-src/rules/domain-safety-disclaimer-medical.md +0 -56
- package/.agent-src/rules/domain-safety-export-redact.md +0 -65
- package/.agent-src/rules/domain-safety-logging-pii-floor.md +0 -55
- package/.agent-src/rules/domain-safety-pii-finance.md +0 -57
- package/.agent-src/rules/domain-safety-pii-marketing.md +0 -60
- package/.agent-src/rules/domain-safety-pii-recruiting.md +0 -56
- package/.agent-src/rules/domain-safety-pii-support.md +0 -57
- package/.agent-src/rules/domain-safety-retention-finance.md +0 -48
- package/.agent-src/rules/domain-safety-retention-support.md +0 -55
- package/.agent-src/rules/e2e-testing.md +0 -19
- package/.agent-src/rules/no-unsolicited-rebase.md +0 -107
|
@@ -3,17 +3,22 @@ name: multi-tenancy
|
|
|
3
3
|
description: "Use when working with the multi-tenant architecture — customer DB switching, FQDN routing, tenant isolation, or cross-tenant operations."
|
|
4
4
|
source: package
|
|
5
5
|
domain: engineering
|
|
6
|
+
framework: laravel
|
|
6
7
|
---
|
|
7
8
|
|
|
9
|
+
<!-- Framework scope: Laravel only. Uses Eloquent model conventions,
|
|
10
|
+
Laravel Context, and Artisan traits — concepts not portable across
|
|
11
|
+
frameworks. Other stacks need a stack-native multi-tenancy skill. -->
|
|
12
|
+
|
|
8
13
|
# multi-tenancy
|
|
9
14
|
|
|
10
15
|
## When to use
|
|
11
16
|
|
|
12
|
-
Use this skill when working with tenant-specific data, customer database connections, or any code that touches the dual-
|
|
17
|
+
Use this skill when working with tenant-specific data, customer database connections, or any code that touches the dual-database architecture.
|
|
13
18
|
|
|
14
19
|
|
|
15
20
|
Do NOT use when:
|
|
16
|
-
- Single-
|
|
21
|
+
- Single-database applications
|
|
17
22
|
- Frontend-only changes
|
|
18
23
|
|
|
19
24
|
## Procedure: Work with multi-tenancy
|
|
@@ -33,7 +38,7 @@ Request → Identify Tenant (JWT / subdomain / API key)
|
|
|
33
38
|
→ All tenant queries use tenant connection
|
|
34
39
|
```
|
|
35
40
|
|
|
36
|
-
### Dual-
|
|
41
|
+
### Dual-database pattern
|
|
37
42
|
|
|
38
43
|
| Connection type | Purpose | Scope |
|
|
39
44
|
|---|---|---|
|
|
@@ -49,12 +54,14 @@ Projects may have additional connections for admin operations, provisioning, or
|
|
|
49
54
|
|
|
50
55
|
## Core tenant switching service
|
|
51
56
|
|
|
57
|
+
**Scope**: Laravel-specific (see frontmatter). For non-Laravel multi-tenant systems, the concepts below still apply but the implementation differs — consult the framework's connection / session / DI conventions.
|
|
58
|
+
|
|
52
59
|
Search the codebase for the service responsible for tenant switching. Typical responsibilities:
|
|
53
60
|
|
|
54
61
|
1. Store tenant context (e.g., in Laravel Context or a singleton)
|
|
55
62
|
2. Load tenant configuration
|
|
56
63
|
3. Set monitoring context (tenant ID, name, domain)
|
|
57
|
-
4. Reconfigure the
|
|
64
|
+
4. Reconfigure the database connection with tenant credentials
|
|
58
65
|
5. Bind tenant-specific services via the container
|
|
59
66
|
|
|
60
67
|
## Model conventions
|
|
@@ -90,7 +97,7 @@ Check the project for the actual connection names and namespace conventions.
|
|
|
90
97
|
## Testing with tenants
|
|
91
98
|
|
|
92
99
|
- Tests use dedicated tenant seeders (check `agents/docs/` for seeder conventions).
|
|
93
|
-
- The testing
|
|
100
|
+
- The testing database may consolidate multiple connections into a single DB for simplicity.
|
|
94
101
|
- Use `RefreshDatabase` or manual seeding — never assume a specific tenant state from previous tests.
|
|
95
102
|
|
|
96
103
|
## Common pitfalls
|
|
@@ -112,19 +119,19 @@ Check the project for the actual connection names and namespace conventions.
|
|
|
112
119
|
|
|
113
120
|
- multi-tenant
|
|
114
121
|
- tenant isolation
|
|
115
|
-
- customer
|
|
122
|
+
- customer database
|
|
116
123
|
- FQDN routing
|
|
117
124
|
|
|
118
125
|
## Gotcha
|
|
119
126
|
|
|
120
|
-
- Always verify which
|
|
127
|
+
- Always verify which database connection is active before running queries — cross-tenant data leaks are critical bugs.
|
|
121
128
|
- The model forgets to switch back to the main connection after tenant operations.
|
|
122
129
|
- Queue jobs serialize the connection state — ensure the tenant context is restored when the job runs.
|
|
123
130
|
- Don't use `DB::connection()` directly — use the tenant switching helpers.
|
|
124
131
|
|
|
125
132
|
## Do NOT
|
|
126
133
|
|
|
127
|
-
- Do NOT hardcode
|
|
134
|
+
- Do NOT hardcode database names — always use connection names.
|
|
128
135
|
- Do NOT assume `customer_database` is available in service providers or early boot.
|
|
129
136
|
- Do NOT access tenant data in global middleware that runs before customer identification.
|
|
130
137
|
- Do NOT store tenant DB credentials in code — they come from the `customer_databases` table.
|
|
@@ -283,6 +283,24 @@ When generating Pest tests:
|
|
|
283
283
|
- keep tests readable, isolated, and maintainable
|
|
284
284
|
|
|
285
285
|
|
|
286
|
+
### Filter Pest output
|
|
287
|
+
|
|
288
|
+
When triaging a verbose run, narrow the output with `--filter` (Pest)
|
|
289
|
+
plus targeted `grep`/`rg` instead of re-running the whole suite or
|
|
290
|
+
echoing all logs:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
# Only run failing tests in one file
|
|
294
|
+
vendor/bin/pest tests/Feature/InvoiceTest.php --filter='creates invoice'
|
|
295
|
+
|
|
296
|
+
# Scan the test log for failures only
|
|
297
|
+
rg --color=never '^FAIL|Tests:' storage/logs/pest.log
|
|
298
|
+
|
|
299
|
+
# Inspect JSON output from data-driven tests
|
|
300
|
+
vendor/bin/pest --log-junit=pest.xml && rg '<failure' pest.xml
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
|
|
286
304
|
## Output format
|
|
287
305
|
|
|
288
306
|
1. Pest test file with descriptive test names and clear assertions
|
|
@@ -130,6 +130,20 @@ make console-xdebug # Enter Xdebug container
|
|
|
130
130
|
php artisan your:command # Xdebug connects to IDE automatically
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
+
### Verifying CLI fixes
|
|
134
|
+
|
|
135
|
+
After a fix, verify the command without re-attaching the debugger:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Run the command, capture exit code + command output
|
|
139
|
+
php artisan your:command; echo "exit code: $?"
|
|
140
|
+
|
|
141
|
+
# Pest CLI assertion — expectsOutput / artisan test
|
|
142
|
+
vendor/bin/pest --filter='ProcessInvoicesCommand'
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Assert on the **exit code** and **command output**; never trust "looks fine" from breakpoint inspection alone.
|
|
146
|
+
|
|
133
147
|
## Troubleshooting
|
|
134
148
|
|
|
135
149
|
| Problem | Solution |
|
|
@@ -151,6 +165,20 @@ make rebuild-php-xdebug # Rebuild Xdebug container only
|
|
|
151
165
|
make rebuild-php-all # Rebuild both PHP containers
|
|
152
166
|
```
|
|
153
167
|
|
|
168
|
+
### Filter noisy debug output
|
|
169
|
+
|
|
170
|
+
`tail -f /tmp/xdebug.log` and `docker logs` produce far too much
|
|
171
|
+
data to read line-by-line. Filter with `rg`/`grep` for the relevant
|
|
172
|
+
event:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# Only connection / breakpoint events
|
|
176
|
+
rg --color=never 'Connect|Step|breakpoint' /tmp/xdebug.log
|
|
177
|
+
|
|
178
|
+
# Only this request's frames in the laravel log
|
|
179
|
+
docker compose logs php-xdebug | rg --color=never "$REQUEST_ID"
|
|
180
|
+
```
|
|
181
|
+
|
|
154
182
|
## What NOT to do
|
|
155
183
|
|
|
156
184
|
- Do not leave Xdebug enabled in production containers.
|
|
@@ -13,7 +13,7 @@ Use when creating a new service, extracting business logic from a controller, or
|
|
|
13
13
|
|
|
14
14
|
Do NOT use when:
|
|
15
15
|
- Controllers (use `laravel` skill)
|
|
16
|
-
- DTOs (use `dto
|
|
16
|
+
- DTOs (use `laravel-dto` skill for Laravel/PHP; framework-native skill for other stacks)
|
|
17
17
|
- Models (use `eloquent` skill)
|
|
18
18
|
|
|
19
19
|
## When to create a service
|
|
@@ -39,7 +39,7 @@ Do NOT use when:
|
|
|
39
39
|
1. Location: `app/Services/{Domain}/` or `app/Modules/{Module}/App/Services/`.
|
|
40
40
|
2. `declare(strict_types=1)`, proper namespace.
|
|
41
41
|
3. Constructor inject dependencies (repositories, other services).
|
|
42
|
-
4. Max 4 constructor
|
|
42
|
+
4. Max 4 constructor dependencies — if more, split the service.
|
|
43
43
|
|
|
44
44
|
### Step 2: Implement methods
|
|
45
45
|
|
|
@@ -70,7 +70,7 @@ public function __invoke(
|
|
|
70
70
|
|
|
71
71
|
- Run PHPStan on the service — must pass at level 9.
|
|
72
72
|
- Verify single responsibility: service does one thing, no mixed concerns.
|
|
73
|
-
- Confirm all
|
|
73
|
+
- Confirm all dependencies are constructor-injected (no `app()` or facades in service).
|
|
74
74
|
- Run affected tests — must pass.
|
|
75
75
|
|
|
76
76
|
## Output format
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pixar-storyteller
|
|
3
3
|
description: "Use when turning an idea into a Pixar-style animation prompt — character sheet, scene, image, video — anchored in emotional beat, want, obstacle. Triggers 'Pixar prompt', 'animated scene'."
|
|
4
|
-
personas:
|
|
5
|
-
- pixar-storyboard-artist
|
|
6
4
|
source: package
|
|
7
5
|
domain: product
|
|
8
6
|
---
|
|
9
7
|
|
|
10
8
|
# pixar-storyteller
|
|
11
9
|
|
|
12
|
-
> Turn an animation beat into the **four-block storyboard
|
|
13
|
-
>
|
|
14
|
-
>
|
|
15
|
-
>
|
|
10
|
+
> Turn an animation beat into the **four-block storyboard**:
|
|
11
|
+
> CHARACTER SHEET · SCENE PROMPT · IMAGE PROMPT · VIDEO PROMPT.
|
|
12
|
+
> Output is provider-agnostic; provider tuning is
|
|
13
|
+
> [`motion-choreographer`](../motion-choreographer/SKILL.md).
|
|
14
|
+
>
|
|
15
|
+
> The acting / storyboard lens is enforced inline by the procedure
|
|
16
|
+
> and self-review below.
|
|
16
17
|
|
|
17
18
|
## When to use
|
|
18
19
|
|
|
@@ -105,3 +106,15 @@ Any "no" → revise that block.
|
|
|
105
106
|
- Do NOT emit provider-specific tokens — that is `motion-choreographer`.
|
|
106
107
|
- Do NOT cite "Pixar-style" without a specific film + year.
|
|
107
108
|
- Do NOT compound emotional beats ("sad but hopeful and tired").
|
|
109
|
+
|
|
110
|
+
## Policies
|
|
111
|
+
|
|
112
|
+
The Pixar-storyteller skill anchors prompts to named films and studios by design — the policy surface is the largest in the video cluster:
|
|
113
|
+
|
|
114
|
+
- [`agents/policies/media/style.md`](../../../agents/policies/media/style.md) — naming a film + year as the *primary* anchor crosses the "in the style of [STUDIO]" trigger; surface and refuse without a transformative-intent rationale.
|
|
115
|
+
- [`agents/policies/media/likeness.md`](../../../agents/policies/media/likeness.md) — when a beat references a named animator's signature character (real-person extension of style).
|
|
116
|
+
- [`agents/policies/media/public-figures.md`](../../../agents/policies/media/public-figures.md) — when the storyteller's character is a recognised public figure rendered in Pixar shape.
|
|
117
|
+
- [`agents/policies/media/disclosure.md`](../../../agents/policies/media/disclosure.md) — every Pixar-style output ships with the AI-generation disclosure; parody / commentary cases are flagged for human review.
|
|
118
|
+
|
|
119
|
+
Refuse-and-surface when style ⇒ primary signature, not one influence among several.
|
|
120
|
+
|
|
@@ -18,7 +18,6 @@ Use this skill when:
|
|
|
18
18
|
- Configuring Playwright for CI/CD
|
|
19
19
|
|
|
20
20
|
**Guideline:** `../../../docs/guidelines/e2e/playwright.md` — full conventions, config templates, CI setup.
|
|
21
|
-
**Rule:** `.augment/rules/e2e-testing.md` — constraints enforced during E2E test work.
|
|
22
21
|
**Mobile:** for native iOS/Android or React Native E2E, do NOT reuse Playwright — see the `mobile-e2e-strategy` skill for framework selection.
|
|
23
22
|
|
|
24
23
|
## Procedure: Write Playwright tests
|
|
@@ -164,6 +163,22 @@ npx playwright show-report
|
|
|
164
163
|
npx playwright test -g "should login"
|
|
165
164
|
```
|
|
166
165
|
|
|
166
|
+
### Filter noisy Playwright output
|
|
167
|
+
|
|
168
|
+
Use `--grep`, `--reporter=json`, plus `jq`/`rg` to keep diagnosis scoped:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Targeted run — only matching specs
|
|
172
|
+
npx playwright test --grep '@smoke'
|
|
173
|
+
|
|
174
|
+
# JSON report, narrowed to failures via jq
|
|
175
|
+
npx playwright test --reporter=json > pw.json
|
|
176
|
+
jq '.suites[].specs[] | select(.tests[].results[].status=="failed")' pw.json
|
|
177
|
+
|
|
178
|
+
# Scan trace logs for one selector
|
|
179
|
+
rg --color=never 'getByRole.*Submit' test-results/
|
|
180
|
+
```
|
|
181
|
+
|
|
167
182
|
## Avoiding flaky tests
|
|
168
183
|
|
|
169
184
|
| Problem | Solution |
|
|
@@ -171,47 +171,73 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
171
171
|
|
|
172
172
|
## Detection checklist
|
|
173
173
|
|
|
174
|
-
### Framework & language
|
|
175
|
-
|
|
176
|
-
| Check
|
|
177
|
-
|
|
178
|
-
| PHP version
|
|
179
|
-
| Laravel
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
| TypeScript
|
|
174
|
+
### Framework & language (multi-stack)
|
|
175
|
+
|
|
176
|
+
| Check | How to detect |
|
|
177
|
+
|------------------------|------------------------------------------------------------------------------|
|
|
178
|
+
| PHP runtime + version | `composer.json` → `require.php` |
|
|
179
|
+
| Laravel application | `artisan` file at repo root + `laravel/framework` in `composer.json` |
|
|
180
|
+
| Symfony application | `bin/console` + `symfony/framework-bundle` in `composer.json` |
|
|
181
|
+
| Composer package | `composer.json` without `artisan` / `bin/console` |
|
|
182
|
+
| Node.js runtime | `package.json` exists |
|
|
183
|
+
| TypeScript | `tsconfig.json` exists |
|
|
184
|
+
| Frontend framework | `package.json` → `react`, `vue`, `svelte`, `solid`, `astro`, `@angular/core` |
|
|
185
|
+
| Meta-framework | `package.json` → `next`, `nuxt`, `remix`, `sveltekit`, `astro` |
|
|
186
|
+
| Python runtime | `pyproject.toml`, `requirements.txt`, `setup.py`, or `Pipfile` |
|
|
187
|
+
| Python framework | `pyproject.toml` / `requirements.txt` → `django`, `fastapi`, `flask` |
|
|
188
|
+
| Go module | `go.mod` exists |
|
|
189
|
+
| Rust crate / workspace | `Cargo.toml` exists |
|
|
190
|
+
| Ruby app | `Gemfile` → `rails`, `sinatra` |
|
|
191
|
+
| .NET project | `*.csproj`, `*.fsproj`, or `global.json` |
|
|
192
|
+
| Java / Kotlin | `pom.xml`, `build.gradle`, or `build.gradle.kts` |
|
|
193
|
+
|
|
194
|
+
After detecting **any** match, record the stack in the analysis output and select the matching `project-analysis-*` sub-skill (Laravel, Symfony, Next.js, React, Node/Express, Zend/Laminas) — fall back to `project-analysis-core` if no framework-specific sub-skill applies.
|
|
184
195
|
|
|
185
196
|
### Project type
|
|
186
197
|
|
|
187
|
-
| Signal
|
|
188
|
-
|
|
189
|
-
| `artisan` + `laravel/framework`
|
|
190
|
-
| `
|
|
191
|
-
|
|
|
192
|
-
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
|
197
|
-
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
|
208
|
-
|
|
209
|
-
|
|
|
210
|
-
|
|
|
211
|
-
|
|
|
212
|
-
|
|
|
213
|
-
|
|
|
214
|
-
|
|
|
198
|
+
| Signal | Type |
|
|
199
|
+
|-----------------------------------------------------------------------|---------------------------------------|
|
|
200
|
+
| `artisan` + `laravel/framework` | Laravel application |
|
|
201
|
+
| `bin/console` + `symfony/framework-bundle` | Symfony application |
|
|
202
|
+
| `composer.json` without `artisan` / `bin/console` | Composer package or legacy PHP |
|
|
203
|
+
| `package.json` with `next` / `nuxt` / `remix` / `sveltekit` / `astro` | Meta-framework SSR/SSG app |
|
|
204
|
+
| `package.json` with `express` / `fastify` / `koa` / `hapi` | Node HTTP service |
|
|
205
|
+
| `package.json` with `@nestjs/core` | NestJS application |
|
|
206
|
+
| `pyproject.toml` with `django` / `fastapi` / `flask` | Python web app |
|
|
207
|
+
| `go.mod` with `gin-gonic/gin` / `labstack/echo` / `gofiber/fiber` | Go HTTP service |
|
|
208
|
+
| Module system (`app/Modules/`, `src/modules/`, `packages/*`) | Modular monolith / monorepo |
|
|
209
|
+
| Multi-tenant signal (`customer_database`, tenant middleware, `RLS`) | Multi-tenant SaaS |
|
|
210
|
+
| `apps/*` + `packages/*` + `turbo.json` / `nx.json` / `pnpm-workspace` | Monorepo |
|
|
211
|
+
|
|
212
|
+
### Legacy indicators (stack-aware)
|
|
213
|
+
|
|
214
|
+
| Signal | Meaning |
|
|
215
|
+
|------------------------------------------------------------------------------|-------------------------------|
|
|
216
|
+
| PHP: no `declare(strict_types=1)` in most files | Pre-modern PHP style |
|
|
217
|
+
| PHP: no typed properties / return types | Legacy PHP (< 7.4) |
|
|
218
|
+
| PHP: no `phpstan.neon` / `rector.php` | No static analysis |
|
|
219
|
+
| TS: `// @ts-ignore` / `// @ts-nocheck` density; `any` widespread | Untyped TypeScript |
|
|
220
|
+
| TS: no `tsconfig.json` `strict: true` | Loose TypeScript |
|
|
221
|
+
| JS: no ESLint config or `eslint.config.*` | No linting |
|
|
222
|
+
| Python: no type hints in most signatures; no `py.typed` | Untyped Python |
|
|
223
|
+
| Python: no `mypy.ini` / `pyrightconfig.json` / `ruff.toml` | No static analysis |
|
|
224
|
+
| Go: no `golangci.yml` | No lint pipeline |
|
|
225
|
+
| Rust: no `clippy.toml` and warnings ignored | No lint hygiene |
|
|
226
|
+
| `var_dump()` / `console.log()` / `print()` / `fmt.Println()` left in code | Legacy debugging patterns |
|
|
227
|
+
| No tests or very few tests | Low test coverage |
|
|
228
|
+
| Mixed naming conventions across the same module | Inconsistent standards |
|
|
229
|
+
|
|
230
|
+
### Build & tooling (stack-agnostic)
|
|
231
|
+
|
|
232
|
+
| Check | How to detect |
|
|
233
|
+
|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
234
|
+
| Task runner | `Makefile`, `Taskfile.yml`, `justfile`, `package.json scripts`, `composer.json scripts` |
|
|
235
|
+
| Docker | `docker-compose.yml`, `compose.yaml`, `Dockerfile` |
|
|
236
|
+
| CI/CD | `.github/workflows/`, `.gitlab-ci.yml`, `.circleci/config.yml`, `azure-pipelines.yml` |
|
|
237
|
+
| Quality tools | PHP: `phpstan.neon`, `ecs.php`, `rector.php`. TS/JS: `eslint.config.*`, `.prettierrc*`, `tsconfig.json`. Python: `ruff.toml`, `mypy.ini`. Go: `.golangci.yml`. Rust: `clippy.toml` |
|
|
238
|
+
| Editor config | `.editorconfig` |
|
|
239
|
+
| Code review | `CODEOWNERS`, PR templates (`.github/pull_request_template.md`) |
|
|
240
|
+
| Dependencies | Lockfile presence: `composer.lock`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `poetry.lock`, `uv.lock`, `go.sum`, `Cargo.lock` |
|
|
215
241
|
|
|
216
242
|
## Analysis phases
|
|
217
243
|
|
|
@@ -234,7 +260,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
234
260
|
### Phase 3: Data layer
|
|
235
261
|
|
|
236
262
|
- List all models with their connections, tables, and key relationships
|
|
237
|
-
- Map
|
|
263
|
+
- Map database schema: tables, foreign keys, indexes
|
|
238
264
|
- Document multi-tenant split (which tables in which DB)
|
|
239
265
|
- **Output:** `agents/analysis/models/api-database.md`, `customer-database.md`
|
|
240
266
|
|
|
@@ -243,7 +269,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
243
269
|
- Identify domains from models, services, routes, and directory structure
|
|
244
270
|
- For each domain: map models → services → controllers → jobs → events
|
|
245
271
|
- Document business rules and data flows
|
|
246
|
-
- Document inter-domain
|
|
272
|
+
- Document inter-domain dependencies
|
|
247
273
|
- **Output:** `agents/analysis/domains/{domain}.md` (one per domain)
|
|
248
274
|
|
|
249
275
|
### Phase 5: API surface
|
|
@@ -255,7 +281,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
255
281
|
|
|
256
282
|
### Phase 6: Service map
|
|
257
283
|
|
|
258
|
-
- List all services with purpose, key methods, and
|
|
284
|
+
- List all services with purpose, key methods, and dependencies
|
|
259
285
|
- Map service → repository → model relationships
|
|
260
286
|
- Identify God services (too many responsibilities)
|
|
261
287
|
- **Output:** `agents/analysis/services/service-map.md`
|
|
@@ -316,7 +342,7 @@ Each module gets its own file in `agents/analysis/modules/`. Format:
|
|
|
316
342
|
## Output format
|
|
317
343
|
|
|
318
344
|
1. Structured analysis document in agents/analysis/
|
|
319
|
-
2. Tech stack inventory with versions and
|
|
345
|
+
2. Tech stack inventory with versions and dependencies
|
|
320
346
|
3. Architecture diagram or module map
|
|
321
347
|
|
|
322
348
|
## Auto-trigger keywords
|
|
@@ -53,7 +53,7 @@ what it does, whether it fits their stack, how to install it, and how to use it.
|
|
|
53
53
|
|
|
54
54
|
Read files that define actual package behavior:
|
|
55
55
|
|
|
56
|
-
- `composer.json
|
|
56
|
+
- Manifest: `composer.json`, `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, or `*.gemspec` — name, description, requirements, scripts
|
|
57
57
|
- Source entrypoints — public API surface, main classes/functions
|
|
58
58
|
- Config files — publishable configs, defaults
|
|
59
59
|
- CI workflows — what gets tested, supported versions matrix
|
|
@@ -83,32 +83,103 @@ Skip sections that have no real content. Never pad.
|
|
|
83
83
|
|
|
84
84
|
### 4. Write requirements and compatibility
|
|
85
85
|
|
|
86
|
-
State only what is tested and supported:
|
|
86
|
+
State only what is tested and supported. Pull the values from the package's manifest, not from memory. Examples per stack:
|
|
87
87
|
|
|
88
88
|
```
|
|
89
|
-
## Requirements
|
|
89
|
+
## Requirements (PHP)
|
|
90
90
|
|
|
91
91
|
- PHP ^8.2
|
|
92
|
-
- Laravel 11.x
|
|
92
|
+
- Laravel 11.x (optional integration)
|
|
93
93
|
- ext-json
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
```
|
|
97
|
+
## Requirements (JS / TS)
|
|
98
|
+
|
|
99
|
+
- Node.js >= 20
|
|
100
|
+
- TypeScript >= 5.4 (for typed consumers)
|
|
101
|
+
- npm / pnpm / yarn / bun
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
## Requirements (Python)
|
|
106
|
+
|
|
107
|
+
- Python >= 3.11
|
|
108
|
+
- pip / poetry / uv
|
|
109
|
+
- Optional: `fastapi >= 0.110` for the FastAPI integration
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
## Requirements (Go)
|
|
114
|
+
|
|
115
|
+
- Go >= 1.22
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
## Requirements (Rust)
|
|
120
|
+
|
|
121
|
+
- Rust >= 1.78 (stable)
|
|
122
|
+
- `cargo` workspace member or standalone crate
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
## Requirements (Ruby)
|
|
127
|
+
|
|
128
|
+
- Ruby >= 3.2
|
|
129
|
+
- Bundler >= 2.5
|
|
130
|
+
- Optional: Rails 7.1+ for the Rails integration
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Do NOT imply broad compatibility if only tested in a narrow range.
|
|
134
|
+
Include language version, framework version, required extensions, and services.
|
|
98
135
|
|
|
99
136
|
### 5. Write installation that actually works
|
|
100
137
|
|
|
101
|
-
Document the exact install command and any required follow-up
|
|
138
|
+
Document the exact install command and any required follow-up. Use the
|
|
139
|
+
package manager native to the stack — never edit manifests by hand.
|
|
102
140
|
|
|
103
141
|
```bash
|
|
142
|
+
# PHP / Composer
|
|
104
143
|
composer require vendor/package
|
|
105
|
-
|
|
106
|
-
# If framework integration needed:
|
|
144
|
+
# Optional Laravel integration:
|
|
107
145
|
php artisan vendor:publish --tag=package-config
|
|
108
146
|
```
|
|
109
147
|
|
|
148
|
+
```bash
|
|
149
|
+
# JS / TS — pick whichever the consumer uses
|
|
150
|
+
npm install <package>
|
|
151
|
+
pnpm add <package>
|
|
152
|
+
yarn add <package>
|
|
153
|
+
bun add <package>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Python
|
|
158
|
+
pip install <package>
|
|
159
|
+
poetry add <package>
|
|
160
|
+
uv add <package>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Go
|
|
165
|
+
go get github.com/<owner>/<package>@latest
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Rust
|
|
170
|
+
cargo add <package>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Ruby
|
|
175
|
+
bundle add <package>
|
|
176
|
+
# or, for a standalone gem:
|
|
177
|
+
gem install <package>
|
|
178
|
+
```
|
|
179
|
+
|
|
110
180
|
Validate each step against the actual codebase.
|
|
111
|
-
Include post-install steps (publish,
|
|
181
|
+
Include post-install steps (config publish, service / module / provider
|
|
182
|
+
registration, env vars, codegen, migrations) if the package requires them.
|
|
112
183
|
|
|
113
184
|
### 6. Write the minimal working example
|
|
114
185
|
|
|
@@ -148,10 +219,10 @@ splitting, duplication between README and `/docs/`).
|
|
|
148
219
|
|
|
149
220
|
#### Per-AI catalog pattern (multi-platform AI / CLI packages)
|
|
150
221
|
|
|
151
|
-
For packages
|
|
152
|
-
agent-config tools, language SDKs with 10+ targets), prefer flat per-AI
|
|
153
|
-
catalog over giant matrix. One line per target, install command on
|
|
154
|
-
aligned trailing comment naming platform:
|
|
222
|
+
For packages that target many AI assistants or platforms (CLI installers,
|
|
223
|
+
agent-config tools, language SDKs with 10+ targets), prefer a flat per-AI
|
|
224
|
+
catalog over a giant matrix. One line per target, install command on the
|
|
225
|
+
left, aligned trailing comment naming the platform:
|
|
155
226
|
|
|
156
227
|
```bash
|
|
157
228
|
npx <package> init --tools=claude-code # Claude Code
|
|
@@ -160,22 +231,22 @@ npx <package> init --tools=windsurf # Windsurf
|
|
|
160
231
|
# ... one line per supported target
|
|
161
232
|
```
|
|
162
233
|
|
|
163
|
-
Pair catalog with separate "Global install" subsection (same flags
|
|
164
|
-
`--global`) and "Other commands" subsection. Reference example:
|
|
234
|
+
Pair the catalog with a separate "Global install" subsection (same flags
|
|
235
|
+
plus `--global`) and an "Other commands" subsection. Reference example:
|
|
165
236
|
[`README.md § Pick specific AIs`](../../../README.md#pick-specific-ais) in
|
|
166
|
-
this
|
|
237
|
+
this repository. Inspiration:
|
|
167
238
|
[`ui-ux-pro-max-skill § Installation`](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill#installation).
|
|
168
239
|
|
|
169
|
-
Use catalog when package's primary install action varies by
|
|
170
|
-
matrix table (Tool / Rules / Skills / Commands) for
|
|
171
|
-
|
|
240
|
+
Use the catalog when the package's primary install action varies by
|
|
241
|
+
platform; use a matrix table (Tool / Rules / Skills / Commands) for
|
|
242
|
+
capability comparison. They serve different jobs — install vs. coverage.
|
|
172
243
|
|
|
173
244
|
README = enough to adopt. Docs = enough to master.
|
|
174
245
|
|
|
175
246
|
### 8. Validate
|
|
176
247
|
|
|
177
248
|
- [ ] Install command is correct and complete
|
|
178
|
-
- [ ] Compatibility/requirements match `composer.json
|
|
249
|
+
- [ ] Compatibility/requirements match the manifest (`composer.json`, `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `*.gemspec`) and the CI matrix
|
|
179
250
|
- [ ] First example matches real API (verified against source code)
|
|
180
251
|
- [ ] All documented commands exist in repo
|
|
181
252
|
- [ ] No invented features or capabilities
|
|
@@ -199,8 +270,8 @@ README = enough to adopt. Docs = enough to master.
|
|
|
199
270
|
- Model tends to invent compatibility claims or setup steps
|
|
200
271
|
- First example is often too large, too abstract, or uses pseudo-code
|
|
201
272
|
- Model over-explains internals before showing how to use the package
|
|
202
|
-
- Existing README may be outdated — verify against actual `composer.json`
|
|
203
|
-
- Model forgets post-install steps (config publish, service provider, env vars)
|
|
273
|
+
- Existing README may be outdated — verify against the actual manifest (`composer.json`, `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `*.gemspec`) and source, not the old prose
|
|
274
|
+
- Model forgets post-install steps (config publish, service / module / provider registration, env vars, codegen, migrations) — list whichever the stack requires
|
|
204
275
|
|
|
205
276
|
## Frugality Standards
|
|
206
277
|
|
|
@@ -93,7 +93,7 @@ Every roadmap follows this structure:
|
|
|
93
93
|
## Acceptance Criteria
|
|
94
94
|
|
|
95
95
|
- [ ] {Observable, testable criterion}
|
|
96
|
-
- [ ] All quality gates pass
|
|
96
|
+
- [ ] All quality gates pass — the project's type-checker, auto-fixer, linter, and full test suite (see the `quality-tools` skill for stack-specific invocations)
|
|
97
97
|
|
|
98
98
|
## Notes
|
|
99
99
|
|
|
@@ -137,6 +137,16 @@ to every roadmap you author.
|
|
|
137
137
|
user (`commit-policy` Iron Law). A roadmap is "implementation-complete"
|
|
138
138
|
once its checkboxes are ticked and verification has been run — merge
|
|
139
139
|
timing is tracked outside the roadmap.
|
|
140
|
+
* Schedule full-pipeline CI literals (`task ci`, `task ci-fast`,
|
|
141
|
+
`task ci-strict`, `make ci`, `make test`, `npm/pnpm run check`,
|
|
142
|
+
`yarn check`, `composer test`, whole-suite `vendor/bin/phpunit`,
|
|
143
|
+
whole-suite `php artisan test`) as checkbox steps when
|
|
144
|
+
`quality.local_auto_run: false` — blocked by
|
|
145
|
+
`task lint-roadmap-ci-steps` per
|
|
146
|
+
[`roadmap-ci-steps-policy`](../../rules/roadmap-ci-steps-policy.md).
|
|
147
|
+
Reword as narrow verifications, or mark with
|
|
148
|
+
`<!-- carve-out: new-gate-verification -->` when it verifies a NEW
|
|
149
|
+
gate this roadmap introduces.
|
|
140
150
|
* Use ALL-CAPS Iron-Law fenced blocks — those belong in
|
|
141
151
|
[`kernel-membership`](../../../docs/contracts/kernel-membership.md)-listed
|
|
142
152
|
rules, not roadmaps.
|
|
@@ -37,12 +37,22 @@ rtk npm test # same for JS/TS
|
|
|
37
37
|
rtk docker compose ps # compact container status
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
## Procedure:
|
|
40
|
+
## Procedure: Analyze, then wrap commands with rtk
|
|
41
41
|
|
|
42
|
-
1.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
### 1. Analyze the current setup
|
|
43
|
+
|
|
44
|
+
- Read `personal.rtk_installed` from `.agent-settings.yml`.
|
|
45
|
+
- Review the command about to run: estimated output size, whether
|
|
46
|
+
completeness matters (e.g. diff review), and whether a project-local
|
|
47
|
+
filter exists in `.rtk/filters.toml`.
|
|
48
|
+
|
|
49
|
+
### 2. Wrap (or skip)
|
|
50
|
+
|
|
51
|
+
1. **If `personal.rtk_installed: true`** → prefix commands with `rtk`
|
|
52
|
+
when output >30 lines expected.
|
|
53
|
+
2. **If `false` or missing** → use plain commands. Do not prompt the user.
|
|
54
|
+
3. After wrapping: verify output is useful (not truncated on
|
|
55
|
+
completeness-critical commands).
|
|
46
56
|
|
|
47
57
|
Installation and one-time setup are owned by
|
|
48
58
|
[`/onboard`](../../commands/onboard.md). If the user asks to install rtk
|
|
@@ -153,10 +163,15 @@ When debugging or reviewing diffs, **always run the raw command** without rtk.
|
|
|
153
163
|
|
|
154
164
|
## Project-Local Filters
|
|
155
165
|
|
|
156
|
-
|
|
157
|
-
(project root, versioned in Git). These override global filters for matching commands.
|
|
166
|
+
Project-local custom filters live in `.rtk/filters.toml` (project root, versioned in Git). These override global filters for matching commands. Add entries for whatever tools the project actually runs.
|
|
158
167
|
|
|
159
|
-
|
|
168
|
+
Coverage shipped with this package (extend per project):
|
|
169
|
+
- PHP / Laravel: PHPStan, Pest, PHPUnit, ECS, Rector, Composer, Artisan
|
|
170
|
+
- JS / TS: tsc, eslint, prettier, vitest, jest, playwright, pnpm/npm/yarn install + run
|
|
171
|
+
- Python: ruff, mypy, pyright, pytest, pip / poetry / uv
|
|
172
|
+
- Go: `go test`, `go build`, `go vet`, `golangci-lint`
|
|
173
|
+
- Rust: `cargo build`, `cargo test`, `cargo clippy`, `cargo fmt`
|
|
174
|
+
- Infra / runtime: Docker Compose, Terraform, kubectl
|
|
160
175
|
|
|
161
176
|
To generate or update project-local filters → use the `/optimize-rtk-filters` command.
|
|
162
177
|
|