Initial commit
This commit is contained in:
29
.claude-plugin/plugin.json
Normal file
29
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"name": "reqvire",
|
||||||
|
"description": "Claude Code plugin for Reqvire - The AI-Native Requirements As A Code framework for Modern Engineering Teams. Includes specialized skills for requirements engineering and task planning, plus commands for model analysis and verification management.",
|
||||||
|
"version": "1.1.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Ilija Ljubicic",
|
||||||
|
"email": "ilijaljubicic@users.noreply.github.com"
|
||||||
|
},
|
||||||
|
"agents": [
|
||||||
|
"./skills/syseng/SKILL.md",
|
||||||
|
"./skills/task-master/SKILL.md"
|
||||||
|
],
|
||||||
|
"commands": [
|
||||||
|
"./commands/analyze-model.md",
|
||||||
|
"./commands/add-requirement.md",
|
||||||
|
"./commands/add-verification.md",
|
||||||
|
"./commands/add-feature.md",
|
||||||
|
"./commands/analyze-coverage.md",
|
||||||
|
"./commands/analyze-impact.md",
|
||||||
|
"./commands/lint-model.md",
|
||||||
|
"./commands/consolidate.md",
|
||||||
|
"./commands/generate-tasks.md",
|
||||||
|
"./commands/find-redundant-verifications.md",
|
||||||
|
"./commands/rename-element.md",
|
||||||
|
"./commands/mv.md",
|
||||||
|
"./commands/mv-file.md",
|
||||||
|
"./commands/rm.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# reqvire
|
||||||
|
|
||||||
|
Claude Code plugin for Reqvire - The AI-Native Requirements As A Code framework for Modern Engineering Teams. Includes specialized skills for requirements engineering and task planning, plus commands for model analysis and verification management.
|
||||||
104
commands/add-feature.md
Normal file
104
commands/add-feature.md
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Write, Edit, Bash(reqvire:*), SlashCommand
|
||||||
|
argument-hint: [feature-name]
|
||||||
|
description: Add a complete feature by orchestrating requirement and verification creation following MBSE workflow
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Add Feature
|
||||||
|
|
||||||
|
Add a complete feature by orchestrating multiple commands to create requirements, verifications, and proper traceability.
|
||||||
|
|
||||||
|
## Current Model Context
|
||||||
|
|
||||||
|
- Total requirements: !`reqvire search --json | jq -r '.global_counters.total_elements'`
|
||||||
|
- Verification coverage: !`reqvire coverage --json | jq -r '.summary.leaf_requirements_coverage_percentage'`%
|
||||||
|
|
||||||
|
## User Request
|
||||||
|
|
||||||
|
${1:+Feature name: $1}
|
||||||
|
${1:-The user will provide feature details.}
|
||||||
|
|
||||||
|
## MBSE Workflow
|
||||||
|
|
||||||
|
This command orchestrates the complete workflow:
|
||||||
|
1. Define requirements (parent → children)
|
||||||
|
2. Create verifications for leaf requirements
|
||||||
|
3. Validate and check coverage
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Understand the feature:**
|
||||||
|
- Ask user for feature description
|
||||||
|
- Identify if this derives from existing requirement
|
||||||
|
- Plan requirement hierarchy (parent → leaf requirements)
|
||||||
|
|
||||||
|
2. **Create parent requirement (if needed):**
|
||||||
|
```bash
|
||||||
|
/add-requirement
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates the high-level feature requirement.
|
||||||
|
|
||||||
|
3. **Create leaf requirements:**
|
||||||
|
|
||||||
|
For each specific capability:
|
||||||
|
```bash
|
||||||
|
/add-requirement
|
||||||
|
```
|
||||||
|
|
||||||
|
Link each to the parent via `derivedFrom`.
|
||||||
|
|
||||||
|
4. **Create verifications for leaf requirements:**
|
||||||
|
|
||||||
|
For each leaf requirement:
|
||||||
|
```bash
|
||||||
|
/add-verification
|
||||||
|
```
|
||||||
|
|
||||||
|
This will:
|
||||||
|
- Check if verification is needed (leaf vs parent)
|
||||||
|
- Read all requirements in trace chain
|
||||||
|
- Create verification with comprehensive test criteria
|
||||||
|
- Link to tests if applicable
|
||||||
|
|
||||||
|
5. **Validate complete feature:**
|
||||||
|
```bash
|
||||||
|
reqvire validate
|
||||||
|
reqvire coverage --filter-name="<feature-name>"
|
||||||
|
reqvire traces --filter-name="<feature-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Clean up model:**
|
||||||
|
```bash
|
||||||
|
reqvire lint --fix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Command Flow
|
||||||
|
|
||||||
|
```
|
||||||
|
/add-feature
|
||||||
|
├─> /add-requirement (parent)
|
||||||
|
├─> /add-requirement (leaf 1)
|
||||||
|
├─> /add-requirement (leaf 2)
|
||||||
|
├─> /add-requirement (leaf 3)
|
||||||
|
├─> /add-verification (for leaf 1)
|
||||||
|
├─> /add-verification (for leaf 2)
|
||||||
|
├─> /add-verification (for leaf 3)
|
||||||
|
└─> reqvire lint --fix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
- **Requirements first**: Create all requirements before verifications
|
||||||
|
- **Hierarchical**: Parent requirement → leaf requirements
|
||||||
|
- **Verify leaves only**: Use `/add-verification` for leaf requirements
|
||||||
|
- **Delegate**: Let individual commands handle their specific logic
|
||||||
|
- **Validate often**: Run validation after each major step
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- This is an orchestration command - it calls other commands
|
||||||
|
- Follow MBSE methodology: requirements → verifications → tests
|
||||||
|
- Each step uses specialized commands for consistency
|
||||||
|
- Run `reqvire coverage` at the end to confirm complete feature coverage
|
||||||
159
commands/add-requirement.md
Normal file
159
commands/add-requirement.md
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
argument-hint: [requirement-name]
|
||||||
|
description: Add a new requirement to the Reqvire model with proper structure and traceability
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Add New Requirement
|
||||||
|
|
||||||
|
Add a new requirement to the Reqvire model following MBSE best practices.
|
||||||
|
|
||||||
|
## Current Model Context
|
||||||
|
|
||||||
|
- Total requirements: !`reqvire search --json | jq -r '.global_counters.total_elements'`
|
||||||
|
- Verification coverage: !`reqvire coverage --json | jq -r '.summary.leaf_requirements_coverage_percentage'`%
|
||||||
|
- Unverified leaf requirements: !`reqvire coverage --json | jq -r '.summary.unverified_leaf_requirements'`
|
||||||
|
|
||||||
|
## User Request
|
||||||
|
|
||||||
|
${1:+Requirement name: $1}
|
||||||
|
${1:-The user will provide requirement details.}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Understand the context:**
|
||||||
|
- Ask user for requirement details (name, description) if not provided
|
||||||
|
- Identify parent requirement if this is a derived requirement
|
||||||
|
- Identify target file (user specifies or follows project conventions)
|
||||||
|
|
||||||
|
2. **Draft the requirement content:**
|
||||||
|
|
||||||
|
Follow EARS patterns for requirement statements:
|
||||||
|
- **Ubiquitous**: "The system shall [capability]"
|
||||||
|
- **Event-driven**: "when [trigger] the system shall [response]"
|
||||||
|
- **State-driven**: "while [state] the system shall [capability]"
|
||||||
|
- **Unwanted**: "if [condition] then the system shall [response]"
|
||||||
|
- **Optional**: "where [feature] the system shall [capability]"
|
||||||
|
|
||||||
|
Template:
|
||||||
|
```markdown
|
||||||
|
### Requirement Name
|
||||||
|
|
||||||
|
The system shall [capability/constraint following EARS patterns].
|
||||||
|
|
||||||
|
#### Metadata
|
||||||
|
* type: requirement
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Parent Requirement](path/to/parent.md#parent-requirement)
|
||||||
|
```
|
||||||
|
|
||||||
|
Optional details section for clarifications:
|
||||||
|
```markdown
|
||||||
|
#### Details
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Additional Context</summary>
|
||||||
|
|
||||||
|
- Clarification points
|
||||||
|
- Rationale
|
||||||
|
- Examples
|
||||||
|
|
||||||
|
</details>
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Add the requirement using reqvire add command:**
|
||||||
|
```bash
|
||||||
|
reqvire add "<file-path>" <<'EOF'
|
||||||
|
### Requirement Name
|
||||||
|
|
||||||
|
The system shall [capability].
|
||||||
|
|
||||||
|
#### Metadata
|
||||||
|
* type: requirement
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Parent](path.md#parent)
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Optional: Insert at specific position (0-based index):
|
||||||
|
```bash
|
||||||
|
reqvire add "<file-path>" 0 <<'EOF'
|
||||||
|
...
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternative using pipe:
|
||||||
|
```bash
|
||||||
|
cat element.md | reqvire add "<file-path>"
|
||||||
|
```
|
||||||
|
|
||||||
|
The add command automatically:
|
||||||
|
- Validates markdown format
|
||||||
|
- Checks element name uniqueness
|
||||||
|
- Validates relation format
|
||||||
|
- Updates the file
|
||||||
|
|
||||||
|
4. **Check if verification is needed:**
|
||||||
|
- **Leaf requirement** (no derived children): Needs verification
|
||||||
|
- **Parent requirement** (has derived children): Verification rolls up from children
|
||||||
|
|
||||||
|
Run traces to check hierarchy:
|
||||||
|
```bash
|
||||||
|
reqvire traces --filter-name="<requirement-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Check coverage:**
|
||||||
|
```bash
|
||||||
|
reqvire coverage --filter-name="<requirement-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Next steps:**
|
||||||
|
- If **leaf requirement**: Suggest `/add-verification` to create verification
|
||||||
|
- If **parent requirement**: Explain verification will roll up from child requirements
|
||||||
|
|
||||||
|
## Element Manipulation
|
||||||
|
|
||||||
|
After adding requirements, you may need to reorganize:
|
||||||
|
|
||||||
|
**Move element to different file:**
|
||||||
|
```bash
|
||||||
|
reqvire mv "<element-name>" "<target-file>"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Move element with specific position (0-based index):**
|
||||||
|
```bash
|
||||||
|
reqvire mv "<element-name>" "<target-file>" 0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Remove element:**
|
||||||
|
```bash
|
||||||
|
reqvire rm "<element-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
- **Atomic requirements**: One capability per requirement
|
||||||
|
- **Refinement in Details**: Clarifications go in `#### Details`, not new requirements
|
||||||
|
- **Leaf verification**: Only leaf requirements need direct verification
|
||||||
|
- **Roll-up coverage**: Parent requirements inherit verification from children
|
||||||
|
- **Clear**: Use ears patterns for consistency
|
||||||
|
- **Traceable**: Always link to parent via derivedFrom
|
||||||
|
- **Unique names**: Element names must be unique within each file
|
||||||
|
|
||||||
|
## Verification Philosophy
|
||||||
|
|
||||||
|
Reqvire uses **bottom roll-up verification coverage**:
|
||||||
|
- **Leaf requirements** must be verified directly
|
||||||
|
- **Parent requirements** inherit verification from their children
|
||||||
|
- High-level requirements are rarely verified directly
|
||||||
|
- Run `reqvire traces` to see verification roll-up structure
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Element names become URL fragments (spaces → hyphens, lowercase)
|
||||||
|
- Use two-space indentation for Relations entries
|
||||||
|
- Use `#### Details` for refinements that don't add capabilities
|
||||||
|
- For complete feature (requirement + verification + test), use `/add-feature`
|
||||||
228
commands/add-verification.md
Normal file
228
commands/add-verification.md
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Edit, Bash(reqvire:*)
|
||||||
|
argument-hint: [requirement-id]
|
||||||
|
description: Add a verification for an existing requirement, checking if verification is needed based on requirement hierarchy
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Add Verification
|
||||||
|
|
||||||
|
Add a verification for an existing requirement following Reqvire's bottom roll-up verification philosophy.
|
||||||
|
|
||||||
|
## Current Model Context
|
||||||
|
|
||||||
|
- Total verifications: !`reqvire search --json | jq -r '.global_counters.verifications'`
|
||||||
|
- Verification coverage: !`reqvire coverage --json | jq -r '.summary.leaf_requirements_coverage_percentage'`%
|
||||||
|
- Unverified leaf requirements: !`reqvire coverage --json | jq -r '.summary.unverified_leaf_requirements'`
|
||||||
|
|
||||||
|
## User Request
|
||||||
|
|
||||||
|
${1:+Requirement ID: $1}
|
||||||
|
${1:-The user will specify which requirement needs verification.}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Identify the requirement:**
|
||||||
|
- Ask user which requirement needs verification if not provided
|
||||||
|
- Get the requirement identifier or name
|
||||||
|
|
||||||
|
2. **Check if verification is needed:**
|
||||||
|
```bash
|
||||||
|
reqvire traces --filter-name="<requirement-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Analyze the trace tree:
|
||||||
|
- **Leaf requirement** (no children): Needs direct verification
|
||||||
|
- **Parent requirement** (has children): Verification rolls up from children - usually no direct verification needed
|
||||||
|
|
||||||
|
3. **Check current coverage:**
|
||||||
|
```bash
|
||||||
|
reqvire coverage --filter-name="<requirement-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **If leaf requirement needs verification:**
|
||||||
|
|
||||||
|
Choose verification type:
|
||||||
|
- **verification** (or test-verification): Automated testing
|
||||||
|
- **analysis-verification**: Mathematical/computational analysis
|
||||||
|
- **inspection-verification**: Manual inspection/review
|
||||||
|
- **demonstration-verification**: Operational demonstration
|
||||||
|
|
||||||
|
5. **Read all requirements in trace chain:**
|
||||||
|
|
||||||
|
For each requirement this verification will verify:
|
||||||
|
```bash
|
||||||
|
reqvire search --filter-id="<requirement-id>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Extract:
|
||||||
|
- Requirement content (capabilities and constraints)
|
||||||
|
- All requirements in derivedFrom chain up to root
|
||||||
|
- Build complete understanding of what needs verification
|
||||||
|
|
||||||
|
6. **Draft verification content:**
|
||||||
|
|
||||||
|
Template for verification:
|
||||||
|
```markdown
|
||||||
|
### Verification Name
|
||||||
|
|
||||||
|
[Description of how ALL requirements in the trace chain will be verified]
|
||||||
|
|
||||||
|
#### Details
|
||||||
|
|
||||||
|
##### Acceptance Criteria
|
||||||
|
- [Criterion for leaf requirement 1]
|
||||||
|
- [Criterion for leaf requirement 2]
|
||||||
|
- [Criterion that verifies parent capabilities through leaf tests]
|
||||||
|
|
||||||
|
##### Test Criteria
|
||||||
|
- [How to test criterion 1]
|
||||||
|
- [How to test criterion 2]
|
||||||
|
- [Expected outcomes]
|
||||||
|
|
||||||
|
#### Metadata
|
||||||
|
* type: test-verification
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* verify: [Leaf Requirement 1](../path/to/req1.md#leaf-requirement-1)
|
||||||
|
* verify: [Leaf Requirement 2](../path/to/req2.md#leaf-requirement-2)
|
||||||
|
* satisfiedBy: [test.sh](../../tests/test-name/test.sh)
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: Only test-verification type can have satisfiedBy relations to test files.
|
||||||
|
|
||||||
|
7. **Add verification using reqvire add command:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
reqvire add "requirements/Verifications/<file>.md" <<'EOF'
|
||||||
|
### Verification Name
|
||||||
|
|
||||||
|
[Description of verification approach]
|
||||||
|
|
||||||
|
#### Details
|
||||||
|
|
||||||
|
##### Acceptance Criteria
|
||||||
|
- [What must be satisfied]
|
||||||
|
- [Functional criteria]
|
||||||
|
|
||||||
|
##### Test Criteria
|
||||||
|
- [How to verify]
|
||||||
|
- [Expected behavior]
|
||||||
|
|
||||||
|
#### Metadata
|
||||||
|
* type: test-verification
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* verify: [Requirement](../path.md#requirement)
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Optional: Insert at specific position (0-based index):
|
||||||
|
```bash
|
||||||
|
reqvire add "requirements/Verifications/<file>.md" 0 <<'EOF'
|
||||||
|
...
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternative using pipe:
|
||||||
|
```bash
|
||||||
|
cat element.md | reqvire add "requirements/Verifications/<file>.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
The add command automatically:
|
||||||
|
- Validates markdown format
|
||||||
|
- Checks element name uniqueness
|
||||||
|
- Validates relation format
|
||||||
|
- Updates the file
|
||||||
|
|
||||||
|
8. **Update the requirements with verifiedBy relations:**
|
||||||
|
Add `verifiedBy` relation to each verified requirement:
|
||||||
|
```markdown
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Parent](...)
|
||||||
|
* verifiedBy: [Verification Name](../Verifications/file.md#verification-name)
|
||||||
|
```
|
||||||
|
|
||||||
|
9. **Check updated coverage:**
|
||||||
|
```bash
|
||||||
|
reqvire coverage --filter-name="<requirement-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
10. **Verify roll-up and check for redundancies:**
|
||||||
|
```bash
|
||||||
|
reqvire traces --filter-name="<verification-name>"
|
||||||
|
reqvire lint --json > /tmp/lint.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Check if verification creates redundant verify relations (verifying both leaf and parent).
|
||||||
|
|
||||||
|
## Element Manipulation
|
||||||
|
|
||||||
|
After adding verifications, you may need to reorganize:
|
||||||
|
|
||||||
|
**Move verification to different file:**
|
||||||
|
```bash
|
||||||
|
reqvire mv "<verification-name>" "requirements/Verifications/<file>.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Move verification with specific position (0-based index):**
|
||||||
|
```bash
|
||||||
|
reqvire mv "<verification-name>" "<target-file>" 0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Remove verification:**
|
||||||
|
```bash
|
||||||
|
reqvire rm "<verification-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Decision Logic
|
||||||
|
|
||||||
|
**If parent requirement with children:**
|
||||||
|
- Explain verification rolls up from children
|
||||||
|
- Show trace tree demonstrating coverage
|
||||||
|
- Usually no direct verification needed
|
||||||
|
|
||||||
|
**If leaf requirement without verification:**
|
||||||
|
- Read ALL requirements in trace chain
|
||||||
|
- Create verification with test criteria covering entire chain
|
||||||
|
- Link to requirement(s)
|
||||||
|
- Add test linkage ONLY if type is test-verification AND test exists
|
||||||
|
|
||||||
|
**If existing verification needs update:**
|
||||||
|
- Read all requirements currently verified
|
||||||
|
- Read all requirements in their trace chains
|
||||||
|
- Update test criteria to cover all requirements comprehensively
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
- **Read trace chain**: Always read full requirement hierarchy to understand scope
|
||||||
|
- **Comprehensive criteria**: Test criteria must cover all verified requirements
|
||||||
|
- **Verify leaf requirements**: Focus on leaf-level verification
|
||||||
|
- **Roll-up coverage**: Parent requirements inherit from children
|
||||||
|
- **Avoid redundancy**: Don't verify both leaf and parent directly
|
||||||
|
- **Use traces**: Run `reqvire traces` to understand verification structure
|
||||||
|
- **Test links for test-verification only**: Only test-verifications link to test files
|
||||||
|
|
||||||
|
## Verification Types
|
||||||
|
|
||||||
|
- **test-verification**: Links to automated test files via satisfiedBy
|
||||||
|
- **analysis-verification**: No test linkage, verified through analysis
|
||||||
|
- **inspection-verification**: No test linkage, verified through manual inspection
|
||||||
|
- **demonstration-verification**: No test linkage, verified through demonstration
|
||||||
|
|
||||||
|
## Verification Philosophy
|
||||||
|
|
||||||
|
Reqvire uses **bottom roll-up verification**:
|
||||||
|
1. Verify leaf requirements directly
|
||||||
|
2. Parent requirements inherit coverage from children
|
||||||
|
3. One verification can verify multiple leaf requirements
|
||||||
|
4. Verification traces automatically propagate upward
|
||||||
|
5. Test criteria must cover ALL requirements in the trace chain
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Verifications go in `requirements/Verifications/` directory
|
||||||
|
- Use two-space indentation for Relations entries
|
||||||
|
- Always read full trace chain before writing test criteria
|
||||||
|
- Run `reqvire lint --fix` after adding to remove redundancies
|
||||||
|
- Check `reqvire coverage` to confirm improvement
|
||||||
75
commands/analyze-coverage.md
Normal file
75
commands/analyze-coverage.md
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
description: Analyze verification coverage and identify unverified requirements
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Analyze Verification Coverage
|
||||||
|
|
||||||
|
Analyze verification coverage to identify gaps and unverified requirements.
|
||||||
|
|
||||||
|
## Current Coverage
|
||||||
|
|
||||||
|
- Total requirements: !`reqvire coverage --json | jq -r '.summary.total_leaf_requirements'`
|
||||||
|
- Verified: !`reqvire coverage --json | jq -r '.summary.verified_leaf_requirements'`
|
||||||
|
- Coverage: !`reqvire coverage --json | jq -r '.summary.leaf_requirements_coverage_percentage'`%
|
||||||
|
- Unverified: !`reqvire coverage --json | jq -r '.summary.unverified_leaf_requirements'`
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Generate coverage report:**
|
||||||
|
```bash
|
||||||
|
reqvire coverage
|
||||||
|
reqvire coverage --json > /tmp/coverage.json
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Analyze coverage statistics:**
|
||||||
|
- Extract total requirements count
|
||||||
|
- Calculate verification percentage
|
||||||
|
- Identify unverified requirements count
|
||||||
|
|
||||||
|
3. **Identify unverified leaf requirements:**
|
||||||
|
|
||||||
|
From coverage JSON:
|
||||||
|
```bash
|
||||||
|
jq '.unverified_leaf_requirements' /tmp/coverage.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Focus on leaf requirements (requirements without derived children).
|
||||||
|
|
||||||
|
4. **Check if parent requirements need verification:**
|
||||||
|
|
||||||
|
For each unverified requirement:
|
||||||
|
```bash
|
||||||
|
reqvire traces --filter-name="<requirement-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Determine:
|
||||||
|
- Is this a leaf requirement? (needs verification)
|
||||||
|
- Is this a parent requirement? (should inherit from children)
|
||||||
|
|
||||||
|
5. **Present findings:**
|
||||||
|
|
||||||
|
**Coverage Summary:**
|
||||||
|
- Total requirements: X
|
||||||
|
- Verified requirements: Y
|
||||||
|
- Coverage percentage: Z%
|
||||||
|
|
||||||
|
**Unverified Leaf Requirements:**
|
||||||
|
- [Requirement Name](file.md#requirement-name) - needs verification
|
||||||
|
- [Another Requirement](file.md#another) - needs verification
|
||||||
|
|
||||||
|
**Parent Requirements (OK - coverage rolls up):**
|
||||||
|
- [Parent Requirement](file.md#parent) - covered by children
|
||||||
|
|
||||||
|
6. **Provide recommendations:**
|
||||||
|
- List leaf requirements needing verifications
|
||||||
|
- Suggest using `/add-verification` for each
|
||||||
|
- Explain which parents are OK (inherit from children)
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Focus on leaf requirements for verification
|
||||||
|
- Parent requirements inherit coverage from children
|
||||||
|
- Use `/add-verification` to create missing verifications
|
||||||
|
- Run `reqvire coverage` after adding verifications to confirm improvement
|
||||||
92
commands/analyze-impact.md
Normal file
92
commands/analyze-impact.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*), Bash(git:*)
|
||||||
|
argument-hint: [commit-hash]
|
||||||
|
description: Analyze change impact for modified requirements using git commit history
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Analyze Change Impact
|
||||||
|
|
||||||
|
Analyze how changes to requirements propagate through the model.
|
||||||
|
|
||||||
|
## Comparison Target
|
||||||
|
|
||||||
|
${1:+Comparing against: $1}
|
||||||
|
${1:-Comparing against: HEAD~1 (previous commit)}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Get base commit:**
|
||||||
|
|
||||||
|
${1:+Using provided commit: $1}
|
||||||
|
${1:-Ask user for commit hash or use default:}
|
||||||
|
```bash
|
||||||
|
# Compare against HEAD~1 (previous commit)
|
||||||
|
BASE_COMMIT="${1:-HEAD~1}"
|
||||||
|
|
||||||
|
# Or compare against specific commit
|
||||||
|
BASE_COMMIT="<commit-hash>"
|
||||||
|
|
||||||
|
# Or compare against base branch
|
||||||
|
BASE_COMMIT=$(git merge-base main HEAD)
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Run change impact analysis:**
|
||||||
|
```bash
|
||||||
|
reqvire change-impact --git-commit=${1:-HEAD~1}
|
||||||
|
reqvire change-impact --git-commit=${1:-HEAD~1} --json > /tmp/impact.json
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Analyze the results:**
|
||||||
|
|
||||||
|
Extract from JSON:
|
||||||
|
- `added_elements[]` - New requirements/verifications
|
||||||
|
- `modified_elements[]` - Changed requirements/verifications
|
||||||
|
- `affected_elements[]` - Elements impacted by changes
|
||||||
|
|
||||||
|
4. **For each modified requirement:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
reqvire search --filter-id="<requirement-id>"
|
||||||
|
reqvire traces --filter-id="<requirement-id>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Identify:
|
||||||
|
- What changed in the requirement
|
||||||
|
- Which verifications verify this requirement
|
||||||
|
- Which implementations satisfy this requirement
|
||||||
|
- Which children derive from this requirement
|
||||||
|
|
||||||
|
5. **Present impact findings:**
|
||||||
|
|
||||||
|
**Added Elements:**
|
||||||
|
- [New Requirement](file.md#new-req) - type: requirement
|
||||||
|
|
||||||
|
**Modified Elements:**
|
||||||
|
- [Changed Requirement](file.md#changed) - review needed
|
||||||
|
|
||||||
|
**Affected Elements (propagation):**
|
||||||
|
- Verifications needing review: X
|
||||||
|
- Implementations needing update: Y
|
||||||
|
- Child requirements affected: Z
|
||||||
|
|
||||||
|
6. **Provide recommendations:**
|
||||||
|
- Review and update affected verifications
|
||||||
|
- Update test criteria if requirements changed
|
||||||
|
- Review implementations marked with satisfiedBy
|
||||||
|
- Run tests for affected verifications
|
||||||
|
- Update child requirements if parent semantics changed
|
||||||
|
|
||||||
|
## Change Propagation Rules
|
||||||
|
|
||||||
|
- **Parent → Child**: Parent changes propagate to all derived children
|
||||||
|
- **Requirement → Verification**: Requirement changes invalidate verifications
|
||||||
|
- **Requirement → Implementation**: May need implementation updates
|
||||||
|
- **Verification changes**: Generally don't propagate upward
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Use for understanding impact before making changes
|
||||||
|
- Run after making changes to identify affected elements
|
||||||
|
- Focus on verifications - they need review when requirements change
|
||||||
|
- Use `/generate-tasks` to create implementation tasks from impact
|
||||||
71
commands/analyze-model.md
Normal file
71
commands/analyze-model.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
description: Analyze the current Reqvire model structure, identify issues, coverage gaps, and provide improvement recommendations
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Analyze Reqvire Model
|
||||||
|
|
||||||
|
Perform comprehensive analysis of the current Reqvire model.
|
||||||
|
|
||||||
|
## Current Model State
|
||||||
|
|
||||||
|
- Validation status: !`reqvire validate 2>&1 | head -1`
|
||||||
|
- Total elements: !`reqvire search --json | jq -r '.global_counters.total_elements'`
|
||||||
|
- Verification coverage: !`reqvire coverage --json | jq -r '.summary.leaf_requirements_coverage_percentage'`%
|
||||||
|
- Test satisfaction: !`reqvire coverage --json | jq -r '.summary.test_verifications_satisfaction_percentage'`%
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Remove diagrams to save tokens:**
|
||||||
|
```bash
|
||||||
|
reqvire remove-diagrams
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Run validation:**
|
||||||
|
```bash
|
||||||
|
reqvire validate --json > /tmp/validation.json
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Generate model search:**
|
||||||
|
```bash
|
||||||
|
reqvire search --short --json > /tmp/search.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Use `--short` to get model structure without full content.
|
||||||
|
|
||||||
|
4. **Check coverage:**
|
||||||
|
```bash
|
||||||
|
reqvire coverage --json > /tmp/coverage.json
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Run lint checks:**
|
||||||
|
```bash
|
||||||
|
reqvire lint --json > /tmp/lint.json
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Analyze the results:**
|
||||||
|
- Review validation errors and warnings
|
||||||
|
- Identify unverified requirements from coverage report
|
||||||
|
- Check for model quality issues from lint report
|
||||||
|
- Calculate coverage percentages and statistics
|
||||||
|
|
||||||
|
7. **Provide recommendations:**
|
||||||
|
- List specific issues found with file locations
|
||||||
|
- Suggest improvements prioritized by impact
|
||||||
|
- Recommend commands to fix issues (e.g., `reqvire lint --fix`)
|
||||||
|
- Identify requirements needing verifications
|
||||||
|
|
||||||
|
## Output Format
|
||||||
|
|
||||||
|
Present findings in clear sections:
|
||||||
|
- **Validation Results**: Errors and warnings
|
||||||
|
- **Coverage Analysis**: Verification coverage statistics
|
||||||
|
- **Model Quality**: Lint findings (auto-fixable vs needs review)
|
||||||
|
- **Recommendations**: Prioritized action items
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Always run `remove-diagrams` first to save context tokens
|
||||||
|
- Use `/tmp` for JSON outputs
|
||||||
|
- Focus on actionable recommendations
|
||||||
334
commands/consolidate.md
Normal file
334
commands/consolidate.md
Normal file
@@ -0,0 +1,334 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Edit, Bash(reqvire:*)
|
||||||
|
description: Consolidate refinement-only child requirements into their parent requirements' Details sections to improve model organization
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Consolidate Requirements Model
|
||||||
|
|
||||||
|
Consolidate child requirements that only refine their parents (without introducing new capabilities) into the parent requirement's Details section. This improves model readability by merging implementation-level details into their conceptual parents while maintaining full traceability.
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
Use this command when:
|
||||||
|
- Model has grown with many small refinement requirements
|
||||||
|
- Child requirements only elaborate on implementation details of parents
|
||||||
|
- You want to reduce model clutter while preserving all information
|
||||||
|
- Requirements are split via derivedFrom relations but don't add new capabilities
|
||||||
|
|
||||||
|
## Consolidation Heuristics
|
||||||
|
|
||||||
|
A child requirement is a candidate for consolidation if it meets **multiple** of these criteria:
|
||||||
|
|
||||||
|
1. **Very similar names to parent** - e.g., parent: "HTML Export", child: "HTML Export Verification" or "Export Related System Elements"
|
||||||
|
2. **Short content** - Less than 200 words of requirement text (excluding relations)
|
||||||
|
3. **No verifications** - Has no verifiedBy relations of its own
|
||||||
|
4. **Implementation-level details** - Mentions specific technical details, file formats, parameters, or procedural steps
|
||||||
|
5. **Leaf requirement** - No children of its own, derives from only one parent
|
||||||
|
6. **Procedural/step-by-step details** - Contains "how-to" information that expands on parent
|
||||||
|
7. **Refinement keywords** - Contains phrases like "shall support", "shall provide", "shall include", "formatting", "structure", "output", "options", "flags"
|
||||||
|
|
||||||
|
## Process Overview
|
||||||
|
|
||||||
|
The consolidation follows this systematic approach:
|
||||||
|
|
||||||
|
1. **Identify Candidates**: Find parent-child pairs where child is refinement-only
|
||||||
|
2. **Merge Content**: Move child requirement content into parent's Details section
|
||||||
|
3. **Move Relations**: Transfer all child relations (satisfiedBy, verifiedBy, etc.) to parent
|
||||||
|
4. **Remove Child**: Delete the child requirement element entirely
|
||||||
|
5. **Update References**: Find and update all references to child to point to parent
|
||||||
|
6. **Validate**: Ensure no broken relations after consolidation
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
### 1. Analyze Model for Candidates
|
||||||
|
|
||||||
|
First, analyze the model to identify consolidation candidates:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Remove diagrams to save tokens
|
||||||
|
reqvire remove-diagrams
|
||||||
|
|
||||||
|
# Get model structure
|
||||||
|
reqvire search --short --json > /tmp/search.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Review the model structure and identify parent-child requirement pairs based on:
|
||||||
|
- derivedFrom relationships
|
||||||
|
- Requirement naming patterns
|
||||||
|
- Content length and complexity
|
||||||
|
- Presence of verifications
|
||||||
|
|
||||||
|
### 2. Review and Prioritize Candidates
|
||||||
|
|
||||||
|
For each candidate family, document:
|
||||||
|
- **Parent requirement**: File location, section, heading
|
||||||
|
- **Child requirements**: List of elements to consolidate
|
||||||
|
- **Justification**: Which heuristics apply (similar names, short content, etc.)
|
||||||
|
- **Relations to move**: All satisfiedBy, verifiedBy, trace relations from children
|
||||||
|
- **References to update**: Other elements that reference the children
|
||||||
|
|
||||||
|
Prioritize by:
|
||||||
|
- **High priority**: Clear refinement patterns, minimal relations, obvious implementation details
|
||||||
|
- **Medium priority**: Mixed signals, moderate impact
|
||||||
|
- **Low priority**: Substantial content, many verifications, borderline cases
|
||||||
|
|
||||||
|
### 3. Execute Consolidation (Per Requirement Family)
|
||||||
|
|
||||||
|
For each requirement family to consolidate:
|
||||||
|
|
||||||
|
#### 3.1 Read Parent and Children
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Read the parent requirement file
|
||||||
|
Read requirements/path/to/ParentFile.md
|
||||||
|
|
||||||
|
# Read sections containing children if in different files
|
||||||
|
Read requirements/path/to/ChildFile.md
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.2 Create Enhanced Parent Details
|
||||||
|
|
||||||
|
Edit the parent requirement to add consolidated content from children:
|
||||||
|
|
||||||
|
**Structure for consolidated Details section:**
|
||||||
|
```markdown
|
||||||
|
#### Details
|
||||||
|
|
||||||
|
[Existing parent details content]
|
||||||
|
|
||||||
|
**[Child 1 Heading]:**
|
||||||
|
[Child 1 description and key details]
|
||||||
|
|
||||||
|
[Child 1 specific details as subsections or bullets]
|
||||||
|
|
||||||
|
**[Child 2 Heading]:**
|
||||||
|
[Child 2 description and key details]
|
||||||
|
|
||||||
|
[Child 2 specific details as subsections or bullets]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
```markdown
|
||||||
|
#### Details
|
||||||
|
|
||||||
|
The system shall provide formatting capability...
|
||||||
|
|
||||||
|
**Excess Whitespace:**
|
||||||
|
- Detect and fix excess whitespace after element headers
|
||||||
|
- Maintain consistent formatting across all requirements documents
|
||||||
|
|
||||||
|
**Inconsistent Newlines:**
|
||||||
|
- Detect and fix excess or missing newlines before element headers
|
||||||
|
- Normalize to exactly two newlines before subsections
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.3 Merge Relations to Parent
|
||||||
|
|
||||||
|
Add all relations from children to the parent's Relations section:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Existing Parent Relations]
|
||||||
|
* satisfiedBy: [parent-file.rs]
|
||||||
|
* satisfiedBy: [child1-file.rs] # Moved from Child 1
|
||||||
|
* satisfiedBy: [child2-file.rs] # Moved from Child 2
|
||||||
|
* verifiedBy: [Parent Verification]
|
||||||
|
* verifiedBy: [Child Verification] # Moved from Child 1
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.4 Remove Child Requirements
|
||||||
|
|
||||||
|
Delete each child requirement entirely (full H3 section including heading, content, metadata, relations, separator):
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
### Child Requirement Name
|
||||||
|
|
||||||
|
[DELETE THIS ENTIRE SECTION]
|
||||||
|
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.5 Update References to Children
|
||||||
|
|
||||||
|
Search for any elements that reference the removed children:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Search for references to the child
|
||||||
|
reqvire search --filter-name="Child.*Name" --json
|
||||||
|
```
|
||||||
|
|
||||||
|
For each reference found, update it to point to the parent:
|
||||||
|
|
||||||
|
**Before:**
|
||||||
|
```markdown
|
||||||
|
* verifiedBy: [Child Requirement](File.md#child-requirement)
|
||||||
|
```
|
||||||
|
|
||||||
|
**After:**
|
||||||
|
```markdown
|
||||||
|
* verifiedBy: [Parent Requirement](File.md#parent-requirement)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3.6 Validate After Each Family
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Validate model after consolidating each family
|
||||||
|
reqvire validate
|
||||||
|
|
||||||
|
# If validation passes, continue to next family
|
||||||
|
# If validation fails, fix broken references before continuing
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Final Validation and Formatting
|
||||||
|
|
||||||
|
After all consolidations:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Validate entire model
|
||||||
|
reqvire validate
|
||||||
|
|
||||||
|
# Format all files
|
||||||
|
reqvire format --fix
|
||||||
|
|
||||||
|
# Regenerate diagrams
|
||||||
|
reqvire generate-diagrams
|
||||||
|
|
||||||
|
# Final validation
|
||||||
|
reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Consolidation Examples
|
||||||
|
|
||||||
|
### Example 1: Format Implementation Family
|
||||||
|
|
||||||
|
**Before Consolidation:**
|
||||||
|
```markdown
|
||||||
|
### Format Consistency Enforcement
|
||||||
|
The system shall provide formatting capability...
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Model Formatting]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Excess Whitespace Format Implementation
|
||||||
|
Detect and fix excess whitespace...
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Format Consistency Enforcement]
|
||||||
|
* satisfiedBy: [format.rs]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Missing Separators Format Implementation
|
||||||
|
Detect consecutive element sections...
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Format Consistency Enforcement]
|
||||||
|
* satisfiedBy: [format.rs]
|
||||||
|
```
|
||||||
|
|
||||||
|
**After Consolidation:**
|
||||||
|
```markdown
|
||||||
|
### Format Consistency Enforcement
|
||||||
|
The system shall provide formatting capability...
|
||||||
|
|
||||||
|
#### Details
|
||||||
|
**Excess Whitespace:**
|
||||||
|
- Detect and fix excess whitespace after element headers
|
||||||
|
- Maintain consistent formatting
|
||||||
|
|
||||||
|
**Missing Separators:**
|
||||||
|
- Detect consecutive element sections that lack separators
|
||||||
|
- Insert separators to maintain consistent visual separation
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Model Formatting]
|
||||||
|
* satisfiedBy: [format.rs]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example 2: CLI Options Family
|
||||||
|
|
||||||
|
**Before:**
|
||||||
|
```markdown
|
||||||
|
### CLI Traces Command
|
||||||
|
The system shall implement traces subcommand...
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Verification Trace Builder]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### CLI Traces Filter Options
|
||||||
|
Support filtering verification traces...
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [CLI Traces Command]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### CLI Traces From-Folder Option
|
||||||
|
Support --from-folder option...
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [CLI Traces Command]
|
||||||
|
```
|
||||||
|
|
||||||
|
**After:**
|
||||||
|
```markdown
|
||||||
|
### CLI Traces Command
|
||||||
|
The system shall implement traces subcommand...
|
||||||
|
|
||||||
|
#### Details
|
||||||
|
[Original command details]
|
||||||
|
|
||||||
|
**Filter Options:**
|
||||||
|
The system shall support filtering verification traces by:
|
||||||
|
- --filter-id=<id>: Filter by verification element ID
|
||||||
|
- --filter-name=<regex>: Filter by name pattern
|
||||||
|
- --filter-type=<type>: Filter by verification type
|
||||||
|
|
||||||
|
**From-Folder Option:**
|
||||||
|
Support --from-folder option that specifies relative path for portable links:
|
||||||
|
- Accept relative path parameter
|
||||||
|
- Adjust clickable links in diagrams to be relative
|
||||||
|
- Work with both Markdown and JSON output
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Verification Trace Builder]
|
||||||
|
* satisfiedBy: [cli.rs]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Work incrementally**: Consolidate one requirement family at a time
|
||||||
|
2. **Validate frequently**: Run `reqvire validate` after each consolidation
|
||||||
|
3. **Preserve all information**: Don't lose any technical details during consolidation
|
||||||
|
4. **Maintain traceability**: Move ALL relations from children to parent
|
||||||
|
5. **Update references**: Search and fix all references to removed children
|
||||||
|
6. **Test thoroughly**: Ensure model validates and all links work after consolidation
|
||||||
|
7. **Document decisions**: Keep notes on which families were consolidated and why
|
||||||
|
|
||||||
|
## Anti-Patterns (When NOT to Consolidate)
|
||||||
|
|
||||||
|
Do NOT consolidate if:
|
||||||
|
- Child introduces **new functional capability** beyond parent
|
||||||
|
- Child has **extensive content** (>300 words) that would overwhelm parent Details
|
||||||
|
- Child has **many verifications** (3+) indicating significant independent functionality
|
||||||
|
- Child is referenced by **many other elements** as a key concept
|
||||||
|
- Child represents a **distinct abstraction level** (e.g., user requirement vs system requirement)
|
||||||
|
- There's **uncertainty** about whether child is truly refinement-only
|
||||||
|
|
||||||
|
## Expected Benefits
|
||||||
|
|
||||||
|
After consolidation, the model will have:
|
||||||
|
- **Reduced clutter**: Fewer top-level requirements to navigate
|
||||||
|
- **Better organization**: Implementation details nested under conceptual parents
|
||||||
|
- **Improved readability**: Related information grouped together
|
||||||
|
- **Maintained traceability**: All relations preserved through parent requirements
|
||||||
|
- **Cleaner structure**: Hierarchical organization matches conceptual dependencies
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
After consolidation is complete, verify:
|
||||||
|
- ✅ Model validates with no errors: `reqvire validate`
|
||||||
|
- ✅ All relations are preserved (no missing targets)
|
||||||
|
- ✅ Verification coverage percentage unchanged or improved
|
||||||
|
- ✅ Test verifications still link correctly to requirements
|
||||||
|
- ✅ Diagrams generate without errors: `reqvire generate-diagrams`
|
||||||
|
- ✅ Documentation exports correctly: `reqvire export --html`
|
||||||
71
commands/find-redundant-verifications.md
Normal file
71
commands/find-redundant-verifications.md
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
description: Find and analyze redundant verify relations in the Reqvire model
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Find Redundant Verify Relations
|
||||||
|
|
||||||
|
Analyze the verification traces to find redundant verify relations in the model.
|
||||||
|
|
||||||
|
## Current Status
|
||||||
|
|
||||||
|
- Auto-fixable issues: !`reqvire lint --json 2>&1 | jq -r '"\(if .auto_fixable then (.auto_fixable | length) else 0 end) (including redundant verifications)"'`
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
1. Run the lint command to find redundancies:
|
||||||
|
```bash
|
||||||
|
reqvire lint --json > /tmp/lint.json
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Parse the JSON to find redundant verify relations:
|
||||||
|
```bash
|
||||||
|
jq -r '
|
||||||
|
.auto_fixable[] |
|
||||||
|
select(.type == "redundant_verify_relations") |
|
||||||
|
"## Verification: \(.verification.name)\n" +
|
||||||
|
"**File**: \(.verification.file)\n" +
|
||||||
|
"**Identifier**: `\(.verification.identifier)`\n\n" +
|
||||||
|
"**Redundant VERIFY Relations** (will be auto-removed with lint --fix):\n" +
|
||||||
|
(.redundant_relations[] | " * verify: \(.target)\n") +
|
||||||
|
"\n**Reason**: \(.rationale)\n\n" +
|
||||||
|
"---\n"
|
||||||
|
' /tmp/lint.json || echo "No redundant verify relations found."
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Present the results to the user showing:
|
||||||
|
- Which verifications have redundant relations
|
||||||
|
- Which specific verify relations can be removed
|
||||||
|
- Explanation of why they're redundant
|
||||||
|
|
||||||
|
4. If no redundancies found, report: "No redundant verify relations found in the model."
|
||||||
|
|
||||||
|
5. **Auto-fix option:**
|
||||||
|
```bash
|
||||||
|
reqvire lint --fix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
A verify relation is redundant when:
|
||||||
|
- A verification directly verifies both a child requirement AND its parent
|
||||||
|
- Since verification traces roll up automatically, verifying the child is sufficient
|
||||||
|
- The direct verification of the parent adds noise to the model
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
Verification "Password Test" verifies:
|
||||||
|
- "Password Strength" (leaf requirement)
|
||||||
|
- "Password Authentication" (parent of Password Strength)
|
||||||
|
|
||||||
|
→ The verify relation to "Password Authentication" is REDUNDANT
|
||||||
|
```
|
||||||
|
|
||||||
|
The system automatically detects this by building trace trees and checking if any ancestor requirements are also directly verified.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Use `reqvire lint --fix` to automatically remove redundant relations
|
||||||
|
- Redundant verify relations are always safe to remove
|
||||||
|
- Run `reqvire validate` after fixing to confirm model integrity
|
||||||
117
commands/generate-tasks.md
Normal file
117
commands/generate-tasks.md
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*), Bash(git:*)
|
||||||
|
argument-hint: [base-commit]
|
||||||
|
description: Generate implementation task plan from requirement changes using change-impact analysis
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Generate Tasks
|
||||||
|
|
||||||
|
Generate implementation task plan from requirement changes on a feature branch.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
- Current branch: !`git rev-parse --abbrev-ref HEAD`
|
||||||
|
- Base commit: ${1:-!`git merge-base main HEAD 2>/dev/null || git merge-base master HEAD`}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Detect base branch:**
|
||||||
|
```bash
|
||||||
|
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
|
||||||
|
if git show-ref --verify --quiet refs/heads/main; then
|
||||||
|
BASE_BRANCH="main"
|
||||||
|
elif git show-ref --verify --quiet refs/heads/master; then
|
||||||
|
BASE_BRANCH="master"
|
||||||
|
else
|
||||||
|
echo "Specify base commit manually"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
BASE_COMMIT="${1:-$(git merge-base $BASE_BRANCH HEAD)}"
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Run change impact:**
|
||||||
|
```bash
|
||||||
|
reqvire change-impact --git-commit=$BASE_COMMIT --json > /tmp/impact.json
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **For each changed requirement:**
|
||||||
|
|
||||||
|
Get details:
|
||||||
|
```bash
|
||||||
|
reqvire search --filter-id="<requirement-id>" --json
|
||||||
|
```
|
||||||
|
|
||||||
|
Extract:
|
||||||
|
- Requirement content
|
||||||
|
- verifiedBy relations (tests to run)
|
||||||
|
- satisfiedBy relations (code to update)
|
||||||
|
- derivedFrom relations (context)
|
||||||
|
|
||||||
|
4. **For each verification:**
|
||||||
|
|
||||||
|
Get test paths:
|
||||||
|
```bash
|
||||||
|
reqvire search --filter-id="<verification-id>" --json
|
||||||
|
```
|
||||||
|
|
||||||
|
Extract satisfiedBy relations (test files).
|
||||||
|
|
||||||
|
5. **Generate TodoWrite task plan:**
|
||||||
|
|
||||||
|
**For new requirements:**
|
||||||
|
```
|
||||||
|
☐ Implement "{Requirement Name}" ({REQ-ID})
|
||||||
|
☐ Review requirement: [link to blob]
|
||||||
|
☐ Implement functionality
|
||||||
|
☐ Run tests: {test paths}
|
||||||
|
☐ Add satisfiedBy relation
|
||||||
|
☐ Validate: reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
**For modified requirements:**
|
||||||
|
```
|
||||||
|
☐ Update "{Requirement Name}" ({REQ-ID})
|
||||||
|
☐ Review changes: [link to blob]
|
||||||
|
☐ Review code: {satisfiedBy paths}
|
||||||
|
☐ Update implementation
|
||||||
|
☐ Run tests: {test paths}
|
||||||
|
☐ Validate: reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Generate git blob links:**
|
||||||
|
```bash
|
||||||
|
REPO_URL=$(git remote get-url origin | sed 's/\.git$//' | sed 's/git@github.com:/https:\/\/github.com\//')
|
||||||
|
BLOB_URL="${REPO_URL}/blob/${BASE_COMMIT}/${file_path}#${element-anchor}"
|
||||||
|
```
|
||||||
|
|
||||||
|
7. **Present task plan:**
|
||||||
|
- Phase 1: New requirements to implement
|
||||||
|
- Phase 2: Modified requirements to update
|
||||||
|
- Phase 3: Affected verifications to review
|
||||||
|
|
||||||
|
## Task Plan Structure
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Implementation Task Plan
|
||||||
|
|
||||||
|
**Base**: {base_branch}@{base_commit}
|
||||||
|
**Feature**: {current_branch}
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
- New requirements: X
|
||||||
|
- Modified requirements: Y
|
||||||
|
- Tests to run: Z
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
{TodoWrite formatted tasks}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Task plan uses TodoWrite format for tracking
|
||||||
|
- Links to exact requirement versions via git blob URLs
|
||||||
|
- Repository-agnostic: no technology assumptions
|
||||||
|
- Always read full requirements, not just summaries
|
||||||
74
commands/lint-model.md
Normal file
74
commands/lint-model.md
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
description: Lint and clean up the Reqvire model by fixing issues and identifying items needing review
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Lint Model
|
||||||
|
|
||||||
|
Lint the Reqvire model to fix quality issues and identify items needing manual review.
|
||||||
|
|
||||||
|
## Current Lint Status
|
||||||
|
|
||||||
|
- Auto-fixable: !`reqvire lint --json 2>&1 | jq -r '"\(if .auto_fixable then (.auto_fixable | length) else 0 end) issues"'`
|
||||||
|
- Manual review: !`reqvire lint --json 2>&1 | jq -r '"\(if .needs_manual_review then (.needs_manual_review | length) else 0 end) items"'`
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Apply auto-fixes immediately:**
|
||||||
|
```bash
|
||||||
|
reqvire lint --fix
|
||||||
|
```
|
||||||
|
|
||||||
|
This automatically fixes:
|
||||||
|
- Syntax and formatting issues
|
||||||
|
- Redundant verify relations (verification verifying both leaf and parent)
|
||||||
|
- Safe redundant hierarchical relations (single-chain derivedFrom paths)
|
||||||
|
|
||||||
|
2. **Check for manual review items:**
|
||||||
|
```bash
|
||||||
|
reqvire lint --json > /tmp/lint.json
|
||||||
|
jq '.needs_manual_review' /tmp/lint.json
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **For manual review items:**
|
||||||
|
|
||||||
|
Read affected specifications:
|
||||||
|
```bash
|
||||||
|
reqvire search --filter-id="<element-id>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Provide recommendations:
|
||||||
|
- Show the potentially redundant relation
|
||||||
|
- Explain why it may be redundant
|
||||||
|
- Ask user if they want to remove it
|
||||||
|
|
||||||
|
4. **Validate after changes:**
|
||||||
|
```bash
|
||||||
|
reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Lint Categories
|
||||||
|
|
||||||
|
### Auto-Fixable (always safe to apply)
|
||||||
|
|
||||||
|
- **Redundant verify relations**: Verification verifies both leaf and parent requirement
|
||||||
|
- **Safe redundant hierarchical relations**: Single-chain derivedFrom paths that can be safely removed
|
||||||
|
|
||||||
|
### Needs Review (requires judgment)
|
||||||
|
|
||||||
|
- **Multi-branch convergence**: Element reaches ancestor through multiple distinct paths
|
||||||
|
- **Complex hierarchical relations**: Multi-path derivedFrom relations requiring human judgment
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
- Run `reqvire lint --fix` after adding features
|
||||||
|
- Review manual items carefully before removing
|
||||||
|
- Validate model after manual changes
|
||||||
|
- Use after `/add-feature` or `/add-verification` to clean up
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Auto-fixes are always safe - just apply them
|
||||||
|
- Manual review items need human judgment and context
|
||||||
|
- Run lint regularly to maintain model quality
|
||||||
151
commands/mv-file.md
Normal file
151
commands/mv-file.md
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
argument-hint: [source-file] [target-file]
|
||||||
|
description: Move entire specification file with all its elements to a new location
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Move File
|
||||||
|
|
||||||
|
Move an entire specification file with all its elements to a new location, automatically updating all relations that reference elements in the moved file.
|
||||||
|
|
||||||
|
## Current Model Context
|
||||||
|
|
||||||
|
- Total elements: !`reqvire search --json | jq -r '.global_counters.total_elements'`
|
||||||
|
|
||||||
|
## User Request
|
||||||
|
|
||||||
|
${1:+Source file: $1}
|
||||||
|
${2:+Target file: $2}
|
||||||
|
${1:-The user will provide source and target file paths.}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Understand the context:**
|
||||||
|
- Identify the source file to move
|
||||||
|
- Determine the target file location
|
||||||
|
- Verify source file exists in the model
|
||||||
|
|
||||||
|
2. **Preview the move operation:**
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "<source-file>" "<target-file>" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
This shows:
|
||||||
|
- Which files will be modified
|
||||||
|
- How many elements will be moved
|
||||||
|
- What relations will be updated
|
||||||
|
- Git-style diffs for all affected files
|
||||||
|
|
||||||
|
3. **Apply the file move:**
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "<source-file>" "<target-file>"
|
||||||
|
```
|
||||||
|
|
||||||
|
The mv-file command automatically:
|
||||||
|
- Moves all elements from source file to target file
|
||||||
|
- Updates all element identifiers to reflect new file path
|
||||||
|
- Updates all incoming relations (from other files) to reference new location
|
||||||
|
- Preserves all element content, metadata, and outgoing relations
|
||||||
|
- Deletes the source file after successful move
|
||||||
|
- Creates the target file with all moved elements
|
||||||
|
|
||||||
|
4. **Verify the changes:**
|
||||||
|
```bash
|
||||||
|
reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- **Path resolution**: File paths are resolved relative to current working directory
|
||||||
|
- **Automatic relation updates**: All relations pointing to moved elements are automatically updated throughout the model
|
||||||
|
- **Identifier updates**: Element identifiers change from `<source-file>#<slug>` to `<target-file>#<slug>`
|
||||||
|
- **Subdirectory support**: Works correctly when executed from subdirectories within git repository
|
||||||
|
- **Atomic operation**: Either all elements move successfully or none move (on validation failure)
|
||||||
|
|
||||||
|
## Squash Mode
|
||||||
|
|
||||||
|
When the target file already exists, use the **`--squash`** flag to merge all elements from source into the target file:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "<source-file>" "<existing-target-file>" --squash
|
||||||
|
```
|
||||||
|
|
||||||
|
**Squash behavior:**
|
||||||
|
- All source elements are appended to target file
|
||||||
|
- Target file's existing elements remain unchanged
|
||||||
|
- Source file is deleted after successful move
|
||||||
|
- All relations are updated throughout the model
|
||||||
|
|
||||||
|
**When to use --squash:**
|
||||||
|
- Consolidating multiple specification files into one
|
||||||
|
- Merging temporary/experimental specs back into main file
|
||||||
|
- Reorganizing model structure by combining related files
|
||||||
|
|
||||||
|
## Error Cases
|
||||||
|
|
||||||
|
The mv-file operation will fail with a clear error if:
|
||||||
|
- The source file does not exist or contains no elements
|
||||||
|
- The target file already exists in the model (unless --squash flag is provided)
|
||||||
|
- The operation would result in invalid model state
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
**Move file within specifications directory:**
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "requirements/OldFile.md" "requirements/NewFile.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Move file to different directory:**
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "requirements/Auth.md" "security/Authentication.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Preview before moving:**
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "specs/File.md" "requirements/File.md" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
**Get JSON output with element mappings:**
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "old/path.md" "new/path.md" --json
|
||||||
|
```
|
||||||
|
|
||||||
|
**Works from subdirectories (paths relative to current directory):**
|
||||||
|
```bash
|
||||||
|
cd submodule/
|
||||||
|
reqvire mv-file "specs/File.md" "requirements/File.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Squash elements from multiple files:**
|
||||||
|
```bash
|
||||||
|
# Merge experimental specs into main requirements
|
||||||
|
reqvire mv-file "temp/Experiments.md" "requirements/Requirements.md" --squash
|
||||||
|
```
|
||||||
|
|
||||||
|
**Preview squash before applying:**
|
||||||
|
```bash
|
||||||
|
reqvire mv-file "old/File.md" "requirements/MainFile.md" --squash --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
## When to Use mv-file
|
||||||
|
|
||||||
|
Use mv-file when:
|
||||||
|
- Reorganizing specification file structure
|
||||||
|
- Moving all requirements for a feature to a different location
|
||||||
|
- Consolidating or splitting specification files
|
||||||
|
- Refactoring the model directory structure
|
||||||
|
|
||||||
|
Use mv-file with --squash when:
|
||||||
|
- Merging multiple specification files into one
|
||||||
|
- Consolidating temporary or experimental requirements back into main specs
|
||||||
|
- Simplifying model structure by reducing file count
|
||||||
|
|
||||||
|
**Note**: mv-file moves entire files with all their elements. To move individual elements between files, use `reqvire mv` instead.
|
||||||
|
|
||||||
|
## Related Commands
|
||||||
|
|
||||||
|
- **Move element**: `reqvire mv <element-name> <target-file>`
|
||||||
|
- **Rename element**: `reqvire rename <current-name> <new-name>`
|
||||||
|
- **Remove element**: `reqvire rm <element-name>`
|
||||||
|
- **Add element**: `reqvire add <file> < element.md`
|
||||||
115
commands/mv.md
Normal file
115
commands/mv.md
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
argument-hint: <element-name> <file> [index]
|
||||||
|
description: Move an element to a different file or position
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Move Element
|
||||||
|
|
||||||
|
Move an existing model element to a different file or position within the model.
|
||||||
|
|
||||||
|
## Current Model Context
|
||||||
|
|
||||||
|
- Total elements: !`reqvire search --json | jq -r '.global_counters.total_elements'`
|
||||||
|
|
||||||
|
## User Request
|
||||||
|
|
||||||
|
${1:+Element name: $1}
|
||||||
|
${1:-The user will provide element name and target location.}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Understand the context:**
|
||||||
|
- Identify the element to move (by name)
|
||||||
|
- Determine the target location (file and/or index)
|
||||||
|
- Verify element exists in the model
|
||||||
|
|
||||||
|
2. **Preview the move operation:**
|
||||||
|
```bash
|
||||||
|
reqvire mv "<element-name>" "<target-file>" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
This shows:
|
||||||
|
- Which files will be modified
|
||||||
|
- Where the element will be moved
|
||||||
|
- What relations will be updated
|
||||||
|
- Git-style diffs for all affected files
|
||||||
|
|
||||||
|
3. **Apply the move:**
|
||||||
|
```bash
|
||||||
|
reqvire mv "<element-name>" "<target-file>"
|
||||||
|
```
|
||||||
|
|
||||||
|
The mv command automatically:
|
||||||
|
- Removes element from source file
|
||||||
|
- Adds element to target file
|
||||||
|
- Updates the element identifier to reflect new location
|
||||||
|
- Updates all forward relations (from the element to others)
|
||||||
|
- Updates all backward relations (from other elements to this one)
|
||||||
|
- Maintains model consistency
|
||||||
|
|
||||||
|
4. **Verify the changes:**
|
||||||
|
```bash
|
||||||
|
reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- **Global uniqueness**: Element names are globally unique, so you only need the element name
|
||||||
|
- **Path resolution**: File paths are resolved relative to current working directory
|
||||||
|
- **Automatic relation updates**: All relations throughout the model are automatically updated
|
||||||
|
- **Identifier update**: Element identifier changes from `<old-file>#<slug>` to `<new-file>#<slug>`
|
||||||
|
|
||||||
|
## Move Options
|
||||||
|
|
||||||
|
- `<element-name>`: Name of element to move (required)
|
||||||
|
- `<file>`: Target file path (required)
|
||||||
|
- `[index]`: Position within target file (0-based, default: append to end)
|
||||||
|
- `--dry-run`: Preview changes without applying
|
||||||
|
- `--json`: Output results in JSON format
|
||||||
|
|
||||||
|
## Error Cases
|
||||||
|
|
||||||
|
The mv operation will fail with a clear error if:
|
||||||
|
- The element name does not exist
|
||||||
|
- The target file does not exist (must exist in git)
|
||||||
|
- The operation would result in invalid model state
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
**Move element to different file:**
|
||||||
|
```bash
|
||||||
|
reqvire mv "User Authentication" "requirements/Security.md"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Insert at specific position (index 0 = first element in file):**
|
||||||
|
```bash
|
||||||
|
reqvire mv "High Priority Req" "requirements/Critical.md" 0
|
||||||
|
```
|
||||||
|
|
||||||
|
**Preview before moving:**
|
||||||
|
```bash
|
||||||
|
reqvire mv "Feature X" "NewFile.md" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
**Get JSON output:**
|
||||||
|
```bash
|
||||||
|
reqvire mv "Element" "File.md" --json
|
||||||
|
```
|
||||||
|
|
||||||
|
## When to Use mv
|
||||||
|
|
||||||
|
Use mv when:
|
||||||
|
- Moving individual requirements or verifications between files
|
||||||
|
- Reorganizing elements within specification structure
|
||||||
|
- Reordering elements within files
|
||||||
|
|
||||||
|
**Note**: To move entire files with all their elements, use `reqvire mv-file` instead.
|
||||||
|
|
||||||
|
## Related Commands
|
||||||
|
|
||||||
|
- **Move file**: `reqvire mv-file <source-file> <target-file>`
|
||||||
|
- **Rename element**: `reqvire rename <current-name> <new-name>`
|
||||||
|
- **Remove element**: `reqvire rm <element-name>`
|
||||||
|
- **Add element**: `reqvire add <file> < element.md`
|
||||||
101
commands/rename-element.md
Normal file
101
commands/rename-element.md
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
argument-hint: [current-name] [new-name]
|
||||||
|
description: Rename an existing element while updating all relations that reference it
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Rename Element
|
||||||
|
|
||||||
|
Rename an existing model element while automatically updating all relation references throughout the model.
|
||||||
|
|
||||||
|
## Current Model Context
|
||||||
|
|
||||||
|
- Total elements: !`reqvire search --json | jq -r '.global_counters.total_elements'`
|
||||||
|
|
||||||
|
## User Request
|
||||||
|
|
||||||
|
${1:+Current element name: $1}
|
||||||
|
${2:+New element name: $2}
|
||||||
|
${1:-The user will provide element names.}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Understand the context:**
|
||||||
|
- Identify the element to rename (current name)
|
||||||
|
- Determine the new name
|
||||||
|
- Verify element exists in the model
|
||||||
|
|
||||||
|
2. **Preview the rename operation:**
|
||||||
|
```bash
|
||||||
|
reqvire rename "<current-name>" "<new-name>" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
This shows:
|
||||||
|
- Which files will be modified
|
||||||
|
- What relations will be updated
|
||||||
|
- The identifier change (old → new)
|
||||||
|
|
||||||
|
3. **Apply the rename:**
|
||||||
|
```bash
|
||||||
|
reqvire rename "<current-name>" "<new-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
The rename command automatically:
|
||||||
|
- Updates the element's heading text in the markdown file
|
||||||
|
- Updates the element identifier in the registry
|
||||||
|
- Updates all forward relations (from the element to others)
|
||||||
|
- Updates all backward relations (from other elements to this one)
|
||||||
|
- Maintains model consistency
|
||||||
|
|
||||||
|
4. **Verify the changes:**
|
||||||
|
```bash
|
||||||
|
reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- **Global uniqueness**: Element names are globally unique in Reqvire, so you only need the element name (not the full file path identifier)
|
||||||
|
- **Automatic relation updates**: All relations throughout the model are automatically updated
|
||||||
|
- **Identifier format**: The element identifier changes from `<file>#<old-name-slug>` to `<file>#<new-name-slug>`
|
||||||
|
- **Name slugification**: Element names are converted to slugs (lowercase, spaces → hyphens) for identifiers
|
||||||
|
|
||||||
|
## Error Cases
|
||||||
|
|
||||||
|
The rename operation will fail with a clear error if:
|
||||||
|
- The current element name does not exist
|
||||||
|
- The new name conflicts with an existing element
|
||||||
|
- Multiple elements have the same name (should not happen due to uniqueness constraint)
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
**Rename a requirement:**
|
||||||
|
```bash
|
||||||
|
reqvire rename "User Authentication" "User Login Authentication"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Preview before renaming:**
|
||||||
|
```bash
|
||||||
|
reqvire rename "Data Storage" "Persistent Data Storage" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
**Get JSON output:**
|
||||||
|
```bash
|
||||||
|
reqvire rename "Old Feature" "New Feature" --json
|
||||||
|
```
|
||||||
|
|
||||||
|
## When to Use Rename
|
||||||
|
|
||||||
|
Use rename when:
|
||||||
|
- A requirement or verification needs a better name
|
||||||
|
- Terminology changes in the project
|
||||||
|
- Consolidating or clarifying element names
|
||||||
|
- Refactoring the model structure
|
||||||
|
|
||||||
|
**Note**: Rename only changes the element name and heading. To move an element to a different file, use `reqvire mv` instead.
|
||||||
|
|
||||||
|
## Related Commands
|
||||||
|
|
||||||
|
- **Move element**: `reqvire mv <element-name> <target-file>`
|
||||||
|
- **Remove element**: `reqvire rm <element-name>`
|
||||||
|
- **Add element**: `reqvire add <file> < element.md`
|
||||||
113
commands/rm.md
Normal file
113
commands/rm.md
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
---
|
||||||
|
allowed-tools: Read, Bash(reqvire:*)
|
||||||
|
argument-hint: [element-name]
|
||||||
|
description: Remove an element from the model
|
||||||
|
model: claude-sonnet-4-5-20250929
|
||||||
|
---
|
||||||
|
|
||||||
|
# Remove Element
|
||||||
|
|
||||||
|
Remove an existing model element from the specifications.
|
||||||
|
|
||||||
|
## Current Model Context
|
||||||
|
|
||||||
|
- Total elements: !`reqvire search --json | jq -r '.global_counters.total_elements'`
|
||||||
|
|
||||||
|
## User Request
|
||||||
|
|
||||||
|
${1:+Element name: $1}
|
||||||
|
${1:-The user will provide element name to remove.}
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. **Understand the context:**
|
||||||
|
- Identify the element to remove (by name)
|
||||||
|
- Verify element exists in the model
|
||||||
|
- Check if other elements have relations to this element
|
||||||
|
|
||||||
|
2. **Preview the remove operation:**
|
||||||
|
```bash
|
||||||
|
reqvire rm "<element-name>" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
This shows:
|
||||||
|
- Which file will be modified
|
||||||
|
- The element that will be removed
|
||||||
|
- Git-style diff showing the deletion
|
||||||
|
|
||||||
|
3. **Apply the removal:**
|
||||||
|
```bash
|
||||||
|
reqvire rm "<element-name>"
|
||||||
|
```
|
||||||
|
|
||||||
|
The rm command automatically:
|
||||||
|
- Removes the element from its markdown file
|
||||||
|
- Removes the element from the model registry
|
||||||
|
- Deletes all relations from this element
|
||||||
|
- **Note**: Does NOT automatically update relations FROM other elements TO this element (you may need to clean those up)
|
||||||
|
|
||||||
|
4. **Verify the changes:**
|
||||||
|
```bash
|
||||||
|
reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
**Important**: After removing an element, validation may show errors if other elements still reference the removed element. You'll need to manually update or remove those relations.
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- **Global uniqueness**: Element names are globally unique, so you only need the element name
|
||||||
|
- **Relations cleanup**: The removed element's outgoing relations are deleted, but incoming relations (from other elements) are NOT automatically removed
|
||||||
|
- **Validation warnings**: Removing elements that are referenced by others will cause validation errors
|
||||||
|
- **Breaking changes**: Removing requirements or verifications can break traceability chains
|
||||||
|
|
||||||
|
## Remove Options
|
||||||
|
|
||||||
|
- `--dry-run`: Preview changes without applying
|
||||||
|
- `--json`: Output results in JSON format
|
||||||
|
|
||||||
|
## Error Cases
|
||||||
|
|
||||||
|
The rm operation will fail with a clear error if:
|
||||||
|
- The element name does not exist
|
||||||
|
- Multiple elements have the same name (should not happen due to uniqueness constraint)
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
**Remove a requirement:**
|
||||||
|
```bash
|
||||||
|
reqvire rm "Deprecated Feature"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Preview before removing:**
|
||||||
|
```bash
|
||||||
|
reqvire rm "Old Requirement" --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
**Get JSON output:**
|
||||||
|
```bash
|
||||||
|
reqvire rm "Obsolete Element" --json
|
||||||
|
```
|
||||||
|
|
||||||
|
## When to Use rm
|
||||||
|
|
||||||
|
Use rm when:
|
||||||
|
- Removing deprecated or obsolete requirements
|
||||||
|
- Cleaning up test elements
|
||||||
|
- Removing duplicate or incorrect entries
|
||||||
|
- Refactoring the model structure
|
||||||
|
|
||||||
|
**Warning**: Be careful when removing elements that are referenced by other elements, as this will break those relations and cause validation errors.
|
||||||
|
|
||||||
|
## Cleanup After Removal
|
||||||
|
|
||||||
|
After removing an element, you may need to:
|
||||||
|
1. Find elements that referenced the removed element (validation will show these)
|
||||||
|
2. Update or remove those relations manually
|
||||||
|
3. Re-run validation to ensure model consistency
|
||||||
|
|
||||||
|
## Related Commands
|
||||||
|
|
||||||
|
- **Move element**: `reqvire mv <element-name> <target-file>`
|
||||||
|
- **Rename element**: `reqvire rename <current-name> <new-name>`
|
||||||
|
- **Add element**: `reqvire add <file> < element.md`
|
||||||
|
- **Search elements**: `reqvire search --filter-name="<pattern>"`
|
||||||
105
plugin.lock.json
Normal file
105
plugin.lock.json
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||||
|
"pluginId": "gh:reqvire-org/reqvire:reqvire-claude-plugin",
|
||||||
|
"normalized": {
|
||||||
|
"repo": null,
|
||||||
|
"ref": "refs/tags/v20251128.0",
|
||||||
|
"commit": "ca2f3a361e19cf96ee90cf9bef44b00b30613e3d",
|
||||||
|
"treeHash": "dabc2271f94dd4385cb1a013436c7f96e81d0080b3af13caf30249cb58c93477",
|
||||||
|
"generatedAt": "2025-11-28T10:27:56.785027Z",
|
||||||
|
"toolVersion": "publish_plugins.py@0.2.0"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||||
|
"branch": "master",
|
||||||
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||||
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||||
|
},
|
||||||
|
"manifest": {
|
||||||
|
"name": "reqvire",
|
||||||
|
"description": "Claude Code plugin for Reqvire - The AI-Native Requirements As A Code framework for Modern Engineering Teams. Includes specialized skills for requirements engineering and task planning, plus commands for model analysis and verification management.",
|
||||||
|
"version": "1.1.0"
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "README.md",
|
||||||
|
"sha256": "f3f6d6fd6eebe397577894e95ed958c9157516d6a5495e78ca07bf1257bfc319"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": ".claude-plugin/plugin.json",
|
||||||
|
"sha256": "f33f815c10bb781dfc55c48ad22e1f44197014f90f9e8c9c745cf0631e6efdf4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/add-feature.md",
|
||||||
|
"sha256": "7c20565ebd9fbe624e52ebb30da81e304ac3343a1ab46c8c040c95c1c3b38793"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/rename-element.md",
|
||||||
|
"sha256": "e2990a49e77cba40536fdb01a5362ef2c4c3cf60b31c16c74547e3fb6bc6d7a1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/add-requirement.md",
|
||||||
|
"sha256": "32a735d667865ad5c3c3c99f3227826e87a4345e10bed81bc2363fdf62d4f7b9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/generate-tasks.md",
|
||||||
|
"sha256": "3184c364490e046c7c6ed142cf844be2e20fd5f490b72fa039cd5d6712de2340"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/add-verification.md",
|
||||||
|
"sha256": "f5d0dc3fd208605372ed6c8109ac526ae22cef15508f2b9a298d77733661c376"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/lint-model.md",
|
||||||
|
"sha256": "378c5fa7c5eb41f3653b55ae1a0a072e050125da8d9dc0fc804f786aaab5b668"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/consolidate.md",
|
||||||
|
"sha256": "a5914114dc2d8e2a45f75e34d7ee774c6d8f4e5296ac378449c4dce6f14de981"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/analyze-model.md",
|
||||||
|
"sha256": "f525f2d1c93f9fed0e4312968d4432fae71a2bc5edef39eee7f83e9a6963bb0f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/analyze-coverage.md",
|
||||||
|
"sha256": "5e40411e13e429e8d3e56ebfd5b70af1df7e33bb75e004e68a062c75e9e98636"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/analyze-impact.md",
|
||||||
|
"sha256": "76ee39946593f3f69dd4dee54eb0fef99466870f7a81bf9752dd86e408eb8ece"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/mv-file.md",
|
||||||
|
"sha256": "5aa96daac02849b3dfaa83211510ed831a6a8d193398959d1cc0e15497d8e0e3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/rm.md",
|
||||||
|
"sha256": "87eb8c3ffbd93f5edff41c7070618ace597be7b4eb942aba10a3e8754f08776b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/find-redundant-verifications.md",
|
||||||
|
"sha256": "ef40c59a7e8267fcfa018d7d2abccbc2f4351d68ea6260d468f1e5a1eddf1262"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/mv.md",
|
||||||
|
"sha256": "e7184564eac94635566a81de585d3c21fe3a5c76f50bb291bb5af132aa1e5cdf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/task-master/SKILL.md",
|
||||||
|
"sha256": "b5bec1cf9ca147cb93b6dd35ab1844273abb94caa0e0516dd597e5b689c8f93f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/syseng/SKILL.md",
|
||||||
|
"sha256": "95e4377deebed0d5dade9bceccb921fcc75544f0cc07432249ffbe4e4c620aa4"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dirSha256": "dabc2271f94dd4385cb1a013436c7f96e81d0080b3af13caf30249cb58c93477"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"scannedAt": null,
|
||||||
|
"scannerVersion": null,
|
||||||
|
"flags": []
|
||||||
|
}
|
||||||
|
}
|
||||||
460
skills/syseng/SKILL.md
Normal file
460
skills/syseng/SKILL.md
Normal file
@@ -0,0 +1,460 @@
|
|||||||
|
---
|
||||||
|
name: syseng
|
||||||
|
description: Expert System and Requirements Engineer for exploring, analyzing, and managing MBSE models using Reqvire. Use for understanding specifications, browsing requirements, analyzing model structure, checking verification coverage, and guidance on requirements-as-code methodology as well as asisting with managing, refactoring, consolidating and updating MBSE model.
|
||||||
|
---
|
||||||
|
|
||||||
|
# System and Requirements Engineer Skill
|
||||||
|
|
||||||
|
You are an expert System and Requirements Engineer specializing in Model-Based Systems Engineering (MBSE) working with a Reqvire framework to manage system models.
|
||||||
|
|
||||||
|
## Your Role
|
||||||
|
|
||||||
|
You orchestrate Reqvire commands and provide expert guidance on systems engineering workflows. You delegate specific tasks to focused commands and help users navigate the MBSE methodology and manage the model.
|
||||||
|
|
||||||
|
|
||||||
|
## Two Distinct Workflows
|
||||||
|
|
||||||
|
### 1. Model Refactoring & Optimization (Reorganization)
|
||||||
|
**When**: Improving existing model structure without changing requirements intent
|
||||||
|
**Goal**: Better organization, traceability, and maintainability
|
||||||
|
|
||||||
|
Activities:
|
||||||
|
- Extracting inline constraints/specifications into dedicated elements
|
||||||
|
- Converting attachments to `satisfiedBy` relations where appropriate
|
||||||
|
- Merging duplicate/overlapping requirements
|
||||||
|
- Splitting mixed-type requirements (user vs system)
|
||||||
|
- Moving elements between files for better organization
|
||||||
|
- Adding missing relations (satisfiedBy, derivedFrom)
|
||||||
|
- Removing redundant verify relations
|
||||||
|
- Consolidating scattered specifications
|
||||||
|
- **Reordering elements**: Parents at top, children at bottom (follow derivedFrom hierarchy)
|
||||||
|
|
||||||
|
**Key principle**: The system behavior specification remains unchanged - only the model structure improves.
|
||||||
|
|
||||||
|
### 2. Adding New Features & Requirements
|
||||||
|
**When**: Extending the system with new capabilities
|
||||||
|
**Goal**: Properly specified new functionality with full traceability
|
||||||
|
|
||||||
|
MBSE Workflow:
|
||||||
|
1. **Requirements first** - Define what the system shall do (never skip this)
|
||||||
|
2. **Refinements** - Add specifications, constraints, behaviors as needed
|
||||||
|
3. **Verifications** - Add verification elements for leaf requirements
|
||||||
|
4. **Implementation links** - Connect to code via satisfiedBy (when code exists)
|
||||||
|
|
||||||
|
**Key principle**: Requirements drive everything - no implementation without requirements.
|
||||||
|
|
||||||
|
## Repository Context
|
||||||
|
|
||||||
|
This is a requirements management repository using **Reqvire** (requirements-as-code). It contains structured requirements in Markdown format with special metadata and relation tags. The model includes:
|
||||||
|
|
||||||
|
### Requirement Types
|
||||||
|
|
||||||
|
**User Requirements** (`type: user-requirement`) - Stakeholder needs including:
|
||||||
|
- **Business needs** - Operational efficiency, cost optimization, resource management
|
||||||
|
- **Customer needs** - What end users need from the system
|
||||||
|
- **Compliance needs** - GDPR, security audits, regulatory requirements
|
||||||
|
|
||||||
|
**System Requirements** (`type: system-requirement`) - Technical implementation requirements:
|
||||||
|
- **Functional** - What the system does (features, functions, capabilities)
|
||||||
|
- **Performance** - Speed, capacity, throughput, scalability
|
||||||
|
- **Interface** - APIs, integrations, external system connections
|
||||||
|
- **Security** - Authentication, authorization, encryption
|
||||||
|
- **Reliability** - Availability, fault tolerance, recovery
|
||||||
|
- **Operational** - Maintenance, monitoring, deployment
|
||||||
|
|
||||||
|
### Refinement Elements
|
||||||
|
|
||||||
|
- **Specifications** (`type: specification`) - Detailed definitions that satisfy requirements
|
||||||
|
- **Constraints** (`type: constraint`) - Limits and boundaries on system behavior
|
||||||
|
- **Behaviors** (`type: behavior`) - How the system behaves in specific conditions
|
||||||
|
|
||||||
|
### Verification
|
||||||
|
|
||||||
|
- **Verifications** (`type: verification`) - Verification definitions that validates requirements
|
||||||
|
|
||||||
|
## Key Principles
|
||||||
|
|
||||||
|
### 1. Relation Types and Their Proper Usage
|
||||||
|
|
||||||
|
**`satisfiedBy`** - Requirement is fulfilled by:
|
||||||
|
- **Specification elements** - Detailed definitions in the model
|
||||||
|
- **Design documents** - DD.md files with architectural details
|
||||||
|
- **Code implementations** - Actual source code that implements the requirement
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
- "The system shall implement X following clearly defined specifications" → satisfiedBy: [X Specification]
|
||||||
|
- "The system shall support distinct states" → satisfiedBy: [State Specification]
|
||||||
|
- "The system shall implement constraints and rate limits" → satisfiedBy: [Constraint elements]
|
||||||
|
- A functional requirement → satisfiedBy: [Source code module]
|
||||||
|
|
||||||
|
**`verifiedBy`** - Requirement is verified by **Verification elements** which have types:
|
||||||
|
- `analysis` - Verification by analysis/review
|
||||||
|
- `inspection` - Verification by inspection
|
||||||
|
- `demonstration` - Verification by demonstration
|
||||||
|
- `test` - Verification by testing
|
||||||
|
|
||||||
|
For `test` type verifications, the verification element can be `satisfiedBy` test code implementation:
|
||||||
|
```
|
||||||
|
Requirement
|
||||||
|
↓ verifiedBy
|
||||||
|
Verification Element (type: test)
|
||||||
|
↓ satisfiedBy
|
||||||
|
Test Code Implementation
|
||||||
|
```
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
- A requirement → verifiedBy: [Validate Feature X] (verification element)
|
||||||
|
- [Validate Feature X] → satisfiedBy: [test/feature_x_test.py] (test code)
|
||||||
|
|
||||||
|
**`Attachments`** - Use when a requirement *references* or **depends** on existing specifications for implementation details:
|
||||||
|
- A requirement that sends activity feed messages → Attachment: [Activity Feed Message Specification]
|
||||||
|
- A requirement that applies validation rules → Attachment: [Validation Rules]
|
||||||
|
- A requirement that references a constraint limit → Attachment: [Constraint]
|
||||||
|
|
||||||
|
**`derivedFrom`** - Use for traceability to parent requirements:
|
||||||
|
- System requirement derives from user requirement
|
||||||
|
- Detailed requirement derives from high-level requirement
|
||||||
|
- Child feature derives from parent capability
|
||||||
|
|
||||||
|
**When to split requirements into children (using derivedFrom):**
|
||||||
|
|
||||||
|
1. **Type separation** - Don't mix requirement types in one element:
|
||||||
|
- User requirements (stakeholder needs) should not contain system requirements (technical details)
|
||||||
|
- Split when a requirement mixes "what users need" with "how the system implements it"
|
||||||
|
|
||||||
|
2. **Change impact & containment:**
|
||||||
|
- **Scope isolation** - Changes to one aspect shouldn't require re-verification of unrelated aspects
|
||||||
|
- **Independent verification** - Each child can be verified separately with different methods
|
||||||
|
- **Different ownership** - Parts owned by different teams or domains
|
||||||
|
- **Different release cycles** - Parts that may ship or change independently
|
||||||
|
- **Risk isolation** - Separate high-risk/volatile parts from stable parts
|
||||||
|
|
||||||
|
3. **Granularity (avoid over/under-decomposition):**
|
||||||
|
- **Atomic testability** - Each requirement should map to a clear pass/fail verification
|
||||||
|
- **Single responsibility** - One requirement = one clear purpose
|
||||||
|
- **Stop splitting** when further decomposition adds traceability overhead without value
|
||||||
|
- **Meaningful traceability** - Each requirement should trace to distinct implementation artifacts
|
||||||
|
|
||||||
|
### MBSE Traceability Flow
|
||||||
|
|
||||||
|
```
|
||||||
|
User Requirement (Stakeholder Need)
|
||||||
|
↓ derivedFrom
|
||||||
|
System Requirement (Technical Implementation)
|
||||||
|
↓ satisfiedBy ↓ verifiedBy
|
||||||
|
Implementation Verification Element
|
||||||
|
(Specification/Design/Code) (analysis/inspection/demonstration/test)
|
||||||
|
↓ satisfiedBy (for test type)
|
||||||
|
Test Code Implementation
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Consolidating Specifications
|
||||||
|
|
||||||
|
**Extract inline constraints into Constraints.md:**
|
||||||
|
- Find requirements with hardcoded limits and extract them as constraint elements
|
||||||
|
- Create constraint elements in `requirements/Specifications/Constraints.md`
|
||||||
|
- Attach the constraint to requirements that reference the limit
|
||||||
|
- Link constraint to parent requirement that asks for constraints via `satisfiedBy`
|
||||||
|
|
||||||
|
Examples of hardcoded limits to extract:
|
||||||
|
|
||||||
|
*Web App:*
|
||||||
|
- "Session expires after 30 minutes of inactivity"
|
||||||
|
- "Maximum file upload size: 10 MB"
|
||||||
|
- "Password must be 8-128 characters"
|
||||||
|
- "Maximum 5 login attempts before lockout"
|
||||||
|
|
||||||
|
*CLI App:*
|
||||||
|
- "Command timeout after 60 seconds"
|
||||||
|
- "Maximum 10 concurrent processes"
|
||||||
|
- "Log file rotation at 50 MB"
|
||||||
|
|
||||||
|
*API:*
|
||||||
|
- "Rate limit: 100 requests per minute"
|
||||||
|
- "Maximum payload size: 1 MB"
|
||||||
|
- "Token expiration: 24 hours"
|
||||||
|
- "Batch operations limited to 50 items"
|
||||||
|
|
||||||
|
*Database:*
|
||||||
|
- "Connection pool maximum: 20 connections"
|
||||||
|
- "Query timeout: 30 seconds"
|
||||||
|
|
||||||
|
*Mobile App:*
|
||||||
|
- "Offline cache limit: 500 MB"
|
||||||
|
- "Maximum 3 devices per account"
|
||||||
|
|
||||||
|
**Extract inline specifications into specification elements:**
|
||||||
|
- Find requirements with detailed specifications in Details section
|
||||||
|
- Create specification elements in appropriate `requirements/Specifications/*Specifications.md` files
|
||||||
|
- Use `satisfiedBy` relation from the requirement that asks for the specification
|
||||||
|
|
||||||
|
### 3. Identifying Missing Relations
|
||||||
|
|
||||||
|
Look for specification elements with empty relations (`"relations": []`). These specifications are not being satisfied by any requirement. For each:
|
||||||
|
|
||||||
|
1. Find which requirement asks for this specification to be defined
|
||||||
|
2. Change the attachment to a `satisfiedBy` relation on that requirement
|
||||||
|
3. Keep attachments on other requirements that just reference (don't define) the specification
|
||||||
|
|
||||||
|
### 4. Merging Duplicate/Overlapping Requirements
|
||||||
|
|
||||||
|
When you find overlapping requirements:
|
||||||
|
1. Identify the more comprehensive requirement
|
||||||
|
2. Merge details from the duplicate into the main requirement
|
||||||
|
3. Move relations (verifiedBy, derivedFrom) to the merged requirement
|
||||||
|
4. Delete the duplicate
|
||||||
|
|
||||||
|
## Workflow: Model Refactoring & Optimization
|
||||||
|
|
||||||
|
### Step 1: Audit Specifications Without Relations
|
||||||
|
|
||||||
|
Run `reqvire search --filter-type='specification' --not-have-relations='satisfy' --short --json | jq .files[].elements[]` to find specifications with no relations. These need to be linked via `satisfiedBy` from appropriate requirements.
|
||||||
|
|
||||||
|
### Step 2: Find Requirements Asking for Specifications
|
||||||
|
|
||||||
|
Search for patterns like:
|
||||||
|
- "following clearly defined specifications"
|
||||||
|
- "adhering to precondition rules"
|
||||||
|
- "shall support distinct states"
|
||||||
|
- "shall implement constraints"
|
||||||
|
- "shall enforce standardized policies"
|
||||||
|
|
||||||
|
These requirements should have `satisfiedBy` relations to the specifications they ask for.
|
||||||
|
|
||||||
|
### Step 3: Convert Attachments to satisfiedBy Where Appropriate
|
||||||
|
|
||||||
|
For each specification attachment, ask:
|
||||||
|
- Does this requirement *define* this specification? → Use `satisfiedBy`
|
||||||
|
- Does this requirement *reference* or **depends on** this specification? → Keep as `Attachment`
|
||||||
|
|
||||||
|
### Step 4: Consolidate Constraints
|
||||||
|
|
||||||
|
Find a root requirement that asks for constraints to be defined. Add `satisfiedBy` relations to all constraint elements.
|
||||||
|
|
||||||
|
### Step 5: Validate After Each Change
|
||||||
|
|
||||||
|
Always run `reqvire validate` after making changes to ensure model consistency.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Workflow: Adding New Features & Requirements
|
||||||
|
|
||||||
|
### Step 1: Understand the Feature Scope
|
||||||
|
|
||||||
|
- What stakeholder need does this address? (user-requirement)
|
||||||
|
- What technical capabilities are needed? (system-requirement)
|
||||||
|
- Are there constraints or limits to define?
|
||||||
|
|
||||||
|
### Step 2: Create Requirements Hierarchy
|
||||||
|
|
||||||
|
```
|
||||||
|
User Requirement (stakeholder need)
|
||||||
|
↓ derivedFrom
|
||||||
|
System Requirement(s) (technical implementation)
|
||||||
|
```
|
||||||
|
|
||||||
|
- Start with user-requirement for the stakeholder need
|
||||||
|
- Derive system-requirements for technical details
|
||||||
|
- Keep requirements atomic and testable
|
||||||
|
|
||||||
|
### Step 3: Add Refinements (if needed)
|
||||||
|
|
||||||
|
- **Specifications** - If detailed definitions are needed and will be referenced by multiple requirements
|
||||||
|
- **Constraints** - If there are limits/boundaries (add to Constraints.md)
|
||||||
|
- **Behaviors** - If complex state/flow logic needs documentation
|
||||||
|
|
||||||
|
Link via `satisfiedBy` from the requirement that asks for the refinement.
|
||||||
|
|
||||||
|
### Step 4: Add Verifications
|
||||||
|
|
||||||
|
- Add verification elements for **leaf requirements only**
|
||||||
|
- Choose appropriate verification type (test, analysis, inspection, demonstration)
|
||||||
|
- Parent requirements inherit verification from children
|
||||||
|
|
||||||
|
### Step 5: Validate and Check Coverage
|
||||||
|
|
||||||
|
```bash
|
||||||
|
reqvire validate # Check model consistency
|
||||||
|
reqvire coverage # Check verification coverage
|
||||||
|
reqvire lint --fix # Fix any issues
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Before (Attachment):
|
||||||
|
```markdown
|
||||||
|
### API Authorization Specification
|
||||||
|
|
||||||
|
The system shall implement API Access Authorization using the roles, authorization areas, and grant types required to enforce access control across the system following clearly defined specifications.
|
||||||
|
|
||||||
|
#### Metadata
|
||||||
|
* type: user-requirement
|
||||||
|
|
||||||
|
#### Attachments
|
||||||
|
* [Authorization System Specification](../Specifications/AuthSpecifications.md#authorization-system-specification)
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (satisfiedBy):
|
||||||
|
```markdown
|
||||||
|
### API Authorization Specification
|
||||||
|
|
||||||
|
The system shall implement API Access Authorization using the roles, authorization areas, and grant types required to enforce access control across the system following clearly defined specifications.
|
||||||
|
|
||||||
|
#### Metadata
|
||||||
|
* type: user-requirement
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* satisfiedBy: [Authorization System Specification](../Specifications/AuthSpecifications.md#authorization-system-specification)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Constraint Consolidation Example:
|
||||||
|
|
||||||
|
Root requirement:
|
||||||
|
```markdown
|
||||||
|
### Operational Constraints and System Efficiency
|
||||||
|
|
||||||
|
The system shall implement **operational constraints and rate limits** to optimize resource usage.
|
||||||
|
|
||||||
|
#### Metadata
|
||||||
|
* type: user-requirement
|
||||||
|
|
||||||
|
#### Relations
|
||||||
|
* satisfiedBy: [User Authentication Rate Limits](../Specifications/Constraints.md#user-authentication-rate-limits)
|
||||||
|
* satisfiedBy: [API Pagination Limits](../Specifications/Constraints.md#api-pagination-limits)
|
||||||
|
* satisfiedBy: [Environment Limits](../Specifications/Constraints.md#environment-limits)
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Referencing requirement (keeps attachment):
|
||||||
|
```markdown
|
||||||
|
### Add IP to Whitelist
|
||||||
|
|
||||||
|
The system shall allow adding IPs to whitelist.
|
||||||
|
|
||||||
|
#### Attachments
|
||||||
|
* [Environment Limits](../Specifications/Constraints.md#environment-limits)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reading Attachments and Images
|
||||||
|
|
||||||
|
**IMPORTANT**: When understanding or analyzing requirements, always check if there are **attachments** (documents, diagrams, images) associated with requirements. Attachments are considered part of the requirement content and must be read to fully understand the requirement.
|
||||||
|
|
||||||
|
- **Read document attachments** (PDFs, referenced files) when they are linked in requirements
|
||||||
|
- **View images and diagrams** that are embedded or referenced in requirements
|
||||||
|
- Attachments may contain critical details like interface specifications, data formats, or visual designs
|
||||||
|
|
||||||
|
## Document Structure
|
||||||
|
|
||||||
|
**File Header**:
|
||||||
|
- All specification files must begin with `# Elements` as the first level-1 heading
|
||||||
|
- Files without this header can be used as attachment documents
|
||||||
|
|
||||||
|
**Elements** (`###` headers):
|
||||||
|
- Must have unique names within each file
|
||||||
|
- Element names become URL fragments (lowercase, hyphens)
|
||||||
|
- All content until next `###` or higher belongs to the element
|
||||||
|
|
||||||
|
**Reserved Subsections** (`####`):
|
||||||
|
- **Metadata**: Element type and custom properties
|
||||||
|
- **Relations**: Relationships between elements (NOT allowed for Refinement types)
|
||||||
|
- **Details**: Refinement details (use for EARS statements to group several requirements under same element)
|
||||||
|
- **Attachments**: References to files or Refinement elements (NOT allowed for Refinement types)
|
||||||
|
|
||||||
|
**Freestyle Subsections** (`####`):
|
||||||
|
- Any other `####` subsection is considered part of requirement content
|
||||||
|
- **Behaviors**: Put behavior definition here if other requirements do not depend on it
|
||||||
|
- **Specifications**: Put specification definition here if other requirements do not depend on it
|
||||||
|
|
||||||
|
**Relations syntax** (two-space indentation):
|
||||||
|
```markdown
|
||||||
|
#### Relations
|
||||||
|
* derivedFrom: [Parent](path.md#parent)
|
||||||
|
* verifiedBy: [Verification](path.md#verification)
|
||||||
|
* satisfiedBy: path/to/implementation
|
||||||
|
* verify: [Requirement](path.md#requirement)
|
||||||
|
```
|
||||||
|
|
||||||
|
## EARS Patterns for Requirement Statements
|
||||||
|
|
||||||
|
Use for requirement statements:
|
||||||
|
- **Ubiquitous**: "The system shall [capability]"
|
||||||
|
- **Event-driven**: "When [trigger] the system shall [response]"
|
||||||
|
- **State-driven**: "While [state] the system shall [capability]"
|
||||||
|
- **Unwanted**: "If [condition] then the system shall [response]"
|
||||||
|
- **Optional**: "Where [feature] the system shall [capability]"
|
||||||
|
|
||||||
|
## Verification Strategy
|
||||||
|
|
||||||
|
**Bottom Roll-Up Verification**:
|
||||||
|
- Verify **leaf requirements** (requirements with no derived children)
|
||||||
|
- **Parent requirements** inherit verification from their children
|
||||||
|
- High-level requirements are rarely verified directly
|
||||||
|
- Use `reqvire traces` to see verification roll-up structure
|
||||||
|
|
||||||
|
**Focus on leaf requirements:**
|
||||||
|
- Leaf requirements (no derived children) need direct verification
|
||||||
|
- Parent requirements inherit verification from children
|
||||||
|
- Avoid redundant verify relations (verifying both leaf and parent)
|
||||||
|
- Use `reqvire lint --fix` to remove redundancies
|
||||||
|
|
||||||
|
## Refinement Best Practices
|
||||||
|
|
||||||
|
- **Constraints** should always be specified in constraint element type
|
||||||
|
- Best practice is to group constraints into single file (e.g., `Constraints.md` in requirements root)
|
||||||
|
- Define **Behaviors** and **Specifications** as elements only if other requirements depend on them
|
||||||
|
- Otherwise define them under `#### Behaviors` or `#### Specifications` subsection of the requirement
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
### Search and Filtering
|
||||||
|
```bash
|
||||||
|
reqvire search [--json] [--short] [--filter-*]
|
||||||
|
# Use --short when analyzing model structure without needing full content
|
||||||
|
```
|
||||||
|
|
||||||
|
### Element Manipulation
|
||||||
|
```bash
|
||||||
|
reqvire add <file> [<index>] # Add element (pipe content via stdin)
|
||||||
|
reqvire rm "<element-name>" # Remove element
|
||||||
|
reqvire mv "<element-name>" "<target-file>" [<index>] # Move element
|
||||||
|
reqvire mv-file "<source>" "<target>" # Move file with elements
|
||||||
|
reqvire mv-file --squash "<source>" "<target>" # Merge into existing file
|
||||||
|
reqvire rename "<current-name>" "<new-name>" # Rename element
|
||||||
|
reqvire mv-attachment "<old-path>" "<new-path>" # Move/rename attachment files
|
||||||
|
```
|
||||||
|
|
||||||
|
### Validation and Analysis
|
||||||
|
```bash
|
||||||
|
reqvire validate [--json] # Validate model consistency
|
||||||
|
reqvire coverage [--json] # Check verification coverage
|
||||||
|
reqvire traces [--json] [--filter-*] # Show traceability
|
||||||
|
reqvire lint [--fix] [--json] # Find/fix model issues
|
||||||
|
reqvire change-impact --git-commit=<hash> [--json] # Analyze changes
|
||||||
|
```
|
||||||
|
|
||||||
|
### Common Filter Options
|
||||||
|
- `--filter-file="path/pattern"` - Filter by file glob
|
||||||
|
- `--filter-name="regex"` - Filter by element name
|
||||||
|
- `--filter-id="full-id"` - Filter by exact identifier
|
||||||
|
- `--filter-type="requirement"` - Filter by element type
|
||||||
|
- `--filter-is-not-verified` - Only unverified requirements
|
||||||
|
- `--have-relations="verifiedBy,satisfiedBy"` - Elements with these relations
|
||||||
|
- `--not-have-relations="verifiedBy"` - Elements without these relations
|
||||||
|
|
||||||
|
## Git Philosophy
|
||||||
|
|
||||||
|
**IMPORTANT**: When removing or changing requirements:
|
||||||
|
- **DELETE** deprecated requirements completely
|
||||||
|
- **REMOVE** broken relations
|
||||||
|
- **USE** git history to track changes (commit messages explain rationale)
|
||||||
|
- **NEVER** keep "DEPRECATED" notes or "Previous behavior" documentation
|
||||||
|
- Clean specifications are more valuable than inline deprecation notes
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
1. Always run commands from the git root folder
|
||||||
|
2. Use full paths starting with `requirements/`
|
||||||
|
3. After `mv-attachment`, verify all references were updated (may need manual fixes)
|
||||||
|
4. Never guess - read files before making changes
|
||||||
|
5. Validate after each significant change
|
||||||
|
6. Use `reqvire search --short --json` to explore model structure efficiently
|
||||||
136
skills/task-master/SKILL.md
Normal file
136
skills/task-master/SKILL.md
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
---
|
||||||
|
name: task-master
|
||||||
|
description: Expert at analyzing requirement changes, understanding what changed in specifications, and creating actionable implementation plans. Use when you need to understand what requirements changed, generate task lists from change-impact analysis, or plan implementation work with traceability.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Task Master Skill
|
||||||
|
|
||||||
|
You are the Task Master - an expert at analyzing requirement changes and creating actionable, trackable implementation plans. You bridge the gap between requirements and implementation by generating comprehensive task lists that developers can follow step-by-step.
|
||||||
|
|
||||||
|
## Your Mission
|
||||||
|
|
||||||
|
Transform requirement changes into **explicit, trackable task plans** using the `/generate-tasks` command.
|
||||||
|
|
||||||
|
## Core Workflow
|
||||||
|
|
||||||
|
Simply delegate to the `/generate-tasks` command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/generate-tasks
|
||||||
|
```
|
||||||
|
|
||||||
|
This command will:
|
||||||
|
1. Detect base branch automatically
|
||||||
|
2. Run change-impact analysis
|
||||||
|
3. Analyze each changed requirement
|
||||||
|
4. Trace verification chains
|
||||||
|
5. Generate git blob links
|
||||||
|
6. Create TodoWrite task plan
|
||||||
|
|
||||||
|
## Your Role
|
||||||
|
|
||||||
|
You orchestrate the task generation process and provide context to help developers understand the work ahead.
|
||||||
|
|
||||||
|
**When user asks for implementation plan:**
|
||||||
|
→ Use `/generate-tasks` command
|
||||||
|
|
||||||
|
**When user needs to understand what changed:**
|
||||||
|
→ Use `/analyze-impact` command first, then `/generate-tasks`
|
||||||
|
|
||||||
|
**When user has questions about specific requirements:**
|
||||||
|
→ Provide guidance using your knowledge below
|
||||||
|
|
||||||
|
## Model Exploration for Task Generation
|
||||||
|
|
||||||
|
**CRITICAL: Use reqvire commands to understand requirements - DO NOT read specification files directly!**
|
||||||
|
|
||||||
|
When analyzing requirements for task generation:
|
||||||
|
|
||||||
|
| To Understand This | Use This Command |
|
||||||
|
|--------------------|------------------|
|
||||||
|
| What requirements changed | `reqvire change-impact --git-commit=<hash> --json` |
|
||||||
|
| Requirement full content | `reqvire search --filter-id="<id>" --json` |
|
||||||
|
| What verifies a requirement | `reqvire traces --filter-id="<id>" --json` |
|
||||||
|
| Which tests to run | Extract `satisfiedBy` from verification via `reqvire search` |
|
||||||
|
| Implementation status | Check `satisfiedBy` relations in requirement |
|
||||||
|
| Requirement hierarchy | `reqvire traces --filter-id="<id>"` shows derivedFrom chain |
|
||||||
|
|
||||||
|
**Why use commands instead of reading files:**
|
||||||
|
- Automatic relation following
|
||||||
|
- Structured JSON output for parsing
|
||||||
|
- Already validated and parsed
|
||||||
|
- Includes computed fields (verification status, etc.)
|
||||||
|
- Much more efficient than manual file reading
|
||||||
|
|
||||||
|
## Task Plan Principles
|
||||||
|
|
||||||
|
- **Traceability First**: Every task maintains requirement → implementation → test links
|
||||||
|
- **Repository-Agnostic**: No assumptions about codebase unless specified in requirements
|
||||||
|
- **Explicit Tasks**: One requirement = One top-level task with all sub-steps
|
||||||
|
- **Test-Driven**: Always include tests in implementation workflow
|
||||||
|
- **Read Requirements**: Summaries are context only - full requirements are mandatory reading
|
||||||
|
- **Track Progress**: TodoWrite format enables real-time progress tracking
|
||||||
|
- **Use Commands**: Always query model via reqvire commands, not file reading
|
||||||
|
|
||||||
|
## Task Structure
|
||||||
|
|
||||||
|
**For new requirements:**
|
||||||
|
```
|
||||||
|
☐ Implement "{Requirement Name}" ({REQ-ID})
|
||||||
|
Summary: [Brief 1-2 sentence summary]
|
||||||
|
⚠️ IMPORTANT: Read full requirement - this is only a summary!
|
||||||
|
|
||||||
|
☐ Review full requirement: [link to blob]
|
||||||
|
☐ Implement: [high-level steps from requirement]
|
||||||
|
☐ Run tests to verify implementation
|
||||||
|
☐ Add satisfiedBy relation to {REQ-ID}
|
||||||
|
☐ Validate model: reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
**For modified requirements:**
|
||||||
|
```
|
||||||
|
☐ Update "{Requirement Name}" ({REQ-ID})
|
||||||
|
Summary: [Brief description of what changed]
|
||||||
|
⚠️ IMPORTANT: Read full requirement - this is only a summary!
|
||||||
|
|
||||||
|
☐ Review requirement changes: [link to blob]
|
||||||
|
☐ Review affected code: [satisfiedBy paths]
|
||||||
|
☐ Update implementation
|
||||||
|
☐ Run tests to verify implementation
|
||||||
|
☐ Validate model: reqvire validate
|
||||||
|
```
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
- **Always read requirements**: Summaries are NOT sufficient for implementation
|
||||||
|
- **Run tests**: Verify implementation before marking tasks complete
|
||||||
|
- **Maintain traceability**: Always add/update satisfiedBy relations
|
||||||
|
- **One requirement = One task**: Don't combine multiple requirements
|
||||||
|
- **Explicit tests**: List every test file that needs to run
|
||||||
|
- **Repository-agnostic**: Don't assume technology stack unless in requirements
|
||||||
|
- **Link to source**: Every requirement needs a blob link
|
||||||
|
- **Track progress**: Use TodoWrite checkboxes throughout implementation
|
||||||
|
|
||||||
|
## Integration with Other Skills
|
||||||
|
|
||||||
|
After creating the task plan:
|
||||||
|
- **For implementation questions**: Hand off to developer or general development
|
||||||
|
- **For requirement clarification**: Use `/syseng` skill
|
||||||
|
- **For test implementation**: Follow test patterns in tests folder
|
||||||
|
- **For verification**: Developer runs tests and validates
|
||||||
|
|
||||||
|
## Example Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
User: "What requirements changed and what do I need to implement?"
|
||||||
|
You: "I'll analyze the requirement changes and generate an implementation plan"
|
||||||
|
→ Invoke /generate-tasks command
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
User: "Generate tasks for the authentication-feature branch"
|
||||||
|
You: "I'll create a task breakdown for the authentication feature"
|
||||||
|
→ Invoke /generate-tasks command
|
||||||
|
```
|
||||||
|
|
||||||
|
Always delegate to `/generate-tasks` for task plan generation and provide context and guidance for interpreting the plans.
|
||||||
Reference in New Issue
Block a user