Skill Learning

ask-matt

1. Bilingual SKILL.md

左右滑动可直接切换英文版与中文版;两种语言按段落自动对齐。英文中的蓝色虚线词语可点击查看解释。共标记 17 处。

入口 skill:ask-matt左右滑动切换语言 · 段落位置自动对齐
# Ask Matt
You don't remember every skill, so ask.
Before stating what a skill does or recommending a step be skipped, read that skill's SKILL.md: the summaries here are .
A **flow** is a path through the skills. Most paths run along one **main flow**, and two **** merge onto it. Everything else is standalone, or a vocabulary layer that runs underneath.
## The main flow: idea → ship
The route most work travels. You have an idea and want it built.
1. **`/grill-with-docs`** sharpens the idea by interview. Start here whenever you are **working in a working directory**: it's stateful, retaining what it learns in `GLOSSARY.md` and ADRs. (No working directory? Use `/grill-me` instead, covered under Standalone. Both run the same `/grilling` primitive; `grill-with-docs` is the one that , which makes it the better of the two whenever a repo is there to leave it in.) 2. **Branch: can you settle every question in conversation?** If a question needs a runnable answer (state, business logic, a UI you have to see), detour through a prototype, bridged by **`/handoff`** in both directions (a prototype lives in its own directory, which is exactly what `/handoff` is for; see Phase boundaries): - **`/handoff`** out, then open a fresh session against that file, - **`/prototype`** to answer the question with throwaway code, - **`/handoff`** back what you learned, and reference it from the original idea thread. 3. **Branch: is this a multi-session build?** - **Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into , each declaring its ****. Then work the tickets one of two ways: - **`/implement`** per ticket, **`/clear`ing context between each one**. On a local tracker that's one file per ticket under `.scratch/<feature>/issues/`, worked blockers-first by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed. Each ticket is self-contained, so the last one's context is disposable. - **`/implement-spec`** for the whole spec in one run. It reads the tickets as a **task graph**, runs implementer subagents across the ready **** in parallel, and lands everything on one **integration branch**. Reach for it when you'd rather orchestrate the build than drive each ticket yourself. - **No** → **`/implement`** right here, in the same context window.
Either way, the code gets built by driving **`/tdd`** (one red-green slice at a time) and closes out with **`/code-review`**, a two-axis review (Standards + Spec) of the diff. `/implement` runs both per ticket; `/implement-spec`'s implementers each drive `/tdd`, and it runs one `/code-review` over the integration branch. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a .
When the work goes up as a pull request, **`/pr`** shapes the body: the smallest visual that shows the change, before/after evidence that it works, and a one-way or two-way door call. It's model-invoked, so the agent reaches for it whenever it writes a PR.
4. **`/retro`** closes the loop. After a build, and especially one that , it looks back over the session and suggests changes to the agent's **environment**, not the code: navigation pointers, automated checks, the coding standards `/code-review` enforces, steering files, tooling. Mechanical mistakes become deterministic checks; judgement calls become coding standards. The next build then starts from a better environment.
### Context hygiene
Keep steps 1–3 in **one unbroken context window** (don't compact or clear until after `/to-tickets`) so the grilling, spec, and tickets all build on the same thinking. Each `/implement` then starts fresh, working from the ticket. Run `/retro` in the session it's looking back on, before you clear; after clearing, point it at that session's log instead.
The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~150k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before `/to-tickets`, don't push on degraded; `/compact` at the nearest phase boundary and carry on (see Phase boundaries).
##
A starting situation that generates work, then merges onto the main flow.
- **Bugs and requests piling up** → **`/triage`**. It moves issues through triage roles and produces agent-ready issues, which **`/implement`** later picks up.
Triage is only for issues **you didn't create**: bug reports, incoming feature requests, anything that arrives raw. Tickets that `/to-tickets` produced are already agent-ready, so **don't triage them**.
- **Something's broken** → **`/diagnosing-bugs`**. For the hard ones: the bug that resists a first glance, the intermittent flake, the regression that crept in between two known-good states. It refuses to theorise until it has a **** (one command that already goes red on *this* bug), then fixes with a regression test. Once the fix is in, run **`/retro`** in the same session to ask what would have prevented the bug; where the real finding is that there's no good seam to lock it down, that's a job for **`/improve-codebase-architecture`**.
- **A huge, foggy effort: a greenfield project or a huge feature build, too big for one session** → **`/wayfinder`**, the most cognitively demanding flow here. When the way from here to the destination isn't visible yet, it charts a **shared map** of **decision tickets** on the issue tracker and resolves them one at a time, producing **decisions, not deliverables**, until and the way is clear. Where **`/grill-with-docs`** sharpens an idea you can hold in one session, wayfinder is for the idea you can't, and it's slower and denser, so save it for exactly that, never a well-scoped feature.
When the map clears, **it hands off, it doesn't build**: merge onto the main flow at **`/to-spec`**, which collapses the map's linked decisions into a buildable plan, then `/to-tickets` and `/implement` as usual. Looping the map straight into `/implement` skips that collapse and throws the linked detail away, so go straight to `/implement` only when the effort turned out genuinely small.
## Codebase health
Not feature work, just upkeep.
- **`/improve-codebase-architecture`** runs whenever you have a spare moment to keep the codebase good for agents to operate in. It surfaces ****; picking one _generates an idea_ you can take into the main flow at `/grill-with-docs`. It's the survey that finds the candidates; **`/codebase-design`** (below) is the bench you design the chosen one on.
## Vocabulary underneath
Two model-invoked references that run *beneath* the other skills, each the single source of truth for its vocabulary. Reach for them directly when the **words**, not the process, are the problem; or let the skills above pull them in.
- **`/domain-modeling`**: sharpen the project's *domain* language: challenge a fuzzy term, resolve an overloaded word ("account" doing three jobs), record a hard-to-reverse decision as an ADR. It's the active discipline `/grill-with-docs` drives to keep `GLOSSARY.md` a clean glossary. - **`/codebase-design`** is the deep-module vocabulary (module, interface, depth, seam, adapter, leverage, locality) for designing a module's *shape*: a lot of behaviour behind a small interface at a clean seam. `/tdd` and `/improve-codebase-architecture` both speak it.
## Phase boundaries
A **phase** is a chunk of work inside a session: the grilling, the implementation, the QA. At the **boundary** between two of them you have five options, and picking between them is the fuzziest decision in this whole map:
- **Continue**: stay put. Costs nothing, loses nothing. - **`/clear`**: empty the window, when nothing here matters to what's next. - **`/handoff`** writes a portable markdown file. Narrow: only for a **new harness**, a **new directory**, a **colleague**, or forking a side task **mid-phase**. What it buys is portability. - **Subagent**: send a tightly-scoped task to its own window and get a report back. - **`/compact`** compresses this context and seeds a fresh session with it. The **default**, at the bottom of the tree rather than the first reach.
Read [PHASE-BOUNDARIES.md](PHASE-BOUNDARIES.md) for the ordered tree: the five questions, the reasoning behind each branch, and why the primary-source cost makes **Continue** the one to rule out first. Make the decision **at** a boundary; mid-phase, continue or split the rest into subagents.
## Standalone
Off the main flow entirely.
- **`/grill-me`**: the same relentless interview as `/grill-with-docs`, but **stateless**: it saves nothing locally and builds no `GLOSSARY.md`. Reach for it when you are **not working in a working directory** (sharpening a plan, a design, a piece of writing, anything with no repo under it). If you are in a working directory, use `/grill-with-docs` instead: it runs the same interview and , so it is strictly the better one. - **`/grilling`** is the interview primitive itself: rounds, the , facts are the agent's job and decisions are yours. `/grill-me` and `/grill-with-docs` are the two named ways in, and `/triage`, `/wayfinder` and `/improve-codebase-architecture` all run it internally. Reach for it directly only when you want the interview with no wrapper around it. - **`/prototype`** is a small, throwaway program that answers one design question: does this state model feel right, or what should this UI look like. Throwaway is a constraint on how the code is written, not a promise to destroy it: the answer folds into the real code, and the prototype itself is kept as a **** on a `prototype/<name>` branch out of main, pointed at from the implementation issue. It's the detour in step 2 of the main flow, but reach for it any time a design question is hard to settle on paper. - **`/research`**: delegate reading legwork to a **background agent**: it investigates a question against **s**, then leaves a cited Markdown file in the repo. Keep working while it reads. The file it produces is something to take *into* the main flow at `/grill-with-docs`, since research feeds the thinking rather than replacing it. - **`/to-questionnaire`** comes in when the thing blocking you isn't in your head or the codebase but in **someone else's**, and it writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about the subject, it interviews you about the **send** (who it's going to, what you need back) and aims the questions at the gap. What comes back is material for `/grill-with-docs` or `/to-spec`. - **`/wizard`** is for the steps only a **human** can take: provisioning infrastructure, setting up credentials or CI secrets, clicking through an unfamiliar third-party dashboard, running a one-off migration or cutover. It generates an interactive bash script that opens each URL, captures each value, and writes it into `.env` and GitHub secrets, so the procedure stops being something you re-explain to an agent every time. Model-invoked, so the agent reaches for it the moment it hits a wall only you can pass. If the agent could just do it itself, it should; this is for where a . - **`/wait-what`** is the corrective for a message that didn't land. Use it mid-conversation, inside any other skill, and the agent re-pitches what it just said with the context you were missing, in plain English, using the `GLOSSARY.md` vocabulary. It works after the fact; `/grill-with-docs` is the upfront cure, because a shared language agreed early is what stops the jargon arriving at all. - **`/teach`**: learn a concept over multiple sessions, using the current directory as a stateful workspace. - **`/writing-for-agents`** is the reference for writing documents agents consume: skills, AGENTS.md, pointed-at docs.
## Precondition
**`/setup-matt-pocock-skills`**: run before your first engineering flow to configure the issue tracker, triage labels, and doc layout the other skills assume. Custom issue trackers also work.
# Ask Matt
你不必记住每项技能,直接问即可。
在说明某项技能的作用,或建议跳过某个步骤之前,请先阅读该技能的 SKILL.md:这里的摘要只用于帮助定位方向。
一个 **flow(流程)** 是贯穿多项技能的一条路径。大多数路径沿着一条 **main flow(主流程)** 前进,另外有两条 **on-ramps(匝道)** 汇入其中。其余技能要么独立使用,要么作为底层词汇层运行。
## 主流程:想法 → 交付
这是大多数工作会走的路线:你有一个想法,并希望把它做出来。
1. **`/grill-with-docs`** 通过访谈打磨想法。只要你**正在工作目录中工作**,就从这里开始:它是有状态的,会把学到的内容保存在 `GLOSSARY.md` 和 ADR 中。(没有工作目录?改用“独立技能”部分介绍的 `/grill-me`。二者都运行同一个 `/grilling` 原语;只要有仓库可供记录,`grill-with-docs` 会留下书面轨迹,因此两者之中它更合适。) 2. **分支:能否在对话中解决所有问题?** 如果某个问题需要通过可运行的东西才能回答(状态、业务逻辑、必须亲眼查看的 UI),就绕行原型;两个方向都用 **`/handoff`** 衔接(原型位于独立目录,这正是 `/handoff` 的用武之地;参见“阶段边界”): - 用 **`/handoff`** 导出,然后针对该文件开启一个新会话; - 用 **`/prototype`** 通过一次性代码回答问题; - 再用 **`/handoff`** 带回结论,并在原始想法线程中引用它。 3. **分支:这是一个跨多会话的构建吗?** - **是** → 先用 **`/to-spec`**(把线程转成规格),再用 **`/to-tickets`** 拆成 tracer-bullet(贯穿式)工单,每张工单都声明自己的**阻塞边**。然后用以下两种方式之一处理工单: - 每张工单使用一次 **`/implement`**,并在工单之间 **`/clear` 清空上下文**。在本地跟踪器中,每张工单对应 `.scratch/<feature>/issues/` 下的一个文件,人工按阻塞者优先处理;在真正的跟踪器中,边会变成原生阻塞链接,因此任何阻塞项已经完成的工单都可领取。每张工单都自包含,所以上一张工单的上下文可以丢弃。 - 对整份规格一次运行 **`/implement-spec`**。它把工单读取为一个**任务图**,让实现子智能体并行处理当前就绪的**前沿**,并把所有成果落到同一个**集成分支**。当你更愿意编排构建,而不是亲自逐张推动工单时,就选它。 - **否** → 就在这里、在同一个上下文窗口中使用 **`/implement`**。
无论哪种方式,代码都由 **`/tdd`** 驱动构建(每次完成一个红—绿切片),最后用 **`/code-review`** 收尾,对 diff 做双轴审查(标准 + 规格)。`/implement` 会为每张工单运行两者;`/implement-spec` 的每个实现者都会驱动 `/tdd`,并对集成分支统一运行一次 `/code-review`。如果你只想以测试优先方式实现一个具体行为,而不需要完整规格,可单独使用 **`/tdd`**;如果想对照一个固定基准审查分支或 PR,可单独使用 **`/code-review`**。
当工作以拉取请求提交时,**`/pr`** 会塑造正文:用最小的视觉材料展示变更,提供能够证明其有效的前后对比证据,并说明这是单向门还是双向门决策。它可由模型调用,因此智能体每次编写 PR 时都会主动使用它。
4. **`/retro`** 闭合反馈环。构建完成后,尤其是过程跑偏时,它回顾会话并建议修改智能体的**环境**而非代码:导航指针、自动化检查、`/code-review` 所执行的编码标准、引导文件和工具。机械性错误变成确定性检查;依赖判断的问题变成编码标准。于是下一次构建会从更好的环境起步。
### 上下文卫生
让第 1–3 步处在**一个不中断的上下文窗口**中(在 `/to-tickets` 完成之前不要压缩或清空),这样访谈、规格和工单都建立在同一套思考之上。之后每次 `/implement` 都从工单出发,以新上下文开始。请在 `/retro` 要回顾的原会话中、清空之前运行它;如果已经清空,则让它读取该会话的日志。
这里的上限是 **[smart zone(智能区)](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**:在这个窗口内(最先进模型约为 15 万 token),模型仍能保持敏锐推理。如果会话在 `/to-tickets` 之前就接近上限,不要让性能退化后继续硬撑;应在最近的阶段边界执行 `/compact`,然后继续(参见“阶段边界”)。
## 匝道
一种会产生工作、随后汇入主流程的起始情境。
- **Bug 和请求不断堆积** → **`/triage`**。它让问题依次经过各个分诊角色,产出可直接交给智能体的问题,之后由 **`/implement`** 领取。
分诊只适用于**并非由你创建**的问题:Bug 报告、外部功能请求以及任何未经整理的输入。`/to-tickets` 生成的工单已经可以直接交给智能体,因此**不要再分诊它们**。
- **某样东西坏了** → **`/diagnosing-bugs`**。它用于棘手问题:第一眼看不出的 Bug、间歇性抖动,以及在两个已知正常状态之间悄然引入的回归。在获得一个**紧密反馈环**之前,它拒绝建立理论;这个反馈环是一条能在“这个”Bug 上稳定变红的命令。随后它通过回归测试完成修复。修复后,在同一会话中运行 **`/retro`**,询问什么措施原本可以预防该 Bug;如果真正结论是缺少可锁定行为的良好接缝,那就是 **`/improve-codebase-architecture`** 的工作。
- **一项巨大且迷雾重重的工作:绿地项目或大型功能构建,大到一个会话无法承载** → **`/wayfinder`**,这是这里认知负担最高的流程。当通往目标的道路尚不可见时,它会在问题跟踪器上绘制由**决策工单**组成的**共享地图**,逐一解决这些工单;它产出的是**决策,而非交付物**,直到迷雾退去、道路清晰。**`/grill-with-docs`** 用来打磨一个会话能容纳的想法,而 wayfinder 用于一个会话容纳不了的想法。它更慢、密度更高,因此只在真正符合这个情境时使用,绝不要用于范围明确的功能。
地图清晰后,**它会交接,而不会构建**:在 **`/to-spec`** 处汇入主流程,把地图中彼此链接的决策压缩成可构建计划,再照常运行 `/to-tickets` 和 `/implement`。如果让地图直接进入 `/implement`,就会跳过这次压缩并丢掉相互链接的细节;只有当工作后来证明确实很小时,才直接进入 `/implement`。
## 代码库健康
这不是功能开发,只是维护。
- **`/improve-codebase-architecture`** 可在任何空闲时刻运行,让代码库继续适合智能体操作。它会揭示**可深化的机会**;选中其中一个会“生成一个想法”,随后可在 `/grill-with-docs` 处带入主流程。它像勘测工具,用来发现候选项;下面的 **`/codebase-design`** 则像工作台,用来设计已选中的候选项。
## 底层词汇
两个可由模型调用的参考技能运行在其他技能“下方”,分别是自身词汇的单一事实来源。当问题出在**词语**而不是流程时,可直接调用它们;也可以让上层技能自行引入。
- **`/domain-modeling`**:打磨项目的“领域”语言:质疑模糊术语、拆解一个被过载使用的词(例如 “account” 同时承担三种含义),并把难以逆转的决策记录为 ADR。它是 `/grill-with-docs` 主动采用的纪律,用于让 `GLOSSARY.md` 保持为干净的词汇表。 - **`/codebase-design`** 是深模块词汇的来源(模块、接口、深度、接缝、适配器、杠杆率、局部性),用于设计模块的“形状”:在干净接缝处,通过小接口承载大量行为。`/tdd` 与 `/improve-codebase-architecture` 都使用这套语言。
## 阶段边界
一个**阶段**是会话内的一块工作,例如访谈、实现或 QA。在两个阶段之间的**边界**上,你有五种选择;如何选择是整张地图中最模糊的决策:
- **继续**:留在原处。没有成本,也不丢失信息。 - **`/clear`**:当这里的任何内容都与下一步无关时,清空窗口。 - **`/handoff`**:写出一个可移植的 Markdown 文件。适用面很窄,只用于**新执行框架**、**新目录**、**同事**,或在**阶段中途**分叉出支线任务。它买到的是可移植性。 - **子智能体**:把范围严格限定的任务发送到独立窗口,并取回报告。 - **`/compact`**:压缩当前上下文,并用压缩结果初始化新会话。它是这棵决策树底部的**默认项**,而不是第一反应。
阅读 [PHASE-BOUNDARIES.md](PHASE-BOUNDARIES.md) 查看有序决策树:五个问题、每条分支背后的推理,以及为什么“继续”产生的第一手信息成本使它成为最先要排除的选项。请**在**边界上做决定;阶段中途则继续,或把剩余工作拆给子智能体。
## 独立技能
完全位于主流程之外。
- **`/grill-me`**:与 `/grill-with-docs` 一样进行不懈访谈,但它是**无状态的**:不在本地保存任何内容,也不构建 `GLOSSARY.md`。当你**不在工作目录中工作**时使用它,例如打磨计划、设计、文章或任何没有仓库承载的东西。如果你身处工作目录,应改用 `/grill-with-docs`:它运行同样的访谈并留下书面轨迹,因此严格来说更好。 - **`/grilling`** 是访谈原语本身:包含多轮访谈、前沿管理,以及“事实由智能体负责、决策由你负责”的分工。`/grill-me` 和 `/grill-with-docs` 是两个具名入口,`/triage`、`/wayfinder` 和 `/improve-codebase-architecture` 也会在内部运行它。只有在想要纯访谈、不需要任何包装时才直接调用。 - **`/prototype`** 是一个小型一次性程序,用来回答单个设计问题,例如这种状态模型是否合适,或者 UI 应该长什么样。“一次性”约束的是代码写法,并不承诺销毁代码:答案会融入真实代码,而原型本身保留为从 main 分出的 `prototype/<name>` 分支上的**第一手来源**,并由实现工单指向它。它是主流程第 2 步中的绕行路径;任何设计问题难以在纸面上确定时,也都可以调用。 - **`/research`**:把阅读工作委派给一个**后台智能体**;它依据**第一手来源**调查问题,并在仓库中留下带引用的 Markdown 文件。它阅读时你可以继续工作。产出的文件应在 `/grill-with-docs` 处带入主流程,因为研究为思考提供材料,而不是取代思考。 - **`/to-questionnaire`**:当阻塞信息不在你的头脑或代码库里,而在**别人的**头脑中时使用。它会编写一份问卷让对方填写。它是 `/grill-me` 的反向版本:不是就主题采访你,而是采访你这次“发送”的需求(发给谁、希望拿回什么),然后把问题对准信息缺口。收回的答案可作为 `/grill-with-docs` 或 `/to-spec` 的输入材料。 - **`/wizard`**:用于只有**人类**能完成的步骤,例如配置基础设施、设置凭据或 CI 密钥、操作陌生的第三方控制台,以及执行一次性迁移或切换。它会生成交互式 Bash 脚本,逐个打开 URL、收集每个值,并写入 `.env` 和 GitHub secrets,让这套流程不再需要每次都重新向智能体解释。它可由模型调用,因此一旦智能体撞上只有你才能跨越的障碍,就会主动使用它。如果智能体本可自行完成,就应该自行完成;这个技能只用于确实需要人参与闭环的地方。 - **`/wait-what`**:用于纠正没有讲明白的消息。可在对话中途、任何其他技能内部使用;智能体会补上你缺失的上下文,用浅白英语和 `GLOSSARY.md` 词汇重新表达刚才的内容。它是事后修复;`/grill-with-docs` 才是事前预防,因为及早达成共同语言,才能从根源上阻止术语突然出现。 - **`/teach`**:跨多个会话学习一个概念,并把当前目录作为有状态工作区。 - **`/writing-for-agents`**:关于如何编写供智能体使用的文档的参考,包括 skills、AGENTS.md 以及被这些文件指向的文档。
## 前置条件
**`/setup-matt-pocock-skills`**:第一次运行工程流程之前先执行,用于配置其他技能所假定的问题跟踪器、分诊标签和文档布局。自定义问题跟踪器同样可用。

Entry SHA-256: 1371f5ce005de0992a44b137748bfb960a56948aa9871b405fe9d90b24332e3c

2. Why This Skill Is Clever

一句话核心机制

ask-matt 不是技能目录,而是一张以情境为入口、以阶段边界为控制点、把探索工作最终汇入统一交付主干的流程路由图。

触发与边界

信息架构 / 执行顺序

  1. 先给出默认主干:grill-with-docs → to-spec → to-tickets → implement / implement-spec → code-review → retro。
  2. 再把原型验证与多会话构建做成两个显式分支,避免把所有项目强行塞进同一种执行方式。
  3. 把 triage、diagnosing-bugs、wayfinder 设成“匝道”,它们先处理特定不确定性,再汇入主干。
  4. 把 domain-modeling 与 codebase-design 放在底层词汇层,把 phase boundaries 设成贯穿全图的上下文控制协议。
  5. 最后列出独立技能与首次运行前置条件,覆盖不进入主干的需求。

最巧妙的设计点

  1. “the summaries here are for orientation only”
    - Direct source: 路由摘要只负责定位;在陈述能力或跳过步骤前,必须回到对应技能原文。
    - Interpretation: 这把“快速导航”和“权威行为定义”分层,防止中央路由器因摘要陈旧或过度压缩而替下游技能做决定。

  2. “Most paths run along one main flow”
    - Direct source: 多数工作共用一条主干,特殊场景只负责生成合格输入并回流。
    - Interpretation: 这避免了为每种入口复制一整套交付流程,新增入口只需说明“在哪里汇入”。

  3. “decisions, not deliverables”
    - Direct source: wayfinder 只消除大型工作的决策迷雾,不直接构建。
    - Interpretation: 给探索流程设置负责任的停止条件,防止高认知流程越权变成一个低透明度的巨型实现器。

  4. “one unbroken context window” 与工单后的 fresh context
    - Direct source: 访谈、规格、拆票共享连续上下文;每张实现工单则重新开始。
    - Interpretation: 它不是笼统追求“上下文越多越好”,而是按信息耦合度决定保留或清空:决策链需要连续,独立执行需要隔离。

  5. “the default, at the bottom of the tree rather than the first reach”
    - Direct source: /compact 是阶段边界决策树最后的默认项,而非第一反应。
    - Interpretation: 先判断能否继续、清空、交接或委派,再压缩;这样减少摘要丢失第一手细节的风险。

  6. “Mechanical mistakes become deterministic checks; judgement calls become coding standards.”
    - Direct source: retro 修改的是智能体环境而不是当前代码。
    - Interpretation: 复盘成果被编译进检查和标准,下一次执行天然受益,而不是只留下无人再读的总结。

防失败机制与 trade-off

可迁移原则

  1. 用一条默认主干承载共同交付步骤,让特殊入口只处理自己独有的不确定性。
  2. 为探索流程写清产物与停止条件,例如“产出决策,不产出交付物”。
  3. 把上下文保留策略放在阶段边界,并让不同选项回答不同的可移植性需求。
  4. 让复盘修改未来执行环境,把经验固化为自动检查或可审查标准。
  5. 让中央摘要只承担导航职责;任何执行判断都回读能力所有者的当前原文。
  6. 把共享词汇做成独立底层能力,避免每个流程重新定义关键概念。

今日实践题

假设一个大型需求已有三项未决业务规则、一个必须看真实交互才能回答的 UI 问题,而且最终要跨多个会话实现:请画出它从 wayfinder 到 prototype 再回到主流程的路径,并标出每个阶段边界应选择 Continue、handoff、subagent、clear 还是 compact。

Evidence note

核心流程、边界、“摘要只用于定位”的新增约束和引文均来自本次选中的 ask-matt/SKILL.md。仓库 AGENTS.md 只用于确认路由器的维护职责,未被当作选中原文。关于复用、耦合度和移植风险的判断属于设计解读。

Source & provenance
Repository path
skills/engineering/ask-matt/SKILL.md
Generated
2026-10-08 08:23 Asia/Shanghai
Upstream commit
f3fc5632f401156837ee3872f14fe33ccf1024ea
Source
View on GitHub