Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Unify **engineering teams** around **standardized workflows** and **shared best
🧱 **IDE agnostic** · 🏗️ **Legacy systems** · 🌱 **Token-optimized** · 🇫🇷 **Made in France**

<p>
<!--counts:start--><kbd>8 plugins</kbd> · <kbd>50 skills</kbd> · <kbd>2 agents</kbd><!--counts:end-->
<!--counts:start--><kbd>8 plugins</kbd> · <kbd>51 skills</kbd> · <kbd>2 agents</kbd><!--counts:end-->
</p>

[![Open Source](https://img.shields.io/badge/Open_Source-Yes-yellow?logo=open-source-initiative&logoColor=white)](https://opensource.org/)
Expand Down Expand Up @@ -257,9 +257,9 @@ Code transformation: plan, implement, assert, audit, review, test, refactor, deb

### 🌿 [aidd-vcs](plugins/aidd-vcs/README.md)

`5 skills` · stable
`6 skills` · stable

Repo init, commits, pull / merge requests, release tags, issues.
Repo init, commits, pull / merge requests, release tags, issues, conflict resolution.

</td>
</tr>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Review: Resolve conflict skill

- **Verdict**: approve
- **Diff**: `main...working-tree`
- **Axes run**: code, functional, relevancy
- **Date**: 2026_09_03
- **Findings**: 0 critical, 0 warning, 0 minor

## Phases

### Phase 1 — Conflict resolution

- [x] One VCS skill exposes one `resolve` action — `plugins/aidd-vcs/skills/05-resolve-conflict/SKILL.md:23`
- [x] Each hunk or non-text conflict gets a choice row — `plugins/aidd-vcs/skills/05-resolve-conflict/assets/resolution-table.md:5`
- [x] An unapproved proposal changes nothing — `plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md:17`
- [x] Approved matching choices apply and stage resolved paths — `plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md:16-18`
- [x] Validation checks only resolved paths — `plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md:19`
- [x] Manifest, catalogs, and root summary expose the skill — `plugins/aidd-vcs/.claude-plugin/plugin.json:16`, `docs/CATALOG.md:87`, `README.md:243`

## Findings

| Sev | Kind | Phase | Location | Issue | Fix |
| --- | ---- | ----- | -------- | ----- | --- |

## Verification

| Metric | Value |
| ------ | ----- |
| Verified | 100% (6/6) |
| Files checked | `SKILL.md`, `actions/01-resolve.md`, `resolution-table.md`, plugin manifest, READMEs, catalogs |
| Unchecked | none |
| Unplanned | none |
1 change: 1 addition & 0 deletions docs/CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ Version-control workflows: repo init, commit, pull/merge request, release tag, i
| `02-pull-request` | Create a draft pull or merge request | `01-pull-request` |
| `03-release-tag` | Cut a semver release with annotated tag and notes | `01-release-tag` |
| `04-issue-create` | Create an issue in the configured ticketing tool | `01-issue-create` |
| `05-resolve-conflict` | Resolve deterministic conflicts or approved choices | `01-resolve` |

## 🎼 aidd-orchestrator

Expand Down
8 changes: 5 additions & 3 deletions plugins/aidd-vcs/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "aidd-vcs",
"version": "2.3.1",
"description": "External artifacts: repo-init, commit, pull-request, release-tag, issue-create",
"description": "External artifacts: repo-init, commit, pull-request, release-tag, issue-create, resolve-conflict",
"author": {
"name": "AI-Driven Dev",
"url": "https://github.com/ai-driven-dev"
Expand All @@ -12,15 +12,17 @@
"./skills/01-commit",
"./skills/02-pull-request",
"./skills/03-release-tag",
"./skills/04-issue-create"
"./skills/04-issue-create",
"./skills/05-resolve-conflict"
],
"keywords": [
"git",
"repo-init",
"commit",
"pull-request",
"release",
"version-control"
"version-control",
"conflict-resolution"
],
"repository": "https://github.com/ai-driven-dev/framework",
"homepage": "https://ai-driven.dev",
Expand Down
9 changes: 9 additions & 0 deletions plugins/aidd-vcs/CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai
- [`skills/02-pull-request`](#skills02-pull-request)
- [`skills/03-release-tag`](#skills03-release-tag)
- [`skills/04-issue-create`](#skills04-issue-create)
- [`skills/05-resolve-conflict`](#skills05-resolve-conflict)

---

Expand Down Expand Up @@ -71,3 +72,11 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai
| `assets` | [issue-template.md](skills/04-issue-create/assets/issue-template.md) | `VCS issue/ticket template` |
| `-` | [SKILL.md](skills/04-issue-create/SKILL.md) | `Create an issue in the configured ticketing tool. Use when the user wants to file a bug, open an issue, or report a problem. Not for committing, opening a pull request, or commenting on an existing issue.` |

#### `skills/05-resolve-conflict`

| Group | File | Description |
|-------|------|---|
| `actions` | [01-resolve.md](skills/05-resolve-conflict/actions/01-resolve.md) | - |
| `assets` | [resolution-table.md](skills/05-resolve-conflict/assets/resolution-table.md) | - |
| `-` | [SKILL.md](skills/05-resolve-conflict/SKILL.md) | `Resolves deterministic Git conflicts or approved choices. Use when the user wants to resolve a merge, rebase, or cherry-pick conflict. Not for deciding between competing implementations or committing changes.` |

5 changes: 2 additions & 3 deletions plugins/aidd-vcs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ VCS workflow plugin for the AI-Driven Development framework.

First time? Install with `/plugin install aidd-vcs@aidd-framework`, then run `aidd-vcs:01-commit`.

Typical flow: `00-repo-init` once to set up the repo; `01-commit` after each unit of work; `02-pull-request` when the branch is ready; `03-release-tag` at release time; `04-issue-create` from anywhere.

Covers all external artifact creation: repo init, commits, pull/merge requests, release tags, and issue tracking.
Flow: init once; commit each change; open PRs when ready; tag releases; file issues anywhere; resolve conflicts when Git stops.

## Skills

Expand All @@ -21,6 +19,7 @@ Covers all external artifact creation: repo init, commits, pull/merge requests,
| [3.2] | [pull-request](skills/02-pull-request/SKILL.md) | Create PR (GitHub) or MR (GitLab) with filled template. |
| [3.3] | [release-tag](skills/03-release-tag/SKILL.md) | Create and push a semantic version git tag with release notes. |
| [3.4] | [issue-create](skills/04-issue-create/SKILL.md) | Create issues in the configured ticketing tool. |
| [3.5] | [resolve-conflict](skills/05-resolve-conflict/SKILL.md) | Resolve deterministic conflicts or approved choices. |

## Assets

Expand Down
29 changes: 29 additions & 0 deletions plugins/aidd-vcs/skills/05-resolve-conflict/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
name: resolve-conflict
description: Resolves deterministic Git conflicts or approved choices. Use when the user wants to resolve a merge, rebase, or cherry-pick conflict. Not for deciding between competing implementations or committing changes.
argument-hint: conflict | decision
---

# Resolve Conflict

```mermaid
flowchart LR
start([active Git conflict]) --> resolve
resolve -->|no active conflict| none([report no conflict])
resolve -->|all rows decided| applied([resolve and report])
resolve -->|approval needed| proposal([propose and stop])
proposal -->|approved table| resolve
```

## Actions

Read only the next action file.

| Action | Does |
| ------ | ---- |
| resolve | resolve conflicts or propose choices |

## Transversal rules

- Never commit, discard, reset, or check out changes.
- Stage only files resolved by this skill, never unrelated files.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 01 - Resolve

Resolve deterministic conflicts or approved proposals.

## Input

An active conflict, optionally with its approved decision table.

## Output

A resolved working tree and decision table, or an unapplied proposal, formatted with [resolution table](../assets/resolution-table.md).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A-t-n besoin de renommer le fichier d'assets alors qu'il est nommé dans le process ?


## Process

1. **Inspect.** Read the operation, unmerged paths, and conflicted hunks; if none exist, report and stop.
2. **Decide.** Add one row per conflict to the [resolution table](../assets/resolution-table.md): matching approved rows keep their choice; identical sides keep common content; otherwise propose ours, theirs, or both with a reason.
3. **Gate.** If a proposal lacks approval, return the unchanged table and stop; otherwise confirm approved rows still match.
4. **Resolve.** Apply every decided row and stage the resolved paths.
5. **Validate.** Confirm no unmerged paths and a cached whitespace check limited to resolved paths; otherwise report the failed check.

## Test

| Case | Pass |
| ---- | ---- |
| deterministic conflict | markers are removed, Git has no unmerged paths, and rows are `Applied` |
| unapproved proposal | conflicted files and index entries stay unchanged, and rows are `Proposed` |
| approved proposal | matching choices apply, Git has no unmerged paths, and rows are `Applied` |
| unrelated staged error | resolved-path validation passes and the unrelated file stays untouched |
| no active conflict | no file or index entry changes, and the run reports no conflict |
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Conflict resolution decisions

Replace the example with one row per hunk or non-text conflict. Set `Applied` only after Git validation. Remove this instruction before presenting the table.

| File | Conflict | Choice | Status | Reason |
| ---- | -------- | ------ | ------ | ------ |
| path | exact hunk or conflict | common content, ours, theirs, or both | Applied or Proposed | choice evidence |