Initial Auto-Build plugin structure

This commit is contained in:
2025-12-21 23:29:55 +02:00
commit 7e4912add2
30 changed files with 3274 additions and 0 deletions

146
plugin/commands/worktree.md Normal file
View File

@@ -0,0 +1,146 @@
---
description: Manage git worktrees for feature isolation
argument-hint: <action> [name] - Actions: create, list, switch, cleanup
---
# Git Worktree Management
Manage isolated git worktrees for feature development. Worktrees provide complete isolation between features, preventing conflicts during parallel development.
## Actions
### create <feature-name>
Create a new isolated worktree for a feature.
**Workflow:**
1. Validate feature name provided
2. Determine project name from current directory
3. Create branch: `feature/ab-{feature-name}`
4. Create worktree at: `../ab-worktrees/{project}-{feature-name}/`
5. Register in `.auto-build-data/worktrees/worktree-registry.json`
6. Display success message with path
**Command:**
```bash
bash .auto-build/scripts/worktree-create.sh {feature-name}
```
**Output:**
```
Created worktree for: feature-name
Branch: feature/ab-feature-name
Path: ../ab-worktrees/project-feature-name/
To work in this worktree:
cd ../ab-worktrees/project-feature-name/
```
### list
List all active worktrees.
**Workflow:**
1. Read `.auto-build-data/worktrees/worktree-registry.json`
2. Verify each worktree still exists (git worktree list)
3. Display table:
```
Active Worktrees:
| Feature | Branch | Path | Created |
|---------|--------|------|---------|
| user-dashboard | feature/ab-user-dashboard | ../ab-worktrees/project-user-dashboard/ | 2h ago |
```
**Command:**
```bash
bash .auto-build/scripts/worktree-list.sh
```
### switch <feature-name>
Provide instructions to switch to a worktree.
**Workflow:**
1. Look up worktree path from registry
2. Verify worktree exists
3. Display switch instructions:
```
To switch to feature-name worktree:
cd ../ab-worktrees/project-feature-name/
Or start a new Claude Code session in that directory.
```
**Note:** Claude Code sessions are directory-bound, so actual switching requires changing the working directory.
### cleanup [feature-name]
Remove completed worktrees.
**Workflow:**
If feature-name provided:
1. Look up worktree in registry
2. Check if branch is merged to main
3. If merged or user confirms: Remove worktree and branch
4. Update registry
If no feature-name:
1. List all worktrees
2. Check which branches are merged
3. Offer to cleanup merged ones:
```
Found 2 merged worktrees:
- old-feature (merged 3 days ago)
- bug-fix (merged 1 week ago)
Remove these? [Yes] [Select] [No]
```
**Command:**
```bash
bash .auto-build/scripts/worktree-cleanup.sh [feature-name]
```
## Registry Format
`.auto-build-data/worktrees/worktree-registry.json`:
```json
{
"worktrees": [
{
"name": "user-dashboard",
"branch": "feature/ab-user-dashboard",
"path": "../ab-worktrees/project-user-dashboard/",
"created": "2025-01-15T10:30:00Z",
"status": "active",
"spec": ".auto-build-data/specs/user-dashboard/"
}
]
}
```
## Worktree Location
Worktrees are created **outside** the project directory to avoid:
- Nested git repository issues
- IDE confusion
- Accidental commits from wrong directory
Structure:
```
/projects/
├── my-project/ # Main project
│ ├── .auto-build/
│ └── .auto-build-data/
└── ab-worktrees/ # Worktrees directory
├── my-project-user-dashboard/
└── my-project-api-refactor/
```
## Error Cases
- **Branch already exists**: Ask to use existing or create new
- **Worktree path exists**: Ask to reuse or choose different path
- **Not a git repository**: Inform user and abort
- **Uncommitted changes**: Warn user before creating worktree