원클릭으로
programmable-ui
Builds and debugs mu_ui UiDocs with schema-valid payloads, interaction wiring, and status/snapshot verification.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Builds and debugs mu_ui UiDocs with schema-valid payloads, interaction wiring, and status/snapshot verification.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Runs core mu operator workflows for bounded investigation, CLI-first state operations, and session handoffs. Use when general mu execution or state-management guidance is needed.
Meta-skill for core mu operating primitives. Routes to mu, programmable-ui, memory, tmux, and code-mode based on task shape.
Produces clear, argument-driven technical prose. Use when drafting or reviewing systems papers, design docs, READMEs, PR descriptions, error messages, API references, or other technical communication.
Runs cross-store memory retrieval and index maintenance workflows with bounded filters and timeline anchors. Use when querying prior context or repairing memory index health.
Defines compositional control-flow policies for orchestration DAGs (for example review-gated retry loops) using protocol-preserving transitions.
Runs issue-driven execution supervision with heartbeat orchestration and tmux fan-out. Use when work should progress through durable parallel execution loops.
| name | programmable-ui |
| description | Builds and debugs mu_ui UiDocs with schema-valid payloads, interaction wiring, and status/snapshot verification. |
Use this skill when the task involves mu_ui, UiDoc payloads, interactive actions, or /mu ui ... inspection commands.
Publish schema-valid docs only
mu_ui accepts doc: object, but runtime validation is strict (UiDoc schema).Invalid UiDoc..Keep interaction command-driven
action.metadata.command_text (for example /answer yes).Separate status and decisions
metadata.profile.variant: "status").Use monotonic revisions
revision.version on each update for the same ui_id.Read -> act -> verify
set|update|replace|remove|clear, check /mu ui status and /mu ui snapshot.Close docs explicitly
mu_ui remove (preferred) or mu_ui clear.{
"action": "set",
"doc": {
"v": 1,
"ui_id": "ui:demo",
"title": "Demo",
"summary": "Minimal interactive panel",
"components": [
{ "kind": "text", "id": "intro", "text": "Choose an option", "metadata": {} }
],
"actions": [
{
"id": "ack",
"label": "Acknowledge",
"kind": "primary",
"payload": { "choice": "ack" },
"metadata": { "command_text": "/answer ack" }
}
],
"revision": { "id": "rev:demo:1", "version": 1 },
"updated_at_ms": 1,
"metadata": {}
}
}
/mu ui status
/mu ui snapshot compact
/mu ui snapshot multiline
Handle command (/answer ack) in normal skill logic.
Remove prompt doc:
{ "action": "remove", "ui_id": "ui:demo" }
Required top-level fields for each doc:
v: 1ui_id: non-empty string (max 64)title: non-empty stringcomponents: non-empty array (text|list|key_value|divider)revision: { id: string, version: nonnegative int }updated_at_ms: nonnegative integerCommon optional fields (recommended):
summary: deterministic fallback summaryactions: interactive options (empty for pure status)metadata: profile/snapshot metadata and custom annotationsComponent minimums:
text: id, textlist: id, items[] (id, label, optional detail, optional tone)key_value: id, rows[] (key, value, optional tone)divider: idAction minimums:
id, labelmetadata.command_text required for interactive routingkind, description, payload, component_id, callback_tokenstatus
ui_id list, status-profile counts/warnings, and awaiting counts.snapshot
snapshot_format: compact|multiline (defaults to compact).set
ui_id.update
set (single-doc upsert).replace
docs[].remove
ui_id.clear
/answer prompt{
"action": "set",
"doc": {
"v": 1,
"ui_id": "ui:answer",
"title": "Answer",
"summary": "Please choose yes or no",
"components": [
{ "kind": "text", "id": "prompt", "text": "Choose an answer", "metadata": {} }
],
"actions": [
{
"id": "answer_yes",
"label": "Yes",
"kind": "primary",
"payload": { "choice": "yes" },
"metadata": { "command_text": "/answer yes" }
},
{
"id": "answer_no",
"label": "No",
"kind": "secondary",
"payload": { "choice": "no" },
"metadata": { "command_text": "/answer no" }
}
],
"revision": { "id": "rev:answer:1", "version": 1 },
"updated_at_ms": 1,
"metadata": {}
}
}
Handler contract:
/answer <choice>.mu_ui remove (or clear) for ui:answer.{
"action": "set",
"doc": {
"v": 1,
"ui_id": "ui:planning",
"title": "Planning status",
"summary": "Drafting issue DAG",
"components": [
{
"kind": "key_value",
"id": "kv",
"rows": [
{ "key": "phase", "value": "decomposition" },
{ "key": "next", "value": "approval prompt" }
],
"metadata": {}
},
{
"kind": "list",
"id": "milestones",
"items": [
{ "id": "m1", "label": "Root issue captured" },
{ "id": "m2", "label": "Leaf tasks drafted" }
],
"metadata": {}
}
],
"actions": [],
"revision": { "id": "rev:planning:12", "version": 12 },
"updated_at_ms": 1730000000000,
"metadata": {
"profile": {
"id": "planning",
"variant": "status",
"snapshot": {
"compact": "planning: DAG draft ready",
"multiline": "phase: decomposition\nnext: approval prompt"
}
}
}
}
}
{
"id": "approve",
"label": "Approve",
"payload": { "choice": "approve", "note": "looks good" },
"metadata": { "command_text": "/answer choice={{choice}} note={{note}}" }
}
In terminal UI interaction flow, placeholders are auto-filled from payload when possible, and unresolved fields are prompted.
When metadata.profile.id is one of planning|subagents|control-flow|model-routing and variant is status:
ui_id values:
planning -> ui:planningsubagents -> ui:subagentscontrol-flow -> ui:control-flowmodel-routing -> ui:model-routingactions: [] (status docs are non-interactive)summary plus metadata.profile.snapshot.compactplanning: key_value + listsubagents: key_value + listcontrol-flow: key_valuemodel-routing: key_value + listUse /mu ui status to catch profile warnings early.
doc is required
doc parameter for set|update.Invalid UiDoc.
docs must be an array / docs[i]: invalid UiDoc
replace payload malformed.metadata.command_text, or status-profile doc (actions intentionally non-runnable).awaiting stays non-zero
mu_ui remove once handled.After each change:
/mu ui status shows expected doc count and ids./mu ui snapshot compact shows deterministic summary./mu ui snapshot multiline shows readable panel/action projection.mu_ui is communication state, not source-of-truth task state.First-time interactive prompt
ui:answer, click action, confirm /answer ... reaches normal handler, remove prompt doc.Status + decision split
ui:planning status-profile doc active; open separate interactive approval doc; verify status remains non-interactive.Replay/reconnect safety
Channel degrade resilience
command_text fallback so manual command entry always works.