| name | pickup |
| description | Start-of-session context pickup. Reads the latest handoff file and resumes work where the last session left off. Run this at the start of a new session if a handoff file exists. |
Clade for Codex
This workflow runs directly in Codex. Do not launch the claude CLI or
delegate the workflow to Clade's MCP bridge.
Codex compatibility rules:
- Plugin skills are namespaced. Invoke this workflow explicitly as
$clade:pickup; a bare $name does not select the installed Clade plugin.
- Read the nearest
AGENTS.md files for repository instructions. If a project
has only CLAUDE.md, treat it as legacy project guidance and read it too.
- Store new Clade working state under
.clade/ (or ~/.clade/ for personal
state). Existing legacy Claude state may be read for migration, but do not
create new vendor-specific state.
- A
/skill-name reference means the corresponding Codex
$clade:skill-name plugin skill, or the same workflow invoked naturally when
explicit skill invocation is not available.
- Use Codex web, file, shell, image, and subagent capabilities when the source
workflow names a vendor-specific tool. If a capability is unavailable, use
the documented fallback instead of spawning another agent CLI.
- Paths such as
<plugin-root>/... are relative to the installed Clade plugin
containing this SKILL.md; resolve that root before invoking a helper.
Canonical Clade workflow
name: pickup
trigger: user runs /pickup at start of new session, or after /handoff
completion-status: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT
Resume work from the most recent handoff file.
Execution Steps
Step 1: Find Handoff File
ls -t .clade/handoff-*.md 2>/dev/null | head -5
If no files found: say "No handoff file found. Starting fresh." and stop.
Step 2: Read + Parse
Read the most recent handoff file completely.
Parse these sections:
- Goal: the one-sentence objective
- Blocked: check if "none" or has real blockers
- Next Steps: the ordered action list
- Meta: branch, uncommitted status, build status
Step 3: Verify Git State
git branch --show-current
git status -sb
If current branch doesn't match handoff Meta.Branch: warn the user but continue.
Step 4: Display Briefing (max 20 lines)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Resuming: {handoff date} ({X hours/days ago})
Goal: {Goal section content}
Done: {count of Done โ
items}
In Progress: {In Progress items if any}
Blocked: {Blocked content OR "none"}
Branch: {branch} Build: {passing|failing|unknown}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Picking up at:
โ {Next Steps #1}
โ {Next Steps #2}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Step 5: Resume or Pause
If Blocked is "none": Immediately start executing Next Steps #1. Do NOT ask "shall I proceed?" โ just start.
If Blocked has items: List each blocker clearly. Ask user to resolve before continuing autonomously.
If handoff is >48 hours old: Flag the age prominently. Ask user to confirm goal is still current before proceeding.
Completion Status
- โ
DONE: Handoff loaded and resumed (or blockers presented)
- โ DONE_WITH_CONCERNS: Loaded but git state doesn't match, or handoff >48h old
- โ BLOCKED: No handoff file found, or file unreadable
- โ NEEDS_CONTEXT: Ask via AskUserQuestion
3-Strike Rule
If you fail to complete a step 3 times: write failure details to .clade/blockers.md and stop.
Delivery completion
If this workflow changes files or external state:
- Inspect the real final state before responding, including
git status for a
repository task.
- Never report
DONE while task-owned changes are uncommitted. Use or continue
$clade:delivery and create a repository-compliant checkpoint or preserve
the work when committing is unavailable.
- When the user request or trusted repository policy makes publication,
deployment, or live verification part of the task, do not silently downgrade
the result to local-only work.
- If a required delivery transition lacks authority, credentials, a destination,
or reachable external state, report
BLOCKED or NEEDS_CONTEXT rather than
appending a "not committed/pushed/deployed" caveat after DONE.