@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
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"_doc": "Each entry: { file: relative path from repo root, lines: [int,...] | \"*\" for whole file, reason: short justification }. Use sparingly \u2014 first ask whether the file should be neutralized instead.",
|
|
4
|
+
"entries": [
|
|
5
|
+
{
|
|
6
|
+
"file": ".agent-src.uncompressed/skills/using-git-worktrees/SKILL.md",
|
|
7
|
+
"lines": [
|
|
8
|
+
130,
|
|
9
|
+
131,
|
|
10
|
+
132,
|
|
11
|
+
152
|
|
12
|
+
],
|
|
13
|
+
"reason": "Multi-stack package-manager comparison table"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"file": ".agent-src.uncompressed/skills/refine-prompt/SKILL.md",
|
|
17
|
+
"lines": [
|
|
18
|
+
88,
|
|
19
|
+
90,
|
|
20
|
+
92,
|
|
21
|
+
137,
|
|
22
|
+
180,
|
|
23
|
+
269
|
|
24
|
+
],
|
|
25
|
+
"reason": "Project-detection enumeration listing all supported stacks"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"file": ".agent-src.uncompressed/commands/onboard.md",
|
|
29
|
+
"lines": [
|
|
30
|
+
220,
|
|
31
|
+
221,
|
|
32
|
+
224
|
|
33
|
+
],
|
|
34
|
+
"reason": "Stack-detection enumeration in onboard flow"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"file": ".agent-src.uncompressed/commands/analyze-reference-repo.md",
|
|
38
|
+
"lines": [
|
|
39
|
+
62
|
|
40
|
+
],
|
|
41
|
+
"reason": "Manifest-file enumeration across ecosystems"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"file": ".agent-src.uncompressed/commands/optimize/augmentignore.md",
|
|
45
|
+
"lines": "*",
|
|
46
|
+
"reason": "Per-stack augmentignore rules \u2014 by definition stack-aware"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"file": ".agent-src.uncompressed/commands/optimize/rtk.md",
|
|
50
|
+
"lines": "*",
|
|
51
|
+
"reason": "Per-tool rtk filter detection \u2014 by definition tool-aware"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"file": ".agent-src.uncompressed/rules/framework-neutrality-in-generic-skills.md",
|
|
55
|
+
"lines": "*",
|
|
56
|
+
"reason": "The neutrality rule itself enumerates the forbidden tokens to forbid them"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"file": ".agent-src.uncompressed/rules/roadmap-ci-steps-policy.md",
|
|
60
|
+
"lines": [
|
|
61
|
+
4,
|
|
62
|
+
11,
|
|
63
|
+
12,
|
|
64
|
+
66
|
|
65
|
+
],
|
|
66
|
+
"reason": "Roadmap CI policy explicitly enumerates forbidden commands and trigger keywords"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"file": ".agent-src.uncompressed/rules/architecture.md",
|
|
70
|
+
"lines": [
|
|
71
|
+
19,
|
|
72
|
+
20,
|
|
73
|
+
26,
|
|
74
|
+
27,
|
|
75
|
+
62
|
|
76
|
+
],
|
|
77
|
+
"reason": "Stack-routing pointers and cross-stack enumeration of validation/handler primitives"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"file": ".agent-src.uncompressed/skills/api-endpoint/SKILL.md",
|
|
81
|
+
"lines": [
|
|
82
|
+
41,
|
|
83
|
+
58
|
|
84
|
+
],
|
|
85
|
+
"reason": "Cross-stack validation primitive enumeration and pointer to laravel-api-endpoint carve-out"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"file": ".agent-src.uncompressed/skills/code-review/SKILL.md",
|
|
89
|
+
"lines": [
|
|
90
|
+
40,
|
|
91
|
+
41,
|
|
92
|
+
42,
|
|
93
|
+
49,
|
|
94
|
+
62,
|
|
95
|
+
63,
|
|
96
|
+
74,
|
|
97
|
+
83,
|
|
98
|
+
85,
|
|
99
|
+
87,
|
|
100
|
+
219
|
|
101
|
+
],
|
|
102
|
+
"reason": "Cross-stack code-review checklist enumerates handler shape, validation, authz, ORM, escaping per framework"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"file": ".agent-src.uncompressed/skills/security/SKILL.md",
|
|
106
|
+
"lines": [
|
|
107
|
+
16,
|
|
108
|
+
23,
|
|
109
|
+
27,
|
|
110
|
+
28,
|
|
111
|
+
37,
|
|
112
|
+
41,
|
|
113
|
+
48,
|
|
114
|
+
58,
|
|
115
|
+
76
|
|
116
|
+
],
|
|
117
|
+
"reason": "Cross-stack security review enumerates auth primitives (Policies, voters, guards, middleware) and config paths"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"file": ".agent-src.uncompressed/skills/verify-completion-evidence/SKILL.md",
|
|
121
|
+
"lines": [
|
|
122
|
+
53,
|
|
123
|
+
54,
|
|
124
|
+
55,
|
|
125
|
+
100,
|
|
126
|
+
177
|
|
127
|
+
],
|
|
128
|
+
"reason": "Evidence-mapping table enumerates the type-checker / linter / refactor tool per stack including PHPStan, Rector, ECS"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"file": ".agent-src.uncompressed/commands/tests/execute.md",
|
|
132
|
+
"lines": "*",
|
|
133
|
+
"reason": "Multi-stack test runner dispatch (Pest/PHPUnit/Jest/pytest/cargo-test) \u2014 enumerates per-stack commands by design"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"file": ".agent-src.uncompressed/commands/tests/create.md",
|
|
137
|
+
"lines": "*",
|
|
138
|
+
"reason": "Multi-stack test framework selection \u2014 enumerates Pest/PHPUnit/Jest/pytest options by design"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"file": ".agent-src.uncompressed/commands/module/explore.md",
|
|
142
|
+
"lines": "*",
|
|
143
|
+
"reason": "Multi-stack module detection (Laravel HMVC / Symfony bundles / DDD-lite) \u2014 enumerates per-stack patterns by design"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"file": ".agent-src.uncompressed/commands/package-test.md",
|
|
147
|
+
"lines": "*",
|
|
148
|
+
"reason": "Multi-stack package linking (composer/npm/pip/cargo/go) \u2014 declared in skills frontmatter"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"file": ".agent-src.uncompressed/commands/package-reset.md",
|
|
152
|
+
"lines": "*",
|
|
153
|
+
"reason": "Multi-stack package reset (composer/npm) \u2014 declared in skills frontmatter"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"file": ".agent-src.uncompressed/skills/dependency-upgrade/SKILL.md",
|
|
157
|
+
"lines": "*",
|
|
158
|
+
"reason": "Multi-stack dependency upgrade examples (composer/npm/pip) \u2014 declared stack-agnostic in description"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"file": ".agent-src.uncompressed/skills/fe-design/SKILL.md",
|
|
162
|
+
"lines": "*",
|
|
163
|
+
"reason": "Cross-stack frontend design enumerates Blade/Livewire/Flux/React-shadcn for stack-routing dispatch"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"file": ".agent-src.uncompressed/skills/code-refactoring/SKILL.md",
|
|
167
|
+
"lines": "*",
|
|
168
|
+
"reason": "Multi-stack refactoring examples (Laravel app/Modules + Nx + mono-repo) per stack-detection"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"file": ".agent-src.uncompressed/skills/database/SKILL.md",
|
|
172
|
+
"lines": "*",
|
|
173
|
+
"reason": "Cross-stack ORM enumeration (Eloquent/Doctrine) with carve-out pointers"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"file": ".agent-src.uncompressed/commands/project-analyze.md",
|
|
177
|
+
"lines": "*",
|
|
178
|
+
"reason": "Stack-detection templates show per-framework default outputs (Laravel/Standalone PHP/etc.) \u2014 multi-stack by design"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"file": ".agent-src.uncompressed/commands/commit.md",
|
|
182
|
+
"lines": "*",
|
|
183
|
+
"reason": "Example commit block uses Laravel paths from a reference project; the procedure itself is stack-agnostic"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"file": ".agent-src.uncompressed/skills/test-driven-development/SKILL.md",
|
|
187
|
+
"lines": "*",
|
|
188
|
+
"reason": "Multi-stack TDD examples \u2014 PHP/Pest and TypeScript/Jest sections both present"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"file": ".agent-src.uncompressed/skills/context-authoring/SKILL.md",
|
|
192
|
+
"lines": "*",
|
|
193
|
+
"reason": "Cross-stack context examples enumerate per-stack auth/ORM primitives"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"file": ".agent-src.uncompressed/skills/migration-architect/SKILL.md",
|
|
197
|
+
"lines": "*",
|
|
198
|
+
"reason": "Cross-stack migration architecture enumerates laravel-migration/Doctrine/Alembic/Prisma carve-outs"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"file": ".agent-src.uncompressed/skills/api-design/SKILL.md",
|
|
202
|
+
"lines": "*",
|
|
203
|
+
"reason": "Cross-stack API design enumerates per-framework validation/handler primitives"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"file": ".agent-src.uncompressed/skills/error-handling-patterns/SKILL.md",
|
|
207
|
+
"lines": "*",
|
|
208
|
+
"reason": "Cross-stack error handling enumerates exceptions/Result/Maybe per language"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"file": ".agent-src.uncompressed/skills/security-audit/SKILL.md",
|
|
212
|
+
"lines": "*",
|
|
213
|
+
"reason": "Cross-stack security audit enumerates per-stack auth/ORM/escaping primitives"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"file": ".agent-src.uncompressed/skills/skill-writing/SKILL.md",
|
|
217
|
+
"lines": "*",
|
|
218
|
+
"reason": "Skill-writing references PHPStan/Pest as examples drawn from this package's own dogfooded skills"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"file": ".agent-src.uncompressed/skills/systematic-debugging/SKILL.md",
|
|
222
|
+
"lines": "*",
|
|
223
|
+
"reason": "Debugging examples drawn from PHP project; the procedure is stack-agnostic (reproduce \u2192 isolate \u2192 hypothesize \u2192 verify)"
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"file": ".agent-src.uncompressed/skills/testing-anti-patterns/SKILL.md",
|
|
227
|
+
"lines": "*",
|
|
228
|
+
"reason": "Anti-pattern examples drawn from Pest/PHPUnit; the iron laws apply to all test frameworks"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"file": ".agent-src.uncompressed/skills/testing-anti-patterns/process-anti-patterns.md",
|
|
232
|
+
"lines": "*",
|
|
233
|
+
"reason": "Anti-pattern examples drawn from Pest; the rules apply to all test frameworks"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"file": ".agent-src.uncompressed/skills/api-testing/SKILL.md",
|
|
237
|
+
"lines": "*",
|
|
238
|
+
"reason": "Cross-stack API testing enumerates Pest/PHPUnit/Jest/pytest"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"file": ".agent-src.uncompressed/skills/agent-docs-writing/SKILL.md",
|
|
242
|
+
"lines": "*",
|
|
243
|
+
"reason": "Agent-docs examples reference PHPStan/Pest as this package's dogfooded toolchain"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"file": ".agent-src.uncompressed/skills/bug-analyzer/SKILL.md",
|
|
247
|
+
"lines": "*",
|
|
248
|
+
"reason": "Bug-analysis examples drawn from PHP project; the procedure is stack-agnostic"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"file": ".agent-src.uncompressed/skills/defense-in-depth/SKILL.md",
|
|
252
|
+
"lines": "*",
|
|
253
|
+
"reason": "Defense-in-depth examples enumerate per-stack validation primitives"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"file": ".agent-src.uncompressed/skills/existing-ui-audit/SKILL.md",
|
|
257
|
+
"lines": "*",
|
|
258
|
+
"reason": "UI-audit references Blade/Livewire/Flux/React-shadcn as stack-routing options"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"file": ".agent-src.uncompressed/skills/form-handler/SKILL.md",
|
|
262
|
+
"lines": "*",
|
|
263
|
+
"reason": "Form-handling examples enumerate per-framework validation/submission primitives"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"file": ".agent-src.uncompressed/skills/learning-to-rule-or-skill/SKILL.md",
|
|
267
|
+
"lines": "*",
|
|
268
|
+
"reason": "Examples drawn from PHP/Pest as this package's dogfooded toolchain"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"file": ".agent-src.uncompressed/skills/markitdown/SKILL.md",
|
|
272
|
+
"lines": "*",
|
|
273
|
+
"reason": "Markitdown skill references Composer/pip as install paths"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"file": ".agent-src.uncompressed/skills/mcp/SKILL.md",
|
|
277
|
+
"lines": "*",
|
|
278
|
+
"reason": "MCP examples enumerate Python/Node/PHP server implementations"
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"file": ".agent-src.uncompressed/skills/mcp-builder/SKILL.md",
|
|
282
|
+
"lines": "*",
|
|
283
|
+
"reason": "MCP-builder enumerates Python FastMCP and Node TypeScript SDK with examples per language"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"file": ".agent-src.uncompressed/skills/readme-writing/SKILL.md",
|
|
287
|
+
"lines": "*",
|
|
288
|
+
"reason": "README examples reference composer.json/package.json/pyproject.toml per ecosystem"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"file": ".agent-src.uncompressed/skills/ui-component-architect/SKILL.md",
|
|
292
|
+
"lines": "*",
|
|
293
|
+
"reason": "Cross-stack UI component architecture enumerates Blade/Livewire/React"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"file": ".agent-src.uncompressed/commands/bug-investigate.md",
|
|
297
|
+
"lines": "*",
|
|
298
|
+
"reason": "Bug-investigate examples reference PHPStan/Pest from package's dogfooded toolchain"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"file": ".agent-src.uncompressed/commands/commit/in-chunks.md",
|
|
302
|
+
"lines": "*",
|
|
303
|
+
"reason": "Commit-in-chunks examples drawn from Laravel reference project; procedure is stack-agnostic"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"file": ".agent-src.uncompressed/commands/compress.md",
|
|
307
|
+
"lines": "*",
|
|
308
|
+
"reason": "Compress command references this package's own .agent-src.uncompressed Laravel-tooling examples"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"file": ".agent-src.uncompressed/commands/council/default.md",
|
|
312
|
+
"lines": "*",
|
|
313
|
+
"reason": "AI Council examples reference PHP/Laravel from package's dogfooded toolchain"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"file": ".agent-src.uncompressed/commands/fix/pr-bot-comments.md",
|
|
317
|
+
"lines": "*",
|
|
318
|
+
"reason": "PR-comment fix examples reference Rector/PHPStan from package's dogfooded toolchain"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"file": ".agent-src.uncompressed/commands/fix/pr-developer-comments.md",
|
|
322
|
+
"lines": "*",
|
|
323
|
+
"reason": "PR developer-comment fix examples reference PHP review patterns from package's dogfooded toolchain"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"file": ".agent-src.uncompressed/commands/quality-fix.md",
|
|
327
|
+
"lines": "*",
|
|
328
|
+
"reason": "Quality-fix dispatches per stack (PHPStan/ECS/Rector for PHP, tsc/biome for JS) \u2014 multi-stack by design"
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"file": ".agent-src.uncompressed/commands/roadmap/create.md",
|
|
332
|
+
"lines": "*",
|
|
333
|
+
"reason": "Roadmap creation examples drawn from this package's own Laravel-tooling work"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"file": ".agent-src.uncompressed/commands/rule-compliance-audit.md",
|
|
337
|
+
"lines": "*",
|
|
338
|
+
"reason": "Rule-audit examples reference this package's own rule corpus including PHP/Laravel rules"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"file": ".agent-src.uncompressed/skills/blast-radius-analyzer/SKILL.md",
|
|
342
|
+
"lines": "*",
|
|
343
|
+
"reason": "Blast-radius examples drawn from Laravel reference project; procedure is stack-agnostic"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"file": ".agent-src.uncompressed/skills/data-flow-mapper/SKILL.md",
|
|
347
|
+
"lines": "*",
|
|
348
|
+
"reason": "Data-flow examples drawn from Laravel reference project; procedure is stack-agnostic"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"file": ".agent-src.uncompressed/skills/file-editor/SKILL.md",
|
|
352
|
+
"lines": "*",
|
|
353
|
+
"reason": "File-editor references PHP filename heuristic for IDE detection"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"file": ".agent-src.uncompressed/skills/launch-readiness/SKILL.md",
|
|
357
|
+
"lines": "*",
|
|
358
|
+
"reason": "Launch-readiness checklist references Laravel Pulse/Horizon as monitoring options"
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"file": ".agent-src.uncompressed/skills/logging-monitoring/SKILL.md",
|
|
362
|
+
"lines": "*",
|
|
363
|
+
"reason": "Logging-monitoring enumerates per-stack log shippers including Laravel channels"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"file": ".agent-src.uncompressed/skills/memory-consolidation/SKILL.md",
|
|
367
|
+
"lines": "*",
|
|
368
|
+
"reason": "Memory examples drawn from PHP/Laravel reference project; procedure is stack-agnostic"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"file": ".agent-src.uncompressed/skills/performance/SKILL.md",
|
|
372
|
+
"lines": "*",
|
|
373
|
+
"reason": "Performance examples drawn from Laravel reference project; principles are stack-agnostic"
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"file": ".agent-src.uncompressed/skills/po-discovery/SKILL.md",
|
|
377
|
+
"lines": "*",
|
|
378
|
+
"reason": "PO-discovery examples drawn from Laravel reference project; procedure is stack-agnostic"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"file": ".agent-src.uncompressed/skills/project-analyzer/SKILL.md",
|
|
382
|
+
"lines": "*",
|
|
383
|
+
"reason": "Project-analyzer skill enumerates vendor/ and node_modules/ as third-party paths to exclude"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"file": ".agent-src.uncompressed/skills/readme-reviewer/SKILL.md",
|
|
387
|
+
"lines": "*",
|
|
388
|
+
"reason": "README reviewer enumerates composer.json/package.json/pyproject.toml per ecosystem"
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"file": ".agent-src.uncompressed/skills/repomix-packer/SKILL.md",
|
|
392
|
+
"lines": "*",
|
|
393
|
+
"reason": "Repomix examples drawn from package's own Laravel toolchain"
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"file": ".agent-src.uncompressed/skills/roadmap-management/SKILL.md",
|
|
397
|
+
"lines": "*",
|
|
398
|
+
"reason": "Roadmap examples drawn from this package's own framework-neutrality work"
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"file": ".agent-src.uncompressed/skills/rule-writing/SKILL.md",
|
|
402
|
+
"lines": "*",
|
|
403
|
+
"reason": "Rule-writing examples reference this package's own dogfooded PHP/Laravel rules"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"file": ".agent-src.uncompressed/skills/sentry-integration/SKILL.md",
|
|
407
|
+
"lines": "*",
|
|
408
|
+
"reason": "Sentry integration examples drawn from Laravel reference project"
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"file": ".agent-src.uncompressed/skills/skill-reviewer/SKILL.md",
|
|
412
|
+
"lines": "*",
|
|
413
|
+
"reason": "Skill-reviewer references this package's own dogfooded PHP/Laravel skills"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"file": ".agent-src.uncompressed/skills/upstream-contribute/SKILL.md",
|
|
417
|
+
"lines": "*",
|
|
418
|
+
"reason": "Upstream-contribute examples drawn from this package's own Laravel-tooling contributions"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"file": ".agent-src.uncompressed/commands/agents/init.md",
|
|
422
|
+
"lines": "*",
|
|
423
|
+
"reason": "Agents-init references PHP/Laravel as one detected stack"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"file": ".agent-src.uncompressed/commands/challenge-me/vision.md",
|
|
427
|
+
"lines": "*",
|
|
428
|
+
"reason": "Challenge-me examples drawn from PHP/Laravel reference project"
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"file": ".agent-src.uncompressed/commands/challenge-me/with-docs.md",
|
|
432
|
+
"lines": "*",
|
|
433
|
+
"reason": "Challenge-me examples drawn from PHP/Laravel reference project"
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"file": ".agent-src.uncompressed/commands/feature/dev.md",
|
|
437
|
+
"lines": "*",
|
|
438
|
+
"reason": "Feature-dev examples drawn from Laravel reference project; procedure is stack-agnostic"
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"file": ".agent-src.uncompressed/commands/jira-ticket.md",
|
|
442
|
+
"lines": "*",
|
|
443
|
+
"reason": "Jira-ticket examples drawn from Laravel reference project; procedure is stack-agnostic"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"file": ".agent-src.uncompressed/commands/override/create.md",
|
|
447
|
+
"lines": "*",
|
|
448
|
+
"reason": "Override-create examples drawn from this package's own Laravel-rule overrides"
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
"file": ".agent-src.uncompressed/commands/project-health.md",
|
|
452
|
+
"lines": "*",
|
|
453
|
+
"reason": "Project-health examples drawn from Laravel reference project; check itself is stack-agnostic"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"file": ".agent-src.uncompressed/commands/sync-agent-settings.md",
|
|
457
|
+
"lines": "*",
|
|
458
|
+
"reason": "Sync-agent-settings references PHP/Laravel from package's dogfooded toolchain"
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"file": ".agent-src.uncompressed/commands/sync-gitignore.md",
|
|
462
|
+
"lines": "*",
|
|
463
|
+
"reason": "Sync-gitignore enumerates per-stack ignore patterns including PHP/Composer"
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"file": ".agent-src.uncompressed/commands/sync-gitignore/fix.md",
|
|
467
|
+
"lines": "*",
|
|
468
|
+
"reason": "Sync-gitignore-fix enumerates per-stack ignore patterns"
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"file": ".agent-src.uncompressed/commands/upstream-contribute.md",
|
|
472
|
+
"lines": "*",
|
|
473
|
+
"reason": "Upstream-contribute examples drawn from this package's own Laravel-tooling contributions"
|
|
474
|
+
}
|
|
475
|
+
]
|
|
476
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Lint structural reachability of media governance policies.
|
|
3
|
+
|
|
4
|
+
Every policy file under `agents/policies/media/` (except README) must
|
|
5
|
+
be linked from at least one of:
|
|
6
|
+
|
|
7
|
+
* a skill SKILL.md (any .agent-src.uncompressed/skills/*/SKILL.md
|
|
8
|
+
or .claude/skills/*/SKILL.md),
|
|
9
|
+
* a routing rule under .agent-src.uncompressed/rules/, or
|
|
10
|
+
* a sibling policy file under agents/policies/media/.
|
|
11
|
+
|
|
12
|
+
A policy that no surface references is a silent policy and a silent
|
|
13
|
+
policy is a failed policy. This is the CI-side reachability guarantee
|
|
14
|
+
the agent-in-the-loop enforcement model rests on (see
|
|
15
|
+
agents/policies/media/README.md § Enforcement model).
|
|
16
|
+
|
|
17
|
+
Exit codes:
|
|
18
|
+
0 all policies linked
|
|
19
|
+
1 one or more orphan policies
|
|
20
|
+
"""
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import sys
|
|
24
|
+
from pathlib import Path
|
|
25
|
+
|
|
26
|
+
QUIET = "--quiet" in sys.argv
|
|
27
|
+
|
|
28
|
+
REPO = Path(__file__).resolve().parents[1]
|
|
29
|
+
POLICY_DIR = REPO / "agents" / "policies" / "media"
|
|
30
|
+
EXEMPT_STEMS = frozenset({"README"})
|
|
31
|
+
|
|
32
|
+
# Surfaces scanned for inbound references to policy files.
|
|
33
|
+
SCAN_ROOTS: tuple[Path, ...] = (
|
|
34
|
+
REPO / ".agent-src.uncompressed" / "skills",
|
|
35
|
+
REPO / ".agent-src.uncompressed" / "rules",
|
|
36
|
+
REPO / ".agent-src.uncompressed" / "commands",
|
|
37
|
+
REPO / ".claude" / "skills",
|
|
38
|
+
REPO / "agents" / "policies" / "media",
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def emit(msg: str) -> None:
|
|
43
|
+
if not QUIET:
|
|
44
|
+
print(msg)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def collect_policies() -> list[Path]:
|
|
48
|
+
if not POLICY_DIR.exists():
|
|
49
|
+
return []
|
|
50
|
+
return sorted(
|
|
51
|
+
p
|
|
52
|
+
for p in POLICY_DIR.glob("*.md")
|
|
53
|
+
if p.stem not in EXEMPT_STEMS
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def collect_scan_files() -> list[Path]:
|
|
58
|
+
files: list[Path] = []
|
|
59
|
+
for root in SCAN_ROOTS:
|
|
60
|
+
if not root.exists():
|
|
61
|
+
continue
|
|
62
|
+
files.extend(root.rglob("*.md"))
|
|
63
|
+
return files
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def referrers_for(policy: Path, scan_files: list[Path]) -> list[Path]:
|
|
67
|
+
"""Return files that reference `policy` by its repo-relative name
|
|
68
|
+
or basename. We accept both the full path token
|
|
69
|
+
(`agents/policies/media/likeness.md`) and the bare basename
|
|
70
|
+
(`likeness.md`) inside a markdown link, because sibling policies
|
|
71
|
+
link via relative `[likeness.md](likeness.md)` form.
|
|
72
|
+
"""
|
|
73
|
+
needles = (
|
|
74
|
+
f"policies/media/{policy.name}",
|
|
75
|
+
f"]({policy.name})",
|
|
76
|
+
)
|
|
77
|
+
referrers: list[Path] = []
|
|
78
|
+
for scan_file in scan_files:
|
|
79
|
+
# A policy can't satisfy its own linkage requirement.
|
|
80
|
+
if scan_file.resolve() == policy.resolve():
|
|
81
|
+
continue
|
|
82
|
+
try:
|
|
83
|
+
text = scan_file.read_text(encoding="utf-8", errors="replace")
|
|
84
|
+
except OSError:
|
|
85
|
+
continue
|
|
86
|
+
if any(n in text for n in needles):
|
|
87
|
+
referrers.append(scan_file)
|
|
88
|
+
return referrers
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def main() -> int:
|
|
92
|
+
if not POLICY_DIR.exists():
|
|
93
|
+
emit(
|
|
94
|
+
"media-policy-linkage: agents/policies/media/ missing — "
|
|
95
|
+
"nothing to lint."
|
|
96
|
+
)
|
|
97
|
+
return 0
|
|
98
|
+
|
|
99
|
+
policies = collect_policies()
|
|
100
|
+
if not policies:
|
|
101
|
+
emit(
|
|
102
|
+
"media-policy-linkage: agents/policies/media/ has no policy "
|
|
103
|
+
"files — nothing to lint."
|
|
104
|
+
)
|
|
105
|
+
return 0
|
|
106
|
+
|
|
107
|
+
scan_files = collect_scan_files()
|
|
108
|
+
orphans: list[Path] = []
|
|
109
|
+
for policy in policies:
|
|
110
|
+
referrers = referrers_for(policy, scan_files)
|
|
111
|
+
rel = policy.relative_to(REPO)
|
|
112
|
+
if not referrers:
|
|
113
|
+
orphans.append(policy)
|
|
114
|
+
emit(f"❌ ORPHAN {rel}")
|
|
115
|
+
continue
|
|
116
|
+
emit(f"✅ {rel} ({len(referrers)} referrer(s))")
|
|
117
|
+
|
|
118
|
+
if orphans:
|
|
119
|
+
print(
|
|
120
|
+
f"\nmedia-policy-linkage: {len(orphans)} orphan policy "
|
|
121
|
+
f"file(s) — every policy must be linked from a skill, rule, "
|
|
122
|
+
f"or sibling policy.",
|
|
123
|
+
file=sys.stderr,
|
|
124
|
+
)
|
|
125
|
+
for o in orphans:
|
|
126
|
+
print(
|
|
127
|
+
f" - {o.relative_to(REPO)}",
|
|
128
|
+
file=sys.stderr,
|
|
129
|
+
)
|
|
130
|
+
return 1
|
|
131
|
+
|
|
132
|
+
emit(
|
|
133
|
+
f"media-policy-linkage: {len(policies)} policy file(s) — all "
|
|
134
|
+
f"linked."
|
|
135
|
+
)
|
|
136
|
+
return 0
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
if __name__ == "__main__":
|
|
140
|
+
sys.exit(main())
|