@aexol/spectral 0.9.229 → 0.9.231

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 (189) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/auth-helper.d.ts.map +1 -1
  3. package/dist/auth-helper.js +14 -8
  4. package/dist/commands/login.d.ts +12 -4
  5. package/dist/commands/login.d.ts.map +1 -1
  6. package/dist/commands/login.js +36 -15
  7. package/dist/commands/serve.d.ts.map +1 -1
  8. package/dist/commands/serve.js +3 -0
  9. package/dist/config.d.ts +15 -0
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +10 -1
  12. package/dist/designer/data/skills/blog-post.d.ts +3 -0
  13. package/dist/designer/data/skills/blog-post.d.ts.map +1 -0
  14. package/dist/designer/data/skills/blog-post.js +84 -0
  15. package/dist/designer/data/skills/blog-post.ts +87 -0
  16. package/dist/designer/data/skills/critique.d.ts +3 -0
  17. package/dist/designer/data/skills/critique.d.ts.map +1 -0
  18. package/dist/designer/data/skills/critique.js +109 -0
  19. package/dist/designer/data/skills/critique.ts +112 -0
  20. package/dist/designer/data/skills/dashboard.d.ts +3 -0
  21. package/dist/designer/data/skills/dashboard.d.ts.map +1 -0
  22. package/dist/designer/data/skills/dashboard.js +165 -0
  23. package/dist/designer/data/skills/dashboard.ts +168 -0
  24. package/dist/designer/data/skills/design-brief.d.ts +3 -0
  25. package/dist/designer/data/skills/design-brief.d.ts.map +1 -0
  26. package/dist/designer/data/skills/design-brief.js +141 -0
  27. package/dist/designer/data/skills/design-brief.ts +144 -0
  28. package/dist/designer/data/skills/design-skill.d.ts +10 -0
  29. package/dist/designer/data/skills/design-skill.d.ts.map +1 -0
  30. package/dist/designer/data/skills/design-skill.js +1 -0
  31. package/dist/designer/data/skills/design-skill.ts +9 -0
  32. package/dist/designer/data/skills/docs-page.d.ts +3 -0
  33. package/dist/designer/data/skills/docs-page.d.ts.map +1 -0
  34. package/dist/designer/data/skills/docs-page.js +68 -0
  35. package/dist/designer/data/skills/docs-page.ts +71 -0
  36. package/dist/designer/data/skills/index.d.ts +3 -0
  37. package/dist/designer/data/skills/index.d.ts.map +1 -0
  38. package/dist/designer/data/skills/index.js +28 -0
  39. package/dist/designer/data/skills/index.ts +30 -0
  40. package/dist/designer/data/skills/magazine-poster.d.ts +3 -0
  41. package/dist/designer/data/skills/magazine-poster.d.ts.map +1 -0
  42. package/dist/designer/data/skills/magazine-poster.js +70 -0
  43. package/dist/designer/data/skills/magazine-poster.ts +73 -0
  44. package/dist/designer/data/skills/mobile-app.d.ts +3 -0
  45. package/dist/designer/data/skills/mobile-app.d.ts.map +1 -0
  46. package/dist/designer/data/skills/mobile-app.js +229 -0
  47. package/dist/designer/data/skills/mobile-app.ts +232 -0
  48. package/dist/designer/data/skills/motion-frames.d.ts +3 -0
  49. package/dist/designer/data/skills/motion-frames.d.ts.map +1 -0
  50. package/dist/designer/data/skills/motion-frames.js +121 -0
  51. package/dist/designer/data/skills/motion-frames.ts +124 -0
  52. package/dist/designer/data/skills/pricing-page.d.ts +3 -0
  53. package/dist/designer/data/skills/pricing-page.d.ts.map +1 -0
  54. package/dist/designer/data/skills/pricing-page.js +76 -0
  55. package/dist/designer/data/skills/pricing-page.ts +79 -0
  56. package/dist/designer/data/skills/saas-landing.d.ts +3 -0
  57. package/dist/designer/data/skills/saas-landing.d.ts.map +1 -0
  58. package/dist/designer/data/skills/saas-landing.js +71 -0
  59. package/dist/designer/data/skills/saas-landing.ts +74 -0
  60. package/dist/designer/data/skills/slide-deck.d.ts +3 -0
  61. package/dist/designer/data/skills/slide-deck.d.ts.map +1 -0
  62. package/dist/designer/data/skills/slide-deck.js +213 -0
  63. package/dist/designer/data/skills/slide-deck.ts +216 -0
  64. package/dist/designer/data/skills/social-carousel.d.ts +3 -0
  65. package/dist/designer/data/skills/social-carousel.d.ts.map +1 -0
  66. package/dist/designer/data/skills/social-carousel.js +135 -0
  67. package/dist/designer/data/skills/social-carousel.ts +138 -0
  68. package/dist/designer/data/skills/web-prototype.d.ts +3 -0
  69. package/dist/designer/data/skills/web-prototype.d.ts.map +1 -0
  70. package/dist/designer/data/skills/web-prototype.js +159 -0
  71. package/dist/designer/data/skills/web-prototype.ts +162 -0
  72. package/dist/designer/skills.d.ts +4 -10
  73. package/dist/designer/skills.d.ts.map +1 -1
  74. package/dist/designer/skills.js +2 -1643
  75. package/dist/extensions/wizard/index.js +9 -1
  76. package/dist/generated/parser/ast/nodes.d.ts +115 -0
  77. package/dist/generated/parser/ast/nodes.d.ts.map +1 -0
  78. package/dist/generated/parser/ast/nodes.js +8 -0
  79. package/dist/generated/parser/lexer/lexer.d.ts +28 -0
  80. package/dist/generated/parser/lexer/lexer.d.ts.map +1 -0
  81. package/dist/generated/parser/{lexer.js → lexer/lexer.js} +1 -180
  82. package/dist/generated/parser/{lexer.d.ts → lexer/tokens.d.ts} +5 -24
  83. package/dist/generated/parser/lexer/tokens.d.ts.map +1 -0
  84. package/dist/generated/parser/lexer/tokens.js +187 -0
  85. package/dist/generated/parser/mod.d.ts +5 -7
  86. package/dist/generated/parser/mod.d.ts.map +1 -1
  87. package/dist/generated/parser/mod.js +2 -1
  88. package/dist/generated/parser/parser/cursor.d.ts +47 -0
  89. package/dist/generated/parser/parser/cursor.d.ts.map +1 -0
  90. package/dist/generated/parser/parser/cursor.js +12 -0
  91. package/dist/generated/parser/parser/definitions.d.ts +16 -0
  92. package/dist/generated/parser/parser/definitions.d.ts.map +1 -0
  93. package/dist/generated/parser/parser/definitions.js +353 -0
  94. package/dist/generated/parser/parser/expressions.d.ts +17 -0
  95. package/dist/generated/parser/parser/expressions.d.ts.map +1 -0
  96. package/dist/generated/parser/parser/expressions.js +165 -0
  97. package/dist/generated/parser/parser.d.ts +18 -133
  98. package/dist/generated/parser/parser.d.ts.map +1 -1
  99. package/dist/generated/parser/parser.js +9 -505
  100. package/dist/generated/parser/tokenizer.d.ts +1 -2
  101. package/dist/generated/parser/tokenizer.d.ts.map +1 -1
  102. package/dist/generated/parser/tokenizer.js +2 -1
  103. package/dist/generated/parser/validator.d.ts +1 -1
  104. package/dist/generated/parser/validator.d.ts.map +1 -1
  105. package/dist/generated/zeus/const.d.ts.map +1 -1
  106. package/dist/generated/zeus/const.js +21 -0
  107. package/dist/generated/zeus/index.d.ts +98 -0
  108. package/dist/generated/zeus/index.d.ts.map +1 -1
  109. package/dist/mcp/glimpse-ui.js +9 -1
  110. package/dist/relay/dispatcher.d.ts +11 -104
  111. package/dist/relay/dispatcher.d.ts.map +1 -1
  112. package/dist/relay/dispatcher.js +10 -1130
  113. package/dist/relay/registration.d.ts +10 -2
  114. package/dist/relay/registration.d.ts.map +1 -1
  115. package/dist/relay/registration.js +32 -3
  116. package/dist/relay/rest.d.ts +31 -0
  117. package/dist/relay/rest.d.ts.map +1 -0
  118. package/dist/relay/rest.js +85 -0
  119. package/dist/relay/routing.d.ts +109 -0
  120. package/dist/relay/routing.d.ts.map +1 -0
  121. package/dist/relay/routing.js +669 -0
  122. package/dist/relay/wizard-login.d.ts +17 -0
  123. package/dist/relay/wizard-login.d.ts.map +1 -0
  124. package/dist/relay/wizard-login.js +419 -0
  125. package/dist/sdk/agent-core/agent-loop.d.ts +2 -9
  126. package/dist/sdk/agent-core/agent-loop.d.ts.map +1 -1
  127. package/dist/sdk/agent-core/agent-loop.js +4 -288
  128. package/dist/sdk/agent-core/tool-execution.d.ts +33 -0
  129. package/dist/sdk/agent-core/tool-execution.d.ts.map +1 -0
  130. package/dist/sdk/agent-core/tool-execution.js +300 -0
  131. package/dist/sdk/ai/env-api-keys.js +9 -1
  132. package/dist/sdk/ai/providers/openai/reasoning-replay.d.ts +48 -0
  133. package/dist/sdk/ai/providers/openai/reasoning-replay.d.ts.map +1 -0
  134. package/dist/sdk/ai/providers/openai/reasoning-replay.js +209 -0
  135. package/dist/sdk/ai/providers/openai-completions.d.ts.map +1 -1
  136. package/dist/sdk/ai/providers/openai-completions.js +1 -203
  137. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts +6 -118
  138. package/dist/sdk/coding-agent/core/compaction/compaction.d.ts.map +1 -1
  139. package/dist/sdk/coding-agent/core/compaction/compaction.js +11 -733
  140. package/dist/sdk/coding-agent/core/compaction/cut-points.d.ts +58 -0
  141. package/dist/sdk/coding-agent/core/compaction/cut-points.d.ts.map +1 -0
  142. package/dist/sdk/coding-agent/core/compaction/cut-points.js +191 -0
  143. package/dist/sdk/coding-agent/core/compaction/dedupe.d.ts +28 -0
  144. package/dist/sdk/coding-agent/core/compaction/dedupe.d.ts.map +1 -0
  145. package/dist/sdk/coding-agent/core/compaction/dedupe.js +156 -0
  146. package/dist/sdk/coding-agent/core/compaction/summarize.d.ts +21 -0
  147. package/dist/sdk/coding-agent/core/compaction/summarize.d.ts.map +1 -0
  148. package/dist/sdk/coding-agent/core/compaction/summarize.js +181 -0
  149. package/dist/sdk/coding-agent/core/compaction/tokens.d.ts +47 -0
  150. package/dist/sdk/coding-agent/core/compaction/tokens.d.ts.map +1 -0
  151. package/dist/sdk/coding-agent/core/compaction/tokens.js +224 -0
  152. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts +157 -0
  153. package/dist/sdk/coding-agent/core/extensions/session-events.d.ts.map +1 -0
  154. package/dist/sdk/coding-agent/core/extensions/session-events.js +13 -0
  155. package/dist/sdk/coding-agent/core/extensions/types.d.ts +6 -365
  156. package/dist/sdk/coding-agent/core/extensions/types.d.ts.map +1 -1
  157. package/dist/sdk/coding-agent/core/extensions/types.js +2 -10
  158. package/dist/sdk/coding-agent/core/extensions/ui-types.d.ts +219 -0
  159. package/dist/sdk/coding-agent/core/extensions/ui-types.d.ts.map +1 -0
  160. package/dist/sdk/coding-agent/core/extensions/ui-types.js +4 -0
  161. package/dist/sdk/coding-agent/core/package/default-package-manager.d.ts +115 -0
  162. package/dist/sdk/coding-agent/core/package/default-package-manager.d.ts.map +1 -0
  163. package/dist/sdk/coding-agent/core/package/default-package-manager.js +1184 -0
  164. package/dist/sdk/coding-agent/core/package/discovery.d.ts +20 -0
  165. package/dist/sdk/coding-agent/core/package/discovery.d.ts.map +1 -0
  166. package/dist/sdk/coding-agent/core/package/discovery.js +283 -0
  167. package/dist/sdk/coding-agent/core/package/ignore.d.ts +29 -0
  168. package/dist/sdk/coding-agent/core/package/ignore.d.ts.map +1 -0
  169. package/dist/sdk/coding-agent/core/package/ignore.js +235 -0
  170. package/dist/sdk/coding-agent/core/package/types.d.ts +128 -0
  171. package/dist/sdk/coding-agent/core/package/types.d.ts.map +1 -0
  172. package/dist/sdk/coding-agent/core/package/types.js +18 -0
  173. package/dist/sdk/coding-agent/core/package/update-check.d.ts +43 -0
  174. package/dist/sdk/coding-agent/core/package/update-check.d.ts.map +1 -0
  175. package/dist/sdk/coding-agent/core/package/update-check.js +253 -0
  176. package/dist/sdk/coding-agent/core/package-manager.d.ts +2 -188
  177. package/dist/sdk/coding-agent/core/package-manager.d.ts.map +1 -1
  178. package/dist/sdk/coding-agent/core/package-manager.js +1 -1940
  179. package/dist/sdk/coding-agent/core/session/migrate.d.ts +18 -0
  180. package/dist/sdk/coding-agent/core/session/migrate.d.ts.map +1 -0
  181. package/dist/sdk/coding-agent/core/session/migrate.js +78 -0
  182. package/dist/sdk/coding-agent/core/session/types.d.ts +165 -0
  183. package/dist/sdk/coding-agent/core/session/types.d.ts.map +1 -0
  184. package/dist/sdk/coding-agent/core/session/types.js +4 -0
  185. package/dist/sdk/coding-agent/core/session-manager.d.ts +3 -161
  186. package/dist/sdk/coding-agent/core/session-manager.d.ts.map +1 -1
  187. package/dist/sdk/coding-agent/core/session-manager.js +4 -72
  188. package/package.json +2 -2
  189. package/dist/generated/parser/lexer.d.ts.map +0 -1
@@ -0,0 +1,144 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+
3
+ export const designBrief: DesignSkill = {
4
+ name: "design-brief",
5
+ scenario: "design",
6
+ description:
7
+ "Parse a design brief into concrete tokens. Resolves 8 design dimensions (palette, accent, typography, display, layout, mood, density, constraints) from natural language or I-Lang structured format, then generates a DESIGN.md and visual preview.",
8
+ outputKind: "html",
9
+ workflow: `# Design Brief Skill
10
+
11
+ Parse a structured or natural-language design brief into a concrete DESIGN.md and optional visual preview HTML.
12
+
13
+ ## Background
14
+
15
+ This skill resolves the 8 key design dimensions that every design artifact needs, using a closed vocabulary of symbolic values that map to concrete CSS tokens. It eliminates ambiguity from vague requests like "make it clean" or "make it professional."
16
+
17
+ ## Phase 1 — Accept input
18
+
19
+ The user provides a design brief in one of two formats:
20
+
21
+ ### Option A: I-Lang structured brief
22
+ \`\`\`
23
+ [PLAN:@DESIGN|type=saas_landing]
24
+ |palette=navy_and_white|accent=coral
25
+ |typography=inter|display=space_grotesk
26
+ |layout=single_column|max_width=1200px
27
+ |mood=professional_minimal
28
+ |density=spacious|section_gap=96px
29
+ |hero=headline+subhead+cta
30
+ |sections=features,pricing,testimonials,footer
31
+ |exclude=animations,parallax,gradients
32
+ |responsive=mobile_first
33
+ \`\`\`
34
+
35
+ ### Option B: Natural language
36
+ > "I need a landing page for a developer tool. Clean, minimal, dark mode. Inter font. No flashy animations."
37
+
38
+ If the user provides Option B, convert it using the mapping table below, then proceed.
39
+
40
+ ### Natural language → I-Lang mapping
41
+
42
+ | Natural language phrase | Dimension | I-Lang value |
43
+ |------------------------|-----------|-------------|
44
+ | "dark mode", "dark theme" | palette | \`monochrome_dark\` |
45
+ | "light", "white background" | palette | \`light_clean\` |
46
+ | "earthy", "warm tones" | palette | \`earth_tones\` |
47
+ | "pop of color", "vibrant" | accent | \`electric_blue\` or \`coral\` |
48
+ | "subtle accent" | accent | \`muted_sage\` or \`slate\` |
49
+ | "clean", "minimal", "simple" | mood | \`professional_minimal\` |
50
+ | "playful", "fun", "friendly" | mood | \`playful\` |
51
+ | "bold", "brutalist", "raw" | mood | \`brutalist\` |
52
+ | "editorial", "magazine-like" | mood | \`editorial\` |
53
+ | "spacious", "lots of whitespace" | density | \`spacious\` |
54
+ | "compact", "dense", "information-rich" | density | \`compact\` |
55
+ | "Inter", "system font" | typography | \`inter\` or \`system_ui\` |
56
+ | "serif", "traditional" | typography | \`georgia\` or \`playfair\` |
57
+ | "monospace", "code-like" | typography | \`jetbrains_mono\` |
58
+ | "no animations", "static" | exclude | \`animations\` |
59
+ | "no gradients" | exclude | \`gradients\` |
60
+ | "single page" | layout | \`single_column\` |
61
+ | "two columns", "sidebar" | layout | \`two_column\` |
62
+ | "mobile first" | responsive | \`mobile_first\` |
63
+
64
+ ## Phase 2 — Validate 8 dimensions
65
+
66
+ Every design brief must resolve these 8 dimensions. If any are missing, select sensible defaults:
67
+
68
+ | # | Dimension | Key | Example values |
69
+ |---|-----------|-----|---------------|
70
+ | 1 | Color palette | \`palette\` | navy_and_white, earth_tones, monochrome_dark, light_clean |
71
+ | 2 | Accent color | \`accent\` | coral, electric_blue, emerald, muted_sage, slate |
72
+ | 3 | Body typography | \`typography\` | inter, system_ui, dm_sans, georgia |
73
+ | 4 | Display typography | \`display\` | space_grotesk, clash_display, same_as_body, playfair |
74
+ | 5 | Layout model | \`layout\` | single_column, two_column, asymmetric |
75
+ | 6 | Mood | \`mood\` | professional_minimal, playful, brutalist, editorial |
76
+ | 7 | Density | \`density\` | compact, balanced, spacious |
77
+ | 8 | Constraints | \`exclude\` | animations, gradients, stock_photos, carousel |
78
+
79
+ ### Symbolic → concrete token resolution
80
+
81
+ | Symbolic value | Concrete tokens |
82
+ |---------------|----------------|
83
+ | \`palette=navy_and_white\` | Background: #0F172A, Surface: #1E293B, Text: #F8FAFC, Secondary: #94A3B8 |
84
+ | \`palette=monochrome_dark\` | Background: #09090B, Surface: #18181B, Text: #FAFAFA, Secondary: #A1A1AA |
85
+ | \`palette=light_clean\` | Background: #FFFFFF, Surface: #F8FAFC, Text: #0F172A, Secondary: #64748B |
86
+ | \`palette=earth_tones\` | Background: #FFFBEB, Surface: #FEF3C7, Text: #451A03, Secondary: #92400E |
87
+ | \`accent=coral\` | Accent: #F97316, Hover: #EA580C |
88
+ | \`accent=electric_blue\` | Accent: #3B82F6, Hover: #2563EB |
89
+ | \`accent=emerald\` | Accent: #10B981, Hover: #059669 |
90
+ | \`accent=muted_sage\` | Accent: #84A98C, Hover: #6B8F73 |
91
+ | \`accent=slate\` | Accent: #64748B, Hover: #475569 |
92
+ | \`density=compact\` | Section spacing: 48px, Content padding: 16px/24px |
93
+ | \`density=balanced\` | Section spacing: 72px, Content padding: 24px/40px |
94
+ | \`density=spacious\` | Section spacing: 96px, Content padding: 24px/48px |
95
+
96
+ ### Default resolution rules
97
+
98
+ | Unspecified dimension | Default rule |
99
+ |----------------------|-------------|
100
+ | \`palette\` | If mood=editorial → \`light_clean\`. If mood=brutalist → \`monochrome_dark\`. Else → \`light_clean\`. |
101
+ | \`accent\` | If palette is dark → \`coral\`. If palette is light → \`electric_blue\`. |
102
+ | \`typography\` | Always → \`inter\` (highest cross-platform legibility). |
103
+ | \`display\` | If mood=editorial → \`playfair\`. If mood=brutalist → \`space_grotesk\`. Else → \`same_as_body\`. |
104
+ | \`layout\` | Always → \`single_column\`. |
105
+ | \`mood\` | Always → \`professional_minimal\`. |
106
+ | \`density\` | Always → \`balanced\`. |
107
+ | \`exclude\` | Always → none (no constraints unless specified). |
108
+
109
+ ## Phase 3 — Generate DESIGN.md
110
+
111
+ Produce a DESIGN.md with these sections:
112
+ 1. **Visual Theme & Atmosphere** — mood, feel, references
113
+ 2. **Color Palette & Roles** — background, surface, text, accent, semantic colors
114
+ 3. **Typography Rules** — display, body, mono font specs with sizes
115
+ 4. **Component Stylings** — buttons, cards, inputs with concrete CSS values
116
+ 5. **Layout Principles** — max width, grid, section spacing, content padding
117
+ 6. **Depth & Elevation** — shadows, borders
118
+ 7. **Do's and Don'ts** — 5-6 rules for agents
119
+ 8. **Responsive Behavior** — breakpoints at 640px, 768px, 1024px, 1280px
120
+ 9. **Agent Prompt Guide** — constraints for code generation
121
+
122
+ All color hex values, font stacks, and spacing values must come from the resolved tokens in Phase 2 — do not invent values.
123
+
124
+ ## Phase 4 — Generate brief-preview.html
125
+
126
+ Create a single HTML file visualizing the resolved tokens with 4 sections:
127
+ 1. **Color palette swatches** — labeled with role and hex code
128
+ 2. **Typography specimens** — Display, Body, and Mono at declared sizes
129
+ 3. **Spacing ruler** — section spacing and content padding, labeled
130
+ 4. **Component preview** — 2-3 live components (button, card, input) using the resolved tokens
131
+
132
+ Style the preview itself with the resolved design system tokens.
133
+
134
+ ## Phase 5 — Report defaults applied
135
+
136
+ List any dimensions the user did not specify and the defaults applied:
137
+ \`\`\`
138
+ Dimensions resolved from defaults:
139
+ - display: set to "same_as_body" (rule: mood=professional_minimal → same_as_body)
140
+ - density: set to "balanced" (rule: no spacing preference given)
141
+ \`\`\`
142
+
143
+ This transparency prevents silent assumptions from propagating into the final design.`,
144
+ };
@@ -0,0 +1,10 @@
1
+ export interface DesignSkill {
2
+ name: string;
3
+ scenario: string;
4
+ description: string;
5
+ /** What kind of artifact this produces */
6
+ outputKind: "html" | "html-multi" | "slides";
7
+ /** The full workflow guide for the LLM */
8
+ workflow: string;
9
+ }
10
+ //# sourceMappingURL=design-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-skill.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/design-skill.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC7C,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export interface DesignSkill {
2
+ name: string;
3
+ scenario: string;
4
+ description: string;
5
+ /** What kind of artifact this produces */
6
+ outputKind: "html" | "html-multi" | "slides";
7
+ /** The full workflow guide for the LLM */
8
+ workflow: string;
9
+ }
@@ -0,0 +1,3 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+ export declare const docsPage: DesignSkill;
3
+ //# sourceMappingURL=docs-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-page.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/docs-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,QAAQ,EAAE,WAoEpB,CAAC"}
@@ -0,0 +1,68 @@
1
+ export const docsPage = {
2
+ name: "docs-page",
3
+ scenario: "engineering",
4
+ description: "Documentation page — left sidebar nav (sticky), scrollable article body, right table of contents. Three-column layout with grouped navigation links, code blocks, callouts, and proper RTL support.",
5
+ outputKind: "html",
6
+ workflow: `# Docs Page Skill
7
+
8
+ Produce a single, three-column documentation page in one HTML file.
9
+
10
+ ## Phase 1 — Pre-flight
11
+
12
+ 1. Read the active design system. Use the body type token for prose; the mono token for code; respect line-height and max-width rules.
13
+ 2. Pick a concrete topic from the brief — the page should look like real docs, not a generic wireframe. Concrete API names, command examples, plausible parameters.
14
+
15
+ ## Phase 2 — Three-column layout
16
+
17
+ \`\`\`css
18
+ .docs-layout { display: grid; grid-template-columns: 260px minmax(0, 720px) 200px; gap: 0; min-height: 100vh; }
19
+
20
+ /* Left sidebar — sticky nav */
21
+ .docs-nav { position: sticky; top: 0; height: 100vh; overflow-y: auto; padding: 32px 24px; border-right: 1px solid var(--border); background: var(--bg); }
22
+ .docs-nav-group { margin-bottom: 24px; }
23
+ .docs-nav-group-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); margin-bottom: 8px; padding: 0 8px; }
24
+ .docs-nav-link { display: block; padding: 6px 8px; border-radius: 6px; font-size: 14px; color: var(--muted); text-decoration: none; }
25
+ .docs-nav-link:hover { color: var(--fg); background: var(--surface); }
26
+ .docs-nav-link.active { color: var(--fg); background: var(--surface); border-left: 2px solid var(--accent); margin-left: -2px; }
27
+
28
+ /* Article body */
29
+ .docs-article { padding: 48px 64px; max-width: 720px; }
30
+
31
+ /* Right TOC — sticky */
32
+ .docs-toc { position: sticky; top: 0; height: 100vh; overflow-y: auto; padding: 32px 16px; border-left: 1px solid var(--border); font-size: 13px; }
33
+ .docs-toc-title { font-weight: 600; margin-bottom: 12px; }
34
+ .docs-toc a { display: block; padding: 3px 0; color: var(--muted); text-decoration: none; }
35
+ .docs-toc a:hover, .docs-toc a.active { color: var(--accent); }
36
+ \`\`\`
37
+
38
+ ## Phase 3 — Article Components
39
+
40
+ ### Code blocks
41
+ \`\`\`css
42
+ pre { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 20px 24px; overflow-x: auto; font-family: var(--font-mono); font-size: 14px; line-height: 1.6; margin: 24px 0; }
43
+ code { font-family: var(--font-mono); font-size: 0.9em; background: var(--surface); padding: 2px 6px; border-radius: 4px; }
44
+ pre code { background: none; padding: 0; }
45
+ \`\`\`
46
+
47
+ ### Callout boxes
48
+ \`\`\`css
49
+ .callout { border-left: 4px solid var(--accent); background: color-mix(in oklab, var(--accent) 5%, var(--bg)); padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 24px 0; font-size: 14px; }
50
+ .callout.warning { border-color: var(--warn, #f59e0b); background: color-mix(in oklab, var(--warn, #f59e0b) 5%, var(--bg)); }
51
+ .callout-title { font-weight: 600; margin-bottom: 4px; }
52
+ \`\`\`
53
+
54
+ ### Typography
55
+ \`\`\`css
56
+ .docs-article h1 { font-size: 32px; font-weight: 700; line-height: 1.2; letter-spacing: -0.02em; margin-bottom: 8px; }
57
+ .docs-article h2 { font-size: 24px; font-weight: 600; line-height: 1.3; margin-top: 48px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
58
+ .docs-article h3 { font-size: 18px; font-weight: 600; margin-top: 32px; margin-bottom: 8px; }
59
+ .docs-article p { font-size: 16px; line-height: 1.7; margin: 12px 0; color: var(--fg); }
60
+ \`\`\`
61
+
62
+ ## Phase 4 — Content Rules
63
+ - Navigation: 3-5 groups of 4-8 links each
64
+ - Article: H1, lede paragraph, H2 sections, code blocks, callouts (note/warning), inline links, lists
65
+ - TOC: "On this page" with H2 anchors, current section highlighted on scroll
66
+ - Concrete content: specific API names, command examples, plausible parameters — not placeholders
67
+ - Respect RTL: layout expressed on the inline axis so it flips correctly under dir="rtl"`,
68
+ };
@@ -0,0 +1,71 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+
3
+ export const docsPage: DesignSkill = {
4
+ name: "docs-page",
5
+ scenario: "engineering",
6
+ description:
7
+ "Documentation page — left sidebar nav (sticky), scrollable article body, right table of contents. Three-column layout with grouped navigation links, code blocks, callouts, and proper RTL support.",
8
+ outputKind: "html",
9
+ workflow: `# Docs Page Skill
10
+
11
+ Produce a single, three-column documentation page in one HTML file.
12
+
13
+ ## Phase 1 — Pre-flight
14
+
15
+ 1. Read the active design system. Use the body type token for prose; the mono token for code; respect line-height and max-width rules.
16
+ 2. Pick a concrete topic from the brief — the page should look like real docs, not a generic wireframe. Concrete API names, command examples, plausible parameters.
17
+
18
+ ## Phase 2 — Three-column layout
19
+
20
+ \`\`\`css
21
+ .docs-layout { display: grid; grid-template-columns: 260px minmax(0, 720px) 200px; gap: 0; min-height: 100vh; }
22
+
23
+ /* Left sidebar — sticky nav */
24
+ .docs-nav { position: sticky; top: 0; height: 100vh; overflow-y: auto; padding: 32px 24px; border-right: 1px solid var(--border); background: var(--bg); }
25
+ .docs-nav-group { margin-bottom: 24px; }
26
+ .docs-nav-group-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--muted); margin-bottom: 8px; padding: 0 8px; }
27
+ .docs-nav-link { display: block; padding: 6px 8px; border-radius: 6px; font-size: 14px; color: var(--muted); text-decoration: none; }
28
+ .docs-nav-link:hover { color: var(--fg); background: var(--surface); }
29
+ .docs-nav-link.active { color: var(--fg); background: var(--surface); border-left: 2px solid var(--accent); margin-left: -2px; }
30
+
31
+ /* Article body */
32
+ .docs-article { padding: 48px 64px; max-width: 720px; }
33
+
34
+ /* Right TOC — sticky */
35
+ .docs-toc { position: sticky; top: 0; height: 100vh; overflow-y: auto; padding: 32px 16px; border-left: 1px solid var(--border); font-size: 13px; }
36
+ .docs-toc-title { font-weight: 600; margin-bottom: 12px; }
37
+ .docs-toc a { display: block; padding: 3px 0; color: var(--muted); text-decoration: none; }
38
+ .docs-toc a:hover, .docs-toc a.active { color: var(--accent); }
39
+ \`\`\`
40
+
41
+ ## Phase 3 — Article Components
42
+
43
+ ### Code blocks
44
+ \`\`\`css
45
+ pre { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 20px 24px; overflow-x: auto; font-family: var(--font-mono); font-size: 14px; line-height: 1.6; margin: 24px 0; }
46
+ code { font-family: var(--font-mono); font-size: 0.9em; background: var(--surface); padding: 2px 6px; border-radius: 4px; }
47
+ pre code { background: none; padding: 0; }
48
+ \`\`\`
49
+
50
+ ### Callout boxes
51
+ \`\`\`css
52
+ .callout { border-left: 4px solid var(--accent); background: color-mix(in oklab, var(--accent) 5%, var(--bg)); padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 24px 0; font-size: 14px; }
53
+ .callout.warning { border-color: var(--warn, #f59e0b); background: color-mix(in oklab, var(--warn, #f59e0b) 5%, var(--bg)); }
54
+ .callout-title { font-weight: 600; margin-bottom: 4px; }
55
+ \`\`\`
56
+
57
+ ### Typography
58
+ \`\`\`css
59
+ .docs-article h1 { font-size: 32px; font-weight: 700; line-height: 1.2; letter-spacing: -0.02em; margin-bottom: 8px; }
60
+ .docs-article h2 { font-size: 24px; font-weight: 600; line-height: 1.3; margin-top: 48px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
61
+ .docs-article h3 { font-size: 18px; font-weight: 600; margin-top: 32px; margin-bottom: 8px; }
62
+ .docs-article p { font-size: 16px; line-height: 1.7; margin: 12px 0; color: var(--fg); }
63
+ \`\`\`
64
+
65
+ ## Phase 4 — Content Rules
66
+ - Navigation: 3-5 groups of 4-8 links each
67
+ - Article: H1, lede paragraph, H2 sections, code blocks, callouts (note/warning), inline links, lists
68
+ - TOC: "On this page" with H2 anchors, current section highlighted on scroll
69
+ - Concrete content: specific API names, command examples, plausible parameters — not placeholders
70
+ - Respect RTL: layout expressed on the inline axis so it flips correctly under dir="rtl"`,
71
+ };
@@ -0,0 +1,3 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+ export declare const DESIGN_SKILLS: DesignSkill[];
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAerD,eAAO,MAAM,aAAa,EAAE,WAAW,EActC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { blogPost } from "./blog-post.js";
2
+ import { critique } from "./critique.js";
3
+ import { dashboard } from "./dashboard.js";
4
+ import { designBrief } from "./design-brief.js";
5
+ import { docsPage } from "./docs-page.js";
6
+ import { magazinePoster } from "./magazine-poster.js";
7
+ import { mobileApp } from "./mobile-app.js";
8
+ import { motionFrames } from "./motion-frames.js";
9
+ import { pricingPage } from "./pricing-page.js";
10
+ import { saasLanding } from "./saas-landing.js";
11
+ import { slideDeck } from "./slide-deck.js";
12
+ import { socialCarousel } from "./social-carousel.js";
13
+ import { webPrototype } from "./web-prototype.js";
14
+ export const DESIGN_SKILLS = [
15
+ webPrototype,
16
+ saasLanding,
17
+ slideDeck,
18
+ mobileApp,
19
+ dashboard,
20
+ socialCarousel,
21
+ designBrief,
22
+ critique,
23
+ pricingPage,
24
+ docsPage,
25
+ blogPost,
26
+ magazinePoster,
27
+ motionFrames,
28
+ ];
@@ -0,0 +1,30 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+ import { blogPost } from "./blog-post.js";
3
+ import { critique } from "./critique.js";
4
+ import { dashboard } from "./dashboard.js";
5
+ import { designBrief } from "./design-brief.js";
6
+ import { docsPage } from "./docs-page.js";
7
+ import { magazinePoster } from "./magazine-poster.js";
8
+ import { mobileApp } from "./mobile-app.js";
9
+ import { motionFrames } from "./motion-frames.js";
10
+ import { pricingPage } from "./pricing-page.js";
11
+ import { saasLanding } from "./saas-landing.js";
12
+ import { slideDeck } from "./slide-deck.js";
13
+ import { socialCarousel } from "./social-carousel.js";
14
+ import { webPrototype } from "./web-prototype.js";
15
+
16
+ export const DESIGN_SKILLS: DesignSkill[] = [
17
+ webPrototype,
18
+ saasLanding,
19
+ slideDeck,
20
+ mobileApp,
21
+ dashboard,
22
+ socialCarousel,
23
+ designBrief,
24
+ critique,
25
+ pricingPage,
26
+ docsPage,
27
+ blogPost,
28
+ magazinePoster,
29
+ motionFrames,
30
+ ];
@@ -0,0 +1,3 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+ export declare const magazinePoster: DesignSkill;
3
+ //# sourceMappingURL=magazine-poster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magazine-poster.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/magazine-poster.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,cAAc,EAAE,WAsE1B,CAAC"}
@@ -0,0 +1,70 @@
1
+ export const magazinePoster = {
2
+ name: "magazine-poster",
3
+ scenario: "creative",
4
+ description: "Editorial magazine poster or spread — bold typography, large-scale display font, dramatic image/color blocking. Magazine-cover aesthetic with strong visual hierarchy.",
5
+ outputKind: "html",
6
+ workflow: `# Magazine Poster Skill
7
+
8
+ Produce an editorial magazine poster or spread. Bold typography, large-scale display font, dramatic layout — the kind of image that could be a magazine cover or poster.
9
+
10
+ ## Phase 1 — Determine Format
11
+
12
+ - **Poster** (A3-ish: 960×1358px or similar portrait ratio) — single bold composition
13
+ - **Magazine spread** (landscape: 1440×960px or similar) — two-page feel with gutter
14
+ - **Social cover** (square: 1080×1080px) — optimized for social sharing
15
+
16
+ ## Phase 2 — Composition Modes
17
+
18
+ ### Mode A: Typography-first
19
+ Big display text dominates. Color block background, minimal elements. Font scale carries the energy.
20
+ \`\`\`css
21
+ .poster { width: 960px; height: 1358px; background: var(--bg); display: flex; flex-direction: column; justify-content: center; padding: 80px; position: relative; overflow: hidden; }
22
+ .poster-eyebrow { font-size: 14px; text-transform: uppercase; letter-spacing: 0.15em; color: var(--muted); margin-bottom: 24px; }
23
+ .poster-headline { font-family: var(--font-display, var(--font-body)); font-size: 96px; font-weight: 800; line-height: 1.05; letter-spacing: -0.03em; }
24
+ .poster-subhead { font-size: 24px; color: var(--muted); margin-top: 32px; max-width: 600px; line-height: 1.5; }
25
+ .poster-issue { position: absolute; bottom: 60px; left: 80px; font-size: 14px; color: var(--muted); }
26
+ \`\`\`
27
+
28
+ ### Mode B: Image-first
29
+ Large image dominates 70% of the canvas, typography overlays or sits below.
30
+ \`\`\`css
31
+ .poster-image-first { width: 960px; height: 1358px; display: grid; grid-template-rows: 1fr auto; background: var(--bg); }
32
+ .poster-image { width: 100%; height: 100%; object-fit: cover; background: linear-gradient(135deg, var(--accent), var(--surface)); }
33
+ .poster-text-block { padding: 48px 64px; }
34
+ \`\`\`
35
+
36
+ ### Mode C: Split-screen
37
+ Two-panel composition — color block left, image right (or vice versa).
38
+ \`\`\`css
39
+ .poster-split { width: 1440px; height: 960px; display: grid; grid-template-columns: 1fr 1fr; }
40
+ .poster-split-panel { display: flex; flex-direction: column; justify-content: center; padding: 80px; }
41
+ .poster-split-panel.left { background: var(--accent); color: var(--accent-on, white); }
42
+ .poster-split-panel.right { background: var(--bg); }
43
+ \`\`\`
44
+
45
+ ## Phase 3 — Typography Scale
46
+
47
+ \`\`\`css
48
+ /* Magazine typography is dramatic — go big */
49
+ .display-xxl { font-size: 120px; font-weight: 800; line-height: 0.95; letter-spacing: -0.04em; }
50
+ .display-xl { font-size: 80px; font-weight: 800; line-height: 1.0; letter-spacing: -0.03em; }
51
+ .display-lg { font-size: 56px; font-weight: 700; line-height: 1.1; }
52
+ .poster-body { font-size: 18px; line-height: 1.6; }
53
+ .poster-meta { font-size: 12px; text-transform: uppercase; letter-spacing: 0.12em; }
54
+ \`\`\`
55
+
56
+ ## Phase 4 — Design Elements
57
+
58
+ - **Accent shapes**: Use ::before/::after pseudo-elements for geometric accents (circles, lines, color blocks)
59
+ - **Photo treatment**: Use mix-blend-mode on images over color backgrounds
60
+ - **Grid lines**: Thin horizontal/vertical rules as structural elements
61
+ - **Page numbers**: ALWAYS include an issue/volume/page-number block
62
+ - **Date line**: MONTH YYYY format in the masthead area
63
+
64
+ ## Phase 5 — Anti-Kitsch Rules
65
+ - No emoji in editorial design
66
+ - Use the design system's display font at scale — not a safe web font
67
+ - Headline should create tension: unexpected word break, dramatic line split, or bold claim
68
+ - One focal point per poster — don't make everything compete
69
+ - white-space is intentional, not leftover`,
70
+ };
@@ -0,0 +1,73 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+
3
+ export const magazinePoster: DesignSkill = {
4
+ name: "magazine-poster",
5
+ scenario: "creative",
6
+ description:
7
+ "Editorial magazine poster or spread — bold typography, large-scale display font, dramatic image/color blocking. Magazine-cover aesthetic with strong visual hierarchy.",
8
+ outputKind: "html",
9
+ workflow: `# Magazine Poster Skill
10
+
11
+ Produce an editorial magazine poster or spread. Bold typography, large-scale display font, dramatic layout — the kind of image that could be a magazine cover or poster.
12
+
13
+ ## Phase 1 — Determine Format
14
+
15
+ - **Poster** (A3-ish: 960×1358px or similar portrait ratio) — single bold composition
16
+ - **Magazine spread** (landscape: 1440×960px or similar) — two-page feel with gutter
17
+ - **Social cover** (square: 1080×1080px) — optimized for social sharing
18
+
19
+ ## Phase 2 — Composition Modes
20
+
21
+ ### Mode A: Typography-first
22
+ Big display text dominates. Color block background, minimal elements. Font scale carries the energy.
23
+ \`\`\`css
24
+ .poster { width: 960px; height: 1358px; background: var(--bg); display: flex; flex-direction: column; justify-content: center; padding: 80px; position: relative; overflow: hidden; }
25
+ .poster-eyebrow { font-size: 14px; text-transform: uppercase; letter-spacing: 0.15em; color: var(--muted); margin-bottom: 24px; }
26
+ .poster-headline { font-family: var(--font-display, var(--font-body)); font-size: 96px; font-weight: 800; line-height: 1.05; letter-spacing: -0.03em; }
27
+ .poster-subhead { font-size: 24px; color: var(--muted); margin-top: 32px; max-width: 600px; line-height: 1.5; }
28
+ .poster-issue { position: absolute; bottom: 60px; left: 80px; font-size: 14px; color: var(--muted); }
29
+ \`\`\`
30
+
31
+ ### Mode B: Image-first
32
+ Large image dominates 70% of the canvas, typography overlays or sits below.
33
+ \`\`\`css
34
+ .poster-image-first { width: 960px; height: 1358px; display: grid; grid-template-rows: 1fr auto; background: var(--bg); }
35
+ .poster-image { width: 100%; height: 100%; object-fit: cover; background: linear-gradient(135deg, var(--accent), var(--surface)); }
36
+ .poster-text-block { padding: 48px 64px; }
37
+ \`\`\`
38
+
39
+ ### Mode C: Split-screen
40
+ Two-panel composition — color block left, image right (or vice versa).
41
+ \`\`\`css
42
+ .poster-split { width: 1440px; height: 960px; display: grid; grid-template-columns: 1fr 1fr; }
43
+ .poster-split-panel { display: flex; flex-direction: column; justify-content: center; padding: 80px; }
44
+ .poster-split-panel.left { background: var(--accent); color: var(--accent-on, white); }
45
+ .poster-split-panel.right { background: var(--bg); }
46
+ \`\`\`
47
+
48
+ ## Phase 3 — Typography Scale
49
+
50
+ \`\`\`css
51
+ /* Magazine typography is dramatic — go big */
52
+ .display-xxl { font-size: 120px; font-weight: 800; line-height: 0.95; letter-spacing: -0.04em; }
53
+ .display-xl { font-size: 80px; font-weight: 800; line-height: 1.0; letter-spacing: -0.03em; }
54
+ .display-lg { font-size: 56px; font-weight: 700; line-height: 1.1; }
55
+ .poster-body { font-size: 18px; line-height: 1.6; }
56
+ .poster-meta { font-size: 12px; text-transform: uppercase; letter-spacing: 0.12em; }
57
+ \`\`\`
58
+
59
+ ## Phase 4 — Design Elements
60
+
61
+ - **Accent shapes**: Use ::before/::after pseudo-elements for geometric accents (circles, lines, color blocks)
62
+ - **Photo treatment**: Use mix-blend-mode on images over color backgrounds
63
+ - **Grid lines**: Thin horizontal/vertical rules as structural elements
64
+ - **Page numbers**: ALWAYS include an issue/volume/page-number block
65
+ - **Date line**: MONTH YYYY format in the masthead area
66
+
67
+ ## Phase 5 — Anti-Kitsch Rules
68
+ - No emoji in editorial design
69
+ - Use the design system's display font at scale — not a safe web font
70
+ - Headline should create tension: unexpected word break, dramatic line split, or bold claim
71
+ - One focal point per poster — don't make everything compete
72
+ - white-space is intentional, not leftover`,
73
+ };
@@ -0,0 +1,3 @@
1
+ import type { DesignSkill } from "./design-skill.js";
2
+ export declare const mobileApp: DesignSkill;
3
+ //# sourceMappingURL=mobile-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-app.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/mobile-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,SAAS,EAAE,WAqOrB,CAAC"}