2026-03-26 05:32:52 +02:00

85 lines
3.0 KiB
Markdown

---
name: dot-ai-worktree-prd
description: Create a git worktree for PRD work with a descriptive branch name. Infers PRD from context or asks user.
user-invocable: true
---
# Create Git Worktree for PRD
Create a git worktree with a descriptive branch name based on the PRD title. This ensures feature branches have human-readable names that describe what the work is about.
## Workflow
### Step 1: Identify the PRD
Try to infer the PRD number from the current conversation. Look for PRD references like "PRD 353", "PRD #353", or "prd-353".
If not found in context, ask the user: "Which PRD should I create a worktree for? (e.g., 353)"
### Step 2: Get the PRD Title
If the PRD content is already in the conversation context, extract the title from there.
Otherwise, read the PRD file. PRD files are in the `prds/` directory with naming pattern `[number]-[slug].md`:
```bash
ls prds/ | grep "^[PRD_NUMBER]-"
```
The title is on the first line in format: `# PRD #[number]: [Title]`
### Step 3: Generate Descriptive Branch Name
Convert the PRD title to a branch-friendly name:
1. Start with `prd-[number]-`
2. Extract the title after the colon (e.g., "Update to Kimi K2.5 Model Support")
3. Convert to lowercase
4. Replace spaces with hyphens
5. Remove special characters except hyphens and dots
6. Keep it concise (truncate if very long)
**Examples:**
- "PRD #353: Update to Kimi K2.5 Model Support" → `prd-353-kimi-k2.5-support`
- "PRD #290: Skills Distribution System" → `prd-290-skills-distribution`
- "PRD #264: GitOps Tool ArgoCD Integration" → `prd-264-gitops-argocd-integration`
### Step 4: Create the Worktree
Run the following commands directly. Replace `[branch-name]` with the name generated in Step 3.
1. **Get the repo name and compute the worktree path:**
```bash
repo_name=$(basename "$(git rev-parse --show-toplevel)")
worktree_path="../${repo_name}-[branch-name]"
```
2. **Validate** — check that the branch, worktree path, and worktree registration don't already exist:
```bash
git show-ref --verify --quiet "refs/heads/[branch-name]" && echo "ERROR: Branch already exists"
test -d "${worktree_path}" && echo "ERROR: Worktree path already exists"
git worktree list | grep -q "[branch-name]" && echo "ERROR: Worktree already registered"
```
If any check fails, inform the user and ask how to proceed.
3. **Create the worktree** branching from `main`:
```bash
git worktree add "${worktree_path}" -b [branch-name] main
```
4. **Initialize submodules** in the new worktree:
```bash
cd "${worktree_path}" && git submodule update --init --recursive
```
5. **Report** the result to the user:
- Worktree path: `${worktree_path}`
- Branch: `[branch-name]`
- Next step: `cd ${worktree_path}`
## Guidelines
- **Descriptive names**: Branch names should describe the feature, not just the PRD number
- **Consistent format**: Always prefix worktree directory with the repository name
- **Base on main**: Always branch from `main` for new feature work
- **Clean names**: Keep branch names concise but descriptive