一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
· 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
· 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
· 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
横向流程图每步写清页面/功能/操作/完成判据。
· 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
· 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
· 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。
二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。
三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
open-design-landing
Reusable design template that produces a world-class editorial landing page in the Atelier Zero design language — the warm-paper, italic-serif, collage-on-grid aesthetic shared by Monocle, Apartamento, and Études.
The template is parameterized: fill one typed inputs.json, run one
script, get a self-contained HTML file. Optionally generate 16 surreal
collage assets with gpt-image-2, or fall back to paper-textured SVG
placeholders so the layout still feels intentional with zero image
budget.
Read first — the agent contract, inputs schema, and self-check live in
SKILL.md. This README is the human quick-start.
30-second tour
# 1. Paper-textured placeholders so the layout renders immediately.
npx tsx scripts/placeholder.ts ./out/assets/
# 2. Compose the standalone HTML from the worked example.
npx tsx scripts/compose.ts inputs.example.json ./out/index.html
# 3. Open it.
open ./out/index.html
That's it. Three commands, full editorial landing page, no API keys.
To brand it for yourself, copy inputs.example.json to inputs.json,
edit the fields (the schema is self-documenting — see
schema.ts), and re-run step 2.
The three image strategies
| Strategy | Cost | Latency | When |
|---|---|---|---|
placeholder |
$0 | <1s | First pass, demo, internal review. |
generate |
~$0.40 | ~6 min | Final delivery; original collage plates. |
bring-your-own |
$0 | 0s | You have art direction PNGs ready to drop in. |
Set inputs.imagery.strategy to one of the three.
# generate mode (requires FAL_KEY in env)
FAL_KEY=fal-... npx tsx scripts/imagegen.ts inputs.json --out=./out/assets/
Without FAL_KEY, the imagegen script prints the prompts so you can
route them through the /gpt-image-fal slash-command skill manually.
Layout at a glance
8 numbered Roman-numeral sections, all responsive at 1280 / 1080 / 880 / 560:
I. Hero — display headline + 3 stat rings + 4-step index + collage plate
II. About — manifesto + studio stamp + tilted side-note
III. Capabilities — 4 cards (skills / systems / adapters / BYOK) + ribbon
IV. Labs — 5 portrait cards + filter pills + progress bar
V. Method — 4 numbered steps with thumbnails on hairline timeline
VI. Selected work — dark slab, 2 tilted cards (one rotated -1.2°, one +2.4°)
VII. Testimonial — pull quote + 5 partner glyphs
VIII. CTA — closing pitch + ribbon + email pill
Footer — 4 link columns + huge italic-serif kicker word
Every section has scroll-reveal motion (IntersectionObserver, respects
prefers-reduced-motion).
Files
design-templates/open-design-landing/
├── SKILL.md # ← agent contract (read this first)
├── README.md # ← you are here
├── schema.ts # typed inputs (single source of truth)
├── styles.css # Atelier Zero stylesheet (single source of truth)
├── inputs.example.json # OpenDesign as the worked example
├── example.html # canonical rendering, regenerable from inputs.example.json
├── scripts/
│ ├── compose.ts # inputs.json + styles.css → index.html
│ ├── imagegen.ts # gpt-image-2 wrapper (fal.ai backend)
│ └── placeholder.ts # SVG paper-textured frames
└── assets/
├── *.png # 16 collage plates (OpenDesign instance)
├── image-manifest.json # slot → file / dimensions / prompt mapping
└── imagegen-prompts.md # human-readable prompt pack
Regenerate the canonical example
After editing styles.css, schema.ts, or inputs.example.json:
npx tsx scripts/compose.ts inputs.example.json example.html
The example.html in this folder is the pre-rendered known-good demo —
useful as a visual reference and for QA against the live composer
output.
Migrating from editorial-collage
This design template replaces the older editorial-collage skill:
- Path:
skills/editorial-collage/→design-templates/open-design-landing/. - Shared assets: downstream paths such as
../editorial-collage/assets/(for example from the slide-deck template) should use../open-design-landing/assets/— seeopen-design-landing-deck.
See also
design-systems/atelier-zero/DESIGN.md— colors, type, motion tokens.design-templates/open-design-landing-deck/— sibling template that produces a slide deck in the same visual language.