Skip to content

Commit e8cf8b9

Browse files
committed
Move Linear issues to In Review when a PR is ready for review
Issues sat in In Progress or were marked Done when a PR opened, so reviewers could not see what was waiting. Done stays reserved for merge and complete outcomes.
1 parent 5c065bb commit e8cf8b9

8 files changed

Lines changed: 57 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ matching `## [X.Y.Z]` section (plus install instructions). Do not maintain
1111
parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
1212
`## [Unreleased]` to `## [X.Y.Z] - YYYY-MM-DD`, then run the release script.
1313

14+
## [Unreleased]
15+
16+
### Changed
17+
18+
- Agents and contributor docs move Linear issues to In Review when a PR is ready
19+
for review.
20+
1421
## [0.3.14] - 2026-09-03
1522

1623
### Changed

CONTRIBUTING.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,21 @@ Fixes #123
220220

221221
Omit magic words. Do not invent issue IDs.
222222

223+
### At PR-open (SHOULD)
224+
225+
When the PR is ready for review (not a draft or WIP), move the linked Linear
226+
issue to In Review. Never mark Done on PR-open. Done is after merge, when every
227+
outcome is complete.
228+
223229
### After merge (SHOULD for agents running the full workflow)
224230

225231
1. Confirm the PR is merged and CI is green on the merge commit.
226232
2. Comment the PR URL and merge SHA on the Linear issue.
227233
3. Tick only description checkboxes that `main` actually completed.
228234
4. Mark the Linear issue Done only when every outcome is truly done — never on
229235
"PR opened" alone.
236+
5. If leftover work remains, set the issue to In Progress. Do not leave it In
237+
Review after merge.
230238

231239
## Contributor License Agreement
232240

plugins/corbits-skills/skills/implement/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,4 @@ This skill produces commits. When the work is tracked in Linear and ends in a pu
179179
1. **Post a real GitHub PR review** with `gh pr review` after the PR exists — not a one-line self-review issue comment.
180180
2. **Multi-persona when used:** if critic / greybeard / OSS-quality lenses ran with substance, each posts its own labeled review. Primary owns approve/request-changes; secondary lenses comment only.
181181
3. **No AI slop in review bodies:** lens · verdict, one present-tense line on what the branch does, `path:line` findings. No filler, journey narration, or "LGTM" alone.
182-
4. **Linear checkboxes and Done are post-merge + green CI only.** Flip boxes only when `main` actually has the outcome. Never partial-Done on open PR.
182+
4. **Linear: In Review at ready-for-review PR-open; checkboxes and Done post-merge + green CI only.** The Phase 6–7 handoff in `linear-issue-workflow` must move the issue to In Review when the PR is ready for review. Flip boxes and mark Done only when `main` actually has the outcome. Never Done on open PR.

plugins/corbits-skills/skills/linear-issue-workflow/SKILL.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,19 @@ EOF
255255

256256
Then post the PR review(s) with `gh pr review` as drafted above. Paste the PR URL **and** every review URL to the user.
257257

258+
### Set Linear to In Review
259+
260+
When the PR is open and **ready for review** (not a draft or WIP), set the issue state to "In Review" with `mcp__linear__save_issue`. Do not mark Done. Done is Phase 7 only (merge + green CI + every outcome complete).
261+
262+
If Linear MCP is unavailable or `save_issue` fails, report that the issue status could not be updated. Do not pretend the move succeeded. Do not mark Done as a fallback.
263+
264+
Draft or WIP PRs stay **In Progress** until they are ready for review. Then move to In Review.
265+
266+
Phase 6 ends when the PR is open and the review is posted. Ready-for-review PRs must be In Review (or the operator has been told the status update failed). Draft or WIP PRs stay In Progress.
267+
258268
## Phase 7: After Merge — Linear Closeout and Cleanup
259269

260-
Phase 6 ends when the PR is open and the review is posted. Phase 7 runs **after the PR is merged** and **CI is green** on the merge (or on `main` at the merge commit). Do not mark the Linear issue Done on open PR alone. Do not tick outcome checkboxes on hope.
270+
Phase 7 runs **after the PR is merged** and **CI is green** on the merge (or on `main` at the merge commit). Do not mark the Linear issue Done on open PR alone. Do not tick outcome checkboxes on hope.
261271

262272
### 1. Confirm merge
263273

@@ -287,7 +297,7 @@ Re-read the issue with `mcp__linear__get_issue`. For every checklist item the me
287297

288298
### 5. Mark Done only when complete
289299

290-
If **every** outcome checkbox is checked and nothing residual remains, set state to `Done` with `mcp__linear__save_issue`. If anything is still open, leave the issue In Progress (or the team's equivalent) with remaining boxes unchecked — never partial-Done theater.
300+
If **every** outcome checkbox is checked and nothing residual remains, set state to `Done` with `mcp__linear__save_issue`. If anything is still open, set the issue to In Progress (or the team's equivalent) with remaining boxes unchecked — never partial-Done theater. Do not leave it In Review after merge when work remains.
291301

292302
### 6. Clean up the worktree
293303

plugins/corbits-skills/skills/review/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,4 +393,4 @@ No findings.
393393

394394
### After posting
395395

396-
Paste the review URL(s) back to the user. If `--request-changes`, do not mark the Linear issue Done or tell the user the PR is merge-ready.
396+
Paste the review URL(s) back to the user. Do not mark the Linear issue Done. `--request-changes` is not merge-ready. While the PR is open and ready for review, the issue stays In Review — including after `--request-changes`. Do not ping-pong it back to In Progress. `linear-issue-workflow` owns the In Review write; this skill does not set Linear state.

src/agent/directors/skywalker/package.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,15 @@ describe("skywalkerPackage", () => {
205205
expect(p).toContain("ship → verify → fix → re-verify");
206206
expect(p).toContain("Cap re-fix rounds");
207207
});
208+
209+
test("systemPrompt Linear three-state: In Review at PR-open, never Done at PR-open", () => {
210+
const p = skywalkerPackage.systemPrompt;
211+
expect(p).toContain("In Progress");
212+
expect(p).toContain("In Review");
213+
expect(p).toMatch(/ready for review/);
214+
expect(p).toContain("never Done at PR-open");
215+
expect(p).not.toContain("mcp__linear__save_issue");
216+
expect(p).not.toContain("gh pr create");
217+
expect(p).not.toContain("gh pr review");
218+
});
208219
});

src/agent/directors/skywalker/package.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ Do not reclassify COMMUNICATION as ORCHESTRATION just to justify parallel spawn
131131
- Interview when requirements are fuzzy; consult greybeard on architecture/approach.
132132
- Use counsel for multi-lane eng plans; clarify before a large fan-out.
133133
- Path tools are the DIY surface; shell file-writes stay denied. Track fleet work with manage_tasks.
134-
- When claiming Linear work: set the issue to In Progress via Linear MCP as a hard first step before explore/build thrash. Parallel lanes claim their own IDs. If Linear MCP is unavailable, report that status could not be updated.
134+
- When claiming Linear work: set the issue to In Progress via Linear MCP as a hard first step before explore/build thrash. Parallel lanes claim their own IDs. When a PR is ready for review, move the issue to In Review — never Done at PR-open. If Linear MCP is unavailable, report that status could not be updated.
135135
- Optional skills when needed on the primary session: style, philosophy, interview (use_skill is primary-mounted).
136136
137137
# Spawn graph

tests/unit/corbits-skills-catalog.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,22 @@ test("linear-issue-workflow references use_skill(git-worktrees)", async () => {
267267
expect(skill).not.toContain("git worktree add");
268268
});
269269

270+
test("linear-issue-workflow moves ready-for-review PRs to In Review", async () => {
271+
const skill = await Bun.file(join(pluginRoot, "skills/linear-issue-workflow/SKILL.md")).text();
272+
expect(skill).toContain('set the issue state to "In Review"');
273+
expect(skill).toMatch(/ready for review/);
274+
expect(skill).toContain("Draft or WIP PRs stay **In Progress**");
275+
expect(skill).toContain("Draft or WIP PRs stay In Progress");
276+
expect(skill).toContain("Do not mark the Linear issue Done on open PR alone");
277+
expect(skill).toContain("Do not leave it In Review after merge when work remains");
278+
});
279+
280+
test("review skill does not own the Linear In Review write", async () => {
281+
const skill = await Bun.file(join(pluginRoot, "skills/review/SKILL.md")).text();
282+
expect(skill).toContain("`linear-issue-workflow` owns the In Review write");
283+
expect(skill).not.toContain("Reviewers do not change Linear state");
284+
});
285+
270286
test("slash skills do not set user-invocable: false", async () => {
271287
for (const name of SLASH_SKILLS) {
272288
const skill = await Bun.file(join(pluginRoot, "skills", name, "SKILL.md")).text();

0 commit comments

Comments
 (0)