Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Structured checkpoint format for requesting human input. When an agent needs a decision, it must stop, present context, show options, and wait. Activate when delegating to subagents, running background tasks, or hitting any decision point that requires human judgment.
.claude/skills/majiayu000-user-input-protocol/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 200% | 0% |
Value: Respect -- the developer's judgment governs all consequential decisions. The agent never assumes when it should ask.
Defines a structured format for agents to request human input at decision points. Prevents agents from making assumptions on the developer's behalf, ensures questions include enough context for informed decisions, and provides a pause-and-resume pattern for subagents that cannot directly prompt the user.
When you encounter a decision that requires human judgment, stop working immediately. Do not guess. Do not pick the "most likely" option. Present the decision clearly and wait.
Decisions that require human input:
Decisions that do NOT require human input:
When you need input, output this structured checkpoint:
AWAITING_USER_INPUT
---
Context: [Why you are asking -- what you were doing and what you found]
Decision needed: [The specific question, one sentence]
Options:
A) [Label] -- [What this means and its implications]
B) [Label] -- [What this means and its implications]
C) [Label] -- [What this means and its implications]
Recommendation: [Which option you suggest and why, or "No recommendation"]
---Rules for the checkpoint:
Example:
AWAITING_USER_INPUT
---
Context: While implementing the login endpoint, I found two email validation
patterns in the codebase. auth/validate.rs uses strict RFC 5322 parsing.
signup/forms.rs uses a simple regex check. These produce different results
for edge cases like "user+tag@example.com".
Decision needed: Which email validation approach should be the project standard?
Options:
A) Strict RFC 5322 -- rejects fewer valid addresses, more complex to maintain
B) Simple regex -- faster, but may accept malformed addresses
C) Context-dependent -- strict for auth, lenient for forms
Recommendation: A) Strict RFC 5322, applied everywhere for consistency
---Subagents and background tasks typically cannot prompt the user directly. When a subagent needs input, it must save its progress before pausing so work can resume without starting over.
State to save before pausing:
Where to save state depends on your harness:
After saving state, output the AWAITING_USER_INPUT checkpoint and stop. The orchestrator or main conversation detects the pause, presents the question to the user, and resumes the subagent with the answer.
When resumed with the user's answer:
Do not re-analyze files you already analyzed. Do not re-read context you already saved. The purpose of state preservation is to make resumption instant.
Do:
Do not:
When multiple related decisions are needed, group them in one checkpoint rather than pausing repeatedly. Number each question.
AWAITING_USER_INPUT
---
Context: Setting up the test infrastructure for the new auth module.
Decisions needed:
1. Test framework?
A) Jest -- already used in 3 other modules
B) Vitest -- faster, but would introduce a second test runner
Recommendation: A) Jest for consistency
2. Test file location?
A) Colocated (auth/__tests__/) -- matches signup module pattern
B) Top-level (tests/auth/) -- matches API module pattern
Recommendation: A) Colocated, to match the newer module convention
---This skill is advisory. It instructs agents to pause at decision points and use structured checkpoints. On harnesses with plugin support, enforcement hooks can detect when an agent makes assumptions without pausing. On harnesses without enforcement, the agent follows these practices by convention. If you observe the agent making decisions it should have asked about, point it out. For available enforcement plugins, see the Harness Plugin Availability table.
After applying this skill, verify:
This skill works standalone. For enhanced workflows, it integrates with:
Missing a dependency? Install with:
npx skills add jwilger/agent-skills --skill orchestration| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,399 | 8,467 | -32% | 1 | 1 | 0% | 2,098 | 1,815 | -13% | 0 | 0 | — |
case-02 | fail→pass | 26,377 | 16,730 | -37% | 1 | 1 | 0% | 3,275 | 3,213 | -2% | 0 | 0 | — |
case-03 | fail→pass | 10,992 | 5,948 | -46% | 1 | 1 | 0% | 1,704 | 2,438 | +43% | 0 | 0 | — |
case-04 | fail→pass | 21,091 | 5,521 | -74% | 1 | 1 | 0% | 2,493 | 2,349 | -6% | 0 | 0 | — |
case-05 | fail→pass | 17,015 | 10,703 | -37% | 1 | 1 | 0% | 1,899 | 2,381 | +25% | 0 | 0 | — |
case-06 | fail→pass | 10,579 | 8,869 | -16% | 1 | 1 | 0% | 955 | 2,864 | +200% | 0 | 0 | — |
case-07 | pass→pass | 12,650 | 9,948 | -21% | 1 | 1 | 0% | 2,630 | 3,323 | +26% | 0 | 0 | — |
case-08 | pass→fail | 6,152 | 22,674 | +269% | 1 | 1 | 0% | 940 | 1,742 | +85% | 0 | 0 | — |
case-09 | fail→fail | 8,035 | 17,167 | +114% | 1 | 1 | 0% | 375 | 1,805 | +381% | 0 | 0 | — |
case-10 | fail→fail | 4,300 | 9,089 | +111% | 1 | 1 | 0% | 814 | 1,961 | +141% | 0 | 0 | — |
case-11 | fail→pass | 10,110 | 10,162 | +1% | 1 | 1 | 0% | 1,621 | 2,294 | +42% | 0 | 0 | — |
case-12 | fail→pass | 13,504 | 10,587 | -22% | 1 | 1 | 0% | 1,341 | 2,273 | +70% | 0 | 0 | — |
case-13 | fail→pass | 13,785 | 5,114 | -63% | 1 | 1 | 0% | 2,184 | 2,187 | +0% | 0 | 0 | — |
case-14 | fail→pass | 12,271 | 7,657 | -38% | 1 | 1 | 0% | 1,219 | 2,867 | +135% | 0 | 0 | — |
case-15 | fail→pass | 15,709 | 12,095 | -23% | 1 | 1 | 0% | 1,663 | 2,607 | +57% | 0 | 0 | — |
case-16 | fail→pass | 6,548 | 5,542 | -15% | 1 | 1 | 0% | 1,110 | 2,311 | +108% | 0 | 0 | — |
case-17 | fail→pass | 14,144 | 11,671 | -17% | 1 | 1 | 0% | 2,146 | 2,556 | +19% | 0 | 0 | — |
case-18 | pass→fail | 11,111 | 9,709 | -13% | 1 | 1 | 0% | 1,140 | 1,575 | +38% | 0 | 0 | — |
case-19 | fail→pass | 20,356 | 5,017 | -75% | 1 | 1 | 0% | 2,104 | 2,229 | +6% | 0 | 0 | — |
case-20 | pass→pass | 16,054 | 7,383 | -54% | 1 | 1 | 0% | 3,583 | 2,802 | -22% | 0 | 0 | — |
case-21 | fail→pass | 7,217 | 6,052 | -16% | 1 | 1 | 0% | 338 | 2,510 | +643% | 0 | 0 | — |
case-22 | fail→pass | 11,834 | 7,321 | -38% | 1 | 1 | 0% | 1,091 | 2,274 | +108% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 18 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.