Install
$ agentstack add skill-retz8-pastiche-pastiche-init ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Pastiche — init
Bootstrap pastiche in the user's repo. Refuses to touch an existing pastiche/ — the verb is init, not update.
Output discipline
Stay terse. Do detection silently — do not narrate what you're reading, why a file matched, or how pastiche works internally. The only things the user sees are: the one-line preflight path, the proposed config block, the confirm question, any direct question for ambiguous fields, and the close message. No reasoning, no per-field commentary, no explanation of FACT/KNOWLEDGE/WISDOM. The config block plus the printed status messages below are the entire surface.
Preflight
- Resolve repo root:
git rev-parse --show-toplevel; on failure, fall back silently to cwd. Print: "Writing to/pastiche/." - If
/pastiche/contains any file, stop:
> pastiche/ already exists. Run /pastiche-sync to refresh FACT, /pastiche-setup to continue curation, or delete pastiche/ first to reinitialize.
Detect
Read /package.json and probe canonical locations. Classify against these priors; combine as needed.
packages: each entry needs a name plus exactly one of types/source_dir.
name:— the package's published/workspace name (thenamefield in itspackage.json, e.g.@org/web). For asource_dir-only setup with no package name, use a short logical label (e.g.ui). Required and non-empty — the extractor rejects entries without it.- Workspace package with
dist/index.d.ts→types:(monorepo / built lib). - npm dep with
node_modules//dist/index.d.ts(ortypes/modulein itspackage.json) →types:(Primer / MUI / Mantine / Chakra shape). components.jsonat repo root →source_dir:pointing at the configured alias dir (shadcn).- Multiple coexist → multiple entries.
tokens: check the obvious spots only — a global stylesheet referenced by the app entry, or a conventional path (src/styles/, app/globals.css, src/index.css). A quick match is enough:
- CSS file containing
@theme { ... }→ Tailwind v4 theme file. - CSS file containing
:root { --... }→ plain CSS vars.
Do not exhaustively crawl the repo for token files. If the first obvious candidates don't make it clear, leave tokens empty in the draft and ask the user to name the file in the confirm step — don't keep hunting.
typecheck_command: check package.json scripts for typecheck / type-check / tsc. Detect package manager from lockfile (pnpm-lock.yaml → pnpm, yarn.lock → yarn, bun.lock → bun, else npm run). Compose accordingly.
build_command: check package.json scripts for build. Detect package manager from lockfile (same as above). Compose accordingly (e.g., npm run build).
Trust your judgment on non-standard workspace names or weird exports fields. But don't over-invest in any single field: if something is ambiguous — especially token paths — stop guessing and ask the user to identify it directly in the confirm step. A direct question beats an obsessive search for a recommendation.
Draft + confirm
Present the full proposed config in one block — platform: claude-code (hardcoded), then drafted packages (each with its name and types/source_dir), tokens, typecheck_command, build_command. Ask:
> Looks right? Edit anything?
If the user requests edits, apply them to the current draft and re-display the updated config. Do not re-run detection. Loop until the user accepts.
If detection produced nothing usable, skip the draft and prompt: > I couldn't classify your setup. Paste your config or describe your stack.
Then draft from the response and confirm as above.
Write
Once accepted, write:
/pastiche/config.yaml— read the template from this skill's siblingtemplates/config.yamldirectory, mutateplatform,packages,tokens,typecheck_command,build_command. Leavedesign_md_reference: nullandsetup_progressuntouched (13 stubs)./pastiche/KNOWLEDGE.md— copytemplates/KNOWLEDGE.md(sibling to this skill's directory) verbatim./pastiche/WISDOM.md— copytemplates/WISDOM.md(sibling to this skill's directory) verbatim.
If the user left typecheck_command blank, write null and print: > typecheck_command left null — implementers will skip the typecheck step.
If the user left build_command blank, write null and print: > build_command left null — the orchestrator will skip the final build check.
Do not scan for DESIGN.md. Do not pre-fill design_md_reference. /pastiche-setup owns that surface.
Extract FACT
Shell: extract-fact (cwd = `). It is on PATH via the plugin's bin/` — do not search for it. Block on completion.
- Non-zero exit — print stderr verbatim, then stop:
> Extractor failed: . Fix config or rebuild your DS, then run /pastiche-sync to retry FACT extraction. KNOWLEDGE/WISDOM templates and config are already in place.
Do not delete pastiche/. The partial state is the recovery point for /pastiche-sync.
- Zero exit, no atoms written — warn and proceed to Close:
> Extractor ran but found no atoms. Check your packages[].types / source_dir paths. You can re-run extraction with /pastiche-sync.
Close
Print exactly:
> Pastiche initialized at /pastiche/. > > FACT.md extracted (` components, tokens). KNOWLEDGE.md and WISDOM.md are stubs. > > Next: run /pastiche-setup to curate KNOWLEDGE and seed [GENERAL]` WISDOM rules — section-by-section, resumable across sessions.
Do not invoke another skill. Do not run lint.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: retz8
- Source: retz8/pastiche
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.