From ciao
Package the current conversation into a structured prompt and hand it off to a Ciao project as a subagent. Use when the user has reached a plan locally and wants Ciao to build it.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ciao:ciao-handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are about to hand off the current conversation to a Ciao project. Ciao
You are about to hand off the current conversation to a Ciao project. Ciao will spawn a subagent that picks up where you left off and does the actual build inside a sandbox.
The user has:
If they haven't reached a plan, finish the planning first. Handoff is for shipping a clear ask, not for offloading half-formed thoughts.
Compose a single self-contained prompt that includes:
Aim for under 1500 words. The subagent has its own context window and its own copy of the project; it does not see your local repo. Be generous with file paths and short excerpts, but do not paste entire files.
Resolve the project id (from the user's hint via ciao_resolve_project),
then POST to /subagents/spawn:
source "$CLAUDE_SKILL_DIR/../../lib/ciao-api.sh"
PROJECT_ID="$(ciao_resolve_project "$user_project_hint")"
PROMPT="$(cat <<'EOF'
<your packaged prompt here>
EOF
)"
PAYLOAD="$(jq -n \
--arg pid "$PROJECT_ID" \
--arg prompt "$PROMPT" \
--arg label "$user_supplied_label_or_empty" \
'{
project_id: $pid,
prompt: $prompt,
convergence: "auto",
plan_mode: false,
label: (if $label == "" then null else $label end)
} | with_entries(select(.value != null))')"
RESPONSE="$(ciao_agent_post /subagents/spawn "$PAYLOAD")"
SESSION_ID="$(echo "$RESPONSE" | jq -r .session_id)"
convergence: "auto" — the subagent merges itself when it finishes.
Override to "manual" if the user explicitly says they want to review
the diff before it lands. If you find yourself overriding to manual
more than once or twice for the same user, propose editing this skill
to flip the default.plan_mode: false — planning happened locally with you. Do not double-plan.Report back to the user with:
The friendly label (returned in RESPONSE) or the session id
A link they can open. Build it using the workspace slug from
ciao_workspace_slug and the project's slug:
WS_SLUG="$(ciao_workspace_slug)"
PROJECT_SLUG="$(echo "$projects_json" | jq -r --arg id "$PROJECT_ID" '.projects[] | select(.id == $id) | .slug')"
LINK="https://app.ciao.dev/w/$WS_SLUG/projects/$PROJECT_SLUG/builder?subagent=$SESSION_ID"
One line about what the subagent will do
Do not poll for status from the CLI. The user can watch in the browser.
401 Unauthorized → token expired or revoked. Tell the user to re-mint.403 Missing required scope: subagent:spawn → their PAT does not grant
this scope. Send them to Integrations → Personal access tokens to mint
a new one with the right scope.403 Project not in allowlist → their PAT is restricted to specific
projects. Either pick an allowed project or mint a wider token.npx claudepluginhub desygner/cc-marketplace --plugin ciaoProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.