wheypoint

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

/wheypoint

/wheypoint

/wheypoint
captures just enough state for a cold reader to resume.
/wheypoint
is for culture's end-of-session checkpoint and for the messy mid-task moment when no phase slug applies and context is about to be lost.
/wheypoint
会捕获足够的状态信息,让不了解前情的执行者可以继续推进工作。
/wheypoint
适用于会话结束时的检查点标记,以及任务中途没有适用阶段标识、且上下文即将丢失的混乱场景。

Inputs

输入

  • The conversation so far (the primary input).
  • Optional argument: a description of what the next session will focus on. When present, treat it as the lens and tailor the document to it. Drop state that does not serve that focus to a one-line pointer.
  • Optional verb
    --join <slugA> <slugB>
    : merge two existing handoff notes into one. Reads both notes from
    .cheese/notes/
    and writes a single merged note whose
    parents:
    lists both slugs.
  • Optional verb
    --split
    : fork the current thread into two resumable tracks. Writes two child notes, each with
    parents: [<current-slug>]
    and a distinct slug.
text
/wheypoint                     -> one note with session/git/created auto-filled
/wheypoint --join A B          -> one merged note, parents: [A, B]
/wheypoint --split             -> two child notes, each parents: [<current>]
  • 截至目前的对话内容(主要输入)。
  • 可选参数:描述下一次会话的重点方向。如果提供该参数,需以此为核心调整文档内容,将与该重点无关的状态简化为一行指向性说明。
  • 可选动词
    --join <slugA> <slugB>
    :将两份已有的交接笔记合并为一份。从
    .cheese/notes/
    中读取两份笔记,生成一份合并后的笔记,其
    parents:
    字段会列出两个slug。
  • 可选动词
    --split
    :将当前线程拆分为两个可继续推进的分支。生成两份子笔记,每份的
    parents: [<current-slug>]
    字段都包含当前slug,且各自拥有唯一的slug。
text
/wheypoint                     -> 生成一份自动填充session/git/created字段的笔记
/wheypoint --join A B          -> 生成一份合并笔记,parents: [A, B]
/wheypoint --split             -> 生成两份子笔记,每份的parents: [<current>]

Flow

流程

  1. Derive a slug from the task (e.g.
    auth-retry-backoff
    ). Reuse an existing slug if this session already owns one under
    .cheese/
    .
  2. Inventory what already exists. List the
    .cheese/
    artifacts, specs, PRs, issues, commits, and diffs this session produced or touched. These get referenced, never re-summarised.
  3. Write the handoff document to
    .cheese/notes/<slug>.md
    with the slug header (
    ## Handoff slug
    ) and body (
    ## Document
    ) below. When a focus argument was given, apply it as the lens throughout: emphasise state and decisions that serve the focus, and compress everything else to a one-line pointer.
  4. Redact secrets on the way out (
    ## Redaction
    ).
  5. Point at resumption. End by telling the user how to resume with
    /cheese --continue <slug>
    from the original repo, and include an absolute clickable path to the handoff note so the user can find it from any working directory.
  1. 从任务中生成slug(例如
    auth-retry-backoff
    )。如果当前会话已在
    .cheese/
    下拥有对应的slug,则重复使用该slug。
  2. 盘点已有内容。列出当前会话生成或涉及的
    .cheese/
    下的工件、规格、PR、问题、提交记录和差异。这些内容仅需引用,无需重新总结。
  3. 编写交接文档
    .cheese/notes/<slug>.md
    ,文件顶部包含slug头(
    ## Handoff slug
    ),下方是正文(
    ## Document
    )。如果提供了重点参数,需全程以此为核心:强调服务于该重点的状态和决策,将其他内容压缩为一行指向性说明。
  4. 脱敏处理
    ## Redaction
    ):移除敏感信息。
  5. 说明恢复方式。最后告知用户如何在原始仓库中使用
    /cheese --continue <slug>
    恢复工作,并提供交接笔记的绝对可点击路径,方便用户在任何工作目录下找到该笔记。

--join <slugA> <slugB>

--join <slugA> <slugB>

Merge two interrupted threads into one resumable note.
  1. Read both source notes from
    .cheese/notes/<slugA>.md
    and
    .cheese/notes/<slugB>.md
    .
  2. Derive a merged slug that names the joined effort.
  3. Write ONE note to
    .cheese/notes/<merged-slug>.md
    with
    parents: [<slugA>, <slugB>]
    and the usual auto-filled provenance (
    session:
    /
    git:
    /
    created:
    from the live session).
  4. In
    ## Document
    , consolidate both sources' Goal / State / Key decisions by reference, not re-paste (per
    ## Do not duplicate
    ): point at each source note by path and capture only the merged picture and any conflicts to reconcile.
  5. Point at resumption as in the default flow.
将两个中断的线程合并为一份可继续推进的笔记。
  1. .cheese/notes/<slugA>.md
    .cheese/notes/<slugB>.md
    中读取两份源笔记。
  2. 生成一个能体现合并工作内容的slug。
  3. .cheese/notes/<merged-slug>.md
    写入一份笔记,包含
    parents: [<slugA>, <slugB>]
    字段,以及常规自动填充的溯源信息(来自当前会话的
    session:
    /
    git:
    /
    created:
    )。
  4. ## Document
    部分,通过引用而非重新粘贴的方式整合两份源笔记的目标/状态/关键决策(遵循
    ## Do not duplicate
    规则):通过路径指向每份源笔记,仅记录合并后的整体情况以及需要协调的冲突。
  5. 按照默认流程说明恢复方式。

--split

--split

Fork the current thread into two parallel tracks.
  1. Take the current thread's slug as the parent (derive it as in step 1 of the default flow).
  2. Choose two distinct child slugs, one per track.
  3. Write TWO notes,
    .cheese/notes/<child-a>.md
    and
    .cheese/notes/<child-b>.md
    , each with
    parents: [<current-slug>]
    , its own auto-filled provenance, and a
    ## Document
    scoped to that track's slice of the work.
  4. Point at resumption for each child so both tracks can be resumed independently.
将当前线程拆分为两个并行分支。
  1. 将当前线程的slug作为父slug(按照默认流程的步骤1生成)。
  2. 为每个分支选择唯一的子slug。
  3. 生成两份笔记:
    .cheese/notes/<child-a>.md
    .cheese/notes/<child-b>.md
    ,每份都包含
    parents: [<current-slug>]
    字段、各自自动填充的溯源信息,以及针对该分支工作内容的
    ## Document
    部分。
  4. 为每个子分支说明恢复方式,以便两个分支可以独立推进。

Handoff slug

Handoff slug

Prepend the standard resumable slug to the top of the file so
/cheese --continue
can route from it without reading the whole document:
markdown
status: ok | gated: <one-line decision> | halt: <one-line reason>
next: mold | cook | press | age | cure | affinage | briesearch | culture | hold | tasks | done
mode: single | parallel
artifact: <path-to-richer-report, or PR ref (PR#<n> / URL) when next: affinage, else none>
session: <harness>:<session-id>      # optional; auto-filled provenance
git: <branch>@<short-sha>            # optional; auto-filled provenance
created: <UTC ISO-8601>              # optional; auto-filled provenance
parents: [<slug>, ...]               # optional; lineage (join => 2+, split-child => 1)
baseline: none | <block — carries a recorded baseline block forward from an upstream cook/press/cure handoff; see ../cook/references/quality-gates.md>
<one-line orientation: where the session is and what is mid-flight>
mode:
is optional for backwards compatibility; omitted mode means
mode: single
. In
mode: single
,
next:
names the skill the cold reader should run, which is the machine-readable form of the suggested-skills section below. Use
done
only when the work is genuinely finished and the handoff is a record, not a baton.
/cheese --continue <slug>
scans
.cheese/notes/<slug>.md
and dispatches
next:
directly;
/cheese --continue <absolute-note-path>
reads that handoff file directly when the user is outside the original repo. When
next: affinage
, record the PR reference (
PR#<n>
or its URL) in
artifact:
so the resume dispatches
/affinage <pr>
explicitly rather than relying on branch auto-detection.
When the checkpointed session carries a recorded
baseline:
block, propagate it verbatim to the child note: it is settled state, not something the resumed phase should re-ask about or re-halt on.
--split
carries the block unchanged to each child note;
--join
merges the parents' baseline entries into their union — a settled-state merge that never re-opens a recorded entry. See
../cook/references/quality-gates.md
.
在文件顶部添加标准的可恢复slug,以便
/cheese --continue
命令无需读取整个文档即可定位:
markdown
status: ok | gated: <单行决策内容> | halt: <单行原因>
next: mold | cook | press | age | cure | affinage | briesearch | culture | hold | tasks | done
mode: single | parallel
artifact: <更详细报告的路径,或当next: affinage时的PR引用(PR#<n> / URL),否则填none>
session: <harness>:<session-id>      # 可选;自动填充的溯源信息
git: <branch>@<short-sha>            # 可选;自动填充的溯源信息
created: <UTC ISO-8601>              # 可选;自动填充的溯源信息
parents: [<slug>, ...]               # 可选; lineage(join操作对应2个及以上,split子分支对应1个)
baseline: none | <block — 从上游cook/press/cure交接中携带已记录的基线块;详见../cook/references/quality-gates.md>
<单行定位说明:当前会话进度及正在处理的内容>
mode:
字段为可选,用于向后兼容;省略该字段时默认值为
mode: single
。在
mode: single
模式下,
next:
字段指定了不了解前情的执行者应运行的技能,是下文建议技能部分的机器可读形式。仅当工作真正完成且交接仅作为记录而非接力棒时,才使用
done
/cheese --continue <slug>
会扫描
.cheese/notes/<slug>.md
并直接调度
next:
指定的技能;当用户不在原始仓库中时,
/cheese --continue <absolute-note-path>
会直接读取该交接文件。当
next: affinage
时,需在
artifact:
字段中记录PR引用(
PR#<n>
或其URL),以便恢复时显式调度
/affinage <pr>
,而非依赖分支自动检测。
如果被检查点标记的会话携带已记录的
baseline:
块,需将其原封不动地传递给子笔记:这是已确定的状态,恢复阶段无需重新询问或暂停。
--split
操作会将该块无变化地传递给每个子笔记;
--join
操作会将父笔记的基线条目合并为它们的并集——这是已确定状态的合并,不会重新打开已记录的条目。详见
../cook/references/quality-gates.md

Provenance fields

溯源字段

Four optional provenance fields sit between
artifact:
and the orientation line. Auto-fill each one from the live session; never take a user-supplied value. All four are optional and additive: a note carrying none of them is valid, and every consumer treats a pre-provenance note (none of these keys) as valid. Placement rule: the orientation line stays the first non-key line, so it must follow whichever of these fields are present.
  • session: <harness>:<session-id>
    — the current session's harness and id, read from the per-harness source map:
    • claude — the newest
      *.jsonl
      in the encoded-cwd projects dir (
      ~/.claude/projects/<encoded-cwd>/
      ); its basename (minus
      .jsonl
      ) is the session id.
    • codex — the
      payload.cwd
      field in the rollout meta line of the active rollout log.
    • opencode — the matching row in the
      session
      table.
    • When the harness is unknown or no log is accessible, omit the field.
      <speculative>
      the newest-mtime claude heuristic can bind the wrong
      *.jsonl
      when several live sessions share one cwd; the field is optional so a wrong bind is hand-correctable.
  • git: <branch>@<short-sha>
    — the branch and short commit at capture time. Use any callable, read-only git inspection capability the active harness exposes. CLI transports may run
    git status --short --branch
    for the branch and
    git rev-parse --short HEAD
    for the short SHA. Omit the field when git inspection is unavailable, outside a git repository, or either value cannot be determined.
  • created: <UTC ISO-8601>
    — the capture timestamp in UTC ISO-8601 (e.g.
    2026-07-09T14:32:00Z
    ).
  • parents: [<slug>, ...]
    — lineage. Empty or absent for a fresh single-thread note.
    --join
    sets two or more source slugs; each
    --split
    child sets exactly the current slug.
artifact:
和定位说明行之间有四个可选的溯源字段。这些字段需从当前会话自动填充,切勿使用用户提供的值。四个字段均为可选且可叠加:不包含这些字段的笔记依然有效,所有处理程序都会将无溯源字段的笔记视为有效。放置规则:定位说明行必须是第一个非键值行,因此它必须跟在所有已填充的溯源字段之后。
  • session: <harness>:<session-id>
    — 当前会话的harness和id,从每个harness的源映射中读取:
    • claude — 编码后的工作目录项目目录(
      ~/.claude/projects/<encoded-cwd>/
      )中最新的
      *.jsonl
      文件;其文件名(去掉
      .jsonl
      )即为会话id。
    • codex — 活跃部署日志中rollout元数据行的
      payload.cwd
      字段。
    • opencode
      session
      表中的匹配行。
    • 当harness未知或无法访问日志时,省略该字段。
      <speculative>
      最新修改时间的claude启发式方法在多个活跃会话共享一个工作目录时可能绑定错误的
      *.jsonl
      文件;该字段为可选,因此错误绑定可手动修正。
  • git: <branch>@<short-sha>
    — 捕获时的分支和短提交哈希。使用当前harness提供的任何可调用、只读的git检查功能。CLI传输可运行
    git status --short --branch
    获取分支,运行
    git rev-parse --short HEAD
    获取短SHA。当无法进行git检查、不在git仓库中或无法确定任一值时,省略该字段。
  • created: <UTC ISO-8601>
    — 捕获时间戳,采用UTC ISO-8601格式(例如
    2026-07-09T14:32:00Z
    )。
  • parents: [<slug>, ...]
    — lineage。全新单线程笔记的该字段为空或省略。
    --join
    操作会设置两个或更多源slug;每个
    --split
    子分支仅设置当前slug。

status:
values

status:
取值

  • ok
    — the next step is unblocked;
    /cheese --continue
    auto-dispatches
    next:
    .
  • gated: <one-line decision>
    — work is fine, but the next step is blocked on a human decision. Name the decision in one line. On
    /cheese --continue
    , the reader surfaces the decision plus the body's open-questions/blockers and asks which direction (research / decide / build); it dispatches nothing until the user picks. Never collapse a gate into a bare actionable
    next:
    with
    status: ok
    — that is the misfire this contract exists to stop. Any open blocker in the body mandates
    status: gated:
    , not
    status: ok
    .
  • halt: <one-line reason>
    — a blocker stopped the work mid-flight; surface the reason, then dispatch the runnable
    next:
    (unchanged).
  • ok
    — 下一步工作无阻塞;
    /cheese --continue
    会自动调度
    next:
    指定的技能。
  • gated: <单行决策内容>
    — 工作进展正常,但下一步需等待人工决策。用一行文字说明决策内容。在
    /cheese --continue
    时,执行者会展示该决策内容以及正文中的未解决问题/阻塞,并询问方向(调研/决策/构建);在用户做出选择前不会调度任何操作。切勿将阻塞的情况简化为
    status: ok
    并设置可执行的
    next:
    ——这正是本规则要避免的错误。正文中任何未解决的阻塞都必须设置
    status: gated:
    ,而非
    status: ok
  • halt: <单行原因>
    — 阻塞导致工作中途停止;展示原因,然后调度
    next:
    指定的可执行技能(保持不变)。

next:
values and semantics

next:
取值及语义

Single-value
next:
is one of the pipeline phases (
mold | cook | press | age | cure | affinage
), a read-only kickoff (
briesearch | culture
),
hold
,
tasks
(with
mode: parallel
), or
done
.
  • mold
    /
    cook
    /
    press
    /
    age
    /
    cure
    — the pipeline phases. Which one fits the session state (and the mid-phase resume case, e.g.
    /cook
    interrupted) is defined by the
    ## Suggested skills
    mapping table below, which owns these semantics.
  • affinage
    — PR has review comments or failing CI. Record the PR reference in
    artifact:
    (
    PR#<n>
    or URL) so the resume dispatches
    /affinage <pr>
    explicitly.
  • briesearch | culture
    — read-only, low-risk next moves. Under
    status: ok
    ,
    /cheese --continue
    auto-dispatches them directly (frictionless research/think kickoff), deriving any dispatch argument (e.g.
    briesearch
    's question) from the orientation line. A move that needs a human decision belongs in
    status: gated:
    .
  • hold
    — restore orientation and wait for instruction; dispatch nothing. For compacting or stringing context along when no action is implied. Distinct from
    done
    (work finished, record only).
  • done
    — work genuinely finished; handoff is a record, not a baton. Use only for true terminal completion.
  • A missing
    next:
    is a malformed handoff.
    /cheese --continue
    flags it (
    malformed handoff: next: required
    ) rather than guessing or defaulting. Declare intent explicitly —
    hold
    is the value for "no action."
单值
next:
可以是流水线阶段(
mold | cook | press | age | cure | affinage
)、只读启动技能(
briesearch | culture
)、
hold
tasks
(搭配
mode: parallel
)或
done
  • mold
    /
    cook
    /
    press
    /
    age
    /
    cure
    — 流水线阶段。根据会话状态(以及阶段中途恢复的情况,例如
    /cook
    被中断)选择合适的阶段,具体由下文的
    ## Suggested skills
    映射表定义。
  • affinage
    — PR存在评审意见或CI失败。在
    artifact:
    字段中记录PR引用(
    PR#<n>
    或URL),以便恢复时显式调度
    /affinage <pr>
  • briesearch | culture
    — 只读、低风险的下一步操作。在
    status: ok
    时,
    /cheese --continue
    会直接自动调度这些技能(无摩擦的调研/思考启动),从定位说明行推导调度参数(例如
    briesearch
    的问题)。需要人工决策的操作应设置为
    status: gated:
  • hold
    — 恢复定位并等待指令;不调度任何操作。用于压缩或延续上下文但无需执行操作的场景。与
    done
    (工作完成,仅作记录)不同。
  • done
    — 工作真正完成;交接仅作为记录而非接力棒。仅当工作确实完成时使用。
  • 缺失
    next:
    的交接文档是格式错误的
    /cheese --continue
    会标记错误(
    malformed handoff: next: required
    ),而非猜测或使用默认值。需明确声明意图——
    hold
    是“无操作”的取值。

next:
list form

next:
列表形式

To kick off several read-only follow-ups from one handoff,
next:
may be a list with a required
order:
:
markdown
next: [briesearch "slug1", briesearch "slug2", culture "slug3"]
order: parallel | sequential
  • Each item is
    <skill> "<arg>"
    .
    order:
    is required when
    next:
    is a list.
  • order: parallel
    /cheese --continue
    fans out concurrent read agents, one per item, in the same turn.
  • order: sequential
    — items run in listed order.
  • The inline list is restricted to read-only skills (
    briesearch | culture
    ). Parallel write efforts still require the heavyweight
    mode: parallel
    +
    tasks:
    block with worktree/branch isolation below; sequential pipeline chaining stays the job of
    --auto
    /
    /cook
    's fan pathway.
For multiple independent next moves, use
mode: parallel
, set
next: tasks
, add a
parallel:
block, and add a
tasks:
list immediately after the orientation line. Each task must carry its exact
command:
; commands may name different skills. Parallel write tasks must never share a checkout. Choose one portable isolation strategy:
worktree_strategy
Use whenRequired fields
existing
The user already has durable bench checkoutseach write task has distinct
worktree:
,
branch:
, and
branch_from
create
No checkouts exist yet
worktree_root
, plus each write task has
branch:
and
branch_from
harness
The host can create isolated threads/worktreeseach write task has
branch:
and
branch_from
; the host owns checkout creation
Example:
markdown
status: ok
next: tasks
mode: parallel
artifact: none
KIP-76 and KIP-77 are ready to run as independent PR efforts.
parallel:
  isolation: git-worktree
  worktree_strategy: existing
tasks:
  - slug: kip-77-ai-test-server
    intent: cook
    repo: /Users/marcus/Documents/multiplier
    worktree: /Users/marcus/Documents/multiplier-01
    branch: marcus/kip-77-ai-test-server
    branch_from: origin/main
    command: /cook .cheese/specs/kip-77-ai-test-server.md
  - slug: kip-76-ai-service-spin-up
    intent: cook
    repo: /Users/marcus/Documents/multiplier
    worktree: /Users/marcus/Documents/multiplier-02
    branch: marcus/kip-76-ai-service-spin-up
    branch_from: origin/main
    command: /cook .cheese/specs/kip-76-ai-service-spin-up.md
For a generic setup without existing benches, use
worktree_strategy: create
and add
worktree_root: ../.cheese-worktrees
;
/cheese --continue
derives one checkout per task from the task slug.
要从一份交接文档启动多个只读后续操作,
next:
可以是一个列表,且必须搭配
order:
字段:
markdown
next: [briesearch "slug1", briesearch "slug2", culture "slug3"]
order: parallel | sequential
  • 每个条目格式为
    <skill> "<arg>"
    。当
    next:
    为列表时,
    order:
    字段为必填
  • order: parallel
    /cheese --continue
    会在同一轮调度中并行启动多个只读Agent,每个条目对应一个。
  • order: sequential
    — 条目按列出的顺序依次运行。
  • 内联列表仅适用于只读技能(
    briesearch | culture
    )。并行写入操作仍需使用重量级的
    mode: parallel
    +
    tasks:
    块,并搭配下文的工作树/分支隔离策略;流水线的顺序链式调用仍由
    --auto
    /
    /cook
    的分支路径处理。
对于多个独立的下一步操作,使用
mode: parallel
,设置
next: tasks
,添加
parallel:
块,并在定位说明行后添加
tasks:
列表。每个任务必须包含确切的
command:
;命令可指定不同的技能。并行写入任务绝不能共享同一个检出目录。选择以下一种可移植的隔离策略:
worktree_strategy
使用场景必填字段
existing
用户已拥有持久的基准检出目录每个写入任务需包含不同的
worktree:
branch:
branch_from
create
尚无检出目录
worktree_root
,加上每个写入任务的
branch:
branch_from
harness
主机可创建隔离线程/工作树每个写入任务的
branch:
branch_from
;主机负责创建检出目录
示例:
markdown
status: ok
next: tasks
mode: parallel
artifact: none
KIP-76和KIP-77已准备好作为独立PR推进。
parallel:
  isolation: git-worktree
  worktree_strategy: existing
tasks:
  - slug: kip-77-ai-test-server
    intent: cook
    repo: /Users/marcus/Documents/multiplier
    worktree: /Users/marcus/Documents/multiplier-01
    branch: marcus/kip-77-ai-test-server
    branch_from: origin/main
    command: /cook .cheese/specs/kip-77-ai-test-server.md
  - slug: kip-76-ai-service-spin-up
    intent: cook
    repo: /Users/marcus/Documents/multiplier
    worktree: /Users/marcus/Documents/multiplier-02
    branch: marcus/kip-76-ai-service-spin-up
    branch_from: origin/main
    command: /cook .cheese/specs/kip-76-ai-service-spin-up.md
对于没有现有基准目录的通用设置,使用
worktree_strategy: create
并添加
worktree_root: ../.cheese-worktrees
/cheese --continue
会根据任务slug为每个任务生成一个检出目录。

Document

Document

After the slug, write a
## Document
section. Open with the answer; keep every claim readable to someone who has not seen the conversation. Cover, in order, only the parts that carry signal:
  • Goal. The one or two sentences that say what we are trying to achieve.
  • State. What is done and verified, what is in-flight, what is untouched. Be honest about partial work; a half-finished step described accurately beats a tidy lie (Rule 9).
  • Key decisions and constraints. The choices a fresh agent would otherwise re-litigate, each with a calibrated tag (
    `<certain>`
    /
    `<speculating>`
    /
    `<don't know>`
    ) and a one-line why.
  • Open questions and blockers. What is unresolved and what it is waiting on.
  • Artifacts. A list of paths and URLs, not their contents. See
    ## Do not duplicate
    .
  • Suggested skills. The concrete next moves. See
    ## Suggested skills
    for the state-to-skill mapping.
  • Environment. Branch, dirty files, anything non-obvious about the working state. Redacted.
Follow the house style in
../cheese/references/formatting.md
: no em-dashes, complete sentences in prose, no throat-clearing, calibrated tags on the claim.
在slug之后,编写
## Document
部分。开门见山;确保每一项内容对未看过对话的人来说都清晰易懂。按顺序仅保留有价值的内容:
  • 目标:用一到两句话说明我们要达成的目标。
  • 状态:已完成并验证的内容、正在处理的内容、未涉及的内容。如实描述部分完成的工作;准确描述未完成的步骤比虚假的整洁更重要(规则9)。
  • 关键决策与约束:新Agent可能会重新讨论的选择,每个选择都带有校准标签(
    `<certain>`
    /
    `<speculating>`
    /
    `<don't know>`
    )和一行说明原因。
  • 未解决问题与阻塞:尚未解决的问题以及等待的条件。
  • 工件:路径和URL列表,而非内容。遵循
    ## Do not duplicate
    规则。
  • 建议技能:具体的下一步操作。详见
    ## Suggested skills
    的状态到技能映射表。
  • 环境:分支、未提交文件、工作状态中任何不明显的信息。已脱敏。
遵循
../cheese/references/formatting.md
中的格式规范:不使用破折号,散文使用完整句子,不写冗余铺垫,为声明添加校准标签。

Suggested skills

Suggested skills

Derive
next:
and
status:
from the body's blockers, not from optimism. See
### status: values
for the gate rule.
Pick the next move from where the session actually is, name it as an easy-cheese skill with its argument, and write the same target into the slug's
next:
field. Suggest the single best next step, plus the step after it when the path is obvious. When the session has two or more independent tracks that can proceed without sharing branch state, write
mode: parallel
, set
next: tasks
, and put each exact skill invocation under
tasks:
instead of collapsing them into one sequential next step. For several read-only follow-ups, use the inline
next:
list with
order:
instead. The map:
Where the session isSuggest
next:
Fuzzy idea, no approved spec yet
/mold
mold
Research wanted before deciding or building
/briesearch <question>
briesearch
Wants to think a problem through, no writes
/culture
culture
Next step blocked on a human decisionsurface the decision, ask direction— (set
status: gated:
)
Compacting or stringing along, no action impliedrestore orientation, wait
hold
Approved spec, not yet implemented
/cook <spec-path>
cook
Code written, not yet hardened or reviewed
/press <slug>
then
/age
press
Implementation done, review wanted now
/age <ref>
age
Review findings in hand, fixes not applied
/cure <slug>
cure
PR has review comments or failing CI
/affinage <pr>
affinage
Hard bug still un-diagnosedsurface the blocker; invoke
/pasteurize
once ready
— (set
status: gated:
)
Work genuinely finishedrecord only, no baton
done
When the session sits mid-phase (e.g.
/cook
was interrupted), suggest re-entering that same phase with the slug. Tailor to the optional focus argument when the user gave one: it overrides the table if the next session is meant to do something other than advance the pipeline.
根据正文中的阻塞情况推导
next:
status:
,而非基于乐观预期。详见
### status: values
的阻塞规则。
根据会话的实际进度选择下一步操作,将其命名为easy-cheese技能并带上参数,同时将相同的目标写入slug的
next:
字段。建议单个最佳下一步操作,当路径明确时可加上再下一步的操作。当会话有两个或更多独立分支且无需共享分支状态即可推进时,设置
mode: parallel
next: tasks
,并将每个确切的技能调用放在
tasks:
下,而非合并为一个顺序的下一步操作。对于多个只读后续操作,使用带
order:
的内联
next:
列表而非其他方式。映射表:
会话进度建议操作
next:
模糊想法,尚无获批规格
/mold
mold
决策或构建前需要调研
/briesearch <question>
briesearch
想要深入思考问题,无需写入操作
/culture
culture
下一步需等待人工决策展示决策内容,询问方向—(设置
status: gated:
压缩或延续上下文,无需执行操作恢复定位并等待
hold
已获批规格,尚未实现
/cook <spec-path>
cook
代码已编写,尚未加固或评审
/press <slug>
然后
/age
press
实现完成,需要评审
/age <ref>
age
已收到评审结果,尚未修复
/cure <slug>
cure
PR存在评审意见或CI失败
/affinage <pr>
affinage
疑难问题尚未诊断展示阻塞;准备就绪后调用
/pasteurize
—(设置
status: gated:
工作真正完成仅作记录,无需接力
done
当会话处于阶段中途(例如
/cook
被中断),建议使用该slug重新进入同一阶段。如果用户提供了可选的重点参数,需根据该参数调整:如果下一次会话的目标不是推进流水线,则该参数优先级高于映射表。

Required body sections by state

不同状态下的必填正文部分

The opening line ("
/wheypoint
captures just enough state for a cold reader to resume") sets the default: compress everything that does not serve the resume. This table names the one exception and pins the minimum
## Document
sections each
status:
/
next:
combination requires, so compression never eats the state a resume actually needs.
staterequired Document sections
status: gated:
## Decision dossier
— per open fork: options / evidence
file:line
/ what-each-breaks / prior leanings
next: culture
agenda + open-thread state
next: cure
findings artifact ref
next: cook
/
press
/
age
spec/slug pointers per existing conventions
next: hold
/
done
orientation only
status: gated:
overrides the "just enough state" compression rule for gated notes.
Every open fork gets its own
## Decision dossier
entry — options considered, evidence as
file:line
citations, what each option breaks, and any prior leaning from the session — instead of the one-line decision the compression default would otherwise leave. A resumed session with a consequential fork rebuilds its prose weighing from this dossier; see
../cheese/references/ask-user-question.md
§ When to structure for why an undiscussed design fork needs that weighing rather than a structured confirm.
开头的句子(“
/wheypoint
captures just enough state for a cold reader to resume”)设定了默认规则:压缩所有对恢复工作无用的内容。下表列出了一个例外情况,并明确了每种
status:
/
next:
组合所需的最小
## Document
部分,确保压缩不会丢失恢复工作所需的状态信息。
状态必填Document部分
status: gated:
## Decision dossier
— 每个未决分支:选项 / 证据
file:line
/ 每个选项的影响 / 之前的倾向
next: culture
议程 + 未完成线程状态
next: cure
结果工件引用
next: cook
/
press
/
age
遵循现有规范的规格/slug指针
next: hold
/
done
仅定位说明
status: gated:
会覆盖 gated笔记的“仅保留必要状态”压缩规则
。每个未决分支都需要单独的
## Decision dossier
条目——包含考虑的选项、
file:line
格式的证据、每个选项的影响、以及会话中之前的倾向——而非压缩默认规则下的单行决策内容。恢复的会话在处理重要分支时会根据该 dossier 重建论述;详见
../cheese/references/ask-user-question.md
§ 何时为未讨论的设计分支构建论述,而非结构化确认。

Do not duplicate

Do not duplicate

The point of a handoff is to be short enough to read cold. Anything already captured in a durable artifact gets a reference, not a copy:
  • Specs, findings reports, research reports under
    .cheese/
    — link by path.
  • PRs, issues, commits, diffs — link by URL or sha.
  • Plans, ADRs, design docs — link by path or URL.
Summarise an artifact only when the summary is genuinely shorter than its pointer. Re-pasting a diff or a spec into the handoff is the failure mode this skill exists to avoid.
交接文档的核心是简洁,便于不了解前情的人快速阅读。任何已记录在持久工件中的内容只需引用,无需复制:
  • .cheese/
    下的规格、结果报告、调研报告——按路径链接。
  • PR、问题、提交记录、差异——按URL或哈希链接。
  • 计划、ADR、设计文档——按路径或URL链接。
仅当摘要确实比引用更短时才总结工件内容。将差异或规格重新粘贴到交接文档中是本技能要避免的失败模式。

Redaction

Redaction

Strip anything sensitive before writing: API keys, tokens, passwords, connection strings, and personally identifiable information. If a secret is required for the next session, reference where it lives (env var name, secret manager path), never its value.
写入文档前需移除所有敏感信息:API密钥、令牌、密码、连接字符串和个人身份信息。如果下一次会话需要使用密钥,只需引用其存储位置(环境变量名称、密钥管理器路径),切勿写入密钥值。

Handoff

Handoff

The handoff document is the only thing
/wheypoint
writes. No commits, PRs, or production-code edits. Use the host's read-only inspection capabilities plus a write capability scoped to
.cheese/notes/**
. End by showing the slug's orientation line, a normal Markdown link to the note, and repo-root-aware resumption commands. Keep the note link outside fenced code so it is clickable. The link line should match this shape:
Wheypoint dropped: [.cheese/notes/<slug>.md](<absolute-note-path>)
.
Resume from original repo:
bash
cd <absolute-repo-path>
/cheese --continue <slug>
Resume from anywhere:
bash
/cheese --continue <absolute-repo-path>/.cheese/notes/<slug>.md
/wheypoint
仅会写入交接文档,不会进行提交、创建PR或编辑生产代码。使用主机的只读检查功能,以及仅对
.cheese/notes/**
生效的写入权限。最后展示slug的定位说明行、指向笔记的标准Markdown链接,以及基于仓库根目录的恢复命令。将笔记链接放在代码块外,确保可点击。链接行应符合以下格式:
Wheypoint dropped: [.cheese/notes/<slug>.md](<absolute-note-path>)
从原始仓库恢复:
bash
cd <absolute-repo-path>
/cheese --continue <slug>
从任意位置恢复:
bash
/cheese --continue <absolute-repo-path>/.cheese/notes/<slug>.md