voxflow 1.15.5 → 1.16.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 +2 -2
- package/dist/index.js +1 -1
- package/lib/commands/skills.js +3 -3
- package/lib/commands/slice-fork.js +4 -4
- package/lib/commands/slice.js +1 -1
- package/package.json +1 -1
- package/skills/.claude-plugin/marketplace.json +2 -2
- package/skills/.claude-plugin/plugin.json +3 -2
- package/skills/README.md +9 -7
- package/skills/card/SKILL.md +410 -0
- package/skills/card/references/design-languages/cinematic-still.md +57 -0
- package/skills/card/references/design-languages/data-poster.md +57 -0
- package/skills/card/references/design-languages/editorial-artifact.md +58 -0
- package/skills/card/references/design-languages/field-notes.md +58 -0
- package/skills/card/references/design-languages/image-led-magazine.md +57 -0
- package/skills/card/references/design-languages/newsroom-poster.md +58 -0
- package/skills/card/references/design-languages/product-catalog.md +57 -0
- package/skills/card/references/design-languages/swiss-poster.md +60 -0
- package/skills/card/references/design-languages.md +166 -0
- package/skills/card/references/layouts/card-layouts.md +268 -0
- package/skills/card/references/magazine-card-adaptations.md +154 -0
- package/skills/card/references/taste.md +121 -0
- package/skills/card/references/themes/presets.md +314 -0
- package/skills/card/scripts/render-cards.mjs +216 -0
- package/skills/voxflow-slice/SKILL.md +0 -415
- package/skills/voxflow-slice/examples/article.md +0 -13
- package/skills/voxflow-slice/examples/expected-deck.json +0 -39
- package/skills/voxflow-slice/examples/validate.mjs +0 -46
- /package/skills/{voxflow-slice → slice}/templates/data-finding/deck.json +0 -0
- /package/skills/{voxflow-slice → slice}/templates/founder-lesson/deck.json +0 -0
- /package/skills/{voxflow-slice → slice}/templates/incident-review/deck.json +0 -0
- /package/skills/{voxflow-slice → slice}/templates/manifest.json +0 -0
- /package/skills/{voxflow-slice → slice}/templates/product-launch/deck.json +0 -0
- /package/skills/{voxflow-slice → slice}/templates/quiet-essay/deck.json +0 -0
package/lib/commands/skills.js
CHANGED
|
@@ -23,7 +23,7 @@ const { detectAIAgent } = require('../core/agent-env');
|
|
|
23
23
|
const execFileAsync = promisify(execFile);
|
|
24
24
|
|
|
25
25
|
const SKILLS_NPM_TARGET = 'VoxFlowStudio/skills';
|
|
26
|
-
const SKILL_LIST = ['hub', 'podcast', 'transcribe', 'video', 'slice'];
|
|
26
|
+
const SKILL_LIST = ['hub', 'podcast', 'transcribe', 'video', 'slice', 'card'];
|
|
27
27
|
|
|
28
28
|
// Universal install command — same for every agent. The `skills` npm package
|
|
29
29
|
// detects which AI agents are present on the user's machine and installs the
|
|
@@ -32,8 +32,8 @@ const SKILL_LIST = ['hub', 'podcast', 'transcribe', 'video', 'slice'];
|
|
|
32
32
|
// - `claude skills add voxflow` does NOT exist (was wrong in earlier docs)
|
|
33
33
|
// - `npx skills add VoxFlowStudio/skills --skill voxflow` was wrong too —
|
|
34
34
|
// `--skill voxflow` is interpreted as "find a skill literally named
|
|
35
|
-
// voxflow", but our repo has
|
|
36
|
-
// video / slice), no skill called voxflow.
|
|
35
|
+
// voxflow", but our repo has 6 skills (hub / podcast / transcribe /
|
|
36
|
+
// video / slice / card), no skill called voxflow.
|
|
37
37
|
//
|
|
38
38
|
// Flags:
|
|
39
39
|
// --all install every skill in the target repo (we ship all 5).
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* `voxflow slice fork <template-id>` — copy a curated Slice template's
|
|
5
5
|
* deck.json into the current working directory.
|
|
6
6
|
*
|
|
7
|
-
* Templates live under `cli/skills/
|
|
7
|
+
* Templates live under `cli/skills/slice/templates/<id>/deck.json`
|
|
8
8
|
* with a sibling `manifest.json` describing the gallery. The CLI ships
|
|
9
9
|
* them verbatim (the `files` whitelist in package.json includes `skills/`),
|
|
10
10
|
* so `npm install voxflow` is enough — no separate download.
|
|
@@ -28,11 +28,11 @@ const { validatePaperSlideDeck } = require('../internal/deck-validator');
|
|
|
28
28
|
function resolveTemplatesDir() {
|
|
29
29
|
const candidates = [
|
|
30
30
|
// Source / dev: cli/lib/commands/slice-fork.js → cli/skills/...
|
|
31
|
-
path.resolve(__dirname, '../../skills/
|
|
31
|
+
path.resolve(__dirname, '../../skills/slice/templates'),
|
|
32
32
|
// Published: <pkg>/dist/index.js (bundled) sits beside <pkg>/skills/...
|
|
33
|
-
path.resolve(__dirname, '../skills/
|
|
33
|
+
path.resolve(__dirname, '../skills/slice/templates'),
|
|
34
34
|
// Alt published layout (some build configs flatten skills/ into dist/)
|
|
35
|
-
path.resolve(__dirname, 'skills/
|
|
35
|
+
path.resolve(__dirname, 'skills/slice/templates'),
|
|
36
36
|
];
|
|
37
37
|
for (const c of candidates) {
|
|
38
38
|
try {
|
package/lib/commands/slice.js
CHANGED
|
@@ -216,7 +216,7 @@ async function handle(args) {
|
|
|
216
216
|
}
|
|
217
217
|
// `voxflow slice fork <template-id>` — copy a curated template's
|
|
218
218
|
// deck.json into the user's cwd. No quota / network — assets ship in
|
|
219
|
-
// the published `skills/
|
|
219
|
+
// the published `skills/slice/templates/` directory.
|
|
220
220
|
if (args.length > 0 && args[0] === 'fork') {
|
|
221
221
|
const sliceFork = require('./slice-fork');
|
|
222
222
|
return sliceFork.handle(args.slice(1));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
3
|
"name": "voxflow",
|
|
4
|
-
"description": "VoxFlow — AI voice CLI as a skill for any AI agent. Bundles
|
|
4
|
+
"description": "VoxFlow — AI voice CLI as a skill for any AI agent. Bundles 6 skills (hub, podcast, transcribe, video, slice, card) that drive a hosted TTS / ASR / podcast / render backend.",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "VoxFlow",
|
|
7
7
|
"url": "https://voxflow.studio"
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"plugins": [
|
|
10
10
|
{
|
|
11
11
|
"name": "voxflow",
|
|
12
|
-
"description": "AI voice CLI bundled as
|
|
12
|
+
"description": "AI voice CLI bundled as 6 skills. TTS in 200+ voices across 40+ languages, multi-speaker AI podcasts, audio/video transcription with word-level timestamps, SRT-driven dubbing, end-to-end video translation, long-article → vertical card video reels via Remotion, and turning text into polished shareable card images. Backed by a hosted TTS/ASR/LLM/render service with per-user quota (free tier 10K/mo).",
|
|
13
13
|
"category": "productivity",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"homepage": "https://voxflow.studio",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "voxflow",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "AI voice CLI bundled as
|
|
3
|
+
"version": "1.16.0",
|
|
4
|
+
"description": "AI voice CLI bundled as 6 skills (hub, podcast, transcribe, video, slice, card). Synthesize speech in 200+ voices across 40+ languages, generate multi-speaker AI podcasts, transcribe audio/video with word-level timestamps, dub videos from SRT subtitles, run end-to-end video translation, turn long articles into vertical card video reels via Remotion, and turn text into polished shareable card images. Backed by a hosted TTS/ASR/LLM/render service with per-user quota (free tier 10K/mo).",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "VoxFlow",
|
|
7
7
|
"url": "https://voxflow.studio"
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"dubbing",
|
|
20
20
|
"video",
|
|
21
21
|
"remotion",
|
|
22
|
+
"card",
|
|
22
23
|
"voxflow",
|
|
23
24
|
"skill"
|
|
24
25
|
]
|
package/skills/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
[](LICENSE)
|
|
4
4
|
[](https://www.npmjs.com/package/voxflow)
|
|
5
|
-
[](#what-you-get)
|
|
6
6
|
[](#install)
|
|
7
7
|
|
|
8
8
|

|
|
9
9
|
|
|
10
|
-
Voice in your AI workflow.
|
|
10
|
+
Voice in your AI workflow. Six skills that let any AI coding agent (Claude Code · Cursor · Codex · Gemini CLI · Cline) speak in 200+ voices, generate podcasts, dub videos, transcribe audio, and turn text into card images — through one CLI.
|
|
11
11
|
|
|
12
12
|
**Why VoxFlow over a raw TTS API?** One CLI handles auth, voice search, multi-speaker dialogue, video pipelines, and quota. The skills layer makes it native to whichever agent you're already using — no new context-switch.
|
|
13
13
|
|
|
@@ -30,8 +30,8 @@ npx -y skills add VoxFlowStudio/skills --all --yes --global
|
|
|
30
30
|
|
|
31
31
|
The `skills` npm package detects every AI agent on your machine (Claude Code,
|
|
32
32
|
Cursor, Codex CLI, Gemini CLI, Cline, Amp, Antigravity, CodeBuddy, OpenClaw…)
|
|
33
|
-
and writes the
|
|
34
|
-
`slice`) to each agent's standard skill location in a single shot.
|
|
33
|
+
and writes the 6 VoxFlow skills (`hub`, `podcast`, `transcribe`, `video`,
|
|
34
|
+
`slice`, `card`) to each agent's standard skill location in a single shot.
|
|
35
35
|
|
|
36
36
|
## Prerequisites
|
|
37
37
|
|
|
@@ -42,7 +42,7 @@ voxflow login # one-time browser auth
|
|
|
42
42
|
|
|
43
43
|
## What You Get
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
Six focused skills, each loaded on demand:
|
|
46
46
|
|
|
47
47
|
| Skill | Invoked as | What it covers |
|
|
48
48
|
|-------|-----------|----------------|
|
|
@@ -50,7 +50,8 @@ Five focused skills, each loaded on demand:
|
|
|
50
50
|
| **podcast** | `voxflow:podcast` | Multi-speaker AI podcast from topic / URL / script |
|
|
51
51
|
| **transcribe** | `voxflow:transcribe` | `asr` · `asr-jobs` · `translate` · `dub` · `video-translate` · `summarize` · `publish` |
|
|
52
52
|
| **video** | `voxflow:video` | `picstory` · `present` · `slides` · `explain` · `image` |
|
|
53
|
-
| **slice** | `voxflow:slice` | Article → vertical card video (1080×1920);
|
|
53
|
+
| **slice** | `voxflow:slice` | Article → vertical card video (1080×1920); 13 editorial / poster / magazine themes |
|
|
54
|
+
| **card** | `voxflow:card` | Text → shareable card images (HTML/CSS + Playwright); 1:1 / 3:4 / 9:16, editorial design system |
|
|
54
55
|
|
|
55
56
|
Use the hub skill as the starting point — it routes to the others automatically.
|
|
56
57
|
|
|
@@ -76,7 +77,8 @@ voxflow/
|
|
|
76
77
|
podcast/SKILL.md # AI dialogue podcast
|
|
77
78
|
transcribe/SKILL.md # ASR, translation, dubbing
|
|
78
79
|
video/SKILL.md # AI short video, slides, images
|
|
79
|
-
slice/SKILL.md # Article → vertical card video (
|
|
80
|
+
slice/SKILL.md # Article → vertical card video (13 themes)
|
|
81
|
+
card/SKILL.md # Text → shareable card images (1:1 / 3:4 / 9:16)
|
|
80
82
|
```
|
|
81
83
|
|
|
82
84
|
## Registry
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: card
|
|
3
|
+
description: Use when the user wants to turn text content into a set of polished, shareable visual CARD IMAGES — knowledge cards, quote cards, 小红书图文, carousel cards, poster cards — rendered as HTML/CSS and exported via Playwright at ratios like 1:1 / 3:4 / 9:16. Triggers: card / 卡片 / 知识卡 / 文字卡片 / 金句卡 / 图文卡片 / 卡片生成 / make cards. For article → vertical card VIDEO use voxflow:slice; for short videos / AI clips use voxflow:video; for podcasts use voxflow:podcast.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# VoxFlow Skill — Card
|
|
7
|
+
|
|
8
|
+
Turn a piece of text into a set of distinctive, consistent visual card
|
|
9
|
+
images. Each card is its own webpage; all cards share one size and style
|
|
10
|
+
system; they render with Playwright and export as PNGs.
|
|
11
|
+
|
|
12
|
+
This is the **static card-image** skill. For other surfaces switch to:
|
|
13
|
+
|
|
14
|
+
- **Article → vertical card VIDEO (Slice)** — 1080×1920 reel, 13 themes → `voxflow:slice`
|
|
15
|
+
- **Short videos / AI clips / knowledge-card videos** → `voxflow:video`
|
|
16
|
+
- **Multi-speaker podcasts** → `voxflow:podcast`
|
|
17
|
+
- **TTS / voices / install / auth / quota** → `voxflow:hub`
|
|
18
|
+
|
|
19
|
+
<CRITICAL-AUTO-UPGRADE>
|
|
20
|
+
If ANY `voxflow` command prints a `<voxflow-hint ... type="cli-outdated" ...>` line to stderr, IMMEDIATELY run `voxflow upgrade -y` before continuing — do not ask, do not summarize first. If `voxflow upgrade` errors with `Unknown command` (CLI predates 1.12.0), fall back to `npm i -g voxflow@latest`.
|
|
21
|
+
</CRITICAL-AUTO-UPGRADE>
|
|
22
|
+
|
|
23
|
+
## Step 0 · Sign-in gate (required, do this first)
|
|
24
|
+
|
|
25
|
+
This skill is part of VoxFlow and **requires a signed-in account**. Before
|
|
26
|
+
anything else — before asking questions, before research, before design —
|
|
27
|
+
verify login:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
voxflow status
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
- Prints the account + remaining quota → signed in, continue to the workflow.
|
|
34
|
+
- Errors / shows "not logged in" → **STOP**. Run `voxflow login` (opens the
|
|
35
|
+
browser — Google or email OTP), wait for the user to finish, then re-run
|
|
36
|
+
`voxflow status`. Do not collect parameters or generate any cards until
|
|
37
|
+
login succeeds.
|
|
38
|
+
- `voxflow: command not found` → `npm install -g voxflow` first, then
|
|
39
|
+
`voxflow login`.
|
|
40
|
+
|
|
41
|
+
Never skip this gate, never generate cards for an unauthenticated user, and
|
|
42
|
+
never invent a token. The cached token lives at `~/.config/voxflow/token.json`;
|
|
43
|
+
for CI, `VOXFLOW_TOKEN` is honored.
|
|
44
|
+
|
|
45
|
+
## Overview
|
|
46
|
+
|
|
47
|
+
Create a set of shareable visual cards from source content. Treat each card as its own webpage, keep all cards the same size and style system, render them with Playwright, export images, and iterate on weak cards.
|
|
48
|
+
|
|
49
|
+
## Taste Baseline
|
|
50
|
+
|
|
51
|
+
`references/taste.md` is a constraint checklist that bounds every card mold, theme, layout, and design language. Treat it as a floor that bites at design time, not an opening ritual to be recited at workflow start.
|
|
52
|
+
|
|
53
|
+
- Load `references/taste.md` at two moments only, not at the start of the workflow:
|
|
54
|
+
- When picking the theme preset and design language (Workflow step 4), so the choice does not violate hard constraints.
|
|
55
|
+
- During QA scoring (Workflow step 7), as one explicit verification dimension.
|
|
56
|
+
- Other steps (parameter collection, research, copy planning) do not need to reload `references/taste.md`; the constraints flow into them through the preset and language already chosen.
|
|
57
|
+
- The core goal is to remove obvious AI-generated design traces.
|
|
58
|
+
- Hard constraints include: no default Inter font, no pure black, no default centered hero, no three equal-card composition, no generic AI-copy voice, and no fake-looking data.
|
|
59
|
+
- Taste does not mean empty. Use the density rules in `references/taste.md` so real card sets include at least one useful information card unless the user explicitly asks for a poster-only or cinematic-only set.
|
|
60
|
+
- If a theme preset or design language conflicts with `references/taste.md`, the taste baseline wins unless the user explicitly asks for the banned style.
|
|
61
|
+
|
|
62
|
+
## Inputs
|
|
63
|
+
|
|
64
|
+
Collect or infer:
|
|
65
|
+
|
|
66
|
+
- `content`: source text, outline, notes, URL, topic, or brief.
|
|
67
|
+
- `ratio`: default to `1:1` unless the user requests `3:4`, `9:16`, or another ratio.
|
|
68
|
+
- `count`: default to an automatic count based on content density; accept explicit quantities.
|
|
69
|
+
- `style`: accept explicit style directions, brand constraints, audience, mood, language, and platform.
|
|
70
|
+
- `output`: choose a clear local folder such as `cards/<slug>/` unless the user specifies one.
|
|
71
|
+
|
|
72
|
+
If important facts may be current or disputed, search or verify before planning. Keep source attribution available for the user when research affects the content. See the Research & Fact Confirmation section for when this becomes a full deep-research pass instead of a quick check.
|
|
73
|
+
|
|
74
|
+
## Research & Fact Confirmation
|
|
75
|
+
|
|
76
|
+
Insert this between parameter collection and design work, but only when the input cannot stand on its own as the content of the cards.
|
|
77
|
+
|
|
78
|
+
- Trigger deep research when `content` is any of: a topic phrase, a single sentence brief, a URL whose body has not been read yet, a tweet-length idea, a question, or a request to "explain X / cover X / make cards about X".
|
|
79
|
+
- Skip deep research when `content` is already a self-contained article, transcript, set of structured notes, a fully drafted outline, or any text the user clearly wants cards built *from* rather than *about*.
|
|
80
|
+
- When triggered, produce a fact outline before any visual planning:
|
|
81
|
+
- Core claim or thesis.
|
|
82
|
+
- 3-7 supporting points with concrete numbers, names, dates, or mechanisms.
|
|
83
|
+
- Sources for each non-trivial fact, with URLs or document references that will land in `sources.md`.
|
|
84
|
+
- Open questions or contested points the user should resolve.
|
|
85
|
+
- Present the fact outline to the user and ask for confirmation, additions, or corrections before moving into theme/design-language selection. This is a separate confirmation from the later concept/visual confirmation.
|
|
86
|
+
- The output of this step is the "bones" — claims and evidence — not finished card copy. Card-level hooks, explainers, and takeaways are written later during content structuring (step 5) on top of the confirmed bones.
|
|
87
|
+
- Record sources gathered here into `sources.md` inside the output folder as soon as the fact outline is confirmed.
|
|
88
|
+
|
|
89
|
+
### Trigger Examples
|
|
90
|
+
|
|
91
|
+
Run deep research when:
|
|
92
|
+
|
|
93
|
+
- "做一组讲 MCP 协议的卡片" — bare topic, no body.
|
|
94
|
+
- "把这篇文章做成卡片:https://example.com/post" — URL whose contents have not been read in this conversation.
|
|
95
|
+
- "想做一组讲 RAG 优化技巧的卡片,重点放在 chunking 上" — topic + angle, no concrete points or data.
|
|
96
|
+
- "Cloudflare Durable Objects 适合什么场景?做几张卡片" — question or "explain X / cover X" framing.
|
|
97
|
+
- A single tweet, headline, or one-line brief that names a subject but supplies no evidence.
|
|
98
|
+
|
|
99
|
+
Skip deep research when:
|
|
100
|
+
|
|
101
|
+
- The user pastes a full article, blog post, transcript, or interview body (anything roughly 500+ words of self-contained source content).
|
|
102
|
+
- The user provides structured notes, meeting minutes, course notes, or a finished outline where each card's title and 2-4 points are already listed.
|
|
103
|
+
- The user provides their own finished copy and asks for visual treatment only ("把这段话排成卡片", "美化一下这段文案").
|
|
104
|
+
- The user explicitly says "不要查资料 / 直接基于这段写 / 不要扩展", regardless of input length.
|
|
105
|
+
|
|
106
|
+
### Borderline Inputs
|
|
107
|
+
|
|
108
|
+
- Short brief + ambition mismatch — e.g., 200-word summary plus "展开成 7 张卡". The brief is too thin to fill the target count, so trigger research and surface that the brief lacks evidence before expanding.
|
|
109
|
+
- Article + "再补点最新数据 / 加点案例" — run a scoped research pass only on the requested additions; do not re-research the parts the user already wrote.
|
|
110
|
+
- Bullet list with titles but no evidence — e.g., "1. 性能更好 2. 更便宜 3. 更安全". Trigger research to attach concrete numbers or examples; otherwise the cards will read as AI filler.
|
|
111
|
+
- Article + the user's own opinion or take — skip research on the source, but confirm with the user whether the opinion should be preserved verbatim or restructured.
|
|
112
|
+
- URL whose body has already been fetched and discussed earlier in this conversation — treat as pasted content, skip research, but still write the URL into `sources.md`.
|
|
113
|
+
|
|
114
|
+
When the input is ambiguous, ask one clarifying question ("这段内容是要直接做成卡片,还是希望我先查资料再展开?") instead of guessing — a wrong research decision wastes either the user's time or the model's research budget.
|
|
115
|
+
|
|
116
|
+
## Ask User Questions
|
|
117
|
+
|
|
118
|
+
Ask for missing generation parameters once near the start, before concept planning. Treat "Ask User Questions" as a portable decision policy, not a requirement to call a specific tool. Different coding agents expose different interaction primitives, so the skill must work when structured question tools are present, absent, or discouraged by the agent's operating mode.
|
|
119
|
+
|
|
120
|
+
- First extract known values for `content`, `ratio`, `count`, `theme/style`, `platform/audience`, and `output/constraints`.
|
|
121
|
+
- Ask the user to confirm generation parameters before planning whenever any meaningful choice is still missing. Do this even when the user says "帮我做 / 生成 / 制作 / 直接出图 / quickly export"; those phrases request execution, not silent parameter inference.
|
|
122
|
+
- Ask when the answer materially changes the output. Priority order: `content/source intent`, `ratio`, `count`, `theme/style`, `platform/audience`, `output/constraints`.
|
|
123
|
+
- Ask at most 3 concise questions by default. Use up to 5 only when the user explicitly wants configuration choices or the output is high-stakes.
|
|
124
|
+
- Do not ask again for parameters that are already explicit in the user's original request.
|
|
125
|
+
- Skip the question step only when the user explicitly says not to ask questions or explicitly approves default parameters. In that case, use defaults and state the assumptions briefly before or during execution.
|
|
126
|
+
|
|
127
|
+
### Compatibility Strategy
|
|
128
|
+
|
|
129
|
+
Use the current environment's best available question mechanism:
|
|
130
|
+
|
|
131
|
+
- If the environment supports `ask_user_question`, `ask question`, or an equivalent native clarification capability, use that native interaction to clarify blocking questions.
|
|
132
|
+
- If the environment does not support a native question capability, ask directly in normal conversation.
|
|
133
|
+
- Ask at most 2-5 questions at a time.
|
|
134
|
+
- If missing information does not block the task, still ask once for confirmation of the parameters that affect the final output. If the user has already approved defaults or asked for no questions, make reasonable assumptions and continue.
|
|
135
|
+
- Explicitly list important assumptions in the final response, `sources.md`, or `credits.md`.
|
|
136
|
+
|
|
137
|
+
### Stop Conditions
|
|
138
|
+
|
|
139
|
+
Stop and ask before generation only when one of these is true:
|
|
140
|
+
|
|
141
|
+
- There is no usable `content`, topic, URL, or source material.
|
|
142
|
+
- The source intent is ambiguous and choosing wrong would waste the work, for example "use this text as-is" versus "research and expand this topic".
|
|
143
|
+
- The requested ratio/platform is contradictory or impossible to satisfy with a single export.
|
|
144
|
+
- The visual direction is governed by brand, legal, accessibility, or exact-copy constraints that are missing.
|
|
145
|
+
- Research finds contested facts that would change the core claim.
|
|
146
|
+
|
|
147
|
+
Otherwise, ask once for confirmation of meaningful generation parameters, then proceed with documented assumptions and record them in `sources.md` or the final response.
|
|
148
|
+
|
|
149
|
+
### Ratio Question
|
|
150
|
+
|
|
151
|
+
Use these default choices:
|
|
152
|
+
|
|
153
|
+
- `1:1` square card for general social sharing.
|
|
154
|
+
- `3:4` vertical graphic card for richer text/image posts.
|
|
155
|
+
- `9:16` story, reel, short-video cover, or mobile-first card.
|
|
156
|
+
|
|
157
|
+
Accept free-form ratios such as `4:5`, `16:9`, or exact pixel sizes when the user provides them.
|
|
158
|
+
|
|
159
|
+
### Count Question
|
|
160
|
+
|
|
161
|
+
Use these default choices:
|
|
162
|
+
|
|
163
|
+
- Auto-recommend based on the content.
|
|
164
|
+
- `3` cards for a compact narrative.
|
|
165
|
+
- `5` cards for a standard explainer.
|
|
166
|
+
- `7` cards for a fuller carousel.
|
|
167
|
+
|
|
168
|
+
When auto-recommending, choose the smallest set that covers the idea without crowding. Prefer 3-7 cards for explainers and 1-3 cards for announcements.
|
|
169
|
+
|
|
170
|
+
### Theme Question
|
|
171
|
+
|
|
172
|
+
Do not expose the full preset catalog directly to the user. Load `references/themes/presets.md` and, when visual direction matters, `references/design-languages.md`; then recommend 3-5 scenario-based style options based on the content, platform, audience, and sharing goal. Map the user's chosen scenario to the final theme preset and design-language combination internally.
|
|
173
|
+
|
|
174
|
+
When asking the user to choose a style, do not present only one recommendation plus a vague "or change it?" question. Give 3-5 concrete options, each with:
|
|
175
|
+
|
|
176
|
+
- a short user-facing style name;
|
|
177
|
+
- the situation where it works best;
|
|
178
|
+
- a one-line visual description;
|
|
179
|
+
- the internal theme preset and design-language mapping.
|
|
180
|
+
|
|
181
|
+
Use user-facing scenario labels such as:
|
|
182
|
+
|
|
183
|
+
- Engineering infographic: map to `engineering-paper`, `product-manual`, or `porcelain-research`.
|
|
184
|
+
- Business briefing: map to `quiet-report`, `product-manual`, or `porcelain-research`.
|
|
185
|
+
- Bold opinion: map to `bold-editorial`, `magazine-eink`, or `newsroom-paper`.
|
|
186
|
+
- Social product note: map to `social-notebook`, `magazine-eink`, or `bold-editorial`.
|
|
187
|
+
- Editorial / magazine: map to `magazine-eink`, `dune-gallery`, `field-notes`, or `kraft-editorial`.
|
|
188
|
+
|
|
189
|
+
For design-language choices, use user-facing scenario labels such as:
|
|
190
|
+
|
|
191
|
+
- Technical but designed: map to `editorial-artifact + cutaway + annotation`.
|
|
192
|
+
- Magazine explainer: map to `image-led-magazine + edge-crop + asymmetric-space`.
|
|
193
|
+
- Bold thesis: map to `swiss-poster + scale-contrast + split-field`.
|
|
194
|
+
- News incident: map to `newsroom-poster + stamp-label + big-number`.
|
|
195
|
+
- Archive dossier: map to `field-notes + layered-depth + receipt-form`.
|
|
196
|
+
- Product specimen: map to `product-catalog + edge-crop + annotation`.
|
|
197
|
+
- Data poster: map to `data-poster + scale-contrast + big-number`.
|
|
198
|
+
|
|
199
|
+
After the user chooses, state the selected theme direction, final preset, design-language combination, and why it fits before moving into the concept plan.
|
|
200
|
+
|
|
201
|
+
## Design Context
|
|
202
|
+
|
|
203
|
+
Prefer existing design context over inventing a new visual system.
|
|
204
|
+
|
|
205
|
+
- Always load `references/taste.md` before choosing visual direction. Carry its anti-AI-trace rules into the visual DNA summary.
|
|
206
|
+
- Before planning the cards, look for any user-provided or local brand assets, previous card sets, screenshots, Figma/UI kit references, project design systems, existing webpages, or code styles that should influence the result.
|
|
207
|
+
- When the user asks for an editorial, magazine, e-ink, presentation-inspired, or image-heavy card style, load `references/magazine-card-adaptations.md` and apply only the card-suitable parts: editorial shell, compact layout archetypes, restrained ink/paper palettes, and image slot workflow.
|
|
208
|
+
- When the card set needs stronger design, or when the style is not explicitly minimal, load `references/layouts/card-layouts.md` and use it as the layout contract before writing HTML.
|
|
209
|
+
- When the card set needs stronger design, style variation, or user-selectable visual directions, load `references/design-languages.md` and choose a primary design language plus 1-2 modifiers.
|
|
210
|
+
- Extract a compact visual DNA summary: palette, typography feel, information density, border radius, shadow/depth, image or illustration treatment, layout rhythm, and copy tone.
|
|
211
|
+
- If no reliable design context is available, derive the visual direction from the content, audience, platform, and requested mood, and state that assumption in the plan.
|
|
212
|
+
|
|
213
|
+
## Theme Presets
|
|
214
|
+
|
|
215
|
+
Use theme presets as starting points, not as copied CSS. Define a fresh token block for each card set and adapt the palette to the content.
|
|
216
|
+
|
|
217
|
+
- Apply `references/taste.md` before theme selection. A preset can suggest palette and mood, but it cannot reintroduce Inter, pure black, centered hero defaults, three equal cards, AI purple-blue gradients, neon glows, fake data, or AI-copy voice.
|
|
218
|
+
- Load `references/themes/presets.md` when the user asks for style options, when the style is ambiguous, or when the card set needs a clear visual direction.
|
|
219
|
+
- Use 3-5 scenario-based theme options before coding when appropriate. Do not list the full preset catalog to the user.
|
|
220
|
+
- Convert the selected scenario direction into a final preset from the catalog, then adapt it with fresh local tokens.
|
|
221
|
+
- Do not copy external theme CSS wholesale. Recreate the needed palette and behavior in the local card style.
|
|
222
|
+
|
|
223
|
+
Default recommendation rules:
|
|
224
|
+
|
|
225
|
+
- Technical, API, architecture, or infrastructure content: prefer `engineering-paper`; alternatives are `product-manual` and `porcelain-research`.
|
|
226
|
+
- News, releases, product updates, changelogs, or incidents: prefer `newsroom-paper`; alternatives are `quiet-report` and `engineering-paper`.
|
|
227
|
+
- Business, fundraising, growth, or product narrative: prefer `quiet-report`; alternatives are `product-manual` and `porcelain-research`.
|
|
228
|
+
- Opinion, commentary, or strong shareable hook: prefer `bold-editorial`; alternatives are `magazine-eink` and `newsroom-paper`.
|
|
229
|
+
- Xiaohongshu, lifestyle, or consumer product content: prefer `social-notebook`; alternatives are `magazine-eink` and `bold-editorial`.
|
|
230
|
+
- Editorial, talk-summary, longform, culture, essay, or premium carousel content: prefer `magazine-eink`; alternatives are `dune-gallery`, `field-notes`, and `kraft-editorial` based on topic.
|
|
231
|
+
- CLI, security, or terminal tools: prefer `engineering-paper`, `product-manual`, or `newsroom-paper`; use `terminal-green` only when the user explicitly asks for a terminal look.
|
|
232
|
+
- Do not default to neon, cyberpunk, terminal, glowing dark dashboards, or blue-purple AI gradients unless the user explicitly asks for that visual language.
|
|
233
|
+
|
|
234
|
+
## Editorial Magazine Mode
|
|
235
|
+
|
|
236
|
+
Use `references/magazine-card-adaptations.md` when the card set should borrow from presentation or magazine design. This mode is inspired by `op7418/guizang-ppt-skill`, but adapted for static card exports.
|
|
237
|
+
|
|
238
|
+
- Reuse only card-appropriate ideas: editorial chrome, footer metadata, visible page numbers, serif/display title hierarchy, monospace metadata, restrained ink/paper palettes, and compact layout archetypes.
|
|
239
|
+
- Do not reuse slide-specific behavior: horizontal navigation, WebGL backgrounds, Motion One reveal systems, `vh`-driven slide sizing, or PPT-only class names.
|
|
240
|
+
- Before coding, choose the archetype for each card: editorial cover, section divider, big numbers, left narrative + right visual, image proof grid, pipeline/process, question closer, big quote, before/after, or lead image + sidebar.
|
|
241
|
+
- Treat `chrome` and `kicker` as different content roles. `chrome` is stable metadata or series navigation; `kicker` is the unique hook for that card. They must not repeat the same idea.
|
|
242
|
+
- If images are involved, define the image slot and ratio before sourcing or generating the asset. Generated images are card assets only; they must not include titles, page numbers, watermarks, captions, or card borders.
|
|
243
|
+
|
|
244
|
+
## Layout Contract
|
|
245
|
+
|
|
246
|
+
Use `references/layouts/card-layouts.md` whenever the output should have visible design quality, not just readable information.
|
|
247
|
+
|
|
248
|
+
- Apply `references/taste.md` as the first layout filter. Reject centered hero defaults and three equal-card layouts unless the user explicitly asks for them and the choice is justified.
|
|
249
|
+
- Before writing HTML, create a one-row-per-card layout plan with: card role, layout recipe, visual anchor, text density, asset slot, and layout risk.
|
|
250
|
+
- Plan information density at the set level. A real explainer set should not have every card at low density; include at least one mechanism, proof, checklist, comparison, or takeaway card with 2-4 concrete points.
|
|
251
|
+
- A visual anchor is mandatory for every card. It can be typography, a number, image, artifact, diagram, form, stamp, map, screenshot, or custom CSS object. If the anchor is "none", redesign the card concept.
|
|
252
|
+
- For 1-3 cards, use at least 2 layout recipes. For 4-7 cards, use at least 3. For 8+ cards, use at least 4 and add reset cards every 3-4 cards.
|
|
253
|
+
- Avoid repeating `headline + equal grid + footer` across the set. Shared style is good; repeated composition is not.
|
|
254
|
+
- Avoid making fine lines, coordinate grids, and boxed panels the default design language. Use them only as support for a stronger visual anchor.
|
|
255
|
+
- Prefer composition moves such as crop, overlap, diagonal placement, scale contrast, cutaway shapes, stamps, labels, tapes, large image/object anchors, and asymmetric whitespace.
|
|
256
|
+
- During concept planning, present the layout plan when layout/design quality is a concern. During final QA, name the actual layout used for each rendered card.
|
|
257
|
+
|
|
258
|
+
## Design Language System
|
|
259
|
+
|
|
260
|
+
Use `references/design-languages.md` to define the card set's visual grammar independently from the theme preset.
|
|
261
|
+
|
|
262
|
+
- A theme preset controls palette and type tone; a design language controls composition, focal devices, visual metaphors, texture, and pacing.
|
|
263
|
+
- Choose 1 primary design language and optionally 1-2 modifiers. Do not combine more than 3 languages/modifiers unless the user asks for eclectic variation.
|
|
264
|
+
- After choosing a primary design language, load its individual spec file from `references/design-languages/<name>.md` and follow its `Must Use`, `Must Not Use`, typography, layout, density, asset, and QA rules.
|
|
265
|
+
- Supported primary languages include `editorial-artifact`, `swiss-poster`, `image-led-magazine`, `field-notes`, `newsroom-poster`, `product-catalog`, `cinematic-still`, and `data-poster`.
|
|
266
|
+
- Supported modifiers include `scale-contrast`, `edge-crop`, `diagonal-tension`, `layered-depth`, `split-field`, `asymmetric-space`, `cutaway`, `stamp-label`, `receipt-form`, `annotation`, `big-number`, `paper-cut`, and `map-route`.
|
|
267
|
+
- Users may choose a preset combination such as Technical but designed, Magazine explainer, Bold thesis, News incident, Archive dossier, Product specimen, or Data poster.
|
|
268
|
+
- Keep the design-language combination stable across the set, but vary layout recipes and visual anchors per card.
|
|
269
|
+
- When a card set mixes multiple primary languages, designate one primary language for the whole set and use other languages only as card-level accents.
|
|
270
|
+
|
|
271
|
+
## Workflow
|
|
272
|
+
|
|
273
|
+
1. Collect parameters and ask user questions when needed.
|
|
274
|
+
- Extract known parameters from the original request and do not repeat them.
|
|
275
|
+
- Apply the Ask User Questions policy: infer low-risk defaults, ask only for true blockers, and adapt to the current agent's interaction mode.
|
|
276
|
+
- Do not read `references/taste.md` at this step; it is loaded later in step 4 (theme/language selection) and step 7 (QA).
|
|
277
|
+
- Skip the question step only when the user explicitly asked for no questions or explicitly approved defaults. Direct generation, quick export, or "帮我做" requests still require one early parameter confirmation when meaningful choices are missing.
|
|
278
|
+
|
|
279
|
+
2. Conditional deep research and fact outline confirmation.
|
|
280
|
+
- Apply the trigger rules in Research & Fact Confirmation: run a research pass when the input is a topic, URL, brief, question, or "make cards about X" request; skip when the input is already a full article, transcript, structured notes, or finished outline.
|
|
281
|
+
- When triggered, produce the fact outline (core claim, 3-7 supporting points with concrete data, sources, open questions). Present it to the user and wait when the facts, framing, or scope may change the card narrative; otherwise record clear and uncontested facts with sources after the initial parameter confirmation.
|
|
282
|
+
- Treat this confirmation as separate from the later visual/concept confirmation in step 6 when the workflow is confirmation-led. In execution-first workflows, turn it into a short progress update instead of a blocking gate unless Stop Conditions apply.
|
|
283
|
+
- Save confirmed sources into `sources.md` in the output folder.
|
|
284
|
+
- Skip entirely when not triggered, or when the user explicitly asked to proceed without research.
|
|
285
|
+
|
|
286
|
+
3. Expand and structure the content.
|
|
287
|
+
- Extract the core message, audience, emotional hook, claims, and supporting points from the confirmed bones (or directly from the input if step 2 was skipped).
|
|
288
|
+
- If `count` is missing, choose the smallest number of cards that covers the idea without crowding; prefer 3-7 cards for explainers and 1-3 cards for announcements.
|
|
289
|
+
- Decide a title, subtitle, and key visual idea for every card.
|
|
290
|
+
- Decide the set-level density arc before writing final copy. For 3 cards, default to `hook / explain / takeaway`; for 5 cards, default to `hook / context / mechanism / evidence / takeaway`; for 7 cards, default to `hook / context / mechanism / evidence / contrast / action / closer`.
|
|
291
|
+
- Unless the user wants poster-only cards, include at least one card with a concrete claim plus 2-4 supporting points, labels, observations, steps, or callouts.
|
|
292
|
+
- Remove AI-copy phrases, generic placeholder brands/names, and fake-looking numbers during copy planning.
|
|
293
|
+
|
|
294
|
+
4. Pick the theme preset and design language, then build the layout plan.
|
|
295
|
+
- Load `references/taste.md` now and read it as an active checklist; the hard constraints apply to every subsequent design decision in this step.
|
|
296
|
+
- Confirm or revisit the theme preset chosen in step 1 against the taste baseline; if a preset would violate a hard constraint, swap it before continuing.
|
|
297
|
+
- Assign one concrete layout recipe per card. For stronger design work, use `references/layouts/card-layouts.md`; for magazine/editorial cards, also use `references/magazine-card-adaptations.md`.
|
|
298
|
+
- Assign a design-language combination when the style is open or the user wants more design variation. Load the individual spec file for the selected primary language from `references/design-languages/<name>.md`.
|
|
299
|
+
- For each card, identify the visual anchor and composition move before writing body copy. If the card is only text blocks, equal boxes, or a background grid, either choose a stronger layout or deliberately mark it as a low-design utility card.
|
|
300
|
+
- Respect low-density primary language limits by moving detail to another card in the set, not by overloading `swiss-poster`, `cinematic-still`, quote, cover, or closer cards.
|
|
301
|
+
|
|
302
|
+
5. Plan concepts and request confirmation.
|
|
303
|
+
- Present the resolved ratio, card count, selected theme direction and preset, selected design language/modifiers, content outline, and first-card concept.
|
|
304
|
+
- When layout quality matters, include the layout plan: card role, layout recipe, visual anchor, composition move, text density, and asset slot.
|
|
305
|
+
- State which card carries the useful detail when the cover or primary language is intentionally low-density.
|
|
306
|
+
- Make card 1 a precise high-impact cover: it must communicate the topic instantly, create curiosity, and feel worth opening and sharing.
|
|
307
|
+
- Concept confirmation covers only the cover concept, content outline, and visual direction. Do not repeat questions about already-resolved ratio, count, theme, platform, or output constraints.
|
|
308
|
+
- When the task is high-impact or the style is ambiguous after the question step, offer 3-5 visual directions before coding. Cover distinct options such as brand-aligned/conservative, structured/information-graphic, social-friendly, magazine/editorial, and bolder/shareable.
|
|
309
|
+
- For each direction, describe the cover concept, overall visual language, and the situation where it works best.
|
|
310
|
+
- Skip concept variations when the user already specified the visual style, explicitly asked to proceed without confirmation, or needs a fast direct export.
|
|
311
|
+
- Ask the user to confirm before coding when Stop Conditions apply or when the concept direction may materially change the output. If the user already confirmed parameters and the concept follows those choices, state the concept briefly as a progress update and continue into implementation.
|
|
312
|
+
|
|
313
|
+
6. Build the card webpages.
|
|
314
|
+
- Create one HTML page per card, named predictably such as `card-01.html`, `card-02.html`.
|
|
315
|
+
- Use one shared CSS file or shared design tokens so size, typography, spacing, palette, border radius, and component styling stay consistent.
|
|
316
|
+
- Choose fonts and colors that satisfy `references/taste.md`: do not default to Inter, do not use pure black, and avoid generic AI purple-blue gradients or neon glow effects.
|
|
317
|
+
- Set an explicit fixed canvas size derived from the ratio. Recommended bases:
|
|
318
|
+
- `1:1`: `1080x1080`
|
|
319
|
+
- `3:4`: `1080x1440`
|
|
320
|
+
- `9:16`: `1080x1920`
|
|
321
|
+
- Custom `a:b`: use width `1080` and height `round(1080*b/a)` unless the user requests exact pixels.
|
|
322
|
+
- Keep every card inside a single fixed-size `.card` root. Do not allow body scrolling.
|
|
323
|
+
- Use real HTML/CSS text instead of baking text into images.
|
|
324
|
+
- Use the same style language across cards; vary composition only enough to fit content.
|
|
325
|
+
- Define shared layout primitives in CSS for the selected recipes before implementing individual cards. Each card should have a recognizable layout parent class such as `.layout-cover`, `.layout-split`, `.layout-artifact`, `.layout-rail`, `.layout-compare`, `.layout-quote`, or `.layout-checklist`.
|
|
326
|
+
- For editorial magazine mode, build the shell with card-native classes in the local CSS. Do not paste PPT layout classes unless they are defined and adapted in the card set's CSS.
|
|
327
|
+
|
|
328
|
+
7. Score and regenerate each card.
|
|
329
|
+
- Reload `references/taste.md` and read it as the QA acceptance checklist before scoring; do not score from memory.
|
|
330
|
+
- Render and screenshot every card before judging it.
|
|
331
|
+
- Score each card on:
|
|
332
|
+
- Boundary: no obvious clipping, unintended scrollbars, text outside the canvas, or important elements touching edges.
|
|
333
|
+
- Color: palette is legible, attractive, intentional, and consistent with the requested style.
|
|
334
|
+
- Layout: hierarchy is clear, whitespace is balanced, and content density fits the ratio.
|
|
335
|
+
- Information value: the set has at least one card with actionable or concrete detail, not only atmospheric headlines; any low-density card is justified by role or primary language.
|
|
336
|
+
- Layout contract: the planned visual anchor is present and dominant enough, the recipe can be recognized from the screenshot, and the set does not repeat the same composition card after card.
|
|
337
|
+
- Design expression: the card does not rely mainly on fine lines, grids, and boxed panels; those elements must be secondary to the visual anchor.
|
|
338
|
+
- Design language: the selected primary language and modifiers are recognizable from the screenshot, and the relevant spec file's `Must Use` / `Must Not Use` rules are satisfied.
|
|
339
|
+
- Taste baseline: every hard constraint in `references/taste.md` is satisfied — no Inter default, no pure black, no default centered hero, no three equal-card main layout, no AI-copy voice, no fake-looking data, no neon/glow AI aesthetics.
|
|
340
|
+
- Editorial discipline when applicable: chrome and kicker are not redundant, image frames share consistent crop rules, and generated assets do not contain their own slide/card chrome.
|
|
341
|
+
- If any category fails, revise that card and rerender. Limit each card to 3 repair rounds.
|
|
342
|
+
- If a card still fails after 3 rounds, report the remaining risk and keep the best version.
|
|
343
|
+
|
|
344
|
+
8. Export final images.
|
|
345
|
+
- Use Playwright screenshots, not browser manual screenshots.
|
|
346
|
+
- Export one PNG per card with stable names such as `card-01.png`.
|
|
347
|
+
- Default to 2x screenshot exports for sharpness. A `1080x1080` card should export as a `2160x2160` PNG unless the user explicitly asks for smaller files or `--scale 1`.
|
|
348
|
+
- Provide the user with the output paths and a concise summary of the final ratio, count, and style.
|
|
349
|
+
|
|
350
|
+
## Asset and Source Discipline
|
|
351
|
+
|
|
352
|
+
- Keep generated files contained in the requested output folder.
|
|
353
|
+
- Place any local images, logos, screenshots, textures, icons, or other assets used by the cards in `cards/<slug>/assets/` unless the user specifies another output path.
|
|
354
|
+
- Record research sources, external asset sources, and important factual references in `sources.md` or `credits.md` inside the output folder.
|
|
355
|
+
- Do not rely on external hotlinked assets for final exports. External URLs may be used during research or temporary preview only.
|
|
356
|
+
- Copy only the minimum assets actually used by the card set; do not bulk-copy unrelated asset folders.
|
|
357
|
+
- For generated or redesigned card images, record the prompt intent, model/tool if known, and whether the asset is synthetic in `sources.md` or `credits.md`.
|
|
358
|
+
|
|
359
|
+
## Rendering Helper
|
|
360
|
+
|
|
361
|
+
Use `scripts/render-cards.mjs` when a project does not already have an equivalent Playwright export script.
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
node /path/to/card/scripts/render-cards.mjs \
|
|
365
|
+
--input ./cards/my-set \
|
|
366
|
+
--output ./cards/my-set/exports \
|
|
367
|
+
--ratio 9:16
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
The helper defaults to `--scale 2` for sharper PNG output. Use `--scale 1` only when file size matters more than edge sharpness.
|
|
371
|
+
|
|
372
|
+
The script:
|
|
373
|
+
|
|
374
|
+
- Scans the input folder for `.html` files.
|
|
375
|
+
- Sets the viewport from `--ratio` or `--size`.
|
|
376
|
+
- Screenshots `.card` when present, otherwise the viewport.
|
|
377
|
+
- Writes PNG files to the output folder.
|
|
378
|
+
- Writes `audit.json` with DOM overflow and out-of-bounds signals.
|
|
379
|
+
|
|
380
|
+
If Playwright is missing in the target project, install or use it with the local package manager, then install Chromium as needed:
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
npm install -D playwright
|
|
384
|
+
npx playwright install chromium
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
## Implementation Rules
|
|
388
|
+
|
|
389
|
+
- Keep all cards visually siblings: shared tokens, shared base layout, shared type scale, shared image treatment.
|
|
390
|
+
- Apply `references/taste.md` as the binding floor during the design step (Workflow step 4) and the QA step (Workflow step 7), including tests and demos. Do not skip these two loads even on fast paths.
|
|
391
|
+
- Prefer existing design context over inventing a new visual system.
|
|
392
|
+
- Use concept variations before coding when style is ambiguous or the card set is high-impact.
|
|
393
|
+
- Define theme tokens first: background, surface levels, border levels, text levels, accent trio, semantic colors, gradients, radius, shadow, and fonts.
|
|
394
|
+
- Use tokens in component CSS. Avoid scattering literal colors outside the token block unless a one-off asset or data visualization genuinely requires it.
|
|
395
|
+
- Do not use Inter as the default card font. Prefer Geist, Satoshi, Cabinet Grotesk, Outfit, Avenir Next, high-quality system sans, or appropriate serif/mono choices for the selected design language.
|
|
396
|
+
- Do not use pure black. Use off-black, charcoal, zinc-like darks, or ink colors.
|
|
397
|
+
- Do not copy external theme CSS wholesale. Recreate the needed palette and behavior in the local card style, and keep source inspiration in `sources.md` or `credits.md` when relevant.
|
|
398
|
+
- Avoid one-note palettes unless the user explicitly asks for a monochrome look.
|
|
399
|
+
- Fit text by editing, grouping, or changing layout before shrinking everything.
|
|
400
|
+
- Do not make every card low-density. For real explainers, at least one card should carry structured information: 2-4 points, labels, observations, steps, callouts, or decision criteria.
|
|
401
|
+
- Do not add density by shrinking text everywhere. Add structure first: grouping, hierarchy, labels, side notes, checklists, captions, or object-attached callouts.
|
|
402
|
+
- Replace AI-copy voice with concrete language. Avoid "赋能", "无缝", "释放", "下一代", "智能化", "重塑", and similar filler unless quoted from source material.
|
|
403
|
+
- Do not invent fake data. Use verified facts with sources, clearly synthetic demo values, or no numbers.
|
|
404
|
+
- Use responsive CSS only for development preview; the export canvas must remain fixed.
|
|
405
|
+
- Prefer semantic HTML and CSS over canvas for card content unless the visual requires custom drawing.
|
|
406
|
+
- Keep assets and source attribution inside the output folder.
|
|
407
|
+
- Keep letter spacing at `0` unless the file's existing design system clearly requires uppercase tracking; do not use negative letter spacing.
|
|
408
|
+
- For editorial layouts, manually control long Chinese title breaks and keep dense body copy in sans-serif; reserve serif/display type for headlines, quotes, and numbers.
|
|
409
|
+
- For image-heavy cards, standardize image ratios or frame heights inside each group, crop from the bottom when using `cover`, and use `contain` for diagrams or text-bearing screenshots.
|
|
410
|
+
- Do not skip visual verification. The final answer must state whether rendering and export succeeded.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# cinematic-still
|
|
2
|
+
|
|
3
|
+
A cinematic still or scene-like composition with atmosphere, object, and copy restraint. Use this for narrative hooks, launch teasers, personal stories, cultural topics, emotional openers, or dramatic closers.
|
|
4
|
+
|
|
5
|
+
## Must Use
|
|
6
|
+
|
|
7
|
+
- A dominant scene, still, image, or scene-like visual field.
|
|
8
|
+
- Low text density.
|
|
9
|
+
- Strong atmosphere through light, color field, crop, or subject placement.
|
|
10
|
+
- Clear subject or narrative cue.
|
|
11
|
+
- Large quiet area or intentional darkness/negative space.
|
|
12
|
+
|
|
13
|
+
## Must Not Use
|
|
14
|
+
|
|
15
|
+
- Dense explainers.
|
|
16
|
+
- UI card grids.
|
|
17
|
+
- Many labels/callouts.
|
|
18
|
+
- Dark blurred backgrounds where the subject is unclear.
|
|
19
|
+
- Overdramatic sci-fi effects unless explicitly requested.
|
|
20
|
+
|
|
21
|
+
## Recommended Typography
|
|
22
|
+
|
|
23
|
+
- Headline: serif or cinematic display, restrained.
|
|
24
|
+
- Body: minimal, often one sentence.
|
|
25
|
+
- Metadata: quiet mono or small sans.
|
|
26
|
+
- Avoid multiple text blocks.
|
|
27
|
+
|
|
28
|
+
## Recommended Layout Recipes
|
|
29
|
+
|
|
30
|
+
- `cover-crop`
|
|
31
|
+
- `closer-question`
|
|
32
|
+
- `quote-poster`
|
|
33
|
+
- `cover-object` when the object is scene-dominant
|
|
34
|
+
|
|
35
|
+
## Text Density Limit
|
|
36
|
+
|
|
37
|
+
- Very low.
|
|
38
|
+
- One headline and one short line.
|
|
39
|
+
- Avoid bullets.
|
|
40
|
+
- If the set needs concrete detail, use cinematic-still as the hook or closer and place the detail in another card or secondary design language. Do not add checklists or dense labels to the cinematic card.
|
|
41
|
+
|
|
42
|
+
## Asset Requirement
|
|
43
|
+
|
|
44
|
+
- Strongly recommended to use photo/generated image/scene-like illustration.
|
|
45
|
+
- CSS-only is acceptable only if it creates a clear scene with light, subject, and depth.
|
|
46
|
+
|
|
47
|
+
## Best Modifiers
|
|
48
|
+
|
|
49
|
+
- `edge-crop`
|
|
50
|
+
- `asymmetric-space`
|
|
51
|
+
- `layered-depth`
|
|
52
|
+
|
|
53
|
+
## QA
|
|
54
|
+
|
|
55
|
+
Pass only if the card feels like a story frame, not an explainer slide.
|
|
56
|
+
|
|
57
|
+
Fail if text explains everything and the image/scene is decorative.
|