gentle-ai-chained-pr
Trigger: PRs over 400 lines, stacked PRs, review slices. Split oversized changes into chained PRs that protect review focus.
Install
npx skills add https://github.com/Gentleman-Programming/gentle-shell/tree/main/skills/chained-pr
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install gentleman-programming-gentle-shell@llmmart
git clone https://github.com/Gentleman-Programming/gentle-shell.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole gentleman-programming/gentle-shell collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Activation Contract
Load this skill when a planned PR may exceed 400 changed lines, SDD forecasts 400-line budget risk: High or Chained PRs recommended: Yes, an ODD feature's forecast or running authored changed-line count from work-unit commits exceeds about 400, or the user asks for chained/stacked PRs, review slices, or reviewer-load control.
Hard Rules
- Split PRs over 400 changed lines unless a maintainer explicitly accepts
size:exception. - The budget constrains how work is sliced, never the code itself. Never delete comments, blank lines, docs, or tests, and never compress or restyle code, to fit under the budget.
- Slicing is bounded: make one honest slicing pass. If no cohesive split brings every slice within budget, stop iterating, keep the best cohesive split, and report the final line count with a
size:exceptionrecommendation. - Keep each PR reviewable in about ≤60 minutes.
- Use one deliverable work unit per PR; keep tests/docs with the unit they verify.
- State start, end, prior dependencies, follow-up work, and out-of-scope items in every chained PR.
- Every child PR must include a dependency diagram marking the current PR with
📍. - In Feature Branch Chain, create a draft/no-merge tracker PR; child PR #1 targets the tracker branch, later children target the immediate parent branch.
- Treat polluted diffs as base bugs: retarget or rebase until only the current work unit appears.
- Do not mix chain strategies after the user chooses one.
Decision Gates
| Condition | Action |
|---|---|
| PR ≤400 changed lines and focused | Keep single PR. |
| PR >400, each slice can land independently | Use Stacked PRs to main. |
| PR >400, feature must integrate before main | Use Feature Branch Chain with tracker. |
| Generated/vendor/migration diff cannot split cleanly | Ask maintainer for size:exception. |
| No cohesive split fits the budget after one slicing pass | Stop; deliver the best split, report the overage and why it cannot shrink further, and recommend size:exception. |
SDD provides delivery_strategy |
Follow it before apply/PR creation. |
ODD provides delivery_strategy and chain_strategy |
Follow them before the next work-unit commit or PR creation. |
Execution Steps
- Estimate changed lines and identify independent work units.
- Ask for a chain strategy when none is cached and the budget is exceeded.
- Create branches/PRs using the chosen strategy only.
- Add Chain Context to each PR without replacing the repo PR template.
- Verify each PR independently: CI/tests/docs/manual checks, rollback scope, and clean diff.
- Keep tracker PR draft/no-merge until all child PRs are reviewed and integrated.
Output Contract
Return the chosen strategy, PR order, current PR boundary, dependency diagram, review budget (additions + deletions), verification plan, and any size:exception rationale.
References
- references/chaining-details.md — strategy diagrams, PR body section, branch commands, and reviewer guidance.
Files (gentle-shell)
-
references
-
chaining-details.md 3.2 KB
# Chained PR Details ## Strategy Notes | | Stacked PRs to main | Feature Branch Chain | |---|---|---| | Speed | Each slice can ship in order | Full feature waits for tracker merge | | Rollback | Revert individual main PRs | Revert/hold the whole feature branch | | Risk | Partial behavior may land | Nothing lands until the chain completes | | Complexity | Simpler retarget/rebase flow | Requires tracker and strict diff hygiene | ## Feature Branch Chain Use when the feature branch accumulates the final integration while child PRs are reviewed as focused slices. ```text main └── feat/my-feature ← tracker/final integration branch ↑ PR #1 base: feat/my-feature └── feat/my-feature-01-core ↑ PR #2 base: feat/my-feature-01-core └── feat/my-feature-02-shared ↑ PR #3 base: feat/my-feature-02-shared └── feat/my-feature-03-slice ``` Steps: 1. Create the feature/tracker branch from `main`. 2. Open the tracker PR to `main`; mark it draft/no-merge. 3. Create PR #1 from a child branch and target it to the tracker branch. 4. Create each later child branch from the previous PR branch and target it to that parent branch. 5. Merge/integrate children in order; merge the tracker only after the chain is complete. ## Stacked PRs to Main Use when each slice can land on `main` in order. ```text main <- PR 1: foundation └── PR 2: feature slice built on PR 1 └── PR 3: docs/tests built on PR 2 ``` After a parent PR merges, rebase/retarget the next PR so GitHub shows only the current slice. ## Chain Context Section Append this section to the repo PR template; do not replace required issue/checklist sections. ```markdown ## Chain Context | Field | Value | |-------|-------| | Chain | <feature or stack name> | | Tracker PR | <#NNN or "Not needed"> | | Position | <N of total> | | Base | `<target branch>` | | Depends on | <PR/issue/link or "None"> | | Follow-up | <next PR or "None"> | | Review budget | <changed lines> / 400 | | Starts at | <branch, PR, or state this builds on> | | Ends with | <standalone result delivered by this PR> | ### Chain Overview ```text main └── #NNN Previous PR └── 📍 #NNN This PR └── #NNN Next PR ``` ### Scope - Includes: <focused unit> - Excludes: <deferred work> ### Autonomy - [ ] CI is expected to pass for this PR branch - [ ] This PR has one deliverable scope - [ ] This PR can be rolled back without unrelated changes - [ ] Tests, docs, or manual verification cover this unit ``` ## Commands ```bash gh pr view <PR_NUMBER> --json additions,deletions,changedFiles,title,url gh pr create --base feat/my-feature --title "feat(scope): focused slice" --body-file pr-body.md gh pr create --base feat/my-feature-01-core --title "feat(scope): next focused slice" --body-file pr-body.md ``` ## Reviewer Guidance - Ask for a split when a PR exceeds 400 changed lines without `size:exception`. - Recommend Feature Branch Chain when work must integrate before `main`. - Recommend stacked PRs when each slice can merge independently. - Review child PRs against immediate parent branches; a polluted diff is a branching bug.
-
-
SKILL.md 3.3 KB
--- name: gentle-ai-chained-pr description: "Trigger: PRs over 400 lines, stacked PRs, review slices. Split oversized changes into chained PRs that protect review focus." license: Apache-2.0 metadata: author: gentleman-programming version: "1.0" --- ## Activation Contract Load this skill when a planned PR may exceed **400 changed lines**, SDD forecasts `400-line budget risk: High` or `Chained PRs recommended: Yes`, an ODD feature's forecast or running authored changed-line count from work-unit commits exceeds about 400, or the user asks for chained/stacked PRs, review slices, or reviewer-load control. ## Hard Rules - Split PRs over **400 changed lines** unless a maintainer explicitly accepts `size:exception`. - The budget constrains how work is **sliced**, never the code itself. Never delete comments, blank lines, docs, or tests, and never compress or restyle code, to fit under the budget. - Slicing is bounded: make **one** honest slicing pass. If no cohesive split brings every slice within budget, stop iterating, keep the best cohesive split, and report the final line count with a `size:exception` recommendation. - Keep each PR reviewable in about **≤60 minutes**. - Use one deliverable work unit per PR; keep tests/docs with the unit they verify. - State start, end, prior dependencies, follow-up work, and out-of-scope items in every chained PR. - Every child PR must include a dependency diagram marking the current PR with `📍`. - In Feature Branch Chain, create a draft/no-merge tracker PR; child PR #1 targets the tracker branch, later children target the immediate parent branch. - Treat polluted diffs as base bugs: retarget or rebase until only the current work unit appears. - Do not mix chain strategies after the user chooses one. ## Decision Gates | Condition | Action | |---|---| | PR ≤400 changed lines and focused | Keep single PR. | | PR >400, each slice can land independently | Use Stacked PRs to main. | | PR >400, feature must integrate before main | Use Feature Branch Chain with tracker. | | Generated/vendor/migration diff cannot split cleanly | Ask maintainer for `size:exception`. | | No cohesive split fits the budget after one slicing pass | Stop; deliver the best split, report the overage and why it cannot shrink further, and recommend `size:exception`. | | SDD provides `delivery_strategy` | Follow it before apply/PR creation. | | ODD provides `delivery_strategy` and `chain_strategy` | Follow them before the next work-unit commit or PR creation. | ## Execution Steps 1. Estimate changed lines and identify independent work units. 2. Ask for a chain strategy when none is cached and the budget is exceeded. 3. Create branches/PRs using the chosen strategy only. 4. Add Chain Context to each PR without replacing the repo PR template. 5. Verify each PR independently: CI/tests/docs/manual checks, rollback scope, and clean diff. 6. Keep tracker PR draft/no-merge until all child PRs are reviewed and integrated. ## Output Contract Return the chosen strategy, PR order, current PR boundary, dependency diagram, review budget (`additions + deletions`), verification plan, and any `size:exception` rationale. ## References - [references/chaining-details.md](references/chaining-details.md) — strategy diagrams, PR body section, branch commands, and reviewer guidance.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.