plugins/tools/trellisx/skills/trellisx-grill/SKILL.md
🔥 对抗式审查 trellis 任务工件 (prd / design / implement / spec / subtask 文件), 贯穿 plan 前/中/后全程逐分支 stress-test 设计树, 帮用户确认/审查/拆解需求。逐问审 (可一次多问批量确认提效 + 推荐答案 + codebase 能答先查), 产物 = 工件内联批注 + 弱点表 (不改写工件, 由 orchestrate/spec 决定怎么改)。独立全周期可调, plan 前 / planning 中 / start 前 / spec 重构前 / 任意决策点都能用。源于 grill-me (relentless interview) + 项目盲点实证
npx skillsauth add lazygophers/ccplugin trellisx-grillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
贯穿 plan 全程 (前/中/后) 的对抗式访谈工具, 帮用户确认 / 审查 / 拆解需求。plan 前 (brainstorm 草稿出方向后审对不对); planning 中 (审 design/subtask 拆解有无盲点); 写盘 / task.py start / spec 重构之前 (最后一遍校对)。逐分支 stress-test 设计树, 挖「结构合规但实质失效」的盲点。只批注不改写 —— 改工件是 orchestrate / spec 的职责, grill 只标注弱点 + 给推荐改法。
源于 grill-me (relentless interview to sharpen a plan) + 项目实战盲点。grill-me 法: 逐问审, 可一次多问 (批量确认多个设计点提效), 每问给推荐答案, codebase 能答的先查 codebase 不问用户。
| 立场 | 说明 | | --- | --- | | 对抗非审批 | grill 是红队挑刺, 不是盖章。找不到盲点 ≠ 通过, 是 grill 失败 (没问够) | | 只批注不改写 | 产物 = 工件内联批注 (行号 + 弱点 + 推荐改法) + 弱点汇总表。改盘交 orchestrate/spec | | 结构合规 ≠ 实质有效 | 上轮 darwin 结构优化已 90+ 分, grill 专挖结构合规下的实质失效 (token 生命周期 / 触发准确性 / 自举矛盾 / 诚实边界摘樱桃) | | 可一次多问 | 允许批量问多个问题 (一次确认多个设计点提效), 非强制一次一问。强相关/同源决策点宜批量; 互不相关或需先答才能定下一问的仍分批 | codebase 优先 | 问题能由 Read/Grep 文件答 → 自己查, 不问用户。只问 codebase 答不了的决策点 |
每轮 grill 按骨架逐轴过, 每轴下自由深挖分支。任一轴答不出 / 答得虚 = 弱点。
骨架可扩展 + 动态裁剪 (非固定 12 轴): 上表是默认骨架 (源自项目盲点实证), 按问题性质 / 项目域 / 工件类型增减轴 ——
| 轴 | 审什么 | 典型盲点 | | --- | --- | --- | | A 目标 | 工件解决的核心问题是什么? 一句话能说清? | 开放式 PRD ("实现 X 功能") 无 deliverable | | B 产出 | 交付物是什么? 可验收? | 模糊交付, 无验收标准 | | C 验证 | 怎么验产出对不对? 有可执行断言 (grep/test/task.py)? | 铁律要求验证但正文无可执行命令, 验证落 reference 易跳过 | | D 资源 | 改哪些文件? 谁独占? 并行还是串行? | 多 agent 文件集重叠 → 互相覆盖 | | E 依赖 | 前后序? 共享文件? 阻塞? | 并行组不标依赖箭头 → 乱序 | | F 失败模式 (dim3) | 每步失败怎么办? 有 if-then 三段式 (触发/一线修复/兜底)? | 只写正向流程, 失败分支缺失 | | G 检查点 (dim4) | 关键决策有硬停/审批门 + 用户确认? | 靠"必须"措辞代替标记, LLM 扫标记优先于语义 | | H 触发准确性 | should-trigger + should-not-trigger 对? 与邻居 skill 边界清? | 触发词与邻居重叠 → 误抢; 缺 not-trigger 对 | | I token 生命周期 | 工件 + references 总行数? auto-trigger 还是手动? 多 skill session 会被踢吗? | auto-trigger skill 堆 references → 旧 skill 静默踢出, 无错误信息 | | J 自举/矛盾 | 工件规则适用于自身吗? 有无路径互斥 (skill 说 A, agent 说非 A)? | 同名 skill+agent 走两条互斥路径 → routing 死结 | | K 诚实边界 | 局限/降级/dry_run 显式标注? 有无摘樱桃? | 用"诚实"框架选择性呈现事实 (弃用论据但保结论) | | L 反例黑名单 (dim9) | 有"不要做什么"清单? 只写应做? | 只写"应该做 X"没"不要做 Y" |
本 skill 非自动加载 (user-invocable)。触发由调用方驱动, 三场景:
触发点: trellisx-add planning 阶段 (flow 委托 /trellisx-add --continue 借 planning 时同触发) / trellisx-orchestrate step1 PRD 编排, 写 PRD 过程中 (非写完后审)。
模式: grill 轴 A (目标) + 轴 B (产出) 当提问引擎, 循环:
AskUserQuestion 问用户, 给推荐答案与 brainstorm 关系: brainstorm 主导需求探索流程, grill 是其提问质量引擎 —— brainstorm 逐问用户时, 每问经 grill 轴 A/B 校验 (问题是否击中目标/产出盲点), 答完 grill 驱动更新 PRD。非取代 brainstorm, 是给 brainstorm 的提问上对抗性保险。
禁: 写完整 PRD 才调 grill (本末倒置)。本硬门要的就是边写边问, PRD 成型过程即受对抗校对。
触发点: trellisx-flow step3 激活前 / trellisx-orchestrate L69 硬停门 / phase 1.4 task.py start 前。
模式: PRD + design + implement 全部写完后, start 前最后一遍: 跑全轴 A-L (按工件类型动态裁剪), 重点确认用户想法:
弱点表交用户过一遍, 用户确认"这就是我要的" + 弱点补齐后才放行 start。未跑本门不准 start (硬门, 调用方强制)。
用户未走 /trellisx-flow 但在写 prd / 收到新 task / 准备 task.py start:
硬保证 (guard 注入): trellisx-guard UserPromptSubmit hook 每 turn 检测 active task planning 阶段工件状态, 自动注入对应硬门提醒:
model 见到 guard 注入的提醒 MUST 调本 skill, 非可选。无 active task (纯对话/未建 task) 时 guard 不注入, model 识别"写 prd / 新 task / 准备 start"意图也应主动调本 skill。
同样两硬门: 写 prd 时边问边写 (硬门 1) + start 前全轴确认 (硬门 2)。flow 与非 flow 路径 grill 要求一致, 非 flow 由 guard 兜底硬触发, 不靠 model 自觉。
"grill 这个" / "审下设计" / "红队" / "确认下需求" → 直接进流程 (5 步), 跑全轴或按用户指定轴。
# 读被审工件 (prd/design/implement/spec/subtask 或任一 planning/架构产物: task-tree/调度图/scheduling/config hook/架构决策等, 按项目实际动态选)
# 缺省 = active task 全部 planning + 架构产物
python3 ./.trellis/scripts/task.py current 2>/dev/null # 定位 active task
读全文。统计: 工件行数 + 引用的 references 数 (轴 I token 生命周期基线)。
按骨架轴 A→L 顺序 (默认骨架; 按 §可扩展骨架轴 动态裁剪), 每轴:
AskUserQuestion 工具问用户 (可一次多问: 强相关/同源决策点批量问提效; 互不相关或需先答才能定下一问的仍分批。每问给推荐答案作首选项)检查点 (每批问): 用
AskUserQuestion工具问, 禁纯文本提问代替 (用户交互决策点, grill-me 法)。每问给推荐答案作 options 首项。可批量问多个相关问题; 等用户答完该批再进下一轴。
在工件副本 (或主会话展示, 不动原文件) 内联标注:
prd.md:14 ⚠️ 轴A 目标: "实现登录功能" 开放式, 无 deliverable 矩阵
→推荐: 拆为 D1 OAuth2 / D2 session / D3 权限, 各附验收
prd.md:28 硬伤 轴C 验证: 铁律要求"行为闭环"但无可执行断言
→推荐: 补可执行的行为断言 (如 grep 命令 / 退出码校验) 3 条
禁改原工件。批注是建议, 改盘交 orchestrate / spec。
grill 报告
═══════════
工件: prd.md (120 行, 引 4 references)
轴覆盖: A-L 全过 (12/12)
弱点: 3 ⚠️ + 1 硬伤
硬伤 轴C 验证断言缺失 (L28) — 高, 会致验证形同虚设
⚠️ 轴A 目标开放式 (L14) — 中
⚠️ 轴H 缺 should-not-trigger 对 (L9) — 中
⚠️ 轴I references 累积 (12 个, auto-trigger) — 中, token 风险
推荐: 先修硬伤 (轴C), 再 ⚠️; 或路由 trellisx-spec 做破坏式重构
trellisx-orchestrate 改 prd/design/implementtrellisx-spec 做破坏式重构| 触发 | 一线修复 | 仍失败兜底 | | --- | --- | --- | | 用户非 trellis 项目 (无 .trellis/) | 提示 grill 也可审独立 prd/design 文件 (非 trellis 专属) | 用户提供工件路径直接审, 不依赖 task.py | | 工件行数超大 (>500 行) | 分段 grill (先 prd, 再 design, 再 implement), 不一次性过 12 轴 | 标记"未全审", 列已审轴 | | 用户答 "不知道" / "你定" | 给推荐答案 + 理据, 标"推测:", 继续 | 该轴标 ⚠️ 决策未定, 进弱点表 | | AskUserQuestion 不可用 | 退化为主会话逐问 (纯文本), 标降级 | 降级后 grill 质量降, 标注 | | 找不到弱点 (全 ✓) | 警告: 可能 grill 不够深, 再过一轮轴 H/J/K (最易漏) | 仍无 → 报告"结构合规, 未发现实质盲点", 但标注"非保证有效" |
| # | 反模式 | 为什么禁 | 替代 |
| --- | --- | --- | --- |
| 1 | 改写原工件 | 职责越界 (改盘是 orchestrate/spec) | 只内联批注 + 弱点表, 改交邻居 |
| 2 | 互不相关问题一次性轰炸用户 | 用户 bewildered, 违 grill-me 逐问审 | 强相关/同源决策点可批量问 (提效); 互不相关或需先答才能定下一问的分批, 每批等反馈 |
| 3 | 纯文本提问代替 AskUserQuestion | 用户无法用工具 UI 选 = 失去决策门 | 决策点必经 AskUserQuestion 工具 |
| 4 | codebase 能答的问用户 | 浪费用户时间, 暴露 grill 没做功课 | 先 Read/Grep 查, 答不了的才问 |
| 5 | 找不到弱点就盖章"通过" | 结构合规 ≠ 实质有效, 盖章 = grill 失败 | 再过轴 H/J/K; 仍无则标"未发现, 非保证" |
| 6 | 跳过轴 I (token) / 轴 J (自举) | 这两轴最易漏且杀伤最大 (零可见度故障/routing 死结) | 必过, 即使工件短 |
| 7 | 只审主文不审 references 深处 | 过时脚注/矛盾判断藏 references, 主文清理带不掉 | grep -rn 关键声明跨 references 全扫 |
| 文件 | 用途 |
| --- | --- |
| references/axis-deep-dive.md | 12 轴各自的深挖问题清单 (每轴 3-5 追问 + 历史盲点实例), 第 2 步逐轴 grill 时查 |
skill-review-blindspots): grilling red-team 实战沉淀的 9 条高频盲点 → 本 skill 默认骨架轴 (可扩展, 非固定)trellisx-orchestrate — planning 编排 (grill 路由目标: 编排类弱点)trellisx-spec — spec 破坏式重构 (grill 路由目标: spec 类弱点)darwin-skill — dim8 实测验证 (grill 互补: 逻辑审查 vs 实测)tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。