mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
* feat(skills): open-design-landing rename, kami skills, landing OG - Rename editorial-collage skills to open-design-landing and -deck; refresh examples and compose script layout - Add kami-deck and kami-landing skills with HTML examples - Landing page: og.astro, index wiring, and style tweaks; package.json bump - Web i18n: German and Russian copy for renamed and new skills - Daemon test: update skill-asset-rewrite expectations for new paths - Design systems: README and atelier-zero doc touch-ups - Cross-skill SKILL.md reference updates Co-authored-by: Cursor <cursoragent@cursor.com> * docs(landing-page): document version-slot invariant and deprecation timeline Address P3 review notes on PR #428: - Note the `data-github-version` wrapper invariant (version string only) near the canonical URL block in `app/page.tsx`. - Expand the `formatVersion` helper comment in `app/pages/index.astro` with concrete `release.name` / `tag_name` example shapes for each branch of the regex fallback. - Tighten the `EditorialCollageDeckInputs` deprecation in `skills/open-design-landing-deck/schema.ts` to a specific removal version (v0.4.0) and add a "Migrating from editorial-collage-deck" section to the skill README. Generated-By: looper 0.4.0 (runner=fixer, agent=claude-code) * docs(landing-page, skills): clarify version slot script and rename migrations - Describe GitHub version slots as driven by the inline enhancement script, not React hydration. - Add editorial-collage → open-design-landing migration notes; fix README link copy (Astro static landing app). - Extend deck README migration table with shared asset path renames. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(daemon): alias deprecated editorial-collage skill ids The PR renames the editorial-collage / editorial-collage-deck skills to open-design-landing / open-design-landing-deck, but the daemon persists exact skill_id strings on projects and resolves them via listSkills().find((s) => s.id === storedId). After the rename, any project saved against an old id silently composes without the intended skill prompt because the listing no longer exposes that id. Add a SKILL_ID_ALIASES map in skills.ts plus a findSkillById() helper that rewrites deprecated ids to their current canonical form, then route every server-side lookup (skill detail, example HTML, asset proxy, system-prompt composer) through it. Cover the alias map, the resolver, and end-to-end resolution against a temp skills directory with a regression test. Generated-By: looper 0.4.0 (runner=fixer, agent=claude-code) * fix(kami-deck): route host od:slide messages through local go() The host bridge classifies kami-deck as class-driven because go() toggles .slide.active, but the visible slide is moved by deck.style.transform which the bridge cannot drive. Listen for od:slide messages and dispatch them through the local go() so toolbar next/prev and initialSlideIndex restore actually shift the deck. Generated-By: looper 0.4.0 (runner=fixer, agent=claude-code) * fix(kami-deck): sync deck transform with host-driven .active changes The previous fix added a local od:slide listener but the host bridge in apps/web/src/runtime/srcdoc.ts also listens for the same message and calls setActive() (toggles .slide.active) without driving the deck transform. Both listeners fired, the bridge re-read the just-toggled active class, and overshot by one — and the bridge's restoreInitialSlide path could move .active without a message at all, leaving the deck on the original transform. Stop the bridge from double-handling by calling stopImmediatePropagation in the local listener (registered first because the bridge script is appended to </body>), and add a MutationObserver that pulls the deck transform onto whichever slide currently carries .active so the bridge's direct setActive calls (notably the initial-slide restore) move the deck too. Generated-By: looper 0.4.0 (runner=fixer, agent=claude-code) * fix(i18n): align French content with renamed/new skills PR #434 (French localization) merged into main with French copy for the old editorial-collage / editorial-collage-deck skill ids; this branch renamed those to open-design-landing / open-design-landing-deck and added kami-deck and kami-landing. Update content.fr.ts to track the rename and add French copy for the new kami skills so the LOCALIZED_CONTENT_IDS coverage test passes once main is merged. Generated-By: looper 0.4.0 (runner=fixer, agent=claude-code) * fix(open-design-landing-deck): sync deck transform with host-driven .active changes Apply the same fix that landed in skills/kami-deck/example.html (commits |
||
|---|---|---|
| .. | ||
| example.html | ||
| README.md | ||
| SKILL.md | ||
kami-deck
Sister skill to kami-landing. Produces a single
self-contained HTML file: a horizontal magazine-style swipe deck in
the kami (紙 / 纸) design system — print rhythm, ink-blue accent,
serif at one weight, no italic, no cool grays.
Read first — agent contract, schema, and self-check live in
SKILL.md. This README is the human quick-start.
What you get
- N viewport-sized slides laid out horizontally on a transformed flex track.
- Cover / chapter / end slides flip background to ink-blue
(
#1B365D) with ivory text. All other slides stay on parchment (#f5f4ed) with serif at weight 500. - Per-slide chrome strip: brand mark · deck title · live
slide counter (
01 / 09). - Tabular-nums on every counter, metric, and date.
- Ink-blue progress bar at the bottom that fills as you advance.
- Dot indicator near the bottom; click to jump.
- ESC overview grid with scaled thumbnails.
- Keyboard / wheel / touch nav — same model as
guizang-ppt. - Multilingual stack — EN / zh-CN / ja, set on
:rootvia thelanguageparameter.
30-second tour
The skill is "agent-driven, no script": there's no compose.ts. The
agent reads SKILL.md, gathers the brief, then writes
out/index.html directly using the tokens from
design-systems/kami/DESIGN.md
and the layout primitives in example.html.
To preview the canonical Open Design instance:
open example.html
To start a fresh project:
- Open the skill in your agent (Claude · Cursor · Codex · …).
- Answer two rounds of brief questions (identity + content).
- Write the file. Done.
Files
skills/kami-deck/
├── SKILL.md # ← agent contract (read this first)
├── README.md # ← you are here
└── example.html # canonical Open Design rendering (9 slides)
Boundaries
- No second accent color. No italic. No cool blue-grays. No hard drop shadows.
- One self-contained HTML file. No router, no external JS bundle.
- Cover / chapter / end slides only — no other slide kind goes dark.
- Tag fills must be solid hex (kami's print invariant), not
rgba().
See also
kami-landing— long-form one-pager sister.design-systems/kami/DESIGN.md— token spec.open-design-landing-deck— same swipe nav model, different visual language (Atelier Zero).- Upstream:
tw93/kami— original Claude skill (MIT) the design system adapts.