name: ask description: Send a request to a CCB agent and wait for the reply synchronously. metadata: short-description: Ask agent (sync)
Use this when the user asks you to delegate with CCB, or when project memory
says to use CCB ask for collaboration.
Decision Card
Before every ask, decide:
- Need delegation? If no, answer directly.
- Result intent:
--silence: publish/execute task; success result not needed. Failures, blockers, risks, or required next actions still surface.--compact: result wanted, but only distilled findings/status/risks/blockers/next actions.+ --artifact-reply: consultation/analysis/report where full text should be preserved.- plain
ask: short question or short handoff where inline text is enough. --callback: active CCB parent job + child result required to finish. Combine with--compactor--artifact-replyas needed. Submit, then stop for continuation.
- Request fidelity:
+ --artifact-request: exact transient input (logs/output/diffs/copied contents/config/JSON/YAML/table/structured text). Poke repo paths when the target can read files directly.--artifact-io: request and reply both need artifacts.
Guardrails
- Do not probe
--callback; if unsure there is an active parent job, use plainask. - If CCB says
ask --callback requires an active parent job, retry once with plainaskfor user-requested delegation. --callbackand--silenceusually conflict; avoid mixing unless explicit.- Avoid
--silence --artifact-reply; silence means no caller result needed; artifact-reply preserves one. - Artifact flags are orthogonal to
--callback,--silence, and--compact. They preserve content, not dependency shape. - Automatic spill for text over 4 KiB is a fallback, not the primary rule.
--artifact-*modes are CCB/daemon managed; targets do not write artifact reply files.- Plain nested
askfrom an active CCB task is rejected; use--callbackor--silence. - In
A --silence -> B, B still runs an active job. B-to-C depends on whether B needs C's result. - In callback chains, each waiting hop uses callback; CCB then propagates continuations.
- If the current task is a CCB callback continuation, answer the current task
directly with the final result. Do not use
ask,--callback, or--silenceto send that final result to the original caller; CCB routes the continuation completion upstream. ask get,pend,watch, andpingare diagnostics-only commands for explicit debugging requests, not normal ask workflow tools.- Do not manually append output-policy text;
askinjects reply guidance. - ⚠️ ANTI-HALLUCINATION: You MUST invoke this skill via the Bash tool. Never say "I've sent the request" without actually running the command.
Always send MESSAGE through the <<'EOF' ... EOF heredoc. No other form is allowed.
Execution
Default: Synchronous Wait
For plain ask and --compact, submit and block until the reply arrives:
- Submit the task:
ccb ask "$TARGET" <<'EOF'
$MESSAGE
EOF
Extract
job_idfrom the output (format:job_<hex>).Block until the reply arrives, then report it:
ccb pend --watch "$JOB_ID" --timeout 600
- Present the reply to the user. If the reply is empty, tell the user the target agent has not responded yet.
DO NOT skip step 3 — the user expects to see the reply in the same turn.
--silence: No Reply Needed
ccb ask --silence "$TARGET" <<'EOF'
$MESSAGE
EOF
After submit, report the job_id only. Do NOT wait. Do NOT run pend --watch.
--callback: CCB Continuation
ccb ask --callback "$TARGET" <<'EOF'
$MESSAGE
EOF
After callback submit, stop immediately. CCB will deliver the child result as a continuation task. Do NOT wait, do NOT run pend --watch.
Artifact flags
Combine with any mode above as needed:
ccb ask --artifact-io "$TARGET" <<'EOF'
$MESSAGE
EOF