Skip to content
Development
Skill

/pastiche-setup

Use when bootstrapping pastiche for first-time adoption (post-`/pastiche-init`) — fills `KNOWLEDGE.md` and seeds `[GENERAL]` `WISDOM.md` rules section by section. Resumable across sessions; re-invoke to continue.

From plugin
pastiche
412 skills3 agents

Claude Code

$ npx -y skills add retz8/pastiche --skill pastiche-setup --agent claude-code

SKILL.md

pastiche-setup.SKILL.md
name: pastiche-setup
description: Use when bootstrapping pastiche for first-time adoption (post-`/pastiche-init`) — fills `KNOWLEDGE.md` and seeds `[GENERAL]` `WISDOM.md` rules section by section. Resumable across sessions; re-invoke to continue.

Pastiche — setup

Resumes from `setup_progress` in `pastiche/config.yaml`. Unit of work is one section per turn; within a section, draft candidates as a numbered list, confirm in natural language, write once after agreement.

Preflight

1. Read `pastiche/config.yaml`. On parse failure: print the parser error verbatim and stop — *"Fix the YAML and re-invoke."* 2. Read `pastiche/FACT.md`. If empty or missing, stop: *"`pastiche/FACT.md` is empty or missing. Run `/pastiche-sync` (or re-run `/pastiche-init`) and re-invoke."* 3. **Re-derive `setup_progress` from files** (the file is the source of truth; config is the cache). For each KNOWLEDGE section: marker still present → `stub`, otherwise `done`. For `general-wisdom`: any `[GENERAL]` bullet present in `pastiche/WISDOM.md` → `done`, otherwise `stub`. Update config silently.

Lint

Every lint call below: shell `pastiche-lint` (on PATH via plugin `bin/` — do not search for it), cwd = repo root. Forward stdout; on non-zero exit, also forward stderr. Don't revert; don't abort.

First run vs. returning run

If every `setup_progress` entry is `stub`, this is a first run.

**First run:**

1. Greet (two lines): *"Let's set up pastiche — we'll fill `KNOWLEDGE.md` with how your DS gets used, and seed a few system-wide rules in `WISDOM.md`. You can pause any time; I'll resume where we left off."* 2. **DESIGN.md handshake.** If `design_md_reference` is set in config, skip. Otherwise scan repo root for `DESIGN.md`:

  • **Found** → ask: *"I found `./DESIGN.md`. Want me to use it as reference? I'll draft candidates from it so you mostly review."*
  • Yes → validate the path (resolve absolute, in-repo, readable, ≤200KB). On any failure, warn and proceed as if declined. On pass, write `design_md_reference: ./DESIGN.md` to config. Scan the body for `^## Overview` or `^## Brand & Style`; if either is present, copy that section's body into KNOWLEDGE.md's `## Brand Identity` (replacing the placeholder).
  • No → leave `design_md_reference: null`.
  • **Not found** → one line: *"No `DESIGN.md` at repo root — we'll go through this from scratch."*

3. Start with Brand Identity (below).

**Returning run:** skip greet and handshake. Print: *"Picking up where we left off — `<X>` of 13 done. Next up: `<next stub>`. Continue?"* Then resume.

Section loop

Pick the next section: lowest stub in canonical order, or `--section <name>` if provided.

After each section, prompt: *"Next section: `<next stub in canonical order>`. Continue / switch / pause?"*

  • Continue → next stub in canonical order.
  • Switch → ask which section; jump.
  • Pause → stop; adopter resumes by re-invoking.

If `--all` was passed, skip this prompt. Stop only when every stub is `done` (then run **Wrap**).

Brand Identity

**Auto-ported case** (the placeholder was replaced from DESIGN.md): show the ported prose verbatim. Offer `keep / edit / rewrite`.

  • `keep` → write + flip + lint.
  • `edit` → take natural-language patches, re-show, loop until `keep`.
  • `rewrite` → fall through to the freeform case.

**Freeform case** (no auto-port, or adopter chose `rewrite`): prompt:

> *"Write or paste your Brand Identity prose — voice, posture, density, restraint, anything that matters for downstream design decisions. Length is your call; round-1 reads this in full on every task.* > > *Not sure where to start? Say "guide me" and I'll walk you through 4–5 prompts to draft it together."*

  • If the adopter pastes prose, take it as-is, read back for confirmation, loop on natural-language edits until `yes`.
  • If they say "guide me" (or equivalent), ask 4–5 prompts in sequence: brand voice in 1–2 adjectives; density posture (dense vs. spacious, why); restraint signal (when the DS pulls back); the one rule that makes a screen feel off-brand; optional anti-example. Draft a prose paragraph from the answers, read back, loop.

Write the final prose into `## Brand Identity` (replacing whatever was there). Flip `setup_progress.brand-identity: done`. Run lint.

Scenario sections (11)

Canonical order: Action buttons, Forms & input collection, Feedback & status, Overlays, Navigation & wayfinding, Content display, Layout & page structure, Date & time selection, Iconography, Visual hierarchy, Domain-specific patterns.

Per section:

1. **Draft candidates** as a numbered list, blending two sources:

  • **DESIGN.md** (if `design_md_reference` is set): mine narrative for scenarios in this section's territory.
  • **Canonical seeds** (always; see **Seed scenarios** below).

Adapt to the adopter's FACT: drop seeds whose atoms aren't in FACT; add candidates suggested by FACT atoms that no canonical seed covered. Atom names backticked (FACT entries verbatim); prop expressions bare. Example: `` → `Button` variant="primary" ``. Soft target 5–8; no hard cap, no padding.

2. **Confirm.** Show the list. *"Accept all, or tell me what to change (accept some / reject some / edit some / add new)?"* Loop on natural-language responses until the adopter accepts.

3. **Write.** Replace the section's `_(empty — …)_` marker with the confirmed scenarios. Each scenario: one or more prose framing lines, then one or more `→ <atom expression>` lines.

4. **Flip + lint.** Set `setup_progress.<section>: done` in config. Run lint.

5. **Cadence prompt** (unless `--all`).

`[GENERAL]` WISDOM phase (last)

Runs only when every KNOWLEDGE stub is `done`. Same shape as a scenario section; writes to `pastiche/WISDOM.md`; the unit is a tagged rule.

1. **Draft candidates**, blending:

  • **DESIGN.md** (if set): mine posture / invariants, especially any "Do's and Don'ts"-shaped content.
  • **Canonical seeds (4):**
  • *Tokens-only* — never raw hex / px; always reference DS toke
Read more
@retz8
Ships withpastiche

Pastiche is a Claude Code plugin for Frontend UI implementation. Given a frontend task, it produces code that follows your established design system and component library — not by inventing, but by faithfully executing within the vocabulary your team already

412 skills3 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
4
Star history of retz8/pastiche on GitHub, a chart by star-history.com

Other skills on pastiche.

divide-task

divide-task

Divide a specced pastiche task into sub-task GitHub issues with autonomy and dependency labels, mirror them into `_dev/TODO.md`,…

@retz8@retz8Install Skill
grill-to-spec

grill-to-spec

Convert a completed grill-me session into a spec file. Captures only the task and the decisions locked during grilling — no…

@retz8@retz8Install Skill
pick-up-task

pick-up-task

Pick up or resume a task from `_dev/TODO.md` — marks `[WIP]`, creates or switches to the task's feature branch, rebases with…

@retz8@retz8Install Skill
rebase-feat-with-main

rebase-feat-with-main

Rebase the current pastiche feature branch onto main to absorb hotfixes. Use when the user invokes `/rebase-feat-with-main`, when…

@retz8@retz8Install Skill
release-pastiche

release-pastiche

Ship a pastiche release — version bump, plugin build, CHANGELOG entry, release commit, tag, GitHub Release, milestone close. Use…

@retz8@retz8Install Skill
pastiche-init

pastiche-init

Use when bootstrapping pastiche in a frontend repo for the first time — scaffolds `pastiche/{config.yaml, FACT.md, KNOWLEDGE.md,…

@retz8@retz8Install Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about pastiche-setup.

Which coding agents can use pastiche-setup?
pastiche-setup installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.