Skip to content
Closed
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 plugins/source-control/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "source-control",
"version": "0.55.5",
"version": "0.55.6",
"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 fleet loop — safe by default; opt-in worker/autopilot tiers add gate-checked merge and thread resolution behind a deterministic Python engine), /babysit-loop (the loop-lane merge lane: a standing or drain loop that invokes babysit-prs per cycle, configured through repo-scoped babysit_loop_* keys on the layered source-control.md seam, with merge authority human-only until the target repo's tracked config adopts the lane, a gate-proven C2-mechanical baseline once adopted, and standing merge-rung raises binding from the team-tracked layer only — with one named exception, where an invocation line explicitly typing both the autopilot tier keyword and the dedicated raise argument --merge c3-this-run widens that single invocation's merge authority up to C3 behind a fresh independent frontier-tier resolver, while C4-structural and C5-untrusted-provenance stay unconditionally human-merge), /worktree (create, status, cleanup, audit for parallel-session isolation), /setup (check the effective commit-subject / PR-title convention merged across its config layers and the babysit-prs config, or apply — interview the repo and write the convention config to a chosen layer), and /resolve-conflicts (intent-first merge/rebase conflict resolution with a semantic-conflict sweep — never --abort). The commit-subject / PR-title convention is configurable via a source-control.md config written by a re-runnable setup skill, layered across a ~/.claude user-global file, the tracked team file, and a gitignored .claude/source-control.local.md personal overlay merged per key; Conventional Commits is the default when no convention is declared.",
"author": {
"name": "Melodic Software",
Expand Down
24 changes: 24 additions & 0 deletions plugins/source-control/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,30 @@
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.55.6]

### Fixed

- **`setup` skill:** the babysit-config guidance now names `claude plugin uninstall`'s
`--keep-data` flag. The section already warned against uninstalling in order to reconfigure,
citing the lost `pluginConfigs` entry, but stopped there, and `--keep-data` appeared nowhere in
the plugin. An operator who uninstalled for any of the other legitimate reasons (troubleshooting,
changing scopes, reinstalling a version) had no warning that uninstalling from the **last
remaining scope** deletes `${CLAUDE_PLUGIN_DATA}` by default. That directory holds
`${CLAUDE_PLUGIN_DATA}/state/babysit-prs`, meaning the babysit-prs queue state, the worker
leases, and the feedback ledger, none of which any `userConfig` key relocates. It is also the
last resolution rung for both worktree roots, so a `/source-control:worktree` tree holding
uncommitted work can sit there too. The added paragraph names the flag, states what the directory
holds, and states which rung each root has to fall through to land in it, since "left unset" is
necessary but not sufficient for `worktree_root`: a repository's `melodic.worktreeroot` git
config outranks it. The existing advice against uninstalling to reconfigure is unchanged. The
plugin README carries a parallel warning, but that copy sits inside the generated options block
every plugin README shares, so changing it is a marketplace-wide edit to
`scripts/sync-plugin-options-docs.py` rather than a source-control one. Follows the marketplace's
own `docs/conventions/plugin-data-report-keying/README.md` Rule 4, which asks a component to
state its uninstall fragility where its only durable copy lives
([#3131](https://github.com/melodic-software/claude-code-plugins/issues/3131)).

## [0.55.5]

### Added
Expand Down
13 changes: 13 additions & 0 deletions plugins/source-control/skills/setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,19 @@ sanctioned paths:
`claude plugin list` reports for this plugin, and run from that project's directory for a
`project`/`local` scope, or the write lands at a scope that does not load.

When an uninstall is warranted for a reason other than reconfiguring (troubleshooting, changing
scopes, reinstalling a version), pass `--keep-data`. Uninstalling from the **last remaining scope**
otherwise deletes this plugin's `${CLAUDE_PLUGIN_DATA}` directory (Rule 4 of the marketplace's
`plugin-data-report-keying` convention). That directory holds
`${CLAUDE_PLUGIN_DATA}/state/babysit-prs`: the babysit-prs queue state, the worker leases, and the
feedback ledger, which no `userConfig` key relocates. It is also the **last** resolution rung for
both worktree roots. `babysit_worktree_root` falls back to `${CLAUDE_PLUGIN_DATA}/worktrees`
whenever it is unset, while `/source-control:worktree create` reaches that same directory only when
neither the target repository's `melodic.worktreeroot` git config nor `worktree_root` resolves. So
check where the roots actually resolve before assuming the directory is disposable: babysit's own
worktrees are ephemeral scratch that rebuild from GitHub, but the state directory and any
`/source-control:worktree` tree still holding uncommitted work do not.

Reconfiguring `userConfig` does not reach the already-running session, after either path, the new
values become visible only in a fresh session. Do not re-run the babysit `check` in the same session
expecting the change and report a false failure; instead report "reconfigured; verify with `check` in
Expand Down