handoff — cross-agent task delegation
NAME
handoff — delegate a task from an external coding agent to SLICC through a base64url-encoded URL fragment
SYNOPSIS
https://www.sliccy.ai/handoff#<base64url-json>
.agents/skills/slicc-handoff/scripts/slicc-handoff [--open] [--stdin] <payload.json>
cat payload.json | .agents/skills/slicc-handoff/scripts/slicc-handoff [--open]
DESCRIPTION
A handoff lets an external agent (Claude Code, Codex, Cursor, or any tool that can open a browser tab) pass a structured task to SLICC. A JSON payload is base64url-encoded into the URL fragment of a handoff page. No server round-trip is needed — the fragment never leaves the browser.
When the handoff URL is opened in a tab, both the Chrome extension and the standalone CLI app detect it. SLICC queues the task as a pending handoff and shows an Accept / Dismiss prompt in the Chat tab. The human reviews the payload and decides whether to proceed.
Supported URL:
https://www.sliccy.ai/handoff#...
PAYLOAD SHAPE
The JSON payload has one required field and five optional fields:
instruction(string, required) — The task for SLICC to perform. Should be direct and action-oriented. This is the only required field.title(string, optional) — A short human-readable title for the handoff. Displayed in the approval prompt.urls(string[], optional) — Specific URLs relevant to the task. Only include when particular pages matter to the work.context(string, optional) — Supporting background information. Use this for details the agent needs but that don't belong in the instruction itself. Do not dump full logs unless they are necessary.acceptanceCriteria(string[], optional) — Concrete, checkable criteria that define when the task is done. Keep them short and specific.notes(string, optional) — Additional notes or constraints. Use for hints about the environment, session state, or approach preferences.
HELPER
The slicc-handoff skill bundles a Node.js helper script that builds the handoff URL from a JSON file or piped stdin.
.agents/skills/slicc-handoff/scripts/slicc-handoff payload.json
.agents/skills/slicc-handoff/scripts/slicc-handoff --open payload.json
cat payload.json | .agents/skills/slicc-handoff/scripts/slicc-handoff --open
<payload.json>— Path to a JSON file containing the handoff payload.--open— Open the generated URL in the local browser after printing it.--stdin— Read the payload from stdin. This flag is optional when stdin is piped — the script auto-detects a non-TTY stdin and reads from it automatically.-h, --help— Show usage information.
The helper validates the payload (checks that instruction is a non-empty string, urls and acceptanceCriteria are string arrays when present, and title, context, notes are strings when present), then prints the full handoff URL to stdout.
WORKFLOW
- The external agent builds a JSON payload with at minimum an
instructionfield. - The payload is passed to the helper script (or manually base64url-encoded).
- The helper prints the handoff URL. With
--open, it also opens the URL in the default browser. - SLICC (extension or CLI) detects the handoff tab and queues it.
- The human sees an Accept / Dismiss prompt in the Chat tab.
- On accept, SLICC begins executing the task with the provided context.
EXAMPLES
# Minimal handoff — just an instruction
echo '{"instruction": "Run the test suite and fix any failures"}' | \
.agents/skills/slicc-handoff/scripts/slicc-handoff --open
# Full payload from a file
cat <<'EOF' > /tmp/handoff.json
{
"title": "Verify signup flow",
"instruction": "Continue this task in SLICC and verify the signup flow works end to end.",
"urls": ["http://localhost:3000/signup"],
"context": "The local coding agent already changed the validation and submit flow.",
"acceptanceCriteria": [
"The signup form renders",
"Submitting valid data reaches the success state",
"No uncaught console errors appear"
],
"notes": "Use the currently signed-in browser session."
}
EOF
.agents/skills/slicc-handoff/scripts/slicc-handoff --open /tmp/handoff.json
# Pipe JSON directly from another tool
curl -s https://api.example.com/task/123 | \
jq '{instruction: .description, urls: [.url], title: .name}' | \
.agents/skills/slicc-handoff/scripts/slicc-handoff --open
ENCODING
The payload is serialized as UTF-8 JSON, then encoded with base64url (RFC 4648 §5, no padding). The encoded string is placed after the # in the URL. Because the fragment is never sent to the server, the handoff is fully client-side — no payload data touches the network.
RUNTIME COMPATIBILITY
Handoff detection works in both the Chrome extension and the standalone CLI. The extension's service worker watches for tabs matching the handoff URL pattern. The CLI app's BrowserAPI performs the same check. Both runtimes extract the fragment, decode the payload, and present the approval prompt identically.
SEE ALSO
cone, scoop, feed_scoop, skill, lick