# Pastiche Write Knowledge

> Use when adding or revising a scenario → atom mapping in KNOWLEDGE.md — including when triaging a `knowledge-gap` follow-up from the pastiche skill.

- **Type:** Skill
- **Install:** `agentstack add skill-retz8-pastiche-pastiche-write-knowledge`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [retz8](https://agentstack.voostack.com/s/retz8)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [retz8](https://github.com/retz8)
- **Source:** https://github.com/retz8/pastiche/tree/main/dist/claude-code/skills/pastiche-write-knowledge

## Install

```sh
agentstack add skill-retz8-pastiche-pastiche-write-knowledge
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Pastiche — write KNOWLEDGE

Inserts one scenario → atom(s) mapping into `pastiche/KNOWLEDGE.md` per invocation. See KNOWLEDGE.md's header for the scenario format (prose framing line(s), then one or more `→ ` lines; atom names backticked, prop expressions bare).

Multi-`→` scenarios are allowed within a single invocation; multiple scenarios are not — re-invoke for each.

## Workflow

1. **Get the scenario.** If a scenario is already on the table (free-form discussion, or a `knowledge-gap` follow-up carrying scenario text + optionally file/line/would-be atom), use it. Otherwise ask the user for one or two lines of scenario phrasing. Read `pastiche/FACT.md` in full.

2. **Identify the section.** List the candidate sections: `grep -n '^## ' pastiche/KNOWLEDGE.md | grep -v '## Brand Identity'`.

   - **Brand Identity is out of scope.** If the user names `## Brand Identity` (or the scenario is brand-prose rather than a scenario→atom mapping), stop and report:

     > Brand Identity is prose, not a scenario mapping. Edit `pastiche/KNOWLEDGE.md`'s Brand Identity section directly, or run `/pastiche-setup --section brand-identity` to rewrite it.

   - If the user named a section, verify spelling against the list (case-insensitive / near-match; surface the closest match for confirmation if no exact hit). If no plausible match, stop and report the misspelling.
   - If the user did not name a section, propose the best-fit section from the list based on the scenario text and confirm with the user. The user may override.

3. **Show existing neighbors.** Read the chosen section by line range (from `## ` to the next `## `) and display it to the user so they can self-detect duplication or refinement opportunities. If the section's only content is `_(empty — run /pastiche-setup --section )_`, show that line and note there are no neighbors yet.

4. **Draft and confirm.** Compose the scenario as it will appear in the file: one or more prose framing lines, followed by one or more `→` lines. Atom names backticked — **FACT entries verbatim**; never derived utility forms or untracked utility classes (those belong as WISDOM `[GENERAL]` rules). Prop expressions bare.

   If the available context is missing either the framing or the atom expression(s), ask only for the missing piece. Surface candidate atoms from FACT when helpful.

   **Verify each backticked identifier against FACT before showing the draft.** For each identifier `X`:
   - Component lookup: `grep -nE '^X:' pastiche/FACT.md` (inside the `## Components` YAML block; top-level keys only).
   - Token lookup: `grep -nFx 'X' pastiche/FACT.md` (flat lines under `## Tokens`).

   If neither matches: retry case-insensitively and surface the closest match for confirmation. If still no match, stop and report:

   > Identifier `` is not in FACT.md. Either it's misspelled, FACT is stale (run `/pastiche-sync`), or the atom doesn't exist — in which case rephrase the scenario around an atom that does, or treat it as a knowledge-gap to surface to the DS owner.

   Show the exact lines as they will appear in the file and ask: `yes / edit`. Loop on edits until confirmed.

5. **Insert.** Find the chosen section's end (the line before the next `## ` heading, or end-of-file if it's the last section).

   - If that range's sole content is `_(empty — run /pastiche-setup --section )_`, **replace** that marker line with the new scenario (preserve a single blank line above and below as the surrounding sections have).
   - Otherwise **append** the new scenario at the end of the section (insert before the next `## ` heading; preserve a single blank line of separation from the prior scenario).

6. **Lint.** Shell: `pastiche-lint` (on PATH via plugin `bin/` — do not search), cwd = repo root. Forward stdout; on non-zero exit, also forward stderr. Don't revert; don't abort. Then close with:

   - exit 0: *"Inserted at KNOWLEDGE.md:``. Lint passed. Re-invoke for additional scenarios."*
   - exit non-zero: *"Inserted at KNOWLEDGE.md:``. Lint output above — review and remediate. Re-invoke for additional scenarios."*

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [retz8](https://github.com/retz8)
- **Source:** [retz8/pastiche](https://github.com/retz8/pastiche)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-retz8-pastiche-pastiche-write-knowledge
- Seller: https://agentstack.voostack.com/s/retz8
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
