@biffo/cli 0.231.2 → 0.232.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.
@@ -43,6 +43,42 @@ This file is distributed by the template and kept in step by
43
43
  - **Clean up when the PR merges:** `git worktree remove .worktrees/<name>`, then
44
44
  let the branch be deleted. Keep `git worktree list` short and every entry live.
45
45
 
46
+ ### Check before you start, and push early
47
+
48
+ **Before starting work on an issue, run:**
49
+
50
+ ```bash
51
+ sh scripts/claim.sh <issue-number> [-R owner/repo] # 0 free · 1 taken · 2 cannot tell
52
+ ```
53
+
54
+ Several agent sessions run against this estate at once. The script asks four
55
+ questions, because the answer lives in more than one place: does the issue carry
56
+ the `in-progress` label, is there an **open PR** referencing it, is there a
57
+ **remote branch** naming it, and has a PR already merged that closes it. If it
58
+ reports free, it claims the issue for you.
59
+
60
+ **Exit 2 is "cannot tell" and is never "free".** An unreadable issue or an
61
+ unauthenticated `gh` must stop you, not wave you through.
62
+
63
+ **Why four signals rather than the label alone.** The label is a
64
+ hand-maintained second copy of something git already knows: a branch exists, a
65
+ PR exists. Those are automatic — you cannot do the work without creating them —
66
+ while the label is a separate action someone has to remember. On 2026-08-03 four
67
+ sessions collided in one morning, and **three of the four were "work exists,
68
+ label does not"**. Checking only the label would have caught one of four.
69
+
70
+ **Push your branch as soon as it exists.** A local worktree is invisible to
71
+ every other machine; the pushed branch is the only signal they can see. The
72
+ window between starting and pushing is where collisions actually happen — one of
73
+ that morning's issues went from branch to **merged in three minutes**.
74
+
75
+ **Release what you claim.** Remove the label when the PR merges, when you close
76
+ the issue, or when you stop — including when you stop because someone else got
77
+ there first. A claim you never release is worse than no claim, because the next
78
+ session believes it. Before skipping something because it is claimed, check how
79
+ old the claim is: no activity for over an hour probably means abandoned. Steal
80
+ it deliberately and say so in a comment; never steal a fresh one.
81
+
46
82
  ## 3. Commits
47
83
 
48
84
  - **Conventional Commits** (`feat`, `fix`, `chore`, `docs`, `test`, `infra`,
@@ -43,6 +43,42 @@ This file is distributed by the template and kept in step by
43
43
  - **Clean up when the PR merges:** `git worktree remove .worktrees/<name>`, then
44
44
  let the branch be deleted. Keep `git worktree list` short and every entry live.
45
45
 
46
+ ### Check before you start, and push early
47
+
48
+ **Before starting work on an issue, run:**
49
+
50
+ ```bash
51
+ sh scripts/claim.sh <issue-number> [-R owner/repo] # 0 free · 1 taken · 2 cannot tell
52
+ ```
53
+
54
+ Several agent sessions run against this estate at once. The script asks four
55
+ questions, because the answer lives in more than one place: does the issue carry
56
+ the `in-progress` label, is there an **open PR** referencing it, is there a
57
+ **remote branch** naming it, and has a PR already merged that closes it. If it
58
+ reports free, it claims the issue for you.
59
+
60
+ **Exit 2 is "cannot tell" and is never "free".** An unreadable issue or an
61
+ unauthenticated `gh` must stop you, not wave you through.
62
+
63
+ **Why four signals rather than the label alone.** The label is a
64
+ hand-maintained second copy of something git already knows: a branch exists, a
65
+ PR exists. Those are automatic — you cannot do the work without creating them —
66
+ while the label is a separate action someone has to remember. On 2026-08-03 four
67
+ sessions collided in one morning, and **three of the four were "work exists,
68
+ label does not"**. Checking only the label would have caught one of four.
69
+
70
+ **Push your branch as soon as it exists.** A local worktree is invisible to
71
+ every other machine; the pushed branch is the only signal they can see. The
72
+ window between starting and pushing is where collisions actually happen — one of
73
+ that morning's issues went from branch to **merged in three minutes**.
74
+
75
+ **Release what you claim.** Remove the label when the PR merges, when you close
76
+ the issue, or when you stop — including when you stop because someone else got
77
+ there first. A claim you never release is worse than no claim, because the next
78
+ session believes it. Before skipping something because it is claimed, check how
79
+ old the claim is: no activity for over an hour probably means abandoned. Steal
80
+ it deliberately and say so in a comment; never steal a fresh one.
81
+
46
82
  ## 3. Commits
47
83
 
48
84
  - **Conventional Commits** (`feat`, `fix`, `chore`, `docs`, `test`, `infra`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@biffo/cli",
3
- "version": "0.231.2",
3
+ "version": "0.232.0",
4
4
  "description": "Biffo project scaffolding CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",