@damian87/omp 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/.github/copilot-instructions.md +15 -0
  2. package/.github/skills/caveman/SKILL.md +22 -11
  3. package/.github/skills/code-review/SKILL.md +27 -13
  4. package/.github/skills/debug/SKILL.md +29 -13
  5. package/.github/skills/grill-me/SKILL.md +19 -7
  6. package/.github/skills/jira-ticket/SKILL.md +34 -12
  7. package/.github/skills/omp-autopilot/SKILL.md +67 -12
  8. package/.github/skills/prototype/SKILL.md +30 -12
  9. package/.github/skills/ralph/SKILL.md +62 -13
  10. package/.github/skills/ralplan/SKILL.md +21 -12
  11. package/.github/skills/research-codebase/SKILL.md +58 -0
  12. package/.github/skills/research-codebase/reference/agent-prompts.md +38 -0
  13. package/.github/skills/research-codebase/reference/follow-up.md +21 -0
  14. package/.github/skills/research-codebase/reference/permalink.md +26 -0
  15. package/.github/skills/research-codebase/reference/template.md +75 -0
  16. package/.github/skills/tdd/SKILL.md +27 -10
  17. package/.github/skills/team/SKILL.md +95 -13
  18. package/.github/skills/team/scripts/team-launch.sh +132 -0
  19. package/.github/skills/ultraqa/SKILL.md +55 -11
  20. package/.github/skills/ultrawork/SKILL.md +66 -13
  21. package/.github/skills/verify/SKILL.md +29 -11
  22. package/.github/skills/worktree/SKILL.md +51 -0
  23. package/README.md +28 -14
  24. package/catalog/capabilities.json +104 -12
  25. package/catalog/skills-general.json +62 -10
  26. package/dist/src/copilot/launch.js +42 -2
  27. package/dist/src/copilot/launch.js.map +1 -1
  28. package/docs/general-skills.md +5 -4
  29. package/docs/self-evolve.md +2 -2
  30. package/package.json +1 -1
  31. package/scripts/lib/version-check.mjs +82 -0
  32. package/scripts/session-start.mjs +8 -2
  33. package/.github/skills/codebase-research/SKILL.md +0 -20
@@ -0,0 +1,75 @@
1
+ # Research Document Template
2
+
3
+ Use this template for all research documents written to `docs/research/`.
4
+
5
+ ## Filename convention
6
+
7
+ - With ticket: `YYYY-MM-DD-PROJ-1234-description.md`
8
+ - Without ticket: `YYYY-MM-DD-description.md`
9
+
10
+ ## Frontmatter
11
+
12
+ ```yaml
13
+ ---
14
+ date: [ISO datetime with timezone from git/system]
15
+ researcher: [git user.name]
16
+ git_commit: [commit hash]
17
+ branch: [branch name]
18
+ repository: [repo name]
19
+ topic: "[User's question/topic]"
20
+ tags: [research, codebase, relevant-component-names]
21
+ status: complete
22
+ last_updated: [YYYY-MM-DD]
23
+ last_updated_by: [git user.name]
24
+ ---
25
+ ```
26
+
27
+ ## Gather metadata
28
+
29
+ Run these commands — never write placeholder values:
30
+
31
+ ```bash
32
+ echo "date: $(date -u +%Y-%m-%dT%H:%M:%S%z)"
33
+ echo "user: $(git config user.name)"
34
+ echo "commit: $(git rev-parse HEAD)"
35
+ echo "branch: $(git branch --show-current)"
36
+ echo "repo: $(basename $(git rev-parse --show-toplevel))"
37
+ ```
38
+
39
+ ## Document structure
40
+
41
+ ```markdown
42
+ # Research: [User's Question/Topic]
43
+
44
+ **Date**: [datetime]
45
+ **Researcher**: [name]
46
+ **Git Commit**: [hash]
47
+ **Branch**: [branch]
48
+ **Repository**: [repo]
49
+
50
+ ## Research Question
51
+ [Original user query]
52
+
53
+ ## Summary
54
+ [High-level documentation of what was found — describe what exists]
55
+
56
+ ## Detailed Findings
57
+
58
+ ### [Component/Area 1]
59
+ - Description of what exists (`file.ext:line`)
60
+ - How it connects to other components
61
+ - Current implementation details (without evaluation)
62
+
63
+ ### [Component/Area 2]
64
+ ...
65
+
66
+ ## Code References
67
+ - `path/to/file.py:123` — Description of what's there
68
+ - `another/file.ts:45-67` — Description of the code block
69
+
70
+ ## Architecture Documentation
71
+ [Current patterns, conventions, and design implementations]
72
+
73
+ ## Open Questions
74
+ [Areas that need further investigation]
75
+ ```
@@ -7,13 +7,30 @@ description: Red-green-refactor loop for behavior changes where tests are practi
7
7
 
8
8
  Use `/tdd` when a change can be specified by tests.
9
9
 
10
- Loop:
11
- 1. Write or identify a failing behavior test.
12
- 2. Make it pass with minimal code.
13
- 3. Refactor safely.
14
- 4. Run related checks.
15
-
16
- Rules:
17
- - Test behavior through public surfaces.
18
- - Avoid brittle implementation tests.
19
- - If TDD is impractical, explain why and use `/verify`.
10
+ ## When to use
11
+
12
+ - You're implementing a feature or fixing a bug that has clear expected behaviour
13
+ - The codebase has an existing test framework
14
+ - You want to prove correctness incrementally
15
+
16
+ ## Loop (repeat until done)
17
+
18
+ 1. **Red** write or identify a failing test that describes the desired behaviour
19
+ 2. **Green** write the minimal code to make the test pass
20
+ 3. **Refactor** — clean up the code while keeping tests green
21
+ 4. **Run** — run the full related test suite to check for regressions
22
+
23
+ ## Rules
24
+
25
+ - Test **behaviour** through public surfaces, not implementation details
26
+ - Each test should describe one behaviour — name it clearly (e.g. "returns 404 when user not found")
27
+ - Avoid brittle tests that break when implementation changes but behaviour doesn't
28
+ - If TDD is impractical for the change (e.g. UI layout, infra config), explain why and use `/verify` instead
29
+ - Don't write tests for trivial getters/setters — focus on logic
30
+
31
+ ## Output
32
+
33
+ - `Tests written` — list of test names and what they cover
34
+ - `Implementation` — what was changed to make tests pass
35
+ - `Refactoring` — what was cleaned up
36
+ - `Final test run` — all tests passing (output or summary)
@@ -1,20 +1,102 @@
1
1
  ---
2
2
  name: team
3
- description: Split an approved plan into parallel lanes for agents or humans. Use with /team when work has independent lanes.
3
+ description: Split an approved plan into parallel tmux panes, each running an independent Copilot CLI agent. Use when work has independent lanes and you want visual parallel execution in split terminals. Use when user says /team, team, or wants parallel agent execution.
4
+ argument-hint: "<number of lanes or plan reference>"
4
5
  ---
5
6
 
6
- # Team
7
+ # Team — tmux-based parallel agent execution
7
8
 
8
- Use `/team` when work has independent lanes.
9
+ `/team` splits work into parallel tmux panes in the **current window**, each running an independent interactive agent session. You see all agents working side-by-side immediately.
9
10
 
10
- Do:
11
- - Require a plan or clear task.
12
- - Split into lanes with owners, files, and tests.
13
- - Identify dependencies and conflict risks.
14
- - Keep it as a coordination brief, not a runtime.
11
+ ## When to use
15
12
 
16
- Output:
17
- - `Lanes`
18
- - `Shared files`
19
- - `Order/dependencies`
20
- - `Verification`
13
+ - Work has **independent lanes** (no shared files, no ordering constraints)
14
+ - You want visual, demo-friendly parallel execution in split terminals
15
+
16
+ ## Agent execution steps (FOLLOW EXACTLY)
17
+
18
+ When `/team` is invoked, you MUST execute these steps in order:
19
+
20
+ ### Step 1 — Identify lanes
21
+
22
+ Collect independent work lanes from the conversation context. Each lane needs:
23
+ - `id`: short kebab-case identifier (e.g. `lane-a`, `fix-auth`)
24
+ - `name`: human-readable name (e.g. `Upgrade dependencies`)
25
+ - `prompt`: complete task prompt — must be self-contained with all context the agent needs (files to change, what to do, commit message)
26
+
27
+ If no plan or lanes exist yet, ask the user what work to split.
28
+
29
+ ### Step 2 — Write lanes JSON
30
+
31
+ Write a temporary lanes file at `/tmp/team-lanes-<timestamp>.json`:
32
+
33
+ ```json
34
+ [
35
+ {
36
+ "id": "lane-a",
37
+ "name": "Short descriptive name",
38
+ "prompt": "Complete self-contained task prompt for the agent..."
39
+ },
40
+ {
41
+ "id": "lane-b",
42
+ "name": "Another lane name",
43
+ "prompt": "Another complete task prompt..."
44
+ }
45
+ ]
46
+ ```
47
+
48
+ ### Step 3 — Launch the team
49
+
50
+ Run the launch script, passing the session name and lanes file path:
51
+
52
+ ```
53
+ .github/skills/team/scripts/team-launch.sh --session "team-<name>" --lanes <lanes-file>
54
+ ```
55
+
56
+ This will:
57
+ - Split the **current tmux window** into panes (leader keeps its pane)
58
+ - Launch `omp --madmax` interactively in each pane, then send the prompt
59
+ - Arrange panes in a tiled grid layout
60
+ - Print pane IDs and navigation commands
61
+
62
+ ### Step 4 — Report to user
63
+
64
+ Show the user:
65
+ - Which panes were created and what each is working on
66
+ - Navigation: `Ctrl-b + arrow keys` to move between panes
67
+ - How to check output: `tmux capture-pane -t <pane-id> -p -S -50`
68
+ - How to kill panes when done
69
+
70
+ ## Prerequisites
71
+
72
+ - `tmux` installed and running inside a tmux session
73
+ - `omp` (oh-my-copilot) on PATH — preferred, launches with `omp --madmax`
74
+ - Falls back to `copilot` if `omp` is not available
75
+ - `jq` for JSON parsing
76
+
77
+ ## Prompt guidelines
78
+
79
+ Each lane prompt must be **self-contained**. The agent in that pane has no context from this session. Include:
80
+ - Exact files or directories to work in
81
+ - What to do (fix, upgrade, accept, etc.)
82
+ - How to verify (run tests, npm audit, etc.)
83
+ - Commit message to use
84
+
85
+ ### Good prompt example
86
+
87
+ > You are working in /Users/me/project. In src/auth/login.ts, replace the bcrypt password check with argon2. Update the import, change the verify call, and run `npm test -- --grep auth` to confirm. Commit with message "refactor: switch password hashing to argon2".
88
+
89
+ ### Bad prompt example
90
+
91
+ > Fix the auth module. (Too vague — which file? What fix? How to verify?)
92
+
93
+ ## Composition
94
+
95
+ Use `/ralplan` before `/team` to produce the plan that defines lanes. Use `/verify` after all panes complete to confirm combined results don't conflict.
96
+
97
+ ## Limitations
98
+
99
+ - Each pane is an independent agent session — no shared state or messaging
100
+ - Agents cannot communicate with each other — if tasks depend on each other, use `/ralph` instead
101
+ - Leader (you) must manually verify results after all panes complete
102
+ - Best for independent, non-conflicting work streams
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # team-launch.sh — split the CURRENT tmux window into panes, each running
5
+ # an interactive Copilot CLI agent session.
6
+ #
7
+ # Usage:
8
+ # team-launch.sh --session <name> --lanes <lanes.json>
9
+ #
10
+ # Each pane launches an interactive `omp --madmax` (or `copilot`) session,
11
+ # then sends the lane prompt via tmux send-keys so the agent stays alive
12
+ # for follow-up interaction.
13
+
14
+ SESSION=""
15
+ LANES_FILE=""
16
+
17
+ while [[ $# -gt 0 ]]; do
18
+ case "$1" in
19
+ --session) SESSION="$2"; shift 2 ;;
20
+ --lanes) LANES_FILE="$2"; shift 2 ;;
21
+ *) echo "Unknown arg: $1" >&2; exit 1 ;;
22
+ esac
23
+ done
24
+
25
+ if [[ -z "$SESSION" || -z "$LANES_FILE" ]]; then
26
+ echo "Usage: team-launch.sh --session <name> --lanes <lanes.json>" >&2
27
+ exit 1
28
+ fi
29
+
30
+ if [[ ! -f "$LANES_FILE" ]]; then
31
+ echo "Lanes file not found: $LANES_FILE" >&2
32
+ exit 1
33
+ fi
34
+
35
+ if ! command -v tmux &>/dev/null; then
36
+ echo "tmux not found" >&2
37
+ exit 1
38
+ fi
39
+
40
+ if [[ -z "${TMUX:-}" ]]; then
41
+ echo "Not inside a tmux session. Run this from within tmux." >&2
42
+ exit 1
43
+ fi
44
+
45
+ if command -v omp &>/dev/null; then
46
+ AGENT_CMD="omp --madmax"
47
+ elif command -v copilot &>/dev/null; then
48
+ AGENT_CMD="copilot"
49
+ else
50
+ echo "Neither omp nor copilot CLI found" >&2
51
+ exit 1
52
+ fi
53
+
54
+ LANE_COUNT=$(jq length "$LANES_FILE")
55
+ if [[ "$LANE_COUNT" -lt 1 ]]; then
56
+ echo "No lanes defined in $LANES_FILE" >&2
57
+ exit 1
58
+ fi
59
+
60
+ CWD=$(pwd)
61
+ WAIT_SECS="${TEAM_AGENT_WAIT:-5}"
62
+
63
+ echo "🚀 Splitting current window into $LANE_COUNT panes ($SESSION)"
64
+ echo ""
65
+
66
+ # Collect pane IDs as we create them
67
+ PANE_IDS=()
68
+
69
+ for i in $(seq 0 $((LANE_COUNT - 1))); do
70
+ LANE_NAME=$(jq -r ".[$i].name" "$LANES_FILE")
71
+ LANE_PROMPT=$(jq -r ".[$i].prompt" "$LANES_FILE")
72
+ LANE_ID=$(jq -r ".[$i].id" "$LANES_FILE")
73
+
74
+ # Split: alternate horizontal/vertical for a grid
75
+ if (( i == 0 )); then
76
+ PANE_ID=$(tmux split-window -h -c "$CWD" -P -F '#{pane_id}')
77
+ elif (( i % 2 == 1 )); then
78
+ PANE_ID=$(tmux split-window -v -t "${PANE_IDS[$((i-1))]}" -c "$CWD" -P -F '#{pane_id}')
79
+ else
80
+ PANE_ID=$(tmux split-window -v -t "${PANE_IDS[$((i-2))]}" -c "$CWD" -P -F '#{pane_id}')
81
+ fi
82
+
83
+ PANE_IDS+=("$PANE_ID")
84
+
85
+ # Set pane title
86
+ tmux select-pane -t "$PANE_ID" -T "$LANE_ID: $LANE_NAME"
87
+
88
+ # Launch interactive agent session (NOT with -p)
89
+ tmux send-keys -t "$PANE_ID" "echo '═══ $LANE_NAME ═══' && $AGENT_CMD" C-m
90
+
91
+ echo " ✅ Pane $PANE_ID → $LANE_NAME (launching agent...)"
92
+ done
93
+
94
+ # Rebalance layout
95
+ tmux select-layout tiled
96
+
97
+ # Wait for agents to start up before sending prompts
98
+ echo ""
99
+ echo "⏳ Waiting ${WAIT_SECS}s for agents to initialise..."
100
+ sleep "$WAIT_SECS"
101
+
102
+ # Now send prompts to each interactive session
103
+ for i in $(seq 0 $((LANE_COUNT - 1))); do
104
+ LANE_PROMPT=$(jq -r ".[$i].prompt" "$LANES_FILE")
105
+ LANE_NAME=$(jq -r ".[$i].name" "$LANES_FILE")
106
+ PANE_ID="${PANE_IDS[$i]}"
107
+
108
+ # Write prompt to temp file and use tmux load-buffer + paste for reliable delivery
109
+ PROMPT_FILE="/tmp/team-prompt-${SESSION}-${i}.txt"
110
+ printf '%s' "$LANE_PROMPT" > "$PROMPT_FILE"
111
+
112
+ # Send via tmux send-keys -l (literal) then Enter
113
+ tmux send-keys -t "$PANE_ID" -l "$(cat "$PROMPT_FILE")"
114
+ tmux send-keys -t "$PANE_ID" C-m
115
+
116
+ echo " 📨 Sent prompt to $PANE_ID ($LANE_NAME)"
117
+ done
118
+
119
+ # Switch focus back to the original (leader) pane
120
+ tmux select-pane -t '{left}'
121
+
122
+ echo ""
123
+ echo "✅ $LANE_COUNT interactive agent sessions running in split panes"
124
+ echo ""
125
+ echo "Pane IDs: ${PANE_IDS[*]}"
126
+ echo ""
127
+ echo "Commands:"
128
+ echo " tmux select-layout tiled # rebalance layout"
129
+ echo " tmux capture-pane -t <pane-id> -p -S -50 # read pane output"
130
+ echo " Ctrl-b + arrow keys # navigate between panes"
131
+ echo ""
132
+ echo "💡 Agents are interactive — you can send follow-up prompts to any pane"
@@ -7,14 +7,58 @@ description: Adversarial QA pass that tests behavior, failures, and regressions.
7
7
 
8
8
  Use `/ultraqa` after implementation when shallow checks are not enough.
9
9
 
10
- Do:
11
- - Test happy paths, hostile cases, and fallbacks.
12
- - Prefer runnable checks over inspection.
13
- - Record exact failures.
14
- - Route fixes back to `/ralph` or `/ultrawork`.
15
-
16
- Output:
17
- - `Scenarios`
18
- - `Results`
19
- - `Regressions`
20
- - `Fix recommendations`
10
+ ## When to use
11
+
12
+ - Changes are complete but you're not confident they're correct
13
+ - The change touches critical paths (auth, payments, data integrity)
14
+ - You need to verify edge cases, error paths, and regressions
15
+
16
+ ## Do not use when
17
+
18
+ - A simple `npm test` is sufficient — use `/verify`
19
+ - You're still implementing — finish first, then QA
20
+
21
+ ## Steps
22
+
23
+ ### Cycle 1 (and each subsequent cycle)
24
+
25
+ Number every cycle explicitly: "Cycle 1", "Cycle 2", etc.
26
+
27
+ 1. **Identify test surface** — what changed, what could break
28
+ 2. **Run existing tests** — baseline must pass before adversarial testing
29
+ 3. **Test happy path** — primary use case works
30
+ 4. **Test edge cases** — empty inputs, boundary values, concurrent access
31
+ 5. **Test error paths** — timeouts, bad data, missing deps
32
+ 6. **Test regressions** — did anything that previously worked now break?
33
+
34
+ ### After each cycle
35
+
36
+ - If issues found → fix and start next cycle
37
+ - If clean → report PASS and stop
38
+ - Track which issues were found and fixed per cycle
39
+
40
+ ## Early exit conditions
41
+
42
+ - **5 cycles reached** — stop, report remaining issues as known gaps
43
+ - **Same failure 3 consecutive cycles** — stop, this is a design issue not a bug. Report it for `/ralplan`
44
+ - **Critical regression found** — stop immediately, report before fixing anything else
45
+
46
+ ## Severity routing
47
+
48
+ - **Critical** (data loss, security, crash) → immediate stop, fix before continuing
49
+ - **Major** (broken feature, wrong output) → fix in current cycle
50
+ - **Minor** (cosmetic, non-blocking) → log and continue, fix at end if time permits
51
+
52
+ ## Rules
53
+
54
+ - Prefer runnable checks over inspection — run tests, don't just read code
55
+ - If tests don't exist, write minimal ones that cover the change
56
+ - Route fixes back to `/ralph` or `/ultrawork` if they're substantial
57
+
58
+ ## Output
59
+
60
+ - `Cycles` — how many iterations, what was found/fixed in each
61
+ - `Scenarios` — what was tested (happy, edge, error, regression)
62
+ - `Results` — PASS/FAIL with trend across cycles
63
+ - `Regressions` — anything that used to work but now doesn't
64
+ - `Known gaps` — remaining issues after max cycles
@@ -5,16 +5,69 @@ description: High-throughput execution for many independent small tasks. Use wit
5
5
 
6
6
  # Ultrawork
7
7
 
8
- Use `/ultrawork` when there are many independent, low-conflict work items.
9
-
10
- Do:
11
- - Batch independent tasks.
12
- - Avoid shared-file collisions.
13
- - Verify each batch.
14
- - Escalate ambiguous or risky branches to `/ralplan`.
15
-
16
- Output:
17
- - `Batch`
18
- - `Completed`
19
- - `Failed/blockers`
20
- - `Verification`
8
+ Use `/ultrawork` when there are many independent, low-conflict work items that can be batched.
9
+
10
+ ## When to use
11
+
12
+ - 5+ independent tasks with no shared files
13
+ - Work is mechanical or repetitive (e.g. "fix all type errors", "update all imports")
14
+ - Each task can be verified independently
15
+
16
+ ## Do not use when
17
+
18
+ - Tasks share files or have ordering constraints — use `/ralph`
19
+ - Tasks need design decisions — use `/ralplan` first
20
+ - Fewer than 5 items — just do them inline
21
+
22
+ ## Composition
23
+
24
+ Ultrawork is the **parallelism primitive** in the skill stack:
25
+ ```
26
+ /omp-autopilot → /ralph (persistence) → /ultrawork (parallelism)
27
+ ```
28
+ Ralph wraps ultrawork when a persistent verify loop is needed around batched work.
29
+
30
+ ## Steps
31
+
32
+ ### 1. Inventory
33
+
34
+ List all tasks. For each, note the files it touches. Flag any collisions.
35
+
36
+ ### 2. Dependency check
37
+
38
+ If tasks have ordering constraints, group them into **waves**:
39
+ - Wave 1: tasks with no dependencies (fire all at once)
40
+ - Wave 2: tasks that depend on wave 1 results
41
+ - Complete each wave before starting the next
42
+
43
+ If all tasks are independent, use a single wave.
44
+
45
+ ### 3. Execute
46
+
47
+ Process each wave. For each task in the wave:
48
+ - Execute the change
49
+ - Verify it individually (test, lint, type-check)
50
+ - Mark as done or failed
51
+
52
+ ### 4. Report
53
+
54
+ Summarise: completed, failed, blocked.
55
+
56
+ ## Stop conditions
57
+
58
+ - **Failure rate > 30%** — stop remaining tasks, report what failed and why
59
+ - **Shared file collision discovered** — stop, re-partition, or escalate to `/ralph`
60
+ - **Ambiguous task** — skip it, escalate to `/ralplan`
61
+
62
+ ## Rules
63
+
64
+ - Verify each batch before moving to the next
65
+ - If a task is ambiguous or risky, escalate — don't guess
66
+ - Commit after each successful wave, not at the end
67
+
68
+ ## Output
69
+
70
+ - `Waves` — how tasks were grouped
71
+ - `Completed` — items done with evidence
72
+ - `Failed/blockers` — items that couldn't be completed and why
73
+ - `Verification` — test/lint/build results per wave
@@ -7,14 +7,32 @@ description: Prove completion claims with fresh evidence. Use with /verify befor
7
7
 
8
8
  Use `/verify` before saying done.
9
9
 
10
- Do:
11
- - State the claim.
12
- - Run or inspect the smallest checks that prove it.
13
- - Read outputs.
14
- - Report gaps honestly.
15
-
16
- Output:
17
- - `PASS/FAIL`
18
- - `Evidence`
19
- - `Known gaps`
20
- - `Stop condition`
10
+ ## When to use
11
+
12
+ - You've completed a task and need to prove it works
13
+ - Someone claims "it's done" and you need to confirm
14
+ - Before creating a PR or handing off work
15
+
16
+ ## Steps
17
+
18
+ 1. **State the claim** — what is being verified (e.g. "auth flow works end-to-end")
19
+ 2. **Run checks** — the smallest set of commands/inspections that prove the claim:
20
+ - Tests: `npm test`, `pytest`, etc.
21
+ - Build: does it compile/build without errors?
22
+ - Lint: any new warnings?
23
+ - Behaviour: does the feature work as described?
24
+ 3. **Read outputs** — don't assume green means pass; read the actual results
25
+ 4. **Report honestly** — if there are gaps, say so
26
+
27
+ ## Rules
28
+
29
+ - Fresh evidence only — don't rely on previous test runs
30
+ - If a check fails, report it as a gap, don't hide it
31
+ - Verify what was asked for, not more and not less
32
+
33
+ ## Output
34
+
35
+ - `PASS` or `FAIL`
36
+ - `Evidence` — command output, screenshots, or behaviour description
37
+ - `Known gaps` — anything not verified and why
38
+ - `Stop condition` — what would need to change for a different verdict
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: worktree
3
+ description: Guides worktree-based workflow for parallel branch work. Use when user wants to start a new ticket, review a PR, or work on a branch without switching. Also use when user mentions worktree, branch switching, or parallel branch work.
4
+ ---
5
+
6
+ # Worktree Workflow
7
+
8
+ Use `/worktree` to set up a git worktree for a new ticket, PR review, or any branch work.
9
+
10
+ ## Why worktrees?
11
+
12
+ - Your `main` branch stays untouched
13
+ - Work on multiple tickets or reviews in parallel — no stashing, no context-switching
14
+ - Each worktree is a full working copy — run tests, build, etc. independently
15
+
16
+ ## New ticket
17
+
18
+ ```bash
19
+ cd <repo>
20
+ git fetch origin
21
+ git worktree add ../<repo>-<ticket-id> -b <ticket-id>
22
+ cd ../<repo>-<ticket-id>
23
+ ```
24
+
25
+ ## PR review
26
+
27
+ ```bash
28
+ cd <repo>
29
+ git fetch origin
30
+ git worktree add ../<repo>-review-<branch> origin/<branch>
31
+ cd ../<repo>-review-<branch>
32
+ ```
33
+
34
+ ## Cleanup
35
+
36
+ ```bash
37
+ cd <repo>
38
+ git worktree remove ../<repo>-<ticket-id>
39
+ # or list all worktrees
40
+ git worktree list
41
+ ```
42
+
43
+ ## Agent behaviour
44
+
45
+ When the user asks to work on a ticket or review a PR:
46
+
47
+ 1. `cd` into the repo's main clone
48
+ 2. `git fetch origin`
49
+ 3. Create a worktree with a descriptive name (ticket number or PR branch)
50
+ 4. Do all work inside the worktree, not the main clone
51
+ 5. Remind the user to clean up when the work is done