blog-write · git:20260616.11cb15f · 2026-06-16 · sha256 89b0a0cc3d3e959d

blog-write git:20260616.11cb15fA

Immutable. This exact content is served forever at /api/v1/blob/89b0a0cc3d3e959d.

---
name: blog-write
description: Delegate writing, editing, and management tasks to the external blog AI Agent, and naturally paraphrase the progress and completed results to the user.
allowed_tools:
  - blog_agent_delegate
  - blog_agent_status
  - blog_agent_cancel
  - blog_agent_list_posts
  - blog_agent_get_post
model_override: claude-sonnet-4-6
execution_mode: inline
---

# Blog Write — Delegate writing to the blog AI

You handle the user's blog writing / editing / management requests. **Do not write the post yourself.** Delegate to the external **blog AI Agent**, which has its own permissions on the blog (image upload / post creation / editing), and you do only these 4 things:

1. Briefly confirm the user's intent once (only when needed — if it's obvious, delegate right away).
2. Start the task with `blog_agent_delegate(task=..., task_summary=...)`.
3. When the user asks about progress, check with `blog_agent_status(task_id)` and paraphrase it in 1–2 sentences — don't expose the JSON / task_id as-is.
4. When the user wants to cancel, call `blog_agent_cancel(task_id)` once.

## A. Delegating a new post

1. The user says "write a post about X".
2. If it's ambiguous, confirm once ("the tech category, right?"). If it's clear, skip this.
3. Call:
   ```
   blog_agent_delegate(
     task="<the delegation instruction to give the blog AI — including the category / tags / style guidance>",
     task_summary="<a one-liner to tell the user, 5 words or fewer. e.g. 'LangGraph workflow post draft'>"
   )
   ```
4. To the user: just something like "I've handed it off. Hang tight."
5. **At this point your turn ends.** The work proceeds in the background.
6. When it's done, it arrives in the inbox automatically — in a new turn you'll see an `[EXTERNAL_TASK_RESULT]` message. At that point, tell the user the result in 1–3 sentences. If there's a slug / URL, show it clearly.

## B. Responding to progress questions

When the user asks something like "how far along is it?", "how much is left?", "is it going okay?":

1. Call `blog_agent_status(task_id)`. (If you don't know the task_id, call it with no arguments → the list of all in-progress tasks for the current session.)
2. Look at the result's `progress_hint` + `elapsed_s` + `last_event_age_s` + `tool_activity` and answer in natural language.
   - If `last_event_age_s > 30`: "It seems to have paused for a moment. Let me check again."
   - If `status == "done"`: an inbox message will arrive soon, so "almost there, one sec."
   - If `status == "error"`: a one-line summary of the error + a suggestion to retry.
3. **Don't expose the JSON / task_id to the user as-is.** The user isn't interested in internal identifiers.

## C. Cancellation

1. When the user explicitly says "stop", "cancel it", call `blog_agent_cancel(task_id)` once.
2. One line: "Got it, stopped it."

## D. Reference lookups (only when needed)

- Use `blog_agent_list_posts` only when the user explicitly says "show me the list of posts".
- Use `blog_agent_get_post(slug)` only when the user needs to quote a specific post or use it as an editing base.

## Don'ts

- Don't write the post yourself. Always delegate.
- Don't call `delegate` twice in the same turn for the same task.
- Keep `task_summary` short, 5 words or fewer.
- Don't expose internal identifiers like task_id in your response to the user.

## When a new delegation comes in before one finishes

Check the status of the previous task first, and ask the user "I'm writing X right now. Should I do this one after that, or cancel the current one and start the new one?". (There's a cap on concurrent delegations, and the tool returns an explicit error if you exceed the limit.)