name: speckit-sync-conflicts description: Detect and surface conflicts between specs or between specs and design docs compatibility: Requires spec-kit project structure with .specify/ directory metadata: author: github-spec-kit source: sync:commands/conflicts.md
Spec Sync: Detect Conflicts
Find contradictions between specs, or between specs and design documents. Surface them for human resolution.
User Input
$ARGUMENTS
Context
Read all spec files and design documents:
specs/*/spec.mddocs/plans/*.mdordocs/design/*.md- Any files with "design" or "plan" in the name
Steps
1. Extract Requirements from All Sources
For each spec, extract:
- All FR-* requirements with full text
- All SC-* success criteria
- Key constraints and assumptions
- Out of scope items
For design docs, extract:
- Design decisions
- Constraints
- Behavioral specifications
- Any "MUST", "SHALL", "SHOULD" statements
2. Build Requirement Index
Create a semantic index of all requirements, keyed by:
- Feature area (extraction, routing, register, etc.)
- Entity type (document, transaction, row, etc.)
- Behavior type (create, update, validate, etc.)
3. Detect Direct Conflicts
Look for contradictions:
Type 1: Same Feature, Different Behavior
- Spec A says "one row per document"
- Spec B says "split transactions produce multiple rows"
- Conflict: Row cardinality
Type 2: Obsolete Constraints
- Spec A says "5 extraction fields: Date, Vendor, Total, Tax, Currency"
- Design doc says "type-aware fields, 4-8 per document type"
- Conflict: Field count and composition
Type 3: Scope Overlap
- Spec A includes feature X
- Spec B also includes feature X
- Conflict: Unclear ownership
Type 4: Implicit Conflicts
- Spec A assumes auth is always valid
- Spec B adds offline mode
- Conflict: Assumption violated
4. Determine Resolution Path
For each conflict:
SUPERSEDE: Newer document replaces older
- Check dates, version numbers
- Design docs often supersede original specs
- Later specs refine earlier specs
MERGE: Combine into single authoritative source
- When both have valid parts
- Create unified spec
DEPRECATE: Mark older as obsolete
- When requirement is no longer relevant
- Document why it was removed
HUMAN_REQUIRED: Can't determine automatically
- Architectural decisions
- Trade-offs involved
- Missing context
5. Generate Conflict Report
# Spec Conflict Report
Generated: [timestamp]
## Summary
| Conflict Type | Count |
|---------------|-------|
| Same Feature, Different Behavior | X |
| Obsolete Constraints | X |
| Scope Overlap | X |
| Implicit Conflicts | X |
## Conflicts
### Conflict 1: Extraction Field Count
**Sources**:
- `specs/008-field-extraction/spec.md` (FR-003)
- `docs/plans/2026-02-19-type-aware-extraction-design.md`
**Description**:
Spec 008 defines 5 fixed extraction fields for all document types.
Design doc introduces type-aware extraction with 4-8 fields per type.
**Evidence**:
From spec-008:
> FR-003: System MUST extract the following fields: Date, Vendor, Total, Tax, Currency
From design doc:
> Document Types & Extraction Fields
> ### Receipt
> Fields: Date, Vendor, Total, Tax, Currency, Category
> ### Bill
> Fields: Date, Vendor, Description, Total, Due Date, Currency, Category
**Suggested Resolution**: SUPERSEDE
The design doc (dated 2026-02-19) supersedes spec-008 for extraction fields.
Recommend updating spec-008 to reference the design doc or incorporating
the type-aware fields directly.
**Action Required**:
- [ ] Mark spec-008/FR-003 as superseded by design doc
- [ ] Update spec-008 with type-aware field definitions
- [ ] Or create new spec-013 for type-aware extraction
---
### Conflict 2: Register Row Cardinality
[... additional conflicts ...]
## Resolution Tracking
Track resolution decisions:
| Conflict | Resolution | Decided By | Date |
|----------|------------|------------|------|
| Conflict 1 | SUPERSEDE | pending | - |
## Recommendations
1. Schedule a 30-min review session to resolve conflicts
2. Consider consolidating specs 008 and design doc
3. Add explicit "supersedes" metadata to specs
6. Save Report
Write to:
.specify/sync/conflicts.md.specify/sync/conflicts.json
Conflict Resolution Commands
After reviewing conflicts, mark resolutions:
/speckit.sync.conflicts resolve 1 --supersede docs/plans/2026-02-19-type-aware-extraction-design.md
/speckit.sync.conflicts resolve 2 --merge spec-011
Example Usage
/speckit.sync.conflicts
/speckit.sync.conflicts --include-design-docs
/speckit.sync.conflicts --spec 008