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
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"name": "source-control",
"source": "./plugins/source-control",
"category": "development",
"tags": ["delivery", "git", "github", "commit", "pull-request", "worktree", "ci", "skill"]
"tags": ["delivery", "git", "github", "commit", "pull-request", "babysit", "worktree", "ci", "skill"]
},
{
"name": "planning",
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Browse and manage with `/plugin`. To refresh after updates: `/plugin marketplace
- [`eol-normalizer`](plugins/eol-normalizer) — Normalize a written file's working-tree line endings to its .gitattributes eol value on edit — symmetric CRLF/LF driven by git check-attr, advisory and never blocking.
- [`powershell-format`](plugins/powershell-format) — Auto-format and lint PowerShell on edit via PSScriptAnalyzer, only when a PSScriptAnalyzerSettings.psd1 governs the repo — using the consuming repo's own analyzer settings.
- [`actionlint`](plugins/actionlint) — Lint GitHub Actions workflow files on edit via actionlint, surfacing findings as advisory context.
- [`source-control`](plugins/source-control) — Git and GitHub delivery workflow: /commit (Conventional Commits + Co-Authored-By trailer via safe heredoc mechanics), /pull-request (prep, create, CI monitoring, review-comment triage, merge, multi-PR babysit loop), /worktree (create, status, cleanup, audit for parallel-session isolation), /setup (interview the repo and write the tracked commit-subject / PR-title convention config), and /resolve-conflicts (intent-first merge/rebase conflict resolution with a semantic-conflict sweep — never --abort). The commit-subject / PR-title convention is configurable per repo via a tracked .claude/source-control.md config written by a re-runnable setup skill; Conventional Commits is the default when no convention is declared.
- [`source-control`](plugins/source-control) — Git and GitHub delivery workflow: /commit (Conventional Commits + Co-Authored-By trailer via safe heredoc mechanics), /pull-request (prep, create, CI monitoring, review-comment triage, merge, CI-log fetch), /babysit-prs (self-pacing all-PR loop — discover, fix, report readiness, never merges), /worktree (create, status, cleanup, audit for parallel-session isolation), /setup (interview the repo and write the tracked commit-subject / PR-title convention config), and /resolve-conflicts (intent-first merge/rebase conflict resolution with a semantic-conflict sweep — never --abort). The commit-subject / PR-title convention is configurable per repo via a tracked .claude/source-control.md config written by a re-runnable setup skill; Conventional Commits is the default when no convention is declared.
- [`implementation`](plugins/implementation) — Disciplined implementation stage: execute approved plans inline (`/implementation:implement`) or via orchestrated worker subagents (`/implementation:implement-dispatch`) with incremental validation, TDD-by-default cadence, green-checkpoint commits, scope-fence drift detection, and divergence detection that routes back to planning. Build/test/lint, testing, and outcome verification live in the companion `toolchain`, `testing`, and `verification` plugins, invoked when installed.
- [`toolchain`](plugins/toolchain) — Repo-agnostic polyglot verification toolchain: build + test + lint for changed files across .NET, Python, TypeScript, Bash, PowerShell, Markdown, YAML, and cross-cutting surfaces (`/toolchain:check`, `/toolchain:lint`), plus a re-runnable `/toolchain:setup` that writes the tracked per-ecosystem command config those skills resolve first.

Expand Down
365 changes: 365 additions & 0 deletions docs/topics/babysit-prs-migration/PLAN.md

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions docs/topics/babysit-prs-migration/design/design-resolution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Design resolution — babysit-prs migration

outcome: early-exit

The composition design was settled during the interview stage and is locked in the Brief's
constraints: layered plugin-scope shared seam (B13 — shared review discipline + comment fetcher at
plugin root, cited by both skills; babysit owns fleet mechanics, `pull-request` keeps single-PR
lifecycle), Python engine backbone with Python-free safe default (B15), bot-agnostic review-trigger
module (B11), layered concurrency detection (B14), userConfig-first configuration (B5/B6). No new
programming-language types or public API contracts are introduced in Phase 1 — the deliverables are
markdown skill surfaces and relocated shell scripts. Engine module boundaries (Phase 2) are
explicitly deferred to the per-phase architect pass per the Brief's deferred-questions list.
6 changes: 3 additions & 3 deletions plugins/source-control/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "source-control",
"version": "0.5.2",
"description": "Git and GitHub delivery workflow: /commit (Conventional Commits + Co-Authored-By trailer via safe heredoc mechanics), /pull-request (prep, create, CI monitoring, review-comment triage, merge, multi-PR babysit loop), /worktree (create, status, cleanup, audit for parallel-session isolation), /setup (interview the repo and write the tracked commit-subject / PR-title convention config), and /resolve-conflicts (intent-first merge/rebase conflict resolution with a semantic-conflict sweep — never --abort). The commit-subject / PR-title convention is configurable per repo via a tracked .claude/source-control.md config written by a re-runnable setup skill; Conventional Commits is the default when no convention is declared.",
"version": "0.6.0",
"description": "Git and GitHub delivery workflow: /commit (Conventional Commits + Co-Authored-By trailer via safe heredoc mechanics), /pull-request (prep, create, CI monitoring, review-comment triage, merge, CI-log fetch), /babysit-prs (self-pacing all-PR loop — discover, fix, report readiness, never merges), /worktree (create, status, cleanup, audit for parallel-session isolation), /setup (interview the repo and write the tracked commit-subject / PR-title convention config), and /resolve-conflicts (intent-first merge/rebase conflict resolution with a semantic-conflict sweep — never --abort). The commit-subject / PR-title convention is configurable per repo via a tracked .claude/source-control.md config written by a re-runnable setup skill; Conventional Commits is the default when no convention is declared.",
"author": {
"name": "Melodic Software",
"email": "info@melodicsoftware.com"
},
"license": "MIT",
"keywords": ["git", "github", "commit", "pull-request", "worktree", "merge-conflict", "rebase", "ci", "code-review", "delivery", "skill"]
"keywords": ["git", "github", "commit", "pull-request", "babysit", "worktree", "merge-conflict", "rebase", "ci", "code-review", "delivery", "skill"]
}
30 changes: 30 additions & 0 deletions plugins/source-control/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,36 @@
All notable changes to the `source-control` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.6.0]

### Added

- **New `/source-control:babysit-prs` skill** — the all-PR self-pacing babysit loop, extracted
from `/source-control:pull-request` into its own skill (distinct discovery intent: fleet loop
vs single-PR lifecycle). Same behavior as the former `babysit` action: discovers every open
non-draft PR oldest-first, checks each out, keeps branches fresh, classifies every review
finding with GitHub-verified evidence, fixes valid findings, reports readiness. Never merges.
Invoke via `/source-control:babysit-prs` (loop pairing: `/loop /source-control:babysit-prs`).
- **Plugin-scope shared review discipline** at `reference/review-discipline.md` — the canonical
home of finding extraction (with the mandatory ≥3-finding subagent dispatch), per-finding
D1–D7 verification gates, and self-reply filtering, cited by both `pull-request` and
`babysit-prs` instead of duplicating the rules per skill.

### Changed

- **Breaking:** the `babysit` action is removed from `/source-control:pull-request` — use
`/source-control:babysit-prs`. The pull-request description, action table, phase table, and
checklists no longer carry babysit content; `reference/monitor.md`'s cross-references into the
former babysit reference now cite the plugin-scope review discipline.
- Shared scripts hoisted from `skills/pull-request/scripts/` to plugin-root `scripts/`
(`fetch-all-pr-comments.sh`, `babysit-readiness-gate.sh`, `test-helpers.sh`, with their
tests) — cited by both skills via `${CLAUDE_PLUGIN_ROOT}/scripts/`.

### Removed

- `discover-prs.sh` (+ test) — retired; the inline `gh pr list` filter in the babysit-prs
reference is the discovery contract.

## [0.5.2]

### Fixed
Expand Down
30 changes: 18 additions & 12 deletions plugins/source-control/README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# source-control

A Claude Code plugin bundling the git/GitHub delivery workflow as five
composable skills — commit mechanics, the full PR lifecycle, worktree
lifecycle management, convention setup, and merge-conflict resolution.
A Claude Code plugin bundling the git/GitHub delivery workflow as six
composable skills — commit mechanics, the single-PR lifecycle, the all-PR
babysit loop, worktree lifecycle management, convention setup, and
merge-conflict resolution.

## Skills

Expand Down Expand Up @@ -43,15 +44,19 @@ research-gated:
react → reply → fix → verify-on-GitHub treatment.
- **merge** — 6-gate readiness re-verification, squash merge, worktree
reuse/cleanup, post-merge CI health check. Never auto-merges.
- **babysit** — self-pacing all-PR loop (designed for
`/loop /pull-request babysit`): discovers every open PR, checks each out,
processes every finding individually with GitHub-verified evidence, and is
mechanically gated by the bundled `babysit-readiness-gate.sh` (classification
rows must cover source findings before readiness can be declared). Never
merges.
- **fetch-logs** — tiered CI-log retrieval (annotations → full untruncated
ZIP via the REST API → per-job text).

### `/source-control:babysit-prs`

Self-pacing all-PR loop (designed for `/loop /source-control:babysit-prs`):
discovers every open non-draft PR, checks each out, keeps the branch fresh,
processes every review finding individually with GitHub-verified evidence
per the plugin-scope shared review discipline, and is mechanically gated by
the bundled `babysit-readiness-gate.sh` (classification rows must cover
source findings before readiness can be declared). Never merges — readiness
is reported; the user merges.

### `/source-control:worktree`

Git worktree lifecycle for parallel-session isolation: `create` (guided
Expand Down Expand Up @@ -116,15 +121,16 @@ Optional environment variables:
| Variable | Used by | Effect |
|---|---|---|
| `WORKTREE_STALE_DAYS` | `/worktree status` | Staleness threshold (default 14 days) |
| `BABYSIT_SELF_LOGINS` | babysit readiness gate | Extra posting identities (csv) whose replies count as your classification rows — e.g. a project bot account (default: your `gh api user` login) |
| `BABYSIT_SELF_LOGINS` | `/babysit-prs` readiness gate | Extra posting identities (csv) whose replies count as your classification rows — e.g. a project bot account (default: your `gh api user` login) |
| `FETCH_LOGS_SCRATCH` / `FETCH_LOGS_REPO` / `FETCH_LOGS_MAX_BYTES` | `fetch-logs` | Scratch dir, repo override, size cap for CI-log ZIPs |

## Security

- No hooks, no MCP servers, no telemetry, no outbound network beyond `git`
and `gh` against the repository the session already targets.
- Writes to GitHub (comments, reactions, thread resolution, PR creation,
merge) happen only inside the documented `/pull-request` phases, with the
merge decision always behind a human gate.
merge) happen only inside the documented `/pull-request` phases and the
`/babysit-prs` loop, with the merge decision always behind a human gate —
`/babysit-prs` never merges.
- Bundled scripts are read-only against the GitHub API except where the
skill body documents a write.
Loading
Loading