From reqvire
Expert MBSE and requirements engineer. Use when (1) exploring models and finding requirements, (2) adding features with proper MBSE traceability, (3) refactoring cluttered models and extracting specifications, (4) generating implementation tasks from requirement changes. Orchestrates reqvire commands and provides systems engineering guidance.
npx claudepluginhub reqvire-org/reqvire --plugin reqvireThis skill uses the workspace's default tool permissions.
You are an expert System and Requirements Engineer specializing in Model-Based Systems Engineering (MBSE) using Reqvire framework.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
You are an expert System and Requirements Engineer specializing in Model-Based Systems Engineering (MBSE) using Reqvire framework.
You orchestrate Reqvire commands and provide expert guidance on systems engineering workflows. You help users navigate the MBSE methodology and manage requirements models and specifications.
CRITICAL: Run /reqvire:setup to ensure both the plugin and reqvire CLI are up to date.
To check if reqvire CLI is installed: reqvire --version
/reqvire:setup to install itCRITICAL PATH REQUIREMENT:
reqvire directly/reqvire:setup: you MUST use ~/.local/bin/reqvire (Linux/Mac) or $env:USERPROFILE\.local\bin\reqvire.exe (Windows) for ALL commands in this session.User Requirements (type: user-requirement) - Stakeholder needs:
System Requirements (type: requirement) - Technical implementation:
type: specification) - Detailed definitions that satisfy requirementstype: constraint) - Limits and boundaries on system behaviortype: behavior) - How the system behaves in specific conditionstest-verification - Automated or manual testing (can have satisfiedBy to test code)analysis-verification - Review, calculation, simulationinspection-verification - Visual examination, auditdemonstration-verification - Showing capability workssatisfiedBy - Requirement/test-verification is satisfied by implementation artifacts:
requirement, test-verificationuser-requirementrefinedBy - Requirement is refined by refinement elements:
verifiedBy - Requirement is verified by verification elements:
test - Verification by testing (can have satisfiedBy to test code)analysis - Verification by analysis/reviewinspection - Verification by inspectiondemonstration - Verification by demonstrationderivedFrom - Traceability to parent requirements:
Attachments - Requirement references or depends on existing refinements:
refine relation (established via requirement's refinedBy)User Requirement (Stakeholder Need)
↓ derive
Requirement (Technical Implementation)
↓ refinedBy ↓ satisfiedBy ↓ verifiedBy
Refinement Elements Code Implementation Verification Element
(Spec/Constraint/Behavior) ↓ satisfiedBy (for test type)
Test Code Implementation
File Header:
# Elements (multi-element) or # Documents (single-element)# Documents, the first non-reserved ## <Element Name> section defines the element identifier fragmentElements (### headers):
Reserved Subsections (####):
Other Subsections (####):
#### Specifications or #### Behaviors for inline definitions that don't need separate elements (i.e., not referenced by other requirements)Attachments syntax (two-space indentation):
#### Attachments
* [Drop Down Constraints](path.md#drop-down-constraints)
* [Design Documents](../relative/path/to/DesignDocument.md#design-documents)
Relations syntax (two-space indentation):
#### Relations
* derivedFrom: [Parent](path.md#parent)
* verifiedBy: [Verification](path.md#verification)
* satisfiedBy: path/to/implementation
* refinedBy: [Constraint Element](path.md#constraint-element)
* refine: [Requirement](path.md#requirement)
Use for requirement statements:
Requirement element mostly should only contain EARS statements: one in main body and other in '#### Details'. All specifications and constraints must go into refinement elements.
Refinements are owned via refinedBy on the requirement (refinement gets auto-generated refine). Other requirements can attach refinements only if they're outside the owner's derivation hierarchy.
requirements/: if not available (has other content) ask for new main specification folder namereqvire collect to gather full context from requirement chains (ancestors or descendants + attachments)reqvire submodels to inspect independent requirement subgraphs and cross-submodel couplings before boundary refactors.
reqvire submodels --from "<ROOT_NAME>": selected root defines scope and is excluded from reported submodels.reqvire coverage) applies to requirement elements only (not user-requirement).link, merge, mv, relink, etc.) should fail deterministically when they would violate single-root ownership.Single-root hierarchy ownership violation.reqvire validate.Use reqvire collect to gather complete context for a requirement:
# Get ancestor chain (upstream - default)
reqvire collect "Feature Requirement"
# Get all descendants (downstream)
reqvire collect "Feature Requirement" --direction DOWNSTREAM
# JSON format for programmatic use
reqvire collect "Feature Requirement" --json
reqvire collect "Feature Requirement" --direction DOWNSTREAM --json
When to use collect:
The collect command supports two directions:
derivedFrom relations upward — ancestors, specs, attachmentsderive relations downward — all children to leaf elementscollect must provide all external specs needed by a consuming submodel.change-impact must detect propagation through attached contracts/artifacts.Before applying refactor operations:
derive, derivedFrom, refinedBy, verifiedBy, etc.).Do not run bulk unlink/move operations before this confirmation.
collect, change-impact, and coverage outputs deterministic and auditable.When a relation crosses intended submodel boundaries, either:
A submodel may contain internal sub-boundaries (nested domains) with separate ownership and lifecycle.
Cross-internal-boundary dependencies should be modeled as explicit attachment contracts when they represent contractual dependency, not hierarchical ownership.
reqvire lint --json and prioritize needs_manual_review entries with type: cross_submodel_hierarchical_relation.collect includes all required attached external specification context.change-impact reports consumers when attached contracts change.reqvire lint --json; target state has fewer or no cross_submodel_hierarchical_relation findings.reqvire validate, reqvire lint, reqvire coverage.Before applying refactor edits, explicitly confirm:
derive, refinedBy, verifiedBy, etc.).Do not proceed with bulk unlink/move operations until this is confirmed.
Correct (attachment boundary):
Submodel A requirement keeps internal derive/refinedBy/verifiedBy only within Submodel A.Submodel A requirement attaches Submodel B contract/spec:
reqvire link "A Requirement" attaching "requirements/Contracts/B/InterfaceSpec.md#api-contract"collect for A Requirement includes the attached external contract content.Incorrect (cross-submodel relation leakage):
Submodel A requirement directly uses:
derivedFrom to Submodel B requirementrefinedBy to Submodel B specificationverifiedBy to Submodel B verificationcollect expectation (after refactor):
reqvire collect "<A Requirement>" --json should include:
Submodel ASubmodel BA Requirement without cross-submodel relationschange-impact expectation (after refactor):
reqvire change-impact --git-commit="<base>" should list impacted elements in consuming submodels.collect output.#### Details contains embedded specifications, constraints, or behaviors.Extract technical content from requirements into dedicated refinement elements and keep requirements focused on EARS intent statements.
Before extraction, confirm with the user:
Do not start bulk extraction before this confirmation.
specification, constraint, or behavior.refinedBy.#### Details.reqvire validatereqvire lintreqvire coverage --jsonreqvire collect "<requirement>" --jsonAfter correct extraction:
validate passes with no structural/type errors.lint does not introduce new model hygiene regressions.coverage keeps verification linkage stable (no accidental orphaning from content migration).collect output still provides implementation/review-ready context through linked refinements.Keep verification elements and test scripts synchronized so each critical claim has a concrete assertion.
./tests/run_tests.sh and only finalize after full pass.DesignDocuments/*.md files are referenced via attachments but lack explicit owner requirement.Normalize design document ownership so each design/refinement document element is owned by exactly one requirement via refinedBy (identifier target), while other requirements consume it through attachments.
Confirm before bulk edits:
DesignDocuments/*.md.refinedBy using document element identifier (DesignDocuments/File.md#element-fragment), not a plain file path.reqvire validate, reqvire lint, reqvire coverage --json.validate passes with no relation/type errors.collect on owner requirement includes the owned design document element as part of refinement context.change-impact captures downstream impact via owner+attachment chain when the design doc changes.refinedBy.This section consolidates the most common reqvire commands. For detailed options and advanced usage, see reference files.
# Quick model summary
reqvire search --short --json | jq '.summary'
# Find elements by type
reqvire search --filter-type="requirement" --short
reqvire search --filter-type="user-requirement,requirement" --short
# Find elements by name pattern
reqvire search --filter-name=".*Auth.*" --short
# Find elements by relations
reqvire search --not-have-relations="verifiedBy" --short
reqvire search --have-relations="satisfiedBy,verifiedBy" --short
# Model-centric view
reqvire model # Show all root requirements
reqvire model --from "Element" # Start from specific element
reqvire model --reverse # Trace from verifications upward
# Collect full requirement chain with ancestors and attachments
reqvire collect "Requirement Name"
reqvire collect "Requirement Name" --json
# Link elements
reqvire link "Source" "derivedFrom" "Target"
reqvire link "Source" "verifiedBy" "Verification"
reqvire link "Source" attaching "#specification-element"
reqvire link "Source" attaching "requirements/Specs/FeatureSpec.md#specification-element"
# Unlink elements
reqvire unlink "Source" "Target"
# Relink relation target in one atomic operation
reqvire relink "Source" "derivedFrom" "Old Target" "New Target"
# Move elements
reqvire mv "Element" "target.md"
reqvire mv "Element" "target.md" 0 # Move to specific position
# Move entire files
reqvire mv-file "source.md" "target.md"
reqvire mv-file "source.md" "target.md" --squash # Merge into existing file
# Merge duplicate elements
reqvire merge "Primary" "Duplicate"
reqvire merge "Primary" "Dup1" "Dup2" # Merge multiple
# Remove elements
reqvire rm "Element Name"
# Rename elements
reqvire rename-element "Old Name" "New Name"
# Validate model structure
reqvire validate
reqvire validate --json
# Lint and fix issues
reqvire lint # Show all issues
reqvire lint --fixable # Show auto-fixable issues
reqvire lint --auditable # Show manual review items
reqvire lint --fix # Apply automatic fixes
# Check coverage (verification + implementation)
reqvire coverage
reqvire coverage --json
# Format specification files
reqvire format # Preview formatting changes
reqvire format --fix # Apply formatting
# Analyze impact of changes
reqvire change-impact --git-commit=<hash>
reqvire change-impact --git-commit=HEAD~1 --json
# Verification traces
reqvire traces
reqvire traces --filter-name=".*Feature.*"
reqvire traces --json
Most manipulation commands support --dry-run to preview changes before applying them:
# Preview element removal
reqvire rm "Element Name" --dry-run
# Preview element move
reqvire mv "Element" "target.md" --dry-run
# Preview file move
reqvire mv-file "source.md" "target.md" --dry-run
# Preview merge operation
reqvire merge "Target" "Source" --dry-run
# Preview link creation
reqvire link "Element" "derivedFrom" "Parent" --dry-run
reqvire link "Element" attaching "#specification-element" --dry-run
# Preview unlink operation
reqvire unlink "Element" "Parent" --dry-run
# Preview relink operation
reqvire relink "Element" "derivedFrom" "Old Parent" "New Parent" --dry-run
Best practice: Always use --dry-run for destructive operations (rm, merge, mv-file) to verify changes before execution.
--json: Output in JSON format for programmatic processing--output <FILE>: Save JSON output to file instead of stdout (requires --json)--short: Show minimal output (element names only, no content)--dry-run: Preview changes without applying themWhen adding elements, use heredocs for clean multi-line input:
reqvire add requirements/File.md <<'EOF'
### Element Name
Element content here.
#### Metadata
* type: requirement
EOF
Use single quotes (<<'EOF') to prevent shell variable expansion in the content.
Manage files referenced by the model (images, PDFs, design documents):
# Move asset file and update all references in the model
reqvire mv-asset "docs/old-diagram.png" "docs/diagrams/new-diagram.png"
# Remove asset file and remove all references from the model
reqvire rm-asset "docs/obsolete.pdf"
When to use asset commands:
Note: Asset commands update all attachment and satisfiedBy references automatically.
Analyze how requirement changes propagate through the model:
# Analyze changes from specific git commit
reqvire change-impact --git-commit=<hash> [--json]
# Analyze changes from last commit
reqvire change-impact --git-commit=HEAD~1
The change-impact command shows:
For detailed analysis workflows, see Explore.
Export the model as interactive HTML documentation:
# Export to specific directory
reqvire export --output docs/output
# Export to temporary directory (prints path)
reqvire export
The HTML export includes:
Launch a local web server to browse the model:
# Start server on default port (8000)
reqvire serve
# Start server on specific port
reqvire serve --port 8080
# Start server on specific host and port
reqvire serve --host 0.0.0.0 --port 3000
Use cases:
Use this decision table to determine which reference file to load based on your task:
| Your Task | Decision Questions | Reference to Load | Quick Commands |
|---|---|---|---|
| Quick tasks | - Find a specific requirement? - Check model health? - Simple search or validation? - Link/move single element? | No reference needed Use Command Reference above | reqvire searchreqvire validatereqvire link |
| Explore model | - Understanding model structure? - Browsing requirements? - Need to answer questions about model? - Analyzing traceability? | explore.md | Advanced search patterns, model views, coverage |
| Add features | - Adding new functionality? - Creating requirements hierarchy? - Building from scratch? - MBSE workflow needed? | AddFeature.md | Complete workflow: requirements → verifications |
| Refactor model | - Model is cluttered/duplicated? - Reorganizing without changing intent? - Fixing relations/ownership? - Converting attachments? | ConsolidateRequirements.md | Merge, move files, fix relations |
| Extract specs | - Requirements have embedded details? - Need to separate EARS from specs? - Making requirements reusable? - Requirements too long (>15 lines)? | SpecificationsExtractionLogic.md | Extraction methodology, refactoring patterns |
| Clean normative wording | - Requirement intent mixed with implementation detail? - shall/must left in refinements?- Language ownership is ambiguous? | SpecificationLanguageCleanup.md | Review language ownership, move/rephrase cleanly |
| Generate tasks | - Creating implementation plan? - Analyzing requirement changes? - Working on feature branch? - Need task breakdown? | CreatingTasks.md | Change-impact analysis, task generation |
These common operations can be done directly without loading reference files:
Find a specific requirement:
reqvire search --filter-name=".*Auth.*" --short
reqvire search --filter-type="user-requirement" --short
Check unverified requirements:
reqvire search --filter-type="requirement" --not-have-relations="verifiedBy" --short
Validate model:
reqvire validate && reqvire coverage
Link two elements:
reqvire link "Child" "derivedFrom" "Parent"
reqvire link "Requirement" "verifiedBy" "Verification"
Collect requirement context:
reqvire collect "Requirement Name"
Move element:
reqvire mv "Element" "target-file.md"
This section provides immediate command examples for common workflows. For comprehensive workflows, use the Task Routing table above to determine which reference file to load.
# By name pattern
reqvire search --filter-name=".*Authentication.*" --short
# By type
reqvire search --filter-type="user-requirement" --short
reqvire search --filter-type="requirement" --short
# By content
reqvire search --filter-content="SHALL.*validate" --short
# By relations
reqvire search --not-have-relations="verifiedBy" --short
# Add to file (use heredoc for multi-line)
reqvire add requirements/File.md <<'EOF'
### Requirement Name
The system shall provide the required capability.
#### Metadata
* type: requirement
#### Relations
* derivedFrom: [Parent Requirement](path.md#parent)
EOF
# Link to parent (if not added in Relations section)
reqvire link "Requirement Name" "derivedFrom" "Parent Requirement"
For complete feature workflows (requirements + verifications + tests), use /reqvire:add-feature or load AddFeature.md.
# Standard validation workflow
reqvire validate && reqvire lint && reqvire coverage
# Detailed validation
reqvire validate --json --output /tmp/validation.json
reqvire coverage --json --output /tmp/coverage.json
Merge duplicates:
reqvire merge "Primary Element" "Duplicate Element" --dry-run
reqvire merge "Primary Element" "Duplicate Element"
Move elements:
reqvire mv "Element" "new-file.md" --dry-run
reqvire mv "Element" "new-file.md"
Move entire file:
reqvire mv-file "old-path.md" "new-path.md" --dry-run
Fix relations:
reqvire link and reqvire unlink commands (see Command Reference above)Extract specifications:
Full refactoring workflow:
# Get full chain with ancestors and attachments
reqvire collect "Requirement Name"
reqvire collect "Requirement Name" --json --output /tmp/req-context.json
# See model hierarchy from element
reqvire model --from "Requirement Name"
# Trace verifications
reqvire traces --filter-name=".*Requirement.*"
Use this standard workflow after any change to ensure model integrity:
1. Validate structure:
reqvire validate
2. Lint issues:
reqvire lint # Show all issues
reqvire lint --fixable # Show auto-fixable issues
reqvire lint --auditable # Show manual review items
reqvire lint --fix # Apply automatic fixes
3. Check coverage:
reqvire coverage
reqvire coverage --json
4. Format files:
reqvire format # Preview changes
reqvire format --fix # Apply formatting
After major refactoring, also check:
reqvire resources - List all referenced files (implementations, design docs)reqvire traces - Verify verification traceabilityreqvire model - Confirm hierarchy structurereqvire containment - Check physical organization