بنقرة واحدة
cowork-ux
Cowork/Code MCP UX — plain language, menus, progress loops
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Cowork/Code MCP UX — plain language, menus, progress loops
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | cowork-ux |
| description | Cowork/Code MCP UX — plain language, menus, progress loops |
| agent_rule | Never paste raw JSON. Echo human_summary. Loop subscribe_progress for async jobs. |
| task | ["narrate"] |
| domain | ["story"] |
| persona | ["agent-only"] |
| scope | episode |
| category | onboarding |
| triggers | ["cowork","auto mode","don't ask every time","human friendly","just go","/cowork-ux"] |
Use this skill whenever the user works through Claude Cowork, Claude Desktop, Claude Code, or Cursor with the Storyboard MCP. The server already returns human_summary, permission_hint, next_actions, and inline images — your job is to speak like a creative collaborator, not a JSON debugger.
Session start: when the user mentions Cowork, auto mode, or "don't ask every time", call attach_skill({ ref: "skill:cowork-ux" }) (idempotent if already attached).
structuredContent, not {action:"generate",…}. Summarize in plain language.human_summary from the tool response before the client's native permission card appears (when you have a preview/dry-run) or right as you fire the real call.permission_hint once when the action is billable and the user hasn't seen it this session — one line, no legalese.next_actions as a numbered menu after multi-slot results. The user replies with a number; you dispatch the matching tool + args unchanged.subscribe_progress({ job_id }) until terminal: true or should_resubscribe: false. Narrate progress; never say "polling get_create_media".create_media image results include {type:"image"} blocks. Don't ask the user to open URLs for stills.storyboard-intro.md — don't enumerate 40 tools on first turn.| MCP tool | Say this (not the tool name) |
|---|---|
create_media | Generate / animate / restyle / upscale {kind} |
generate_project | Render an N-scene storyboard |
moodboard_spread | Generate N moodboard images |
place_subject | Place your product in N scenes |
create_variations | Make N variations of this image |
submit_creative_job | Start async video job (N scenes) — I'll stream progress |
submit_plan | Run N-step plan — approve once |
director_export | Stitch + soundtrack + brand finishing |
subscribe_progress | (read-only — prefer over get_creative_job; see Permission cards) |
get_creative_job / get_create_media | (read-only fallback poll — use only if subscribe_progress unavailable) |
list_capabilities / get_pricing | (read-only — auto-approve) |
spend_cap | Set daily spend cap |
publora_publish_post | Publish to social (always confirm) |
The native MCP permission dialog is client-owned — Storyboard cannot replace its "Request { … }" JSON block. What we control:
| Layer | What the user sees |
|---|---|
Server title | Card headline, e.g. "Check on a multi-scene project that's still rendering" (live on all 122 tools) |
Server readOnlyHint | Marks polling tools as read-only — Desktop may tier them separately from billable submits |
| Agent chat | Plain-language line before the card: "Rendering scene 3 of 6… (~2 min left)" |
| User setting | Always allow on subscribe_progress (and read-only getters) after the first approval |
Rules for agents:
subscribe_progress({ job_id }) over repeated get_creative_job / get_create_media — one 25s hold + inline notifications beats N separate permission prompts.structuredContent.message / scene counts instead.submit_creative_job / create_media submit time.human_summary on responses applies to submit tools only (create_media, generate_project, moodboard_spread, submit_plan) — it does not appear on pre-call permission cards for { job_id } polls.That message is emitted by the client (claude.ai / Desktop / Code), not Storyboard, when the response stream idles too long — which happens while a long async render (video / audio / 3D) runs. It does not mean the job failed. The render is still going on the server and the asset almost always lands.
When the user says any of these — "it stalled", "is it done?", "did it finish?", "where's my video?", "check it", "the response cut off", "try again", "retry" — treat it as a status check, not a new request:
subscribe_progress({ job_id }) (or get_create_media({ job_id })) for the job from the submit response. If you lost the job_id, call get_recent_assets — the finished asset is there.create_media for the same thing after a stall. It's already rendering; a resubmit renders and charges it twice. (The server also auto-dedupes an identical re-submit within ~10 min as a safety net, but don't rely on it — check the existing job.)subscribe_progress({ job_id }) right after an async submit — it streams progress and keeps the stream warm, so the stall message doesn't appear.Before any multi-slot fan-out costing > $0.20, run a dry-run first:
moodboard_spread({ …, confirm: false })place_subject({ …, confirm: false })create_variations({ …, confirm: false })generate_project({ …, confirm: false })Echo the estimate in one line: "I'll generate 12 brand moodboard images (~$0.34 total, ~60–90s). Say go when ready." Then fire without confirm: false when the user approves.
For single create_media calls under $0.20, dry-run is optional — echo human_summary and proceed unless the user asked for a preview.
Trigger phrases: "auto mode", "just go", "don't ask every time", "skip confirmations", "cap at $N today".
When triggered:
spend_cap({ action: "set", cap_usd: N }) — default $25/day if the user didn't specify.confirm: false re-prompts for spreads the user already approved this session.publora_publish_post, spend_cap increases, forget_assets with confirm: true.Do not add or call a set_auto_mode tool — skill + spend_cap + client "Always allow" is enough.
mjob_*, cjob_*, ltj_*)submit → job_id
loop subscribe_progress({ job_id }) until terminal
Narration template:
structuredContent.message when present.eta_seconds / eta_p95_seconds from the submit response: "Rendering… (~45s)"quality_tier: "Fast preview · pixverse-i2v"checkpoint_ready: mirror webapp copy — offer review_checkpoint + resume_from_checkpoint.Never say: "polling get_create_media", "calling get_creative_job every 8–15s", or paste job IDs unless the user asks.
Images: show inline preview + one-line summary from human_summary.
Video / audio / 3D: share the URL + ETA context; no inline render today.
next_actions menu formatAfter moodboards, projects, variations, or spreads:
Here are your results. Next:
1. Animate slot-3 into a video
2. Make 4 variations of slot-3
3. Open the live viewer
User says "2" → call the tool and args from next_actions[1] exactly.
submit_plan — single approval for multi-step flowsFor complex chains (brief → moodboard → spread → animate → export), prefer:
submit_plan({ goal, steps: [...] }) → shows total cost + step listsubmit_plan({ plan_id, confirm: true })get_plan or subscribe_progress on the plan's job idEcho: "Run 4-step plan: launch moodboard · total ~$0.52 — approve once"
When human_summary is absent, fall back to these shapes:
| Tool | Template |
|---|---|
create_media | Generate {kind} — {prompt_short} · ~{cost} · {eta} |
generate_project | Render {n}-scene storyboard · ~{cost} · {eta} · viewer when done |
moodboard_spread | Generate {count} moodboard images · ~{cost} · live viewer link |
place_subject | Place your product in {count} scenes · ~{cost} |
create_variations | Make {count} variations of this image · ~{cost} |
submit_creative_job | Start async video job ({n} scenes) · ~{cost} · I'll stream progress |
submit_plan | Run {n}-step plan: {goal} · total ~{cost} — approve once |
director_export | Stitch + soundtrack + brand finishing · ~{cost} |
confirm: false dry-runs in auto mode without spend_cap set.get-started-mcp.md — install ritual + health-check (start here for new users)storyboard-intro.md — five user intents + canonical pathsfinishing-quality.md — post-generation finishing passrecover-pasted-image.md — pasted image → public URL in Claude Codecreate_media