Paperclip 知识提炼
当操作事项为 Paperclip 光标窗口、蒸馏或回填时使用——`operationType: "distill"` 或 `"backfill"` 且正文引用项目或根事项的 Paperclip 源包。将原始 Paperclip 活动转化为富有洞察力的 wiki 项目页面、决策日志和历史笔记。此技能专门用于替代确定性蒸馏器生成的刻板、带有大量日期戳的模板化输出。
文件预览
---
name: paperclip-distill
description: Use 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 log, and history note. This skill exists specifically to replace the stiff, datestamp-heavy templated output that the deterministic distiller produces.
---
# Paperclip Distill
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.
## When this skill is needed
- Cursor-window distillation: the routine fed you a bounded source bundle of recent Paperclip activity for one project or root issue.
- Backfill: the user asked to seed the wiki with the historical activity of a project or root issue. Source window may be wide.
- Manual `distill-paperclip-now` request from the UI.
If the operation issue is `operationType: "ingest"` (raw file) or `operationType: "query"`, this is the wrong skill — use `wiki-ingest` or `wiki-query`.
## Destination space
In Phase 1, every Paperclip distill, backfill, and cursor-window operation writes into the
default wiki space. The operation issue should always carry `spaceSlug: "default"`. If an
operation issue passes any other slug, stop and surface the mismatch in a comment — do not
write Paperclip-derived pages into a non-default space.
This rule is destination-only. The Paperclip source scope (which projects, root issues,
comments, documents are read) is set elsewhere in the operation issue and is independent of
the destination.
## Inputs
- A Paperclip source bundle (issue list, comment refs, document refs, source hash, cursor window).
- An existing or planned `wiki/projects/<slug>/standup.md` page path.
- An existing or planned `wiki/projects/<slug>/index.md` page path.
- The operation issue's target `wikiId`, `spaceSlug`, space root, and the target space's `AGENTS.md` for page conventions.
- 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).
## Paperclip Asset Gate
Do not treat Paperclip assets/attachments or issue work products as source text for this skill.
- Allowed Paperclip body text: issue descriptions, comment bodies, document bodies.
- Assets/attachments are metadata-only until a separate approved extraction policy exists.
- Work products are metadata-only until a separate approved extraction policy exists.
- Never fetch `/api/assets/:id/content`.
- Never dereference a work-product `url`, preview URL, artifact URL, or other linked destination from this skill.
- 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.
## Anti-patterns to avoid
The deterministic templating this skill replaces produced these failure modes — do not reproduce them:
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.
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.
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.
4. **Mechanical "Current as of" timestamps everywhere.** One `current_as_of` in frontmatter is enough.
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.
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.
## Workflow
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.
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 ...` callouts when something later overrides them.
3. **Read the target space's `AGENTS.md`** for page conventions: filename style, YAML frontmatter shape, link style, voice. Always pass the operation issue's `wikiId` and `spaceSlug` to LLM Wiki tools.
4. **Write `wiki/projects/<slug>/standup.md` first.** Every Paperclip project represented in the wiki must have this file. It is the executive standup: where the project stands today, what changed recently, what is blocked or risky, and what happens next. Use stable sections, in this order:
- Frontmatter (`type: project-standup`, `project: <slug>`, `current_as_of: YYYY-MM-DD`, `sources`).
- **Executive Readout** — one short paragraph that explains the current project posture in plain language.
- **What Changed** — the meaningful work completed or advanced since the last window. Group by concept; cite issues/comments/documents only as evidence.
- **Decisions** — accepted/rejected/reversed decisions that changed the project direction. Omit when none exist.
- **Blockers / Risks** — current blockers and risks with named owner or next action when the source provides one.
- **Next Actions** — concrete next actions and owners inferred from Paperclip issues, not vague aspirations.
- **Links** — durable wiki project page and relevant Paperclip project/issues/documents.
Rewrite the standup to today's state. Do not append endless dated sections; the audit trail belongs in `wiki/log.md` and Paperclip comments.
5. **Write `wiki/projects/<slug>/index.md`** with these stable sections, in this order:
- Frontmatter (`type: project`, `current_as_of: YYYY-MM-DD`, `tags`, `sources`).
- **Overview** — 2–4 sentences saying what the project is and why it exists. Use the project description if it exists; otherwise synthesise it from the root issue.
- **Current Direction** — narrative paragraph naming the active workstreams, the immediate next concrete deliverable, and the stance on risks. Cite 2–4 issues, do not list 20.
- **Workstreams** — a short, grouped list. Each line is a workstream or idea, not an issue.
- **Decisions** — accepted and reversed decisions with one paragraph each. Each decision cites the issue / approval / comment that ratified it. Format: `### Decision — short title` then a paragraph; never a bare bullet list.
- **Open Risks / Blockers** — what could derail the project, with the issue ref that surfaces it. Skip this section when the bundle has no risk signal — do not pad with `_(none)_`.
- **References** — readable links to the current standup and supporting Paperclip tasks/documents. Keep hashes and cursor ids out of the narrative.
6. **Optionally write `wiki/projects/<slug>/decisions.md`** when the project has accumulated more decisions than the project page can carry without becoming a wall of text. Each decision is a `## ` section with: short title, accepted/reversed/superseded status, one-paragraph rationale, citing the source. *Do not* duplicate decisions already on the project page — link instead.
7. **Optionally write `wiki/projects/<slug>/history.md`** for a compact narrative timeline of meaningful project changes. **Not** an issue dump — group by phase ("Discovery", "Architecture", "Build", "Stabilisation"), not by date. Each phase is a paragraph that cites the 2–4 issues that defined it.
8. **Refresh `wiki/index.md`** under the `## Projects` section — one line per durable project page with a one-sentence summary of the project's purpose, plus a link to the current `wiki/projects/<slug>/standup.md` when present.
9. **Append `wiki/log.md`** entry — this is where the datestamp belongs:
```
## [YYYY-MM-DD] paperclip-distill | <project name>
- standup: wiki/projects/<slug>/standup.md
- page: wiki/projects/<slug>/index.md
- source hash: `<hash>`
- cursor window: <start> → <end>
- notes: <one line on what changed in this distill, e.g. "decisions section grew with PAP-X reversal", "low-signal window, no page changes">
```
10. **Surface bundle warnings** (clipped sources, low signal, stale hash). Bundle warnings → `human_review_required: true` on the patch. Do not paper over them.
## Voice
- Past-tense for completed work, present-tense for current state, future-tense only with citation ("the team plans to … per [[…]]").
- Cite Paperclip source refs inline using their issue identifier (e.g. `PAP-3179`), not opaque UUIDs.
- Use issue links as evidence, not as the shape of the page. Headings and paragraphs should be organized by concepts, workstreams, decisions, and blockers.
- Wiki voice: terse, factual, neutral. No "the team is excited to" or "this initiative aims to".
- Headings are about *content*, not metadata. `## Schema migration` not `## Active Issues`.
## When the bundle has no signal
If the bundle has no durable signal — no decisions, no risk, no completed work, only routine status churn — do **not** write a project page. Instead:
- Append a `paperclip-distill | low-signal skip` log entry naming the cursor window.
- Close the operation issue with a one-line "no durable change in this window" comment.
- Do not bump the source hash on a binding that has no proposed page.
## Verification
Before closing the operation issue:
- [ ] The project page reads as wiki content, not as a Paperclip status report. A reader new to the company should understand what the project is.
- [ ] `wiki/projects/<slug>/standup.md` exists for the represented project and reads as an executive current-state update, not a raw issue dump.
- [ ] Decisions section names decisions, not issues — every decision has a one-paragraph rationale and a citation.
- [ ] The page contains exactly one `current_as_of` (in frontmatter), zero `## [YYYY-MM-DD]` headings (those go to the log).
- [ ] Bundle warnings (clipped, low signal, stale hash) are surfaced; the patch carries `human_review_required: true` when the deployment is authenticated/public.
- [ ] `wiki/index.md` and `wiki/log.md` are updated.
- [ ] No file under `raw/` was modified.
## Tools
`wiki_search`, `wiki_read_page`, `wiki_write_page`, `wiki_list_sources`, `wiki_read_source`. Always include the operation issue's `wikiId` and `spaceSlug`. The Paperclip source bundle arrives as part of the operation context — you do not need to assemble it.
SKILL.md
| name | paperclip-distill |
|---|---|
| description | Use 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 log, and history note. This skill exists specifically to replace the stiff, datestamp-heavy templated output that the deterministic distiller produces. |
Paperclip 知识提炼
将 Paperclip 项目、事项、评论和文档活动提炼为持久化的 wiki 页面。成功标准是富含 wiki 洞见,而非流程化记录:一个从未见过 Paperclip 的读者应该能了解项目是什么、做出了哪些决策、面临什么风险以及当前状态——而无需浏览一连串 ## [YYYY-MM-DD] 标题。
何时需要此技能
- 光标窗口蒸馏:例行程序向你提供一个包含某项目或根事项近期 Paperclip 活动的有界源包。
- 回填:用户要求用项目或根事项的历史活动来填充 wiki。源窗口可能很宽。
- 从 UI 手动发起的
distill-paperclip-now请求。
如果操作事项的 operationType 是 "ingest"(原始文件)或 "query",则此技能不适用——请使用 wiki-ingest 或 wiki-query。
目标空间
在第一阶段,所有 Paperclip 蒸馏、回填和光标窗口操作均写入默认 wiki 空间。操作事项应始终携带 spaceSlug: "default"。如果操作事项传递了其他任何 slug,请停止并在评论中指出不匹配之处——不得将 Paperclip 衍生的页面写入非默认空间。
此规则仅针对目标。Paperclip 源范围(读取哪些项目、根事项、评论、文档)由操作事项在其他地方设置,且与目标无关。
输入
- 一个 Paperclip 源包(事项列表、评论引用、文档引用、源哈希、光标窗口)。
- 一条现有或计划中的
wiki/projects/<slug>/standup.md页面路径。 - 一条现有或计划中的
wiki/projects/<slug>/index.md页面路径。 - 操作事项的目标
wikiId、spaceSlug、空间根目录以及目标空间的AGENTS.md(用于页面约定)。 - 如果已存在当前的
wiki/projects/<slug>/standup.md、wiki/projects/<slug>/index.md、decisions.md和history.md,请读取它们(以便你编写的是补丁,而非重写)。
Paperclip 资产准入
不要将 Paperclip 资产/附件或事项工作产物视为此技能的源文本。
- 允许的 Paperclip 正文文本:事项描述、评论正文、文档正文。
- 资产/附件仅作为元数据,直到有单独的已批准的提取策略。
- 工作产物仅作为元数据,直到有单独的已批准的提取策略。
- 永远不要调用
/api/assets/:id/content。 - 永远不要从此技能解引用工作产物的
url、预览 URL、制品 URL 或其他链接目标。 - 如果操作者要求提炼附件/工作产物内容,请停止并引导他们查阅阶段 5 资产/工作产物安全准入策略,而非即兴发挥。
应避免的反模式
此技能所替代的确定性模板产生了如下失败模式——请勿重现:
- 以日期戳作为章节标题。 像
## [2026-04-15] paperclip-distill | proposed这样的行应放入wiki/log.md,而非项目页面。项目页面是持久知识;日志是审计轨迹。 - 流程化状态列表。
事项组合:3 个待办,5 个进行中,2 个已完成告诉读者的信息他们直接从 Paperclip 也能读到。应说明正在发生什么以及为何重要,然后引用作为证据的事项。 - 每个事项一行的堆砌。 满是
- PAP-1234: 标题(进行中,更新于 2026-...)的页面不是 wiki 页面,而是事项列表。按事项所涉及的内容(决策、风险、工作流)进行分组,当多个事项讲述同一个故事时,在一条要点中引用多个事项。 - 到处机械地使用“截至”时间戳。 在 frontmatter 中有一个
current_as_of就足够了。 - 没有解读。 “活跃事项:PAP-A,PAP-B,PAP-C”是记账。 “团队正集中精力进行模式迁移([PAP-A],[PAP-B]),并将索引工作搁置以等待容量([PAP-C])。” 才是 wiki 洞见。
- 在行文中使用难以理解的标识符。 UUID、光标 ID、源哈希、运行 ID 和原始元数据在需要时应放入日志或 frontmatter,而非面向高层的项目叙述中。
工作流
- 完整阅读源包。 不要抽样。阅读源包包含的每一条事项标题、每一条评论、每一个文档键。注意:哪些事项是决策,哪些是风险/阻塞项,哪些最近完成,哪些正在进行。
- 阅读现有的项目页面(如有),以便编写补丁而非重写。特别是“决策”部分会随时间累积——永远不要清除已接受的决策;当后续有内容覆盖它们时,用
> ⚠ reversed by ...这种标注来替代它们。 - 阅读目标空间的
AGENTS.md以了解页面约定:文件名风格、YAML frontmatter 结构、链接风格、语气。始终将操作事项的wikiId和spaceSlug传递给 LLM Wiki 工具。 - 首先编写
wiki/projects/<slug>/standup.md。 wiki 中每个代表的 Paperclip 项目都必须有此文件。这是高层每日站会记录:项目今天处于什么状态,最近有什么变化,什么被阻塞或有风险,下一步将发生什么。按以下顺序使用固定的章节:- Frontmatter (
type: project-standup,project: <slug>,current_as_of: YYYY-MM-DD,sources)。 - 高层综述——用通俗语言解释当前项目态势的一个短段落。
- 有何变化——自上一个窗口以来已完成或有进展的有意义工作。按概念分组;仅将事项/评论/文档作为证据引用。
- 决策——改变项目方向的已接受/已拒绝/已推翻的决策。若没有则省略。
- 阻塞项 / 风险——当前的阻塞项和风险,若源信息提供,则附上指派的负责人或下一步行动。
- 下一步行动——从 Paperclip 事项推断出的具体下一步行动和负责人,而非模糊的期望。
- 链接——持久的 wiki 项目页面及相关的 Paperclip 项目/事项/文档。
将站会记录重写为当天状态。不要无限追加带日期的章节;审计轨迹应属于
wiki/log.md和 Paperclip 评论。
- Frontmatter (
- 编写
wiki/projects/<slug>/index.md,按以下顺序包含固定的章节:- Frontmatter (
type: project,current_as_of: YYYY-MM-DD,tags,sources)。 - 概览——用 2–4 句话说明项目是什么以及为何存在。如果存在项目描述,则使用它;否则从根事项中总结。
- 当前方向——一个叙述段落,指明活跃的工作流、下一个具体的即时可交付成果以及对待风险的态度。引用 2–4 个事项,不要列出 20 个。
- 工作流——一个简短的分组列表。每行是一个工作流或想法,而非一个事项。
- 决策——已接受和已推翻的决策,每个决策一个段落。每个决策需引用批准它的事项 / 批准 / 评论。格式:
### 决策 — 简短标题,然后一个段落;永远不要使用无格式的要点列表。 - 开放风险 / 阻塞项——可能使项目偏离轨道的事项,附带揭示它的事项引用。当源包中没有风险信号时跳过此章节——不要用
_(无)_来填充。 - 参考——指向当前站会记录和支持性 Paperclip 任务/文档的可读链接。将哈希和光标 ID 排除在叙述之外。
- Frontmatter (
- 可选:编写
wiki/projects/<slug>/decisions.md,当项目积累的决策数量超出项目页面承载能力,避免页面变成一堵文字墙时使用。每个决策是一个##章节,包含:简短标题、已接受/已推翻/已替代状态、一段理由叙述,引用源信息。不要重复项目页面已有的决策——改为链接。 - 可选:编写
wiki/projects/<slug>/history.md,用于呈现有意义项目变更的紧凑叙事时间线。不是事项堆砌——按阶段分组(“探索”、“架构”、“构建”、“稳定”),而非按日期。每个阶段是一个段落,引用定义该阶段的 2–4 个事项。 - 刷新
wiki/index.md的## 项目部分——每个持久项目页面占一行,附带一个单句的项目目的总结,如果存在当前的wiki/projects/<slug>/standup.md,则加上指向它的链接。 - 追加
wiki/log.md条目——日期戳应在此处:text## [YYYY-MM-DD] paperclip-distill | <项目名称> - 站会:wiki/projects/<slug>/standup.md - 页面:wiki/projects/<slug>/index.md - 源哈希:`<hash>` - 光标窗口:<开始> → <结束> - 备注:<一行文字说明此次蒸馏的变化,例如“决策部分因 PAP-X 推翻而增加”,“低信号窗口,页面无变化”> - 披露源包警告(来源被截断、低信号、哈希过期)。源包警告 → 在补丁上设置
human_review_required: true。不要掩盖它们。
语气
- 已完成的工作使用过去时,当前状态使用现在时,将来时仅在引用时使用(“团队计划 … 根据 [[…]]”)。
- 使用 Paperclip 源引用时,在行文中使用其事标识符(例如
PAP-3179),而非难以理解的 UUID。 - 将事项链接作为证据使用,而非作为页面的骨架。标题和段落应按概念、工作流、决策和阻塞项来组织。
- Wiki 语气:简洁、事实、中立。避免“团队兴奋地”或“此计划旨在”这类表述。
- 标题应关于内容,而非元数据。使用
## 模式迁移而非## 活跃事项。
当源包没有实质信号时
如果源包中没有持久的信号——没有决策、没有风险、没有已完成的工作,只有例行的状态变动——则不要编写项目页面。取而代之:
- 在日志中追加一条
paperclip-distill | 低信号跳过条目,注明光标窗口。 - 用一句“此窗口无持久变化”的评论关闭操作事项。
- 不要在没有提出页面修改的情况下更新绑定的源哈希。
验证
关闭操作事项前:
- 项目页面读起来像 wiki 内容,而非 Paperclip 状态报告。新来公司的读者应该能理解项目是什么。
- 为代表的项目存在
wiki/projects/<slug>/standup.md,且读起来像高层当前状态更新,而非原始事项堆砌。 - 决策部分命名的是决策,而非事项——每个决策都有一段理由叙述和一个引用。
- 页面恰好包含一个
current_as_of(在 frontmatter 中),零个## [YYYY-MM-DD]标题(这些应放入日志)。 - 源包警告(截断、低信号、哈希过期)已被披露;当部署为认证/公开时,补丁应携带
human_review_required: true。 -
wiki/index.md和wiki/log.md已更新。 -
raw/下的文件未被修改。
工具
wiki_search、wiki_read_page、wiki_write_page、wiki_list_sources、wiki_read_source。始终包含操作事项的 wikiId 和 spaceSlug。Paperclip 源包作为操作上下文的一部分到达——你不需要自行组装它。