Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .agents/skills/backlog-burndown/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,12 @@ closure a later round notices, where the opposite error destroys work.
Deriving the set from the range rather than from what this round dispatched is what covers a group
that deferred or parked, contributing none, and an earlier round's work that no promotion has yet
carried. A fix landing during the freeze adds its issue to a body already written, so amend the
body when it lands rather than leaving the issue to be closed by hand.
body when it lands rather than leaving the issue to be closed by hand. Each amendment replaces
the whole body, and another session may amend it between a read and a write. So build each one
from a read of the body made immediately before the write, keeping every line that read holds.
Then read the body again, and repeat the amendment where it lacks a `Fixes` line a freshly fetched
range calls for. Checking the whole set rather than only this amendment's own lines is what
restores a line another session's write dropped.

## Run State

Expand Down
32 changes: 20 additions & 12 deletions .agents/skills/unattended-handoff/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,21 +211,29 @@ does not qualify, since skipping one costs nothing and a guess costs a revert an
3. **Fix and drive.** Run `local-strict-review` before every push, and drive the pull request with
`drive-pr` to develop, its body carrying `Closes on promotion: #<issue>`. Every Merge Gate item
other than the permission still has to hold, on this pull request and on any promotion.
**Under `main` or `release`, check for a blocked promotion before opening or driving one.** Read
the open `decision` issues under picker step 1's full-page check, with `gh issue list --repo
"<owner>/<repo>" --label decision --state open --limit 100 --json number,body,comments`. Where
one of them states, in its body or in a comment, that it blocks the open develop -> main pull
request, as "Parking" step 2 has it state, the round narrows to develop. The worker then merges,
opens, and releases no promotion while that decision issue is open. It instead brings that
promotion's body up to a `Fixes` line for every issue develop fixes, `#<issue>` included, per
`backlog-burndown` "Assembling the Promotion Body", so each closes when the promotion merges.
**Under `main` or `release`, check for a blocked promotion before opening or driving one.** Note
the time first, in UTC as `closedAt` reports it, so a decision closed while the read runs counts
as closed after it. Read the open `decision` issues under picker step 1's full-page check, with
`gh issue list --repo "<owner>/<repo>" --label decision --state open --limit 100 --json
number,body,comments`. Where one of them states, in its body or in a comment, that it blocks the
open develop -> main pull request, as "Parking" step 2 has it state, the round narrows to
develop. The worker then merges, opens, and releases no promotion while that decision issue is
open. It instead brings that promotion's body up to a `Fixes` line for every issue develop
fixes, `#<issue>` included, per `backlog-burndown` "Assembling the Promotion Body", so each
closes when the promotion merges.
It then closes the lane out, naming the decision issue in the close-out comment. Where none
does, continue to the promotion pull request, its body carrying a `Fixes` line for every issue
develop fixes, assembled per that same section, and hand it to `merge-and-release`, merging only
under `main` and merging and releasing under `release`. Exit `45` on a promotion blocks no
merge where the promotion meets the one case `pr-review-conduct` Merge Gate item 2 states.
Such a promotion merges with no `decision` issue, and the worker records that item's evidence
on the handoff. Any other shortfall parks.
under `main` and merging and releasing under `release`. **Repeat the blocked-promotion read
immediately before each head of the promotion merges**, a head `merge-and-release` re-gates
included. Run it with `--state all` and with `state,closedAt` added to `--json`, never with a
`--search` query, since search can lag a close. Where one blocking that promotion is open, the
round narrows to develop as above. Where one blocking that promotion has a `closedAt` at or
after the time noted before the first read, park. That answer may not be to merge, so the
`decision` issue the park files asks whether it lets the promotion merge. Exit `45` on a
promotion blocks no merge where the promotion meets the one case `pr-review-conduct` Merge Gate
item 2 states. Such a promotion merges with no `decision` issue,
and the worker records that item's evidence on the handoff. Any other shortfall parks.
4. **Wait in the foreground.** Each wait is one bounded command such as `pr_review.py wait`, run in
the worker's own turn. A subagent receives no completion notification, so a wait handed to a
monitor or a background task never wakes it.
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b28f805f1e989640
a44167992b6a50fe
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a006759288a4c7f4
986b68709daedb60
7 changes: 6 additions & 1 deletion .claude-plugin/fleet-skills/skills/backlog-burndown/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,12 @@ closure a later round notices, where the opposite error destroys work.
Deriving the set from the range rather than from what this round dispatched is what covers a group
that deferred or parked, contributing none, and an earlier round's work that no promotion has yet
carried. A fix landing during the freeze adds its issue to a body already written, so amend the
body when it lands rather than leaving the issue to be closed by hand.
body when it lands rather than leaving the issue to be closed by hand. Each amendment replaces
the whole body, and another session may amend it between a read and a write. So build each one
from a read of the body made immediately before the write, keeping every line that read holds.
Then read the body again, and repeat the amendment where it lacks a `Fixes` line a freshly fetched
range calls for. Checking the whole set rather than only this amendment's own lines is what
restores a line another session's write dropped.

## Run State

Expand Down
32 changes: 20 additions & 12 deletions .claude-plugin/fleet-skills/skills/unattended-handoff/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,21 +211,29 @@ does not qualify, since skipping one costs nothing and a guess costs a revert an
3. **Fix and drive.** Run `local-strict-review` before every push, and drive the pull request with
`drive-pr` to develop, its body carrying `Closes on promotion: #<issue>`. Every Merge Gate item
other than the permission still has to hold, on this pull request and on any promotion.
**Under `main` or `release`, check for a blocked promotion before opening or driving one.** Read
the open `decision` issues under picker step 1's full-page check, with `gh issue list --repo
"<owner>/<repo>" --label decision --state open --limit 100 --json number,body,comments`. Where
one of them states, in its body or in a comment, that it blocks the open develop -> main pull
request, as "Parking" step 2 has it state, the round narrows to develop. The worker then merges,
opens, and releases no promotion while that decision issue is open. It instead brings that
promotion's body up to a `Fixes` line for every issue develop fixes, `#<issue>` included, per
`backlog-burndown` "Assembling the Promotion Body", so each closes when the promotion merges.
**Under `main` or `release`, check for a blocked promotion before opening or driving one.** Note
the time first, in UTC as `closedAt` reports it, so a decision closed while the read runs counts
as closed after it. Read the open `decision` issues under picker step 1's full-page check, with
`gh issue list --repo "<owner>/<repo>" --label decision --state open --limit 100 --json
number,body,comments`. Where one of them states, in its body or in a comment, that it blocks the
open develop -> main pull request, as "Parking" step 2 has it state, the round narrows to
develop. The worker then merges, opens, and releases no promotion while that decision issue is
open. It instead brings that promotion's body up to a `Fixes` line for every issue develop
fixes, `#<issue>` included, per `backlog-burndown` "Assembling the Promotion Body", so each
closes when the promotion merges.
It then closes the lane out, naming the decision issue in the close-out comment. Where none
does, continue to the promotion pull request, its body carrying a `Fixes` line for every issue
develop fixes, assembled per that same section, and hand it to `merge-and-release`, merging only
under `main` and merging and releasing under `release`. Exit `45` on a promotion blocks no
merge where the promotion meets the one case `pr-review-conduct` Merge Gate item 2 states.
Such a promotion merges with no `decision` issue, and the worker records that item's evidence
on the handoff. Any other shortfall parks.
under `main` and merging and releasing under `release`. **Repeat the blocked-promotion read
immediately before each head of the promotion merges**, a head `merge-and-release` re-gates
included. Run it with `--state all` and with `state,closedAt` added to `--json`, never with a
`--search` query, since search can lag a close. Where one blocking that promotion is open, the
round narrows to develop as above. Where one blocking that promotion has a `closedAt` at or
after the time noted before the first read, park. That answer may not be to merge, so the
`decision` issue the park files asks whether it lets the promotion merge. Exit `45` on a
promotion blocks no merge where the promotion meets the one case `pr-review-conduct` Merge Gate
item 2 states. Such a promotion merges with no `decision` issue,
and the worker records that item's evidence on the handoff. Any other shortfall parks.
4. **Wait in the foreground.** Each wait is one bounded command such as `pr_review.py wait`, run in
the worker's own turn. A subagent receives no completion notification, so a wait handed to a
monitor or a background task never wakes it.
Expand Down
7 changes: 6 additions & 1 deletion .github/skills/backlog-burndown/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,12 @@ closure a later round notices, where the opposite error destroys work.
Deriving the set from the range rather than from what this round dispatched is what covers a group
that deferred or parked, contributing none, and an earlier round's work that no promotion has yet
carried. A fix landing during the freeze adds its issue to a body already written, so amend the
body when it lands rather than leaving the issue to be closed by hand.
body when it lands rather than leaving the issue to be closed by hand. Each amendment replaces
the whole body, and another session may amend it between a read and a write. So build each one
from a read of the body made immediately before the write, keeping every line that read holds.
Then read the body again, and repeat the amendment where it lacks a `Fixes` line a freshly fetched
range calls for. Checking the whole set rather than only this amendment's own lines is what
restores a line another session's write dropped.

## Run State

Expand Down
32 changes: 20 additions & 12 deletions .github/skills/unattended-handoff/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,21 +211,29 @@ does not qualify, since skipping one costs nothing and a guess costs a revert an
3. **Fix and drive.** Run `local-strict-review` before every push, and drive the pull request with
`drive-pr` to develop, its body carrying `Closes on promotion: #<issue>`. Every Merge Gate item
other than the permission still has to hold, on this pull request and on any promotion.
**Under `main` or `release`, check for a blocked promotion before opening or driving one.** Read
the open `decision` issues under picker step 1's full-page check, with `gh issue list --repo
"<owner>/<repo>" --label decision --state open --limit 100 --json number,body,comments`. Where
one of them states, in its body or in a comment, that it blocks the open develop -> main pull
request, as "Parking" step 2 has it state, the round narrows to develop. The worker then merges,
opens, and releases no promotion while that decision issue is open. It instead brings that
promotion's body up to a `Fixes` line for every issue develop fixes, `#<issue>` included, per
`backlog-burndown` "Assembling the Promotion Body", so each closes when the promotion merges.
**Under `main` or `release`, check for a blocked promotion before opening or driving one.** Note
the time first, in UTC as `closedAt` reports it, so a decision closed while the read runs counts
as closed after it. Read the open `decision` issues under picker step 1's full-page check, with
`gh issue list --repo "<owner>/<repo>" --label decision --state open --limit 100 --json
number,body,comments`. Where one of them states, in its body or in a comment, that it blocks the
open develop -> main pull request, as "Parking" step 2 has it state, the round narrows to
develop. The worker then merges, opens, and releases no promotion while that decision issue is
open. It instead brings that promotion's body up to a `Fixes` line for every issue develop
fixes, `#<issue>` included, per `backlog-burndown` "Assembling the Promotion Body", so each
closes when the promotion merges.
It then closes the lane out, naming the decision issue in the close-out comment. Where none
does, continue to the promotion pull request, its body carrying a `Fixes` line for every issue
develop fixes, assembled per that same section, and hand it to `merge-and-release`, merging only
under `main` and merging and releasing under `release`. Exit `45` on a promotion blocks no
merge where the promotion meets the one case `pr-review-conduct` Merge Gate item 2 states.
Such a promotion merges with no `decision` issue, and the worker records that item's evidence
on the handoff. Any other shortfall parks.
under `main` and merging and releasing under `release`. **Repeat the blocked-promotion read
immediately before each head of the promotion merges**, a head `merge-and-release` re-gates
included. Run it with `--state all` and with `state,closedAt` added to `--json`, never with a
`--search` query, since search can lag a close. Where one blocking that promotion is open, the
round narrows to develop as above. Where one blocking that promotion has a `closedAt` at or
after the time noted before the first read, park. That answer may not be to merge, so the
`decision` issue the park files asks whether it lets the promotion merge. Exit `45` on a
promotion blocks no merge where the promotion meets the one case `pr-review-conduct` Merge Gate
item 2 states. Such a promotion merges with no `decision` issue,
and the worker records that item's evidence on the handoff. Any other shortfall parks.
4. **Wait in the foreground.** Each wait is one bounded command such as `pr_review.py wait`, run in
the worker's own turn. A subagent receives no completion notification, so a wait handed to a
monitor or a background task never wakes it.
Expand Down
Loading