@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
|
@@ -37,68 +37,73 @@ Use this skill when:
|
|
|
37
37
|
|
|
38
38
|
## Review checklist
|
|
39
39
|
|
|
40
|
+
The checks below are stack-agnostic. For framework-specific conventions (PSR-12 + `declare(strict_types=1)`, FormRequest, single-action `__invoke`, API Resources, Pest, Blade escaping, Eloquent N+1) defer to the carve-outs:
|
|
41
|
+
- PHP / Laravel → [`laravel`](../laravel/SKILL.md), [`laravel-validation`](../laravel-validation/SKILL.md), [`eloquent`](../eloquent/SKILL.md), [`pest-testing`](../pest-testing/SKILL.md), [`blade-ui`](../blade-ui/SKILL.md), [`php-coder`](../php-coder/SKILL.md)
|
|
42
|
+
- Symfony → [`symfony-workflow`](../symfony-workflow/SKILL.md)
|
|
43
|
+
- Next.js / TS → [`nextjs-patterns`](../nextjs-patterns/SKILL.md), [`react-shadcn-ui`](../react-shadcn-ui/SKILL.md)
|
|
44
|
+
|
|
40
45
|
### Code quality
|
|
41
46
|
|
|
42
47
|
| Check | What to look for |
|
|
43
48
|
|---|---|
|
|
44
|
-
| **
|
|
45
|
-
| **
|
|
46
|
-
| **Naming** | Clear, descriptive names
|
|
49
|
+
| **Type discipline** | New code is fully typed in the project's idiom (PHP typed properties + `declare(strict_types=1)`, TS strict, Python type hints, Go / Rust by construction). |
|
|
50
|
+
| **Style conformance** | Matches the project's formatter / linter output — no reformatting battles, no out-of-band style. |
|
|
51
|
+
| **Naming** | Clear, descriptive names; matches the dominant casing in the surrounding code (camelCase / snake_case / PascalCase per the language's idiom). |
|
|
47
52
|
| **Early returns** | No deep nesting. Guard clauses at the top. |
|
|
48
|
-
| **Single responsibility** | Each class/
|
|
49
|
-
| **No magic** | No
|
|
50
|
-
| **
|
|
53
|
+
| **Single responsibility** | Each class / module / function does one thing. HTTP handlers stay thin. |
|
|
54
|
+
| **No magic** | No reach-through to globals (`app()`, `$_GET`, ambient context). No untyped data shapes leaking out of the I/O boundary. |
|
|
55
|
+
| **Doc comments** | Only where the type system is insufficient (generics, complex shapes). No redundant docblocks. |
|
|
51
56
|
|
|
52
57
|
### Architecture
|
|
53
58
|
|
|
54
59
|
| Check | What to look for |
|
|
55
60
|
|---|---|
|
|
56
|
-
| **Layer separation** | Business logic in services, not
|
|
57
|
-
| **
|
|
58
|
-
| **
|
|
59
|
-
| **
|
|
60
|
-
| **DTOs** | Structured data
|
|
61
|
-
| **Dependency injection** | Constructor injection
|
|
61
|
+
| **Layer separation** | Business logic in services / use-cases, not in HTTP handlers. Domain models stay I/O-free. |
|
|
62
|
+
| **Handler shape** | New handlers follow the framework's recommended shape (Laravel single-action `__invoke`, Next.js route handler, Express handler-per-route). See the stack carve-out. |
|
|
63
|
+
| **Input validation** | Validated at the request boundary via the framework's primitive (Laravel `FormRequest`, Zod / class-validator, Pydantic, struct-tag validators). No ad-hoc inline `if` checks. |
|
|
64
|
+
| **Response shaping** | Returns through a transformer / serializer / DTO. Never returns raw ORM entities. |
|
|
65
|
+
| **DTOs / value objects** | Structured data between layers, not raw associative arrays / `any` / `dict[str, Any]`. |
|
|
66
|
+
| **Dependency injection** | Constructor injection (or framework-idiomatic equivalent). No service-locator calls in business logic. |
|
|
62
67
|
|
|
63
68
|
### Database & Performance
|
|
64
69
|
|
|
65
70
|
| Check | What to look for |
|
|
66
71
|
|---|---|
|
|
67
|
-
| **N+1 queries** | Relationship access in loops without eager loading |
|
|
68
|
-
| **Missing indexes** | New columns used in WHERE/JOIN without index |
|
|
69
|
-
| **Unbounded queries** | `Model::all()`
|
|
70
|
-
| **Raw SQL** |
|
|
71
|
-
| **Migrations** | Reversible
|
|
72
|
-
| **Money** | Uses `decimal`
|
|
72
|
+
| **N+1 queries** | Relationship / association access in loops without eager / batch loading. |
|
|
73
|
+
| **Missing indexes** | New columns used in `WHERE` / `JOIN` without a supporting index. |
|
|
74
|
+
| **Unbounded queries** | Full-table reads (`Model::all()`, `SELECT *` without `LIMIT`, unpaged list endpoints). |
|
|
75
|
+
| **Raw SQL** | Parameterised queries only. No string concatenation with user input. |
|
|
76
|
+
| **Migrations** | Reversible. Targets the right connection / schema. Idempotent where the platform supports it. |
|
|
77
|
+
| **Money / precision** | Uses an exact-precision type (PHP `decimal` / `Math` helper, TS bigint / decimal lib, Python `Decimal`), never `float`. |
|
|
73
78
|
|
|
74
79
|
### Security
|
|
75
80
|
|
|
76
81
|
| Check | What to look for |
|
|
77
82
|
|---|---|
|
|
78
|
-
| **Authorization** |
|
|
79
|
-
| **Input validation** | All user input validated via
|
|
80
|
-
| **Mass assignment** | No
|
|
81
|
-
| **
|
|
82
|
-
| **
|
|
83
|
-
| **Sensitive data** | No secrets, tokens, or passwords in code or
|
|
83
|
+
| **Authorization** | Authz check at every state-changing endpoint (Laravel Policy, Symfony voter, NestJS guard, framework middleware). No unprotected mutating routes. |
|
|
84
|
+
| **Input validation** | All user input validated at the boundary via the framework's primitive. |
|
|
85
|
+
| **Mass assignment** | No bulk-binding raw request payloads to ORM entities without an explicit allow-list (`$fillable` / `$guarded` in Laravel, DTO mapping in TS / Python). |
|
|
86
|
+
| **Injection** | No raw queries / command lines / template strings with unescaped user input. |
|
|
87
|
+
| **Output encoding** | Template output is escaped by default; raw / unescaped output is intentional and reviewed (Blade `{{ }}` vs `{!! !!}`, React `dangerouslySetInnerHTML`, Jinja `\|safe`). |
|
|
88
|
+
| **Sensitive data** | No secrets, tokens, or passwords in code, logs, or error responses. |
|
|
84
89
|
|
|
85
90
|
### Tests
|
|
86
91
|
|
|
87
92
|
| Check | What to look for |
|
|
88
93
|
|---|---|
|
|
89
|
-
| **Coverage** | New code paths have tests. Bug fixes have regression tests. |
|
|
90
|
-
| **Test quality** | Tests verify
|
|
91
|
-
| **
|
|
92
|
-
| **
|
|
94
|
+
| **Coverage** | New code paths have tests. Bug fixes have regression tests (RED → GREEN). |
|
|
95
|
+
| **Test quality** | Tests verify behaviour, not implementation details. |
|
|
96
|
+
| **Framework idiom** | Correct conventions for the project's test framework (Pest / PHPUnit, Jest / Vitest, pytest, `go test`, `cargo test`) — see the stack carve-out for specifics. |
|
|
97
|
+
| **Test data** | Provisioned via the project's idiom (seeders, factories, fixtures, builders). |
|
|
93
98
|
| **Assertions** | Meaningful assertions. Not just "no exception thrown". |
|
|
94
|
-
| **Flaky risks** | Time-dependent tests
|
|
99
|
+
| **Flaky risks** | Time-dependent tests freeze the clock (`travel()`, `jest.useFakeTimers()`, `freezegun`). No reliance on execution speed. |
|
|
95
100
|
|
|
96
101
|
## Before creating a PR
|
|
97
102
|
|
|
98
|
-
1. Run quality pipeline
|
|
99
|
-
2. Run tests
|
|
103
|
+
1. Run the project's quality pipeline (see the stack carve-out for the exact commands — PHP: `quality-tools`).
|
|
104
|
+
2. Run tests via the project's runner (`make test`, `npm test`, `pytest`, `go test ./...`, or the project's wrapper script).
|
|
100
105
|
3. Ensure CI passes on the branch.
|
|
101
|
-
4. Self-review the diff: `git diff origin/main..HEAD
|
|
106
|
+
4. Self-review the diff: `git diff origin/main..HEAD`.
|
|
102
107
|
|
|
103
108
|
## Receiving feedback
|
|
104
109
|
|
|
@@ -114,7 +119,7 @@ When receiving code review feedback, follow this sequence:
|
|
|
114
119
|
6. **IMPLEMENT** — One item at a time, test each.
|
|
115
120
|
|
|
116
121
|
If **any item is unclear**, STOP — do not implement anything yet. Items may be related;
|
|
117
|
-
partial understanding
|
|
122
|
+
partial understanding leads to wrong implementation.
|
|
118
123
|
|
|
119
124
|
### No performative agreement
|
|
120
125
|
|
|
@@ -132,7 +137,7 @@ partial understanding → wrong impl.
|
|
|
132
137
|
**External / Copilot / bot feedback** (less context):
|
|
133
138
|
- Check: Technically correct for THIS codebase?
|
|
134
139
|
- Check: Does it break existing functionality?
|
|
135
|
-
- Check: Is there a reason for the current
|
|
140
|
+
- Check: Is there a reason for the current implementation?
|
|
136
141
|
- Check: Does the reviewer understand the full context?
|
|
137
142
|
- **YAGNI check:** If the reviewer suggests "implementing properly", grep the codebase
|
|
138
143
|
for actual usage. If unused → suggest removing (YAGNI).
|
|
@@ -181,7 +186,7 @@ Description and suggested improvement.
|
|
|
181
186
|
Description.
|
|
182
187
|
```
|
|
183
188
|
|
|
184
|
-
Group related findings. Don't repeat what
|
|
189
|
+
Group related findings. Don't repeat what the project's linter / type-checker already catches — focus on
|
|
185
190
|
logic, architecture, and things tools can't detect.
|
|
186
191
|
|
|
187
192
|
## Adversarial review
|
|
@@ -211,5 +216,5 @@ Focus on the "Code changes / Refactoring" attack questions.
|
|
|
211
216
|
- Do NOT approve without actually reading the code.
|
|
212
217
|
- Do NOT agree with review comments without verifying them against the codebase.
|
|
213
218
|
- Do NOT use performative language when responding to feedback ("Great point!", "Excellent catch!").
|
|
214
|
-
- Do NOT nitpick style issues
|
|
219
|
+
- Do NOT nitpick style issues the project's formatter / auto-refactor (ECS, Prettier, Ruff, gofmt) handles automatically.
|
|
215
220
|
- Do NOT merge without CI passing and quality checks green.
|
|
@@ -71,7 +71,7 @@ source when the user is unsure.
|
|
|
71
71
|
|---|---|
|
|
72
72
|
| `auth-model.md` | Policy classes, Gate definitions, permission seeders, role enums, `@can` directives, middleware |
|
|
73
73
|
| `tenant-boundaries.md` | Base query scopes, connection-switching middleware, tenant-resolution service, global scopes, `.env` vars like `TENANT_*` |
|
|
74
|
-
| `data-sensitivity.md` | Eloquent `$hidden` / `$casts`, Sentry `beforeSend`, logging helpers, API resources, export commands |
|
|
74
|
+
| `data-sensitivity.md` | ORM hidden-field config (Eloquent `$hidden` / `$casts`, Symfony `#[Ignore]`, Prisma `select` defaults, SQLAlchemy `__init__` filters), Sentry `beforeSend`, logging redaction helpers, API serialisers / resources, export commands |
|
|
75
75
|
| `deployment-order.md` | `database/migrations/`, feature-flag config (Pennant / LaunchDarkly), deploy scripts, CI workflow, rollback runbooks in `docs/` |
|
|
76
76
|
| `observability.md` | `config/logging.php`, Sentry init, dashboard links in READMEs, alert rules in Terraform/Grafana dashboards |
|
|
77
77
|
|
|
@@ -14,8 +14,8 @@ domain: engineering
|
|
|
14
14
|
Use when designing schemas, optimizing queries, adding indexes, or troubleshooting database performance.
|
|
15
15
|
|
|
16
16
|
Do NOT use when:
|
|
17
|
-
- Writing
|
|
18
|
-
- Creating migrations only
|
|
17
|
+
- Writing framework-specific ORM models (use the matching skill — e.g. `eloquent` for Laravel, `symfony-workflow` for Doctrine, framework-native skill for Prisma / TypeORM / SQLAlchemy / GORM / Diesel)
|
|
18
|
+
- Creating migrations only — use the framework-specific migration skill (`laravel-migration` for Laravel, framework-native for others)
|
|
19
19
|
|
|
20
20
|
## Procedure: Optimize a query
|
|
21
21
|
|
|
@@ -52,7 +52,12 @@ Re-run `EXPLAIN` and confirm improved plan.
|
|
|
52
52
|
|
|
53
53
|
1. **Read migrations** — source of truth
|
|
54
54
|
2. **Read models** — `$table`, `$connection`, `$fillable`, `$casts`, relationships
|
|
55
|
-
3. **Run schema queries** —
|
|
55
|
+
3. **Run schema queries** — use the project's REPL or a raw introspection query:
|
|
56
|
+
- Laravel: `php artisan tinker --execute="Schema::getColumnListing('table')"`
|
|
57
|
+
- Symfony / Doctrine: `bin/console doctrine:mapping:info`
|
|
58
|
+
- Rails: `bin/rails runner "p ActiveRecord::Base.connection.columns('table').map(&:name)"`
|
|
59
|
+
- Prisma: `npx prisma db pull --print | grep -A20 "model Table"`
|
|
60
|
+
- Generic SQL: `psql -d mydb -c "\d table"` / `mysql -e "DESCRIBE table"`
|
|
56
61
|
4. **Check project docs** — `agents/docs/` for conventions
|
|
57
62
|
|
|
58
63
|
| Trap | Reality |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dependency-upgrade
|
|
3
|
-
description: "Use when upgrading dependencies —
|
|
3
|
+
description: "Use when upgrading dependencies — 'update framework X', 'bump runtime version', or 'upgrade packages'. Covers changelog review, breaking-change detection, and verification. Stack-agnostic."
|
|
4
4
|
source: package
|
|
5
5
|
domain: engineering
|
|
6
6
|
---
|
|
@@ -9,10 +9,10 @@ domain: engineering
|
|
|
9
9
|
|
|
10
10
|
## When to use
|
|
11
11
|
|
|
12
|
-
Use this skill when upgrading Composer
|
|
12
|
+
Use this skill when upgrading project dependencies on any stack — Composer (PHP), npm / pnpm / yarn (JS/TS), pip / poetry / uv (Python), go.mod (Go), Cargo (Rust), or any other language-level package manager.
|
|
13
13
|
|
|
14
14
|
Do NOT use when:
|
|
15
|
-
- Installing new
|
|
15
|
+
- Installing new dependencies for the first time
|
|
16
16
|
- Routine code changes unrelated to package versions
|
|
17
17
|
|
|
18
18
|
## Procedure: Upgrade a dependency
|
|
@@ -25,7 +25,7 @@ Before upgrading:
|
|
|
25
25
|
- **Identify breaking changes** — look for "BREAKING", "BC break", major version bumps.
|
|
26
26
|
- **Check deprecation notices** — code using deprecated APIs needs updating.
|
|
27
27
|
- **Review upgrade guides** — many packages provide migration docs.
|
|
28
|
-
- **Check
|
|
28
|
+
- **Check runtime version requirements** — does the new version need a newer PHP / Node / Python / Go / Rust toolchain?
|
|
29
29
|
|
|
30
30
|
### 2. Plan
|
|
31
31
|
|
|
@@ -73,23 +73,69 @@ npm install package-name@latest
|
|
|
73
73
|
npm audit
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
#### pip / poetry / uv (Python)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Check outdated packages
|
|
80
|
+
pip list --outdated # pip
|
|
81
|
+
poetry show --outdated # poetry
|
|
82
|
+
uv pip list --outdated # uv
|
|
83
|
+
|
|
84
|
+
# Upgrade a specific package
|
|
85
|
+
pip install --upgrade package-name
|
|
86
|
+
poetry update package-name
|
|
87
|
+
uv pip install --upgrade package-name
|
|
77
88
|
|
|
78
|
-
|
|
89
|
+
# Check for vulnerabilities
|
|
90
|
+
pip-audit # via pip-audit
|
|
91
|
+
safety check # via safety
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
#### go.mod (Go)
|
|
79
95
|
|
|
80
96
|
```bash
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
97
|
+
# List available updates
|
|
98
|
+
go list -u -m all
|
|
99
|
+
|
|
100
|
+
# Upgrade a specific module
|
|
101
|
+
go get example.com/pkg@latest
|
|
102
|
+
go get example.com/pkg@v1.2.3
|
|
103
|
+
|
|
104
|
+
# Tidy after upgrade
|
|
105
|
+
go mod tidy
|
|
106
|
+
|
|
107
|
+
# Check for known vulnerabilities
|
|
108
|
+
govulncheck ./...
|
|
91
109
|
```
|
|
92
110
|
|
|
111
|
+
#### Cargo (Rust)
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Check outdated
|
|
115
|
+
cargo outdated # requires cargo-outdated
|
|
116
|
+
|
|
117
|
+
# Upgrade
|
|
118
|
+
cargo update -p crate-name
|
|
119
|
+
cargo add crate-name@1.2 # edition-aware add
|
|
120
|
+
|
|
121
|
+
# Audit
|
|
122
|
+
cargo audit # requires cargo-audit
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 4. Verify
|
|
126
|
+
|
|
127
|
+
After upgrading, run the project's full verification pipeline. The exact commands depend on the stack — resolve via the project's `Taskfile.yml`, `package.json scripts`, `composer.json scripts`, `Makefile`, or the `quality-tools` skill.
|
|
128
|
+
|
|
129
|
+
| Stack | Type-check | Lint / autofix | Tests |
|
|
130
|
+
|---|---|---|---|
|
|
131
|
+
| PHP / Laravel | `vendor/bin/phpstan analyse` | `vendor/bin/rector process` + `vendor/bin/ecs check --fix` | `php artisan test` (or `vendor/bin/pest`) |
|
|
132
|
+
| TypeScript | `tsc --noEmit` | `eslint --fix` + `prettier --write` | `pnpm test` (or `vitest run`, `jest`) |
|
|
133
|
+
| Python | `mypy` / `pyright` | `ruff check --fix` + `ruff format` | `pytest` |
|
|
134
|
+
| Go | `go vet ./...` | `golangci-lint run --fix` | `go test ./...` |
|
|
135
|
+
| Rust | `cargo check` | `cargo clippy --fix` + `cargo fmt` | `cargo test` |
|
|
136
|
+
|
|
137
|
+
Re-run the type-checker after any auto-fixer that can rewrite types (Rector for PHP, `eslint --fix` for TS).
|
|
138
|
+
|
|
93
139
|
### 5. Document
|
|
94
140
|
|
|
95
141
|
- Note the upgrade in the commit message: `chore: upgrade vendor/package from 2.x to 3.x`
|
|
@@ -100,7 +146,7 @@ npm run lint # Check code style
|
|
|
100
146
|
When upgrading multiple packages:
|
|
101
147
|
|
|
102
148
|
- **Upgrade one at a time** — easier to identify which upgrade broke something.
|
|
103
|
-
- **Exception:** Tightly coupled packages (e.g., `laravel/framework` + `laravel
|
|
149
|
+
- **Exception:** Tightly coupled packages can be upgraded together (e.g., `laravel/framework` + `laravel/*`; `@nestjs/core` + `@nestjs/*`; `react` + `react-dom`; `next` + `@next/*`).
|
|
104
150
|
- **Run tests after each upgrade** — don't batch upgrades and test once at the end.
|
|
105
151
|
|
|
106
152
|
## Common pitfalls
|
|
@@ -111,7 +157,7 @@ When upgrading multiple packages:
|
|
|
111
157
|
| Upgrading all packages at once | One package at a time (or tightly coupled groups) |
|
|
112
158
|
| Trusting `composer update` blindly | Use `--dry-run` first, review changes |
|
|
113
159
|
| Ignoring deprecation warnings | Fix deprecations before they become errors |
|
|
114
|
-
| Skipping tests after upgrade | Full test suite + PHPStan after every upgrade |
|
|
160
|
+
| Skipping tests after upgrade | Full test suite + project type-checker (PHPStan / tsc / mypy / `go vet` / `cargo check`) after every upgrade |
|
|
115
161
|
| Lock file conflicts | Coordinate upgrades with the team |
|
|
116
162
|
|
|
117
163
|
## Version constraint guidelines
|
|
@@ -165,7 +211,7 @@ npm audit
|
|
|
165
211
|
|---|---|---|
|
|
166
212
|
| **Known CVEs** | `composer audit` / `npm audit` | Direct vulnerabilities |
|
|
167
213
|
| **Maintenance status** | GitHub: last commit, open issues | Abandoned packages are a risk |
|
|
168
|
-
| **Dependency tree** | `composer show -t vendor/pkg` / `npm ls new-package` | Transitive
|
|
214
|
+
| **Dependency tree** | `composer show -t vendor/pkg` / `npm ls new-package` | Transitive dependencies may conflict |
|
|
169
215
|
| **License compatibility** | `composer licenses` / check `package.json` | Legal compliance |
|
|
170
216
|
| **Bundle size** (npm) | `npx bundlephobia new-package` | Impact on frontend bundle |
|
|
171
217
|
|
|
@@ -84,8 +84,8 @@ When UI changes are involved:
|
|
|
84
84
|
- `rg`, `grep` for text: specific patterns, not full files
|
|
85
85
|
- `head`, `tail`, `cut`, `sort`, `uniq` for narrowing results
|
|
86
86
|
- `--filter`, `--json`, `--format` flags on CLI tools — always use them
|
|
87
|
-
- Laravel
|
|
88
|
-
- Logs
|
|
87
|
+
- Route lookup — Laravel `php artisan route:list --json | jq '…'`, Rails `bin/rails routes | grep users`, Express `console.log(app._router.stack)`, FastAPI `app.routes`, Symfony `bin/console debug:router`.
|
|
88
|
+
- Logs — `rg "request_id=abc123" <log-dir>` — never `cat <log-file>`. Log dirs by stack: Laravel `storage/logs/`, Rails `log/`, Node `./logs/` or `journalctl`, Python `./logs/` or `journalctl`, Docker `docker compose logs <svc> --since 5m`.
|
|
89
89
|
|
|
90
90
|
### Avoid large output by default
|
|
91
91
|
|
|
@@ -156,22 +156,33 @@ If full TDD is not practical: at least write down the expected output before cod
|
|
|
156
156
|
#### Backend examples
|
|
157
157
|
|
|
158
158
|
```bash
|
|
159
|
-
#
|
|
160
|
-
php artisan route:list --json | jq '.[] | select(.uri == "api/users") | {method, uri, name, action, middleware}'
|
|
161
|
-
|
|
162
|
-
#
|
|
163
|
-
|
|
159
|
+
# Route lookup — pick the project's framework
|
|
160
|
+
php artisan route:list --json | jq '.[] | select(.uri == "api/users") | {method, uri, name, action, middleware}' # Laravel
|
|
161
|
+
bin/console debug:router --format=json | jq '.[] | select(.path == "/api/users")' # Symfony
|
|
162
|
+
bin/rails routes -g users # Rails
|
|
163
|
+
curl -s http://localhost:3000/__routes | jq '.[] | select(.path == "/api/users")' # Express custom-introspection
|
|
164
|
+
curl -s http://localhost:8000/openapi.json | jq '.paths["/api/users"]' # FastAPI
|
|
165
|
+
|
|
166
|
+
# Config inspection
|
|
167
|
+
php artisan config:show app | grep env # Laravel
|
|
168
|
+
bin/console debug:config framework # Symfony
|
|
169
|
+
bin/rails runner 'puts Rails.application.config_for(:database)' # Rails
|
|
164
170
|
|
|
165
171
|
# API inspection — extract only what you need
|
|
166
172
|
curl -s http://localhost/api/users | jq '.[0] | {id, email, status}'
|
|
167
173
|
curl -s http://localhost/api/users/1 | jq '{id, name, roles: [.roles[].name]}'
|
|
168
174
|
|
|
169
|
-
#
|
|
170
|
-
rg "
|
|
171
|
-
tail -n 200
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
# Recent logs — targeted, not full dump
|
|
176
|
+
tail -n 200 storage/logs/laravel.log | rg "payment|timeout" # Laravel
|
|
177
|
+
tail -n 200 log/development.log | rg "payment|timeout" # Rails
|
|
178
|
+
docker compose logs api --since 5m --no-color | rg "payment|timeout" # any container stack
|
|
179
|
+
journalctl -u myapp --since "5 min ago" | rg "payment|timeout" # systemd
|
|
180
|
+
|
|
181
|
+
# DB-state probe — targeted single record, not full table
|
|
182
|
+
php artisan tinker --execute="User::where('email','x@y')->first(['id','email','status'])" # Laravel
|
|
183
|
+
bin/rails runner "p User.where(email: 'x@y').first&.slice(:id,:email,:status)" # Rails
|
|
184
|
+
bin/console doctrine:query:sql "SELECT id,email,status FROM users WHERE email='x@y' LIMIT 1" # Symfony
|
|
185
|
+
psql -d mydb -c "SELECT id,email,status FROM users WHERE email='x@y' LIMIT 1" # raw SQL fallback
|
|
175
186
|
```
|
|
176
187
|
|
|
177
188
|
#### Debugging with Xdebug
|
|
@@ -218,7 +229,7 @@ Never load full output into context when a filter gives you the answer.
|
|
|
218
229
|
|
|
219
230
|
Tests are mandatory when behavior changes or bugs are fixed.
|
|
220
231
|
|
|
221
|
-
Prefer: failing test first →
|
|
232
|
+
Prefer: failing test first → implementation → passing test.
|
|
222
233
|
|
|
223
234
|
Test types: unit (isolated logic), feature/integration (behavior), UI (frontend), regression (bugs).
|
|
224
235
|
|
|
@@ -15,7 +15,7 @@ Use when creating/modifying Eloquent models, relationships, scopes, or writing d
|
|
|
15
15
|
|
|
16
16
|
Do NOT use when:
|
|
17
17
|
- Schema design or query optimization (use `database` skill)
|
|
18
|
-
- Creating migrations only (use `migration
|
|
18
|
+
- Creating migrations only (use `laravel-migration` skill)
|
|
19
19
|
|
|
20
20
|
## Procedure: Create or modify a model
|
|
21
21
|
|
|
@@ -145,7 +145,7 @@ Structural roadmap tasks must include:
|
|
|
145
145
|
|
|
146
146
|
1. **Exact file path** — `app/Modules/Auth/Services/LoginService.php`, never *"the login service"*.
|
|
147
147
|
2. **Complete code** — every method body, import, and signature ready to paste; no `// existing code` ellipses, no `…`.
|
|
148
|
-
3. **Exact command** — `php artisan migrate --path=database/migrations/2026_05_09_create_logins.php
|
|
148
|
+
3. **Exact command** — the precise CLI invocation, never *"run the migration"*. Examples: `php artisan migrate --path=database/migrations/2026_05_09_create_logins.php` (Laravel), `bin/console doctrine:migrations:migrate --no-interaction` (Symfony), `bin/rails db:migrate VERSION=20260509…` (Rails), `npx prisma migrate deploy` (Prisma), `alembic upgrade +1` (Python / Alembic), `sqlx migrate run` (Rust).
|
|
149
149
|
4. **Expected output** — what success looks like (`Migrated: 2026_05_09_create_logins`) and the exit code.
|
|
150
150
|
5. **No placeholders** — angle-bracket placeholders, `TODO`, `FIXME`, `tbd`, and `???` are blockers; resolve before the task ships.
|
|
151
151
|
|
|
@@ -40,7 +40,7 @@ Relevant settings for this skill:
|
|
|
40
40
|
|
|
41
41
|
| Key | Values | Default | Description |
|
|
42
42
|
|---|---|---|---|
|
|
43
|
-
| `personal.ide` | `code`, `phpstorm` | _(empty)_ | CLI command to open files |
|
|
43
|
+
| `personal.ide` | `code`, `cursor`, `windsurf`, `phpstorm`, `webstorm`, `idea`, `goland`, `rubymine`, `pycharm`, `rider`, `subl`, `vim`, `nvim`, `emacs`, `zed` | _(empty)_ | CLI command to open files |
|
|
44
44
|
| `personal.open_edited_files` | `true`, `false` | `false` | Whether to auto-open edited files |
|
|
45
45
|
|
|
46
46
|
## Behavior
|
|
@@ -62,31 +62,49 @@ cat .agent-settings.yml 2>/dev/null
|
|
|
62
62
|
After editing one or more files, open them using the `ide` setting.
|
|
63
63
|
**Always jump to the first edited line.** The syntax depends on the IDE:
|
|
64
64
|
|
|
65
|
-
**
|
|
65
|
+
**JetBrains IDEs** (`personal.ide: phpstorm` / `webstorm` / `idea` / `pycharm` / `goland` / `rubymine` / `rider`):
|
|
66
66
|
```bash
|
|
67
|
-
phpstorm --line {line} {file}
|
|
67
|
+
phpstorm --line {line} {file} # PHP
|
|
68
|
+
webstorm --line {line} {file} # JS / TS
|
|
69
|
+
idea --line {line} {file} # Java / Kotlin / general
|
|
70
|
+
pycharm --line {line} {file} # Python
|
|
71
|
+
goland --line {line} {file} # Go
|
|
68
72
|
```
|
|
69
73
|
|
|
70
|
-
**VS Code** (`personal.ide: code`):
|
|
74
|
+
**VS Code-family** (`personal.ide: code` / `cursor` / `windsurf`):
|
|
71
75
|
```bash
|
|
72
|
-
code
|
|
76
|
+
code --goto {file}:{line}
|
|
77
|
+
cursor --goto {file}:{line}
|
|
78
|
+
windsurf --goto {file}:{line}
|
|
73
79
|
```
|
|
74
80
|
|
|
75
|
-
|
|
81
|
+
**Zed** (`personal.ide: zed`):
|
|
76
82
|
```bash
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
phpstorm --line 15 app/Services/UserService.php
|
|
83
|
+
zed {file}:{line}
|
|
84
|
+
```
|
|
80
85
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
**Terminal editors** (`personal.ide: vim` / `nvim` / `emacs`):
|
|
87
|
+
```bash
|
|
88
|
+
vim +{line} {file}
|
|
89
|
+
nvim +{line} {file}
|
|
90
|
+
emacs +{line} {file}
|
|
84
91
|
```
|
|
85
92
|
|
|
86
|
-
|
|
93
|
+
For multiple files, run one command per file:
|
|
87
94
|
```bash
|
|
88
|
-
|
|
89
|
-
|
|
95
|
+
# JetBrains (PhpStorm / WebStorm / GoLand / PyCharm)
|
|
96
|
+
phpstorm --line 42 src/Services/UserService.php
|
|
97
|
+
webstorm --line 15 src/services/user-service.ts
|
|
98
|
+
goland --line 27 internal/user/service.go
|
|
99
|
+
pycharm --line 88 app/services/user_service.py
|
|
100
|
+
|
|
101
|
+
# VS Code-family
|
|
102
|
+
code --goto src/services/user-service.ts:15
|
|
103
|
+
cursor --goto app/services/user_service.py:88
|
|
104
|
+
|
|
105
|
+
# Open file without jumping to a line
|
|
106
|
+
code src/services/user-service.ts
|
|
107
|
+
phpstorm src/Services/UserService.php
|
|
90
108
|
```
|
|
91
109
|
|
|
92
110
|
### Rules
|
|
@@ -102,8 +120,16 @@ code app/Models/User.php
|
|
|
102
120
|
|
|
103
121
|
| IDE | Command | Install |
|
|
104
122
|
|---|---|---|
|
|
105
|
-
| VS Code
|
|
106
|
-
|
|
|
123
|
+
| VS Code | `code {file}` | Shell Command: Install 'code' in PATH |
|
|
124
|
+
| Cursor | `cursor {file}` | Settings → "Install 'cursor' shell command" |
|
|
125
|
+
| Windsurf | `windsurf {file}` | Settings → "Install 'windsurf' shell command" |
|
|
126
|
+
| Zed | `zed {file}` | Settings → "Install CLI" (creates `zed` in PATH) |
|
|
127
|
+
| PhpStorm | `phpstorm {file}` | JetBrains Toolbox CLI or *Tools → Create command-line launcher* in PhpStorm |
|
|
128
|
+
| WebStorm | `webstorm {file}` | JetBrains Toolbox CLI or *Tools → Create command-line launcher* in WebStorm |
|
|
129
|
+
| IntelliJ IDEA | `idea {file}` | JetBrains Toolbox CLI or *Tools → Create command-line launcher* in IDEA |
|
|
130
|
+
| PyCharm | `pycharm {file}` | JetBrains Toolbox CLI or *Tools → Create command-line launcher* in PyCharm |
|
|
131
|
+
| GoLand | `goland {file}` | JetBrains Toolbox CLI or *Tools → Create command-line launcher* in GoLand |
|
|
132
|
+
| Vim / Neovim | `vim {file}` / `nvim {file}` | Bundled with most distros |
|
|
107
133
|
|
|
108
134
|
## Output format
|
|
109
135
|
|
|
@@ -121,8 +147,8 @@ code app/Models/User.php
|
|
|
121
147
|
## Gotcha
|
|
122
148
|
|
|
123
149
|
- Check `.agent-settings.yml` for `personal.open_edited_files` before opening anything — the user may have disabled it.
|
|
124
|
-
- Don't open files during batch operations (e.g., fixing 20 PHPStan
|
|
125
|
-
-
|
|
150
|
+
- Don't open files during batch operations (e.g., fixing 20 type-checker errors across PHPStan / tsc / mypy / `cargo check`) — only open when specifically relevant.
|
|
151
|
+
- JetBrains IDEs (PhpStorm, WebStorm, IDEA, PyCharm, GoLand, RubyMine, Rider) sometimes briefly lock a file on open — wait a moment before editing the same file.
|
|
126
152
|
|
|
127
153
|
## Do NOT
|
|
128
154
|
|
|
@@ -61,7 +61,7 @@ Run the full end-of-work gate before presenting any options — see
|
|
|
61
61
|
|
|
62
62
|
1. Targeted tests green
|
|
63
63
|
2. Full test suite green
|
|
64
|
-
3. Quality pipeline (
|
|
64
|
+
3. Quality pipeline green — the project's full sequence (type-checker → auto-fixer dry-run → linter → type-checker; e.g. PHPStan → Rector → ECS → PHPStan for Laravel-PHP, tsc → eslint --fix → eslint → tsc for TS, mypy → ruff --fix → ruff → mypy for Python)
|
|
65
65
|
4. `git status` clean — nothing unstaged, no stray files
|
|
66
66
|
5. Branch is pushed or explicitly marked local-only
|
|
67
67
|
|
|
@@ -102,7 +102,7 @@ a different sub-procedure (steps 5a–5d).
|
|
|
102
102
|
1. Ensure the branch is up to date with the base →
|
|
103
103
|
[`prepare-for-review`](../../commands/prepare-for-review.md)
|
|
104
104
|
2. Self-review the full diff → [`review-changes`](../../commands/review-changes.md)
|
|
105
|
-
3. Write the PR description → [`create-pr-description`](../../commands/create-pr-
|
|
105
|
+
3. Write the PR description → [`create-pr-description`](../../commands/create-pr/description-only.md)
|
|
106
106
|
4. Open the PR → [`create-pr`](../../commands/create-pr.md)
|
|
107
107
|
5. Confirm the PR opened green, not red
|
|
108
108
|
|