一键导入
user-elicit
User Requirements Elicitation survey (Phase 2)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
User Requirements Elicitation survey (Phase 2)
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Install Pasture binaries (pastured, pasture, pasture-release) from GitHub Releases, go install, or Nix
Pasture protocol reference documentation — 12-phase workflow, agent roles, constraints, and coding standards. Read when you need to understand the full workflow or look up conventions.
Create handoff document and transfer to supervisor
Create PROPOSAL-N task with full technical plan
Ratify proposal, mark old proposals pasture:superseded
Spawn 3 axis-specific reviewers (A/B/C)
| name | user-elicit |
| description | User Requirements Elicitation survey (Phase 2) |
Command: pasture:user:elicit — User Requirements Elicitation survey (Phase 2)
-> Full workflow in PROCESS.md <- Phase 2
[user-elicit-plan-backwards]
[user-elicit-read-phase1]
[user-elicit-multiselect]
[user-elicit-verbatim-responses]
[user-elicit-chain-dep]
[user-elicit-urd-reference]
bd dep add --blocked-by for URD links (URD is a reference document, not a blocking dependency)[user-elicit-code-shown]
[user-elicit-invoke-skill]
Skill(/pasture:user-elicit) so the verbatim-capture and validation-case elicitation procedures are loaded[user-elicit-raise-deferrals]
[frag--validation-cases]
| Sub-step | Label | Description |
|---|---|---|
| s2_1-elicit | pasture:p2-user:s2_1-elicit | URE survey — structured requirements elicitation |
| s2_2-urd | pasture:p2-user:s2_2-urd (also pasture:urd) | Create URD — single source of truth for requirements |
Ask about the user's ultimate goal and what interfaces they envision:
Jump to the starting point:
Ask targeted questions to map the problem space:
Final question to capture anything missed.
Elicit concrete validation cases during this URE — for every request, not only fix-intent ones. We always need to know what "done" means, and what correct vs incorrect behaviour looks like:
These cases seed the request's test fixtures and are the set confirmed with the user in UAT (/pasture:user-uat) and evaluated against the implementation. Do NOT introduce a request-type enum to gate this — what a request needs is recognized semantically.
Before designing URE questions, read all Phase 1 outputs (classification, research findings, codebase exploration) from the REQUEST task and its comments. These narrow the design space and reveal which boundaries are already clear vs which need user input.
bd show <request-task-id> # Read classification + research + explore findings
Use the Phase 1 findings to identify:
Structure questions as a decision tree that progressively narrows the design space. Each question should depend on the answers to previous questions.
Round 1: Highest-leverage boundaries (1-2 questions per AskUserQuestion call)
Identify the 2-3 dimensions that most constrain the design. These are the axes where different choices lead to fundamentally different architectures.
Ask one component at a time. Show the user:
Round 2: Dependent decisions (informed by Round 1 answers)
With the high-level architecture settled, ask about the next layer of decisions that were ambiguous.
Round 3: Edge cases and constraints (if needed)
Remaining questions about error handling, performance targets, compatibility requirements — but only where the answer isn't obvious from prior context.
Final: Catch-all
One open-ended question to capture anything the decision tree missed.
AskUserQuestion(questions: [
{
question: "What is your end vision for this feature? How will users interact with it when complete?",
header: "End Vision",
multiSelect: true,
options: [
{ label: "Simple UI control", description: "Button/link users click" },
{ label: "Automated process", description: "Happens without user action" },
{ label: "API endpoint", description: "Programmatic access" },
{ label: "Background service", description: "Runs continuously" }
]
},
{
question: "What is the minimum viable version (MVP) that would be useful?",
header: "MVP Scope",
multiSelect: true,
options: [
{ label: "Core functionality only", description: "Just the basic action" },
{ label: "With confirmation", description: "User confirms before action" },
{ label: "With feedback", description: "Show success/error state" },
{ label: "Full featured", description: "All bells and whistles" }
]
},
{
question: "Are there any specific constraints or requirements?",
header: "Constraints",
multiSelect: true,
options: [
{ label: "Performance critical", description: "Must be fast" },
{ label: "Security sensitive", description: "Handles sensitive data" },
{ label: "Backwards compatible", description: "Can't break existing" },
{ label: "No constraints", description: "Flexible implementation" }
]
},
{
question: "Is there anything else we should know about this feature?",
header: "Other",
multiSelect: true,
options: [
{ label: "Related to existing feature", description: "Connects to something" },
{ label: "Inspired by another product", description: "Has a reference" },
{ label: "Urgent timeline", description: "Needed soon" },
{ label: "Nothing else", description: "Covered everything" }
]
}
])
After survey completion, capture the full Q&A record using the same structured format as UAT_TEMPLATE.md. Each question must include the exact question text, ALL options with their descriptions, and the user's verbatim response. When a definition, code snippet, or example was shown to the user before a question, capture it verbatim in a Definition/code shown: field (parity with UAT's 'Definition shown' / 'Command run' fields). For every request, also record the elicited validation cases verbatim.
bd create --labels "pasture:p2-user:s2_1-elicit" \
--title "ELICIT: {{feature name}}" \
--description "---
references:
request: {{request-task-id}}
---
## Questions and Responses
### End Vision
Q: What is your end vision for this feature? How will users interact with it when complete?
Definition/code shown: {{verbatim definition/snippet shown to user, or 'none'}}
Options: Simple UI control (Button/link users click), Automated process (Happens without user action), API endpoint (Programmatic access), Background service (Runs continuously)
A: {{user's verbatim selections and any custom input}}
### MVP Scope
Q: What is the minimum viable version (MVP) that would be useful?
Options: Core functionality only (Just the basic action), With confirmation (User confirms before action), With feedback (Show success/error state), Full featured (All bells and whistles)
A: {{user's verbatim selections}}
### Constraints
Q: Are there any specific constraints or requirements?
Options: Performance critical (Must be fast), Security sensitive (Handles sensitive data), Backwards compatible (Can't break existing), No constraints (Flexible implementation)
A: {{user's verbatim selections}}
### Other
Q: Is there anything else we should know about this feature?
Options: Related to existing feature (Connects to something), Inspired by another product (Has a reference), Urgent timeline (Needed soon), Nothing else (Covered everything)
A: {{user's verbatim input}}
## Validation Cases (EVERY request)
- Definition of done: {{verbatim observable outcome that means the request is satisfied}}
- Must pass (correct behaviour): {{verbatim expected correct behavior}}
- Must fail / out of scope (incorrect behaviour): {{verbatim — for fix-intent, the input/behavior that fails today}}
- Repro / real data: {{verbatim commands, data, or steps — or 'none'}}" \
--assignee architect
# Chain dependency: REQUEST blocked by ELICIT
bd dep add {{request-task-id}} --blocked-by {{elicit-task-id}}
After the elicit task is created, create the URD as the single source of truth for user requirements:
bd create --labels "pasture:urd,pasture:p2-user:s2_2-urd" \
--title "URD: {{feature name}}" \
--description "---
references:
request: {{request-task-id}}
elicit: {{elicit-task-id}}
---
## Requirements
{{structured requirements extracted from URE survey}}
## Priorities
{{user-stated priorities from survey responses}}
## Design Choices
{{design decisions surfaced during elicitation}}
## MVP Goals
{{minimum viable scope identified}}
## End-Vision Goals
{{user's ultimate vision for the feature}}"
The URD is a reference document, not a blocking dependency. Other tasks reference it via description frontmatter (urd: <urd-task-id>), not via blocking dependency commands.
Record the URD task ID — pass it to the architect for Phase 3.
After elicitation and URD creation, invoke /pasture:architect to begin proposal creation (Phase 3). Pass the URD ID so the architect can reference it.
The proposal task will block the elicit task:
bd dep add {{elicit-task-id}} --blocked-by {{proposal-task-id}}