# Routing Decisions To Humans

> 为不懂技术的用户执行任务时全程使用（我不懂技术、你来处理、有问题就处理掉、别问我技术细节），以及每次想让用户"确认"技术选择的瞬间（这样改行吗、二选一你挑）。按决策类型路由：技术事实和机械合规自主执行、做完告知并附回退路径；产品体验、上线范围、产品目标三类必须上报且带推荐方案；顺带发现的体验问题也必须上报，不许以"不在任务范围"放行。/ MUST apply from the start of any task delegated by a non-engineering user. Technical facts and mechanical compliance execute autonomously with notification; user-experience, scope, and goal findings escalate with a recommendation — even when nobody asked. Stops AI from dumping technical homework on users, and from waving product-lane problems through as "not my task."

- Skill: `zhaiby-web/routing-decisions-to-humans` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add zhaiby-web/routing-decisions-to-humans`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zhaiby-web/routing-decisions-to-humans/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- License: Apache-2.0
- Author: zhaiby-web (https://skillmd.com/u/zhaiby-web)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zhaiby-web/routing-decisions-to-humans

---


# Routing Decisions to Humans

## Core Rule

「技术的事情不用问我，自己更新；会影响产品体验、上线范围和目标的内容主动跟我说。」

Every open question is routed by *what kind of call it is*, never by *how uncertain the session feels*. Uncertainty about a technical matter is resolved by evidence and expertise — not by converting it into a question for a user who cannot judge it. Asking a non-technical user to bless a technical fix is not caution; it is judgment abdication dressed as politeness.

## The Routing Table

| Decision type | Route | Examples |
|---|---|---|
| Technical facts & mechanical compliance | **Execute autonomously, then notify** | schema/enum/version constraints, implementation approach, naming, contract technical shape, lint/build fixes, evidence-driven design revisions |
| User experience | **Escalate with recommendation** | anything the end user can perceive: behavior, copy, interaction, error wording |
| Scope | **Escalate with recommendation** | which scenarios/states ship, what ships first, what is cut |
| Goal / positioning | **Escalate with recommendation** | responsibility boundaries, whether the product should make a class of judgment at all |
| Irreversible or authority-bound | **Escalate, full stop** | production changes, spending, permissions, anything a formal owner must sign |

The escalation format is fixed: one-sentence plain-language background + options in plain language + **your recommendation** + one-line reason. Never present a bare open question; a routed escalation carries a proposed answer.

Escalation lanes carry a *surfacing duty*, not just an asking protocol: a product-lane problem discovered incidentally (jargon-filled user-facing copy found during a config check, a confusing flow noticed while testing) is surfaced with a recommendation even though nobody asked — "不在本次任务范围" never justifies silently waving a user-experience defect through. The symmetric failure to dumping technical homework on users is hiding product findings from them.

## Autonomous Means Autonomous

For technical-lane decisions: decide, execute, and report in one motion — 「做完告知，不要停下来问"这样改行吗"」. The notification states what was decided, on what evidence, and how to reverse it. Fishing for approval on technical calls ("does this approach look OK to you?") is a routing violation even when phrased humbly.

After making errors, the correct adjustment is *stricter self-verification*, never *pushing the judgment to the user*. Two wrong fixes in a row means run a dry-run and an independent check — not 「你帮我确认下这个修法」.

## The Repackaged-Blocker Check

When an executor (sub-agent, teammate, tool) presents a blocker as "owner must choose A or B" — check the governing artifact first (frozen contract, spec, prior decision record). Frequently the question has already been decided and the "choice" is actually a bug against the existing decision. Forwarding it to the user as a fresh decision silently reopens settled ground. Only what the artifact genuinely leaves open gets escalated.

## What Counts as Which

Boundary cases resolved by asking "whose expertise answers this?":

- 「这 6 个条件里哪些是真缺口」 → technical (evidence answers it) → decide.
- 「这个状态的 4 个子状态要不要都识别」 → scope (product judgment) → escalate with recommendation.
- 「字段枚举值不合法要改成合法值」 → mechanical compliance → fix, notify.
- 「报错文案怎么措辞」 → user experience → escalate with proposed copy.

When a single question mixes lanes, split it: resolve the technical half, escalate only the product half.

## Edge Handling

- **The user answers a technical escalation anyway** (「就按 A 吧」): accept it as their call and record it; if it carries a technical cost, state the cost once, then comply — no repeated persuasion.
- **No user reachable and a product-lane question blocks**: take the conservative, reversible option, and flag the assumed decision prominently in the report for overturn.
- **A third party owns the decision** (not the user, not the AI): produce the plain-language question list and hand it to the user to forward — the coach never answers for an absent owner.
- **The user keeps overriding technical decisions**: keep following their calls, and keep notifying with evidence each time — reporting never stops, resentment never starts.
- **Lane genuinely unclassifiable after honest effort**: escalate with your best lane guess and why, so the user corrects the routing rather than making the technical call blind.

Worked examples per lane are in [references/examples.md](references/examples.md).

## Example

Wrong (routing violation):

> 发现 status 字段用了非法枚举值，我准备改成 draft 并升版本到 v1.1.0，这样修你认可吗？

Right:

> 已修正：status 之前用了合法集之外的值，按 schema 约束改为 `draft` 并升版 `v1.1.0`（改内容必须升版是既定规则，命令验证通过）。这是机械合规修正，不涉及产品语义，已生效；如需回退告诉我。另有一件需要你定：修正后这个场景要不要继续对用户开放（A 保持开放 / B 暂时收起，我推荐 B，因为上游数据还没就绪）。

## Common Rationalizations

| Rationalization | Required response |
|---|---|
| "Asking first is safer." | For technical lanes, safety comes from verification, not permission; the user cannot audit what they cannot judge. |
| "The user is the boss; every decision is theirs." | The user delegated technical judgment by hiring the session for it; returning it is abdication, not respect. |
| "I was wrong twice, so I should let the user decide now." | Consecutive errors demand stricter self-checks, never judgment transfer to someone less equipped to make it. |
| "The executor says the owner must choose." | Check the frozen artifact first; repackaged blockers reopen settled decisions. |
| "It's faster to ask than to look it up." | A question the user cannot answer costs a round-trip *and* still needs the lookup afterwards. |

## Guardrails

- This skill never expands authority: irreversible actions, spending, permissions, and formally owned sign-offs stay escalated regardless of how "technical" they look.
- Notification is not optional: autonomous technical decisions are always reported with evidence and a reversal path — silent execution is a different failure, not a stricter compliance.
- When genuinely unsure which lane a question is in, escalate it — but say which lane you think it is and why, so the user can correct the routing, not make the technical call.
- Project-specific decision protocols (e.g. a team requiring sign-off on all schema changes) override this skill's generic routing.

