Skip to content
Back to skills

Conversation Fork

ASecurity

Fork the current conversation to safely explore an alternative approach without losing current progress

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 2, 2026
ai-agentsbashgit

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add majiayu000/claude-skill-registry --skill conversation-fork --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Conversation Fork?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Conversation Fork
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-conversation-fork-claude-skill-registry/badge)](https://www.skillsdirectory.com/skills/majiayu000-conversation-fork-claude-skill-registry)

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

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.