Propose resolutions for detected drift. AI generates spec updates or
Scanned 9/9/2026
Install to Claude Code
npx -y skills add AI-native-Systems-Research/ai-native-storage-certus --skill speckit-sync-propose --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Speckit Sync Propose?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ai-native-systems-research-speckit-sync-propose)More formats (shields.io, HTML) on the badges page.
---
name: speckit-sync-propose
description: Propose resolutions for detected drift. AI generates spec updates or
code changes.
compatibility: Requires spec-kit project structure with .specify/ directory
metadata:
author: github-spec-kit
source: sync:commands/propose.md
---
# Spec Sync: Propose Resolutions
Generate resolution proposals for each drift item. The AI analyzes each divergence and proposes either a spec update (backfill) or code change (align).
## User Input
$ARGUMENTS
## Prerequisites
Run `speckit.sync.analyze` first to generate the drift report.
## Context
Read the drift report:
- `.specify/sync/drift-report.json`
## Steps
### 1. Load Drift Report
Read the drift report from the previous analysis. If it doesn't exist, instruct the user to run `speckit.sync.analyze` first.
### 2. For Each Drifted Requirement
Analyze the drift and determine resolution direction:
#### Backfill (Code → Spec)
Recommend when:
- Code has working, tested features not in spec
- Design docs exist that supersede the spec
- The code represents intentional evolution
- Tests pass for the current behavior
Generate:
- Updated spec requirement text
- New acceptance scenarios if needed
- Rationale for why code is authoritative
#### Align (Spec → Code)
Recommend when:
- Spec was recently reviewed/approved
- Code appears to be a bug or misunderstanding
- The spec represents agreed architectural decisions
- Changing the spec would violate constraints
Generate:
- Code change description or diff
- Task for implementation
- Rationale for why spec is authoritative
#### Human Decision Required
Flag when:
- Both interpretations seem valid
- Architectural trade-offs involved
- Insufficient context to decide
- Conflicting design documents
Generate:
- Summary of both options
- Questions that would help decide
- Request for human input
### 3. For Each Unspecced Feature
Propose a new spec:
- Suggested spec ID (next available number)
- Draft title
- Draft user stories based on code behavior
- Draft requirements extracted from implementation
- Confidence score
### 4. For Each Not-Implemented Requirement
Determine:
- Is it still needed? (may be obsolete)
- Should it be removed from spec?
- Should it be implemented?
Propose accordingly.
### 5. Generate Proposal Document
Output format:
```markdown
# Drift Resolution Proposals
Generated: [timestamp]
Based on: drift-report from [timestamp]
## Summary
| Resolution Type | Count |
|-----------------|-------|
| Backfill (Code → Spec) | X |
| Align (Spec → Code) | X |
| Human Decision | X |
| New Specs | X |
| Remove from Spec | X |
## Proposals
### Proposal 1: [spec-id]/[requirement]
**Direction**: BACKFILL | ALIGN | HUMAN_DECISION
**Current State**:
- Spec says: "[spec text]"
- Code does: "[actual behavior]"
**Proposed Resolution**:
[For BACKFILL: new spec text]
[For ALIGN: code change description]
[For HUMAN: questions and options]
**Rationale**: [why this direction]
**Confidence**: HIGH | MEDIUM | LOW
**Action**:
- [ ] Approve
- [ ] Reject
- [ ] Modify
---
### Proposal 2: New Spec for [feature]
**Direction**: NEW_SPEC
**Feature**: [feature name]
**Location**: [code path]
**Draft Spec**:
# Feature Specification: [title]
## User Scenarios
### User Story 1 - [story]
[generated from code behavior]
## Requirements
- **FR-001**: [extracted from code]
**Confidence**: MEDIUM
**Action**:
- [ ] Approve and create spec
- [ ] Reject
- [ ] Modify
```
### 6. Save Proposals
Write to:
- `.specify/sync/proposals.md` (human-readable)
- `.specify/sync/proposals.json` (machine-readable)
## Interactive Mode
When run with `--interactive`, present each proposal one at a time and prompt for approval:
```
Proposal 1/15: spec-011/FR-001
Direction: BACKFILL (Code → Spec)
Spec says: "one row per document"
Code does: "supports split transactions with multiple rows"
Proposed update:
- FR-001: System MUST append one or more rows per extracted document.
For split transactions, multiple rows share a LinkID.
Confidence: HIGH
[A]pprove / [R]eject / [M]odify / [S]kip / [Q]uit?
```
## Example Usage
```
/speckit.sync.propose
/speckit.sync.propose --interactive
/speckit.sync.propose --strategy backfill-all
```Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!