@feimacode/open-design-agent-kit 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -20
- package/assets/claude-skills/card-twitter/SKILL.md +14 -0
- package/assets/claude-skills/open-design/SKILL.md +62 -1
- package/assets/claude-skills/open-design/references/remixable-examples.md +29 -1
- package/assets/claude-skills/open-design-campaign/SKILL.md +61 -0
- package/assets/claude-skills/open-design-deck-from-source/SKILL.md +39 -0
- package/assets/claude-skills/open-design-docs/SKILL.md +52 -0
- package/assets/claude-skills/open-design-explore/SKILL.md +46 -0
- package/assets/claude-skills/open-design-integrations/SKILL.md +40 -0
- package/assets/claude-skills/open-design-new/SKILL.md +31 -0
- package/assets/claude-skills/open-design-poster/SKILL.md +77 -0
- package/assets/claude-skills/open-design-publish/SKILL.md +37 -0
- package/assets/claude-skills/open-design-social-post/SKILL.md +54 -0
- package/assets/claude-skills/poster-hero/SKILL.md +14 -0
- package/assets/claude-skills/social-carousel/SKILL.md +14 -0
- package/assets/claude-skills/social-youtube-thumbnail/SKILL.md +14 -0
- package/assets/codex-skills/card-twitter/SKILL.md +12 -0
- package/assets/codex-skills/card-twitter/agents/openai.yaml +3 -0
- package/assets/codex-skills/open-design/SKILL.md +62 -1
- package/assets/codex-skills/open-design/references/remixable-examples.md +29 -1
- package/assets/codex-skills/open-design-campaign/SKILL.md +60 -0
- package/assets/codex-skills/open-design-deck-from-source/SKILL.md +38 -0
- package/assets/codex-skills/open-design-docs/SKILL.md +51 -0
- package/assets/codex-skills/open-design-explore/SKILL.md +45 -0
- package/assets/codex-skills/open-design-integrations/SKILL.md +39 -0
- package/assets/codex-skills/open-design-new/SKILL.md +30 -0
- package/assets/codex-skills/open-design-poster/SKILL.md +76 -0
- package/assets/codex-skills/open-design-publish/SKILL.md +36 -0
- package/assets/codex-skills/open-design-social-post/SKILL.md +53 -0
- package/assets/codex-skills/poster-hero/SKILL.md +12 -0
- package/assets/codex-skills/poster-hero/agents/openai.yaml +3 -0
- package/assets/codex-skills/social-carousel/SKILL.md +12 -0
- package/assets/codex-skills/social-carousel/agents/openai.yaml +3 -0
- package/assets/codex-skills/social-youtube-thumbnail/SKILL.md +12 -0
- package/assets/codex-skills/social-youtube-thumbnail/agents/openai.yaml +3 -0
- package/out/index.js +187954 -84
- package/package.json +8 -4
- package/out/claudeSetup.js +0 -91
- package/out/claudeSetup.js.map +0 -1
- package/out/codexSetup.js +0 -89
- package/out/codexSetup.js.map +0 -1
- package/out/env.js +0 -47
- package/out/env.js.map +0 -1
- package/out/index.js.map +0 -1
- package/out/skillWriter.js +0 -88
- package/out/skillWriter.js.map +0 -1
- package/out/toolSelection.js +0 -38
- package/out/toolSelection.js.map +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "open-design-new"
|
|
3
|
+
description: Start a new design by picking what to make (prototype, mobile app, slides, document, wireframe, animation, résumé, research, data report, poster, social post, diagram), then build it with the right recipe
|
|
4
|
+
argument-hint: what to make, optionally followed by the brief (e.g. "a wireframe of onboarding for a budgeting app")
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- generated:curated-entry -->
|
|
8
|
+
|
|
9
|
+
Start a new design with Open Design.
|
|
10
|
+
|
|
11
|
+
Request: "$ARGUMENTS" — or, if that is empty, the user's request in this conversation (if it isn't clear, ask the user: "What do you want to make, and what is it for?")
|
|
12
|
+
|
|
13
|
+
## 1. Pick the surface
|
|
14
|
+
|
|
15
|
+
Call `list_open_design_skills` with `surface: "list"` to get the kinds of thing Open Design can make (each with an id, label and description).
|
|
16
|
+
|
|
17
|
+
- If the request starts with or clearly names one of them (by id or label, e.g. "wireframe", "diagram", "a poster"), use that surface.
|
|
18
|
+
- If it names none, or is empty, show the user the surfaces as a short list (label and description) and ask which one. Stop until they answer.
|
|
19
|
+
|
|
20
|
+
## 2. Ask what's missing
|
|
21
|
+
|
|
22
|
+
Call `list_open_design_skills` with `surface` set to the chosen id. The result has the surface's `questions` and its `entries`.
|
|
23
|
+
|
|
24
|
+
Ask only the questions the request doesn't already answer, all at once, in one short message. If the request answers them all, don't ask anything.
|
|
25
|
+
|
|
26
|
+
## 3. Build it
|
|
27
|
+
|
|
28
|
+
- If the surface has a `prompt` (for example `open-design-poster` or `open-design-social-post`), follow that flow from its first step with the user's request as the brief. In Copilot Chat it's the `/` command of the same name; in Claude Code and Codex it's the skill of the same name.
|
|
29
|
+
- Otherwise pick the entry that best fits the request. Entries come in curated order: the recipe first, then its remixable example when there is one. To start from a rendered example (an entry with an `exampleArtifactPath`), call `remix_open_design_example`; otherwise call `prepare_open_design_brief` with its id and the brief, and follow the general Open Design flow: write the files, register the artifact, then check it with `check_open_design_artifact` before saying it's done.
|
|
30
|
+
|
|
31
|
+
Never pick an entry marked `stub: true`.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "open-design-poster"
|
|
3
|
+
description: Design a poster or flyer for print or screen, check it, and export print-ready PDFs or upload-ready images, including other sizes and one version per row of a spreadsheet — use whenever the user wants a poster, flyer, event or gig poster, print piece, handout, certificate or name card set, or wants an existing design in other sizes or as a print-ready PDF, even if they don't mention Open Design
|
|
4
|
+
argument-hint: what the poster is for, and optionally the size (e.g. "A3 poster for our hackathon, with a QR code to the signup page")
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- generated:curated-entry -->
|
|
8
|
+
|
|
9
|
+
Design a poster with Open Design, check it, and export files that are ready to print or post.
|
|
10
|
+
|
|
11
|
+
Brief: "$ARGUMENTS" — or, if that is empty, the user's request in this conversation (if it isn't clear, ask the user: "What is the poster for, and is it for print (which size) or screens?")
|
|
12
|
+
|
|
13
|
+
## 1. Pick the medium and a default shape
|
|
14
|
+
|
|
15
|
+
Decide whether this is for **print** or **screens**. If the brief doesn't say, ask the user before doing anything else. Don't guess between print and screen: the units, bleed and type sizes are different.
|
|
16
|
+
|
|
17
|
+
You don't need the final size yet. The poster is built **fluid**: it reflows to any shape, so the user can pick or change the size later, when exporting. Use the size the user names as the default shape; otherwise use `a3` for print and `ig-portrait` for screens, and tell the user they can change it at any time.
|
|
18
|
+
|
|
19
|
+
| Use | Format id | Size |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Print, small: flyer, handout | `a4` · `letter` | 210×297 mm · 8.5×11 in |
|
|
22
|
+
| Print, medium: notice-board poster | `a3` · `tabloid` | 297×420 mm · 11×17 in |
|
|
23
|
+
| Print, large: wall poster | `a2` · `a1` · `poster-18x24` · `poster-24x36` | 420×594 mm · 594×841 mm · 18×24 in · 24×36 in |
|
|
24
|
+
| Print, conference or research poster | `a0` | 841×1189 mm |
|
|
25
|
+
| Instagram portrait | `ig-portrait` | 1080×1350 px |
|
|
26
|
+
| Story / Reels / TikTok cover | `story` | 1080×1920 px |
|
|
27
|
+
| X single image | `x-image` | 1600×900 px |
|
|
28
|
+
| Square (Instagram / LinkedIn) | `ig-square` | 1080×1080 px |
|
|
29
|
+
|
|
30
|
+
A handout and a wall poster carry different amounts of text, so if the user says which it is, write the copy for that; the shape itself can still change.
|
|
31
|
+
|
|
32
|
+
## 2. Generate
|
|
33
|
+
|
|
34
|
+
If the user asked for options ("show me a few directions"), run a design exploration first and build out the direction they pick, with the same `format` and `fluid: true`.
|
|
35
|
+
|
|
36
|
+
Otherwise call `prepare_open_design_brief` with:
|
|
37
|
+
|
|
38
|
+
- a `skillId`: `od:prototype:poster-hero` for a bold marketing poster, `od:prototype:magazine-poster` for an editorial or type-led one, or another skill whose style fits better (`list_open_design_skills` with query "poster");
|
|
39
|
+
- the brief, in the user's words;
|
|
40
|
+
- `format`: the default shape from step 1;
|
|
41
|
+
- `fluid: true`.
|
|
42
|
+
|
|
43
|
+
Call `list_open_design_design_systems` first only if the user names a brand or visual direction.
|
|
44
|
+
|
|
45
|
+
Author the file yourself, following the returned instructions. Their **Canvas** section is authoritative: one `data-od-card data-od-fluid` element sized by `--od-w`/`--od-h`, everything inside sized in container units, and layout rules for wide and tall shapes. Also:
|
|
46
|
+
|
|
47
|
+
- Use real copy from the brief, with no lorem ipsum. A poster is read from a distance: one dominant headline, then the what / when / where, then the call to action.
|
|
48
|
+
- If the user gives a list of names, sessions or locations to make one poster each, mark the changing text with `data-od-field="<column name>"` (and a per-person QR slot with `data-od-qr-field="<column>"`), and fill the design with the first row's values.
|
|
49
|
+
- No external image URLs unless the user supplied them. No emoji as key visuals; draw them as inline SVG.
|
|
50
|
+
|
|
51
|
+
## 3. Add a QR code, if it needs one
|
|
52
|
+
|
|
53
|
+
Register the artifact first (step 4), then call `create_open_design_qr_code` with the entry path and the URL, and paste the returned inline SVG where the code goes. Never draw a fake or placeholder QR code.
|
|
54
|
+
|
|
55
|
+
## 4. Register
|
|
56
|
+
|
|
57
|
+
Call `register_open_design_artifact` with the entry path, kind `html`, a title, `sourceSkillId`, and `format` set to the default shape.
|
|
58
|
+
|
|
59
|
+
## 5. Check and fix
|
|
60
|
+
|
|
61
|
+
Call `check_open_design_artifact` with the entry path. It returns the poster as an image plus preflight findings. Fix every **error** in its findings (text cut off, overlapping or in the bleed, a QR code that doesn't decode), and fix warnings where you reasonably can (sizes that don't scale with the poster, small type, low contrast, low-resolution images). Look at the image too: the headline should dominate and nothing important should be cramped or cut. Check again until there are no errors (at most two fix rounds; tell the user about anything left).
|
|
62
|
+
|
|
63
|
+
## 6. Other shapes
|
|
64
|
+
|
|
65
|
+
When the user wants other sizes, or before the final export of a print piece, call `export_open_design_artifact` with `shapeSheet: true` and `checkOnly: true` (add `presets` with just the shapes they care about, or leave it out for every shape). It writes one image of the poster at each shape, marking shapes with errors; show it to the user. If you can view images, look at it too: the headline should dominate every shape and nothing important should be cropped.
|
|
66
|
+
|
|
67
|
+
For a shape that has errors or looks wrong, call `adapt_open_design_artifact` with the entry path and those format ids. For a fluid poster it returns **tune** instructions: fix that shape inside the same file with its `@container` rule, then check every shape again with a shape sheet. Don't create new files for other sizes.
|
|
68
|
+
|
|
69
|
+
## 7. Export
|
|
70
|
+
|
|
71
|
+
- **One shape:** call `export_open_design_artifact` with the entry path and `preset` set to the format id. A print format gives a PDF the size of the bleed box, with trim and bleed boxes set and the bleed added automatically; add `cropMarks: true` if the user's printer wants crop marks. A screen format gives a PNG within the platform's size limit.
|
|
72
|
+
- **Several shapes:** pass `presets` with the format ids instead: one file per shape, named `<name>-<format>`.
|
|
73
|
+
- **One per row of a list:** add `data` with the workspace path of the user's CSV, XLSX or JSON file, and `nameField` with the column to name files by. Images come out one per row; print PDFs come out as one multi-page PDF per shape (add `split: true` for one file per row).
|
|
74
|
+
|
|
75
|
+
## 8. Report
|
|
76
|
+
|
|
77
|
+
List each exported file's path, size and any remaining warnings. For print files, also give the trim size and bleed, and tell the user the PDF is RGB: most print shops convert it, but they should ask if theirs needs CMYK. Mention that the poster can be exported at any other size later without regenerating it. Don't print, post, upload or order anything yourself.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "open-design-publish"
|
|
3
|
+
description: Share an Open Design artifact as a live link (a temporary no-account link, or your own Netlify, Vercel, Cloudflare Pages or GitHub Pages), or as one self-contained HTML file — use whenever the user wants to share, publish, deploy or host an Open Design artifact, or get a link to send to teammates or stakeholders; also when they want a single HTML file to attach or send
|
|
4
|
+
argument-hint: which design to share, and optionally where (e.g. "the pitch deck, temporary link")
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- generated:curated-entry -->
|
|
8
|
+
|
|
9
|
+
Share an Open Design artifact with people who don't have this project open.
|
|
10
|
+
|
|
11
|
+
Request: "$ARGUMENTS" — or, if that is empty, the user's request in this conversation (if it isn't clear, ask the user: "Which design should we share, and how?")
|
|
12
|
+
|
|
13
|
+
## 1. Find the artifact
|
|
14
|
+
|
|
15
|
+
If the request names a design, find its entry file (`get_open_design_artifact`, or the `.open-design/` folder). If several match or none is named, ask the user which one. It must be registered; if it isn't, register it first with `register_open_design_artifact`.
|
|
16
|
+
|
|
17
|
+
## 2. A file, or a link?
|
|
18
|
+
|
|
19
|
+
- **A file to attach or send** (email, Slack, a ticket): call `export_open_design_artifact` with `format: "standalone"`. It writes one self-contained `.html` under the artifact's `exports/` folder, with its local CSS, scripts, images and fonts inlined. Give the user the path, and mention anything it still loads from the internet (such as web fonts). Nothing goes online. Stop here.
|
|
20
|
+
- **A link**: continue below.
|
|
21
|
+
|
|
22
|
+
## 3. Prepare the link
|
|
23
|
+
|
|
24
|
+
Call `publish_open_design_artifact` with the `entryPath`. Pass `provider` only if the user already said where:
|
|
25
|
+
|
|
26
|
+
- `netlify-temporary` or `cloudflare-temporary`: no account, the link lasts about an hour unless claimed
|
|
27
|
+
- `netlify`, `vercel`, `cloudflare-pages` or `github-pages`: the user's own account, a link that lasts
|
|
28
|
+
|
|
29
|
+
Without a provider, the tool returns the choices: show them to the user and call it again with their pick.
|
|
30
|
+
|
|
31
|
+
## 4. Follow the returned instructions exactly
|
|
32
|
+
|
|
33
|
+
They check the host's CLI, then **stop for the user's explicit yes** before anything goes online. That stop is mandatory: say what goes out, who can see it, how long it lasts, and that the small "Made with Open Design" footer badge is included unless they ask for `badge: false`. Deploy only the bundle folder the tool names.
|
|
34
|
+
|
|
35
|
+
## 5. Finish
|
|
36
|
+
|
|
37
|
+
Give the user the link. For a temporary link, also give the claim URL and when it expires, for them only. Then record it by calling `publish_open_design_artifact` again with `published`, as the instructions show, so a later publish updates the same site.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "open-design-social-post"
|
|
3
|
+
description: Design a social media post (X, Instagram, LinkedIn, Xiaohongshu, Stories/Reels, YouTube thumbnail or video) and export upload-ready files — use whenever the user wants something to post on social media (an X/Twitter image, Instagram or LinkedIn post or carousel, Xiaohongshu cards, a Story/Reels cover, a YouTube thumbnail or video), even if they don't mention Open Design
|
|
4
|
+
argument-hint: what to post, and optionally where (e.g. "X post announcing our v2 launch")
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- generated:curated-entry -->
|
|
8
|
+
|
|
9
|
+
Design a social media post with Open Design and export files that are ready to upload.
|
|
10
|
+
|
|
11
|
+
Brief: "$ARGUMENTS" — or, if that is empty, the user's request in this conversation (if it isn't clear, ask the user: "What should the post say, and for which platform?")
|
|
12
|
+
|
|
13
|
+
## 1. Pick the platform and format
|
|
14
|
+
|
|
15
|
+
If the brief names a platform or format, use it. Otherwise ask the user to pick one of the rows below before doing anything else. Don't guess.
|
|
16
|
+
|
|
17
|
+
| Format | Canvas | skillId | Export |
|
|
18
|
+
|---|---|---|---|
|
|
19
|
+
| X single image | 1600×900 | `od:prototype:card-twitter` | `preset: "x-image"` |
|
|
20
|
+
| X post mock (for a video overlay or quote) | card element | `od:prototype:social-x-post-card` | `selector: "[data-od-card]"`, `maxBytes: 5000000` |
|
|
21
|
+
| Square carousel (Instagram / LinkedIn) | 1080×1080 per card | `od:prototype:social-carousel` | `preset: "ig-square"` |
|
|
22
|
+
| Instagram portrait | 1080×1350 | `od:prototype:poster-hero` | `preset: "ig-portrait"` |
|
|
23
|
+
| Story / Reels / TikTok cover | 1080×1920 | `od:prototype:poster-hero` | `preset: "story"` |
|
|
24
|
+
| Xiaohongshu cards | 1080×1440 per card | `od:prototype:card-xiaohongshu` | `preset: "xhs-card"` |
|
|
25
|
+
| YouTube thumbnail | 1280×720 | `od:prototype:social-youtube-thumbnail` | `preset: "yt-thumbnail"` |
|
|
26
|
+
| YouTube video | 1920×1080 MP4 | `od:video:hyperframes` | MP4 via the HyperFrames CLI (see step 4) |
|
|
27
|
+
|
|
28
|
+
A preset fills in the canvas size, `selector: "[data-od-card]"` and the platform's upload limit (X 5 MB, Instagram 8 MB, YouTube thumbnail 2 MB).
|
|
29
|
+
|
|
30
|
+
For several platforms at once, run steps 2–4 once per format and keep each one as its own artifact.
|
|
31
|
+
|
|
32
|
+
## 2. Generate
|
|
33
|
+
|
|
34
|
+
Call `prepare_open_design_brief` with the row's `skillId`, the brief, and `format` set to the row's preset id (leave it out for the X post mock and YouTube video). Call `list_open_design_design_systems` first only if the user names a brand or visual direction. For the X post mock, say in the brief that it is one card element.
|
|
35
|
+
|
|
36
|
+
Author the files yourself with your own file-editing tools, following the returned instructions, and add these rules for social posts:
|
|
37
|
+
|
|
38
|
+
- Each card or canvas is a fixed-size element at exactly the table's size with `overflow: hidden`, and carries a `data-od-card` attribute. For multi-card formats, stack the cards vertically in one HTML file, one `data-od-card` element per card.
|
|
39
|
+
- Use real copy from the brief, with no lorem ipsum. Keep text inside a 48px safe margin, and make the hook readable at thumbnail size.
|
|
40
|
+
- No external image URLs unless the user supplied them.
|
|
41
|
+
- No emoji as key visuals. They render from the exporting machine's fonts and can come out as empty boxes. Draw icons and subjects as inline SVG.
|
|
42
|
+
|
|
43
|
+
## 3. Register
|
|
44
|
+
|
|
45
|
+
Call `register_open_design_artifact` with the entry path, kind `html`, a title, `sourceSkillId` set to the row's `skillId`, and the same `format` you passed to the brief, so the export can find the right size.
|
|
46
|
+
|
|
47
|
+
## 4. Export
|
|
48
|
+
|
|
49
|
+
- **Image formats**: call `export_open_design_artifact` with the entry path and the row's export arguments. If its preflight reports errors (text cut off, a card that isn't the canvas size) or it returns warnings (failed fonts or images, over budget), fix the artifact and export again. Before exporting, call `check_open_design_artifact` to see the post as an image with its preflight findings, without writing files; fix every error first.
|
|
50
|
+
- **YouTube video**: follow the brief's "Host override" section. Render with `npx hyperframes render … --output <artifact-dir>/exports/<name>.mp4`, and check `ffmpeg -version` first.
|
|
51
|
+
|
|
52
|
+
## 5. Report
|
|
53
|
+
|
|
54
|
+
List each exported file's path, pixel size, and file size, and remind the user of the post's copy (caption and hashtags) if you wrote any. Don't post anything anywhere yourself.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "od-prototype-poster-hero"
|
|
3
|
+
description: Marketing Poster (Open Design) — use only when the user explicitly runs this skill
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
argument-hint: a brief describing what to build (optional — defaults to a starting example)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- generated:curated-entry -->
|
|
9
|
+
|
|
10
|
+
Use the Open Design skill `od:prototype:poster-hero` (Marketing Poster).
|
|
11
|
+
|
|
12
|
+
Brief: "$ARGUMENTS", or if empty: "Use the Marketing Poster template to turn my content into a vertical poster or Moments-style share image with strong visual impact. Preserve the template's visual signature, use real content and data, and avoid lorem ipsum or placeholder images."
|
|
13
|
+
|
|
14
|
+
Call `prepare_open_design_brief` (the open-design MCP server's tool) with skillId "od:prototype:poster-hero" and this brief — call `list_open_design_design_systems` first only if the user names a brand or visual direction. Author the files yourself with your own file-editing tools per the returned instructions, then call `register_open_design_artifact`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "od-prototype-social-carousel"
|
|
3
|
+
description: social-carousel (Open Design) — use only when the user explicitly runs this skill
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
argument-hint: a brief describing what to build (optional — defaults to a starting example)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- generated:curated-entry -->
|
|
9
|
+
|
|
10
|
+
Use the Open Design skill `od:prototype:social-carousel` (social-carousel).
|
|
11
|
+
|
|
12
|
+
Brief: "$ARGUMENTS", or if empty: "Design a 3-card cinematic social carousel — ‘onwards.’, ‘to the next one.’, ‘looking ahead.’. 1080×1080 squares, drop-into-Instagram ready."
|
|
13
|
+
|
|
14
|
+
Call `prepare_open_design_brief` (the open-design MCP server's tool) with skillId "od:prototype:social-carousel" and this brief — call `list_open_design_design_systems` first only if the user names a brand or visual direction. Author the files yourself with your own file-editing tools per the returned instructions, then call `register_open_design_artifact`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "od-prototype-social-youtube-thumbnail"
|
|
3
|
+
description: YouTube Thumbnail (Open Design) — use only when the user explicitly runs this skill
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
argument-hint: a brief describing what to build (optional — defaults to a starting example)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- generated:curated-entry -->
|
|
9
|
+
|
|
10
|
+
Use the Open Design skill `od:prototype:social-youtube-thumbnail` (YouTube Thumbnail).
|
|
11
|
+
|
|
12
|
+
Brief: "$ARGUMENTS", or if empty: "Use the YouTube Thumbnail template to design a thumbnail for my video. Make the promise of the video readable in under a second: one short hook line, one strong focal subject, high contrast. Use real content from my brief and avoid lorem ipsum or placeholder images."
|
|
13
|
+
|
|
14
|
+
Call `prepare_open_design_brief` (the open-design MCP server's tool) with skillId "od:prototype:social-youtube-thumbnail" and this brief — call `list_open_design_design_systems` first only if the user names a brand or visual direction. Author the files yourself with your own file-editing tools per the returned instructions, then call `register_open_design_artifact`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: card-twitter
|
|
3
|
+
description: Twitter Share Card (Open Design) — use only when explicitly invoked, not for general design requests
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated:open-design-agent-kit -->
|
|
7
|
+
|
|
8
|
+
Use the Open Design skill `od:prototype:card-twitter` (Twitter Share Card).
|
|
9
|
+
|
|
10
|
+
Treat the rest of the user's message as the brief. If nothing more specific was given, use: "Use the Twitter Share Card template to turn my content into a Twitter quote or data card designed to pair with a post. Preserve the template's visual signature, use real content and data, and avoid lorem ipsum or placeholder images."
|
|
11
|
+
|
|
12
|
+
Call `prepare_open_design_brief` (the open-design MCP server's tool) with skillId "od:prototype:card-twitter" and this brief — call `list_open_design_design_systems` first only if the user names a brand or visual direction. Author the files yourself with your own file-editing tools per the returned instructions, then call `register_open_design_artifact`.
|
|
@@ -15,12 +15,34 @@ All Open Design content (skill/template text, design system tokens, example brie
|
|
|
15
15
|
|
|
16
16
|
Follow this flow:
|
|
17
17
|
|
|
18
|
+
0. **Check the tools are wired up.** This skill does nothing on its own — every step below calls a tool the `open-design` MCP server provides. If `list_open_design_skills` (or any other tool named below) isn't available to you right now, the server hasn't been registered in this project yet. Set it up, then retry from step 1:
|
|
19
|
+
- **Claude Code:** run `npx @feimacode/open-design-agent-kit init --tools claude` in the project root, or `claude mcp add open-design -- npx -y @feimacode/open-design-agent-kit-mcp`.
|
|
20
|
+
- **Codex CLI:** run `npx @feimacode/open-design-agent-kit init --tools codex` in the project root.
|
|
21
|
+
- **Any other MCP-capable agent** (Cursor, etc.): register `npx -y @feimacode/open-design-agent-kit-mcp` as a stdio MCP server using this agent's own MCP config mechanism.
|
|
22
|
+
|
|
23
|
+
Run the command yourself if you have shell access; otherwise tell the user the exact command to run and wait for their confirmation before continuing. Skip this step entirely once the tools are available.
|
|
18
24
|
1. Call `list_open_design_skills` (optionally with a `query` and/or an exact `mode`) to find a skill or design template that matches what the user wants. Pick the best match by name/description/triggers, and prefer a result's `examplePrompt` (adapted to the user's specifics) over inventing your own brief when one is present and closely fits.
|
|
19
25
|
2. There is an **active design system**, persisted per project (a local `.open-design/config.json` file). If the user mentions a brand, company, industry, or visual style that differs from what's active, call `list_open_design_design_systems` (optionally with a `query` and/or an exact `category` — call with no arguments first to see categories, and check each result's `active` flag) to find the right one, and pass its id explicitly to `prepare_open_design_brief` — doing so also makes it the new active one going forward, so you don't need to re-specify it on later requests in this project. If the user hasn't mentioned any direction, just omit `designSystemId` from `prepare_open_design_brief` and it will silently use whatever is currently active (or none). Only call `set_active_design_system` directly when the user wants to pin a look before generating anything ("let's use the Starbucks look from now on").
|
|
20
26
|
3. Call `prepare_open_design_brief` with the chosen `skillId`, optional `designSystemId` (per step 2), and the user's `brief` (their request, in their own words). This returns `instructions` to follow, a `suggestedEntryPath`, and the `designSystemId`/`designSystemName` actually used (whether explicit or defaulted from active) — mention which one it was if it wasn't obvious from the conversation. It does NOT write any files.
|
|
21
27
|
4. Follow the returned `instructions` and author the artifact's entry file (plus any supporting files) yourself, using your own file-editing tools. Do not look for a separate tool to write the design content.
|
|
22
28
|
5. Call `register_open_design_artifact` with the entry path, a `kind`, a `title`, and any `supportingFiles`, so the artifact is recognized and gets its manifest sidecar written.
|
|
23
|
-
6.
|
|
29
|
+
6. Call `check_open_design_artifact` with the entry path before telling the user it's done (after creating an artifact, and again after a substantial edit). It renders the artifact and returns screenshots plus preflight findings: fix every **error**, then look at the screenshots for what the checks can't measure — balance, hierarchy, crowded or empty areas, text over busy imagery — and fix what's clearly wrong. Re-check after fixing, but stop after two fix rounds and tell the user about anything left. Don't describe the screenshots to the user unless they ask. If it returns `no-browser`, skip checking and tell the user once that visual checks need Chrome, Edge or Chromium installed.
|
|
30
|
+
7. Optionally call `get_open_design_artifact` to confirm what was written before telling the user it's done.
|
|
31
|
+
|
|
32
|
+
When a request names a **kind of thing to make** (a prototype or landing page, mobile app, slides, document, wireframe, animation, résumé, research synthesis, data report, poster or flier, social post, diagram, 3D object), call `list_open_design_skills` with `surface` set to that kind first (`surface: "list"` shows the ids). Pick from its entries, ask only the surface's questions the request doesn't answer, and follow the surface's prompt when it names one. A request for one specific template or style still goes straight to it. Never pick an entry marked `stub: true`: it only advertises an upstream skill and has no instructions here.
|
|
33
|
+
|
|
34
|
+
For **engineering documents** (an RFC, ADR, postmortem, PR explainer or changelog page), use the matching skill (`od:prototype:rfc`, `adr`, `postmortem`, `pr-explainer`, `changelog-page`). Gather the facts yourself first, from git (`git log`, `git diff`, `gh pr view` when available) and the files involved, and register what you read as `sources`. Never invent incident facts, dates or numbers: ask for them. To turn a **folder of Markdown docs** into pages, follow the docs flow (load the `open-design-docs` skill): one page per file, one template for the set, and on a re-run only the pages whose Markdown changed.
|
|
35
|
+
|
|
36
|
+
If the request is **based on a document** (it names or attaches a report, spec, spreadsheet, PDF or existing deck, or points at repository files such as `CHANGELOG.md`, `docs/adr/`, an RFC or a metrics CSV), generate from it rather than from memory: pass those workspace paths as `sources` to `prepare_open_design_brief`. Typical examples: "a release deck from CHANGELOG.md", "an architecture review from docs/adr/", "a board update from metrics/q3.xlsx", "turn docs/q3-report.docx into a pitch". The tool extracts each document (DOCX, PPTX, XLSX, PDF with `pdftotext`, Markdown, text, CSV) to Markdown and returns instructions that make you **write an outline first and stop for the user's approval** before building. Follow them: read the extracted text by line range, write `outline.md`, show it, and wait (unless the user said to just build it). Then register with the same `sources`; its result lists numbers on the page that it couldn't find in the sources, so check and fix each one. Use `read_open_design_source` on its own to look inside a document before deciding how to use it. For a whole folder of files (such as `docs/adr/`), pass the relevant files individually (up to 10).
|
|
37
|
+
|
|
38
|
+
When the user wants to **choose colors and fonts**, a palette or a type pairing, or a look for a new brand ("show me some color and type options", "what could our brand look like?"), run the exploration with the style-tile skill (`skillId: "od:design-system:style-tile"`): it makes compact tiles (palette with contrast, type specimen, components) instead of pages, 4 by default. To vary the active design system rather than replace it ("the same but warmer"), use `axis: "custom"` with one direction per variation. When the user picks a tile, call `choose_open_design_direction` with `next: "save-design-system"`: the tile's tokens are copied verbatim into the new system, which then becomes active.
|
|
39
|
+
|
|
40
|
+
If the user explicitly asks for **options to compare** ("show me three directions for…", "a few different versions of…", "explore some alternatives", "I'm not sure what style I want, show me options"), run a **design exploration** instead of steps 3–5. Don't explore for an ordinary request ("design a pricing page"): it costs several generations.
|
|
41
|
+
1. Call `prepare_open_design_exploration` with the `skillId` and the user's `brief` (and `count` 2–4 if they gave a number; default 3). The tool picks deliberately different directions itself: visual styles when no design system is active, layout/narrative structures when one is (so the brand is kept), or pass `axis: "custom"` with `customDirections` when the user named what should vary ("three hero concepts"). Pass `directionIds` only when the brief's tone clearly calls for specific ones (e.g. `editorial-monocle` for a magazine, `brutalist-experimental` for an art or agency site). If the result says the active design system was set aside, tell the user.
|
|
42
|
+
2. For each returned direction, follow `sharedInstructions` followed by that direction's own `instructions`, write its file at its `suggestedEntryPath`, and call `register_open_design_artifact` with the `explorationId` and that direction's `directionId`. Directions are quick **sketches** (one screen, or a cover plus two slides), not full builds. If you can delegate work to sub-agents, generate the directions in parallel, passing each one `sharedInstructions` plus its own `instructions`.
|
|
43
|
+
3. Call `compare_open_design_exploration` with `contactSheet: true`. If you can view images, open the contact sheet and check the directions really look different (layout and hero pattern, not just colour); regenerate any that resembles another.
|
|
44
|
+
4. Show the user the comparison page path (`compareFile`; it opens in any browser straight from the file system and shows every direction side by side) and the contact sheet path, briefly describe how each direction differs, and ask which one to take forward.
|
|
45
|
+
5. When the user picks one, call `choose_open_design_direction` with `next`: `build-out` (build the chosen sketch out at full fidelity), `merge` (the same, taking named aspects from other directions via `mergeFrom`, e.g. "B with A's hero"), or `save-design-system` (turn the direction into a reusable custom design system). Follow the returned `instructions` and register the result as they say.
|
|
24
46
|
|
|
25
47
|
Generated artifacts land under the project's Open Design output directory (default `.open-design/`) so they stay visible and trackable in version control like any other project file. This host has no live preview editor — after registering an artifact, just tell the user where it was written; there is nothing further to open automatically.
|
|
26
48
|
|
|
@@ -29,3 +51,42 @@ If the user wants to start from or riff on an existing example rather than build
|
|
|
29
51
|
If the user wants a brand/style that isn't one of the ~150 bundled design systems ("use our own brand colors", "match our website", "set up a custom design system for..."), call `create_open_design_design_system` with a `name`, a `brief` describing the brand, and an optional `sourceUrl` if they gave you a website to match. It returns `instructions` for writing a new `DESIGN.md` yourself (same file shape as every bundled design system) plus, when a `sourceUrl` was given, a best-effort extracted starting palette/font list to incorporate — treat that as a rough starting point, not ground truth. It does NOT write any files. After writing the file, call `set_active_design_system` with the returned `id` — there's no separate "register" step for design systems; a written `DESIGN.md` is immediately selectable, the same way generated artifacts are immediately visible once written.
|
|
30
52
|
|
|
31
53
|
Once the user is happy with a generated or refined artifact and wants it turned into real, working code in this app ("turn this into a real component", "add this to the app", "wire this into my codebase"), call `port_open_design_artifact_to_app` with the artifact's `entryPath`. It returns `instructions` for reproducing the artifact's design as idiomatic code in this project's actual application — read the returned instructions carefully: they'll tell you to find and follow a real existing component in this codebase as your pattern reference (its styling approach, conventions, file organization) rather than copying the artifact's HTML/CSS verbatim, and to leave routing/navigation wiring as a separate step for the user. It does NOT write any files itself.
|
|
54
|
+
|
|
55
|
+
When the artifact is meant to be posted or uploaded as an image (an X/Twitter post, Instagram or LinkedIn image, Xiaohongshu cards, a YouTube thumbnail, a poster), call `export_open_design_artifact` with its `entryPath` after registering it. It renders the artifact in a headless browser and writes PNG/JPEG file(s) under the artifact's own `exports/` folder, sized from the source skill automatically unless you pass `width`/`height`. For multi-card designs, give each card a `data-od-card` attribute and pass `selector: "[data-od-card]"` to get one numbered image per card. Pass `maxBytes` with the platform's upload limit (X 5000000, YouTube thumbnail 2000000, Instagram 8000000). Tell the user the exported file paths. For any social-post request ("make an X post…", "an Instagram carousel…", "a YouTube thumbnail…"), load the `open-design-social-post` skill first. It maps each platform and format to the right canvas size, skillId and export arguments (and asks the user which platform when that's unclear), then walks through generate → register → export. Animated designs (motion frames, title cards, animated charts, sprite or WebGL animations) export as video or GIF: call `export_open_design_artifact` with `format: "mp4"`, `"webm"` or `"gif"`. Time runs on a virtual clock, so the frames are exact and the same on every run; the length comes from the page (`data-duration` frames or the longest animation) unless you pass `duration`. Before exporting, call `check_open_design_artifact` with `at` (e.g. `[0, 1.5, 3]`) to see the start, middle and end. Export needs an installed ffmpeg: if it reports `no-ffmpeg` or `ffmpeg-missing-encoder`, tell the user what to install rather than trying another way. Compositions built with the HyperFrames framework are the exception: the brief's own instructions render them with the HyperFrames CLI. After registering a slide deck, offer to export it as PowerPoint or PDF, and when the user wants that, call `export_open_design_artifact` with `format: "pptx"` or `"pdf"` (one full-bleed image per slide; not editable text). `format: "pdf"` on an ordinary page prints it as a vector PDF.
|
|
56
|
+
|
|
57
|
+
For a **diagram** of a system — architecture, dependencies, a request flow, a database schema (ERD), a state machine or a sequence of calls ("diagram how our services talk", "draw the schema", "how does checkout work?") — use the `diagram` skill (`od:prototype:diagram`, or remix its example `od:prototype:diagram:example`). Read the relevant code first and draw only what you read. Write nodes with `data-rank`/`data-lane` and hidden links, never coordinates, then call `add_open_design_diagram_runtime` (it inserts the layout runtime; never write that script yourself), register with kind `diagram` and the files you read as `sources`, and check it. When a later check or `get_open_design_artifact` reports that its sources changed, offer to redraw it.
|
|
58
|
+
|
|
59
|
+
For a **3D object** — a product shot, a 3D logo, a turntable, or the user's own `.glb`/`.gltf` model ("make a 3D render of our bottle", "turn the logo into 3D", "a product shot of models/headphones.glb") — use the `3d-object` skill (`od:prototype:3d-object`). It's one three.js scene with studio lighting, materials from the design system's tokens, a ground shadow and a turntable. Load three.js exactly as the skill says (its import map for the pinned `three@0.160.0` module build): older `three.min.js` and `examples/js` script tags no longer exist and leave the page blank. Copy a user's model under `assets/` next to the design and load it with `GLTFLoader`, framing the camera from its bounding box. The page must expose `window.odScene` (`ready`, resolved after a direct render once everything has loaded, and `rotate`); exports and checks turn on software WebGL and wait for it. Fix `webgl` findings before exporting. For a cut-out to place on slides or pages, export `format: "png"` with `transparent: true` from a scene with no background; for a turntable, `format: "mp4"` or `"gif"` with `duration` equal to one rotation.
|
|
60
|
+
|
|
61
|
+
For an **HTML email** (newsletter, launch or product-update email), use the `email-campaign` skill: it builds a table-based, inbox-safe email marked `data-od-email`. Check it, then export with `export_open_design_artifact` and `format: "email"` (add `baseUrl` once the user has hosted the `assets/` folder, so image URLs become absolute), and tell the user to send themselves a test before sending to a list. When the user wants a design **pasted into another editor** (a WeChat Official Account article, a Notion page, a newsletter tool), export with `format: "paste"` and `target` `wechat`, `notion`, `newsletter` or `generic`; styles are inlined from what the browser rendered. To use either file, the user opens it in a browser, selects all and copies.
|
|
62
|
+
|
|
63
|
+
For a **campaign** (one message across several channels or sizes, ad banners in several sizes, or the same creative in several languages), load the `open-design-campaign` skill first: agree a copy deck saved as a CSV, build one fluid master bound to it with `data-od-field` (headline and subhead marked `data-od-fit` for long translations), check every chosen shape per row, and export with `presets`, `data` and `campaignSheet: true`.
|
|
64
|
+
|
|
65
|
+
For a **poster, flyer, certificate or other print piece**, or when the user wants an existing design in other sizes or as a print-ready PDF, load the `open-design-poster` skill first. In short: ask print or screen and which size if unclear; pass that canvas `format` (e.g. `a3`, `a2`, `ig-portrait`, `story`) with `fluid: true` to `prepare_open_design_brief` and the same `format` to `register_open_design_artifact` (a fluid poster reflows to any shape, so the size can change later); make any QR code with `create_open_design_qr_code` (never draw a fake one); run `check_open_design_artifact` and fix every preflight error; then export with `preset` set to the format id (print formats give a PDF with bleed, trim and bleed boxes). `presets` exports several shapes at once and `shapeSheet: true` shows them all in one image; `adapt_open_design_artifact` tunes a shape that looks wrong (in place, for fluid posters), and `data` on the export makes one file per row of the user's spreadsheet. Print PDFs are RGB: say so.
|
|
66
|
+
|
|
67
|
+
When the user wants to **share** a design with people who don't have this project open: for a link ("publish this", "deploy it", "give me a link to send the team", "host it somewhere"), call `publish_open_design_artifact` with its `entryPath` (pass `provider` only if they already said where; otherwise it returns the choices to show them). It builds a deploy-ready folder and returns step-by-step instructions to run with your terminal under the user's own CLI login, or as a temporary no-account link. Follow them exactly: they stop for the user's explicit yes before anything goes online, and after a successful deploy you call the tool again with `published` to record the link. For a single file to attach or send ("export it as one HTML file"), call `export_open_design_artifact` with `format: "standalone"` instead; nothing goes online. The `open-design-publish` skill walks through the whole flow.
|
|
68
|
+
|
|
69
|
+
For **Figma**: to turn a frame into code, call `pull_open_design_figma_frame` with the frame link ("Copy link to selection"); to put a finished design into Figma as editable layers, call `push_open_design_artifact_to_figma` with its `entryPath`. Both work through the user's Figma connection, and fall back to a token or the import plugin.
|
|
70
|
+
|
|
71
|
+
When a step would **hand work to another service** (import into Canva, read or push a Figma frame, save to Google Drive, write a Notion page, share in Slack, or post to a social network), call `list_open_design_integrations` first with the `capability` (plus `platform` for a social post). Then:
|
|
72
|
+
1. Check your own tools for one matching the returned patterns, including deferred or on-demand tools you can search for. If one is there, use it, calling its tools by their server-defined names (e.g. Canva's `import-design-from-url`).
|
|
73
|
+
2. If none is, offer to set up the first provider, once per conversation and only when the step needs it: say what it does and what sign-in it needs. Only after the user says yes, follow the returned setup steps (user-level configuration only). Never install silently, and never ask for an API key or write one into a file: the user sets it themselves.
|
|
74
|
+
3. Help the user sign in and reload if needed, then confirm by listing your tools.
|
|
75
|
+
4. If the user declines or setup fails, carry on with the workflow's manual path.
|
|
76
|
+
|
|
77
|
+
Anything that publishes, sends or posts on the user's account still needs their go-ahead first.
|
|
78
|
+
|
|
79
|
+
## Help
|
|
80
|
+
|
|
81
|
+
When the user asks how something works, or a tool reports an error, point them to the relevant page:
|
|
82
|
+
|
|
83
|
+
- Documentation index: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/README.md
|
|
84
|
+
- Troubleshooting (export errors, missing browser or FFmpeg, blank slides, MCP connection): https://github.com/feimacode/open-design-agent-kit/blob/main/docs/troubleshooting.md
|
|
85
|
+
- Exploring design directions: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/explore-directions.md
|
|
86
|
+
- Turning a document into a deck: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/deck-from-a-document.md
|
|
87
|
+
- Sharing and publishing: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/share-and-publish.md
|
|
88
|
+
- Connecting Canva, Figma, Notion, Google Drive, Slack or a posting service: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/integrations.md
|
|
89
|
+
- Social media posts: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/social-posts.md
|
|
90
|
+
- Posters and print: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/posters.md
|
|
91
|
+
- Export images: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/export-images.md · Export decks and PDFs: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/guides/export-decks.md
|
|
92
|
+
- Tools reference: https://github.com/feimacode/open-design-agent-kit/blob/main/docs/reference/tools.md
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
# Remixable Open Design examples
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
192 vendored examples have an actual rendered starting artifact you can copy into the workspace and modify, via `remix_open_design_example` with the `id` shown below as `skillId`, instead of generating from scratch with `prepare_open_design_brief`.
|
|
4
4
|
|
|
5
5
|
## prototype
|
|
6
6
|
|
|
7
|
+
- **od:prototype:adr:example** — ADR-0007: Lay diagrams out in the browser: An example of the adr skill: ADR-0007: Lay diagrams out in the browser.
|
|
7
8
|
- **od:prototype:blog-post:example** — blog-post: A long-form article / blog post — masthead, hero image placeholder, article body with figures and pull quotes, author byline, related posts. Use when the brief asks for "blog", "article", "post", "essay", or "case study".
|
|
8
9
|
- **od:prototype:clinical-case-report:example** — clinical-case-report: Structured medical case presentation for clinical rounds, conferences, and documentation. Generates SOAP-format or narrative case reports with physiologically accurate vitals, labs, and evidence-based plans. Use when the brief mentions "case report", "case presentation", "SOAP note", "clinical case", "ward rounds", "case summary", or "patient presentation".
|
|
9
10
|
- **od:prototype:codex-interactive-capability-map** — Codex Interactive Capability Map: Turn a long-form article, thread, memo, or product narrative into a compact clickable capability map with a workflow loop, use-case matrix, and responsive detail panel.
|
|
11
|
+
- **od:prototype:competitive-teardown:example** — Competitive Teardown: Positioning map, feature matrix, pricing comparison and opportunity windows: turns competitor research into a product decision report.
|
|
12
|
+
- **od:prototype:competitive-teardown-analyst-dossier** — Competitive Teardown — analyst dossier style: Positioning map, feature matrix, pricing comparison and opportunity windows: turns competitor research into a product decision report. The analyst dossier style variant.
|
|
13
|
+
- **od:prototype:competitive-teardown-radar-map** — Competitive Teardown — radar map style: Positioning map, feature matrix, pricing comparison and opportunity windows: turns competitor research into a product decision report. The radar map style variant.
|
|
14
|
+
- **od:prototype:competitive-teardown-war-room-grid** — Competitive Teardown — war room grid style: Positioning map, feature matrix, pricing comparison and opportunity windows: turns competitor research into a product decision report. The war room grid style variant.
|
|
10
15
|
- **od:prototype:critique:example** — critique: Run a 5-dimension expert design review on any HTML artifact in the project — Philosophy / Visual hierarchy / Detail / Functionality / Innovation, each scored 0–10. Outputs a single self-contained HTML report with a radar chart, evidence-backed scores, and three lists: Keep / Fix / Quick-wins. Use when the brief asks for a "design review", "design critique", "5 维度评审", "design audit", or "what's wrong with my design".
|
|
11
16
|
- **od:prototype:dashboard:example** — dashboard: Admin / analytics dashboard in a single HTML file. Fixed left sidebar, top bar with user/search, main grid of KPI cards and one or two charts. Use when the brief asks for a "dashboard", "admin", "analytics", or "control panel" screen.
|
|
12
17
|
- **od:prototype:data-report:example** — Data Visualization Report: Turns CSV, Excel, or JSON data into a polished visual report page.
|
|
@@ -14,12 +19,24 @@
|
|
|
14
19
|
- **od:prototype:mockup-device-3d:example** — Device 3D Showcase: Static iPhone and MacBook 3D-style showcase with real HTML embedded on screens, glass-lens refraction, and 360-degree turntable composition.
|
|
15
20
|
- **od:prototype:digital-eguide:example** — digital-eguide: A two-spread digital e-guide preview — page 1 is a cover (display title, author, "What's inside" stats, table of contents teaser); page 2 is a spread (lesson body with pull-quote and a step list). Lifestyle / creator brand tone. Use when the brief asks for an "e-guide", "digital guide", "lookbook", "lead magnet", "creator guide", "playbook", "PDF guide", or "电子指南".
|
|
16
21
|
- **od:prototype:docs-page:example** — docs-page: A documentation page — inline-start nav, scrollable article body, inline-end table of contents. Use when the brief mentions "docs", "documentation", "guide", "API reference", or "tutorial".
|
|
22
|
+
- **od:prototype:article-sketchnote-editorial:example** — Editorial Sketchnote: Turns one concept into a magazine-style feature dossier — the real question, early failures, the turning point, the insight and its name — across six layout moulds.
|
|
17
23
|
- **od:prototype:email-marketing:example** — email-marketing: A brand product-launch email — masthead with wordmark, hero image block, headline lockup with skewed-italic accent, body copy, primary CTA, and a specifications grid. Pure HTML email layout (centered single column, table fallback). Use when the brief asks for an "email", "newsletter blast", "MJML", "product launch email", or "email template".
|
|
18
24
|
- **od:prototype:eng-runbook:example** — eng-runbook: An engineering runbook — service overview, alerts table, dashboards links, common procedures with copy-pasteable commands, on-call rotation, and an incident-response checklist. Use when the brief mentions "runbook", "ops doc", "on-call guide", "SRE doc", or "运维手册".
|
|
25
|
+
- **od:prototype:exec-briefing-memo:example** — Executive Briefing Memo: A one-page decision memo: the decision needed, a clear recommendation with confidence, key facts, tradeoffs, risks and next actions — compressed so a decision-maker can sign off in three minutes.
|
|
26
|
+
- **od:prototype:exec-briefing-memo-board-memo** — Executive Briefing Memo — board memo style: A one-page decision memo: the decision needed, a clear recommendation with confidence, key facts, tradeoffs, risks and next actions — compressed so a decision-maker can sign off in three minutes. The board memo style variant.
|
|
27
|
+
- **od:prototype:exec-briefing-memo-board-paper** — Executive Briefing Memo — board paper style: A one-page decision memo: the decision needed, a clear recommendation with confidence, key facts, tradeoffs, risks and next actions — compressed so a decision-maker can sign off in three minutes. The board paper style variant.
|
|
28
|
+
- **od:prototype:exec-briefing-memo-decision-command** — Executive Briefing Memo — decision command style: A one-page decision memo: the decision needed, a clear recommendation with confidence, key facts, tradeoffs, risks and next actions — compressed so a decision-maker can sign off in three minutes. The decision command style variant.
|
|
29
|
+
- **od:prototype:experiment-readout:example** — Experiment Readout: Hypothesis, metrics, results, interpretation and decision: turns an A/B test or product experiment into a ship / stop / iterate recommendation.
|
|
30
|
+
- **od:prototype:experiment-readout-growth-console** — Experiment Readout — growth console style: Hypothesis, metrics, results, interpretation and decision: turns an A/B test or product experiment into a ship / stop / iterate recommendation. The growth console style variant.
|
|
31
|
+
- **od:prototype:experiment-readout-lab-notebook** — Experiment Readout — lab notebook style: Hypothesis, metrics, results, interpretation and decision: turns an A/B test or product experiment into a ship / stop / iterate recommendation. The lab notebook style variant.
|
|
32
|
+
- **od:prototype:experiment-readout-product-readout** — Experiment Readout — product readout style: Hypothesis, metrics, results, interpretation and decision: turns an A/B test or product experiment into a ship / stop / iterate recommendation. The product readout style variant.
|
|
33
|
+
- **od:prototype:3d-object-glb** — Field bottle — product shot from a GLB: A product model loaded from a .glb, centered and framed automatically, with a soft ground shadow. The user's model variant.
|
|
19
34
|
- **od:prototype:finance-report:example** — finance-report: Quarterly / monthly financial report — masthead with KPIs, revenue and burn charts, P&L summary table, top-line highlights, and an outlook paragraph. Use when the brief mentions "financial report", "Q3 report", "MRR review", "P&L", or "财报".
|
|
20
35
|
- **od:prototype:flowai-live-dashboard-template:example** — flowai-live-dashboard-template: Team-management dashboard skill in the FlowAI aesthetic — three tabs (Team Members, Team Details, Activity Log), KPI stat row, member table, role distribution bar chart, online presence and activity sparklines, and a top-contributors panel, all in a single self-contained HTML file with light/dark theming, hoverable chart tooltips, click-to-zoom panels, and CSV export. Use when the brief asks for a team / workspace admin dashboard, an interactive admin dashboard with charts, or names FlowAI.
|
|
36
|
+
- **od:prototype:info-funnel:example** — Funnel Infographic: A 3–6 stage narrowing funnel that makes conversion rates, drop-off and filtering ratios obvious; vertical, sized for Stories and Xiaohongshu.
|
|
21
37
|
- **od:prototype:gamified-app:example** — gamified-app: A multi-frame gamified mobile-app prototype — three phone frames on a dark showcase stage. Frame 1: cover / poster, Frame 2: today's quests with XP ribbons and a level bar, Frame 3: quest detail. Vivid quest tiles, level ribbon, bottom tab bar. Use when the brief asks for a "gamified app", "habit tracker", "RPG-style life app", "level-up app", "daily quests", "XP / streak app", or "ELI5-style explainer app".
|
|
22
38
|
- **od:prototype:github-dashboard:example** — github-dashboard: GitHub repository analytics dashboard — stars, forks, contributors, issues, pull requests, recent activity, and top contributors. Use when the brief asks for a GitHub repo dashboard, open-source growth report, repository health page, or GitHub analytics view.
|
|
39
|
+
- **od:prototype:3d-object:example** — Halo speaker — 3D product shot: A procedural speaker built from a lathe profile, in studio light on a turntable, colored from the design tokens.
|
|
23
40
|
- **od:prototype:hr-onboarding:example** — hr-onboarding: A new-hire onboarding plan as a single page — first week schedule, buddy + manager intro, learning track, equipment checklist, and "you're set when…" outcomes. Use when the brief mentions "onboarding", "new hire", "first week plan", or "入职".
|
|
24
41
|
- **od:prototype:invoice:example** — invoice: A printable invoice page — sender + recipient block, line items table, tax breakdown, totals, and payment instructions. Use when the brief mentions "invoice", "bill", "billing statement", or "发票".
|
|
25
42
|
- **od:prototype:doc-kami-parchment:example** — Kami Parchment Document: Warm parchment canvas (#f5f4ed), monochrome ink-blue accent (#1B365D), one serif family, and editorial-grade typography.
|
|
@@ -34,15 +51,22 @@
|
|
|
34
51
|
- **od:prototype:mobile-onboarding:example** — mobile-onboarding: A multi-screen mobile onboarding flow rendered as three phone frames side by side — splash, value-prop, sign-in. Status bar, swipe dots, primary CTA. Use when the brief mentions "mobile onboarding", "iOS onboarding", "phone signup", or "移动端引导".
|
|
35
52
|
- **od:prototype:resume-modern:example** — Modern Resume: Modern minimal resume, single A4 page, ready for print or PDF export.
|
|
36
53
|
- **od:prototype:motion-frames:example** — motion-frames: A single-frame motion-design composition with looping CSS animations — rotating type ring, animated globe, ticking timer, parallax labels. Renders as a hero video poster you can hand straight to HyperFrames or any keyframe-based exporter. Use when the brief asks for "motion design", "animated hero", "loop", "video poster", "title card", or pairs Open Claude Design with HyperFrames for a kinetic export.
|
|
54
|
+
- **od:prototype:3d-object-logo** — Northwind mark — 3D logo: The brand's SVG mark extruded and bevelled in brushed gold, turning slowly. The extruded logo variant.
|
|
55
|
+
- **od:prototype:changelog-page:example** — Open Design Agent Kit changelog: An example of the changelog-page skill: Changelog: Open Design Agent Kit.
|
|
37
56
|
- **od:prototype:orbit-general:example** — orbit-general: Open Orbit briefing skill — selected by the Orbit pipeline when the user has two or more connectors connected. Pulls the past 24 hours of activity from every authenticated connector (GitHub, Linear, Notion, Slack, 飞书, Calendar, Gmail, Drive, Sentry, Vercel, …) and renders a single adaptive bento-grid dashboard at the top of "我的设计". Each connector module picks its own UI form (list, avatar stack, status ring, heatmap, file grid, alert card, …) based on the data shape it returns, so the layout scales as Orbit's connector ecosystem grows. This skill should not be triggered manually — it is invoked by Orbit's daily-digest scheduler against the user's live connector data.
|
|
38
57
|
- **od:prototype:orbit-github:example** — orbit-github: Open Orbit briefing skill — selected by the Orbit pipeline when GitHub is the user's only connected connector, or when the user explicitly scopes their daily digest to GitHub. Pulls the past 24 hours of PRs, review requests, issues, CI runs, and merges from the user's authenticated GitHub connection and renders them in a layout that mirrors GitHub's native Notifications + PR-diff visual language. This skill should not be triggered manually — it is invoked by Orbit's daily-digest scheduler against live GitHub data.
|
|
39
58
|
- **od:prototype:orbit-gmail:example** — orbit-gmail: Open Orbit briefing skill — selected by the Orbit pipeline when Gmail is the user's only connected connector, or when the user explicitly scopes their daily digest to Gmail. Pulls the past 24 hours of inbox activity (replies awaited, mentions, cc, auto- categorized bulk) from the user's authenticated Gmail connection and renders the digest as the Orbit Daily Digest email opened inside Gmail's reading view. This skill should not be triggered manually — it is invoked by Orbit's daily-digest scheduler against live Gmail data.
|
|
40
59
|
- **od:prototype:orbit-linear:example** — orbit-linear: Open Orbit briefing skill — selected by the Orbit pipeline when Linear is the user's only connected connector, or when the user explicitly scopes their daily digest to Linear. Pulls the past 24 hours of issue movement, status changes, assignments, and cycle progress from the user's authenticated Linear connection and renders the digest in Linear's native Inbox + cycle-progress visual language. This skill should not be triggered manually — it is invoked by Orbit's daily-digest scheduler against live Linear data.
|
|
41
60
|
- **od:prototype:orbit-notion:example** — orbit-notion: Open Orbit briefing skill — selected by the Orbit pipeline when Notion is the user's only connected connector, or when the user explicitly scopes their daily digest to Notion. Pulls the past 24 hours of document edits, comments, mentions, and database row changes from the user's authenticated Notion connection and renders the digest as a native Notion page (callout / toggle / database table primitives). This skill should not be triggered manually — it is invoked by Orbit's daily-digest scheduler against live Notion data.
|
|
61
|
+
- **od:prototype:diagram:example** — Package architecture diagram: Architecture diagram of a monorepo's packages: shared foundations, the hosts built on them, runtime dependencies versus build-time copies, with each node linked to its package.json.
|
|
42
62
|
- **od:prototype:pm-spec:example** — pm-spec: Product spec / PRD as a single page — problem, success metrics, scope, user stories, design notes, rollout plan, open questions. Use when the brief mentions "PRD", "spec", "product spec", "feature brief", or "需求文档".
|
|
63
|
+
- **od:prototype:pr-explainer:example** — PR explainer: add campaign export functionality: An example of the pr-explainer skill: PR explainer: campaign kit.
|
|
43
64
|
- **od:prototype:pricing-page:example** — pricing-page: A standalone pricing page — header, plan tiers, feature comparison table, and an FAQ. Use when the brief asks for "pricing", "plans", "subscription tiers", or a "compare plans" page.
|
|
65
|
+
- **od:prototype:email-campaign:example** — Product launch email: A product launch email that renders in Gmail, Outlook and Apple Mail: table layout, three benefit rows, a bulletproof button and a compliant footer.
|
|
44
66
|
- **od:prototype:social-reddit-card:example** — Reddit Post Card: Realistic Reddit post card with vote rail and comment count, suited to video overlays or story sharing.
|
|
67
|
+
- **od:prototype:rfc:example** — RFC-012: Let the agent see what it built: An example of the rfc skill: Let the agent see what it built.
|
|
45
68
|
- **od:prototype:saas-landing:example** — saas-landing: Single-page SaaS landing with hero, features, social proof, pricing, and CTA. Respects the active DESIGN.md color/typography/layout tokens. Trigger keywords: "saas landing", "marketing page", "product landing".
|
|
69
|
+
- **od:prototype:postmortem:example** — Sample postmortem: exports hung on a confined browser: An example of the postmortem skill: Sample postmortem: exports hung on a confined browser.
|
|
46
70
|
- **od:prototype:social-carousel:example** — social-carousel: A three-card social-media carousel laid out as 1080×1080 squares — three cinematic, on-brand panels with display headlines that connect across the series ("onwards." → "to the next one." → "looking ahead."). Each card has a brand mark, a number / total, a caption, and a "loop" affordance. Use when the brief asks for a "carousel post", "social carousel", "Instagram carousel", "LinkedIn series", "X thread cards", or "三连发".
|
|
47
71
|
- **od:prototype:social-media-dashboard:example** — social-media-dashboard: Creator-facing social media analytics dashboard in a single HTML file. A platform switcher (X / LinkedIn / YouTube / Instagram), a row of KPI cards (followers, engagement rate, likes, reposts), a follower-growth chart, a "top post this week" preview, and a trending topics / top comments side panel. Use when the brief mentions a "social media dashboard", "creator analytics", "social analytics", or names specific platforms (X, Twitter, LinkedIn, YouTube, Instagram, TikTok) together with metrics like followers, engagement, likes, reposts.
|
|
48
72
|
- **od:prototype:social-spotify-card:example** — Spotify Now-Playing Card: Spotify Now Playing-style card with album art, progress bar, and playback controls, suited to video overlays or personal homepages.
|
|
@@ -156,6 +180,10 @@
|
|
|
156
180
|
- **od:deck:simple-deck:example** — Write an Operating Review like a Disciplined COO: OpenDesign's operating review: growth, burn, and the concrete path to sustainability without losing the open ethos. Built as a decision-grade corporate strategy deck for leadership team.
|
|
157
181
|
- **od:deck:html-ppt-zhangzara-grove:example** — Write an Urban Green-Space Policy Brief like a City Sustainability Director: A municipal urban-tree-canopy policy proposal — the public need, the evidence, the options, and the funding decision. Built as a decision-grade policy briefing deck for city council, agency reviewers.
|
|
158
182
|
|
|
183
|
+
## design-system
|
|
184
|
+
|
|
185
|
+
- **od:design-system:style-tile:example** — Style tile: Harbor: A style tile for a calm fintech brand: cool neutrals, a deep harbor-blue accent, a serif display face with a geometric sans, soft radii.
|
|
186
|
+
|
|
159
187
|
## image
|
|
160
188
|
|
|
161
189
|
- **od:image:image-poster:example** — image-poster: Single-image generation skill for posters, key art, and editorial illustrations. Defaults to gpt-image-2 but is provider-agnostic — the same workflow drives Flux, Imagen, or Midjourney via the active upstream tooling. Output is one or more PNG/JPEG files saved to the project folder.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: open-design-campaign
|
|
3
|
+
description: Turn one brief into a whole campaign — one master design exported to every channel size (social, link previews, banners, display ads), plus an optional landing page and email, in every language you need, checked and shown on one campaign sheet — use whenever the user wants a campaign, a launch kit, assets for several channels or sizes at once, ad banners in several sizes, or the same creative in several languages, even if they don't mention Open Design
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated:open-design-agent-kit -->
|
|
7
|
+
|
|
8
|
+
Build a campaign with Open Design: one message, one visual system, every channel.
|
|
9
|
+
|
|
10
|
+
Brief: the rest of the user's message (if there is none, ask the user: "What is the campaign for, which channels, and which languages?")
|
|
11
|
+
|
|
12
|
+
## 1. Agree the copy deck
|
|
13
|
+
|
|
14
|
+
Before designing anything, agree the words with the user. Draft them from the brief and show them as a short table:
|
|
15
|
+
|
|
16
|
+
- `headline` (≤ 6 words), `subhead` (one line), `cta` (2–4 words), and `legal` (one short line, if the brief needs one);
|
|
17
|
+
- one row per language (`locale` column: `en`, `de`, `ja`…) or per audience, if the user wants several. Translate faithfully and keep each row's meaning identical.
|
|
18
|
+
|
|
19
|
+
When the user is happy, save it as `copy.csv` in the campaign folder (`<output dir>/<campaign-slug>/copy.csv`), with a header row: `locale,headline,subhead,cta,legal`.
|
|
20
|
+
|
|
21
|
+
## 2. Build one fluid master
|
|
22
|
+
|
|
23
|
+
Call `prepare_open_design_brief` with `od:prototype:poster-hero` (or a better-fitting poster or social skill from `list_open_design_skills`), the brief, `format: "ig-portrait"` and `fluid: true`, plus `collectionId` (the campaign slug), `collectionName` and `screenRole: "master"`.
|
|
24
|
+
|
|
25
|
+
Build it as the brief says, and also:
|
|
26
|
+
|
|
27
|
+
- every piece of copy is an element with `data-od-field="<column>"` from the copy deck, holding the first row's text;
|
|
28
|
+
- add `data-od-fit` to the headline and subhead, so long translations shrink (to at most 70%) instead of overflowing;
|
|
29
|
+
- design the wide band (`@container (aspect-ratio > 1.2)`) and add a very wide band for banners (`@container (aspect-ratio > 3)`: headline and call to action side by side, everything else hidden with `data-od-priority`).
|
|
30
|
+
|
|
31
|
+
Register it (`register_open_design_artifact` with the same `format`, `collectionId`, `collectionName` and `screenRole: "master"`).
|
|
32
|
+
|
|
33
|
+
## 3. Pick channels
|
|
34
|
+
|
|
35
|
+
Ask which channels the campaign needs, unless the brief says. Offer this menu (format ids in brackets):
|
|
36
|
+
|
|
37
|
+
| Channel | Formats |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Instagram / Facebook feed | `ig-portrait`, `ig-square` |
|
|
40
|
+
| Stories, Reels, TikTok | `story` |
|
|
41
|
+
| X | `x-image`, `x-header` |
|
|
42
|
+
| LinkedIn | `linkedin-image`, `linkedin-banner` |
|
|
43
|
+
| Link previews (website, Slack) | `og-image` |
|
|
44
|
+
| Display ads (150 KB each) | `banner-mrec`, `banner-leaderboard`, `banner-skyscraper`, `banner-mobile` |
|
|
45
|
+
| Email header | `email-header` |
|
|
46
|
+
| Print | `a4`, `a3`, `letter`… |
|
|
47
|
+
|
|
48
|
+
## 4. Check every shape
|
|
49
|
+
|
|
50
|
+
Call `export_open_design_artifact` with `presets` set to the chosen formats, `data: "<campaign folder>/copy.csv"`, `nameField: "locale"` and `checkOnly: true`. Fix every **error** in the findings (per shape and per row). For a shape that looks wrong or has errors, call `adapt_open_design_artifact` with those format ids and tune it in the same file. Tiny ad sizes usually need their own `@container` rule: headline and call to action only. Repeat until there are no errors.
|
|
51
|
+
|
|
52
|
+
## 5. Other pieces (optional)
|
|
53
|
+
|
|
54
|
+
If the user wants a landing page or an email, build each with its own skill (`od:prototype:saas-landing` or `od:prototype:web-prototype`, and `od:prototype:email-campaign`) using the same design system and the first row of the copy deck. Register each with the same `collectionId` and `collectionName`, and `screenRole` `landing` or `email`. Check each with `check_open_design_artifact`.
|
|
55
|
+
|
|
56
|
+
## 6. Export and show the sheet
|
|
57
|
+
|
|
58
|
+
1. Export the master: `export_open_design_artifact` with the same `presets`, `data` and `nameField: "locale"`, plus `campaignSheet: true`. This writes one image (or print PDF) per shape per row, named `<name>-<locale>-<format>`, and `exports/campaign-sheet.png`, which shows every shape and every other piece, with a red dot on any that still has errors. If the export says the outputs are over the limit, export one batch of locales at a time.
|
|
59
|
+
2. If there's an email, export it with `format: "email"` (and `baseUrl` once its images are hosted).
|
|
60
|
+
3. Show the user the campaign sheet, list the files per channel, and mention anything still flagged.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: open-design-deck-from-source
|
|
3
|
+
description: Turn a document (a report, spec, spreadsheet, PDF, existing deck, or repository files such as a CHANGELOG) into a deck or one-pager, storyline first, with every number traced back to the source — use whenever the user wants slides, a deck, a presentation or a one-pager made from an existing document, spreadsheet, PDF or deck, or from repository files (CHANGELOG, RFCs, architecture decision records, metrics CSVs), even if they don't mention Open Design
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- generated:open-design-agent-kit -->
|
|
7
|
+
|
|
8
|
+
Build a deck (or a one-pager) from existing documents with Open Design, storyline first, keeping every fact traceable to its source.
|
|
9
|
+
|
|
10
|
+
Request: the rest of the user's message (if there is none, ask the user: "Which document should the deck be built from, and for whom?")
|
|
11
|
+
|
|
12
|
+
## 1. Find the sources
|
|
13
|
+
|
|
14
|
+
Identify the workspace files the request is based on. If it names none, ask which documents to use before doing anything else. Repository files count: `CHANGELOG.md` for a release deck, `docs/adr/*.md` for an architecture review, a metrics CSV or spreadsheet for a board update. Use up to 10 files; for a folder, pick the relevant files.
|
|
15
|
+
|
|
16
|
+
If you're unsure what a document contains, call `read_open_design_source` with its path. It returns an outline, and you can read the extracted Markdown by line range.
|
|
17
|
+
|
|
18
|
+
## 2. Pick the format
|
|
19
|
+
|
|
20
|
+
Call `list_open_design_skills` with `mode: "deck"` (or a query such as "pitch deck", "weekly report", "board") and choose the skill whose style fits the audience. For a single page instead of slides, choose a page or report skill.
|
|
21
|
+
|
|
22
|
+
## 3. Prepare the brief with sources
|
|
23
|
+
|
|
24
|
+
Call `prepare_open_design_brief` with the `skillId`, the user's request as `brief`, and the document paths as `sources`. Pass `designSystemId` only if the user names a brand or style.
|
|
25
|
+
|
|
26
|
+
## 4. Storyline first
|
|
27
|
+
|
|
28
|
+
Follow the returned instructions. Read the parts of the extracted text you need, then write the outline at `outlinePath`, with one entry per slide giving a takeaway headline, supporting points, a visual type and a source reference. **Show the outline to the user and stop** until they approve or change it, unless they already said to just build it.
|
|
29
|
+
|
|
30
|
+
## 5. Build and check
|
|
31
|
+
|
|
32
|
+
Build from the approved outline. Use numbers, names and quotes exactly as in the sources, never invent a statistic, and put the detail you cut from each slide into its speaker notes, ending with a `Source:` line.
|
|
33
|
+
|
|
34
|
+
Call `register_open_design_artifact` with the same `sources`. For every number its result says it couldn't find in the sources, check it: fix it, or say in that slide's notes how it was derived. Register again after fixing.
|
|
35
|
+
|
|
36
|
+
## 6. Hand it over
|
|
37
|
+
|
|
38
|
+
Tell the user where the deck and its outline are, mention any images reused from the documents, and offer to export it as PowerPoint or PDF with `export_open_design_artifact`. PowerPoint exports include the speaker notes.
|