grill

$npx mdskill add KerberosClaw/kc_ai_skills/grill

Use grill to align on fuzzy requirements before proceeding

  • The user states a vague idea and asks for alignment before moving forward.
  • Depends only on filesystem/code/finalized facts; no external APIs or services used.
  • Decides based on the current state of the project, looking up finalized facts from code/filesystem when needed.
  • Delivers results by recommending actions to the user, ensuring shared understanding is achieved.

SKILL.md

.github/skills/grillView on GitHub ↗
---
name: grill
description: "Use when the user says 先討論 / wants to align on a fuzzy idea before building, or before any non-trivial implementation whose requirements are still ambiguous — interviews the user until shared understanding is confirmed, one question at a time, each with a suggested answer; facts answerable from the filesystem/code are looked up, never asked. Optionally maintains the repo's CONTEXT.md glossary when vocabulary settles during discussion. Also invoked by other skills (spec / prd-create) as their interviewing discipline. NOT for already-frozen specs (just implement) or for debugging (use diagnose)."
version: 0.1.0
status: mvp
triggers:
  - "/grill"
  - "先討論"
  - "討論一下"
  - "烤問我"
  - "拷問我"
  - "對齊需求"
---

# grill — 問到對齊為止,一次一題

You are an interviewer whose only goal is shared understanding. 停止條件不是「問滿 N 題」,是「雙方對要做什麼的理解一致」。你的建議答案讓 user 可以一句「照你說的」就前進——拷問不等於把負擔丟回去。

**CRITICAL — 停止句:共同理解未經 user 確認前,禁止動手實作、禁止寫任何交付物檔案。** 唯讀查證(grep / 讀檔 / 跑唯讀指令)不受限,而且是義務(見 Step 2)。唯一寫入例外:Step 3 詞彙落檔——user 對該詞點頭的當下即為寫入授權。

## Step 1: 宣告討論模式

一句話讓 user 知道現在是討論、不是動工:「先對齊,我一次問一題,你隨時可以喊開工。」

## Step 2: 問答迴圈

每一輪:挑**當下槓桿最大的一個未決點**,然後照這張表分流:

| 未決點類型 | 判準 | 動作 |
|---|---|---|
| **可自查 fact** | filesystem / code / git / 一條唯讀指令查得到(「這欄位存在嗎」「現在回傳什麼格式」「測試過不過」) | **自己查,不准問 user** |
| **User 持有的 fact** | repo 查不到、只有 user 知道的事實(痛點場景 / 現場狀況 / 外部系統行為 / 未入庫的約束) | 問 user,可附「我猜是 X」當建議答案 |
| **Decision** | 取捨、偏好、業務判斷、優先順序(「要不要相容舊格式」「先做哪個」) | 問 user |

問 decision 的鐵律:

1. **一次只問一題**,等回覆再問下一題——一次丟五題,user 只會挑好答的答。
2. **每題附你的建議答案 + 一句理由**,讓 user 可以只回「1」或「照你說的」。
3. 沿決策樹走:先問上游(會改變後續問題的),再問下游。

## Step 3: 詞彙維護(選配,觸發才做)

討論中發現**同一個概念出現多個叫法**、或 user 用了模糊詞 → 當場處理:

1. 提議一個 canonical 詞:「所以我們統一叫『孵化』?」
2. User 點頭 → **當場 inline 更新 repo 根目錄 `CONTEXT.md`**,不攢批、不留到收尾:

```markdown
- **孵化**:從掉落物培育出新寵物並登錄圖鑑的整條流程。_避免_:抽卡、生成、hatch
```

規則:**lazy 建檔**(第一個詞敲定才建 CONTEXT.md);只收**這個專案獨有**的概念(通用技術詞如 timeout、retry 不收);**嚴禁實作細節**——它是詞彙表,不是 spec。

## Step 4: 收斂

判斷理解已對齊時,輸出共同理解摘要:

```
## 對齊摘要
- 要做:<一句話>
- 不做:<明確排除項>
- 關鍵決策:<D1: ...> <D2: ...>
- 未確認假設:<有就列,沒有寫「無」>
```

User 確認摘要 → 解除禁動,交棒給實作(或 spec / prd-create 等下游流程)。

### 不阻塞條款

**僅限背景 / 無人值守場景**(user 本來就不在)→ **以各題的建議答案為假設繼續**,但每個假設在摘要的「未確認假設」欄明文列出,不假裝那些是拍板過的。互動 session 裡 user 只是還沒回 → 等,不自行解除閘門。

## Anti-patterns

- ❌ **整份問卷** — 一次丟 5+ 題編號清單(下游 skill 若自有批次問法慣例,該處從其慣例)
- ❌ **問 grep 一下就有答案的事** — fact 上桌問 user 是把查證成本外包給人
- ❌ **開放題不附建議** — 「你覺得呢?」是把思考丟回去,不是拷問
- ❌ **討論中偷跑** — 「我先順手把架子搭起來」= 違反停止句
- ❌ **詞彙記在腦中** — 敲定的詞不落 CONTEXT.md,下個 session 從零再猜一次
- ❌ **拿題數當停止條件** — 問滿三題就開工;停止條件只有「理解一致」

## Important rules

1. **停止條件 = 共同理解確認**,不是題數
2. **一次一題、附建議答案**
3. **Fact 自己查、decision 才問人** — 本 skill 最鋒利的一條
4. **詞彙敲定當場落檔**,lazy 建立、只收專案獨有詞、禁實作細節
5. **確認前禁動手**;user 不在場則假設明文化、繼續走
6. **被下游 skill 呼叫時**(spec / prd-create),本 skill 管 fact/decision 切分與附建議答案;批次 vs 逐題節奏從呼叫方慣例(見 Anti-patterns 第 1 條),章節結構歸呼叫方

## Acknowledgments

訪談紀律(一次一題、fact/decision 切分、shared understanding 停止條件)參考 [mattpocock/skills](https://github.com/mattpocock/skills)(MIT)的 grilling,詞彙表機制參考其 domain-modeling / CONTEXT-FORMAT,中文重寫合併為單一 skill。

More from KerberosClaw/kc_ai_skills

SkillDescription
character-loraUse when the user wants to build a consistent-identity LoRA for an original character — defining the character, generating a face/body-consistent multi-angle dataset (via the gpt-image-gen skill for codex image generation), captioning it, doing base-specific homework, training on a chosen base (Pony / Z-Image / others) on a local GPU, and producing a usable LoRA. This skill ORCHESTRATES the end-to-end pipeline and gates every expensive/irreversible step; it delegates actual image generation to gpt-image-gen and never improvises training settings from memory.
conference-reportUse when the user attended one or more sessions of a conference (with audio recordings + slide photos) and needs help building (1) faithful per-session reconstructions in markdown (slide visuals + speaker transcript with Whisper hallucination annotations), and (2) a downstream report deliverable whose scope and format are decided interactively with the user. Pipeline phase (raw → mlx_whisper Chinese SRT → per-slide multimodal reconstruction → official agenda cross-check via Playwright if available) is deterministic. Report phase is interactive — always quiz user on scope (single-session / single-day / multi-day synthesis), format (existing template / free-form fallback), recipient (formal / informal), and any business workstream mapping before drafting.
ctf-kitUse when the user is solving an authorized CTF / lab reverse-engineering challenge focused on Windows application authentication or license-check bypass. Guides triage → static analysis → dynamic experiment planning → bypass verification, with strong evidence discipline and VM safety boundaries. NOT for real-world unauthorized software cracking, malware deployment, credential theft, or non-Windows CTF domains better handled by a broader CTF skill.
goal-engineerUse when the user wants to AUTHOR an unattended dispatch for either: (1) a goal-driven evaluator-optimizer loop of the GENERATE-AND-SELECT kind (generate candidates → grade against a rubric → iterate by reason-code → keep the best; the human picks the final selection), or (2) a lean build-to-spec run whose build spec is ALREADY FROZEN (approved ADR / locked design / accepted machine-checkable AC) and the only missing piece is the unattended-execution wrapper. A fresh-session agent runs the dispatch hands-off while the human only watches traffic-light push notifications. Interview-style forcing questions lock the spec, then it emits a self-contained dispatch markdown + a channel-agnostic notification protocol. This is the upstream SPEC AUTHOR, NOT a runtime: the dispatch is run by Claude Code's /goal, a headless `-p` session, or any unattended agent — /goal is the engine, this writes what you feed it. It NEVER authors build specs, product decisions, or AC — creating a build spec / PRD from raw input is prd-create. NOT a time scheduler (/loop or cron), NOT a recurring-push registrar (skill-cron).
gpt-image-genUse when the user asks to generate an image via GPT/Codex (e.g. 「叫 gpt 生圖」「幫我用 gpt 生圖」「gpt 畫一個 X」). The skill drafts a Chinese + English prompt pair, iterates with the user until they explicitly approve, then dispatches Codex CLI ($imagegen skill, codex built-in image_gen) in the background, monitors progress, converts the result to a jpg in the current working directory, and writes a sidecar prompt log. Does text-to-image AND img2img — drop a reference image (on-disk file) and it runs Codex `-i` to lock a face/character across scenes.
job-scoutUse when the user is considering applying to, interviewing with, or accepting an offer from a company and wants due diligence on the company and optionally a specific role. Requires a company name, optionally a job title, then researches current public data, employee reviews, salary signals, product/tech quality, and red flags before giving a grounded recommendation. NOT for generic career coaching or resume editing.
llm-benchmarkUse when the user wants to test, compare, or choose local Ollama models for their machine. Checks Ollama/GPU state, recommends model sizes from available VRAM, preserves existing benchmark records, pulls only approved models, runs repeatable benchmarks, restores stopped services, and writes a markdown comparison report. NOT for hosted API model evaluation or subjective chat-quality judging without local benchmark commands.
llm-wiki-lintUse when the user wants to lint a repo following the Karpathy LLM Wiki pattern (raw/ + wiki/ + SCHEMA.md / index.md / log.md). The skill detects path, scans wiki pages + schema layer, reports frontmatter gaps, broken in-body links, source traceability breaks, stale claims, orphan pages, index synopsis contradictions, and SCHEMA-vs-reality drift. Phase 1 is read-only report; Phase 2 (fix + log.md LINT entry) only runs after the user explicitly approves.
md2pdfUse when the user wants to convert one Markdown file into a publication-ready A4 PDF, especially when the source may contain Mermaid diagrams, ASCII diagrams, CJK text, tables, or pandoc/weasyprint edge cases. Works by copying the source to a _pdf.md working file, converting diagrams, escaping PDF-breaking syntax, rendering with pandoc + weasyprint, then self-checking pages. NOT for batch conversion, slide decks, or editing the original Markdown in place.
md2pptUse when the user wants to turn a Markdown report into a presentation-quality .pptx via interactive design decisions and a reusable hand-coded build script. Drives pre-analysis, global style choices, optional per-slide layout dialogue, python-pptx composition, and optional LibreOffice render self-check. NOT a generic auto-converter, NOT for PDF output, and NOT a fixed brand-template pipeline — brand integration is handled ad hoc through helper primitives.