bigpowers 2.87.8 → 2.88.1

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 (93) hide show
  1. package/.agents/skills/commit-message/SKILL.md +4 -2
  2. package/.agents/skills/kickoff-branch/SKILL.md +12 -7
  3. package/.agents/skills/release-branch/SKILL.md +12 -6
  4. package/.agents/skills/survey-context/SKILL.md +11 -6
  5. package/.cline/skills/commit-message/SKILL.md +4 -2
  6. package/.cline/skills/kickoff-branch/SKILL.md +12 -7
  7. package/.cline/skills/release-branch/SKILL.md +12 -6
  8. package/.cline/skills/survey-context/SKILL.md +11 -6
  9. package/.codebuddy/skills/commit-message/SKILL.md +4 -2
  10. package/.codebuddy/skills/kickoff-branch/SKILL.md +12 -7
  11. package/.codebuddy/skills/release-branch/SKILL.md +12 -6
  12. package/.codebuddy/skills/survey-context/SKILL.md +11 -6
  13. package/.codex/skills/commit-message/SKILL.md +4 -2
  14. package/.codex/skills/kickoff-branch/SKILL.md +12 -7
  15. package/.codex/skills/release-branch/SKILL.md +12 -6
  16. package/.codex/skills/survey-context/SKILL.md +11 -6
  17. package/.copilot/skills/commit-message/SKILL.md +4 -2
  18. package/.copilot/skills/kickoff-branch/SKILL.md +12 -7
  19. package/.copilot/skills/release-branch/SKILL.md +12 -6
  20. package/.copilot/skills/survey-context/SKILL.md +11 -6
  21. package/.cursor/rules/commit-message.mdc +4 -2
  22. package/.cursor/rules/kickoff-branch.mdc +12 -7
  23. package/.cursor/rules/release-branch.mdc +12 -6
  24. package/.cursor/rules/survey-context.mdc +11 -6
  25. package/.gemini/extensions/bigpowers/commands/prompts/commit-message.md +4 -2
  26. package/.gemini/extensions/bigpowers/commands/prompts/kickoff-branch.md +12 -7
  27. package/.gemini/extensions/bigpowers/commands/prompts/release-branch.md +12 -6
  28. package/.gemini/extensions/bigpowers/commands/prompts/survey-context.md +11 -6
  29. package/.gemini/extensions/bigpowers/gemini-extension.json +1 -1
  30. package/.gemini/extensions/bigpowers/skills/commit-message/SKILL.md +4 -2
  31. package/.gemini/extensions/bigpowers/skills/kickoff-branch/SKILL.md +12 -7
  32. package/.gemini/extensions/bigpowers/skills/release-branch/SKILL.md +12 -6
  33. package/.gemini/extensions/bigpowers/skills/survey-context/SKILL.md +11 -6
  34. package/.hermes/skills/commit-message/SKILL.md +4 -2
  35. package/.hermes/skills/kickoff-branch/SKILL.md +12 -7
  36. package/.hermes/skills/release-branch/SKILL.md +12 -6
  37. package/.hermes/skills/survey-context/SKILL.md +11 -6
  38. package/.kilocode/rules/commit-message.md +4 -2
  39. package/.kilocode/rules/kickoff-branch.md +12 -7
  40. package/.kilocode/rules/release-branch.md +12 -6
  41. package/.kilocode/rules/survey-context.md +11 -6
  42. package/.mimocode/skills/commit-message/SKILL.md +4 -2
  43. package/.mimocode/skills/kickoff-branch/SKILL.md +12 -7
  44. package/.mimocode/skills/release-branch/SKILL.md +12 -6
  45. package/.mimocode/skills/survey-context/SKILL.md +11 -6
  46. package/.opencode/skills/commit-message/SKILL.md +4 -2
  47. package/.opencode/skills/kickoff-branch/SKILL.md +12 -7
  48. package/.opencode/skills/release-branch/SKILL.md +12 -6
  49. package/.opencode/skills/survey-context/SKILL.md +11 -6
  50. package/.pi/package.json +1 -1
  51. package/.pi/prompts/commit-message.md +4 -2
  52. package/.pi/prompts/kickoff-branch.md +12 -7
  53. package/.pi/prompts/release-branch.md +12 -6
  54. package/.pi/prompts/survey-context.md +11 -6
  55. package/.pi/skills/commit-message/SKILL.md +4 -2
  56. package/.pi/skills/kickoff-branch/SKILL.md +12 -7
  57. package/.pi/skills/release-branch/SKILL.md +12 -6
  58. package/.pi/skills/survey-context/SKILL.md +11 -6
  59. package/.qwen/skills/commit-message/SKILL.md +4 -2
  60. package/.qwen/skills/kickoff-branch/SKILL.md +12 -7
  61. package/.qwen/skills/release-branch/SKILL.md +12 -6
  62. package/.qwen/skills/survey-context/SKILL.md +11 -6
  63. package/.trae/skills/commit-message/SKILL.md +4 -2
  64. package/.trae/skills/kickoff-branch/SKILL.md +12 -7
  65. package/.trae/skills/release-branch/SKILL.md +12 -6
  66. package/.trae/skills/survey-context/SKILL.md +11 -6
  67. package/.windsurf/rules/commit-message.md +4 -2
  68. package/.windsurf/rules/kickoff-branch.md +12 -7
  69. package/.windsurf/rules/release-branch.md +12 -6
  70. package/.windsurf/rules/survey-context.md +11 -6
  71. package/.zcode/skills/commit-message/SKILL.md +4 -2
  72. package/.zcode/skills/kickoff-branch/SKILL.md +12 -7
  73. package/.zcode/skills/release-branch/SKILL.md +12 -6
  74. package/.zcode/skills/survey-context/SKILL.md +11 -6
  75. package/CHANGELOG.md +14 -0
  76. package/CONTRIBUTORS.md +48 -0
  77. package/README.md +8 -0
  78. package/SKILL-INDEX.md +1 -1
  79. package/extensions/omp-hooks.ts +416 -0
  80. package/hooks/pre/bash.sh +47 -0
  81. package/package.json +6 -2
  82. package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
  83. package/scripts/lib/__pycache__/srp_engine_links.cpython-312.pyc +0 -0
  84. package/scripts/lib/golden-suite-gates.sh +2 -0
  85. package/scripts/lib/project-runtime.sh +110 -0
  86. package/scripts/omp-smoke.ts +116 -0
  87. package/scripts/test-project-runtime.sh +91 -0
  88. package/scripts/validate-omp-extension.sh +126 -0
  89. package/skills/commit-message/SKILL.md +4 -2
  90. package/skills/kickoff-branch/SKILL.md +12 -7
  91. package/skills/release-branch/SKILL.md +12 -6
  92. package/skills/survey-context/SKILL.md +11 -6
  93. package/skills-lock.json +5 -5
@@ -4,6 +4,8 @@ model: haiku
4
4
  description: "Per-task context bootstrap — reads existing specs/ and tech-architecture docs to map the current lifecycle phase and suggest the next skill. Use at the start of any task, when returning after a break, or when unsure what to do next. For deriving a tech-stack doc from scratch, use map-codebase first."
5
5
  ---
6
6
 
7
+ # story: e82s02
8
+
7
9
  # Survey Context
8
10
 
9
11
  Read the project's current state and give a phase map + next-skill recommendation. This is the "where am I?" skill — run it at the start of every task.
@@ -51,15 +53,18 @@ Legacy markdown (`specs/archive/STATE.md`, `RELEASE-PLAN.md`) is **not** SoT if
51
53
 
52
54
  If `CLAUDE.md` exists at the project root, read it for project context (stack, commands, architecture, conventions).
53
55
 
54
- ### 4. Check git state
56
+ ### 4. Check VCS state
57
+
58
+ Read `state.yaml` `vcs.kind` (or resolve `auto`). Use native identity:
55
59
 
56
60
  ```bash
57
- git status --short
58
- git log --oneline -5
59
- git branch --show-current
61
+ # Git
62
+ git status --short; git log --oneline -5; git branch --show-current
63
+ # Jujutsu
64
+ jj status; jj log -r 'mine() & ::@' -n 5
60
65
  ```
61
66
 
62
- Note: is there a feature branch active? Are there uncommitted changes? Do they match `specs/state.yaml` `git` block?
67
+ For Jujutsu, compare stable change IDs and bookmarks with the `vcs` block; never interpret colocated Git's detached HEAD as branch state.
63
68
 
64
69
  ### 5. Map the lifecycle phase
65
70
 
@@ -124,7 +129,7 @@ Loop through all `specs/epics/*/epic.yaml` files and print a summary of story co
124
129
 
125
130
  ### check-gates (absorbed)
126
131
 
127
- Print the current `active_flow` from `specs/state.yaml`, run `bash scripts/validate-specs-yaml.sh` to verify YAML integrity, and show `git status` to report uncommitted changes and branch state. Use before handoffs or context transitions.
132
+ Print `active_flow`, validate YAML, then show `git status` or `jj status` according to `vcs.kind`. Use before handoffs or context transitions.
128
133
 
129
134
  ## Handoff
130
135
 
@@ -4,6 +4,8 @@ model: haiku
4
4
  description: "Reviews working-tree changes, then drafts a Conventional Commits title/body and states the semantic-release version bump a single such commit would imply. Also notes which defensive-code categories were touched. Use when the user wants to commit recent work, prepare a Conventional Commits message, or asks for semantic-release / semver-consistent messaging before git commit."
5
5
  ---
6
6
 
7
+ # story: e82s02
8
+
7
9
  # Commit Message
8
10
  > **HARD GATE** — **HARD GATE** — Commits must follow Conventional Commits spec (type(scope): description). Do NOT use vague messages like 'fix' or 'updates.' The message must explain the 'why,' not the 'what.'
9
11
 
@@ -15,7 +17,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
15
17
 
16
18
  ## What "last chat" means
17
19
 
18
- - **Primary source of truth:** `git status`, `git diff` (unstaged), and `git diff --cached` (staged). Run these in the repo root (or the paths the user changed).
20
+ - **Primary source of truth:** Read `state.yaml` `vcs.kind`. Git uses `git status`, `git diff`, and `git diff --cached`; Jujutsu uses `jj status`, `jj diff`, and `jj log -r @`. Run in the repo root.
19
21
  - **Context:** use the current conversation to summarize *intent* and to spot **breaking** API/behavior changes that diff alone may not show.
20
22
  - If the user tracks a session baseline (e.g. branch, tag, or `git stash create` at start), you may `git diff <baseline>..HEAD` plus uncommitted diffs; otherwise use only the index and working tree.
21
23
 
@@ -30,7 +32,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
30
32
  7. **Deliver** — Output:
31
33
  - Proposed **full commit message** (title + optional body + footers).
32
34
  - **Release bump** this commit would drive: `patch` | `minor` | `major` | `none`.
33
- - Optional `git add …` and `git commit -m` instructions; do **not** run destructive git commands unless the user asked.
35
+ - Optional native command: Git `git commit -m`; Jujutsu `jj commit -m`. Never omit `-m` or run destructive commands unless asked.
34
36
 
35
37
  ## Checklist before finalizing
36
38
 
@@ -1,20 +1,21 @@
1
1
  ---
2
2
  name: kickoff-branch
3
3
  model: haiku
4
- description: "Create a git worktree and feature branch, then verify a clean test baseline before any code is written. Use when starting a new feature or task, when user wants to work in isolation from main, or mentions \"start a branch\" or \"new worktree\"."
4
+ description: "Create an isolated Git worktree/branch or Jujutsu workspace, then verify a clean test baseline before code. Use when starting a feature or task."
5
5
  ---
6
6
 
7
7
  # story: e51s03
8
8
  # story: e20s03
9
+ # story: e82s02
9
10
 
10
11
 
11
12
  # Kickoff Branch
12
13
 
13
- > **HARD GATE** — Direct work on `main` or `master` is PROHIBITED. Every task MUST start with this skill to create a feature branch or worktree.
14
+ > **HARD GATE** — Direct Git work on `main`/`master` or reuse of an unrelated Jujutsu change is prohibited. Create a feature branch/worktree or Jujutsu workspace/change.
14
15
  >
15
16
  > **HARD GATE** — Do NOT proceed with development until **Preflight** passes on the default branch. Red Preflight blocks branch creation and all forward work — invoke `quick-fix` or `fix-bug` per CONVENTIONS § Discovered Defects.
16
17
 
17
- Create an isolated working environment before touching any code. **Preflight must be green** before you write feature code — solo-default owns the whole tree, not just the current task diff.
18
+ Create an isolated Git worktree or Jujutsu workspace before code. **Preflight must be green** first — solo-default owns the whole tree.
18
19
 
19
20
  ## Process
20
21
 
@@ -22,9 +23,13 @@ Create an isolated working environment before touching any code. **Preflight mus
22
23
 
23
24
  Ask if not already known: "What's the name of this feature or task?" Use it as the branch name slug (kebab-case, max 40 chars).
24
25
 
25
- ### 2. Anchor on default branch (main or master)
26
+ ### 2. Select the VCS procedure
26
27
 
27
- > **HARD GATE** — Kickoff MUST start from an updated, clean default branch in the **primary** repository root (not a linked worktree).
28
+ Read `state.yaml` `vcs.kind`. For `jj`, do not run the Git blocks below: verify with `jj status` and `jj log -r '::@' -n 5`, create isolation with `jj workspace add ../<task-slug> -r @`, then run `jj -R ../<task-slug> describe -m "feat: <task>"`. Record the new stable change ID. For `git`, continue below.
29
+
30
+ ### 2a. Anchor Git on the default branch (main or master)
31
+
32
+ > **HARD GATE** — Git kickoff MUST start from an updated, clean default branch in the **primary** repository root (not a linked worktree).
28
33
 
29
34
  ```bash
30
35
  # Detect default branch
@@ -63,7 +68,7 @@ fi
63
68
  - **Non-spec dirty files** (src/, scripts/, SKILL.md, …) still enforce the full clean-tree gate.
64
69
  - If not on `$DEFAULT` after checkout, stop and fix before continuing.
65
70
 
66
- ### 3. Pre-flight & Conflict Resolution
71
+ ### 3. Git pre-flight & conflict resolution
67
72
 
68
73
  Before creating the worktree, verify the target environment is clean:
69
74
 
@@ -83,7 +88,7 @@ git worktree list | grep "<task-slug>"
83
88
  - **Branch exists:** If the branch exists but no worktree is attached, ask to use the existing branch (`git worktree add ../<task-slug> <task-slug>`) or delete it.
84
89
  - **Ghost worktree:** If `git worktree list` shows the path but the directory is missing, run `git worktree prune` to clear the stale metadata. `bash scripts/cleanup-worktrees.sh` does this plus reports any worktree whose branch is already merged or deleted — advisory only, it prints the `git worktree remove`/`git branch -d` commands rather than running them, so review before acting.
85
90
 
86
- ### 4. Create worktree + branch
91
+ ### 4. Create Git worktree + branch
87
92
 
88
93
  ```bash
89
94
  # From the main repo root (not another worktree)
@@ -8,6 +8,7 @@ description: "Make the merge/PR/keep/discard decision for a feature branch, veri
8
8
  <!-- story: e45s15 -->
9
9
  <!-- story: e45s32 -->
10
10
  <!-- story: e45s39 -->
11
+ <!-- story: e82s02 -->
11
12
  <!-- story: e20s02 -->
12
13
 
13
14
 
@@ -30,7 +31,7 @@ Read `specs/state.yaml` key `workflow_mode` (`team-pr` | `solo-git`). Fall back
30
31
  | **solo-local** | `workflow_mode: solo-git` | Auto: `scripts/land-branch.sh` if present, else fallback (Step 5) |
31
32
  | **team-pr** | `workflow_mode: team-pr` (default) | `gh pr create` → `gh pr merge --squash` |
32
33
 
33
- If unsure, prefer **solo-local**.
34
+ If unsure, prefer **solo-local**. Also read `state.yaml` `vcs.kind`: Git follows the procedures below; Jujutsu uses workspaces/bookmarks and must not call Git-only landing scripts.
34
35
 
35
36
  ## Process
36
37
 
@@ -73,16 +74,21 @@ Run `gate-trace` before merge. FAIL blocks merge; CONCERNS requires explicit ove
73
74
 
74
75
  Options: **Release (solo-local)** / **Open PR** / **Keep branch** / **Discard**
75
76
 
76
- ### 5. Solo-local integrate
77
+ ### 5. Integrate
77
78
 
78
- Run `commit-message` for the squash subject, then land:
79
+ Run `commit-message` first. Git solo-local uses `land-branch.sh`. Jujutsu team mode explicitly advances and pushes a bookmark; `-m` is mandatory for commit/describe operations:
79
80
 
80
81
  ```bash
81
- # Path A (preferred):
82
+ # Git solo-local
82
83
  bash scripts/land-branch.sh <task-slug> "feat(scope): description"
83
- # Path B (fallback if land-branch.sh missing): see REFERENCE.md
84
+ # Jujutsu team PR
85
+ jj describe -m "feat(scope): description"
86
+ jj bookmark set <task-slug> -r @
87
+ jj git push -b <task-slug>
84
88
  ```
85
89
 
90
+ Jujutsu solo-local landing is unsupported: run `bp_require_vcs_operation "$PWD" land-branch` and stop with its remediation instead of invoking the Git backend.
91
+
86
92
  ### 6. Create PR (team-pr only)
87
93
 
88
94
  Create the pull request with a **literal provenance marker** in the body so agent-generated PRs are identifiable and do not rot silently:
@@ -131,7 +137,7 @@ bash scripts/wait-for-ci.sh --timeout 600 --interval 30
131
137
 
132
138
  ### 8. Clean up & return
133
139
 
134
- Worktree prune, branch delete, `git checkout main`. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).
140
+ Git: prune worktree, delete branch, return to main. Jujutsu: `jj workspace forget <workspace>` only after integration; do not delete its bookmark implicitly. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).
135
141
 
136
142
  Report: "Branch released."
137
143
 
@@ -4,6 +4,8 @@ model: haiku
4
4
  description: "Per-task context bootstrap — reads existing specs/ and tech-architecture docs to map the current lifecycle phase and suggest the next skill. Use at the start of any task, when returning after a break, or when unsure what to do next. For deriving a tech-stack doc from scratch, use map-codebase first."
5
5
  ---
6
6
 
7
+ # story: e82s02
8
+
7
9
  # Survey Context
8
10
 
9
11
  Read the project's current state and give a phase map + next-skill recommendation. This is the "where am I?" skill — run it at the start of every task.
@@ -51,15 +53,18 @@ Legacy markdown (`specs/archive/STATE.md`, `RELEASE-PLAN.md`) is **not** SoT if
51
53
 
52
54
  If `CLAUDE.md` exists at the project root, read it for project context (stack, commands, architecture, conventions).
53
55
 
54
- ### 4. Check git state
56
+ ### 4. Check VCS state
57
+
58
+ Read `state.yaml` `vcs.kind` (or resolve `auto`). Use native identity:
55
59
 
56
60
  ```bash
57
- git status --short
58
- git log --oneline -5
59
- git branch --show-current
61
+ # Git
62
+ git status --short; git log --oneline -5; git branch --show-current
63
+ # Jujutsu
64
+ jj status; jj log -r 'mine() & ::@' -n 5
60
65
  ```
61
66
 
62
- Note: is there a feature branch active? Are there uncommitted changes? Do they match `specs/state.yaml` `git` block?
67
+ For Jujutsu, compare stable change IDs and bookmarks with the `vcs` block; never interpret colocated Git's detached HEAD as branch state.
63
68
 
64
69
  ### 5. Map the lifecycle phase
65
70
 
@@ -124,7 +129,7 @@ Loop through all `specs/epics/*/epic.yaml` files and print a summary of story co
124
129
 
125
130
  ### check-gates (absorbed)
126
131
 
127
- Print the current `active_flow` from `specs/state.yaml`, run `bash scripts/validate-specs-yaml.sh` to verify YAML integrity, and show `git status` to report uncommitted changes and branch state. Use before handoffs or context transitions.
132
+ Print `active_flow`, validate YAML, then show `git status` or `jj status` according to `vcs.kind`. Use before handoffs or context transitions.
128
133
 
129
134
  ## Handoff
130
135
 
@@ -4,6 +4,8 @@ model: haiku
4
4
  description: "Reviews working-tree changes, then drafts a Conventional Commits title/body and states the semantic-release version bump a single such commit would imply. Also notes which defensive-code categories were touched. Use when the user wants to commit recent work, prepare a Conventional Commits message, or asks for semantic-release / semver-consistent messaging before git commit."
5
5
  ---
6
6
 
7
+ # story: e82s02
8
+
7
9
  # Commit Message
8
10
  > **HARD GATE** — **HARD GATE** — Commits must follow Conventional Commits spec (type(scope): description). Do NOT use vague messages like 'fix' or 'updates.' The message must explain the 'why,' not the 'what.'
9
11
 
@@ -15,7 +17,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
15
17
 
16
18
  ## What "last chat" means
17
19
 
18
- - **Primary source of truth:** `git status`, `git diff` (unstaged), and `git diff --cached` (staged). Run these in the repo root (or the paths the user changed).
20
+ - **Primary source of truth:** Read `state.yaml` `vcs.kind`. Git uses `git status`, `git diff`, and `git diff --cached`; Jujutsu uses `jj status`, `jj diff`, and `jj log -r @`. Run in the repo root.
19
21
  - **Context:** use the current conversation to summarize *intent* and to spot **breaking** API/behavior changes that diff alone may not show.
20
22
  - If the user tracks a session baseline (e.g. branch, tag, or `git stash create` at start), you may `git diff <baseline>..HEAD` plus uncommitted diffs; otherwise use only the index and working tree.
21
23
 
@@ -30,7 +32,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
30
32
  7. **Deliver** — Output:
31
33
  - Proposed **full commit message** (title + optional body + footers).
32
34
  - **Release bump** this commit would drive: `patch` | `minor` | `major` | `none`.
33
- - Optional `git add …` and `git commit -m` instructions; do **not** run destructive git commands unless the user asked.
35
+ - Optional native command: Git `git commit -m`; Jujutsu `jj commit -m`. Never omit `-m` or run destructive commands unless asked.
34
36
 
35
37
  ## Checklist before finalizing
36
38
 
@@ -1,20 +1,21 @@
1
1
  ---
2
2
  name: kickoff-branch
3
3
  model: haiku
4
- description: "Create a git worktree and feature branch, then verify a clean test baseline before any code is written. Use when starting a new feature or task, when user wants to work in isolation from main, or mentions \"start a branch\" or \"new worktree\"."
4
+ description: "Create an isolated Git worktree/branch or Jujutsu workspace, then verify a clean test baseline before code. Use when starting a feature or task."
5
5
  ---
6
6
 
7
7
  # story: e51s03
8
8
  # story: e20s03
9
+ # story: e82s02
9
10
 
10
11
 
11
12
  # Kickoff Branch
12
13
 
13
- > **HARD GATE** — Direct work on `main` or `master` is PROHIBITED. Every task MUST start with this skill to create a feature branch or worktree.
14
+ > **HARD GATE** — Direct Git work on `main`/`master` or reuse of an unrelated Jujutsu change is prohibited. Create a feature branch/worktree or Jujutsu workspace/change.
14
15
  >
15
16
  > **HARD GATE** — Do NOT proceed with development until **Preflight** passes on the default branch. Red Preflight blocks branch creation and all forward work — invoke `quick-fix` or `fix-bug` per CONVENTIONS § Discovered Defects.
16
17
 
17
- Create an isolated working environment before touching any code. **Preflight must be green** before you write feature code — solo-default owns the whole tree, not just the current task diff.
18
+ Create an isolated Git worktree or Jujutsu workspace before code. **Preflight must be green** first — solo-default owns the whole tree.
18
19
 
19
20
  ## Process
20
21
 
@@ -22,9 +23,13 @@ Create an isolated working environment before touching any code. **Preflight mus
22
23
 
23
24
  Ask if not already known: "What's the name of this feature or task?" Use it as the branch name slug (kebab-case, max 40 chars).
24
25
 
25
- ### 2. Anchor on default branch (main or master)
26
+ ### 2. Select the VCS procedure
26
27
 
27
- > **HARD GATE** — Kickoff MUST start from an updated, clean default branch in the **primary** repository root (not a linked worktree).
28
+ Read `state.yaml` `vcs.kind`. For `jj`, do not run the Git blocks below: verify with `jj status` and `jj log -r '::@' -n 5`, create isolation with `jj workspace add ../<task-slug> -r @`, then run `jj -R ../<task-slug> describe -m "feat: <task>"`. Record the new stable change ID. For `git`, continue below.
29
+
30
+ ### 2a. Anchor Git on the default branch (main or master)
31
+
32
+ > **HARD GATE** — Git kickoff MUST start from an updated, clean default branch in the **primary** repository root (not a linked worktree).
28
33
 
29
34
  ```bash
30
35
  # Detect default branch
@@ -63,7 +68,7 @@ fi
63
68
  - **Non-spec dirty files** (src/, scripts/, SKILL.md, …) still enforce the full clean-tree gate.
64
69
  - If not on `$DEFAULT` after checkout, stop and fix before continuing.
65
70
 
66
- ### 3. Pre-flight & Conflict Resolution
71
+ ### 3. Git pre-flight & conflict resolution
67
72
 
68
73
  Before creating the worktree, verify the target environment is clean:
69
74
 
@@ -83,7 +88,7 @@ git worktree list | grep "<task-slug>"
83
88
  - **Branch exists:** If the branch exists but no worktree is attached, ask to use the existing branch (`git worktree add ../<task-slug> <task-slug>`) or delete it.
84
89
  - **Ghost worktree:** If `git worktree list` shows the path but the directory is missing, run `git worktree prune` to clear the stale metadata. `bash scripts/cleanup-worktrees.sh` does this plus reports any worktree whose branch is already merged or deleted — advisory only, it prints the `git worktree remove`/`git branch -d` commands rather than running them, so review before acting.
85
90
 
86
- ### 4. Create worktree + branch
91
+ ### 4. Create Git worktree + branch
87
92
 
88
93
  ```bash
89
94
  # From the main repo root (not another worktree)
@@ -8,6 +8,7 @@ description: "Make the merge/PR/keep/discard decision for a feature branch, veri
8
8
  <!-- story: e45s15 -->
9
9
  <!-- story: e45s32 -->
10
10
  <!-- story: e45s39 -->
11
+ <!-- story: e82s02 -->
11
12
  <!-- story: e20s02 -->
12
13
 
13
14
 
@@ -30,7 +31,7 @@ Read `specs/state.yaml` key `workflow_mode` (`team-pr` | `solo-git`). Fall back
30
31
  | **solo-local** | `workflow_mode: solo-git` | Auto: `scripts/land-branch.sh` if present, else fallback (Step 5) |
31
32
  | **team-pr** | `workflow_mode: team-pr` (default) | `gh pr create` → `gh pr merge --squash` |
32
33
 
33
- If unsure, prefer **solo-local**.
34
+ If unsure, prefer **solo-local**. Also read `state.yaml` `vcs.kind`: Git follows the procedures below; Jujutsu uses workspaces/bookmarks and must not call Git-only landing scripts.
34
35
 
35
36
  ## Process
36
37
 
@@ -73,16 +74,21 @@ Run `gate-trace` before merge. FAIL blocks merge; CONCERNS requires explicit ove
73
74
 
74
75
  Options: **Release (solo-local)** / **Open PR** / **Keep branch** / **Discard**
75
76
 
76
- ### 5. Solo-local integrate
77
+ ### 5. Integrate
77
78
 
78
- Run `commit-message` for the squash subject, then land:
79
+ Run `commit-message` first. Git solo-local uses `land-branch.sh`. Jujutsu team mode explicitly advances and pushes a bookmark; `-m` is mandatory for commit/describe operations:
79
80
 
80
81
  ```bash
81
- # Path A (preferred):
82
+ # Git solo-local
82
83
  bash scripts/land-branch.sh <task-slug> "feat(scope): description"
83
- # Path B (fallback if land-branch.sh missing): see REFERENCE.md
84
+ # Jujutsu team PR
85
+ jj describe -m "feat(scope): description"
86
+ jj bookmark set <task-slug> -r @
87
+ jj git push -b <task-slug>
84
88
  ```
85
89
 
90
+ Jujutsu solo-local landing is unsupported: run `bp_require_vcs_operation "$PWD" land-branch` and stop with its remediation instead of invoking the Git backend.
91
+
86
92
  ### 6. Create PR (team-pr only)
87
93
 
88
94
  Create the pull request with a **literal provenance marker** in the body so agent-generated PRs are identifiable and do not rot silently:
@@ -131,7 +137,7 @@ bash scripts/wait-for-ci.sh --timeout 600 --interval 30
131
137
 
132
138
  ### 8. Clean up & return
133
139
 
134
- Worktree prune, branch delete, `git checkout main`. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).
140
+ Git: prune worktree, delete branch, return to main. Jujutsu: `jj workspace forget <workspace>` only after integration; do not delete its bookmark implicitly. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).
135
141
 
136
142
  Report: "Branch released."
137
143
 
@@ -4,6 +4,8 @@ model: haiku
4
4
  description: "Per-task context bootstrap — reads existing specs/ and tech-architecture docs to map the current lifecycle phase and suggest the next skill. Use at the start of any task, when returning after a break, or when unsure what to do next. For deriving a tech-stack doc from scratch, use map-codebase first."
5
5
  ---
6
6
 
7
+ # story: e82s02
8
+
7
9
  # Survey Context
8
10
 
9
11
  Read the project's current state and give a phase map + next-skill recommendation. This is the "where am I?" skill — run it at the start of every task.
@@ -51,15 +53,18 @@ Legacy markdown (`specs/archive/STATE.md`, `RELEASE-PLAN.md`) is **not** SoT if
51
53
 
52
54
  If `CLAUDE.md` exists at the project root, read it for project context (stack, commands, architecture, conventions).
53
55
 
54
- ### 4. Check git state
56
+ ### 4. Check VCS state
57
+
58
+ Read `state.yaml` `vcs.kind` (or resolve `auto`). Use native identity:
55
59
 
56
60
  ```bash
57
- git status --short
58
- git log --oneline -5
59
- git branch --show-current
61
+ # Git
62
+ git status --short; git log --oneline -5; git branch --show-current
63
+ # Jujutsu
64
+ jj status; jj log -r 'mine() & ::@' -n 5
60
65
  ```
61
66
 
62
- Note: is there a feature branch active? Are there uncommitted changes? Do they match `specs/state.yaml` `git` block?
67
+ For Jujutsu, compare stable change IDs and bookmarks with the `vcs` block; never interpret colocated Git's detached HEAD as branch state.
63
68
 
64
69
  ### 5. Map the lifecycle phase
65
70
 
@@ -124,7 +129,7 @@ Loop through all `specs/epics/*/epic.yaml` files and print a summary of story co
124
129
 
125
130
  ### check-gates (absorbed)
126
131
 
127
- Print the current `active_flow` from `specs/state.yaml`, run `bash scripts/validate-specs-yaml.sh` to verify YAML integrity, and show `git status` to report uncommitted changes and branch state. Use before handoffs or context transitions.
132
+ Print `active_flow`, validate YAML, then show `git status` or `jj status` according to `vcs.kind`. Use before handoffs or context transitions.
128
133
 
129
134
  ## Handoff
130
135
 
package/.pi/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.87.8",
3
+ "version": "2.88.1",
4
4
  "description": "81 skills — 73 agent skills synthesizing 17 years of software engineering discipline into a prescriptive methodology for solo developers",
5
5
  "keywords": [
6
6
  "pi-package"
@@ -3,6 +3,8 @@ name: commit-message
3
3
  description: "Reviews working-tree changes, then drafts a Conventional Commits title/body and states the semantic-release version bump a single such commit would imply. Also notes which defensive-code categories were touched. Use when the user wants to commit recent work, prepare a Conventional Commits message, or asks for semantic-release / semver-consistent messaging before git commit."
4
4
  ---
5
5
 
6
+ # story: e82s02
7
+
6
8
  # Commit Message
7
9
  > **HARD GATE** — **HARD GATE** — Commits must follow Conventional Commits spec (type(scope): description). Do NOT use vague messages like 'fix' or 'updates.' The message must explain the 'why,' not the 'what.'
8
10
 
@@ -14,7 +16,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
14
16
 
15
17
  ## What "last chat" means
16
18
 
17
- - **Primary source of truth:** `git status`, `git diff` (unstaged), and `git diff --cached` (staged). Run these in the repo root (or the paths the user changed).
19
+ - **Primary source of truth:** Read `state.yaml` `vcs.kind`. Git uses `git status`, `git diff`, and `git diff --cached`; Jujutsu uses `jj status`, `jj diff`, and `jj log -r @`. Run in the repo root.
18
20
  - **Context:** use the current conversation to summarize *intent* and to spot **breaking** API/behavior changes that diff alone may not show.
19
21
  - If the user tracks a session baseline (e.g. branch, tag, or `git stash create` at start), you may `git diff <baseline>..HEAD` plus uncommitted diffs; otherwise use only the index and working tree.
20
22
 
@@ -29,7 +31,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
29
31
  7. **Deliver** — Output:
30
32
  - Proposed **full commit message** (title + optional body + footers).
31
33
  - **Release bump** this commit would drive: `patch` | `minor` | `major` | `none`.
32
- - Optional `git add …` and `git commit -m` instructions; do **not** run destructive git commands unless the user asked.
34
+ - Optional native command: Git `git commit -m`; Jujutsu `jj commit -m`. Never omit `-m` or run destructive commands unless asked.
33
35
 
34
36
  ## Checklist before finalizing
35
37
 
@@ -1,19 +1,20 @@
1
1
  ---
2
2
  name: kickoff-branch
3
- description: "Create a git worktree and feature branch, then verify a clean test baseline before any code is written. Use when starting a new feature or task, when user wants to work in isolation from main, or mentions \"start a branch\" or \"new worktree\"."
3
+ description: "Create an isolated Git worktree/branch or Jujutsu workspace, then verify a clean test baseline before code. Use when starting a feature or task."
4
4
  ---
5
5
 
6
6
  # story: e51s03
7
7
  # story: e20s03
8
+ # story: e82s02
8
9
 
9
10
 
10
11
  # Kickoff Branch
11
12
 
12
- > **HARD GATE** — Direct work on `main` or `master` is PROHIBITED. Every task MUST start with this skill to create a feature branch or worktree.
13
+ > **HARD GATE** — Direct Git work on `main`/`master` or reuse of an unrelated Jujutsu change is prohibited. Create a feature branch/worktree or Jujutsu workspace/change.
13
14
  >
14
15
  > **HARD GATE** — Do NOT proceed with development until **Preflight** passes on the default branch. Red Preflight blocks branch creation and all forward work — invoke `quick-fix` or `fix-bug` per CONVENTIONS § Discovered Defects.
15
16
 
16
- Create an isolated working environment before touching any code. **Preflight must be green** before you write feature code — solo-default owns the whole tree, not just the current task diff.
17
+ Create an isolated Git worktree or Jujutsu workspace before code. **Preflight must be green** first — solo-default owns the whole tree.
17
18
 
18
19
  ## Process
19
20
 
@@ -21,9 +22,13 @@ Create an isolated working environment before touching any code. **Preflight mus
21
22
 
22
23
  Ask if not already known: "What's the name of this feature or task?" Use it as the branch name slug (kebab-case, max 40 chars).
23
24
 
24
- ### 2. Anchor on default branch (main or master)
25
+ ### 2. Select the VCS procedure
25
26
 
26
- > **HARD GATE** — Kickoff MUST start from an updated, clean default branch in the **primary** repository root (not a linked worktree).
27
+ Read `state.yaml` `vcs.kind`. For `jj`, do not run the Git blocks below: verify with `jj status` and `jj log -r '::@' -n 5`, create isolation with `jj workspace add ../<task-slug> -r @`, then run `jj -R ../<task-slug> describe -m "feat: <task>"`. Record the new stable change ID. For `git`, continue below.
28
+
29
+ ### 2a. Anchor Git on the default branch (main or master)
30
+
31
+ > **HARD GATE** — Git kickoff MUST start from an updated, clean default branch in the **primary** repository root (not a linked worktree).
27
32
 
28
33
  ```bash
29
34
  # Detect default branch
@@ -62,7 +67,7 @@ fi
62
67
  - **Non-spec dirty files** (src/, scripts/, SKILL.md, …) still enforce the full clean-tree gate.
63
68
  - If not on `$DEFAULT` after checkout, stop and fix before continuing.
64
69
 
65
- ### 3. Pre-flight & Conflict Resolution
70
+ ### 3. Git pre-flight & conflict resolution
66
71
 
67
72
  Before creating the worktree, verify the target environment is clean:
68
73
 
@@ -82,7 +87,7 @@ git worktree list | grep "<task-slug>"
82
87
  - **Branch exists:** If the branch exists but no worktree is attached, ask to use the existing branch (`git worktree add ../<task-slug> <task-slug>`) or delete it.
83
88
  - **Ghost worktree:** If `git worktree list` shows the path but the directory is missing, run `git worktree prune` to clear the stale metadata. `bash scripts/cleanup-worktrees.sh` does this plus reports any worktree whose branch is already merged or deleted — advisory only, it prints the `git worktree remove`/`git branch -d` commands rather than running them, so review before acting.
84
89
 
85
- ### 4. Create worktree + branch
90
+ ### 4. Create Git worktree + branch
86
91
 
87
92
  ```bash
88
93
  # From the main repo root (not another worktree)
@@ -7,6 +7,7 @@ description: "Make the merge/PR/keep/discard decision for a feature branch, veri
7
7
  <!-- story: e45s15 -->
8
8
  <!-- story: e45s32 -->
9
9
  <!-- story: e45s39 -->
10
+ <!-- story: e82s02 -->
10
11
  <!-- story: e20s02 -->
11
12
 
12
13
 
@@ -29,7 +30,7 @@ Read `specs/state.yaml` key `workflow_mode` (`team-pr` | `solo-git`). Fall back
29
30
  | **solo-local** | `workflow_mode: solo-git` | Auto: `scripts/land-branch.sh` if present, else fallback (Step 5) |
30
31
  | **team-pr** | `workflow_mode: team-pr` (default) | `gh pr create` → `gh pr merge --squash` |
31
32
 
32
- If unsure, prefer **solo-local**.
33
+ If unsure, prefer **solo-local**. Also read `state.yaml` `vcs.kind`: Git follows the procedures below; Jujutsu uses workspaces/bookmarks and must not call Git-only landing scripts.
33
34
 
34
35
  ## Process
35
36
 
@@ -72,16 +73,21 @@ Run `gate-trace` before merge. FAIL blocks merge; CONCERNS requires explicit ove
72
73
 
73
74
  Options: **Release (solo-local)** / **Open PR** / **Keep branch** / **Discard**
74
75
 
75
- ### 5. Solo-local integrate
76
+ ### 5. Integrate
76
77
 
77
- Run `commit-message` for the squash subject, then land:
78
+ Run `commit-message` first. Git solo-local uses `land-branch.sh`. Jujutsu team mode explicitly advances and pushes a bookmark; `-m` is mandatory for commit/describe operations:
78
79
 
79
80
  ```bash
80
- # Path A (preferred):
81
+ # Git solo-local
81
82
  bash scripts/land-branch.sh <task-slug> "feat(scope): description"
82
- # Path B (fallback if land-branch.sh missing): see REFERENCE.md
83
+ # Jujutsu team PR
84
+ jj describe -m "feat(scope): description"
85
+ jj bookmark set <task-slug> -r @
86
+ jj git push -b <task-slug>
83
87
  ```
84
88
 
89
+ Jujutsu solo-local landing is unsupported: run `bp_require_vcs_operation "$PWD" land-branch` and stop with its remediation instead of invoking the Git backend.
90
+
85
91
  ### 6. Create PR (team-pr only)
86
92
 
87
93
  Create the pull request with a **literal provenance marker** in the body so agent-generated PRs are identifiable and do not rot silently:
@@ -130,7 +136,7 @@ bash scripts/wait-for-ci.sh --timeout 600 --interval 30
130
136
 
131
137
  ### 8. Clean up & return
132
138
 
133
- Worktree prune, branch delete, `git checkout main`. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).
139
+ Git: prune worktree, delete branch, return to main. Jujutsu: `jj workspace forget <workspace>` only after integration; do not delete its bookmark implicitly. Cycle-time: see [REFERENCE.md](REFERENCE.md#cycle-time).
134
140
 
135
141
  Report: "Branch released."
136
142
 
@@ -3,6 +3,8 @@ name: survey-context
3
3
  description: "Per-task context bootstrap — reads existing specs/ and tech-architecture docs to map the current lifecycle phase and suggest the next skill. Use at the start of any task, when returning after a break, or when unsure what to do next. For deriving a tech-stack doc from scratch, use map-codebase first."
4
4
  ---
5
5
 
6
+ # story: e82s02
7
+
6
8
  # Survey Context
7
9
 
8
10
  Read the project's current state and give a phase map + next-skill recommendation. This is the "where am I?" skill — run it at the start of every task.
@@ -50,15 +52,18 @@ Legacy markdown (`specs/archive/STATE.md`, `RELEASE-PLAN.md`) is **not** SoT if
50
52
 
51
53
  If `CLAUDE.md` exists at the project root, read it for project context (stack, commands, architecture, conventions).
52
54
 
53
- ### 4. Check git state
55
+ ### 4. Check VCS state
56
+
57
+ Read `state.yaml` `vcs.kind` (or resolve `auto`). Use native identity:
54
58
 
55
59
  ```bash
56
- git status --short
57
- git log --oneline -5
58
- git branch --show-current
60
+ # Git
61
+ git status --short; git log --oneline -5; git branch --show-current
62
+ # Jujutsu
63
+ jj status; jj log -r 'mine() & ::@' -n 5
59
64
  ```
60
65
 
61
- Note: is there a feature branch active? Are there uncommitted changes? Do they match `specs/state.yaml` `git` block?
66
+ For Jujutsu, compare stable change IDs and bookmarks with the `vcs` block; never interpret colocated Git's detached HEAD as branch state.
62
67
 
63
68
  ### 5. Map the lifecycle phase
64
69
 
@@ -123,7 +128,7 @@ Loop through all `specs/epics/*/epic.yaml` files and print a summary of story co
123
128
 
124
129
  ### check-gates (absorbed)
125
130
 
126
- Print the current `active_flow` from `specs/state.yaml`, run `bash scripts/validate-specs-yaml.sh` to verify YAML integrity, and show `git status` to report uncommitted changes and branch state. Use before handoffs or context transitions.
131
+ Print `active_flow`, validate YAML, then show `git status` or `jj status` according to `vcs.kind`. Use before handoffs or context transitions.
127
132
 
128
133
  ## Handoff
129
134
 
@@ -4,6 +4,8 @@ model: haiku
4
4
  description: "Reviews working-tree changes, then drafts a Conventional Commits title/body and states the semantic-release version bump a single such commit would imply. Also notes which defensive-code categories were touched. Use when the user wants to commit recent work, prepare a Conventional Commits message, or asks for semantic-release / semver-consistent messaging before git commit."
5
5
  ---
6
6
 
7
+ # story: e82s02
8
+
7
9
  # Commit Message
8
10
  > **HARD GATE** — **HARD GATE** — Commits must follow Conventional Commits spec (type(scope): description). Do NOT use vague messages like 'fix' or 'updates.' The message must explain the 'why,' not the 'what.'
9
11
 
@@ -15,7 +17,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
15
17
 
16
18
  ## What "last chat" means
17
19
 
18
- - **Primary source of truth:** `git status`, `git diff` (unstaged), and `git diff --cached` (staged). Run these in the repo root (or the paths the user changed).
20
+ - **Primary source of truth:** Read `state.yaml` `vcs.kind`. Git uses `git status`, `git diff`, and `git diff --cached`; Jujutsu uses `jj status`, `jj diff`, and `jj log -r @`. Run in the repo root.
19
21
  - **Context:** use the current conversation to summarize *intent* and to spot **breaking** API/behavior changes that diff alone may not show.
20
22
  - If the user tracks a session baseline (e.g. branch, tag, or `git stash create` at start), you may `git diff <baseline>..HEAD` plus uncommitted diffs; otherwise use only the index and working tree.
21
23
 
@@ -30,7 +32,7 @@ description: "Reviews working-tree changes, then drafts a Conventional Commits t
30
32
  7. **Deliver** — Output:
31
33
  - Proposed **full commit message** (title + optional body + footers).
32
34
  - **Release bump** this commit would drive: `patch` | `minor` | `major` | `none`.
33
- - Optional `git add …` and `git commit -m` instructions; do **not** run destructive git commands unless the user asked.
35
+ - Optional native command: Git `git commit -m`; Jujutsu `jj commit -m`. Never omit `-m` or run destructive commands unless asked.
34
36
 
35
37
  ## Checklist before finalizing
36
38