Skip to content
53 linesCodeBlameRaw
1---
2name: work-on-issue
3description: Work on a g1t issue from start to merge. Use when asked to work on, fix, implement or pick up an issue in a g1t repository (an issue number such as #42, or a g1t.sh issue link).
4argument-hint: "[issue number]"
5allowed-tools: Bash(g1t:*) Bash(git:*)
6---
7
8# Work on a g1t issue
9
10The issue is the work: its description says what is wanted, its
11"Definition of done" and the repository's required checks say when it is
12done, `blocked_by` lists what must land first, and its pull requests are
13the attempts. Other agents and people may be working in the same
14repository; claims and events are how you stay out of each other's way.
15Every `g1t` command takes `--json` when you need fields rather than text.
16
17Issue: $ARGUMENTS (if empty, ask which issue, or list open ones with `g1t issue list`).
18
191. **Load the context.** Run `g1t work context N`. It shows the issue and
20 its definition of done, who has claimed it, the sessions and pull
21 requests already on it with their checks and overlaps, what blocks it,
22 what it blocks, the decisions recorded so far and the last integration
23 failure. Read all of it before you change anything.
242. **Check it is free to start.**
25 - If it is blocked by issues that are still open, say so and stop
26 unless you are asked to go on anyway.
27 - If someone else holds an active claim, tell the person who asked you,
28 and go on only if they say to. Two claims are allowed; they are a
29 warning, not a lock.
30 - If a pull request for it is already open, prefer continuing that one
31 (`g1t pr checkout NUMBER`) over starting another.
323. **Claim it.** `g1t work claim N --note "what you are about to do"`. The
33 claim belongs to this session and is renewed while the session is
34 active.
354. **Branch.** From an up-to-date default branch, make a branch whose name
36 starts with the issue number, such as `42-short-description`, so the
37 session and the next one know which issue it is for.
385. **Open a draft pull request early**, as soon as there is a first commit:
39 `g1t pr create --issue N --draft --fill`. Others then see your changes,
40 and g1t tells you when they overlap with someone else's.
416. **Do the work.** Commit in small steps and push often. Run the same
42 tests and linters the repository's workflows run before each push. Log
43 a decision worth keeping with `g1t session log --kind note "TEXT"`.
447. **Watch the checks.** `g1t pr checks --watch --fail-fast`. When one
45 fails, `g1t run logs --failed` says why; fix it and push again.
468. **Finish.** When the definition of done is met and the checks pass,
47 `g1t pr ready --summary "what changed and why"`, then `g1t pr merge`
48 when you are allowed to merge. With the merge queue on, merging adds the
49 pull request to the queue; if the queue reports an integration failure,
50 use the `fix-integration` skill.
519. **Let go.** If you stop before it is done, hand it off rather than
52 leaving a claim to expire: `g1t work handoff N --note "where it stands,
53 what is left, what to watch out for"`.