Files
rootiestandClaude Sonnet 5 bfd96285ee
Generate plugin manifests / generate (pull_request) Skipped
Generate plugin manifests / validate (pull_request) Successful in 7s
feat: restructure into a multi-extension plugin framework for Claude Code and agy
Replace the skills-only SSoT (skills/<name>/SKILL.md) with plugins/<name>/,
where a plugin can bundle skills, MCP servers, lifecycle hooks, rules,
commands, and agents. scripts/generate_plugins.py now discovers plugins
from one or more layered --source roots and emits real per-target trees
(dist/claude-code/** + .claude-plugin/marketplace.json, dist/agy/**),
translating hooks.json/mcp.json between Claude Code's and agy's actual
schemas instead of only fanning out flat skill lists.

Adds a private-overlay build path (--source/--private-repo/--out/
--install-local) so a second, non-public repo (PII, tokens, personal-only
plugins) can extend or override the public plugin set without either repo
touching the other's history — private builds default to a gitignored
dist-private/ and never land in tracked output.

Drops install.sh and descriptions.json: both only ever covered skills and
pre-date the native plugin marketplace; both tools now install the plugin
marketplace the documented way (Claude Code's /plugin marketplace add,
agy's plugins.json entries). CI path filters move to plugins/**, and the
workflow gains workflow_dispatch for a manual re-trigger.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YVWWAnvR5TDQzmfY3RXG9
2026-08-24 19:20:42 -04:00

2.9 KiB

name, description, version, user-invocable, author
name description version user-invocable author
git-publish-workflow Automates branching, conventional commits, testing, and PR creation for uncommitted or staged work. Handles both independent and stacked PRs. 1.2.0 true Rootiest

Git Publish & PR Workflow

Objective

To provide a hands-off, end-to-end automation for moving local changes into a formal Pull Request, ensuring code quality through automated and manual verification steps, while intelligently routing Stacked PRs.

Execution Protocol

Phase 1: Scope & Base Determination

Before execution, check the local git state:

  1. Scope Check: Determine the work boundary:
    • Case A (Partial): If staged changes exist, operate ONLY on staged changes.
    • Case B (Full): If no changes are staged, operate on ALL modified/untracked files.
  2. Base Branch Detection: Identify the currently checked-out branch.
    • Independent PR: If the current branch is main (or master), the new branch will be based on main. The PR target will be main.
    • Stacked PR: If the current branch is a feature branch (e.g., feat-a), assume the new changes are dependent. The new branch will be created from the current branch. The PR target will be the current feature branch (NOT main).
    • Safety Check: If creating a Stacked PR, output a brief terminal message stating: "Detected active feature branch. Stacking new PR on top of [current-branch-name]."

Phase 2: The "Safe-Commit" Sequence

  1. Branching: Generate a kebab-case branch name (e.g., feat-auth-logic or fix-header-css) based off the branch determined in Phase 1.
  2. Naming: Use Conventional Commits for the message (e.g., feat(ui): add logout button).
  3. Verification:
    • Identify the project type (e.g., Rust/Cargo, Python/Poetry, Node/NPM).
    • Run the primary test, lint, or build command.
    • Abort Policy: If verification fails, stop the sequence and report the error. Do not push.

Phase 3: Remote Integration

  1. Push: Upload the new branch to origin.
  2. PR Creation: Open a Pull Request targeting the base branch determined in Phase 1 (either main or the parent feature branch).
  3. Documentation: Populate the PR description with:
    • Summary: A high-level overview of "Why" and "What."
    • Manual Verification Checklist: Provide a Markdown list (- [ ]) of 3-5 tactical steps for a human to verify the change in a live environment.

Constraints & Rules

  • Atomic Commits: If multiple distinct features are found in the scope, suggest splitting the work instead of one giant commit.
  • No Force Push: Never use --force unless explicitly requested in the follow-up prompt.
  • Clean State: Ensure the workflow ends with the user on the new branch, not the original branch.

Trigger Scenarios

  • User says: "Ship this."
  • User says: "Make a PR for my current changes."
  • Invoked via /git-publish-workflow.