Back to Skills

requirements-gathering

aj-geddes
Updated Today
27 views
7
7
View on GitHub
Designworddesign

About

This skill systematically collects, documents, and validates project requirements from stakeholders to establish a shared understanding. It is used during project kickoffs, feature planning, and stakeholder alignment to ensure clarity and agreement. By doing so, it aims to prevent scope creep and reduce expensive rework later in the development cycle.

Documentation

Requirements Gathering

Overview

Effective requirements gathering establishes a shared understanding of what will be built, preventing misalignment and expensive changes later in the project.

When to Use

  • Project kickoff and planning
  • Feature development initiation
  • Product roadmap planning
  • System modernization projects
  • Customer discovery
  • Stakeholder alignment sessions
  • Writing user stories and acceptance criteria

Instructions

1. Stakeholder Discovery

# Identify and analyze stakeholders

class StakeholderDiscovery:
    STAKEHOLDER_CATEGORIES = [
        'End Users',
        'Business Owners',
        'Technical Leads',
        'Operations/Support',
        'Customers',
        'Regulatory Bodies',
        'Integration Partners'
    ]

    def identify_stakeholders(self, project):
        """Map all stakeholder groups"""
        return {
            'primary': self.get_primary_stakeholders(project),
            'secondary': self.get_secondary_stakeholders(project),
            'tertiary': self.get_tertiary_stakeholders(project),
            'total_to_engage': self.calculate_engagement_strategy(project)
        }

    def analyze_stakeholder_needs(self, stakeholder):
        """Understand what each stakeholder needs"""
        return {
            'stakeholder': stakeholder.name,
            'role': stakeholder.role,
            'goals': self.extract_goals(stakeholder),
            'pain_points': self.extract_pain_points(stakeholder),
            'constraints': self.extract_constraints(stakeholder),
            'success_criteria': self.define_success(stakeholder),
            'engagement_frequency': self.plan_engagement(stakeholder)
        }

    def extract_goals(self, stakeholder):
        """What does this stakeholder want to achieve?"""
        return {
            'business_goals': [],  # Revenue, efficiency, market share
            'technical_goals': [],  # Performance, scalability, reliability
            'user_goals': [],       # Ease of use, effectiveness
            'operational_goals': []  # Support efficiency, uptime
        }

    def extract_pain_points(self, stakeholder):
        """What are current problems?"""
        return [
            'Current solution limitations',
            'Integration challenges',
            'Performance issues',
            'User adoption barriers',
            'Operational costs'
        ]

2. Requirements Elicitation Techniques

Elicitation Techniques:

1. Interviews (One-on-One)
   Best For: Senior stakeholders, sensitive topics
   Duration: 30-60 minutes
   Output: Detailed requirements, context
   Preparation: Create question guide, schedule in advance

   Sample Questions:
     - What are you trying to accomplish?
     - What's currently preventing you?
     - What would success look like?
     - What metrics matter most?
     - What are your biggest risks?

---

2. Workshops (Group Sessions)
   Best For: Cross-functional alignment, brainstorming
   Duration: 2-4 hours
   Output: Consensus, prioritization
   Preparation: Agenda, facilitation guide, materials

   Format:
     - Opening (10 min): Goals and agenda
     - Brainstorm (45 min): Generate ideas
     - Clarify (30 min): Understand each idea
     - Prioritize (45 min): Rank by importance
     - Decide (30 min): Commit to priorities

---

3. User Observation (Contextual Inquiry)
   Best For: Understanding actual workflows
   Duration: 2-4 hours
   Output: Realistic workflows, hidden requirements
   Preparation: Gain access, create observation guide

   Focus On:
     - Current workflow steps
     - Pain points and workarounds
     - Frequency of tasks
     - Error handling
     - Collaboration patterns

---

4. Surveys
   Best For: Broad input from many people
   Duration: 10-15 minutes per respondent
   Output: Quantified preferences, trends
   Preparation: Write clear questions, select sample

   Types:
     - Multiple choice (easy analysis)
     - Rating scales (prioritization)
     - Open-ended (discovery)
     - Ranking (prioritization)

---

5. Document Analysis
   Best For: Understanding existing processes
   Duration: Variable
   Output: Current state understanding
   Preparation: Request documents in advance

   Review:
     - Process documentation
     - System specifications
     - User manuals
     - Incident reports
     - Competitor products

3. Requirements Documentation

// Structure and document requirements

class RequirementsDocument {
  createRequirementStatement(requirement) {
    return {
      id: `REQ-${Date.now()}`,
      title: requirement.title,
      description: requirement.description,
      rationale: 'Why is this important?',
      source: requirement.stakeholder,
      category: requirement.category, // Functional, non-functional, constraint
      priority: requirement.priority, // Must, Should, Could, Won't
      acceptance_criteria: [
        {
          criterion: 'Specific, measurable behavior',
          test: 'How to verify'
        }
      ],
      dependencies: [],
      assumptions: [],
      constraints: [],
      estimated_effort: 'TBD',
      status: 'Draft',
      last_reviewed: new Date(),
      review_comments: []
    };
  }

  categorizeRequirements(requirements) {
    return {
      functional: requirements.filter(r => r.category === 'Functional'),
      non_functional: requirements.filter(r => r.category === 'Non-Functional'),
      constraints: requirements.filter(r => r.category === 'Constraint'),
      prioritized: this.prioritizeRequirements(requirements)
    };
  }

  prioritizeRequirements(requirements) {
    // MoSCoW method: Must, Should, Could, Won't
    return {
      must: requirements.filter(r => r.priority === 'Must'),
      should: requirements.filter(r => r.priority === 'Should'),
      could: requirements.filter(r => r.priority === 'Could'),
      wont: requirements.filter(r => r.priority === 'Won\'t')
    };
  }

  validateRequirements(requirements) {
    const issues = [];

    requirements.forEach(req => {
      // Check completeness
      if (!req.acceptance_criteria || req.acceptance_criteria.length === 0) {
        issues.push({
          requirement: req.id,
          issue: 'Missing acceptance criteria',
          severity: 'High'
        });
      }

      // Check clarity
      if (req.description.length < 20) {
        issues.push({
          requirement: req.id,
          issue: 'Description too vague',
          severity: 'High'
        });
      }

      // Check for ambiguous words
      const ambiguousWords = ['quickly', 'easily', 'user-friendly', 'efficient'];
      if (ambiguousWords.some(word => req.description.includes(word))) {
        issues.push({
          requirement: req.id,
          issue: 'Contains ambiguous language',
          severity: 'Medium'
        });
      }
    });

    return {
      valid: issues.length === 0,
      issues: issues,
      recommendations: this.getRecommendations(issues)
    };
  }
}

4. Requirement Validation & Sign-Off

Requirements Review Checklist:

Completeness:
  [ ] All stakeholder needs documented
  [ ] Functional requirements defined
  [ ] Non-functional requirements specified
  [ ] Constraints identified
  [ ] Assumptions documented
  [ ] Exclusions clearly stated

Clarity:
  [ ] Requirements are specific and measurable
  [ ] No ambiguous language
  [ ] Acceptance criteria clear
  [ ] Technical team understands
  [ ] Business team agrees

Feasibility:
  [ ] Requirements technically feasible
  [ ] Timeline realistic
  [ ] Resource requirements identified
  [ ] Risk assessment completed
  [ ] Dependencies identified

Traceability:
  [ ] Each requirement traced to stakeholder need
  [ ] Each requirement linked to user story
  [ ] Each requirement connected to tests

Validation:
  [ ] Stakeholder review completed
  [ ] Business approval obtained
  [ ] Technical feasibility confirmed
  [ ] Sign-off received

---

Sign-Off:

Business Lead: ____________________  Date: ________
Technical Lead: ____________________  Date: ________
Project Manager: ____________________  Date: ________

Requirements Baseline Established: February 1, 2025
Approved For: Development Planning
Change Control Process: Activated

5. Requirements Traceability Matrix

Traceability Matrix:

Stakeholder Need → Requirement → User Story → Test Case

---

Stakeholder: CFO (Cost Reduction)
Need: Reduce operational costs by 30%

Requirements:
  REQ-101: System must auto-scale infrastructure
  REQ-102: Must support multi-region deployment
  REQ-103: Database queries must complete in <500ms

User Stories:
  US-201: As an ops engineer, I can scale resources automatically
  US-202: As a user, I can access service from any region

Test Cases:
  TC-301: Verify auto-scaling triggers at 80% capacity
  TC-302: Verify <100ms latency between regions

---

Stakeholder: VP Product
Need: Improve user engagement by 25%

Requirements:
  REQ-104: Mobile-first responsive design
  REQ-105: Push notifications support
  REQ-106: Offline-first capability

Related Metrics:
  - Daily active users +25%
  - Session duration +40%
  - User retention +15%

Best Practices

✅ DO

  • Engage all key stakeholders early
  • Document requirements in writing
  • Use specific, measurable language
  • Define acceptance criteria
  • Prioritize using MoSCoW method
  • Get stakeholder sign-off
  • Create traceability matrix
  • Review requirements regularly
  • Distinguish must-haves from nice-to-haves
  • Document assumptions and constraints

❌ DON'T

  • Rely on memory or verbal agreements
  • Create requirements without stakeholder input
  • Use ambiguous language (quickly, easily, etc.)
  • Skip non-functional requirements
  • Ignore constraints and dependencies
  • Over-document trivial details
  • Rush through requirements phase
  • Build without stakeholder agreement
  • Make scope changes without process
  • Forget about edge cases and error conditions

Requirements Gathering Tips

  • Use prototypes to clarify requirements
  • Review requirements in writing before meetings
  • Get one stakeholder representative
  • Use visual diagrams for complex workflows
  • Test requirements understanding through mock demos

Quick Install

/plugin add https://github.com/aj-geddes/useful-ai-prompts/tree/main/requirements-gathering

Copy and paste this command in Claude Code to install this skill

GitHub 仓库

aj-geddes/useful-ai-prompts
Path: skills/requirements-gathering

Related Skills

langchain

Meta

LangChain is a framework for building LLM applications using agents, chains, and RAG pipelines. It supports multiple LLM providers, offers 500+ integrations, and includes features like tool calling and memory management. Use it for rapid prototyping and deploying production systems like chatbots, autonomous agents, and question-answering services.

View skill

Algorithmic Art Generation

Meta

This skill helps developers create algorithmic art using p5.js, focusing on generative art, computational aesthetics, and interactive visualizations. It automatically activates for topics like "generative art" or "p5.js visualization" and guides you through creating unique algorithms with features like seeded randomness, flow fields, and particle systems. Use it when you need to build reproducible, code-driven artistic patterns.

View skill

webapp-testing

Testing

This Claude Skill provides a Playwright-based toolkit for testing local web applications through Python scripts. It enables frontend verification, UI debugging, screenshot capture, and log viewing while managing server lifecycles. Use it for browser automation tasks but run scripts directly rather than reading their source code to avoid context pollution.

View skill

requesting-code-review

Design

This skill dispatches a code-reviewer subagent to analyze code changes against requirements before proceeding. It should be used after completing tasks, implementing major features, or before merging to main. The review helps catch issues early by comparing the current implementation with the original plan.

View skill