skills/arabelatso/skills-4-se/requirement-comparison-reporter

requirement-comparison-reporter

SKILL.md

Requirement Comparison Reporter

Generate detailed modification plans by comparing requirement documents and analyzing code impact.

Workflow

1. Understand the Inputs

Gather required inputs:

  • Old requirement document (path or content)
  • New requirement document (path or content)
  • Repository path

Verify inputs:

  • Requirements are readable (text/Markdown format)
  • Repository path is valid
  • Repository contains Python code

2. Analyze Requirement Changes

Read both requirement documents:

  • Extract key sections and features
  • Identify structure and organization
  • Note any explicit requirement IDs or labels

Compare requirements:

Identify added requirements:

  • Features present in new but not in old
  • New functionality descriptions
  • New API endpoints or interfaces
  • New business rules

Identify modified requirements:

  • Features with changed descriptions
  • Updated acceptance criteria
  • Modified API contracts
  • Changed business logic

Identify removed requirements:

  • Features present in old but not in new
  • Deprecated functionality
  • Removed API endpoints

Categorize changes:

  • Feature-level changes (new/modified/removed features)
  • Functional changes (behavior, logic, workflows)
  • API changes (endpoints, parameters, responses)

See analysis-patterns.md for detailed comparison strategies.

3. Analyze Code Structure

Automated analysis:

python scripts/analyze_code_impact.py <repo_path>

Manual analysis:

  • Identify main modules and packages
  • Locate key classes and functions
  • Understand code organization
  • Find test directory structure

Build component inventory:

  • List all modules with their classes and functions
  • Note public vs private components
  • Identify entry points and main functionality
  • Map test files to source files

4. Map Requirements to Code

For each requirement change, identify affected code:

Name-based mapping:

  • Match requirement terms to class/function names
  • Look for modules named after features
  • Find components with related naming

Comment-based mapping:

  • Search for requirement references in comments
  • Look for issue/ticket numbers
  • Find explicit requirement mentions

Functionality-based mapping:

  • Analyze what each component does
  • Match functionality to requirements
  • Use docstrings to understand purpose

Test-based mapping:

  • Use test names to infer functionality
  • Map test files to requirements
  • Associate test cases with features

Example mapping:

Requirement: "Add user authentication"
→ Likely components:
  - auth.py or authentication.py
  - user.py (User class)
  - login-related functions
  - test_auth.py or test_authentication.py

5. Identify Components to Modify

For modified requirements:

Determine modification type:

  • Behavior change (logic modification)
  • Signature change (parameters, return values)
  • Integration change (new dependencies)

Identify affected components:

  • Primary components implementing the feature
  • Helper functions used by primary components
  • Configuration or constants

Assess complexity:

  • Simple: Single function/method change
  • Medium: Multiple related changes
  • Complex: Architectural or widespread changes

Example:

### Modified Requirement: User login now requires 2FA

**Components to Modify:**
- `auth.py::AuthManager.login()` - Add 2FA verification step
- `user.py::User` - Add 2FA token field
- `config.py` - Add 2FA configuration

**Complexity:** Medium

6. Identify Components to Delete

For removed requirements:

Find components to delete:

  • Modules implementing removed features
  • Classes specific to removed functionality
  • Functions no longer needed

Check for dependencies:

  • Identify components that depend on code to be deleted
  • Determine if dependencies can be safely removed
  • Plan for updating dependent code

Example:

### Removed Requirement: Legacy XML export

**Components to Delete:**
- `export/xml_exporter.py` - Entire module
- `utils/xml_helpers.py` - Helper functions

**Dependent Components:**
- `export/exporter.py` - Remove XML export option

7. Identify Components to Add

For new requirements:

Determine what needs to be created:

  • New modules for new feature areas
  • New classes for new entities
  • New functions for new operations

Recommend dependencies:

  • Identify existing components that can be reused
  • Suggest appropriate base classes
  • Recommend utility functions to use

Plan integration:

  • Determine where new code fits in architecture
  • Identify integration points with existing code
  • Plan API or interface design

Example:

### New Requirement: Email notifications

**Components to Add:**
- `notifications/email_notifier.py` - New module
  - Class: EmailNotifier
  - Methods: send_email(), format_template()

**Recommended Dependencies:**
- `notifications/base_notifier.py` - Base class
- `user.py` - Get user email addresses
- `templates/` - Email templates

**Integration Points:**
- Called by: event handlers in `events.py`
- Configured in: `config.py`

See analysis-patterns.md for detailed patterns.

8. Analyze Test Impact

For each code change, identify test impact:

Tests to modify:

  • Tests for components being modified
  • Integration tests involving changed components
  • Tests with changed assertions or expectations

Tests to delete:

  • Tests for removed components
  • Tests for deprecated functionality

Tests to add:

  • Tests for new components
  • Tests for new behavior in modified components
  • Integration tests for new features

Example:

### Test Impact for User Authentication Changes

**Tests to Modify:**
- `test_auth.py::test_login()` - Add 2FA verification
- `test_user.py::test_user_creation()` - Add 2FA field

**Tests to Add:**
- `test_auth.py::test_login_with_2fa()` - New test
- `test_auth.py::test_2fa_token_validation()` - New test

9. Analyze Dependencies

Build dependency graph:

  • Identify what each component depends on
  • Find components that depend on each component
  • Map import relationships

For new components:

  • Recommend existing components to depend on
  • Identify reusable utilities
  • Suggest appropriate base classes

For modified components:

  • Check if changes affect dependent components
  • Identify ripple effects
  • Plan for updating dependents

For deleted components:

  • Find all components that import deleted code
  • Plan for removing or updating imports
  • Identify alternative components to use

10. Generate Modification Plan

Create comprehensive report using template:

See report-template.md for full template.

Report structure:

1. Executive Summary

  • Total changes count
  • Impact summary
  • Complexity assessment

2. Requirement Changes

  • Added requirements with impact
  • Modified requirements with changes
  • Removed requirements with impact

3. Code Impact Analysis

  • Components to modify (with details)
  • Components to delete (with dependencies)
  • Components to add (with recommendations)

4. Test Impact Analysis

  • Tests to modify
  • Tests to delete
  • Tests to add

5. Dependency Analysis

  • New dependencies required
  • Dependency changes
  • Removed dependencies

6. Modification Plan

  • Phase 1: Preparation
  • Phase 2: Deletions
  • Phase 3: Modifications
  • Phase 4: Additions
  • Phase 5: Integration Testing
  • Phase 6: Documentation

7. Risk Assessment

  • High-risk changes
  • Mitigation strategies

8. Recommendations

  • Implementation recommendations
  • Architecture recommendations
  • Testing recommendations

9. Appendix

  • Requirement traceability matrix
  • Component dependency graph
  • Glossary

11. Review and Refine

Verify completeness:

  • All requirement changes addressed
  • All affected components identified
  • All dependencies analyzed
  • All tests considered

Check accuracy:

  • Component names and paths correct
  • Dependency relationships accurate
  • Complexity assessments reasonable
  • Recommendations actionable

Refine report:

  • Clarify ambiguous sections
  • Add missing details
  • Improve recommendations
  • Ensure consistency

Output Format

Generate a Markdown report with the following sections:

# Requirement Comparison Report

## Executive Summary
[High-level overview of changes and impact]

## Requirement Changes
### Added Requirements
[List with impact analysis]

### Modified Requirements
[List with before/after comparison]

### Removed Requirements
[List with deletion impact]

## Code Impact Analysis
### Components to Modify
[Detailed list with reasons and complexity]

### Components to Delete
[List with dependency impact]

### Components to Add
[List with structure and dependencies]

## Test Impact Analysis
[Tests to modify, delete, and add]

## Dependency Analysis
[New, modified, and removed dependencies]

## Modification Plan
[Phased implementation plan]

## Risk Assessment
[Risks and mitigation strategies]

## Recommendations
[Actionable recommendations]

## Appendix
[Traceability matrix, dependency graph, glossary]

Best Practices

Requirement Analysis

  • Read both documents thoroughly
  • Focus on meaningful changes, not just wording
  • Categorize changes clearly
  • Note ambiguities or unclear changes

Code Mapping

  • Use multiple mapping strategies
  • Verify mappings with code inspection
  • Consider indirect relationships
  • Document mapping rationale

Impact Analysis

  • Consider both direct and indirect impact
  • Analyze ripple effects
  • Assess test coverage impact
  • Evaluate dependency changes

Planning

  • Break down into manageable phases
  • Prioritize by risk and dependency
  • Provide clear, actionable steps
  • Include verification checkpoints

Reporting

  • Be specific and detailed
  • Use clear, consistent terminology
  • Provide code references (file:line)
  • Include examples where helpful

Common Scenarios

Scenario 1: API Endpoint Changes

Input:

  • Old req: GET /users returns all fields
  • New req: GET /users returns limited fields, add GET /users/detailed

Analysis:

  • Modified: routes/users.py::get_users() - Limit fields
  • Added: routes/users.py::get_users_detailed() - New endpoint
  • Tests: Modify existing, add new tests

Scenario 2: Feature Removal

Input:

  • Old req: Support XML export
  • New req: XML export removed

Analysis:

  • Delete: export/xml_exporter.py
  • Modify: export/exporter.py - Remove XML option
  • Tests: Delete XML export tests

Scenario 3: New Feature Addition

Input:

  • Old req: Basic notifications
  • New req: Add email notifications

Analysis:

  • Add: notifications/email_notifier.py
  • Depends on: notifications/base_notifier.py, user.py
  • Tests: Add comprehensive email notification tests

Troubleshooting

Issue: Can't map requirement to code

Solution:

  • Search for related keywords in codebase
  • Check test files for clues
  • Look for similar functionality
  • Ask user for guidance

Issue: Unclear requirement change

Solution:

  • Highlight ambiguity in report
  • Provide multiple interpretations
  • Request clarification
  • Make reasonable assumptions and document them

Issue: Complex dependency graph

Solution:

  • Focus on direct dependencies first
  • Identify critical paths
  • Simplify visualization
  • Provide summary and details separately

Issue: Large number of changes

Solution:

  • Prioritize by impact and risk
  • Group related changes
  • Use summary sections
  • Provide detailed appendix
Weekly Installs
1
GitHub Stars
47
First Seen
12 days ago
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1