Repository navigation
fix(skills): show the Next action marker in autopilot's handoff example - #3113
Conversation
The example piped a $BODY it never showed into handoff-write, so an agent following it wrote a thread with no first step. Show the body, with the **Next action:** line, and pin it: a test feeds the example's own body to ThreadWarnings and fails if the writer would warn. The warning now names the marker it looks for.
…e change The skill is generated from the vault (00_meta/skills/autopilot/SKILL.md); the declared sha now matches the body.
Vault source still needs this change
Edit to apply to diff --git a/00_meta/skills/autopilot/SKILL.md b/00_meta/skills/autopilot/SKILL.md
index d46aa80c..c88e14d8 100644
--- a/00_meta/skills/autopilot/SKILL.md
+++ b/00_meta/skills/autopilot/SKILL.md
@@ -323,8 +323,15 @@ When the operator returns, the time window expires, the backlog empties, or a st
```bash
MEMORY_MD="$(dotf env path VAULT_PATH)/10_projects/<repo>/memory/MEMORY.md"
dotf mem thread # which thread am I: wt-<slug>, or main@<host>
- printf '%s' "$BODY" | dotf mem handoff-write --memory "$MEMORY_MD" --agent <agent>
+ printf '%s\n' \
+ '> Updated: <YYYY-MM-DD><br>' \
+ '**Last task:** <what this run did, with PR numbers><br>' \
+ '**Next action:** <the one concrete first step for the next session><br>' \
+ '**Awaiting Manu:** <decisions only the operator can take; drop the line if none>' |
+ dotf mem handoff-write --memory "$MEMORY_MD" --agent <agent>
```
+ The `**Next action:**` line is not optional: without it `handoff-write` warns
+ "no `**Next action:**` line" and still writes the thread, so the next session starts with no first step.
The full checklist (journal, board reconciliation, artifact summary, one next action) is
`00_meta/skills/handoff/SKILL.md`. `--memory "$REPO_ROOT/MEMORY.md"` — which an earlier draft used —
would write the handoff nowhere near where the next session reads it. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 40 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. CodeRabbit Verify
|
Review triageThe PR author did this triage.
|
| printf '%s\n' \ | ||
| '> Updated: <YYYY-MM-DD><br>' \ | ||
| '**Last task:** <what this run did, with PR numbers><br>' \ | ||
| '**Next action:** <the one concrete first step for the next session><br>' \ | ||
| '**Awaiting Manu:** <decisions only the operator can take; drop the line if none>' | | ||
| dotf mem handoff-write --memory "$MEMORY_MD" --agent <agent> | ||
| ``` | ||
| The `**Next action:**` line is not optional: without it `handoff-write` warns | ||
| "no `**Next action:**` line" and still writes the thread, so the next session starts with no first step. |
There was a problem hiding this comment.
Harness compliance
Class: REAL
SSOT (Standing Order #2, knowledge placement): the edited file is generated: true from 00_meta/skills/autopilot/SKILL.md, but only the render is changed here while the generator source stays stale. Concrete trace: any session that runs dotf harness refresh before the vault edit lands regenerates this file from the vault, restoring printf '%s' "$BODY" and dropping the **Next action:** line — agents again learn the broken example, and TestAutopilotHandoffExampleCarriesNextAction goes red in CI until someone re-applies the vault edit out of band. The PR discloses the pending vault edit, but as submitted the fix is one routine refresh away from being undone, and dotf harness check cannot see the divergence.
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
⚙️ Agent run details
|
Review triageThe PR author did this triage. Reviewer: PR-Agent (
This PR touches |
Closes #3110
What
The autopilot skill's exit protocol piped
$BODYintodotf mem handoff-writewithout showing a body. An agent following it literally wrote a thread with no**Next action:**, whichhandoff-writewarns about and still writes.harness/skills/autopilot/SKILL.md(a render of the vault's00_meta/skills/autopilot/SKILL.md; the vault edit is attached in a comment and still needs applying there): the example now shows the body asprintfarguments (a heredoc terminator breaks when the example sits indented in a list item), including the**Next action:**line, with a sentence saying why it is not optional.cli/internal/mem/thread.go: the warning now names the marker it looks for (no **Next action:** line, ...), so the message says what to add.cli/internal/mem/skill_example_test.go(new): extracts the example body from the skill and runs it throughThreadWarnings. It fails if the example ever draws a warning. Mutation check: deleting the**Next action:**line from the skill made it fail withno Next action ... first step.Not done, by choice: making
handoff-writerefuse without the marker. The code documents that a warning never blocks the write ("a handoff in an odd shape is still a handoff, and refusing it would lose it"), so a refusal is a behaviour change to a public CLI contract and belongs in its own ticket. The issue lists it as optional.Evidence (run from
cli/)Red first: before the skill edit the new test failed with
autopilot SKILL.md has no printf ... | dotf mem handoff-write example.Knowledge