@biffo/cli 0.231.2 → 0.231.3
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`,
|