Fork the current conversation to safely explore an alternative approach without losing current progress
Scanned 9/2/2026
Install to Claude Code
npx -y skills add majiayu000/claude-skill-registry --skill conversation-fork --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Conversation Fork?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-conversation-fork-claude-skill-registry)More formats (shields.io, HTML) on the badges page.
---
name: conversation-fork
description: Fork the current conversation to safely explore an alternative approach without losing current progress
disable-model-invocation: true
---
# Conversation Fork
Create a safe divergence point to explore an alternative approach without losing current progress.
## When to Run
- "I'm not sure whether to do X or Y — let me try both"
- Before a risky refactor that might not pan out
- When the user wants to explore an alternative design
- After a plan is agreed but before major implementation begins
## Arguments
- First argument: fork name (short, kebab-case, e.g. `auth-approach-b`)
- `--worktree`: use heavy fork (new git worktree + branch) instead of light fork (git stash)
## Strategy Selection
| Strategy | When | Cost |
|----------|------|------|
| Light fork (default) | Experimenting, < 1 day of work, same branch OK | Low |
| Heavy fork (`--worktree`) | Long-lived parallel track, needs own CI, separate PR | High |
## Light Fork (Default)
Creates a stash snapshot and documents both approaches in a FORK file.
### Steps
1. Capture state:
```bash
FORK_NAME="<name>"
BRANCH=$(git branch --show-current)
SHA=$(git rev-parse --short HEAD)
DATE=$(date +%Y-%m-%d)
```
2. Stash current work (preserves staged + unstaged + untracked):
```bash
git stash push -m "fork/$FORK_NAME" --include-untracked
```
3. Write fork document at `docs/plans/FORK-${FORK_NAME}.md`:
```markdown
# Fork: <NAME>
**Created:** <DATE>
**Branch:** <BRANCH>
**Commit:** <SHA>
## Context
<One paragraph: why we forked here, what decision point this represents>
## Approach A (Stashed / Original Path)
**Status:** Stashed as `fork/<NAME>`
**What it does:** <Description of the current approach>
**Resume:** `git stash apply stash^{/fork/<NAME>}`
## Approach B (Current / Exploration)
**Status:** Working from <SHA>
**What it will do:** <Description of the alternative>
**Resume:** Continue working (this is the active branch)
## Recent Context
<output of: git log --oneline -5>
## Decision Criteria
- Choose A if: <condition>
- Choose B if: <condition>
- Merge both if: <condition>
## Resume Instructions
To return to Approach A:
\`\`\`bash
git stash apply stash^{/fork/<NAME>}
\`\`\`
To abandon Approach B and restore A:
\`\`\`bash
git checkout -- .
git stash pop
\`\`\`
```
## Heavy Fork (`--worktree`)
Creates a full git worktree at a new branch for true parallel development.
### Steps
1. Capture state (same as light fork).
2. Create worktree at current HEAD:
```bash
WORKTREE_PATH="$HOME/worktrees/property-tracker/fork-${FORK_NAME}"
git worktree add "$WORKTREE_PATH" -b "fork/$FORK_NAME"
```
3. Copy env:
```bash
cp .env.local "$WORKTREE_PATH/.env.local" 2>/dev/null || true
```
4. Write fork document to **both** worktrees (`docs/plans/FORK-${FORK_NAME}.md`):
```markdown
# Fork: <NAME>
**Created:** <DATE>
**Origin Branch:** <BRANCH>
**Origin Commit:** <SHA>
## Approach A (Origin)
**Path:** <original worktree path>
**Branch:** <BRANCH>
**Resume:** Work here, this worktree is untouched
## Approach B (Exploration)
**Path:** <WORKTREE_PATH>
**Branch:** `fork/<NAME>`
**Resume:** `cd <WORKTREE_PATH>`
## Recent Context
<output of: git log --oneline -5>
## Cleanup
When done exploring, remove the worktree:
\`\`\`bash
git worktree remove <WORKTREE_PATH>
git branch -d fork/<NAME>
\`\`\`
Or keep it and open a separate PR from `fork/<NAME>`.
```
## After Forking
1. **Light fork:** You're on a clean working tree at the same SHA. Implement Approach B. Return to A with `git stash apply`.
2. **Heavy fork:** Switch to the new worktree path. Both tracks run independently.
In either case, `docs/plans/FORK-<name>.md` records the decision context for future reference.
## Examples
```
/conversation-fork auth-approach-b
/conversation-fork db-indexing-strategy --worktree
/conversation-fork no-orm-experiment --worktree
```
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!