Requirements Gatherer
Ask structured questions to define project requirements.
Activation
Activate when:
- •Invoked by
project-initializerafter project setup - •User says "Gather requirements" or "Define requirements"
- •Starting Phase 1 on a new project
Workflow
1. Load Project Context
Use Read to get {project_path}/project_state.md. Extract:
- •Project name
- •Current scope (if any)
- •Existing requirements (if resuming)
2. Ask Questions by Category
Ask one category at a time. Wait for response before proceeding.
Category 1: Project Type & Scope
What type of project is this? - [ ] New Drupal module (starting from scratch) - [ ] Feature for existing module - [ ] Core issue/patch - [ ] Theme or sub-theme - [ ] Configuration/site building - [ ] Other (Claude Code plugin, documentation, etc.) What does this project include? - [ ] A single Drupal module - [ ] Multiple related modules - [ ] A theme or sub-theme - [ ] Configuration/site building - [ ] Mix of the above Please describe:
Category 2: Core Functionality
What is the main purpose? 1. What problem does it solve? 2. What are the must-have features? 3. What are nice-to-have features?
Category 3: User Roles
Who will use this? 1. Which user roles need access? 2. What permissions are needed? 3. Any role-specific features?
Category 4: Data Requirements
What data is involved? 1. New content types or entities needed? 2. New fields on existing types? 3. Configuration data to store? 4. Relationships to existing content?
Category 5: Integrations
What existing systems does this connect to? 1. Existing Drupal modules to integrate with? 2. External APIs or services? 3. ECA workflows needed? 4. Third-party libraries?
Category 6: UI Requirements
What interfaces are needed? 1. Admin forms or pages? 2. Frontend display requirements? 3. Specific UX patterns to follow? 4. Mobile considerations?
Category 7: Constraints
What limitations should we know about? 1. Drupal version (10.x, 11.x)? 2. Performance requirements? 3. Accessibility requirements (WCAG level)? 4. Browser support needs?
3. Handle Responses
For each category:
- •Accept the answer
- •Allow "skip" or "not sure yet" - mark as open question
- •Summarize understanding back to user
- •Proceed to next category
4. Update project_state.md
After all categories, use Edit tool to update the Requirements section:
## Requirements
### Project Type
- {new module, existing feature, core issue, theme, config, other}
### Scope
- {what project includes}
### Core Functionality
- {requirement 1}
- {requirement 2}
### User Roles
| Role | Permissions | Features |
|------|-------------|----------|
| {role} | {perms} | {features} |
### Data Requirements
- {data type}: {storage approach}
### Integrations
- {module/service}: {integration type}
### UI Requirements
- {element}: {requirement}
### Constraints
- {constraint}: {details}
### Open Questions
- {questions marked as "not sure yet"}
5. Confirm Requirements
Show summary to user:
Requirements gathered for {project_name}:
Core: {1-2 sentence summary}
Roles: {list roles}
Integrations: {list integrations}
Open questions: {count}
Does this look complete? (yes/no/add more)
If "add more", ask what category to expand.
6. Transition to Task Definition
After user confirms requirements are complete:
Requirements complete! Now let's define your first task. What feature or component do you want to work on first? Examples: - "Add settings form for API configuration" - "Create custom entity for storing data" - "Build admin dashboard" Each task will go through: 1. Research (understand & find patterns) 2. Architecture (design the approach) 3. Implementation (build with TDD) Enter your first task:
IMPORTANT: Do NOT suggest /research or /design at the project level. Tasks are what go through phases, not the project.
7. Create First Task
When user provides a task name:
- •
Validate task name - convert to lowercase with underscores (e.g., "Add settings form" →
settings_form) - •
Confirm task creation:
codeCreating task: {task_name} Brief description (one sentence - what does this task accomplish?): - •
Wait for user to provide description
- •
Invoke research phase:
codeStarting research phase for: {task_name}Then invoke
/drupal-dev-framework:research {task_name}
CRITICAL: Do NOT start research until:
- •Task name is confirmed
- •User provides a description
- •Task creation is acknowledged
Stop Points
STOP and wait for user after:
- •Each category question
- •Showing summary for confirmation
- •Asking for first task
- •After asking for task description (Step 7.2)
- •User says "add more"