Skip to content
Open
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
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
"name": "sc-commit-push-pr",
"source": "./packages/sc-commit-push-pr",
"description": "Commit, push, and create PRs for GitHub and Azure DevOps",
"version": "0.12.0",
"version": "0.13.0",
"author": {
"name": "randlee"
},
Expand Down Expand Up @@ -166,7 +166,7 @@
"name": "sc-git-worktree",
"source": "./packages/sc-git-worktree",
"description": "Manage git worktrees with optional tracking and protected branch safeguards: create, scan, cleanup, abort, and update worktrees using a standard sibling folder layout with tracking documents. Prevents accidental deletion of protected branches.\n",
"version": "0.12.0",
"version": "0.13.0",
"author": {
"name": "randlee"
},
Expand Down
50 changes: 25 additions & 25 deletions .claude-plugin/registry.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"scripts": 0,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.073730+00:00"
"lastUpdated": "2026-08-30T22:32:48.289968+00:00"
},
{
"name": "sc-ci-automation",
Expand All @@ -38,7 +38,7 @@
"scripts": 1,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.074916+00:00"
"lastUpdated": "2026-08-30T22:32:48.290999+00:00"
},
{
"name": "sc-codex",
Expand All @@ -55,7 +55,7 @@
"scripts": 2,
"schemas": 2
},
"lastUpdated": "2026-08-30T22:31:50.075806+00:00"
"lastUpdated": "2026-08-30T22:32:48.291746+00:00"
},
{
"name": "sc-coding-agent-hardening",
Expand All @@ -72,11 +72,11 @@
"scripts": 0,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.076323+00:00"
"lastUpdated": "2026-08-30T22:32:48.292194+00:00"
},
{
"name": "sc-commit-push-pr",
"version": "0.12.0",
"version": "0.13.0",
"description": "Commit, push, and create PRs for GitHub and Azure DevOps",
"author": "randlee",
"license": "MIT",
Expand All @@ -86,10 +86,10 @@
"commands": 0,
"skills": 1,
"agents": 2,
"scripts": 9,
"scripts": 10,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.077010+00:00"
"lastUpdated": "2026-08-30T22:32:48.293058+00:00"
},
{
"name": "sc-delay-tasks",
Expand All @@ -106,7 +106,7 @@
"scripts": 2,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.077653+00:00"
"lastUpdated": "2026-08-30T22:32:48.293630+00:00"
},
{
"name": "sc-docling-pdf",
Expand All @@ -123,7 +123,7 @@
"scripts": 0,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.078536+00:00"
"lastUpdated": "2026-08-30T22:32:48.294512+00:00"
},
{
"name": "sc-gh-stack",
Expand All @@ -140,11 +140,11 @@
"scripts": 5,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.079487+00:00"
"lastUpdated": "2026-08-30T22:32:48.295409+00:00"
},
{
"name": "sc-git-worktree",
"version": "0.12.0",
"version": "0.13.0",
"description": "Manage git worktrees with optional tracking and protected branch safeguards: create, scan, cleanup, abort, and update worktrees using a standard sibling folder layout with tracking documents. Prevents accidental deletion of protected branches.\n",
"author": "randlee",
"license": "MIT",
Expand All @@ -157,7 +157,7 @@
"scripts": 7,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.080510+00:00"
"lastUpdated": "2026-08-30T22:32:48.296382+00:00"
},
{
"name": "sc-github-issue",
Expand All @@ -174,7 +174,7 @@
"scripts": 1,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.081602+00:00"
"lastUpdated": "2026-08-30T22:32:48.297401+00:00"
},
{
"name": "sc-just",
Expand All @@ -191,7 +191,7 @@
"scripts": 0,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.082603+00:00"
"lastUpdated": "2026-08-30T22:32:48.298434+00:00"
},
{
"name": "sc-kanban",
Expand All @@ -208,7 +208,7 @@
"scripts": 5,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.083362+00:00"
"lastUpdated": "2026-08-30T22:32:48.299166+00:00"
},
{
"name": "sc-launch-term",
Expand All @@ -225,7 +225,7 @@
"scripts": 3,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.084101+00:00"
"lastUpdated": "2026-08-30T22:32:48.299847+00:00"
},
{
"name": "sc-launchpad",
Expand All @@ -242,7 +242,7 @@
"scripts": 2,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.084768+00:00"
"lastUpdated": "2026-08-30T22:32:48.300530+00:00"
},
{
"name": "sc-manage",
Expand All @@ -259,7 +259,7 @@
"scripts": 8,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.085435+00:00"
"lastUpdated": "2026-08-30T22:32:48.301209+00:00"
},
{
"name": "sc-repomix-nuget",
Expand All @@ -276,7 +276,7 @@
"scripts": 3,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.086098+00:00"
"lastUpdated": "2026-08-30T22:32:48.301884+00:00"
},
{
"name": "sc-roslyn-diff",
Expand All @@ -293,7 +293,7 @@
"scripts": 6,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.086788+00:00"
"lastUpdated": "2026-08-30T22:32:48.302580+00:00"
},
{
"name": "sc-rust",
Expand All @@ -310,7 +310,7 @@
"scripts": 0,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.087964+00:00"
"lastUpdated": "2026-08-30T22:32:48.303754+00:00"
},
{
"name": "sc-startup",
Expand All @@ -327,17 +327,17 @@
"scripts": 1,
"schemas": 0
},
"lastUpdated": "2026-08-30T22:31:50.088739+00:00"
"lastUpdated": "2026-08-30T22:32:48.304498+00:00"
}
],
"metadata": {
"totalPackages": 19,
"totalCommands": 10,
"totalSkills": 22,
"totalAgents": 48,
"totalScripts": 55,
"totalScripts": 56,
"totalSchemas": 2
},
"generated": "2026-08-30T22:31:50.088752+00:00",
"lastUpdated": "2026-08-30T22:31:50.088753+00:00"
"generated": "2026-08-30T22:32:48.304513+00:00",
"lastUpdated": "2026-08-30T22:32:48.304514+00:00"
}
13 changes: 8 additions & 5 deletions docs/registries/nuget/registry.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://yourcompany.github.io/schemas/package-registry.schema.json",
"version": "2.0.0",
"generated": "2026-08-30T22:31:50Z",
"generated": "2026-08-30T22:32:48Z",
"repo": "randlee/synaptic-canvas",
"marketplace": {
"name": "Synaptic Canvas",
Expand Down Expand Up @@ -167,7 +167,7 @@
},
"sc-git-worktree": {
"name": "sc-git-worktree",
"version": "0.12.0",
"version": "0.13.0",
"status": "beta",
"tier": 1,
"description": "Manage git worktrees with optional tracking and protected branch safeguards: create, scan, cleanup, abort, and update worktrees using a standard sibling folder layout with tracking documents. Prevents accidental deletion of protected branches.\n",
Expand Down Expand Up @@ -202,6 +202,7 @@
"dependencies": [
"python3",
"pydantic",
"pyyaml",
"git >= 2.20"
],
"changelog": "https://raw.githubusercontent.com/randlee/synaptic-canvas/main/packages/sc-git-worktree/CHANGELOG.md",
Expand Down Expand Up @@ -534,7 +535,7 @@
},
"sc-commit-push-pr": {
"name": "sc-commit-push-pr",
"version": "0.12.0",
"version": "0.13.0",
"status": "beta",
"tier": 2,
"description": "Commit, push, and create PRs for GitHub and Azure DevOps",
Expand All @@ -557,15 +558,17 @@
"commands": 0,
"skills": 1,
"agents": 2,
"scripts": 9,
"scripts": 10,
"schemas": 0
},
"dependencies": [
"python3",
"pydantic",
"pyyaml",
"git",
"gh"
"gh",
"gh-stack extension",
"managing-gh-stacks skill"
],
"changelog": "https://raw.githubusercontent.com/randlee/synaptic-canvas/main/packages/sc-commit-push-pr/CHANGELOG.md",
"lastUpdated": "2026-08-30",
Expand Down
3 changes: 2 additions & 1 deletion packages/sc-commit-push-pr/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "sc-commit-push-pr",
"description": "Commit, push, and create PRs for GitHub and Azure DevOps with auto-detection, protected branch awareness, and conflict handling.",
"version": "0.12.0",
"version": "0.13.0",
"author": {
"name": "randlee"
},
Expand All @@ -27,6 +27,7 @@
"./scripts/provider_detect.py",
"./scripts/pr_provider.py",
"./scripts/preflight_utils.py",
"./scripts/stack_guard.py",
"./scripts/commit_push_agent_start_hook.py",
"./scripts/create_pr_agent_start_hook.py",
"./scripts/commit_pull_merge_commit_push.py",
Expand Down
8 changes: 8 additions & 0 deletions packages/sc-commit-push-pr/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ All notable changes to sc-commit-push-pr will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.13.0] - 2026-08-30

- **Hard dependency on the gh-stack toolchain (breaking for uninstalled toolchains):** sc-commit-push-pr is the critical junction where a stack-unaware commit/pull/merge/push or PR creation can corrupt a `gh stack`'s linearity, so the `gh` CLI, the `gh-stack` extension, and the managing-gh-stacks skill (package `sc-gh-stack`) are now required unconditionally -- every run, every branch, every provider (GitHub and Azure DevOps alike). Missing any of them refuses immediately with the new `PREFLIGHT.STACK_PREREQS_MISSING` error, both from the SubAgentStart preflight hooks and from the scripts themselves.
- Added stack-layer detection (state-based: a `gh-stack` marker under the worktree's git-dir, the same signal `gh stack` uses). Plain branches are unaffected -- byte-identical commit/push/PR flow. On a gh-stack layer: commit proceeds normally, pull/merge-from-destination is skipped, and push/PR creation is refused with the new `STACK.USE_GH_STACK` error, deferring to `gh stack submit --auto` via the managing-gh-stacks skill.
- `create_pr.py` (and the `create-pr` agent) standalone flow gets the same two gates: unconditional toolchain prerequisite, then stack-layer refusal -- a stack layer's PR base and linkage may only be set by `gh stack submit --auto`.
- Added `packages/sc-commit-push-pr/scripts/stack_guard.py` with the detection/prerequisite primitives (deliberately duplicated from `sc-git-worktree`'s equivalents rather than imported, per package-isolation convention).
- Declared `dependencies: sc-gh-stack >= 0.2.0` in the manifest.

## [0.10.0] - 2026-04-18

- Version alignment with Synaptic Canvas 0.10.0 release
Expand Down
35 changes: 34 additions & 1 deletion packages/sc-commit-push-pr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,35 @@ Commit, push, and create pull requests for GitHub and Azure DevOps repositories.
- **Conflict handling** - Guides through merge conflict resolution
- **Git-flow integration** - Auto-detects protected branches from git-flow config

## Stacked Branches (Hard Dependency)

sc-commit-push-pr is the critical junction where a stack-unaware
commit/pull/merge/push or PR creation can corrupt a `gh stack`'s linearity.
For that reason it now **requires the full gh-stack toolchain
unconditionally** -- the `gh` CLI, the `gh-stack` extension
(`gh extension install github/gh-stack`), and the **managing-gh-stacks
skill** (package `sc-gh-stack`) must all be installed before this package
will run *any* commit/pull/merge/push or PR-creation flow, on every branch
and regardless of provider. This applies even in Azure DevOps-hosted repos:
a mixed-provider org still gets one uniform prerequisite set. If any piece
is missing, every script call (and the SubAgentStart preflight hook for
both agents) refuses immediately with `PREFLIGHT.STACK_PREREQS_MISSING` and
tells you exactly what to install.

Once prerequisites are met, sc-commit-push-pr detects (state-based, no
config needed) whether the *current* worktree is itself a gh-stack layer.
Plain branches are unaffected -- same commit/push/PR flow as always. On a
stack layer:
- Commit still happens normally.
- Pulling and merging the destination branch is skipped (that's
`gh stack sync`'s job).
- Push and PR creation are refused with `STACK.USE_GH_STACK`, deferring to
`gh stack submit --auto` via the managing-gh-stacks skill.

Never work around either refusal with a direct `git push` or
`gh pr create` -- install what's missing, or run the stacked-branch
operation through the managing-gh-stacks skill.

## Configuration

### Protected Branches (Required)
Expand Down Expand Up @@ -111,12 +140,16 @@ Example log entry:
| `PR.CREATE_FAILED` | PR API error | Check permissions, branch names |
| `PROVIDER.DETECT_FAILED` | Unknown provider | Check git remote URL |
| `CONFIG.PROTECTED_BRANCH_NOT_SET` | Missing config | Create `.sc/shared-settings.yaml` |
| `STACK.USE_GH_STACK` | Branch is a gh-stack layer | Use the managing-gh-stacks skill (`gh stack sync` / `gh stack submit --auto`) |
| `PREFLIGHT.STACK_PREREQS_MISSING` | gh-stack toolchain not installed | Install what `suggested_action` lists |

## Requirements

- Python 3.8+
- git
- `gh` CLI (for GitHub)
- `gh` CLI -- **required unconditionally**, not just for GitHub PRs
- `gh-stack` extension (`gh extension install github/gh-stack`) -- **required unconditionally**
- managing-gh-stacks skill, from the `sc-gh-stack` package -- **required unconditionally**
- `pydantic` and `pyyaml` Python packages

## Security
Expand Down
Loading
Loading