Agent SkillsEpicStaff/EpicStaff › EpicChat Response Format

EpicChat Response Format

GitHub

定义EpicChat Widget的结构化JSON响应格式,支持消息、表格、操作按钮及导航,用于生成符合Widget渲染规范的输出。

src/code/opencode/skills/epicchat-response/SKILL.md EpicStaff/EpicStaff

Trigger Scenarios

生成EpicChat回复时 需要展示交互式数据或按钮时

Install

npx skills add EpicStaff/EpicStaff --skill EpicChat Response Format -g -y
More Options

Non-standard path

npx skills add https://github.com/EpicStaff/EpicStaff/tree/main/src/code/opencode/skills/epicchat-response -g -y

Use without installing

npx skills use EpicStaff/EpicStaff@EpicChat Response Format

指定 Agent (Claude Code)

npx skills add EpicStaff/EpicStaff --skill EpicChat Response Format -a claude-code -g -y

安装 repo 全部 skill

npx skills add EpicStaff/EpicStaff --all -g -y

预览 repo 内 skill

npx skills add EpicStaff/EpicStaff --list

SKILL.md

Frontmatter
{
    "id": "epicchat-response",
    "name": "EpicChat Response Format",
    "scope": [
        "output",
        "format",
        "widget"
    ],
    "trigger": "always_on",
    "version": 1.1,
    "triggers": [
        "epicchat",
        "response",
        "tables",
        "actions",
        "buttons"
    ],
    "description": "How to format structured JSON responses for the EpicChat widget — message text, tables, action buttons, navigation, prompt suggestions, and tool toggles. Use this skill whenever producing output for EpicChat."
}

EpicChat Response Format

Your structured output is rendered by the EpicChat widget. Return only the fields you need — message is the only required field.

Fields

message (string, required)

Main chat reply. Full Markdown supported (headings, bold, code blocks, lists, links).

tools (string[], required if configured)

Tool toggles shown in the input area dropdown. Include ["Build mode"] to keep the build/plan toggle active.

ef_tables (array, optional)

Interactive data tables rendered below the message.

Minimal — just rows, columns auto-detected:

{
  "ef_tables": [{
    "rows": [
      {"name": "Alice", "score": 95, "passed": true},
      {"name": "Bob", "score": 72, "passed": false}
    ]
  }]
}

With options:

{
  "ef_tables": [{
    "columns": [
      {"key": "name", "title": "Name", "editable": false},
      {"key": "score", "title": "Score", "type": "number"}
    ],
    "rows": [{"name": "Alice", "score": 95}],
    "isEditable": false,
    "isSortable": true,
    "rowsSelectionType": "select"
  }]
}

Table options: id, isEditable (default true), isSortable (default true), defaultSortField, rowsSelectionType ("edit" | "select" | "multiSelect"), preselectedRows, unions ({title, keys}[]).

Column options: key, title, type ("text" | "number" | "boolean" | "date"), visible, editable.

action_message (array, optional)

Interactive elements displayed with the message.

{
  "action_message": [
    {"type": "button", "action": "sendAction", "text": "Do something"},
    {"type": "link", "action": "link", "text": "Open docs", "params": {"url": "https://..."}},
    {"type": "prompt", "text": "Try asking about X"}
  ]
}
type behavior
button Clickable button below message. Removed after click. Sends text as user_action.
link Opens params.url in browser.
prompt Suggestion chip in input footer. Clicking sends text as new user message.

Action identifiers

action value When to use
sendAction Default for buttons. Sends text as user_action to the flow.
sendButtonTextWithParams Like sendAction but also sends params as context extras — use when the button carries structured data beyond the label.
processTables Sends edited/selected table data back to the flow. Use with rowsSelectionType: "select" or "multiSelect" tables so the user can pick rows and submit.
link Opens params.url in browser.
openFlow Navigates to a flow. Requires params: {"flowId": "<id>"}.
openNode Opens a node panel. Requires params: {"flowId": "<id>", "nodeId": "<uuid>"}.
refreshCache Reloads the page to pick up flow/node changes.

Navigation actions

Use these to help the user navigate the EpicStaff UI after creating/modifying flows:

{"type": "button", "text": "Open flow 55", "action": "openFlow", "params": {"flowId": "55"}}
{"type": "button", "text": "Open Code Agent", "action": "openNode", "params": {"flowId": "55", "nodeId": "<uuid>"}}

After modifying or creating flows/nodes, always include navigation buttons and a refreshCache button together, and tell the user to click it (or do a hard browser refresh) to see the changes:

{"type": "button", "text": "Open flow 55", "action": "openFlow", "params": {"flowId": "55"}}
{"type": "button", "text": "Refresh to see changes", "action": "refreshCache"}

Prompt suggestions

Add 2-3 prompt chips when there are natural follow-up questions:

{"type": "prompt", "text": "Show me the session logs"}
{"type": "prompt", "text": "What about flow 42?"}

Combined Example

{
  "message": "Found **3 servers** with high CPU usage:",
  "tools": ["Build mode"],
  "ef_tables": [{
    "rows": [
      {"server": "prod-web-01", "cpu": 94.2, "status": "critical"},
      {"server": "prod-api-03", "cpu": 87.1, "status": "warning"},
      {"server": "staging-01", "cpu": 82.5, "status": "warning"}
    ],
    "isEditable": false,
    "rowsSelectionType": "select"
  }],
  "action_message": [
    {"type": "button", "action": "sendButtonTextWithParams", "text": "Restart selected", "params": {"operation": "restart"}},
    {"type": "button", "action": "processTables", "text": "Process selected rows"},
    {"type": "prompt", "text": "What about memory usage?"},
    {"type": "prompt", "text": "Show all servers"}
  ]
}

Guidelines

  • Be concise. Keep message focused. Don't repeat data that's already in a table.
  • Use tables for structured data. Lists of items, sessions, nodes — put them in ef_tables.
  • Offer prompts. After answering, suggest 2-3 natural follow-ups as prompt chips.
  • Navigate after changes. When you create or modify a flow/node, include an openFlow/openNode button.
  • Minimal fields. Don't include ef_tables or action_message if you don't need them.

Version History

  • db5b17f Current 2026-07-05 19:45

Same Skill Collection

src/code/opencode/skills/epicstaff-api/SKILL.md

Metadata

Files
0
Version
db5b17f
Hash
822fcd48
Indexed
2026-07-05 19:45

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-08 19:09
浙ICP备14020137号-1 $Гость$