Skip to content
Back to skills

Speckit Sync Propose

ASecurity

Propose resolutions for detected drift. AI generates spec updates or

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
businessgit

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add AI-native-Systems-Research/ai-native-storage-certus --skill speckit-sync-propose --agent claude-code

Installs 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 with every re-scan.

Security grade badge for Speckit Sync Propose
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ai-native-systems-research-speckit-sync-propose-f2f2d5fe/badge)](https://www.skillsdirectory.com/skills/ai-native-systems-research-speckit-sync-propose-f2f2d5fe)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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
user-invocable: true
disable-model-invocation: true
---

# 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
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.