@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,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rule-refactor
|
|
3
|
+
description: "Use when the rule set is over the Augment budget, when a new rule would breach it, or when asked to audit / merge / prune rules — runs the audit pipeline and proposes a verdict per rule."
|
|
4
|
+
source: package
|
|
5
|
+
domain: process
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- cloud_safe: degrade -->
|
|
9
|
+
|
|
10
|
+
# rule-refactor
|
|
11
|
+
|
|
12
|
+
## When to use
|
|
13
|
+
|
|
14
|
+
* `measure_augment_budget --check` fails (utilisation ≥ 0.95)
|
|
15
|
+
* A new rule would push the budget over 0.95 — caught by the budget
|
|
16
|
+
gate in [`rule-writing`](../rule-writing/SKILL.md)
|
|
17
|
+
* User says "audit rules", "rule cleanup", "rules over budget",
|
|
18
|
+
"prune rules", "merge rules", "rule system review"
|
|
19
|
+
* Periodic governance pass after a batch of rule additions
|
|
20
|
+
|
|
21
|
+
Do NOT use this skill for:
|
|
22
|
+
|
|
23
|
+
* Editing a single rule's content → [`rule-writing`](../rule-writing/SKILL.md)
|
|
24
|
+
* Picking always vs auto for one new rule → [`rule-writing`](../rule-writing/SKILL.md)
|
|
25
|
+
|
|
26
|
+
## Iron Law
|
|
27
|
+
|
|
28
|
+
**Threshold-lift is forbidden.** When the budget breaches, the
|
|
29
|
+
content must shrink — not the gate. Loosening `FAIL_THRESHOLD` in
|
|
30
|
+
`scripts/measure_augment_budget.py` to make CI pass is an explicit
|
|
31
|
+
anti-pattern. The only valid budget-growth move is an ADR that
|
|
32
|
+
raises `TOTAL_CAP`.
|
|
33
|
+
|
|
34
|
+
## Procedure
|
|
35
|
+
|
|
36
|
+
### 1. Inspect the current budget state
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
python3 scripts/measure_augment_budget.py --json > /tmp/budget-before.json
|
|
40
|
+
python3 scripts/measure_rule_budget.py --json > /tmp/rule-budget-before.json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. Run the audit pipeline
|
|
44
|
+
|
|
45
|
+
The audit infrastructure already exists — compose it:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
python3 scripts/audit_auto_rules.py # → agents/reports/auto-rules-audit.{json,md}
|
|
49
|
+
python3 scripts/audit_overlap.py # → appends overlap pairs to the MD
|
|
50
|
+
python3 scripts/audit_likelihood.py # → agents/reports/auto-rules-likelihood.json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Then read `agents/reports/auto-rules-audit.md` end-to-end.
|
|
54
|
+
|
|
55
|
+
### 3. Categorise every flagged rule
|
|
56
|
+
|
|
57
|
+
For each rule the audit surfaces (overlap pair, low-likelihood, oversized,
|
|
58
|
+
or the new addition that triggered this skill), assign exactly one verdict:
|
|
59
|
+
|
|
60
|
+
| Verdict | Test |
|
|
61
|
+
|---|---|
|
|
62
|
+
| **keep** | Iron-Law / always-on safety net, no overlap, fires often |
|
|
63
|
+
| **merge** | ≥ 2 rules same domain, near-identical triggers, overlap ≥ 0.4 |
|
|
64
|
+
| **delete** | Never fires (low-likelihood + no path/keyword hit in 30 days), or fully subsumed by a skill |
|
|
65
|
+
| **move-to-context** | Body is reference material (tables, mechanics, examples) — the obligation is short, the rest is lookup |
|
|
66
|
+
| **promote-to-skill** | Body has numbered steps / a workflow — not a constraint |
|
|
67
|
+
|
|
68
|
+
### 4. Present the verdict table to the user
|
|
69
|
+
|
|
70
|
+
One Markdown table, one row per flagged rule, **before** any file
|
|
71
|
+
change. User approves the list. No silent edits.
|
|
72
|
+
|
|
73
|
+
### 5. Apply approved changes
|
|
74
|
+
|
|
75
|
+
For each approved verdict:
|
|
76
|
+
|
|
77
|
+
* **merge** → rewrite the surviving rule to cover both domains;
|
|
78
|
+
delete the absorbed one; update any `routes_to:` references.
|
|
79
|
+
* **delete** → remove the file from `.agent-src.uncompressed/rules/`
|
|
80
|
+
and the corresponding `.agent-src/rules/` projection.
|
|
81
|
+
* **move-to-context** → extract the body into
|
|
82
|
+
`.agent-src.uncompressed/contexts/<area>/<name>.md`, replace the
|
|
83
|
+
rule body with the obligation + a `load_context:` pointer.
|
|
84
|
+
* **promote-to-skill** → create
|
|
85
|
+
`.agent-src.uncompressed/skills/<name>/SKILL.md`, replace the rule
|
|
86
|
+
with an auto-trigger stub that routes to it (or delete the rule
|
|
87
|
+
entirely if the skill's own trigger suffices).
|
|
88
|
+
|
|
89
|
+
### 6. Re-validate
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
bash scripts/compress.sh --sync
|
|
93
|
+
python3 scripts/compress.py --generate-tools
|
|
94
|
+
python3 scripts/measure_augment_budget.py --check # must exit 0
|
|
95
|
+
python3 scripts/skill_linter.py --all # 0 FAIL
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Then run your package's full CI pipeline (see `Taskfile.yml` for the
|
|
99
|
+
canonical sequence) before pushing.
|
|
100
|
+
|
|
101
|
+
### 7. Record the delta
|
|
102
|
+
|
|
103
|
+
Append a snapshot to `agents/.augment-budget-history.jsonl`:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
python3 scripts/measure_augment_budget.py --trend-append
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Commit the cleanup as a separate chunk from any rule-add commits so
|
|
110
|
+
the history shows "added X" + "cleaned up Y" as distinct steps.
|
|
111
|
+
|
|
112
|
+
## Output format
|
|
113
|
+
|
|
114
|
+
1. Verdict table (approved by user) at the top of the cleanup PR description
|
|
115
|
+
2. Per-verdict commits (one per merge / delete / move / promote group)
|
|
116
|
+
3. Final `measure_augment_budget --check` output showing utilisation < 0.95
|
|
117
|
+
4. Trend snapshot recorded
|
|
118
|
+
|
|
119
|
+
## Gotchas
|
|
120
|
+
|
|
121
|
+
* Do NOT raise `FAIL_THRESHOLD` to dodge the audit
|
|
122
|
+
* Do NOT delete a rule that has a `routes_to:` pointer without
|
|
123
|
+
updating the pointer's source
|
|
124
|
+
* Do NOT merge rules across tier boundaries (e.g. tier-1 always
|
|
125
|
+
with a tier-3 stub) without surfacing the tier collapse to the user
|
|
126
|
+
* Do NOT skip the trend-append — the history is what tells future
|
|
127
|
+
agents how the cap was managed
|
|
128
|
+
|
|
129
|
+
## Do NOT
|
|
130
|
+
|
|
131
|
+
* Do NOT loosen the budget gate
|
|
132
|
+
* Do NOT touch the cap (`TOTAL_CAP`) without an ADR
|
|
133
|
+
* Do NOT apply changes before user approves the verdict table
|
|
134
|
+
* Do NOT delete the rule-refactor audit reports — they're the
|
|
135
|
+
artifact reviewers cite
|
|
136
|
+
|
|
137
|
+
## Cloud Behavior
|
|
138
|
+
|
|
139
|
+
On cloud surfaces, the audit scripts are not reachable. The skill
|
|
140
|
+
still applies — prose-only:
|
|
141
|
+
|
|
142
|
+
* Inspect the rule list (frontmatter + descriptions) and propose the
|
|
143
|
+
verdict table from reading alone.
|
|
144
|
+
* Tell the user to run the audit scripts locally before applying.
|
|
145
|
+
* Do not attempt to call any script.
|
|
@@ -129,12 +129,38 @@ the PR or split by responsibility.
|
|
|
129
129
|
* Run the full CI pipeline locally (see `Taskfile.yml` in this repo for
|
|
130
130
|
the script list) — must exit 0 except for tolerated warnings.
|
|
131
131
|
|
|
132
|
+
### 5b. Budget-discipline gate — hard stop
|
|
133
|
+
|
|
134
|
+
After validation, before declaring the rule done, run:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
python3 scripts/measure_augment_budget.py --check
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
If utilisation is `≥ 0.95` (or the check exits non-zero), **STOP** and
|
|
141
|
+
invoke [`rule-refactor`](../rule-refactor/SKILL.md). Do NOT:
|
|
142
|
+
|
|
143
|
+
* Trim the new rule further to "just fit" — if it needs that body to
|
|
144
|
+
do its job, the rule is right and the rule set around it is wrong.
|
|
145
|
+
* Raise `FAIL_THRESHOLD` in `scripts/measure_augment_budget.py` —
|
|
146
|
+
threshold-lift is explicitly forbidden (see the
|
|
147
|
+
[`validation-budget`](../../rules/validation-budget.md) rule and
|
|
148
|
+
the `rule-refactor` Iron Law).
|
|
149
|
+
* Promote an always-rule to auto to dodge the cap if the rule's
|
|
150
|
+
semantics require always-on visibility — that breaks the rule, not
|
|
151
|
+
the budget.
|
|
152
|
+
|
|
153
|
+
The discipline: budget pressure is the signal that the rule **set**
|
|
154
|
+
needs a cleanup pass, not that the new rule needs to be smaller. The
|
|
155
|
+
`rule-refactor` skill runs the audit and proposes merge / delete /
|
|
156
|
+
move-to-context / promote-to-skill so the new rule earns its space.
|
|
157
|
+
|
|
132
158
|
### 6. Governance baseline (when introducing a new linter check)
|
|
133
159
|
|
|
134
160
|
**Advisory, reviewer-checked — no CI gate.** When the same PR adds a
|
|
135
|
-
new check to `scripts/skill_linter.py` (or strengthens an existing
|
|
136
|
-
such that previously-clean rules now warn, the PR body MUST
|
|
137
|
-
pre-existing violations on `main` in a Markdown table:
|
|
161
|
+
new check to `scripts/skill_linter.py` (or strengthens an existing
|
|
162
|
+
one) such that previously-clean rules now warn, the PR body MUST
|
|
163
|
+
record the pre-existing violations on `main` in a Markdown table:
|
|
138
164
|
|
|
139
165
|
```markdown
|
|
140
166
|
### Pre-existing baseline (informational)
|
|
@@ -144,11 +170,11 @@ pre-existing violations on `main` in a Markdown table:
|
|
|
144
170
|
| {new_code} | N | (a) genuine fix · (b) accept · (c) check too aggressive |
|
|
145
171
|
```
|
|
146
172
|
|
|
147
|
-
Forward-only: the new check applies to **the rule under review** and
|
|
148
|
-
**future** edits. The baseline table is informational so reviewers
|
|
149
|
-
distinguish genuine debt from acceptable carry-overs without
|
|
150
|
-
full lint output. See
|
|
151
|
-
3-bucket reference.
|
|
173
|
+
Forward-only: the new check applies to **the rule under review** and
|
|
174
|
+
to **future** edits. The baseline table is informational so reviewers
|
|
175
|
+
can distinguish genuine debt from acceptable carry-overs without
|
|
176
|
+
diffing the full lint output. See
|
|
177
|
+
`agents/analysis/lint-warning-triage.md` for the 3-bucket reference.
|
|
152
178
|
|
|
153
179
|
## Frontmatter shape
|
|
154
180
|
|
|
@@ -3,7 +3,6 @@ name: scene-expander
|
|
|
3
3
|
description: "Use when expanding a one-line idea into the 12-block Cinematic Scene Blueprint — provider-agnostic, includes optional dialogue + ambient. Triggers 'expand this scene', 'blueprint for X'."
|
|
4
4
|
personas:
|
|
5
5
|
- hollywood-director
|
|
6
|
-
- pixar-storyboard-artist
|
|
7
6
|
source: package
|
|
8
7
|
domain: product
|
|
9
8
|
---
|
|
@@ -13,9 +12,10 @@ domain: product
|
|
|
13
12
|
> Expand a one-line idea or script line into the **Cinematic Scene
|
|
14
13
|
> Blueprint** — 12 labeled blocks consumed by
|
|
15
14
|
> [`parse-blueprint.sh`](./scene-blueprint.schema.yaml). Picks
|
|
16
|
-
> `hollywood-director` for live-action
|
|
17
|
-
>
|
|
18
|
-
> is
|
|
15
|
+
> `hollywood-director` for live-action; hands off animated beats to
|
|
16
|
+
> [`pixar-storyteller`](../pixar-storyteller/SKILL.md). Output is
|
|
17
|
+
> provider-agnostic — provider tuning is
|
|
18
|
+
> [`motion-choreographer`](../motion-choreographer/SKILL.md).
|
|
19
19
|
|
|
20
20
|
## When to use
|
|
21
21
|
|
|
@@ -38,9 +38,11 @@ Do NOT use when:
|
|
|
38
38
|
|
|
39
39
|
1. Read the input line. Classify as **live-action / photoreal** or
|
|
40
40
|
**animated / stylized**.
|
|
41
|
-
2. Live-action → load `hollywood-director` voice. Animated →
|
|
42
|
-
`pixar-
|
|
43
|
-
|
|
41
|
+
2. Live-action → load `hollywood-director` voice. Animated → hand
|
|
42
|
+
off to [`pixar-storyteller`](../pixar-storyteller/SKILL.md) (its
|
|
43
|
+
procedure carries the acting / beat-decomposition lens). Hybrid
|
|
44
|
+
(live-action with VFX) → `hollywood-director`; record VFX intent
|
|
45
|
+
in ENVIRONMENT.
|
|
44
46
|
3. Check for an existing `character.json` lock under
|
|
45
47
|
`agents/ai-video/<project>/characters/`.
|
|
46
48
|
|
|
@@ -120,3 +122,16 @@ Any "no" → revise that block.
|
|
|
120
122
|
- Do NOT paraphrase identity tokens when a lock exists.
|
|
121
123
|
- Do NOT mix live-action LENS prescriptions with animated STYLE
|
|
122
124
|
anchors in the same scene — pick one mode.
|
|
125
|
+
|
|
126
|
+
## Policies
|
|
127
|
+
|
|
128
|
+
The 12-block Cinematic Scene Blueprint is the policy choke point — every downstream skill (`motion-choreographer`, `video-director`) inherits whatever the blueprint encodes. Before emitting:
|
|
129
|
+
|
|
130
|
+
- [`agents/policies/media/likeness.md`](../../../agents/policies/media/likeness.md) — when the SUBJECT block names or visually identifies a real person.
|
|
131
|
+
- [`agents/policies/media/public-figures.md`](../../../agents/policies/media/public-figures.md) — when the SUBJECT block is a recognised public figure.
|
|
132
|
+
- [`agents/policies/media/brand-impersonation.md`](../../../agents/policies/media/brand-impersonation.md) — when STYLE / ENVIRONMENT references a recognised brand's visual identity.
|
|
133
|
+
- [`agents/policies/media/style.md`](../../../agents/policies/media/style.md) — when STYLE anchors to a named living artist or studio as the primary signature.
|
|
134
|
+
- [`agents/policies/media/disclosure.md`](../../../agents/policies/media/disclosure.md) — every distributed blueprint output carries the AI-generation disclosure downstream.
|
|
135
|
+
|
|
136
|
+
Refuse-and-surface at the blueprint layer; do not push policy questions down to the adapter.
|
|
137
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: security
|
|
3
|
-
description: "Use when applying security best practices — authentication, authorization
|
|
3
|
+
description: "Use when applying security best practices — authentication, authorization, CSRF protection, input sanitization, rate limiting, or secure coding — stack-agnostic."
|
|
4
4
|
source: package
|
|
5
5
|
domain: quality
|
|
6
6
|
---
|
|
@@ -13,65 +13,74 @@ Use when implementing authentication, authorization, or any security-sensitive f
|
|
|
13
13
|
|
|
14
14
|
Do NOT use when:
|
|
15
15
|
|
|
16
|
-
* Validation logic only — route to [`laravel-validation`](../laravel-validation/SKILL.md)
|
|
17
|
-
* Full security audit — route to [`security-audit`](../security-audit/SKILL.md)
|
|
18
|
-
* You need a pre-implementation threat model — route to
|
|
19
|
-
|
|
20
|
-
* You need end-to-end authorization analysis — route to
|
|
21
|
-
[`authz-review`](../authz-review/SKILL.md)
|
|
16
|
+
* Validation logic only — route to the project's validation carve-out ([`laravel-validation`](../laravel-validation/SKILL.md) for Laravel; otherwise the framework-native primitive — Zod / class-validator, Pydantic, struct-tag validators).
|
|
17
|
+
* Full security audit — route to [`security-audit`](../security-audit/SKILL.md).
|
|
18
|
+
* You need a pre-implementation threat model — route to [`threat-modeling`](../threat-modeling/SKILL.md).
|
|
19
|
+
* You need end-to-end authorization analysis — route to [`authz-review`](../authz-review/SKILL.md).
|
|
22
20
|
|
|
23
|
-
##
|
|
21
|
+
## Stack-specific carve-outs
|
|
22
|
+
|
|
23
|
+
The procedure below is stack-agnostic. For framework-specific primitives (Laravel Policies / Gates / FormRequests, Symfony voters, NestJS guards, Next.js middleware), defer to:
|
|
24
|
+
|
|
25
|
+
| Stack | Carve-out |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Laravel | [`laravel`](../laravel/SKILL.md), [`laravel-validation`](../laravel-validation/SKILL.md), [`laravel-middleware`](../laravel-middleware/SKILL.md) |
|
|
28
|
+
| Symfony | [`symfony-workflow`](../symfony-workflow/SKILL.md) |
|
|
29
|
+
| Next.js / TS | [`nextjs-patterns`](../nextjs-patterns/SKILL.md) |
|
|
30
|
+
|
|
31
|
+
## Procedure: Implement security for a feature (stack-neutral)
|
|
24
32
|
|
|
25
33
|
### Step 0: Inspect
|
|
26
34
|
|
|
27
|
-
1. Read `agents/authentication.md`
|
|
28
|
-
2. Read
|
|
29
|
-
3.
|
|
35
|
+
1. Read the project's auth doc (`agents/authentication.md`, `docs/auth.md`, or framework docs).
|
|
36
|
+
2. Read the project's authorization doc (gates / policies / voters / guards).
|
|
37
|
+
3. Locate existing authorization rules in the project's idiomatic location (Laravel `app/Policies/`, Symfony `src/Security/Voter/`, NestJS `*.guard.ts`).
|
|
30
38
|
|
|
31
39
|
### Step 1: Authentication
|
|
32
40
|
|
|
33
|
-
-
|
|
34
|
-
- Check
|
|
35
|
-
-
|
|
41
|
+
- Identify the auth mechanism in use (session, JWT, OAuth, API token) — read the framework's auth config (`config/auth.php`, `next-auth.config.ts`, Symfony `security.yaml`, FastAPI dependency).
|
|
42
|
+
- Check guard / strategy / provider configuration.
|
|
43
|
+
- Multi-tenant identification happens **after** authentication — see [`multi-tenancy`](../multi-tenancy/SKILL.md).
|
|
36
44
|
|
|
37
45
|
### Step 2: Authorization
|
|
38
46
|
|
|
39
|
-
1. Create
|
|
40
|
-
2.
|
|
41
|
-
3.
|
|
47
|
+
1. Create / locate the authz rule in the framework's idiomatic primitive (Policy, voter, guard, middleware, route dependency).
|
|
48
|
+
2. Apply it at the request boundary (FormRequest `authorize()`, controller / route-handler dependency, middleware chain).
|
|
49
|
+
3. Cover non-model gates (cross-aggregate rules) — keep them centralised, not scattered across handlers.
|
|
42
50
|
|
|
43
51
|
### Step 3: Review for adversarial
|
|
44
52
|
|
|
45
|
-
For security-sensitive changes, run `adversarial-review`
|
|
53
|
+
For security-sensitive changes, run [`adversarial-review`](../adversarial-review/SKILL.md).
|
|
46
54
|
Focus on: attack surface, trusting user input, authorization gaps.
|
|
47
55
|
|
|
48
56
|
## Conventions
|
|
49
57
|
|
|
50
|
-
→
|
|
58
|
+
→ For PHP / Laravel specifics (auth helpers, mass assignment, Blade escaping, CSRF middleware): see guideline `docs/guidelines/php/security.md`.
|
|
59
|
+
→ For other stacks, follow the framework's hardening guide and the carve-outs above.
|
|
51
60
|
|
|
52
61
|
### Validate
|
|
53
62
|
|
|
54
|
-
- Verify all user input is validated via
|
|
55
|
-
- Confirm authorization check exists
|
|
56
|
-
- Check that no raw user input reaches SQL, HTML output, or
|
|
57
|
-
- Run
|
|
63
|
+
- Verify all user input is validated at the boundary via the framework's primitive — never trust raw request data.
|
|
64
|
+
- Confirm an authorization check exists for every state-changing action.
|
|
65
|
+
- Check that no raw user input reaches SQL, HTML output, shell commands, or template renderers without escaping.
|
|
66
|
+
- Run the project's type-checker — must pass (catches type-safety issues that enable injection).
|
|
58
67
|
|
|
59
68
|
## Output format
|
|
60
69
|
|
|
61
|
-
1. Security-hardened code with auth, validation, and
|
|
62
|
-
2. Policy
|
|
70
|
+
1. Security-hardened code with auth, input validation at the boundary, and output encoding.
|
|
71
|
+
2. Authorization rule (Policy / voter / guard / middleware) co-located with the route.
|
|
63
72
|
|
|
64
73
|
## Gotcha
|
|
65
74
|
|
|
66
75
|
- Validation ensures format, not intent — don't trust input after validation alone.
|
|
67
|
-
- `Gate::authorize()` throws
|
|
68
|
-
- Rate
|
|
76
|
+
- "Throw" vs "boolean" authz APIs behave differently (`Gate::authorize()` throws vs `Gate::allows()` returns bool in Laravel; `CanActivate` in NestJS throws; FastAPI dependencies throw `HTTPException`). Pick based on how the framework expects failure to surface.
|
|
77
|
+
- Rate-limit ALL public endpoints, not just login.
|
|
69
78
|
- Never log passwords, tokens, or API keys.
|
|
70
79
|
|
|
71
80
|
## Do NOT
|
|
72
81
|
|
|
73
|
-
- Do NOT bypass
|
|
74
|
-
- Do NOT
|
|
82
|
+
- Do NOT bypass the framework's request-validation primitive inside handlers.
|
|
83
|
+
- Do NOT bulk-bind raw request payloads to ORM entities without an explicit allow-list (`$fillable` / `$guarded`, DTO mapping, Pydantic model).
|
|
75
84
|
- Do NOT store plaintext passwords or secrets in the database.
|
|
76
85
|
- Do NOT expose internal error details in production API responses.
|
|
77
86
|
|
|
@@ -193,7 +193,7 @@ Before scoring the 5 Killers, verify structure:
|
|
|
193
193
|
```markdown
|
|
194
194
|
| Skill | K1 Desc | K2 Over | K3 Obvious | K4 Gotcha | K5 Size | K6 Pointer | K7 Analysis | Verdict |
|
|
195
195
|
|---|---|---|---|---|---|---|---|---|
|
|
196
|
-
| dto
|
|
196
|
+
| laravel-dto | ❌ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ | Fix description |
|
|
197
197
|
```
|
|
198
198
|
|
|
199
199
|
## Output format
|
|
@@ -172,7 +172,7 @@ For mock-isolation failure modes (separate concern), see
|
|
|
172
172
|
|
|
173
173
|
## Examples
|
|
174
174
|
|
|
175
|
-
### PHP / Pest
|
|
175
|
+
### Example A — PHP / Pest
|
|
176
176
|
|
|
177
177
|
```php
|
|
178
178
|
// tests/Unit/EmailValidatorTest.php — RED
|
|
@@ -203,7 +203,7 @@ final class EmailValidator
|
|
|
203
203
|
Run the filter again → passes. No additional rules (format, MX, length)
|
|
204
204
|
until a next failing test drives them.
|
|
205
205
|
|
|
206
|
-
###
|
|
206
|
+
### Example B — TypeScript / Vitest
|
|
207
207
|
|
|
208
208
|
```ts
|
|
209
209
|
// src/retry.test.ts — RED
|
|
@@ -270,8 +270,8 @@ wait for their own failing tests.
|
|
|
270
270
|
|
|
271
271
|
## When to hand over to another skill
|
|
272
272
|
|
|
273
|
-
*
|
|
274
|
-
* Full Pest conventions
|
|
273
|
+
* Project type-checker / linter / formatter (PHPStan, ECS, Rector for PHP — tsc / eslint / prettier for TS — ruff / mypy for Python) → [`quality-tools`](../quality-tools/SKILL.md)
|
|
274
|
+
* Full Pest conventions and Laravel test helpers → [`pest-testing`](../pest-testing/SKILL.md)
|
|
275
275
|
* Running tests inside Docker → [`tests-execute`](../tests-execute/SKILL.md)
|
|
276
276
|
* Investigating why a test is failing for non-obvious reasons →
|
|
277
277
|
[`systematic-debugging`](../systematic-debugging/SKILL.md)
|
|
@@ -3,6 +3,7 @@ name: test-performance
|
|
|
3
3
|
description: "Use when optimizing test suite performance — database setup, seeder optimization, parallel testing, CI pipeline efficiency, or RefreshDatabase alternatives."
|
|
4
4
|
source: package
|
|
5
5
|
domain: quality
|
|
6
|
+
framework: laravel
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# test-performance
|
|
@@ -16,7 +17,7 @@ Use this skill when:
|
|
|
16
17
|
- Parallel testing needs optimization
|
|
17
18
|
- Seeders need performance analysis
|
|
18
19
|
- CI pipeline test jobs need to be faster
|
|
19
|
-
- Investigating flaky tests caused by
|
|
20
|
+
- Investigating flaky tests caused by database state
|
|
20
21
|
|
|
21
22
|
## Procedure: Analyze test performance
|
|
22
23
|
|
|
@@ -56,7 +57,7 @@ Check these areas in order of typical impact:
|
|
|
56
57
|
| **Migration count** | How many CREATE TABLE statements? | High if >20 |
|
|
57
58
|
| **Schema dump** | Is `database/schema/` used? | High if missing |
|
|
58
59
|
| **Seeder INSERT method** | Individual `save()` vs bulk insert? | Medium |
|
|
59
|
-
| **Truncation** | Per-seeder truncate vs centralized? | Low (but
|
|
60
|
+
| **Truncation** | Per-seeder truncate vs centralized? | Low (but causes correctness issues) |
|
|
60
61
|
| **Connection discovery** | Dynamic `getPdo()` probing? | Low |
|
|
61
62
|
| **Parallel worker setup** | Does each worker re-migrate? | High |
|
|
62
63
|
|
|
@@ -77,7 +78,7 @@ php artisan schema:dump --database=api_database
|
|
|
77
78
|
#### B. Template DB Cloning (high ROI for parallel tests)
|
|
78
79
|
|
|
79
80
|
Instead of each parallel worker running migrate+seed independently:
|
|
80
|
-
1. Prepare ONE template
|
|
81
|
+
1. Prepare ONE template database (migrate + seed)
|
|
81
82
|
2. Clone template for each worker via mysqldump
|
|
82
83
|
|
|
83
84
|
```bash
|
|
@@ -93,7 +94,7 @@ mysqldump template_db | mysql worker_db_test_1
|
|
|
93
94
|
|
|
94
95
|
#### C. Skip Migrate+Seed Flag (high ROI for local dev)
|
|
95
96
|
|
|
96
|
-
Add a config flag to skip
|
|
97
|
+
Add a config flag to skip database setup when DB is already prepared:
|
|
97
98
|
|
|
98
99
|
```php
|
|
99
100
|
// config/testing.php
|
|
@@ -159,7 +160,7 @@ Replace dynamic `getPdo()` probing with explicit config:
|
|
|
159
160
|
## Gotcha
|
|
160
161
|
|
|
161
162
|
- Don't use RefreshDatabase when DatabaseTransactions suffices — full refresh is 10x slower.
|
|
162
|
-
- The model forgets that parallel tests share the
|
|
163
|
+
- The model forgets that parallel tests share the database — use unique identifiers in test data.
|
|
163
164
|
- Seeder optimization has the highest ROI — a 2s seeder running 100 times = 200s wasted.
|
|
164
165
|
- Don't add indexes to test databases just for test performance — the real fix is better test design.
|
|
165
166
|
|
|
@@ -50,9 +50,9 @@ mapping before running anything:
|
|
|
50
50
|
| Claim | Evidence command |
|
|
51
51
|
|---|---|
|
|
52
52
|
| "tests pass" | full or targeted test suite |
|
|
53
|
-
| "no static errors" | PHPStan
|
|
54
|
-
| "style is clean" | ECS / Prettier / ESLint |
|
|
55
|
-
| "no automated refactor pending" |
|
|
53
|
+
| "no static errors" | project's type-checker on changed scope (PHPStan, `tsc --noEmit`, mypy / pyright, `go vet`, `cargo check`) |
|
|
54
|
+
| "style is clean" | project's linter + formatter (ECS / Prettier / ESLint / Ruff / Black / gofmt / rustfmt) |
|
|
55
|
+
| "no automated refactor pending" | project's auto-refactor dry-run if one exists (Rector for PHP — otherwise skip this row) |
|
|
56
56
|
| "endpoint works" | curl / Postman / integration test output |
|
|
57
57
|
| "UI renders" | Playwright snapshot or manual browser check |
|
|
58
58
|
| "bug is fixed" | regression test passes |
|
|
@@ -60,8 +60,7 @@ mapping before running anything:
|
|
|
60
60
|
### 2. Run the command fresh
|
|
61
61
|
|
|
62
62
|
* Run against the current working tree, not a cached summary.
|
|
63
|
-
*
|
|
64
|
-
[`docker`](../docker/SKILL.md) and [`tests-execute`](../tests-execute/SKILL.md)).
|
|
63
|
+
* If the project runs commands inside a container or VM (Docker, Devcontainer, Vagrant), run them there — not on the host. See [`docker`](../docker/SKILL.md) and [`tests-execute`](../tests-execute/SKILL.md).
|
|
65
64
|
* Use targeted runs during iteration (`--filter=`, `--testNamePattern`).
|
|
66
65
|
Run the full suite only in the final verification pass.
|
|
67
66
|
|
|
@@ -77,40 +76,38 @@ mapping before running anything:
|
|
|
77
76
|
Ask: *"Does this output actually support what I am about to say?"*
|
|
78
77
|
|
|
79
78
|
* 248/250 tests passed with 2 skipped → do not say "all green"; name the skips.
|
|
80
|
-
*
|
|
79
|
+
* Type-checker exit 0 but only analyzed one file → do not say "no static
|
|
81
80
|
errors"; name the scope that was checked.
|
|
82
81
|
* `curl` returned 200 → check the body, not just the status.
|
|
83
82
|
|
|
84
83
|
### 5. Only then make the claim
|
|
85
84
|
|
|
86
|
-
Reference the evidence: *"Tests: 250/250 passed.
|
|
87
|
-
|
|
85
|
+
Reference the evidence: *"Tests: 250/250 passed. Type-checker: 0 errors
|
|
86
|
+
on the changed scope."* — not *"everything looks good"*.
|
|
88
87
|
|
|
89
|
-
## The end-of-work sequence
|
|
88
|
+
## The end-of-work sequence
|
|
90
89
|
|
|
91
90
|
When all code changes are done and you are ready to report completion:
|
|
92
91
|
|
|
93
|
-
1. **Targeted tests** — the test(s) covering the changed code pass
|
|
94
|
-
2. **Full test suite** — only after targeted pass is green
|
|
95
|
-
3. **
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
5. Only then: claim completion or suggest `/commit`, push, or PR
|
|
92
|
+
1. **Targeted tests** — the test(s) covering the changed code pass.
|
|
93
|
+
2. **Full test suite** — only after targeted pass is green.
|
|
94
|
+
3. **Static analysis pipeline** — run the project's type-checker → auto-refactor dry-run (if any) → linter / formatter → type-checker (second pass catches issues the refactor / formatter may have introduced).
|
|
95
|
+
4. Fix any output from steps 1–3 and restart the sequence.
|
|
96
|
+
5. Only then: claim completion or suggest `/commit`, push, or PR.
|
|
99
97
|
|
|
100
|
-
Do not run the full quality pipeline between intermediate edits — it
|
|
101
|
-
burns time and tokens. Use it once, at the end.
|
|
98
|
+
Do not run the full quality pipeline between intermediate edits — it burns time and tokens. Use it once, at the end.
|
|
102
99
|
|
|
103
|
-
|
|
104
|
-
|
|
100
|
+
→ For the **exact PHP commands** (PHPStan → Rector → ECS → PHPStan): see [`quality-tools`](../quality-tools/SKILL.md).
|
|
101
|
+
→ For TS / JS, Python, Go, Rust pipelines: the project's `Taskfile.yml` / `package.json scripts` / `Makefile` is the source of truth — read it before improvising.
|
|
105
102
|
|
|
106
103
|
## Minimum evidence per task type
|
|
107
104
|
|
|
108
105
|
| Task type | Required evidence |
|
|
109
106
|
|---|---|
|
|
110
|
-
| Code change (logic) | Targeted tests +
|
|
111
|
-
| New feature | Tests (new + suite) +
|
|
107
|
+
| Code change (logic) | Targeted tests + project's type-checker on changed scope |
|
|
108
|
+
| New feature | Tests (new + suite) + type-checker + smoke check (curl / UI / integration probe) |
|
|
112
109
|
| Bug fix | Regression test (RED → GREEN) + full suite |
|
|
113
|
-
| Refactoring | Full suite +
|
|
110
|
+
| Refactoring | Full suite + type-checker + auto-refactor dry-run if available |
|
|
114
111
|
| Config / env change | Relevant command or service output (not just file diff) |
|
|
115
112
|
| Migration | Migration run output + rollback dry-run + tests |
|
|
116
113
|
| API endpoint | HTTP response body + status + content-type |
|
|
@@ -140,7 +137,7 @@ When reporting completion to the user:
|
|
|
140
137
|
|
|
141
138
|
* A "no output" result from a linter is not proof it ran — check the
|
|
142
139
|
exit code and the analyzed-file count.
|
|
143
|
-
* Silencing a warning with `@phpstan-ignore-next-line
|
|
140
|
+
* Silencing a warning with `@phpstan-ignore-next-line`, `// @ts-expect-error`, `# type: ignore`, or `//nolint`
|
|
144
141
|
without a reason code passes the linter but defers the real problem.
|
|
145
142
|
* Running tests with `--stop-on-failure` then reporting "passed" — it
|
|
146
143
|
only ran until the first failure; the green streak after it is
|
|
@@ -150,7 +147,7 @@ When reporting completion to the user:
|
|
|
150
147
|
change is large.
|
|
151
148
|
* Running the test suite on the wrong branch (forgot to switch or
|
|
152
149
|
rebase) — verify `git status` and `git log -1` before the final gate.
|
|
153
|
-
* A previously green
|
|
150
|
+
* A previously green static-analysis run in the same conversation is stale as
|
|
154
151
|
soon as any edit lands. Run it again.
|
|
155
152
|
|
|
156
153
|
## Red flags — STOP and run the gate
|
|
@@ -159,7 +156,7 @@ When reporting completion to the user:
|
|
|
159
156
|
command-output reference in the same message
|
|
160
157
|
* About to suggest `/commit` / push / PR without a verification block
|
|
161
158
|
* Relying on an earlier-in-conversation test run
|
|
162
|
-
* Partial evidence (tests green,
|
|
159
|
+
* Partial evidence (tests green, type-checker / linter not run — or vice versa)
|
|
163
160
|
* "The failing test is unrelated, let me skip it" — verify first, then
|
|
164
161
|
decide
|
|
165
162
|
* Reporting a green run by paraphrasing instead of quoting exit code
|
|
@@ -177,8 +174,8 @@ When reporting completion to the user:
|
|
|
177
174
|
|
|
178
175
|
## When to hand over to another skill
|
|
179
176
|
|
|
180
|
-
* Exact PHPStan / Rector / ECS
|
|
181
|
-
* Running tests inside
|
|
177
|
+
* Exact PHP quality commands (PHPStan / Rector / ECS) → [`quality-tools`](../quality-tools/SKILL.md)
|
|
178
|
+
* Running tests inside a container / VM → [`tests-execute`](../tests-execute/SKILL.md)
|
|
182
179
|
* Writing the regression test that the gate requires →
|
|
183
180
|
[`test-driven-development`](../test-driven-development/SKILL.md)
|
|
184
181
|
* Diagnosing why the gate failed → [`systematic-debugging`](../systematic-debugging/SKILL.md)
|
|
@@ -111,3 +111,16 @@ Any "no" → revise that block before handing off.
|
|
|
111
111
|
- Do NOT collapse anticipation / action / reaction into one verb.
|
|
112
112
|
- Do NOT use "cinematic" without lens + lighting + camera move.
|
|
113
113
|
- Do NOT invent character details when a `character.json` exists.
|
|
114
|
+
|
|
115
|
+
## Policies
|
|
116
|
+
|
|
117
|
+
11-block cinematic prompt is live-action shape — real-person + brand-impersonation risks highest in cluster. Before emitting:
|
|
118
|
+
|
|
119
|
+
- [`agents/policies/media/likeness.md`](../../../agents/policies/media/likeness.md) — prompt names / visually identifies real person on camera.
|
|
120
|
+
- [`agents/policies/media/public-figures.md`](../../../agents/policies/media/public-figures.md) — subject is recognised public figure.
|
|
121
|
+
- [`agents/policies/media/brand-impersonation.md`](../../../agents/policies/media/brand-impersonation.md) — prompt copies journalism / broadcaster / regulated-industry visual identity.
|
|
122
|
+
- [`agents/policies/media/style.md`](../../../agents/policies/media/style.md) — LIGHT / LENS anchored to named living cinematographer's signature.
|
|
123
|
+
- [`agents/policies/media/disclosure.md`](../../../agents/policies/media/disclosure.md) — every distributed live-action AI clip carries non-removable AI-generation disclosure.
|
|
124
|
+
|
|
125
|
+
Refuse-and-surface at directorial layer; live-action realism amplifies every downstream policy gap.
|
|
126
|
+
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.py (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "2.
|
|
42
|
+
agent_config_version: "2.25.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -119,8 +119,8 @@ resolve at agent runtime. The patterns below are correct by design:
|
|
|
119
119
|
- **`path_prefix:` triggers containing `.agent-src.uncompressed/`**
|
|
120
120
|
in YAML frontmatter. This is a literal match pattern for the
|
|
121
121
|
host's router, **not** a file reference — source-of-truth meta-rules
|
|
122
|
-
(`augment-source-of-truth`, `augment-
|
|
123
|
-
`
|
|
122
|
+
(`augment-source-of-truth`, `augment-edit-discipline`, `skill-quality`,
|
|
123
|
+
`rule-type-governance`) legitimately match against the
|
|
124
124
|
authoring tree.
|
|
125
125
|
- **Symlinked rule / skill / command files** under `.claude/`,
|
|
126
126
|
`.cursor/`, `.clinerules/`. Targets resolve into `.augment/rules/`,
|
|
@@ -84,6 +84,22 @@ php artisan test # Tests (or: vendor/bin/phpunit)
|
|
|
84
84
|
|
|
85
85
|
Check `AGENTS.md` or `Makefile` / `Taskfile.yml` for the exact commands.
|
|
86
86
|
|
|
87
|
+
### CI-step gate (when `quality.local_auto_run: false`)
|
|
88
|
+
|
|
89
|
+
Roadmaps **must not** schedule full-pipeline literals (`task ci`,
|
|
90
|
+
`task ci-fast`, `task ci-strict`, `make ci`, `make test`,
|
|
91
|
+
`npm/pnpm run check`, `yarn check`, `composer test`, whole-suite
|
|
92
|
+
`vendor/bin/phpunit`, whole-suite `php artisan test`) as checkbox
|
|
93
|
+
steps when `quality.local_auto_run` is `false` in
|
|
94
|
+
`.agent-settings.yml` — `task lint-roadmap-ci-steps` blocks them.
|
|
95
|
+
Reword as narrow verifications (`vendor/bin/phpstan analyse
|
|
96
|
+
app/Modules/X`, `php artisan test --filter=…`) or mark with
|
|
97
|
+
`<!-- carve-out: new-gate-verification -->` when the step verifies a
|
|
98
|
+
**new** gate this roadmap introduces. At execution,
|
|
99
|
+
`/roadmap:process-*` flips matching steps to `[-]` with reason and
|
|
100
|
+
skips them. Full contract:
|
|
101
|
+
[`roadmap-ci-steps-policy`](../rules/roadmap-ci-steps-policy.md).
|
|
102
|
+
|
|
87
103
|
---
|
|
88
104
|
|
|
89
105
|
## Template
|