@event4u/agent-config 9.12.0 → 9.14.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +110 -238
- package/README.md +1 -1
- package/dist/agent-src/commands/optimize/deep.md +147 -0
- package/dist/agent-src/commands/optimize.md +12 -6
- package/dist/agent-src/rules/active-remediation.md +0 -2
- package/dist/agent-src/rules/architecture.md +0 -1
- package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -4
- package/dist/agent-src/rules/autonomous-execution.md +1 -2
- package/dist/agent-src/rules/broken-access-control.md +0 -2
- package/dist/agent-src/rules/code-comment-discipline.md +0 -3
- package/dist/agent-src/rules/code-provenance.md +0 -3
- package/dist/agent-src/rules/communication-through-line.md +2 -3
- package/dist/agent-src/rules/content-quoting-floor.md +0 -2
- package/dist/agent-src/rules/context-hygiene.md +1 -3
- package/dist/agent-src/rules/decision-revisit-gate.md +0 -2
- package/dist/agent-src/rules/design-fidelity.md +29 -0
- package/dist/agent-src/rules/domain-adoption-policy.md +0 -3
- package/dist/agent-src/rules/downstream-changes.md +10 -1
- package/dist/agent-src/rules/external-reference-deep-dive.md +0 -7
- package/dist/agent-src/rules/fast-path-marker-visibility.md +0 -1
- package/dist/agent-src/rules/git-history-discipline.md +0 -7
- package/dist/agent-src/rules/guidelines.md +0 -2
- package/dist/agent-src/rules/improve-before-implement.md +4 -2
- package/dist/agent-src/rules/invite-challenge.md +0 -4
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -2
- package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -2
- package/dist/agent-src/rules/missing-tool-handling.md +0 -1
- package/dist/agent-src/rules/no-attribution-footers.md +0 -3
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +8 -5
- package/dist/agent-src/rules/no-pr-progress-comments.md +1 -3
- package/dist/agent-src/rules/no-roadmap-references.md +0 -2
- package/dist/agent-src/rules/output-discipline.md +0 -1
- package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -2
- package/dist/agent-src/rules/preservation-guard.md +0 -3
- package/dist/agent-src/rules/role-mode-adherence.md +0 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +0 -2
- package/dist/agent-src/rules/senior-engineering-discipline.md +0 -2
- package/dist/agent-src/rules/session-canary.md +0 -2
- package/dist/agent-src/rules/size-enforcement.md +0 -5
- package/dist/agent-src/rules/source-confidentiality.md +0 -3
- package/dist/agent-src/rules/source-discovery-gate.md +0 -2
- package/dist/agent-src/rules/think-before-action.md +3 -3
- package/dist/agent-src/rules/token-budget-discipline.md +0 -1
- package/dist/agent-src/rules/token-efficiency.md +1 -2
- package/dist/agent-src/rules/tool-safety.md +0 -1
- package/dist/agent-src/rules/user-interaction.md +0 -3
- package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
- package/dist/agent-src/skills/agent-docs-writing/SKILL.md +8 -0
- package/dist/agent-src/skills/analysis-skill-router/SKILL.md +55 -86
- package/dist/agent-src/skills/character-consistency/SKILL.md +7 -4
- package/dist/agent-src/skills/decision-record/SKILL.md +8 -0
- package/dist/agent-src/skills/design-review/SKILL.md +11 -0
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +8 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +34 -3
- package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +7 -4
- package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +201 -0
- package/dist/agent-src/skills/performance/SKILL.md +14 -0
- package/dist/agent-src/skills/pixar-storyteller/SKILL.md +8 -5
- package/dist/agent-src/skills/scene-expander/SKILL.md +9 -6
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +10 -0
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +14 -37
- package/dist/agent-src/skills/video-director/SKILL.md +9 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +55 -0
- package/dist/cli-delegate/{chunk-QFKQLQ7X.js → chunk-GCVFLBP2.js} +399 -365
- package/dist/cli-delegate/cmd_export.js +1 -1
- package/dist/cli-delegate/cmd_prune.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +1 -1
- package/dist/cli-delegate/cmd_uninstall.js +1 -1
- package/dist/cli-delegate/cmd_validate.js +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +123 -73
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +10 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +8 -6
- package/dist/hooks/dispatch.js +174 -13
- package/dist/install/install.mjs +648 -614
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +783 -507
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +2 -2
- package/docs/MIGRATION.md +1 -1
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +71 -0
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +24 -1
- package/docs/guidelines/code-clarity.md +9 -2
- package/docs/guidelines/design-fidelity-mechanics.md +44 -0
- package/llms.txt +63 -27
- package/package.json +4 -4
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +154 -13
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +118 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +40 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +55 -0
- package/src/config/agent-settings.template.yml +8 -0
- package/src/scripts/_lib/counted_probe.ts +142 -0
- package/src/scripts/_lib/exec_evidence.ts +5 -0
- package/src/scripts/_lib/overbuild_lens_contract.ts +196 -0
- package/src/scripts/_lib/release_scope.ts +207 -0
- package/src/scripts/_lib/scoped_projection.ts +212 -0
- package/src/scripts/ai_council/stance_tally.ts +37 -2
- package/src/scripts/audit_auto_rules.ts +9 -9
- package/src/scripts/audit_likelihood.ts +3 -3
- package/src/scripts/audit_overlap.ts +2 -2
- package/src/scripts/audit_skill_overlap.ts +233 -95
- package/src/scripts/audit_skill_overlap_allowlist.json +4 -0
- package/src/scripts/build_proof.ts +15 -1
- package/src/scripts/check_artefact_count_messaging.ts +128 -15
- package/src/scripts/check_dependency_floors.ts +16 -6
- package/src/scripts/check_gate_coverage.ts +6 -6
- package/src/scripts/check_kernel_rule_bundle.ts +5 -4
- package/src/scripts/check_token_quality_golden.ts +0 -18
- package/src/scripts/code_graph/loader.ts +35 -6
- package/src/scripts/compile_router.ts +3 -8
- package/src/scripts/condense.ts +2 -2
- package/src/scripts/count_scoped_projection.ts +104 -0
- package/src/scripts/explain_run.ts +0 -1
- package/src/scripts/generate_pack_manifests.ts +3 -20
- package/src/scripts/hooks/block_kernel_rule_writes.ts +145 -10
- package/src/scripts/hooks/block_no_verify.ts +101 -0
- package/src/scripts/install.ts +13 -90
- package/src/scripts/lint_agent_security.ts +5 -4
- package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
- package/src/scripts/lint_regression.ts +92 -1
- package/src/scripts/lint_skill_descriptions.ts +93 -5
- package/src/scripts/project_thin_rules.ts +2 -2
- package/src/scripts/release.ts +107 -3
- package/src/scripts/resolve_lint_scope.ts +53 -0
- package/src/scripts/router_telemetry.ts +0 -5
- package/src/scripts/runtime_dispatcher.ts +40 -0
- package/src/scripts/schemas/pack.schema.json +1 -5
- package/src/scripts/schemas/rule.schema.json +1 -2
- package/src/scripts/self_review_gate.ts +15 -73
- package/src/scripts/skill_linter.ts +160 -11
- package/src/scripts/sweep_dead_scan_roots.ts +550 -0
- package/src/scripts/trigger_coverage.ts +11 -37
- package/src/scripts/update_counts.ts +90 -11
|
@@ -4,8 +4,6 @@ tier: "2b"
|
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
description: "Writing/generating code — generalize (no overfit/tautological tests), supply the invisible cross-cutting controls, never invent an API/field/package"
|
|
6
6
|
triggers:
|
|
7
|
-
- intent: "writing or generating code"
|
|
8
|
-
- intent: "implementing a feature"
|
|
9
7
|
- keyword: "implement"
|
|
10
8
|
- keyword: "endpoint"
|
|
11
9
|
- keyword: "query"
|
|
@@ -4,8 +4,6 @@ tier: "2a"
|
|
|
4
4
|
description: "personal.canary_name set — open every new task by name (liveness canary); keep the reply-close markers alive (ONE end-summary, PR URL last)"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
triggers:
|
|
7
|
-
- intent: "starting a new task or a new conversation"
|
|
8
|
-
- intent: "opening the first reply to a request"
|
|
9
7
|
- keyword: "canary"
|
|
10
8
|
- keyword: "canary_name"
|
|
11
9
|
- phrase: "session canary"
|
|
@@ -3,11 +3,6 @@ type: "manual"
|
|
|
3
3
|
tier: "mechanical-already"
|
|
4
4
|
description: "Creating or editing rules, skills, commands, guidelines, AGENTS.md, or copilot-instructions.md — enforce size and scope limits"
|
|
5
5
|
alwaysApply: false
|
|
6
|
-
triggers:
|
|
7
|
-
- intent: "create rule"
|
|
8
|
-
- intent: "create skill"
|
|
9
|
-
- intent: "create command"
|
|
10
|
-
- intent: "create guideline"
|
|
11
6
|
workspaces: [agent-config-maintainer]
|
|
12
7
|
packs: [meta]
|
|
13
8
|
---
|
|
@@ -10,9 +10,6 @@ triggers:
|
|
|
10
10
|
- path_prefix: "docs/"
|
|
11
11
|
- path_prefix: "agents/evidence/"
|
|
12
12
|
- path_prefix: "agents/roadmaps/"
|
|
13
|
-
- intent: "adopt or harvest from an external repo"
|
|
14
|
-
- intent: "compare against another package"
|
|
15
|
-
- intent: "attribute an idea to an external source"
|
|
16
13
|
validator_ignore:
|
|
17
14
|
- type: "substring"
|
|
18
15
|
pattern: "external_sources_denylist"
|
|
@@ -6,9 +6,9 @@ alwaysApply: false
|
|
|
6
6
|
load_context:
|
|
7
7
|
- ../contexts/communication/rules-auto/think-before-action-mechanics.md
|
|
8
8
|
triggers:
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
9
|
+
- phrase: "before coding"
|
|
10
|
+
- phrase: "before debugging"
|
|
11
|
+
- phrase: "before modifying"
|
|
12
12
|
- keyword: "implement"
|
|
13
13
|
- keyword: "debug"
|
|
14
14
|
- keyword: "refactor"
|
|
@@ -6,9 +6,8 @@ alwaysApply: false
|
|
|
6
6
|
load_context:
|
|
7
7
|
- ../contexts/communication/rules-auto/token-efficiency-mechanics.md
|
|
8
8
|
triggers:
|
|
9
|
-
- intent: "verbose CLI output"
|
|
10
|
-
- intent: "fetching logs"
|
|
11
9
|
- keyword: "minimize tool calls"
|
|
10
|
+
- phrase: "fetching logs"
|
|
12
11
|
workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
|
|
13
12
|
packs: [meta]
|
|
14
13
|
---
|
|
@@ -6,9 +6,6 @@ alwaysApply: false
|
|
|
6
6
|
load_context:
|
|
7
7
|
- ../contexts/communication/rules-auto/user-interaction-mechanics.md
|
|
8
8
|
triggers:
|
|
9
|
-
- intent: "ask user a question"
|
|
10
|
-
- intent: "numbered options"
|
|
11
|
-
- intent: "summarizing progress"
|
|
12
9
|
- keyword: "option"
|
|
13
10
|
- keyword: "recommendation"
|
|
14
11
|
- phrase: "what do you recommend"
|
|
@@ -4,7 +4,6 @@ tier: "2a"
|
|
|
4
4
|
description: "New user instruction mid-flight — STOP the current task, run the new one in full, ASK before resuming"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
triggers:
|
|
7
|
-
- intent: "new instruction while a task is running"
|
|
8
7
|
- keyword: "weiter"
|
|
9
8
|
- keyword: "resume"
|
|
10
9
|
- keyword: "continue"
|
|
@@ -237,6 +237,14 @@ numbered options; do NOT auto-rewrite prose without the user's knowledge:
|
|
|
237
237
|
- Do NOT duplicate content that's already in `AGENTS.md` or `.github/copilot-instructions.md`.
|
|
238
238
|
- Do NOT write docs just to document what you did — only document things others need to know.
|
|
239
239
|
- If unsure whether a doc needs updating, **ask the user**.
|
|
240
|
+
- **Sibling-routing sentences are edited as a set, never alone.** When a skill's
|
|
241
|
+
`description:` carries a routing clause naming an overlapping sibling
|
|
242
|
+
(`Animated → pixar-storyteller`), editing it obliges re-reading every sibling
|
|
243
|
+
it names and every sibling that names it, so no user phrase ends up routed to
|
|
244
|
+
two skills and none ends up routed to neither. One-sided edits are how a
|
|
245
|
+
cluster's descriptions drift back into ambiguity between sweeps;
|
|
246
|
+
`lint_skill_descriptions` catches a *missing* clause, not an *inconsistent*
|
|
247
|
+
one.
|
|
240
248
|
|
|
241
249
|
## Output format
|
|
242
250
|
|
|
@@ -11,6 +11,11 @@ packs:
|
|
|
11
11
|
|
|
12
12
|
# analysis-skill-router
|
|
13
13
|
|
|
14
|
+
A chooser, not a worker. It answers exactly one question — *which skill* — and
|
|
15
|
+
then gets out of the way. How to actually carry out the work belongs to
|
|
16
|
+
whichever skill this picks; a chooser that also explains the work reads like
|
|
17
|
+
its own fallback target, which is the defect this file was cut back from.
|
|
18
|
+
|
|
14
19
|
## When to use
|
|
15
20
|
|
|
16
21
|
Use this skill when:
|
|
@@ -29,111 +34,75 @@ Do NOT use when:
|
|
|
29
34
|
|
|
30
35
|
## Procedure
|
|
31
36
|
|
|
32
|
-
### 1.
|
|
33
|
-
|
|
34
|
-
Classify the request as one of:
|
|
35
|
-
|
|
36
|
-
* full project analysis
|
|
37
|
-
* architecture review
|
|
38
|
-
* broad multi-layer debugging
|
|
39
|
-
* framework-specific deep analysis
|
|
40
|
-
* narrow root-cause analysis
|
|
41
|
-
* performance/security specialist analysis
|
|
42
|
-
* simple local code issue
|
|
43
|
-
|
|
44
|
-
### 2. Check whether deep analysis is justified
|
|
45
|
-
|
|
46
|
-
Use deep analysis only if at least one is true:
|
|
47
|
-
|
|
48
|
-
* the user explicitly asks for broad analysis
|
|
49
|
-
* the system is unclear or unknown
|
|
50
|
-
* the issue spans multiple layers
|
|
51
|
-
* architecture reconstruction is required
|
|
52
|
-
* the cause is not local and not obvious
|
|
53
|
-
|
|
54
|
-
If none apply → do NOT route to a broad analysis skill.
|
|
55
|
-
|
|
56
|
-
### 3. Detect framework or system type
|
|
57
|
-
|
|
58
|
-
Check whether the request clearly targets:
|
|
59
|
-
|
|
60
|
-
* Laravel, Symfony, Zend/Laminas, Node/Express, React, Next.js
|
|
61
|
-
* unknown / mixed stack
|
|
62
|
-
|
|
63
|
-
### 4. Route to the correct skill
|
|
37
|
+
### 1. Classify the scope
|
|
64
38
|
|
|
65
|
-
|
|
39
|
+
Pick one: full project · architecture review · broad multi-layer debugging ·
|
|
40
|
+
framework-specific deep dive · narrow root cause · performance/security
|
|
41
|
+
specialist · simple local issue.
|
|
66
42
|
|
|
67
|
-
|
|
68
|
-
|
|
43
|
+
**Broad scope requires a reason.** At least one must hold, or the answer is a
|
|
44
|
+
narrow specialist: the user asked for breadth · the system is unknown · the
|
|
45
|
+
issue spans layers · architecture must be reconstructed · the cause is
|
|
46
|
+
non-local.
|
|
69
47
|
|
|
70
|
-
|
|
48
|
+
### 2. Detect the framework
|
|
71
49
|
|
|
72
|
-
|
|
73
|
-
|
|
50
|
+
Laravel · Symfony · Zend/Laminas · Node/Express · React · Next.js · unknown or
|
|
51
|
+
mixed.
|
|
74
52
|
|
|
75
|
-
|
|
53
|
+
### 3. Read the decision table
|
|
76
54
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
55
|
+
| Signal | Route to |
|
|
56
|
+
|---|---|
|
|
57
|
+
| Full audit, or unclear stack | `universal-project-analysis` |
|
|
58
|
+
| Unknown system, discovery-focused | `project-analysis-core` |
|
|
59
|
+
| Concrete problem, several plausible causes | `project-analysis-hypothesis-driven` |
|
|
60
|
+
| Bug-focused, not full-project | `bug-analyzer` |
|
|
61
|
+
| Laravel | `project-analysis-laravel` |
|
|
62
|
+
| Symfony | `project-analysis-symfony` |
|
|
63
|
+
| Zend/Laminas | `project-analysis-zend-laminas` |
|
|
64
|
+
| Node/Express | `project-analysis-node-express` |
|
|
65
|
+
| React state / render / hooks | `project-analysis-react` |
|
|
66
|
+
| Next.js SSR / cache / hydration | `project-analysis-nextjs` |
|
|
67
|
+
| Bottleneck | `performance-analysis` |
|
|
68
|
+
| Security concern | `security-audit` |
|
|
81
69
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
* React state/render/hooks issues → `project-analysis-react`
|
|
85
|
-
* Next.js SSR/client/cache/hydration issues → `project-analysis-nextjs`
|
|
86
|
-
|
|
87
|
-
#### Specialist follow-up routing
|
|
88
|
-
|
|
89
|
-
* performance bottleneck → `performance-analysis`
|
|
90
|
-
* security concern → `security-audit`
|
|
91
|
-
|
|
92
|
-
### 5. Validate routing quality
|
|
93
|
-
|
|
94
|
-
Check:
|
|
95
|
-
|
|
96
|
-
* the chosen skill is narrower than the broadest possible option
|
|
97
|
-
* full-project analysis is actually justified if selected
|
|
98
|
-
* framework-specific skill matches the explicit framework
|
|
99
|
-
* no simpler specialist skill was skipped
|
|
70
|
+
Tie-break: **the narrowest row that still covers the request wins.**
|
|
100
71
|
|
|
101
72
|
## Output format
|
|
102
73
|
|
|
103
|
-
1.
|
|
104
|
-
2.
|
|
105
|
-
3. Why broader
|
|
106
|
-
4.
|
|
107
|
-
|
|
108
|
-
## Routing heuristics
|
|
109
|
-
|
|
110
|
-
**Choose `universal-project-analysis` only if:** user explicitly wants full audit, architecture must be reconstructed, stack is unclear, multiple subsystems involved.
|
|
111
|
-
|
|
112
|
-
**Choose `project-analysis-core` if:** broad discovery needed, framework deep-dive not yet justified.
|
|
113
|
-
|
|
114
|
-
**Choose `project-analysis-hypothesis-driven` if:** problem is concrete, multiple causes plausible, main job is explanation not discovery.
|
|
115
|
-
|
|
116
|
-
**Choose framework-specific analysis if:** framework is explicit, failure pattern is framework-shaped.
|
|
74
|
+
1. The selected skill.
|
|
75
|
+
2. The signal from step 1–2 that selected it.
|
|
76
|
+
3. Why the next-broader row lost, when one was plausible.
|
|
77
|
+
4. Any skill to chain afterwards — or "none".
|
|
117
78
|
|
|
118
|
-
|
|
79
|
+
One or two lines total. A routing verdict longer than the request it routes is
|
|
80
|
+
itself a routing failure.
|
|
119
81
|
|
|
120
82
|
## Examples
|
|
121
83
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
84
|
+
| Request | Route |
|
|
85
|
+
|---|---|
|
|
86
|
+
| "Analyze this whole Laravel project" | `universal-project-analysis`, chain `project-analysis-laravel` |
|
|
87
|
+
| "Hydration mismatch in Next.js" | `project-analysis-nextjs` — no full-project step |
|
|
88
|
+
| "Could be cache, queue, or a version mismatch" | `project-analysis-hypothesis-driven` |
|
|
89
|
+
| "Change one React component" | none — implementation skill |
|
|
126
90
|
|
|
127
91
|
## Gotcha
|
|
128
92
|
|
|
129
|
-
*
|
|
130
|
-
|
|
131
|
-
|
|
93
|
+
* **Size adjectives read as scope.** "Our *whole* Laravel app is slow" picks the
|
|
94
|
+
broad row on the word "whole", and the audit then spends its passes
|
|
95
|
+
rediscovering a stack the request already named. The step-2 framework signal
|
|
96
|
+
outranks size words — those are how frustration sounds, not scope.
|
|
97
|
+
* **Breadth feels safe and costs sharpness.** The most expensive choice is
|
|
98
|
+
rarely the best one once the problem is already localised.
|
|
99
|
+
* **Steps 1 and 2 disagreeing is a question, not a tie-break.** Ask which the
|
|
100
|
+
user meant instead of picking the broader row to be safe.
|
|
132
101
|
|
|
133
102
|
## Do NOT
|
|
134
103
|
|
|
135
104
|
* Do NOT default to `universal-project-analysis`
|
|
136
|
-
* Do NOT
|
|
137
|
-
* Do NOT choose a generic skill when a framework-specific one clearly fits
|
|
138
|
-
* Do NOT route to deep analysis when a simple specialist skill is enough
|
|
105
|
+
* Do NOT choose a generic skill when a framework-specific row fits
|
|
139
106
|
* Do NOT confuse discovery with root-cause investigation
|
|
107
|
+
* Do NOT re-import procedure, validation checklists, or output contracts from
|
|
108
|
+
the skills in the table — that is what this file was cut back from
|
|
@@ -181,12 +181,15 @@ Worked example — `creature`:
|
|
|
181
181
|
|
|
182
182
|
## Policies
|
|
183
183
|
|
|
184
|
+
Paths, enforcement model, and the full set: the
|
|
185
|
+
[media policy preamble](../../../agents/settings/policies/media/README.md).
|
|
186
|
+
|
|
184
187
|
When a character lock would identify or render a real person, consult before emitting the JSON:
|
|
185
188
|
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
189
|
+
- **`likeness`** — real-person identity tokens require a cited likeness release.
|
|
190
|
+
- **`public-figures`** — recognised public figures carry the harder gate (publicity rights + transformative-intent).
|
|
191
|
+
- **`voice-cloning`** — when `voice_note` references a real person's voice.
|
|
192
|
+
- **`disclosure`** — outputs carrying a real-person lock require the non-removable AI-generation disclosure downstream.
|
|
190
193
|
|
|
191
194
|
Refuse-and-surface the file path; do not silently sanitise the prompt.
|
|
192
195
|
|
|
@@ -58,6 +58,14 @@ Do NOT use when:
|
|
|
58
58
|
get a one-page record; one-way doors get the full options +
|
|
59
59
|
consequences + supersession chain. The reversibility row of the
|
|
60
60
|
matrix decides which template fires. See `mental-models.md` § 10.
|
|
61
|
+
**Corollary — a shortcut through a one-way door is a decision, not a
|
|
62
|
+
defer.** The cheap-and-simple option is *preferred* where the choice can
|
|
63
|
+
be walked back later. Where it cannot — a public API shape, a DB schema,
|
|
64
|
+
a migration, a wire format, a published identifier — "we can simplify
|
|
65
|
+
this later" is false, so it never ships as a deferred note; it lands
|
|
66
|
+
here as a recorded decision with its consequences named. The one-way
|
|
67
|
+
categories are enumerated so the call is not left to a judgement about
|
|
68
|
+
what feels important.
|
|
61
69
|
- **Team context-spine slot.** Read the **team** slot of the
|
|
62
70
|
[context-spine](../../../docs/contracts/context-spine.md) to
|
|
63
71
|
capture who is bound by the decision (review groups, on-call
|
|
@@ -352,6 +352,17 @@ structured review phases, add an explicit **Anti-Slop Check** section:
|
|
|
352
352
|
3. Run the AI-slop originality self-test on the overall aesthetic direction.
|
|
353
353
|
Report the result (pass / flag / fail) with one sentence of evidence — this
|
|
354
354
|
is the human judgment the detector deliberately does not make.
|
|
355
|
+
4. **Mark the findings a provided artifact already answers.** When the run is a
|
|
356
|
+
port (`state.ui_design.provided_artifact` is set), a finding about a
|
|
357
|
+
decision the artifact makes is correct about the pattern and wrong about the
|
|
358
|
+
action. Keep it in the output, cite it as **"matches provided spec"**, and
|
|
359
|
+
set `artifact_covered: true` on it — the polish gate drops those from the
|
|
360
|
+
round-driving set, so an unmarked finding will send a round at the user's
|
|
361
|
+
own design. The flag is scoped to decisions the artifact actually covers;
|
|
362
|
+
anything it leaves open (a state it never showed) is generative work and
|
|
363
|
+
keeps the full scan. Precedence + scope:
|
|
364
|
+
[`design-fidelity-mechanics`](../../../docs/guidelines/design-fidelity-mechanics.md)
|
|
365
|
+
§ Provided-artifact precedence. Regression witness: `daf-slop-vs-provided`.
|
|
355
366
|
|
|
356
367
|
For the **objective quality floors** (WCAG contrast, font-size, line-length,
|
|
357
368
|
reduced-motion, heading hierarchy, focus indicator), do NOT eyeball them —
|
|
@@ -42,6 +42,14 @@
|
|
|
42
42
|
- **`bundled_local`** on a font family is a flag, not an instruction: the
|
|
43
43
|
package never downloads or bundles fonts (out of scope) — it records that the
|
|
44
44
|
source did.
|
|
45
|
+
- **`motion` has a consumer.** It sits outside the DTCG mapping above, and for
|
|
46
|
+
a long time that meant nothing read it at all: the block was written by
|
|
47
|
+
capture and consumed by nobody, so easing and duration were re-derived from
|
|
48
|
+
taste on every port. On the **Port a provided artifact** branch
|
|
49
|
+
([`design-artifact-lifecycle`](../../../../../docs/contracts/design-artifact-lifecycle.md))
|
|
50
|
+
the audit reads `motion.durations` and `motion.easings` as the answer. The
|
|
51
|
+
extraction-only marking above still holds: `motion._meta.detected_libs`
|
|
52
|
+
informs the human and never becomes a token.
|
|
45
53
|
|
|
46
54
|
## Trust posture (mandatory)
|
|
47
55
|
|
|
@@ -104,9 +104,25 @@ Write into `state.ui_audit.design_tokens` (object, never null — empty object i
|
|
|
104
104
|
| `:root { --... }` blocks in `resources/css/`, `app/globals.css`, `src/app/globals.css` | every `--token-name: value` pair |
|
|
105
105
|
| `theme.json` / `tokens.json` (any depth) | flat or nested token tree |
|
|
106
106
|
| `app/css/variables.css`, `assets/scss/_tokens.scss` | SCSS `$var: value` and CSS custom properties |
|
|
107
|
+
| **A supplied `design-system.json`** (handed over with a provided artifact) | `colors`, `typography`, `spacing`, `radius`, `shadow`, **and `motion`** (`durations`, `easings`) — read as the answer, never re-derived |
|
|
108
|
+
| **A supplied artifact's own `:root { --… }` / inline `<style>`** (the handover file itself, e.g. `design.html`) | every `--token-name: value` pair, when no `design-system.json` accompanies it |
|
|
107
109
|
|
|
108
110
|
Group output by category: `colors`, `spacing`, `radius`, `font`, `shadow`, `breakpoint`, `other`.
|
|
109
111
|
|
|
112
|
+
**Artifact-sourced tokens stay distinguishable from project tokens.** Every
|
|
113
|
+
group carries a `source` — `project` for the first four rows, `artifact` for the
|
|
114
|
+
last two — because the mapping between them is the thing a port has to keep
|
|
115
|
+
visible. Collapsing them loses the answer to "did this value come from what the
|
|
116
|
+
user handed me, or from what the repo already had?", and that is exactly the
|
|
117
|
+
question the apply coverage report has to answer per item. The two sets may
|
|
118
|
+
disagree; when they do, surface the conflict rather than merging it (a supplied
|
|
119
|
+
spec outranks house taste, but not a registered brand token — see
|
|
120
|
+
[`brand-source-of-truth`](../../rules/brand-source-of-truth.md)).
|
|
121
|
+
|
|
122
|
+
`motion` is new here: the block has existed in the `design-system.json` schema
|
|
123
|
+
since capture shipped and **nothing consumed it**. On the port branch it is
|
|
124
|
+
read, so easing and duration stop being values the brief silently regenerates.
|
|
125
|
+
|
|
110
126
|
### 4. Detect shadcn inventory (only when `state.stack.frontend == "react-shadcn"`)
|
|
111
127
|
|
|
112
128
|
Read `components.json` for the registered style + base color, then read `package.json` for `@radix-ui/*` and any locally vendored `components/ui/*.tsx` files. Write into `state.ui_audit.shadcn_inventory`:
|
|
@@ -265,9 +281,24 @@ scheme, border-radius convention, motion patterns), cross-check the findings
|
|
|
265
281
|
against
|
|
266
282
|
[`docs/guidelines/design-antipatterns.md`](../../../docs/guidelines/design-antipatterns.md).
|
|
267
283
|
If the existing UI already uses a listed anti-pattern, surface it as a design-debt
|
|
268
|
-
finding (separate from the reuse inventory) — flag by entry ID and severity.
|
|
269
|
-
|
|
270
|
-
|
|
284
|
+
finding (separate from the reuse inventory) — flag by entry ID and severity.
|
|
285
|
+
|
|
286
|
+
**What the design step may then do depends on whose aesthetic it is.** These
|
|
287
|
+
are two different situations and the sentence that used to cover both was
|
|
288
|
+
wrong about one of them:
|
|
289
|
+
|
|
290
|
+
| The anti-pattern lives in… | The design step may… |
|
|
291
|
+
|---|---|
|
|
292
|
+
| **The consumer's own legacy UI** (inventoried from the repo) | continue it for consistency, **or** propose a corrective direction change. Both are legitimate; it is their codebase and their debt. |
|
|
293
|
+
| **A supplied spec** (a handed-over artifact, a `design-system.json`, a registered brand token) | **neither.** Build it as given. The finding is recorded as informational, marked `artifact_covered`, and no polish round acts on it. |
|
|
294
|
+
|
|
295
|
+
A corrective direction change against a supplied spec is not a design
|
|
296
|
+
improvement, it is overriding a decision the user already made — the failure
|
|
297
|
+
[`design-fidelity`](../../rules/design-fidelity.md) exists to prevent, arriving
|
|
298
|
+
through the audit's side door. Precedence and its exact scope:
|
|
299
|
+
[`design-fidelity-mechanics`](../../../docs/guidelines/design-fidelity-mechanics.md)
|
|
300
|
+
§ Provided-artifact precedence. Where the two sources disagree, surface the
|
|
301
|
+
conflict rather than picking (fixture `daf-slop-vs-provided`).
|
|
271
302
|
|
|
272
303
|
## Do NOT
|
|
273
304
|
|
|
@@ -340,6 +340,16 @@ If a tell was the first impulse, choose a different approach or explicitly
|
|
|
340
340
|
justify why this brief calls for it. (The full pre-proposal scan is under
|
|
341
341
|
*Anti-slop discipline* below.)
|
|
342
342
|
|
|
343
|
+
**Carve-out — a supplied artifact is the spec, not a first impulse.** This
|
|
344
|
+
discipline governs what *you* reach for. When the user hands over a finished
|
|
345
|
+
artifact, the choices it makes are not your impulses and the justify-or-change
|
|
346
|
+
burden does not apply to them: build them as given. The carve-out is scoped to
|
|
347
|
+
decisions the artifact actually covers — anything it leaves open (a state it
|
|
348
|
+
never shows, a surface it never had) is your first impulse again and gets the
|
|
349
|
+
full scan. See
|
|
350
|
+
[`design-fidelity-mechanics`](../../../docs/guidelines/design-fidelity-mechanics.md)
|
|
351
|
+
§ Provided-artifact precedence.
|
|
352
|
+
|
|
343
353
|
## Aesthetic direction
|
|
344
354
|
|
|
345
355
|
Audit-pinned tokens and components always take precedence (see `existing-ui-audit`). When the audit pins an aesthetic, honor it without deviation. When the audit shows **no pinned aesthetic** — greenfield surface, marketing landing page, brand-new feature without design-system precedent — the design brief is allowed (and expected) to commit to a deliberate direction instead of defaulting to safe centered hero + 3-column features + CTA.
|
|
@@ -186,12 +186,15 @@ stdin shape. The orchestrator pipes this into the video adapter's
|
|
|
186
186
|
|
|
187
187
|
## Policies
|
|
188
188
|
|
|
189
|
+
Paths, enforcement model, and the full set: the
|
|
190
|
+
[media policy preamble](../../../agents/settings/policies/media/README.md).
|
|
191
|
+
|
|
189
192
|
Motion prompts inherit every constraint the upstream blueprint carries. Before emitting provider-tuned prose:
|
|
190
193
|
|
|
191
|
-
-
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
194
|
+
- **`disclosure`** — every distributed clip carries the non-removable AI-generation disclosure; refuse adapter flags that would suppress it.
|
|
195
|
+
- **`transparency`** — provider provenance (C2PA / SynthID) is preserved; refuse re-encode flags whose effect is to strip provenance.
|
|
196
|
+
- **`voice-cloning`** — when the motion prompt requests `audio: native` narration in a named voice.
|
|
197
|
+
- **`brand-impersonation`** — when the motion prompt copies a recognised brand's chyron / mascot / signature transition.
|
|
195
198
|
|
|
196
199
|
Refuse-and-surface; the motion prompt cannot launder a policy gap upstream skills should have caught.
|
|
197
200
|
|