Tripwire check for multi-session drift. Scans state files, recent commits, and file conflicts caused by parallel agent sessions. Run after parallel work or when something feels off.
Installs into .claude/skills of the current project.
Are you the author of Reconcile?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/conorbronsdon-reconcile)
---
name: reconcile
description: Tripwire check for multi-session drift. Scans state files, recent commits, and file conflicts caused by parallel agent sessions. Run after parallel work or when something feels off.
---
# /reconcile — Multi-Session Drift Check
When multiple agent sessions run in parallel (especially with worktrees), files drift out
of sync. This skill scans for inconsistencies and proposes fixes.
**Invocation:** deliberately model-invocable — the scan is read-only and auto-triggering
on a drift smell is the point. Anything that changes files is proposed, never applied.
## Configuration
Read the optional `workspace.yaml` at the project root for where state lives. Below,
`<state_dir>` and `<task_file>` are its resolved values; defaults are `state/` and
`TODO.md`. Full reference: `docs/state-model.md`.
## When to Use
- After merging worktree branches back to the default branch
- When something "feels off" after parallel work
- After a crash where multiple sessions were open
- As a periodic sanity check during heavy parallel workflows
## Instructions
### 0. Detect the default branch
```bash
git rev-parse --git-dir >/dev/null 2>&1 || { echo "not a git repository — nothing to reconcile"; exit 0; }
DEFAULT=$(git symbolic-ref --short refs/remotes/origin/HEAD 2>/dev/null | sed 's|^origin/||')
DEFAULT=${DEFAULT:-$(git remote show origin 2>/dev/null | sed -n 's/.*HEAD branch: //p')}
DEFAULT=${DEFAULT:-main} # no remote configured — fall back and say so in the report
```
### 1. Scan recent commit history across all branches
```bash
git log --all --oneline --since="24 hours ago" --graph
```
Look for:
- Multiple branches touching the same files
- Commits on branches that haven't been merged
- Conflicting changes (same file modified differently on different branches)
### 2. Check for file-level conflicts
For each file modified on multiple branches, diff the versions:
```bash
git diff "$DEFAULT"..<branch> -- <file>
```
Flag files where:
- Both branches modified the same lines (merge conflict risk)
- One branch deleted what another modified
- Timestamps or "Last Updated" fields diverged
### 3. Check state file consistency
For the project's state files under `<state_dir>` (priorities, decision log, session logs)
and any task file (`<task_file>`), check:
- **Duplicate entries:** same task or decision logged twice from different sessions
- **Contradictory state:** one session marked something complete, another added it as
in-progress
- **Timestamp drift:** `Last Updated` dates that don't match the most recent actual edit
(see the chain protocol in `docs/state-model.md` — a stacked or spliced `Last Updated`
line is itself a drift signal)
- **Orphaned references:** sections referencing things removed in another session
### 4. Check for SSOT violations
If the project has single-source-of-truth rules (facts that should live in exactly one
file):
- Scan for duplicated facts across files
- Flag any case where the same information appears in multiple locations with different
values
- Check that cross-references point to files that still exist
### 5. Report
```
RECONCILE — [DATE]
BRANCHES CHECKED:
- [branch list with last commit date]
FILE CONFLICTS:
- [file] — modified on [branch1] and [branch2] — [conflict type]
STATE DRIFT:
- [issue description]
SSOT VIOLATIONS:
- [duplicated fact] — found in [file1] and [file2]
PROPOSED FIXES:
1. [fix description]
OVERALL: [CLEAN / N issues found]
```
### 6. Apply fixes (with approval only)
Present each fix individually. Wait for approval before applying. Common fixes:
- Merge the newer version of a conflicting file
- Remove duplicate entries (keep the more detailed one)
- Update timestamps to match actual last-edit dates
- Resolve SSOT violations by keeping the canonical source and updating references
## Design Principles
- **Read-only by default.** Report, wait for approval.
- **Prefer evidence of intent over recency.** When two versions conflict, look at which
change the surrounding work depends on (commit messages, linked edits, whether other
files reference the new value). A stale session can easily produce the *newer* timestamp.
Use recency only as a tie-breaker when intent is unreadable.
- **Preserve intent.** Don't auto-resolve — different sessions may have had different goals.
- **Fast.** Git commands and file reads only. Under 30 seconds for a full scan.