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
2.9 KiB
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:
- 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.
- Base Branch Detection: Identify the currently checked-out branch.
- Independent PR: If the current branch is
main(ormaster), the new branch will be based onmain. The PR target will bemain. - 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 (NOTmain). - 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]."
- Independent PR: If the current branch is
Phase 2: The "Safe-Commit" Sequence
- Branching: Generate a
kebab-casebranch name (e.g.,feat-auth-logicorfix-header-css) based off the branch determined in Phase 1. - Naming: Use Conventional Commits for the message (e.g.,
feat(ui): add logout button). - Verification:
- Identify the project type (e.g., Rust/Cargo, Python/Poetry, Node/NPM).
- Run the primary
test,lint, orbuildcommand. - Abort Policy: If verification fails, stop the sequence and report the error. Do not push.
Phase 3: Remote Integration
- Push: Upload the new branch to
origin. - PR Creation: Open a Pull Request targeting the base branch determined in Phase 1 (either
mainor the parent feature branch). - 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
--forceunless 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.