$npx -y skills add getpaperclipai/paperclip --skill paperclip-distillUse when an operation issue is a Paperclip cursor-window, distill, or backfill — operationType: "distill" or "backfill" and the body references a Paperclip source bundle for a project or root issue. Turn raw Paperclip activity into a wiki-insightful project page, decisions lo
| 1 | # Paperclip Distill |
| 2 | |
| 3 | Distill Paperclip project, issue, comment, and document activity into durable wiki pages. The success criterion is **wiki-insightful, not procedural**: a reader who has never seen Paperclip should learn what the project is, what was decided, what is at risk, and what the current state is — without scanning a list of `## [YYYY-MM-DD]` headers. |
| 4 | |
| 5 | ## When this skill is needed |
| 6 | |
| 7 | - Cursor-window distillation: the routine fed you a bounded source bundle of recent Paperclip activity for one project or root issue. |
| 8 | - Backfill: the user asked to seed the wiki with the historical activity of a project or root issue. Source window may be wide. |
| 9 | - Manual `distill-paperclip-now` request from the UI. |
| 10 | |
| 11 | If the operation issue is `operationType: "ingest"` (raw file) or `operationType: "query"`, this is the wrong skill — use `wiki-ingest` or `wiki-query`. |
| 12 | |
| 13 | ## Destination space |
| 14 | |
| 15 | In Phase 1, every Paperclip distill, backfill, and cursor-window operation writes into the |
| 16 | default wiki space. The operation issue should always carry `spaceSlug: "default"`. If an |
| 17 | operation issue passes any other slug, stop and surface the mismatch in a comment — do not |
| 18 | write Paperclip-derived pages into a non-default space. |
| 19 | |
| 20 | This rule is destination-only. The Paperclip source scope (which projects, root issues, |
| 21 | comments, documents are read) is set elsewhere in the operation issue and is independent of |
| 22 | the destination. |
| 23 | |
| 24 | ## Inputs |
| 25 | |
| 26 | - A Paperclip source bundle (issue list, comment refs, document refs, source hash, cursor window). |
| 27 | - An existing or planned `wiki/projects/<slug>/standup.md` page path. |
| 28 | - An existing or planned `wiki/projects/<slug>/index.md` page path. |
| 29 | - The operation issue's target `wikiId`, `spaceSlug`, space root, and the target space's `AGENTS.md` for page conventions. |
| 30 | - The current `wiki/projects/<slug>/standup.md`, `wiki/projects/<slug>/index.md`, `decisions.md`, and `history.md` if they already exist (so you write a *patch*, not a rewrite). |
| 31 | |
| 32 | ## Paperclip Asset Gate |
| 33 | |
| 34 | Do not treat Paperclip assets/attachments or issue work products as source text for this skill. |
| 35 | |
| 36 | - Allowed Paperclip body text: issue descriptions, comment bodies, document bodies. |
| 37 | - Assets/attachments are metadata-only until a separate approved extraction policy exists. |
| 38 | - Work products are metadata-only until a separate approved extraction policy exists. |
| 39 | - Never fetch `/api/assets/:id/content`. |
| 40 | - Never dereference a work-product `url`, preview URL, artifact URL, or other linked destination from this skill. |
| 41 | - If an operator asks for attachment/work-product content distillation, stop and point them at the Phase 5 asset/work-product security gate policy instead of improvising. |
| 42 | |
| 43 | ## Anti-patterns to avoid |
| 44 | |
| 45 | The deterministic templating this skill replaces produced these failure modes — do not reproduce them: |
| 46 | |
| 47 | 1. **Datestamp-as-section-header.** Lines like `## [2026-04-15] paperclip-distill | proposed` belong in `wiki/log.md`, not in the project page. The project page is durable knowledge; the log is the audit trail. |
| 48 | 2. **Procedural status lists.** `Issue mix: 3 todo, 5 in_progress, 2 done` tells the reader nothing they could not read off Paperclip directly. State *what is happening and why it matters*, then cite the issues that constitute the evidence. |
| 49 | 3. **One-line-per-issue dumps.** A page that is mostly `- PAP-1234: title (in_progress, updated 2026-...)` is an issue list, not a wiki page. Group issues by what they are *about* (a decision, a risk, a workstream) and cite multiple issues per bullet when they share a story. |
| 50 | 4. **Mechanical "Current as of" timestamps everywhere.** One `current_as_of` in frontmatter is enough. |
| 51 | 5. **No interpretation.** "Active issues: PAP-A, PAP-B, PAP-C" is bookkeeping. "The team is concentrating on the schema migration ([PAP-A], [PAP-B]) and has parked the index work pending capacity ([PAP-C])." is wiki-insightful. |
| 52 | 6. **Opaque identifiers in prose.** UUIDs, cursor ids, source hashes, run ids, and raw metadata belong in logs or frontmatter when needed, not in executive-facing project narrative. |
| 53 | |
| 54 | ## Workflow |
| 55 | |
| 56 | 1. **Read the bundle in full.** Don't sample. Read every issue title, every comment, every document key the bundle includes. Note: which issues are decisions, which are risks/blockers, which are recently completed, which are inflight. |
| 57 | 2. **Read the existing project page** (if any) so you write a patch, not a rewrite. The "Decisions" section in particular accumulates over time — never wipe accepted decisions; supersede them with `> ⚠ reversed by ...` callout |