From 39f85dfb3aeed9a9a9c078a1467f62aa29d51336 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 11 Feb 2026 22:11:34 +0100 Subject: [PATCH 1/2] fix(skills): use absolute paths in start-sprint for worktree safety The skill used bare relative paths like db/connectors/ticket which fail when the shell CWD doesn't match the worktree root. Now requires resolving REPO_ROOT via git rev-parse --show-toplevel first. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/start-sprint/SKILL.md | 30 ++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/.claude/skills/start-sprint/SKILL.md b/.claude/skills/start-sprint/SKILL.md index f137999ec..a2b59e72a 100644 --- a/.claude/skills/start-sprint/SKILL.md +++ b/.claude/skills/start-sprint/SKILL.md @@ -14,6 +14,24 @@ allowed-tools: Bash, Read, Grep, Glob Prepare a team branch for sprint work: sync with main, load the sprint briefing, and present actionable next steps. +## Path resolution (CRITICAL) + +This project uses **git worktrees**. Each team branch is a separate directory. +All file paths MUST be resolved from the worktree root, never guessed. + +**First**, resolve the repo root and store it for all subsequent commands: +```bash +REPO_ROOT="$(git rev-parse --show-toplevel)" +``` + +Then use `$REPO_ROOT` as a prefix for every path in this skill: +- Ticket CLI: `"$REPO_ROOT/db/connectors/ticket"` +- Sprint briefings: `"$REPO_ROOT/docs/sprints/sprint-N/.md"` +- Decision files: `"$REPO_ROOT/decisions/*.md"` + +**Never use bare relative paths** like `db/connectors/ticket` — they break +when the shell's CWD doesn't match the worktree root. + ## Workflow ### 1. Determine the team @@ -38,7 +56,7 @@ If the merge has conflicts, report them and stop — do not force-resolve. ### 3. Find the active sprint ```bash -db/connectors/ticket sprint --active +"$REPO_ROOT/db/connectors/ticket" sprint --active ``` Extract the sprint ID and name from the JSON output. If no active sprint, @@ -46,9 +64,9 @@ report that and stop. ### 4. Read the sprint briefing -Read `docs/sprints/sprint-N/.md` where N is the sprint ID and team -matches the branch name. If the branch is `server` or `client`, use that -directly. For other branches, check if a matching briefing exists. +Read `$REPO_ROOT/docs/sprints/sprint-N/.md` where N is the sprint ID +and team matches the branch name. If the branch is `server` or `client`, use +that directly. For other branches, check if a matching briefing exists. Also check for a `joint.md` briefing — joint tasks involve both teams and should be mentioned. @@ -57,7 +75,7 @@ should be mentioned. For each ticket listed in the briefing, run: ```bash -db/connectors/ticket show +"$REPO_ROOT/db/connectors/ticket" show ``` Identify which tickets are actionable now (no open blockers) vs blocked. @@ -79,5 +97,5 @@ Output a summary: Then mark the first actionable ticket as `in_progress`: ```bash -db/connectors/ticket status in_progress +"$REPO_ROOT/db/connectors/ticket" status in_progress ``` From 468aad60d4c0bf57155f086c690b6917c10a30e1 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 11 Feb 2026 22:11:44 +0100 Subject: [PATCH 2/2] chore(meta): update changelog Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a3ea3501..fbc15aef9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +### Fixed +- `start-sprint` skill uses `git rev-parse --show-toplevel` for worktree-safe absolute paths — fixes "No such file or directory" errors on team branches + ### Added - Sprint 2 "See" briefings (server, client, joint) — fog of perception through the bridge - `/plan-sprint` skill — automates sprint planning workflow and briefing file generation