@compilr-dev/sdk 0.18.9 → 0.18.11
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/dist/canvas/color.d.ts +85 -0
- package/dist/canvas/color.js +216 -0
- package/dist/canvas/index.d.ts +6 -0
- package/dist/canvas/index.js +10 -0
- package/dist/canvas/quality-checks.d.ts +75 -0
- package/dist/canvas/quality-checks.js +217 -0
- package/dist/canvas/ramp.d.ts +45 -0
- package/dist/canvas/ramp.js +98 -0
- package/dist/capabilities/packs.js +10 -2
- package/dist/config.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +2 -0
- package/dist/models/model-registry.js +1 -0
- package/dist/models/ollama-discovery.d.ts +63 -0
- package/dist/models/ollama-discovery.js +172 -0
- package/dist/models/providers.js +10 -0
- package/dist/platform/tools/canvas-tools.d.ts +3 -1
- package/dist/platform/tools/canvas-tools.js +108 -4
- package/dist/provider.js +16 -0
- package/dist/skills/canvas-exemplars.d.ts +8 -0
- package/dist/skills/canvas-exemplars.js +36 -0
- package/dist/skills/canvas-icons.d.ts +6 -0
- package/dist/skills/canvas-icons.js +84 -0
- package/dist/skills/canvas-skills.js +160 -20
- package/dist/skills/platform-skills.d.ts +2 -0
- package/dist/skills/platform-skills.js +8 -0
- package/dist/team/tool-config.js +1 -0
- package/package.json +1 -1
|
@@ -35,19 +35,41 @@ export const canvasSkill = defineSkill({
|
|
|
35
35
|
|
|
36
36
|
## STEPS
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- **Key content / data** — the actual points, numbers, sections, or slides to include. Don't invent data.
|
|
42
|
-
- **Style / brand** — theme-matched (default), a specific palette/brand, or a named **aesthetic**? For infographics & carousels you can offer a look from the \`canvas-styles\` skill (skeuomorphic, glass, brutalist, editorial, retro) as part of THIS same question — don't default every canvas to the flat theme look.
|
|
43
|
-
For open design directions (which layout, which visual approach), present concrete options with **\`propose_alternatives\`** instead of guessing.
|
|
44
|
-
**Skip questions the user already answered**, and if they gave full detail or explicitly said "just make it / surprise me / your call", go straight to authoring. Keep it to ONE focused round — a short question batch, never a long interview — then build.
|
|
38
|
+
⚠️ **Two passes, not one.** Most weak canvases are weak because layout and decoration got
|
|
39
|
+
decided in the same breath, and the decoration ends up compensating for a structure that
|
|
40
|
+
never worked. Structure first, with the real content; skin it second, from a recipe.
|
|
45
41
|
|
|
46
|
-
|
|
42
|
+
1. **Ask purpose, audience and content — never taste.** Use **\`ask_user\`** (batch into ONE
|
|
43
|
+
call):
|
|
44
|
+
- **Purpose & audience** — what is it for, who reads it?
|
|
45
|
+
- **Key content / data** — the actual points, numbers, sections or slides. Don't invent
|
|
46
|
+
data; if you need a figure you were not given, ask for it.
|
|
47
|
+
|
|
48
|
+
⚠️ **Do NOT ask which style or aesthetic they want.** "Brutalist or editorial?" asks
|
|
49
|
+
someone to imagine two things they have never seen, in a vocabulary they did not choose,
|
|
50
|
+
before the canvas exists — and then commits you to whatever comes back. Purpose,
|
|
51
|
+
audience and content are answerable from what the user already knows. Style is
|
|
52
|
+
answerable from what they can SEE, which is step 8.
|
|
53
|
+
|
|
54
|
+
**Skip the round entirely** when they said "just make it / surprise me / your call" or
|
|
55
|
+
already gave full detail. This round asks LESS than it used to, not more.
|
|
56
|
+
|
|
57
|
+
2. **Route the type and style from the content**, using the cheatsheet in
|
|
58
|
+
\`canvas_guide("styles")\`. One screen of an app → \`infographic\` + the app-screen style.
|
|
59
|
+
Several options compared → \`board\`. Slides → \`carousel\`. Data or a one-pager →
|
|
60
|
+
\`infographic\` + theme-flat.
|
|
61
|
+
|
|
62
|
+
3. **Pass one — structure, with the FINAL content.** No colour decisions, no type scale yet:
|
|
63
|
+
get the real words and real numbers into the real layout. A structure that works with
|
|
64
|
+
placeholder text is not a structure.
|
|
65
|
+
|
|
66
|
+
Build it in small steps — never one giant tool call. A canvas is HTML/SVG you emit as
|
|
67
|
+
tool arguments; a single very large \`canvas_write\` can overrun the output limit, get cut
|
|
68
|
+
off mid-arguments, and fail. Emit each call immediately with NO prose preamble
|
|
69
|
+
(narration competes with the HTML for the same output budget):
|
|
47
70
|
- **2a. First \`canvas_write\`** (type, title, html) = a COMPACT skeleton: the \`<style>\` block, the overall layout, and just the first section or heading. This is the ONLY way to create a canvas — describing it in chat does nothing.
|
|
48
71
|
- **2b. Then \`canvas_edit\` (operation=append)** to add each remaining section, one call per section. The preview grows as you go, and every call stays small and reliable. (You can also leave \`<!-- placeholder -->\` markers in 2a and str_replace them.)
|
|
49
72
|
- Put the whole thing in one \`canvas_write\` ONLY if it is genuinely small (a single stat card / short poster).
|
|
50
|
-
|
|
51
73
|
HTML constraints for every write:
|
|
52
74
|
- Do NOT include \`<html>\`, \`<head>\`, \`<meta>\`, \`<!doctype>\`, or your own CSP — the host injects the sandbox and CSP. Just the body content + a \`<style>\` and optional \`<script>\`.
|
|
53
75
|
- The sandbox is \`allow-scripts\` with NO same-origin and CSP \`default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data: blob:\`. So: inline \`<style>\`/\`<script>\` only, no external fonts/CSS/JS/network, no remote images (use inline SVG or data: URIs).
|
|
@@ -56,7 +78,13 @@ export const canvasSkill = defineSkill({
|
|
|
56
78
|
- Make it look intentional: a clear grid, strong type scale, generous spacing. Use \`var(--canvas-accent)\` sparingly for emphasis. Prefer inline SVG for shapes/charts/icons (fill/stroke with the theme vars).
|
|
57
79
|
- For a **carousel**, wrap each slide in \`<section data-sheet>…</section>\` — a natural unit to add one per \`canvas_edit\` append.
|
|
58
80
|
|
|
59
|
-
|
|
81
|
+
4. **Pass two — skin it.** Read \`canvas_guide\` for your style's recipe and its exemplar
|
|
82
|
+
(\`exemplar-infographic\` or \`exemplar-app-screen\`), then apply the values. This pass is
|
|
83
|
+
mechanical, because the recipe supplies every number — surfaces, type ladder, spacing
|
|
84
|
+
scale, accent budget. Edit in place with \`canvas_edit\`; pass one already put the content
|
|
85
|
+
where it belongs.
|
|
86
|
+
|
|
87
|
+
5. **Add a Tweaks controls manifest when it helps** (the \`controls\` argument). Each control is \`{ type, param, label, default, …type config }\` where type ∈ slider | number | toggle | select | color | text.
|
|
60
88
|
- **⚠️ EVERY control you declare MUST be bound in the HTML — a declared-but-unbound control is a dead knob that visibly does nothing when the user drags it. Declaring the control is only half the job; you MUST also reference its param.** Bind each param one of these ways:
|
|
61
89
|
- CSS custom property (most common): use \`var(--param)\` directly in your styles — e.g. a \`headline\` slider means \`font-size: var(--headline)\` (NOT a literal \`48px\`), an \`accent\` color means \`color: var(--accent)\`. The host sets \`--param\` on the root and updates it live. Include a unit in the CSS if the raw value is a number: \`font-size: calc(var(--headline) * 1px)\`.
|
|
62
90
|
- Text binding: \`<span data-bind="param"></span>\` — its text is replaced with the value.
|
|
@@ -65,13 +93,48 @@ export const canvasSkill = defineSkill({
|
|
|
65
93
|
- Give every canvas at least 2–4 sensible controls (accent color, a headline size slider, a toggle to show/hide a section). Seed \`default\` values that MATCH what you authored (a slider default of 48 means the HTML's initial \`var(--headline)\` should read 48).
|
|
66
94
|
- **Before finishing, re-check: is each control's \`param\` actually referenced in the HTML?** If not, either bind it or drop the control — never ship a dead knob.
|
|
67
95
|
|
|
68
|
-
|
|
96
|
+
6. **To EDIT an existing canvas, do NOT re-send the whole document.** First call \`canvas_get\` with \`outline=true\` (or a \`startLine\`/\`maxLines\` slice) to find the exact snippet, then \`canvas_edit\` with \`operation=str_replace\` (old_str must be unique — include surrounding context — or set replace_all=true), or append/prepend. Reserve \`canvas_write\` with \`canvas_id\` for a full intentional rewrite.
|
|
97
|
+
|
|
98
|
+
7. **Validate.** Call \`canvas_validate\` (canvas_id) — a fast static check for content that
|
|
99
|
+
won't render (Mermaid/Markdown/CDN), a board missing its \`data-board\` bounds or with
|
|
100
|
+
nodes off-canvas, sparse output, hardcoded colours that ignore the theme, a card that
|
|
101
|
+
shares its ground's value, text under 4.5:1, too many hues, and dead Tweaks. Fix every
|
|
102
|
+
**error** and address applicable **warnings**.
|
|
103
|
+
|
|
104
|
+
8. **The gate — screenshot, verdict, fix, screenshot AGAIN.** Call \`canvas_screenshot\`
|
|
105
|
+
(canvas_id), then give all six verdicts explicitly, in this form:
|
|
106
|
+
|
|
107
|
+
\`01 pass · 02 fail → fixed · 03 pass · 04 pass · 05 fail → fixed · 06 pass\`
|
|
108
|
+
|
|
109
|
+
| # | check | the question to ask |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| 01 | One dominant element | Squint: what do you see FIRST? If the answer is "the whole thing at once", nothing dominates. The largest element should be ≥2x the next and hold the FINDING, not merely the first metric. |
|
|
112
|
+
| 02 | Cards differ from their ground | Cover the borders with your thumb — can you still see the cards? If the layout only exists because of its lines, the ramp is missing. |
|
|
113
|
+
| 03 | Nothing under 4.5:1 | Check every label against the surface it ACTUALLY sits on, not against the page. |
|
|
114
|
+
| 04 | Every value is specific | Do the numbers add up? Could a reader challenge one? A total that does not reconcile with its rows is what makes a canvas feel machine-made. |
|
|
115
|
+
| 05 | Density varies | Blur it until the text goes — is there a composition left? A uniform grid of equal boxes is a form. |
|
|
116
|
+
| 06 | One accent, one family | Count the hues, then count the reasons. More hues than reasons means colour is decoration. |
|
|
69
117
|
|
|
70
|
-
|
|
118
|
+
⚠️ **Naming each check is what forces looking at it.** Asked for a summary judgement, a
|
|
119
|
+
model writes "looks good" every time.
|
|
71
120
|
|
|
72
|
-
|
|
121
|
+
⚠️ **FAILING IS NORMAL** — most first drafts fail two of these. A failed check is
|
|
122
|
+
something to EDIT, not something to argue with. Do not write a justification.
|
|
73
123
|
|
|
74
|
-
|
|
124
|
+
⚠️ **The second screenshot is the one that matters**, because it catches a fix that broke
|
|
125
|
+
something else. Cap at two rounds; if something still fails, hand off and say so in one
|
|
126
|
+
clause.
|
|
127
|
+
|
|
128
|
+
Checks 02, 03 and 06 are also computed by \`canvas_validate\`, so on a text-only model run
|
|
129
|
+
the gate on 01, 04 and 05 — they need judgement, not eyes.
|
|
130
|
+
|
|
131
|
+
⚠️ **Do not report the gate to the user.** The verdicts are working notes.
|
|
132
|
+
|
|
133
|
+
9. **One line, then offer two alternates as PICTURES.** Say what you made and point at the
|
|
134
|
+
Tweaks. Then use **\`propose_alternatives\`** with **two** further skins of the same
|
|
135
|
+
canvas — never a list of style names. The content is already fixed, so each variant
|
|
136
|
+
costs one \`canvas_write\` and the user picks by looking. This is the aesthetic menu,
|
|
137
|
+
moved to the only point where the choice is cheap for them and informative for you.
|
|
75
138
|
|
|
76
139
|
## Rules
|
|
77
140
|
- CALL THE TOOL — don't describe the HTML you "would" write and stop. A canvas only exists once the tool succeeds.
|
|
@@ -177,6 +240,11 @@ export const boardSkill = defineSkill({
|
|
|
177
240
|
## SHOW, don't TELL (the #1 rule)
|
|
178
241
|
A board is a VISUAL surface — its value is that it *depicts* things, not that it holds text. If your board is mostly paragraphs and bullet lists, you've built a text document on a grid and failed the medium. That is what the "propose alternatives" text tool is for — a board must EARN its place by being visual.
|
|
179
242
|
- **Depict, don't describe.** Exploring website / UI options? DRAW each option as a **wireframe mock** — a browser/window frame with a nav bar, a hero block, and content sections as labeled BOXES — laid side by side so they can be compared at a glance. Do NOT write "Option A: terminal-first hero, CLI-style product list…" as prose; SKETCH it.
|
|
243
|
+
- ⚠️ **This is for COMPARING several options, at low fidelity.** For ONE screen at full
|
|
244
|
+
fidelity — "mock up the admissions dashboard" — use \`infographic\` with the
|
|
245
|
+
**app-screen** style instead (\`canvas_guide("styles")\`), and draw NO window chrome
|
|
246
|
+
there. The frame below earns its place only because several options sitting side by
|
|
247
|
+
side need something to separate them.
|
|
180
248
|
- **Architecture / flow?** Draw boxes-and-arrows (nodes + inline-SVG connectors), not a written description of the components.
|
|
181
249
|
- **Mind-map?** A central node with branches and sub-nodes, not an outline.
|
|
182
250
|
- Text belongs INSIDE the visual as short labels (titles, captions, a few key words) — never as the primary content of a node.
|
|
@@ -187,7 +255,7 @@ Build each screen mock as nested boxes so it reads as a *picture of a page*:
|
|
|
187
255
|
<div style="position:absolute;left:80px;top:120px;width:520px;background:var(--canvas-card);
|
|
188
256
|
border:1px solid var(--canvas-border);border-radius:8px;overflow:hidden">
|
|
189
257
|
<div style="height:28px;background:var(--canvas-bg);display:flex;align-items:center;gap:6px;padding:0 10px">
|
|
190
|
-
<span style="width:8px;height:8px;border-radius:50%;background:var(--canvas-muted)"></span> …
|
|
258
|
+
<span style="width:8px;height:8px;border-radius:50%;background:var(--canvas-muted)"></span> …dots that say "this is a window"…
|
|
191
259
|
</div>
|
|
192
260
|
<div style="height:44px;border-bottom:1px solid var(--canvas-border);display:flex;align-items:center;
|
|
193
261
|
justify-content:space-between;padding:0 16px"><b style="color:var(--canvas-fg)">logo</b><span style="color:var(--canvas-muted)">nav · nav · nav</span></div>
|
|
@@ -231,8 +299,8 @@ Give each mock a small title above it ("OPTION A — Terminal-first"). Two or th
|
|
|
231
299
|
// =============================================================================
|
|
232
300
|
export const canvasStylesSkill = defineSkill({
|
|
233
301
|
name: 'canvas-styles',
|
|
234
|
-
description: 'The visual STYLE CATALOGUE for canvases —
|
|
235
|
-
'glassmorphism, brutalist, editorial/print, retro/synthwave) each with a concrete, sandbox-safe, ' +
|
|
302
|
+
description: 'The visual STYLE CATALOGUE for canvases — seven named aesthetics (theme-flat, skeuomorphic, ' +
|
|
303
|
+
'glassmorphism, brutalist, editorial/print, retro/synthwave, app-screen) each with a concrete, sandbox-safe, ' +
|
|
236
304
|
'export-safe CSS recipe. Consult when picking or offering a look beyond the default theme-matched flat style.',
|
|
237
305
|
tags: ['visual', 'canvas', 'style', 'aesthetic', 'design'],
|
|
238
306
|
prompt: `The STYLE CATALOGUE for canvases — pick a coherent visual aesthetic instead of defaulting to the flat theme look. Design guidance; author with the canvas tools (see the \`canvas\` skill for mechanics). Applies to **infographic** and **carousel** (a board is a diagram surface — keep it theme-flat unless asked).
|
|
@@ -252,8 +320,40 @@ export const canvasStylesSkill = defineSkill({
|
|
|
252
320
|
|
|
253
321
|
### 1. theme-flat — DEFAULT
|
|
254
322
|
Clean, modern, theme-driven. Reach for it for data, dashboards, and anything "serious/neutral".
|
|
255
|
-
|
|
256
|
-
|
|
323
|
+
|
|
324
|
+
⚠️ This recipe is LITERAL VALUES, not adjectives. "Generous whitespace" and "used
|
|
325
|
+
sparingly" are what the old entry said, and they produced a canvas that followed every
|
|
326
|
+
instruction and still looked machine-made. Read \`canvas_guide("exemplar-infographic")\`
|
|
327
|
+
for a worked example — it is worth more than everything below.
|
|
328
|
+
|
|
329
|
+
**Surfaces — three, never two.** Radius **0**, and **no shadows at all**: the ramp is the
|
|
330
|
+
depth.
|
|
331
|
+
- page ground \`var(--canvas-bg)\` · raised card \`var(--canvas-surface-1, var(--canvas-card))\` · inset (tables, code) \`var(--canvas-surface-2, var(--canvas-card))\`
|
|
332
|
+
- hairlines \`1px solid var(--canvas-hairline, var(--canvas-border))\`
|
|
333
|
+
- A card that shares its ground's value is a rectangle of text. If you ever find yourself
|
|
334
|
+
relying on the border to show where a card is, the ramp is missing.
|
|
335
|
+
|
|
336
|
+
**Type — one family, \`system-ui, -apple-system, "Segoe UI", Roboto, sans-serif\`.**
|
|
337
|
+
- hero figure **72–88px / 700 / -0.035em** · standfirst **20px / 600** · stat **34px / 700**
|
|
338
|
+
· body **14px / 1.65** · label **10–11px / 600 / 0.12em / uppercase**
|
|
339
|
+
- \`font-variant-numeric: tabular-nums\` on **every** figure, or columns of numbers jitter.
|
|
340
|
+
|
|
341
|
+
**Spacing — an 8px scale.** Gaps 16 · card padding 18–32 · outer padding 40.
|
|
342
|
+
|
|
343
|
+
**Grid — asymmetric tracks**, e.g. \`grid-template-columns: 1.35fr 1fr\`. Equal columns make
|
|
344
|
+
a canvas read as a form.
|
|
345
|
+
|
|
346
|
+
**Accent — three times maximum**, and they are: one kicker, one delta, one bar. Everything
|
|
347
|
+
else is greys.
|
|
348
|
+
|
|
349
|
+
**Dominance is geometric.** The hero figure is ~2.5x the next largest type, in a card ~1.35x
|
|
350
|
+
its neighbour. Bolder is not bigger.
|
|
351
|
+
|
|
352
|
+
**Two derived colours** the token set does not carry, and which get invented badly:
|
|
353
|
+
- body copy \`color-mix(in oklab, var(--canvas-fg) 78%, var(--canvas-bg))\`
|
|
354
|
+
- chart neutral \`color-mix(in oklab, var(--canvas-fg) 22%, var(--canvas-bg))\`
|
|
355
|
+
|
|
356
|
+
Both work in either polarity, so they need no host support.
|
|
257
357
|
|
|
258
358
|
### 2. skeuomorphic — tactile, physical
|
|
259
359
|
Soft, real-material surfaces — great for device/app-UI mockups and "premium product" one-pagers.
|
|
@@ -287,9 +387,49 @@ Hype/launch/gaming/music. Dark base, neon glow, chrome.
|
|
|
287
387
|
- Neon palette: hot pink \`#ff2bd6\`, cyan \`#22d3ee\`, violet \`#a855f7\`. Glow on headings/borders: \`text-shadow:0 0 8px currentColor,0 0 22px currentColor\` and \`box-shadow:0 0 12px #22d3ee,inset 0 0 12px rgba(34,211,238,.3)\`.
|
|
288
388
|
- Optional perspective grid at the bottom via repeating linear-gradients or an inline SVG. Chrome/gradient text with \`background:linear-gradient(#fff,#8ab4ff);-webkit-background-clip:text;color:transparent\`. (Glow via \`text-shadow\` exports fine.)
|
|
289
389
|
|
|
390
|
+
### 7. app-screen — a single UI screen
|
|
391
|
+
A mockup of one screen of an application. Read \`canvas_guide("exemplar-app-screen")\` before
|
|
392
|
+
drawing one.
|
|
393
|
+
|
|
394
|
+
⚠️ **Route a mockup here, not to \`board\`.** A single screen is one composition, so the
|
|
395
|
+
container is \`infographic\`; \`board\` teaches low-fidelity wireframe boxes for comparing
|
|
396
|
+
options side by side, which is not what anyone means by "mock up the dashboard".
|
|
397
|
+
|
|
398
|
+
**Four surfaces, in this order** — this is what makes a screen read as an application
|
|
399
|
+
rather than a document:
|
|
400
|
+
- chrome (rail, header) at \`surface-1\` · **the work canvas INSET at \`surface-2\`** ·
|
|
401
|
+
cards back up to \`surface-1\` on top of it · table headers at \`surface-2\`
|
|
402
|
+
|
|
403
|
+
**Exactly one active state**, and no hover states drawn at all. A static mock showing three
|
|
404
|
+
highlighted rows reads as a bug. The active row gets a 10% accent tint plus a 2px inset
|
|
405
|
+
accent edge; one filter chip gets the \`--canvas-fg\` border and the rest carry hairlines.
|
|
406
|
+
|
|
407
|
+
**One primary action, and it is INK, not accent** (\`background: var(--canvas-fg)\`). The
|
|
408
|
+
accent is reserved for the thing that needs attention. Two filled buttons side by side is
|
|
409
|
+
the commonest mock tell; the secondary is a hairline outline.
|
|
410
|
+
|
|
411
|
+
**State a finding, not a page name.** A real dashboard says "Overview" and stops; a MOCK
|
|
412
|
+
has to argue why the screen is worth building, so the largest text is a claim and the
|
|
413
|
+
accent marks its evidence. "Interviews are keeping pace. Document review is not." — not
|
|
414
|
+
"Admissions Dashboard".
|
|
415
|
+
|
|
416
|
+
**Numbers must reconcile.** 248 applied → 193 documents in → 152 reviewed → 67 interviewed,
|
|
417
|
+
and the listed programmes account for the 41 waiting. Figures that contradict each other
|
|
418
|
+
are what make a mock feel machine-made, more than any styling choice. If you were not given
|
|
419
|
+
real data, ask for it rather than inventing it.
|
|
420
|
+
|
|
421
|
+
**Do not draw the OS.** No traffic lights, no browser tab bar, no URL field, no dock. Window
|
|
422
|
+
chrome costs vertical space and dates the mock; the app's own header is the frame. Add it
|
|
423
|
+
only when the point being made is about the window itself.
|
|
424
|
+
|
|
425
|
+
Icons: use the set in \`canvas_guide("icons")\` — never an emoji, never a guessed path.
|
|
426
|
+
|
|
290
427
|
## Pick-by-content cheatsheet
|
|
428
|
+
- **One screen of an app / a UI mockup** → \`infographic\` + **app-screen**. Several options
|
|
429
|
+
compared side by side → \`board\` + wireframe. (Asking for "a mockup" used to route to one
|
|
430
|
+
of three types, none of which was right.)
|
|
291
431
|
- **Data / stats / dashboard / neutral** → theme-flat (or glass for a hero moment)
|
|
292
|
-
- **
|
|
432
|
+
- **A device or product SHOWCASE, not its screen** → skeuomorphic or glass
|
|
293
433
|
- **Manifesto / dev-tool / bold statement** → brutalist
|
|
294
434
|
- **Long-form / essay / report / "serious"** → editorial
|
|
295
435
|
- **Launch / hype / gaming / music / 80s** → retro
|
|
@@ -12,6 +12,8 @@ export { brandSetupSkill, contentStrategySkill, contentCalendarSkill, createCont
|
|
|
12
12
|
export { curriculumDesignSkill, lessonPlanSkill, assessmentDesignSkill, courseReviewSkill, } from './course-skills.js';
|
|
13
13
|
export { bookOutlineSkill, characterDesignSkill, plotThreadsSkill, sceneBreakdownSkill, bookReviewSkill, } from './book-skills.js';
|
|
14
14
|
export { canvasSkill, infographicSkill, carouselSkill, boardSkill, canvasStylesSkill, } from './canvas-skills.js';
|
|
15
|
+
export { canvasExemplarInfographicSkill, canvasExemplarAppScreenSkill, } from './canvas-exemplars.js';
|
|
16
|
+
export { canvasIconsSkill } from './canvas-icons.js';
|
|
15
17
|
/**
|
|
16
18
|
* All platform-specific skills (38 total).
|
|
17
19
|
*/
|
|
@@ -18,6 +18,9 @@ export { curriculumDesignSkill, lessonPlanSkill, assessmentDesignSkill, courseRe
|
|
|
18
18
|
export { bookOutlineSkill, characterDesignSkill, plotThreadsSkill, sceneBreakdownSkill, bookReviewSkill, } from './book-skills.js';
|
|
19
19
|
// Canvas (visual)
|
|
20
20
|
export { canvasSkill, infographicSkill, carouselSkill, boardSkill, canvasStylesSkill, } from './canvas-skills.js';
|
|
21
|
+
// Canvas exemplars — generated from the design handoff; see canvas-exemplars.ts.
|
|
22
|
+
export { canvasExemplarInfographicSkill, canvasExemplarAppScreenSkill, } from './canvas-exemplars.js';
|
|
23
|
+
export { canvasIconsSkill } from './canvas-icons.js';
|
|
21
24
|
// Import all for the aggregate array
|
|
22
25
|
import { designSkill, sketchSkill, prdSkill, refineSkill, refineItemSkill, architectureSkill, sessionNotesSkill, buildSkill, scaffoldSkill, } from './software-skills.js';
|
|
23
26
|
import { outlineSkill, literatureReviewSkill, draftSectionSkill, peerReviewSkill, researchScaffoldSkill, } from './research-skills.js';
|
|
@@ -26,6 +29,8 @@ import { brandSetupSkill, contentStrategySkill, contentCalendarSkill, createCont
|
|
|
26
29
|
import { curriculumDesignSkill, lessonPlanSkill, assessmentDesignSkill, courseReviewSkill, } from './course-skills.js';
|
|
27
30
|
import { bookOutlineSkill, characterDesignSkill, plotThreadsSkill, sceneBreakdownSkill, bookReviewSkill, } from './book-skills.js';
|
|
28
31
|
import { canvasSkill, infographicSkill, carouselSkill, boardSkill, canvasStylesSkill, } from './canvas-skills.js';
|
|
32
|
+
import { canvasExemplarInfographicSkill, canvasExemplarAppScreenSkill, } from './canvas-exemplars.js';
|
|
33
|
+
import { canvasIconsSkill } from './canvas-icons.js';
|
|
29
34
|
/**
|
|
30
35
|
* All platform-specific skills (38 total).
|
|
31
36
|
*/
|
|
@@ -76,4 +81,7 @@ export const platformSkills = [
|
|
|
76
81
|
carouselSkill,
|
|
77
82
|
boardSkill,
|
|
78
83
|
canvasStylesSkill,
|
|
84
|
+
canvasExemplarInfographicSkill,
|
|
85
|
+
canvasExemplarAppScreenSkill,
|
|
86
|
+
canvasIconsSkill,
|
|
79
87
|
];
|
package/dist/team/tool-config.js
CHANGED