kanban-board
Four columns (To do / In progress / In review / Done), cards + avatars + swimlanes
1How It Works & Mechanism
Trello-style four-column board with a top filter bar (assignee / label / search), featuring colored dots and card counts in column headers.
- 4 列: To do / In progress / In review / Done
The illusion of "no actual dragging, but visually looks draggable" is achieved via static cues: cards with `cursor: grab`, dashed add-card slots, and hover border changes.
.card { padding: 12px 14px; background: var(--paper); border: 1px solid var(--line); border-radius: 10px; display: flex; flex-direction: column; gap: 10px; cursor: grab; transition: border-color 0.15s, box-shadow 0.15s; }
Swimlanes (grouped by epic/assignee) are included in the body text as an optional extension, while the example presents them via columns and filter chips.
- 可选 swimlanes (按 epic / assignee 分组)
The template itself is the prompt: SKILL.md body text is read by the loader, assembled with the shared prelude and user content, and passed to the local agent CLI for execution.
prompt = assemblePrompt({ body: skill.body, content, format });
The skill directory contains pure text assets: the loader reads SKILL.md body from disk, and no executable code inside the directory is loaded.
const raw = safeRead(path.join(dir, "SKILL.md"));
The shared prelude is injected before the template, establishing the highest priority rule: "The template only defines layout, style, color palette, typography, and component library; quantity is determined by user content."
【内容驱动数量 — 最高优先级, 覆盖模板里的任何数字】
The shared prelude is injected before the template, establishing the highest priority rule: "The template only defines layout, style, color palette, typography, and component library; quantity is determined by user content."
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
The skill directory contains pure text assets: the loader reads SKILL.md body from disk, and no executable code inside the directory is loaded.
const exampleHtml = safeRead(path.join(dir, "example.html"));
2Core Capabilities
4Recommended Governance & Evidence
- SKILL.md: Pure prompt instructions and rule text; no script execution or external impact
5Second-Pass Verification
- [discrepancy] 规范↔示例:列名 — 正文写「To do / In progress / In review / Done」四列,示例首列是 `Backlog`(其余 In progress / In review / Done 一致)——命名口径不一致,模型照示例会输出 Backlog。
- [discrepancy] 规范↔示例:卡片元数据 — 正文要求卡片含「标题 / labels / due / avatar / 评论数」;示例命中标题、标签色(tag-feat 等)、头像缩写(av-sm av-dev)、点数(3 pts)与工单号,但**没有 due 日期、也没有评论数**——两项规范要求未在样本落地。
- [ok] 规范↔示例:filter bar — 示例 topbar 有 `Search tickets…` 输入框,filterbar 有 Members / Labels 两组 chips,与正文 assignee/label/search 要求一致。
- [ok] 「看起来可拖」实现方式 — 示例用 `.card { … cursor: grab; }` 与 `.add-card` 虚线槽表达可拖,未引入任何拖拽脚本,符合正文「不需要真 drag,但视觉上要像可拖」。
- [ok] 泳道未在示例出现 — 正文把 swimlanes 标为「可选」,示例采用单层四列,属可选未启用,非缺口。
- [ok] 目录资产面普查 — glob 全量:SKILL.md、example.html;无 scripts/、无 references/、无数据文件、无包管理器清单。
- [ok] 可执行代码普查 — example.html 内 <script> 计数 = 0,fetch/XMLHttpRequest/WebSocket 命中 0;SKILL.md 全篇无脚本或可执行代码。
- [ok] 外链端点普查 — 目录内(含 example.html)零 http(s) 命中,产物离线自持。
6Verdict & Scenarios
eec7d423885faf6f…