.claude/skills/speckit-sync-conflicts/SKILL.md
Detect and surface conflicts between specs or between specs and design docs
npx skillsauth add pradeepmouli/lspeasy speckit-sync-conflictsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Find contradictions between specs, or between specs and design documents. Surface them for human resolution.
$ARGUMENTS
Read all spec files and design documents:
specs/*/spec.mddocs/plans/*.md or docs/design/*.mdFor each spec, extract:
For design docs, extract:
Create a semantic index of all requirements, keyed by:
Look for contradictions:
Type 1: Same Feature, Different Behavior
Type 2: Obsolete Constraints
Type 3: Scope Overlap
Type 4: Implicit Conflicts
For each conflict:
SUPERSEDE: Newer document replaces older
MERGE: Combine into single authoritative source
DEPRECATE: Mark older as obsolete
HUMAN_REQUIRED: Can't determine automatically
# 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
Write to:
.specify/sync/conflicts.md.specify/sync/conflicts.jsonAfter 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
/speckit.sync.conflicts
/speckit.sync.conflicts --include-design-docs
/speckit.sync.conflicts --spec 008
tools
`@lspeasy/cli` — programmatic entry point. Exposes the reusable refactor internals (session pipeline + WorkspaceEdit applier) so the same machinery can be embedded in scripts, not just invoked through the `lspeasy` bin. Also: lsp, language-server-protocol, refactor, rename, codemod, move-symbol, cli.
tools
API reference for cli
tools
Use for ANY rename, file-move, or move-symbol refactor — especially rename-heavy work across multiple files. Claude Code's built-in LSP tool is READ-ONLY (find references, but no rename / file-move / move-symbol). Hand-editing those refactors silently misses re-exports, aliased imports, type-only imports, and {@link} doc references. This skill drives a real language server via the `lspeasy` CLI to apply a correct WorkspaceEdit that catches every reference. Trigger when the user asks to rename a function/class/variable/type project-wide, move a file and fix its importers, or pull a symbol out into another module.
tools
Use when working with lspeasy (client, core, server).