Automated summary
Finalizes current work by running quality checks suited to the changed files, creating meaningful commits, then pushing the branch and opening a pull request with several approval checkpoints.
Strengths
- Selects checks based on detected file types (Go code, YAML, CI workflows, scripts, infrastructure, theme)
- Blocks accidental commits to master/main by offering to create a properly named branch first
- Drafts three commit message suggestions from the diff, conversation context and recent commit style
- Breaks the workflow into 8 numbered steps with progress display and user confirmation before risky actions
Limitations
- Tightly coupled to one repository: hardcoded paths (themes/default, tools/resourcedocsgen, infrastructure) and a CamSoper/ branch prefix
- Assumes uncommitted changes and a configured remote; no dry-run mode or explicit push-failure handling is described
- Relies on Claude Code specifics (AskUserQuestion, shipit:references:* files), so it is not portable
Use it when your changes are ready and you want lint, build, commit and pull request handled in one guided pass.
Skip it for a plain local commit without a pull request, or on repositories whose layout and conventions differ from the ones hardcoded in the skill.
Security analysis
CautionThe skill executes legitimate version control operations including branch creation, reset --hard (with confirmation), committing, and pushing. No exfiltration, destructive system commands beyond git, or obfuscation. However, reset --hard and push can cause data loss or remote changes, so caution is warranted.
- •Instructs git reset --hard origin/master which discards uncommitted changes, but includes preview and user confirmation.
- •Runs git push to remote, which modifies remote repository state, legitimate but potentially risky if misused.
- •Uses git commit and add commands that alter local repository history.
Examples
/shipit — my layout changes in themes/default are ready; run the quality checks, commit and open the PR.I'm on master with uncommitted changes; help me create a feature branch, commit the work and raise a pull request.Use /shipit for my new files under themes/default/data/registry/packages/ — validate the YAML before committing.description: Finalize and ship changes with quality checks, commits, and PR creation
Ship It!
Use this when: You're ready to commit your work and create a pull request.
Performs comprehensive quality checks (lint, build, code compilation), creates meaningful commits, and handles the complete workflow from staging to PR creation with multiple approval checkpoints.
Usage
/shipit
Finalizes your current work by running quality checks, committing changes, pushing to remote, and creating a pull request.
Required: Uncommitted changes in the working directory
Works with: All file types (Go code, YAML, CI workflows, scripts, theme, infrastructure)
Special handling: Detects and prevents master branch commits, validates Go code and YAML, and scans conversation history to avoid redundant quality checks.
Process
CRITICAL SUCCESS CRITERIA: Complete all 8 steps in sequence. Every step is mandatory and serves a critical purpose in the workflow. DO NOT SKIP ANY STEP OR END THE WORKFLOW PREMATURELY!
Step Counter: Display progress before each step as: [Step X/8] followed by the step heading. This helps users track progress through the workflow.
References: This skill uses detailed reference files. Always follow the detailed instructions in these referenced documents when applicable:
shipit:references:quality-checks- Quality check procedures and code testingshipit:references:commit-messages- Commit message style guidelines
[Step 1/8] Context Gathering
Purpose: Understand what's changed and check for next steps from previous work.
Actions:
- Run
git status --shortto see all changes - Run
git branch --show-currentto verify current branch - Scan last 5 conversation messages for "next steps" or "TODO" mentions
- Categorize changed files:
- Package YAML (
themes/default/data/registry/packages/) - Go tools (
tools/resourcedocsgen/) - CI workflows (
.github/workflows/) - Build scripts (
Makefile,scripts/) - Infrastructure (
infrastructure/) - Theme/layout (
themes/default/layouts/,themes/default/theme/) - Community packages (
community-packages/) - Other
- Package YAML (
Output: Display summary of changes with file counts per category
[Step 2/8] Quality Checks
Run context-aware quality checks. Scan conversation history to skip redundant checks (lint/build), and run appropriate checks based on file types changed.
See shipit:references:quality-checks for complete procedures, detection patterns, and error handling.
Display summary and ask user to proceed with AskUserQuestion.
[Step 3/8] Branch Verification
Purpose: Prevent accidental commits to master branch.
Actions:
-
Check current branch:
git branch --show-current -
If on
masterormain:- Display warning with current git status
- Use
AskUserQuestionwith options:- Create new branch from current state (Recommended)
- Prompts for branch name with format:
CamSoper/{descriptive-name} - Runs:
git checkout -b CamSoper/{name}
- Prompts for branch name with format:
- Reset to origin/master and create clean branch
- Warns this will discard all changes
- Runs:
git reset --hard origin/master - Then prompts for branch name and creates it
- Cancel (I'll handle manually)
- Exits the skill
- Create new branch from current state (Recommended)
-
If on feature branch:
- Display: "[Step 3/8] Skipped - already on feature branch
{branch-name}" - Continue to Step 4
- Display: "[Step 3/8] Skipped - already on feature branch
Safety: Always preview destructive operations (like reset --hard) before executing.
[Step 4/8] Commit Preparation
Generate 3 meaningful commit message suggestions based on:
git diff --statoutput- Conversation context (user's stated goal from last 10 messages)
- Recent commit style (
git log --oneline -5) - File types changed
See shipit:references:commit-messages for message format, prefix guidelines, and generation strategies.
Present suggestions with AskUserQuestion (3 options + custom message).
All messages include: Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
[Step 5/8] Commit Preview
Purpose: Preview exactly what will be committed before execution.
Display preview:
Ready to commit:
Branch: CamSoper/fix-yaml-validation
Files to be committed:
M themes/default/data/registry/packages/example.yaml
M tools/resourcedocsgen/cmd/generate.go
A tools/resourcedocsgen/cmd/generate_test.go
Commit message:
─────────────────────────────────────────
Fix YAML validation for community packages
Corrects category field validation in resourcedocsgen.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
─────────────────────────────────────────
Commands that will run:
git add themes/default/data/registry/packages/example.yaml tools/resourcedocsgen/cmd/generate.go tools/resourcedocsgen/cmd/generate_test.go
git commit -m "$(cat <<'EOF'
Fix YAML validation for community packages
Corrects category field validation in resourcedocsgen.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EOF
)"
Ask for confirmation:
- Use
AskUserQuestionwith options:- Commit (Recommended) - Proceed to Step 6
- Edit message - Return to Step 4 to select different message
- Cancel - Exit without committing
If "Edit message": Loop back to Step 4
If "Cancel": Exit skill with message about uncommitted changes
[Step 6/8] Push Changes
Purpose: Commit and push changes to remote.
Actions (execute sequentially):
-
Stage specific files:
git add file1.yaml file2.go file3_test.go ...Never use
git add .orgit add -A- always list specific files -
Commit with heredoc:
git commit -m "$(cat <<'EOF' {commit message from Step 5} Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> EOF )" -
Check remote tracking:
git rev-parse --abbrev-ref @{u} 2>/dev/nullIf fails (no tracking branch): Need to push with
-u -
Push to remote:
# If no tracking branch: git push -u origin {branch-name} # If tracking branch exists: git push -
Verify push:
git statusShould show "Your branch is up to date with 'origin/{branch}'"
Display confirmation:
✓ Committed changes (abc123d)
✓ Pushed to origin/CamSoper/fix-yaml-validation
If any step fails:
- Display error
- Offer to retry or cancel
- Don't proceed to Step 7 if push failed
[Step 7/8] Create Pull Request
Purpose: Generate and create a pull request with appropriate description.
Actions:
-
Generate PR description:
Title: Use first line of commit message (without co-author line)
Body:
- Brief summary (1-2 sentences from commit message)
- Changes included (from
git diff --stat master...HEAD) - Keep concise (aim for < 500 characters)
- Include issue references if applicable (e.g., "Fixes #123")
- No "Generated with Claude Code" footer
Example:
Corrects category field validation in resourcedocsgen for community packages. ## Changes - Fixed YAML validation for category enum values - Added unit tests for edge cases - Updated example package YAML -
Display PR preview:
Pull Request Preview: ───────────────────────────────────────── Title: Fix YAML validation for community packages Body: Corrects category field validation in resourcedocsgen for community packages. ## Changes - Fixed YAML validation for category enum values - Added unit tests for edge cases - Updated example package YAML ───────────────────────────────────────── -
Ask for confirmation:
- Use
AskUserQuestionwith options:- Create PR (Recommended) - Execute pr creation
- Edit description - Allow custom title/body input, show preview again
- Cancel - Exit without creating PR (changes are still committed/pushed)
- Use
-
If "Edit description":
- Ask for custom title (or keep current)
- Ask for custom body (or keep current)
- Show updated preview
- Loop back to confirmation
-
If "Create PR":
gh pr create --title "{title}" --body "$(cat <<'EOF' {body} EOF )"
If PR creation fails:
- Display error (auth issues, network, etc.)
- Note that changes are still committed and pushed
- Suggest manual PR creation with URL:
https://github.com/pulumi/registry/pull/new/{branch-name}
[Step 8/8] Completion Report
Purpose: Confirm successful completion and provide next steps.
Actions:
-
Fetch PR details:
gh pr view --json url,number,title -
Check for "next steps" in conversation:
- Scan last 10 messages for mentions of "next steps", "TODO", "follow-up"
- Extract any action items that were mentioned
-
Display success message:
Successfully shipped your changes! Pull Request: #1234 URL: https://github.com/pulumi/registry/pull/1234 Title: Fix YAML validation for community packages Branch: CamSoper/fix-yaml-validation Next steps: - Monitor PR for CI/CD status - {any next steps from conversation} -
Celebrate:
Ship it! Your changes are ready for review.
End of skill
Critical Workflow Rules
- Progress Display: Always display step number "[Step X/8]" before each heading
- Sequential Execution: Never skip ahead - complete each step before moving to next
- User Approval: Get explicit approval before destructive actions (Steps 3, 5, 7)
- Error Handling: If a step fails, don't proceed - offer retry or cancel
- Skip Display: If skipping a step, show "[Step X/8] Skipped - {reason}"
- Context Preservation: Store decisions from previous steps to avoid re-asking
Notes
- This skill respects the
/AGENTS.mdrepository guidelines - Commit messages always include co-author attribution for Claude
- PR descriptions never include "Generated with Claude Code"
- Branch names follow
CamSoper/{descriptive-name}format - All git operations use safe practices (no force push, no destructive defaults)
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/ship-it-commit-and-pr-workflow-mts7il9i/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/ship-it-commit-and-pr-workflow-mts7il9i' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/ship-it-commit-and-pr-workflow-mts7il9i/download' --output '.skill-downloads/ship-it-commit-and-pr-workflow-mts7il9i/SKILL.md.part' && mv '.skill-downloads/ship-it-commit-and-pr-workflow-mts7il9i/SKILL.md.part' '.skill-downloads/ship-it-commit-and-pr-workflow-mts7il9i/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.
Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/ship-it-commit-and-pr-workflow-mts7il9i/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
Configure a Chat Channel with SecretRefs
DevOps
Set up chat channels using non-interactive commands, with secrets only as SecretRefs. Covers gather, mutate, repair, and prove steps for reliable delivery.
Investigate ClickHouse CI Failures
DevOps
Investigate a ClickHouse CI failure end-to-end from a PR or S3 report URL. Fetches failed tests, classifies flaky vs real regression, and checks for existing issues/fixes.
Ansible PR Review
DevOps
Reviews an Ansible PR following the project's standardized process, including changelog checks, test coverage validation, and feedback tracking.