Codiff
Use Codiff either to review a narrative walkthrough of a code change or to hand a Markdown
plan to the user for visual editing before execution.
You write the JSON yourself because you already hold the conversation that produced the
change. Codiff owns the format and authoring guidance, so this skill only handles the handoff.
Choose The Mode
- Use plan share mode for
$codiff plan share, or when a share request is clearly about the
proposed plan in the current discussion.
- When the user says
$codiff share public or otherwise explicitly requests the public service,
add --public to the share command. Do not mention or document this flag otherwise.
- Use walkthrough share mode when the request includes
share, upload, link, URL, web,
or browser wording and is about code changes. An underspecified $codiff share defaults to a
walkthrough.
- Use plan mode for
$codiff plan or when the user explicitly asks to edit or approve a
plan in Codiff before execution.
- Use desktop mode for plain
$codiff, /codiff, "open Codiff", or "show me Codiff".
- In share mode, only pass
--open when the user explicitly asks to open the resulting share in
a browser. Otherwise return the URL without opening it.
Plan Mode
Write the complete proposed plan to a Markdown file. Use a unique temporary file outside the
repository unless the user named a canonical plan file.
Make the intended next action explicit in the document. The user should be able to edit,
remove, or reorder any part of the plan.
Open the blocking handoff:
node scripts/open-codiff.mjs --plan /tmp/codiff-plan-<id>.md
Wait for Codiff to return. status: "done" means the user clicked Done. status: "closed"
means the user closed the window after Codiff flushed the file and comments. A canceled handoff
means the app could not complete the handoff and must not be treated as approval.
Read the CODIFF_PLAN_RESULT JSON emitted when Codiff closes. Re-read the entire Markdown file
and process every thread in review.threads whose status is "open". Treat edits, additions,
removals, reordered steps, and open comments as user direction. Use quoted anchor context for
detached comments. Resolved comments are retained history and must not be processed again.
After successfully applying one or more open comments, acknowledge only the handled thread IDs
using the exact reviewPath from CODIFF_PLAN_RESULT:
node scripts/open-codiff.mjs --resolve-plan-comments "<reviewPath>" <thread-id>...
Do not resolve comments that were ambiguous, deferred, or not applied.
For status: "done", execute the edited plan when the next action is clear. For
status: "closed", continue only when documentChanged is true or unresolved comments contain
user direction; otherwise treat the close as cancellation. If the feedback is materially
ambiguous, ask one focused question before changing code.
The edited Markdown file is the feedback. Do not require comments, annotations, or a separate
approval document.
Plan Share Mode
Write the complete plan to a Markdown file, using the same authoring rules as plan mode.
Upload it without opening a blocking desktop handoff:
node scripts/open-codiff.mjs --plan /tmp/codiff-plan-<id>.md --share [--public]
Add --open only when the user explicitly asks to open the shared plan in a browser.
Return only the /p/… URL printed by the command.
Walkthrough Workflow
Get the current guidance from Codiff. It explains the data model and prints the JSON
schema:
node scripts/open-codiff.mjs --guide
Pick the change. Default to the staged diff (git diff --staged). If the user named a
target such as a commit, HEAD, a PR/MR, a range, or a path, use that. If nothing is
staged, fall back to the working tree (git diff) and say so.
Author the JSON per the guide and write it to a unique temporary file outside the
repository, such as $TMPDIR/codiff-walkthrough-<id>.json.
Complete the selected handoff.
Desktop mode:
node scripts/open-codiff.mjs --file /tmp/codiff-walkthrough-<id>.json /path/to/repository
Share mode:
node scripts/open-codiff.mjs --share [--public] --file /tmp/codiff-walkthrough-<id>.json /path/to/repository
Share and open in the default browser:
node scripts/open-codiff.mjs --share --open --file /tmp/codiff-walkthrough-<id>.json /path/to/repository
Forward an explicit target after the flags:
node scripts/open-codiff.mjs --share --file /tmp/codiff-walkthrough-<id>.json HEAD /path/to/repository
node scripts/open-codiff.mjs --share --file /tmp/codiff-walkthrough-<id>.json mr 123 /path/to/repository
The share command prints the final walkthrough URL to stdout. When the cached Cloudflare
Access token is missing or unusable, Codiff automatically opens the system browser for
authentication and resumes after sign-in. This authentication browser is independent of
--open, which only controls whether the completed walkthrough is opened.
Agent integration: Desktop launches link the most recent OpenCode session for the current
project and run Codiff with the OpenCode backend. The launcher's --share path retains OpenCode
as the authoring agent without attaching the conversation transcript. Codiff's managed
/codiff command can use the OpenCode model selected in Codiff; direct $codiff skill mentions
continue with the current session model.
Codiff validates and repairs the document against the live diff, so anchors that drift
are pinned to a real section rather than dropped.
Emit walkthrough JSON only into the temporary file. In desktop walkthrough mode, do not
summarize the conversation back to the user. In walkthrough share mode, respond with the URL
printed by the command. In plan share mode, respond with the shared plan URL. In plan mode,
continue from the edited Markdown after the blocking handoff returns.
1---2name: codiff-43description: Open Codiff for a narrative code walkthrough, a blocking plan handoff, or a shared walkthrough URL. Use when the user writes "$codiff", "/codiff", "$codiff plan", "$codiff share", "show me codiff", "open Codiff", or asks to review a change or edit a plan in Codiff.4---56# Codiff78Use Codiff either to review a **narrative walkthrough** of a code change or to hand a Markdown9plan to the user for visual editing before execution.1011You write the JSON yourself because you already hold the conversation that produced the12change. Codiff owns the format and authoring guidance, so this skill only handles the handoff.1314## Choose The Mode1516- Use **plan share mode** for `$codiff plan share`, or when a share request is clearly about the17 proposed plan in the current discussion.18- When the user says `$codiff share public` or otherwise explicitly requests the public service,19 add `--public` to the share command. Do not mention or document this flag otherwise.20- Use **walkthrough share mode** when the request includes `share`, `upload`, `link`, `URL`, `web`,21 or browser wording and is about code changes. An underspecified `$codiff share` defaults to a22 walkthrough.23- Use **plan mode** for `$codiff plan` or when the user explicitly asks to edit or approve a24 plan in Codiff before execution.25- Use **desktop mode** for plain `$codiff`, `/codiff`, "open Codiff", or "show me Codiff".26- In share mode, only pass `--open` when the user explicitly asks to open the resulting share in27 a browser. Otherwise return the URL without opening it.2829## Plan Mode30311. Write the complete proposed plan to a Markdown file. Use a unique temporary file outside the32 repository unless the user named a canonical plan file.332. Make the intended next action explicit in the document. The user should be able to edit,34 remove, or reorder any part of the plan.353. Open the blocking handoff:3637 ```bash38 node scripts/open-codiff.mjs --plan /tmp/codiff-plan-<id>.md39 ```40414. Wait for Codiff to return. `status: "done"` means the user clicked **Done**. `status: "closed"`42 means the user closed the window after Codiff flushed the file and comments. A canceled handoff43 means the app could not complete the handoff and must not be treated as approval.445. Read the `CODIFF_PLAN_RESULT` JSON emitted when Codiff closes. Re-read the entire Markdown file45 and process every thread in `review.threads` whose `status` is `"open"`. Treat edits, additions,46 removals, reordered steps, and open comments as user direction. Use quoted anchor context for47 detached comments. Resolved comments are retained history and must not be processed again.486. After successfully applying one or more open comments, acknowledge only the handled thread IDs49 using the exact `reviewPath` from `CODIFF_PLAN_RESULT`:5051 ```bash52 node scripts/open-codiff.mjs --resolve-plan-comments "<reviewPath>" <thread-id>...53 ```5455 Do not resolve comments that were ambiguous, deferred, or not applied.56577. For `status: "done"`, execute the edited plan when the next action is clear. For58 `status: "closed"`, continue only when `documentChanged` is true or unresolved comments contain59 user direction; otherwise treat the close as cancellation. If the feedback is materially60 ambiguous, ask one focused question before changing code.6162The edited Markdown file is the feedback. Do not require comments, annotations, or a separate63approval document.6465## Plan Share Mode66671. Write the complete plan to a Markdown file, using the same authoring rules as plan mode.682. Upload it without opening a blocking desktop handoff:6970 ```bash71 node scripts/open-codiff.mjs --plan /tmp/codiff-plan-<id>.md --share [--public]72 ```73743. Add `--open` only when the user explicitly asks to open the shared plan in a browser.754. Return only the `/p/…` URL printed by the command.7677## Walkthrough Workflow78791. **Get the current guidance from Codiff.** It explains the data model and prints the JSON80 schema:8182 ```bash83 node scripts/open-codiff.mjs --guide84 ```85862. **Pick the change.** Default to the staged diff (`git diff --staged`). If the user named a87 target such as a commit, `HEAD`, a PR/MR, a range, or a path, use that. If nothing is88 staged, fall back to the working tree (`git diff`) and say so.89903. **Author the JSON** per the guide and write it to a unique temporary file outside the91 repository, such as `$TMPDIR/codiff-walkthrough-<id>.json`.92934. **Complete the selected handoff.**9495 Desktop mode:9697 ```bash98 node scripts/open-codiff.mjs --file /tmp/codiff-walkthrough-<id>.json /path/to/repository99 ```100101 Share mode:102103 ```bash104 node scripts/open-codiff.mjs --share [--public] --file /tmp/codiff-walkthrough-<id>.json /path/to/repository105 ```106107 Share and open in the default browser:108109 ```bash110 node scripts/open-codiff.mjs --share --open --file /tmp/codiff-walkthrough-<id>.json /path/to/repository111 ```112113 Forward an explicit target after the flags:114115 ```bash116 node scripts/open-codiff.mjs --share --file /tmp/codiff-walkthrough-<id>.json HEAD /path/to/repository117 node scripts/open-codiff.mjs --share --file /tmp/codiff-walkthrough-<id>.json mr 123 /path/to/repository118 ```119120 The share command prints the final walkthrough URL to stdout. When the cached Cloudflare121 Access token is missing or unusable, Codiff automatically opens the system browser for122 authentication and resumes after sign-in. This authentication browser is independent of123 `--open`, which only controls whether the completed walkthrough is opened.124125 **Agent integration:** Desktop launches link the most recent OpenCode session for the current126 project and run Codiff with the OpenCode backend. The launcher's `--share` path retains OpenCode127 as the authoring agent without attaching the conversation transcript. Codiff's managed128 `/codiff` command can use the OpenCode model selected in Codiff; direct `$codiff` skill mentions129 continue with the current session model.130131 Codiff validates and repairs the document against the live diff, so anchors that drift132 are pinned to a real section rather than dropped.133134Emit walkthrough JSON only into the temporary file. In desktop walkthrough mode, do not135summarize the conversation back to the user. In walkthrough share mode, respond with the URL136printed by the command. In plan share mode, respond with the shared plan URL. In plan mode,137continue from the edited Markdown after the blocking handoff returns.