chore(kit): remove worktree-update skill, fix pr-review severity tiers
- Delete worktree-update skill template (replaced by sprint branches) - Remove worktree-update references from settings, manifests, tests - Update customization-examples to sprint-branch language - Remove three-tier severity from pr-review template (every comment is actionable, no suggestion tier) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -60,9 +60,9 @@ Instead of one main branch, the project uses worktrees for parallel development:
|
|||||||
| visual | `../visual/` | araminta |
|
| visual | `../visual/` | araminta |
|
||||||
| ci | `../ci/` | justine |
|
| ci | `../ci/` | justine |
|
||||||
|
|
||||||
Each worktree contains the full repository. Sprint briefings are written per-team (`docs/sprints/sprint-N/server.md`, `client.md`, etc.). Merges happen via the `/worktree-update` skill.
|
Each sprint branch contains the full repository. Sprint briefings are written per-team (`docs/sprints/sprint-N/server.md`, `client.md`, etc.). Merges happen via PR review on main.
|
||||||
|
|
||||||
**Key lesson**: Worktrees are powerful for large projects with distinct workstreams. Most projects should start with single-branch and add worktrees when branch contention becomes a problem.
|
**Key lesson**: Sprint branches (`sprint-N/team`) with ephemeral worktrees via `isolation: "worktree"` give each agent an isolated copy without persistent worktree management.
|
||||||
|
|
||||||
### Qdrant + Ollama for Semantic Document Search
|
### Qdrant + Ollama for Semantic Document Search
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ Everything in minimal, plus:
|
|||||||
| ticket | /ticket — manage project tickets in SQLite DB |
|
| ticket | /ticket — manage project tickets in SQLite DB |
|
||||||
| pr-push | /pr-push — push commits and create/update PRs |
|
| pr-push | /pr-push — push commits and create/update PRs |
|
||||||
| pr-review | /pr-review — spawn parallel reviewers for branch diffs |
|
| pr-review | /pr-review — spawn parallel reviewers for branch diffs |
|
||||||
| worktree-update | /worktree-update — sync worktree branches with main |
|
|
||||||
| sprint-retro | /sprint-retro — run a sprint retrospective |
|
| sprint-retro | /sprint-retro — run a sprint retrospective |
|
||||||
| release-notes | /release-notes — generate release notes from commits |
|
| release-notes | /release-notes — generate release notes from commits |
|
||||||
|
|
||||||
@@ -81,7 +80,6 @@ decisions/process.md # Process decisions
|
|||||||
.claude/skills/pr-push/SKILL.md # Push PR skill
|
.claude/skills/pr-push/SKILL.md # Push PR skill
|
||||||
.claude/skills/pr-review/SKILL.md # Review PR skill
|
.claude/skills/pr-review/SKILL.md # Review PR skill
|
||||||
.claude/skills/pr-review/references/ # Review checklist references
|
.claude/skills/pr-review/references/ # Review checklist references
|
||||||
.claude/skills/worktree-update/SKILL.md # Worktree sync skill
|
|
||||||
.claude/skills/sprint-retro/SKILL.md # Retro skill
|
.claude/skills/sprint-retro/SKILL.md # Retro skill
|
||||||
.claude/skills/release-notes/SKILL.md # Release notes skill
|
.claude/skills/release-notes/SKILL.md # Release notes skill
|
||||||
.config/hooks/pre-commit # Pre-commit hook
|
.config/hooks/pre-commit # Pre-commit hook
|
||||||
|
|||||||
@@ -42,7 +42,6 @@
|
|||||||
"Bash(ls *)",
|
"Bash(ls *)",
|
||||||
|
|
||||||
"Skill(git-commit)",
|
"Skill(git-commit)",
|
||||||
"Skill(worktree-update)",
|
|
||||||
"Skill(sprint-start)"
|
"Skill(sprint-start)"
|
||||||
],
|
],
|
||||||
"deny": [
|
"deny": [
|
||||||
|
|||||||
@@ -94,9 +94,9 @@ Format the combined review as a table per reviewer:
|
|||||||
|
|
||||||
### <Reviewer Name> (<Focus>): [APPROVE | REQUEST_CHANGES]
|
### <Reviewer Name> (<Focus>): [APPROVE | REQUEST_CHANGES]
|
||||||
[Summary]
|
[Summary]
|
||||||
| # | File | Severity | Issue |
|
| # | File | Issue |
|
||||||
|---|------|----------|-------|
|
|---|------|-------|
|
||||||
| 1 | path:line | critical/warning/suggestion | description |
|
| 1 | path:line | description |
|
||||||
|
|
||||||
### <Reviewer Name> (<Focus>): [APPROVE | REQUEST_CHANGES]
|
### <Reviewer Name> (<Focus>): [APPROVE | REQUEST_CHANGES]
|
||||||
...
|
...
|
||||||
@@ -130,8 +130,8 @@ Respond with:
|
|||||||
2. Summary: 2-3 sentence overall assessment
|
2. Summary: 2-3 sentence overall assessment
|
||||||
3. Comments: List of specific issues, each with:
|
3. Comments: List of specific issues, each with:
|
||||||
- File path and approximate location
|
- File path and approximate location
|
||||||
- Severity: critical / warning / suggestion
|
|
||||||
- Description of the issue
|
- Description of the issue
|
||||||
|
Every comment is actionable — there is no "suggestion" tier. If it's worth mentioning, it's worth fixing.
|
||||||
If no issues found, say APPROVE with a brief positive summary.
|
If no issues found, say APPROVE with a brief positive summary.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,118 +0,0 @@
|
|||||||
---
|
|
||||||
name: worktree-update
|
|
||||||
description: >
|
|
||||||
Sync worktree branches with main. Use when the user says "update worktrees",
|
|
||||||
"sync branches", "merge main", "worktree update", or invokes /worktree-update.
|
|
||||||
When on main: shows ahead branches and lets user pick which to merge.
|
|
||||||
When on a non-main branch: merges main into the current branch.
|
|
||||||
user-invocable: true
|
|
||||||
allowed-tools: Bash, Read, AskUserQuestion
|
|
||||||
---
|
|
||||||
|
|
||||||
# Worktree Update Skill
|
|
||||||
|
|
||||||
Sync worktree branches safely. Direction depends on the current branch.
|
|
||||||
|
|
||||||
## Safety Rules (NON-NEGOTIABLE)
|
|
||||||
|
|
||||||
- **Never force-push, reset --hard, rebase, or delete branches.**
|
|
||||||
- **Never use `--no-verify` or skip hooks.**
|
|
||||||
- **Always use `--no-edit` on merges** to avoid interactive editor prompts.
|
|
||||||
- **Stop on merge conflicts** — report them and let the user decide. Never
|
|
||||||
auto-resolve or abort a conflicted merge without asking.
|
|
||||||
- **Fetch before comparing** — always `git fetch --all` first so commit
|
|
||||||
comparisons are accurate.
|
|
||||||
- **Dry-run first on main** — show the user exactly what will happen before
|
|
||||||
merging anything into main.
|
|
||||||
|
|
||||||
## Workflow
|
|
||||||
|
|
||||||
### 1. Detect current branch
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git branch --show-current
|
|
||||||
```
|
|
||||||
|
|
||||||
Branch determines the mode: `main` -> outbound sync, anything else -> inbound sync.
|
|
||||||
|
|
||||||
### 2a. On `main` — merge worktree branches into main
|
|
||||||
|
|
||||||
#### Fetch and compare
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git fetch --all
|
|
||||||
```
|
|
||||||
|
|
||||||
Discover all worktree branches (excluding `main` itself):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git worktree list | grep -v '\[main\]' | sed 's/.*\[//;s/\]//'
|
|
||||||
```
|
|
||||||
|
|
||||||
For each worktree branch, check if it has commits ahead of main:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git rev-list --count main..origin/<branch>
|
|
||||||
```
|
|
||||||
|
|
||||||
Skip branches with 0 commits ahead. For branches that ARE ahead, collect:
|
|
||||||
- Branch name
|
|
||||||
- Number of commits ahead
|
|
||||||
- One-line log of those commits: `git log --oneline main..<branch>`
|
|
||||||
|
|
||||||
#### Check for open PRs
|
|
||||||
|
|
||||||
Use the git host CLI matching your project (see CLAUDE.md):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# GitHub: gh pr list --state open
|
|
||||||
# Gitea: tea pr list --login <login> --repo <owner/repo> --state open --output simple
|
|
||||||
# GitLab: glab mr list --state opened
|
|
||||||
```
|
|
||||||
|
|
||||||
Cross-reference open PR head branches with the ahead-of-main branches.
|
|
||||||
|
|
||||||
#### Present results
|
|
||||||
|
|
||||||
Show a summary table of branches ahead of main. For each branch, indicate:
|
|
||||||
- `[PR]` if it has an open pull request — warn that it should go through
|
|
||||||
normal review channels (use `/pr-review` instead)
|
|
||||||
- Commit count and summary
|
|
||||||
|
|
||||||
Use `AskUserQuestion` to let the user pick which branches to merge.
|
|
||||||
Exclude PR-flagged branches from the default options (but allow the user to
|
|
||||||
override via "Other").
|
|
||||||
|
|
||||||
#### Merge selected branches
|
|
||||||
|
|
||||||
For each selected branch, one at a time:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git merge <branch> --no-edit
|
|
||||||
```
|
|
||||||
|
|
||||||
If a merge conflicts, **stop immediately**. Report the conflict and do NOT
|
|
||||||
continue to the next branch. The user must resolve before proceeding.
|
|
||||||
|
|
||||||
After all merges, show the final state with `git log --oneline -N` (where N
|
|
||||||
covers the new commits).
|
|
||||||
|
|
||||||
### 2b. Not on `main` — merge main into current branch
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git fetch --all
|
|
||||||
git merge origin/main --no-edit
|
|
||||||
```
|
|
||||||
|
|
||||||
If clean, report the result (fast-forward or merge commit, files changed).
|
|
||||||
If conflicts, report them and stop.
|
|
||||||
|
|
||||||
### 3. Push prompt
|
|
||||||
|
|
||||||
After a successful merge, ask the user if they want to push:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git push origin <current-branch>
|
|
||||||
```
|
|
||||||
|
|
||||||
Never push without explicit confirmation.
|
|
||||||
@@ -111,7 +111,6 @@ STANDARD_FILES=(
|
|||||||
".claude/skills/ticket/SKILL.md"
|
".claude/skills/ticket/SKILL.md"
|
||||||
".claude/skills/pr-push/SKILL.md"
|
".claude/skills/pr-push/SKILL.md"
|
||||||
".claude/skills/pr-review/SKILL.md"
|
".claude/skills/pr-review/SKILL.md"
|
||||||
".claude/skills/worktree-update/SKILL.md"
|
|
||||||
".claude/skills/sprint-retro/SKILL.md"
|
".claude/skills/sprint-retro/SKILL.md"
|
||||||
".claude/skills/release-notes/SKILL.md"
|
".claude/skills/release-notes/SKILL.md"
|
||||||
"decisions/README.md"
|
"decisions/README.md"
|
||||||
@@ -129,7 +128,6 @@ mkdir -p "$TMPDIR_STANDARD/.claude/skills/skill-create"
|
|||||||
mkdir -p "$TMPDIR_STANDARD/.claude/skills/ticket"
|
mkdir -p "$TMPDIR_STANDARD/.claude/skills/ticket"
|
||||||
mkdir -p "$TMPDIR_STANDARD/.claude/skills/pr-push"
|
mkdir -p "$TMPDIR_STANDARD/.claude/skills/pr-push"
|
||||||
mkdir -p "$TMPDIR_STANDARD/.claude/skills/pr-review"
|
mkdir -p "$TMPDIR_STANDARD/.claude/skills/pr-review"
|
||||||
mkdir -p "$TMPDIR_STANDARD/.claude/skills/worktree-update"
|
|
||||||
mkdir -p "$TMPDIR_STANDARD/.claude/skills/sprint-retro"
|
mkdir -p "$TMPDIR_STANDARD/.claude/skills/sprint-retro"
|
||||||
mkdir -p "$TMPDIR_STANDARD/.claude/skills/release-notes"
|
mkdir -p "$TMPDIR_STANDARD/.claude/skills/release-notes"
|
||||||
mkdir -p "$TMPDIR_STANDARD/decisions"
|
mkdir -p "$TMPDIR_STANDARD/decisions"
|
||||||
|
|||||||
Reference in New Issue
Block a user