dreative 0.5.1 → 0.5.3

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.
Files changed (48) hide show
  1. package/README.md +49 -27
  2. package/dist/cli/audit.js +206 -0
  3. package/dist/cli/audit.test.js +79 -0
  4. package/dist/cli/docsCheck.js +163 -0
  5. package/dist/cli/docsCheck.test.js +8 -0
  6. package/dist/cli/index.js +45 -9
  7. package/dist/server/preview.js +73 -73
  8. package/dist/server/store.js +11 -0
  9. package/dist/shared/artifacts.js +220 -0
  10. package/dist/shared/design.js +45 -24
  11. package/dist/shared/ruleSystem.js +220 -0
  12. package/dist/shared/ruleSystem.test.js +262 -0
  13. package/dist/shared/skillSystem.js +173 -0
  14. package/dist/shared/skillSystem.test.js +110 -0
  15. package/dist/ui/assets/{index--vztc_MR.js → index-CKwmbx2j.js} +13 -13
  16. package/dist/ui/index.html +12 -12
  17. package/package.json +5 -3
  18. package/skill/dreative/DESIGN.md +144 -108
  19. package/skill/dreative/PLAN.md +285 -116
  20. package/skill/dreative/SKILL.md +237 -144
  21. package/skill/dreative/frameworks/nextjs.md +13 -0
  22. package/skill/dreative/frameworks/react-vite.md +12 -0
  23. package/skill/dreative/frameworks/styling.md +14 -0
  24. package/skill/dreative/frameworks/sveltekit.md +10 -0
  25. package/skill/dreative/frameworks/vue-nuxt.md +12 -0
  26. package/skill/dreative/recipes/3d-recipes.md +44 -0
  27. package/skill/dreative/recipes/cinematic-recipes.md +19 -0
  28. package/skill/dreative/recipes/immersive-recipes.md +18 -0
  29. package/skill/dreative/recipes/media-recipes.md +60 -0
  30. package/skill/dreative/recipes/motion-recipes.md +68 -0
  31. package/skill/dreative/references/ARTIFACTS.md +196 -0
  32. package/skill/dreative/references/REFLEX_FONTS.json +44 -0
  33. package/skill/dreative/references/RULES.json +186 -0
  34. package/skill/dreative/references/SKILL_CONTRACT.md +30 -0
  35. package/skill/dreative/references/TIERS.md +44 -0
  36. package/skill/dreative/schemas/plan.schema.json +309 -0
  37. package/skill/dreative/schemas/verify.schema.json +75 -0
  38. package/skill/dreative/skills/3d.md +94 -267
  39. package/skill/dreative/skills/cinematic.md +56 -232
  40. package/skill/dreative/skills/experimental.md +108 -95
  41. package/skill/dreative/skills/immersive.md +61 -223
  42. package/skill/dreative/skills/interaction.md +9 -1
  43. package/skill/dreative/skills/media.md +149 -564
  44. package/skill/dreative/skills/mobile.md +129 -117
  45. package/skill/dreative/skills/motion.md +126 -256
  46. package/skill/dreative/skills/refined.md +116 -102
  47. package/skill/dreative/skills/ux.md +155 -144
  48. package/dist/server/ai.js +0 -177
@@ -0,0 +1,68 @@
1
+ # Motion implementation recipes
2
+
3
+ Load only after three original choreography concepts are recorded. Record access
4
+ in `recipeAccess`.
5
+
6
+ ## Component motion
7
+
8
+ - Presence: animate enter/exit around semantic state; exits are shorter and
9
+ simpler; return focus deliberately.
10
+ - Layout: use transform-based layout animation and stable keys; avoid animating
11
+ expensive dimensions in dense UI.
12
+ - Gestures: pointer capture, velocity, bounds, and spring settle; provide
13
+ keyboard/touch equivalents.
14
+
15
+ ## Scroll choreography
16
+
17
+ - IntersectionObserver for one-shot reveals; visible content is the default.
18
+ - Motion `useScroll`/transforms for bounded component-linked progress.
19
+ - GSAP context + ScrollTrigger for multi-element chapters; one Lenis instance
20
+ and one ticker when smooth scrolling is justified.
21
+ - Sticky CSS for simple pinning; cap pin length and remove/shorten on mobile.
22
+ - Velocity treatments use damped/clamped derivatives, never raw scroll deltas.
23
+
24
+ ## Optional transformation patterns
25
+
26
+ Choose only patterns that express the concept:
27
+
28
+ - **Image fragmentation:** split a source into aligned DOM/SVG/Canvas tiles or
29
+ sampled pixels; disperse, filter, and reconstruct the actual image.
30
+ - **Composition handoff:** carry an object, mask, grid, or type structure from
31
+ one section into the next instead of resetting the page.
32
+ - **Layered image dive:** separate depth planes or use a depth map and move the
33
+ camera through the composition.
34
+ - **Mask migration:** evolve one mask window across images or sections.
35
+ - **Object persistence:** keep a key subject staged while its environment,
36
+ scale, supporting content, and berth change.
37
+ - **Generated-keyframe morph:** blend related still states through masking,
38
+ displacement, or a bounded frame sequence.
39
+ - **Pixel-to-object reconstruction:** assemble sampled text/image particles into
40
+ a recognizable subject.
41
+ - **Typography-to-image:** use readable type as mask, grid, path, or fragment
42
+ source that becomes imagery.
43
+ - **Environmental system:** drive texture, light, particles, type, and objects
44
+ from the same scroll/interaction state.
45
+ - **Editorial sequence:** treat a long section as one pinned timeline with
46
+ deliberate internal states rather than independent blocks.
47
+
48
+ ## Type
49
+
50
+ - Split lines/words/characters only for selected display moments; keep accessible
51
+ source text and restore wrappers on cleanup.
52
+ - Variable-font axes can become a coherent development mechanism when states
53
+ change meaningfully rather than merely pulsing.
54
+
55
+ ## Setup and cleanup
56
+
57
+ - Scope GSAP with context and call `revert()`.
58
+ - Cancel rAF, observers, media queries, and event listeners on unmount.
59
+ - Pause continuous work on `document.hidden` and outside the viewport.
60
+ - Test SSR/hydration so content never flashes then hides.
61
+
62
+ ## Performance/fallback
63
+
64
+ - Animate transform/opacity or shader state; avoid layout reads after writes.
65
+ - Precompute measurements on resize, reuse objects, and cap continuous work.
66
+ - Reduced motion uses final readable states and retains necessary feedback.
67
+ - Fallback preserves timing hierarchy: setup, peak, rest, and resolution remain
68
+ legible even when the mechanism becomes static.
@@ -0,0 +1,196 @@
1
+ # Direct Design artifacts
2
+
3
+ Use JSON as the machine source of truth and Markdown only as its readable view.
4
+ All paths are relative to the target project.
5
+
6
+ ## `.dreative/plan.json`
7
+
8
+ Required top-level fields:
9
+
10
+ - `version: 2`
11
+ - `doctrineVersion: 2` for the bounded-creative-controls format. Legacy v2
12
+ plans without this field remain readable and receive a migration warning.
13
+ - `request`, `createdAt`
14
+ - `tier`: `solid | premium | expressive | award`
15
+ - `depth`: `restyle | relayout | restructure | reimagine`
16
+ - `skills`: user-approved, dependency-resolved pool including `ux` and `mobile`
17
+ - `skillPolicy`: hybrid routing policy, global foundations, explicit user page
18
+ assignments, and `routingApproved: true`
19
+ - `designRead`: `{ register, concept, signature }`
20
+ - `preservationManifest`: normally `.dreative/preservation.json`
21
+ - `decisionLedger`: normally `.dreative/ledger.json`
22
+ - `pages`: ordered pages, each with its assigned skills and delivery sections
23
+ - `implementationStartedAt`: timestamp used to prove rule substitutions were
24
+ declared during planning
25
+ - `ruleExceptions`: bounded substitutions of evidence-backed defaults
26
+ - `creativeStrategy`: `diversity` or `development` at expressive/award tiers
27
+ - `motionComplexityBudget`: hero moments, calm sections, shared language,
28
+ device limits, progressive enhancement, and anti-default review
29
+ - `fontDecision`: candidates, reflex markers, ledger history, and justification
30
+ - `experimentalPlan`: per-section candidates and the selected two or three peaks
31
+ - `conceptExploration` and `recipeAccess`: proof recipes were loaded only after
32
+ original concepts were recorded
33
+
34
+ Every selected skill must appear on at least one page. Every page includes `ux`
35
+ and `mobile`, but optional treatments are assigned only where they serve that
36
+ page. A section may use only skills assigned to its parent page.
37
+
38
+ Each section requires `id`, `name`, `layoutFamily`, `skills`, `interactions`,
39
+ `mobile`, `fallback`, `verification`, `assets`, and `status`. At expressive/
40
+ award it also requires `motionTreatment`: class, static composition, start/end
41
+ states, changes, pins, handoff, purpose, mechanism, mobile, and reduced motion. Status is
42
+ `planned | shipped | fallback | cut`; fallback/cut requires `reason`.
43
+
44
+ Each asset requires `id`, `path`, `purpose`, `importance`, `preparation`, and
45
+ `status`. Preparation records flat/decompose/variants/sequence, named
46
+ derivatives, and rationale. A shipped asset must exist when `dreative audit` runs.
47
+
48
+ ### Routing authority
49
+
50
+ The user's selection is authoritative. Routing may place selected-but-unassigned
51
+ skills and suggest additional treatments, but it never activates an unselected
52
+ optional skill. Explicit page assignments always win. If the user selects all,
53
+ all ten skills appear in the overall plan; this does not mean all ten belong on
54
+ every page. Show the proposed page matrix and obtain approval before setting
55
+ `routingApproved: true`.
56
+
57
+ ## Rule substitutions
58
+
59
+ Rules live in `references/RULES.json`. Hard gates cannot appear in
60
+ `ruleExceptions`. A valid substitution includes the registered `ruleId`,
61
+ `decision: "substituted"`, planning timestamp, specific reason, concrete
62
+ alternative, at least two observable success criteria, and passing verification
63
+ evidence IDs. The exception must predate `implementationStartedAt`.
64
+
65
+ ```json
66
+ {
67
+ "ruleId": "media.keyAssetTreatment",
68
+ "decision": "substituted",
69
+ "declaredAt": "2026-01-01T00:30:00.000Z",
70
+ "reason": "The archive contains no raster key imagery, so inventing photography would misrepresent the supplied material.",
71
+ "alternative": "A persistent variable-type specimen becomes index, spatial architecture, and interactive control.",
72
+ "successCriteria": [
73
+ "The specimen appears in materially different structural roles",
74
+ "Pointer and scroll input visibly reshape the specimen"
75
+ ],
76
+ "evidenceIds": ["type-system-desktop", "type-system-mobile"]
77
+ }
78
+ ```
79
+
80
+ ## Creative strategy and experimental hierarchy
81
+
82
+ At `expressive` and `award`, `creativeStrategy.path` is either:
83
+
84
+ - `diversity`: the concept-related mechanisms and drivers the experience needs;
85
+ or
86
+ - `development`: one named mechanism with materially different states and
87
+ quieter support.
88
+
89
+ `motionComplexityBudget` concentrates complexity into one to three hero moments
90
+ (normally two or three; one for a short page), names calm sections and the
91
+ shared language, and records the anti-default review. It is contextual, not a
92
+ mechanism quota.
93
+
94
+ When `experimental` is selected, `experimentalPlan` records one candidate for
95
+ every major section and marks only two or three as selected. Other sections
96
+ support, rest, contrast, prepare, or transform those peaks.
97
+
98
+ ## Font decision
99
+
100
+ `fontDecision` records at least three candidates, identifies reflex fonts using
101
+ `references/REFLEX_FONTS.json`, and includes the last three display fonts from
102
+ the ledger. A reflex winner needs a specific brand/metrics/product/reference/
103
+ language/variable-font/performance reason, recorded in `reasonKinds` using a
104
+ category from the registry. Repeating a recent display font needs an additional
105
+ `repeatJustification`.
106
+
107
+ ## `.dreative/preservation.json`
108
+
109
+ ```json
110
+ {
111
+ "version": 1,
112
+ "createdAt": "2026-01-01T00:00:00.000Z",
113
+ "items": [
114
+ {
115
+ "id": "nav-pricing",
116
+ "kind": "link",
117
+ "file": "src/components/Nav.tsx",
118
+ "needle": "href=\"/pricing\"",
119
+ "purpose": "Primary pricing navigation"
120
+ }
121
+ ]
122
+ }
123
+ ```
124
+
125
+ Allowed kinds: `link`, `handler`, `form-field`, `visible-copy`, `state`,
126
+ `analytics-hook`, `accessibility`, `route`. Intentional changes add
127
+ `intentionallyChanged: true` and a non-empty `changeReason`.
128
+
129
+ ## `.dreative/verify.json`
130
+
131
+ Schema: `schemas/verify.schema.json`.
132
+
133
+ ```json
134
+ {
135
+ "version": 1,
136
+ "generatedAt": "2026-01-01T00:00:00.000Z",
137
+ "evidence": [
138
+ {
139
+ "id": "mobile-nav",
140
+ "criterion": "Mobile navigation opens and closes",
141
+ "status": "pass",
142
+ "evidence": "Escape closes and focus returns to trigger",
143
+ "proof": {
144
+ "timestamp": "2026-01-01T00:00:00.000Z",
145
+ "artifactPath": ".dreative/screenshots/mobile-nav.png",
146
+ "viewport": { "width": 390, "height": 844, "dpr": 2 },
147
+ "testedUrl": "http://localhost:3000",
148
+ "consoleErrorCount": 0,
149
+ "playwrightTestId": "navigation closes with Escape"
150
+ }
151
+ }
152
+ ]
153
+ }
154
+ ```
155
+
156
+ Every evidence row requires a timestamp and concrete proof: an existing artifact
157
+ path, command + exit code, tested URL/console count, FPS/frame-time measurement,
158
+ or Playwright test identifier. `dreative audit` checks referenced artifact paths
159
+ and rejects passing commands with nonzero exits or passing runs with console
160
+ errors. `fail` blocks completion. Use `not-applicable` only with a concrete
161
+ explanation and proof of why the criterion does not apply.
162
+
163
+ For expressive/award motion, tag evidence with `timelineState`: initial, early,
164
+ mid-transition, final, handoff, mobile, and reduced-motion; add pinned midpoint
165
+ and exit states when relevant. Record the post-inspection refinement in
166
+ `refinement` with findings, changes, and passing evidence IDs.
167
+
168
+ ## `.dreative/ledger.json`
169
+
170
+ The ledger is append-only design memory:
171
+
172
+ ```json
173
+ {
174
+ "version": 1,
175
+ "entries": [
176
+ {
177
+ "at": "2026-01-01T00:00:00.000Z",
178
+ "request": "Redesign landing page",
179
+ "tier": "premium",
180
+ "chosen": ["Editorial split with product photography"],
181
+ "rejected": ["Bento dashboard", "Dark cinematic world"],
182
+ "failures": [],
183
+ "userPreferences": ["Calm motion", "No custom cursor"]
184
+ }
185
+ ]
186
+ }
187
+ ```
188
+
189
+ Record only project-relevant design preferences and technical failures. Never
190
+ store secrets, personal notes, or unrelated conversation.
191
+
192
+ ## Audit
193
+
194
+ Run `dreative audit`. It validates schemas, skill dependency closure, section
195
+ completion, shipped assets, preservation needles, verification evidence, and the
196
+ decision ledger. `--json` emits a machine-readable report.
@@ -0,0 +1,44 @@
1
+ {
2
+ "version": 1,
3
+ "purpose": "Flag frequently reflexive choices for explicit reasoning; these fonts are not inherently bad or prohibited.",
4
+ "fonts": [
5
+ "Inter",
6
+ "Arial",
7
+ "Helvetica",
8
+ "Roboto",
9
+ "Open Sans",
10
+ "DM Sans",
11
+ "DM Serif",
12
+ "Space Grotesk",
13
+ "Space Mono",
14
+ "Outfit",
15
+ "Plus Jakarta Sans",
16
+ "Instrument Sans",
17
+ "Instrument Serif",
18
+ "Fraunces",
19
+ "Playfair Display",
20
+ "Poppins",
21
+ "Montserrat",
22
+ "Lato",
23
+ "Oswald",
24
+ "Raleway",
25
+ "Merriweather"
26
+ ],
27
+ "validReasonKinds": [
28
+ "existing-brand",
29
+ "design-system-metrics",
30
+ "product-register",
31
+ "supplied-reference",
32
+ "language-coverage",
33
+ "variable-font-capability",
34
+ "performance",
35
+ "physical-editorial-historical-reference"
36
+ ],
37
+ "invalidGenericReasons": [
38
+ "looks clean and modern",
39
+ "clean and modern",
40
+ "looks professional",
41
+ "felt better",
42
+ "fits the design"
43
+ ]
44
+ }
@@ -0,0 +1,186 @@
1
+ {
2
+ "version": 1,
3
+ "wordingPrinciple": "Follow the proven default, or outperform it with a named alternative, measurable success criteria, and runtime evidence.",
4
+ "rules": [
5
+ {
6
+ "id": "preservation.noLoss",
7
+ "category": "hard-gate",
8
+ "observedFailure": "Redesigns silently removed links, handlers, copy, routes, states, or analytics hooks.",
9
+ "defaultRemedy": "Complete and pass the preservation manifest before delivery.",
10
+ "exceptionAllowed": false,
11
+ "exceptionTest": "none",
12
+ "reviewAfterRuns": 0
13
+ },
14
+ {
15
+ "id": "ux.functional",
16
+ "category": "hard-gate",
17
+ "observedFailure": "Visually ambitious pages shipped broken navigation, forms, states, focus, or pointer behavior.",
18
+ "defaultRemedy": "Pass the functional UX audit with keyboard and pointer evidence.",
19
+ "exceptionAllowed": false,
20
+ "exceptionTest": "none",
21
+ "reviewAfterRuns": 0
22
+ },
23
+ {
24
+ "id": "mobile.required",
25
+ "category": "hard-gate",
26
+ "observedFailure": "Desktop effects were cropped, unusable, or absent on touch devices.",
27
+ "defaultRemedy": "Ship a deliberate mobile treatment for every page and effect.",
28
+ "exceptionAllowed": false,
29
+ "exceptionTest": "none",
30
+ "reviewAfterRuns": 0
31
+ },
32
+ {
33
+ "id": "motion.reducedMotion",
34
+ "category": "hard-gate",
35
+ "observedFailure": "Motion-heavy pages ignored user preferences or hid content when animation failed.",
36
+ "defaultRemedy": "Ship visible defaults and a tested reduced-motion path.",
37
+ "exceptionAllowed": false,
38
+ "exceptionTest": "none",
39
+ "reviewAfterRuns": 0
40
+ },
41
+ {
42
+ "id": "spatial.noOcclusion",
43
+ "category": "hard-gate",
44
+ "observedFailure": "Traveling decoration and canvases covered text, controls, or pointer targets.",
45
+ "defaultRemedy": "Pass the occlusion and pointer-events sweep at desktop and mobile sizes.",
46
+ "exceptionAllowed": false,
47
+ "exceptionTest": "none",
48
+ "reviewAfterRuns": 0
49
+ },
50
+ {
51
+ "id": "3d.noCodedOrganic",
52
+ "category": "hard-gate",
53
+ "observedFailure": "Organic real-world subjects built from primitives looked like crude blobs and damaged credibility.",
54
+ "defaultRemedy": "Use a real GLB, a photoreal cutout, sourced photography, or remove the claimed object.",
55
+ "exceptionAllowed": false,
56
+ "exceptionTest": "none",
57
+ "reviewAfterRuns": 0
58
+ },
59
+ {
60
+ "id": "effects.runtimeFallback",
61
+ "category": "hard-gate",
62
+ "observedFailure": "WebGL, video, and scroll effects left blank or broken content when runtime assumptions failed.",
63
+ "defaultRemedy": "Ship and exercise loading, context-loss, low-power, and static fallbacks.",
64
+ "exceptionAllowed": false,
65
+ "exceptionTest": "none",
66
+ "reviewAfterRuns": 0
67
+ },
68
+ {
69
+ "id": "verification.realEvidence",
70
+ "category": "hard-gate",
71
+ "observedFailure": "Agents claimed checks passed without commands, screenshots, traces, or measurements.",
72
+ "defaultRemedy": "Attach structured, auditable proof to every passing verification claim.",
73
+ "exceptionAllowed": false,
74
+ "exceptionTest": "none",
75
+ "reviewAfterRuns": 0
76
+ },
77
+ {
78
+ "id": "assets.plannedExist",
79
+ "category": "hard-gate",
80
+ "observedFailure": "Plans promised distinct assets that were missing, duplicated, or never rendered.",
81
+ "defaultRemedy": "Reconcile every shipped asset path against the plan and rendered page.",
82
+ "exceptionAllowed": false,
83
+ "exceptionTest": "none",
84
+ "reviewAfterRuns": 0
85
+ },
86
+ {
87
+ "id": "content.visible",
88
+ "category": "hard-gate",
89
+ "observedFailure": "JS animation and effect layers made content invisible or inaccessible.",
90
+ "defaultRemedy": "Content remains visible and usable before enhancement and when effects fail.",
91
+ "exceptionAllowed": false,
92
+ "exceptionTest": "none",
93
+ "reviewAfterRuns": 0
94
+ },
95
+ {
96
+ "id": "typography.reflexChoice",
97
+ "category": "evidence-backed-default",
98
+ "observedFailure": "Agents repeatedly chose the same training-data fonts using generic clean-and-modern reasoning.",
99
+ "defaultRemedy": "Explore at least three candidates, mark reflex fonts, read the recent ledger, and choose a brand-specific voice.",
100
+ "exceptionAllowed": true,
101
+ "exceptionTest": "A reflex font has a specific brand, metric, product, language, variable-font, performance, or supplied-reference reason.",
102
+ "reviewAfterRuns": 5
103
+ },
104
+ {
105
+ "id": "award.spatialSignature",
106
+ "category": "evidence-backed-default",
107
+ "observedFailure": "Award builds used a generic orb or had no recurring dimensional system beyond the hero.",
108
+ "defaultRemedy": "Plan one concept-specific spatial, media, typographic, or material signature that recurs and changes state.",
109
+ "exceptionAllowed": true,
110
+ "exceptionTest": "A named alternative creates equivalent recurrence, interaction, visual dominance, and journey continuity on desktop and mobile.",
111
+ "reviewAfterRuns": 5
112
+ },
113
+ {
114
+ "id": "3d.signatureRecognizable",
115
+ "category": "evidence-backed-default",
116
+ "observedFailure": "Abstract coded spheres, blobs, and toruses were promoted as signature objects and read as generic demos.",
117
+ "defaultRemedy": "Promote a recognizable subject; keep abstract geometry supporting-only.",
118
+ "exceptionAllowed": true,
119
+ "exceptionTest": "A brand-native abstract instrument has a nameable function, material identity, recurrence, and input response rather than being ambient decoration.",
120
+ "reviewAfterRuns": 5
121
+ },
122
+ {
123
+ "id": "media.award.participatoryMoment",
124
+ "category": "evidence-backed-default",
125
+ "observedFailure": "Award media remained something visitors only watched while the page claimed immersion.",
126
+ "defaultRemedy": "Create one concept-specific point where the visitor affects, enters, transforms, or controls the media's visual logic.",
127
+ "exceptionAllowed": true,
128
+ "exceptionTest": "The visitor affects, enters, transforms, scrubs, drags, refracts, or controls the media's visual logic with equal perceptual impact.",
129
+ "reviewAfterRuns": 5
130
+ },
131
+ {
132
+ "id": "media.keyAssetTreatment",
133
+ "category": "evidence-backed-default",
134
+ "observedFailure": "Award builds shipped one set-piece while all other key images remained static or used basic fade-and-zoom.",
135
+ "defaultRemedy": "Give every key image an explicit flat-or-decompose decision and concentrate meaningful transformation where the narrative changes state.",
136
+ "exceptionAllowed": true,
137
+ "exceptionTest": "A coherent alternative media system makes key imagery intentional while preserving calm sections and asset feasibility.",
138
+ "reviewAfterRuns": 5
139
+ },
140
+ {
141
+ "id": "motion.expressive.architecture",
142
+ "category": "evidence-backed-default",
143
+ "observedFailure": "Multiple sections repeated the same simple reveal or used unrelated effects only to satisfy a catalog.",
144
+ "defaultRemedy": "Plan the page as connected visual states with a small number of hero moments, calm sections, and a concept-specific handoff language.",
145
+ "exceptionAllowed": true,
146
+ "exceptionTest": "A coherent signature mechanism develops through materially different states without requiring unrelated mechanisms or gimmick quotas.",
147
+ "reviewAfterRuns": 5
148
+ },
149
+ {
150
+ "id": "exploration.provocationRoll",
151
+ "category": "creative-provocation",
152
+ "observedFailure": "Agents converged on the first familiar concept and repeated prior signatures.",
153
+ "defaultRemedy": "Use a random provocation to force at least one divergent exploration concept.",
154
+ "exceptionAllowed": true,
155
+ "exceptionTest": "The exploration still records three genuinely divergent, brand-native concepts.",
156
+ "reviewAfterRuns": 5
157
+ },
158
+ {
159
+ "id": "experimental.sectionCandidates",
160
+ "category": "creative-provocation",
161
+ "observedFailure": "Experimental mode added effects to a conventional page or made every section compete as a technical demo.",
162
+ "defaultRemedy": "Explore one non-obvious candidate per major section, then ship only the strongest two or three.",
163
+ "exceptionAllowed": true,
164
+ "exceptionTest": "The plan records hierarchy: selected peaks plus supporting, resting, contrasting, or transforming sections.",
165
+ "reviewAfterRuns": 5
166
+ },
167
+ {
168
+ "id": "recipes.afterExploration",
169
+ "category": "creative-provocation",
170
+ "observedFailure": "Large effect catalogs anchored concepts before the agent understood the brand or assets.",
171
+ "defaultRemedy": "Record three original concepts before loading recipe references.",
172
+ "exceptionAllowed": true,
173
+ "exceptionTest": "Early recipe access is limited to feasibility for a user-mandated technique and is recorded explicitly.",
174
+ "reviewAfterRuns": 5
175
+ },
176
+ {
177
+ "id": "layout.familiesArePrompts",
178
+ "category": "creative-provocation",
179
+ "observedFailure": "Suggested layout families became repeated templates instead of content-shaped compositions.",
180
+ "defaultRemedy": "Use layout-family labels to provoke exploration, not as mandatory templates.",
181
+ "exceptionAllowed": true,
182
+ "exceptionTest": "The shipped composition is brand-native, structurally honest, and passes hierarchy and repetition checks.",
183
+ "reviewAfterRuns": 5
184
+ }
185
+ ]
186
+ }
@@ -0,0 +1,30 @@
1
+ # Specialist skill contract
2
+
3
+ Every specialist skill follows this contract, in addition to its own doctrine:
4
+
5
+ Universal foundation: ux and baseline mobile apply to every web page.
6
+
7
+ 1. **Load when:** selected in `plan.skills` or clearly triggered by the brief.
8
+ 2. **Do not load when:** the treatment adds cost without serving the request.
9
+ 3. **Dependencies:** resolve the skill graph in `SKILL.md`; `ux` and `mobile`
10
+ are universal.
11
+ 4. **Deliverables:** name concrete components, effects, assets, and states in the
12
+ plan—never select a skill as a mood label.
13
+ 5. **Budget:** define asset/runtime limits appropriate to the ambition tier.
14
+ 6. **Accessibility:** provide keyboard, reduced-motion, semantic, and readable
15
+ fallbacks for every treatment.
16
+ 7. **Fallback:** name the cheaper robust version before implementation.
17
+ 8. **Definition of done:** record observable evidence in `verify.json` and pass
18
+ `dreative audit`.
19
+
20
+ A specialist file may strengthen these floors but may not weaken them.
21
+
22
+ Rules use three categories from `RULES.json`:
23
+
24
+ - hard gates are objective delivery failures and cannot be waived;
25
+ - evidence-backed defaults are proven remedies with bounded substitutions;
26
+ - creative provocations generate exploration candidates, not mandatory clutter.
27
+
28
+ Follow the proven default, or outperform it with a named alternative,
29
+ measurable success criteria, and runtime evidence. Generate and record three
30
+ brand-native concepts before loading any `recipes/` reference.
@@ -0,0 +1,44 @@
1
+ # Ambition tiers
2
+
3
+ Choose the lowest tier that honestly satisfies the request. Higher tiers inherit
4
+ all lower-tier requirements.
5
+
6
+ ## Solid (`solid`)
7
+
8
+ - Complete, accessible, responsive interface.
9
+ - Existing behavior and preservation manifest pass.
10
+ - Clear hierarchy, coherent type/color/spacing, designed states.
11
+ - Desktop, keyboard, reduced-motion, and approximately 390px mobile verified.
12
+ - Heavy media or bespoke motion is not required.
13
+
14
+ ## Premium (`premium`)
15
+
16
+ - Everything in Solid.
17
+ - A named register, design concept, and visible signature detail.
18
+ - Intentional photography/media treatment and a dedicated craft pass.
19
+ - Layout composition varies by content; no repeated default-card solution.
20
+ - Motion is restrained and purposeful unless the brief asks for more.
21
+
22
+ ## Expressive (`expressive`)
23
+
24
+ - Everything in Premium.
25
+ - A recorded diversity-or-development path: concept-related mechanisms/drivers,
26
+ or one signature mechanism developing through materially different states.
27
+ - A section-by-section motion treatment and contextual complexity budget
28
+ concentrate structural/transformational motion into a few hero moments.
29
+ - At least one input-driven treatment; entrances alone do not satisfy the tier.
30
+ - Mobile translations and reduced-motion fallbacks are implemented, not noted.
31
+ - Frame behavior and heavy asset cost are measured.
32
+
33
+ ## Award (`award`)
34
+
35
+ - Everything in Expressive.
36
+ - A distinctive persistent spatial, media, or material system shapes the journey.
37
+ - One unmistakable spatial, media, typographic, or material signature is
38
+ subject-honest, staged, and resilient. WebGL/3D is used only when justified.
39
+ - Runtime evidence covers effects, transferred weight, frame time, occlusion,
40
+ context loss/loading, and fallbacks.
41
+ - The page has a small number of memorable moments without sacrificing function.
42
+
43
+ Do not force Award requirements on product dashboards, checkout, forms, or users
44
+ who asked for calm professional work. Ambition is a product decision, not a score.