원클릭으로
commit
Run all quality checks, review changes against the current issue, perform code review, and create a PR.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Run all quality checks, review changes against the current issue, perform code review, and create a PR.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, passive voice, negative parallelisms, and filler phrases.
Execute (or resume) an implementation plan stored in .implementation-plan.md. Use when the user types /implement-plan, asks to "resume implementation", or "continue the plan". Reads .implementation-plan.md, picks up at the first uncompleted step in the Execution Progress checklist, and dispatches a Sonnet agent to finish the work.
End-to-end GitHub issue implementation — /implement <N>. Fetches the issue via GitHub CLI, writes it locally, then either implements directly (easy issues) or plans with Opus and implements with Sonnet (complex issues). Resilient to interruption — resumes from the last checkpoint. Also triggered by "implement issue
Create or refine GitHub issues — /issue <description>, /issue --r <N> [guidance] (Refine Mode), /issue --f <description> (Fast Mode, skips clarifying questions and persona review). Parses intent, validates against project goals, invokes persona agents, and handles decomposition. Refine Mode fetches the existing issue, applies guidance, shows a diff, and updates after confirmation.
Lint and auto-fix agent-only markdown files for token efficiency and model readability.
| name | commit |
| description | Run all quality checks, review changes against the current issue, perform code review, and create a PR. |
| user_invocable | true |
You are a senior code reviewer and release engineer. Your job is to validate, review, commit, push, and open a PR for the current branch's changes.
Abort immediately and report to the user if any step in Phase 1 fails.
Run the shared preflight script to verify prerequisites before doing any work:
bash .claude/skills/shared/preflight.sh
Stop on failure — do not proceed.
Before running anything, understand the project's tooling:
package.json (or equivalent manifest: Cargo.toml, pyproject.toml, go.mod, Makefile, etc.) to discover available scripts/commands.CLAUDE.md, CONTRIBUTING.md, or README.md if they exist — look for test/lint/format/typecheck commands and commit conventions.bash .claude/skills/shared/discover-default-branch.sh
This uses the gh API (fast, cached) with a local fallback. Store the result — you will need it in Phase 2, Phase 3, and Phase 6.
Use what you discover in the steps below. Do NOT assume npm commands — use whatever the project actually uses.
.current-issue.md does not exist, stop:
"
.current-issue.mdnot found — you probably haven't run/implementyet. Run/implement <issue-number>to fetch the issue and set up a branch before committing."
**Branch:** from .current-issue.md to get the expected branch name.
(set in Step 5) or otherwise unresolved, stop:
"Branch hasn't been set up yet —
/implementwas interrupted before Step 5. Re-run/implement <issue-number>to continue from where it left off."
git branch --show-current and compare to the expected branch:
<current> but .current-issue.md expects <expected>. Did you switch branches manually? Check out the correct branch and re-run /commit."Run all discovered checks. If any fail, stop, report the failures, and do NOT proceed to Phase 2.
Run the project's unit test command. Hard stop on failure.
Run the project's integration test command (if one exists).
If integration tests fail due to a missing external dependency (database not running, service unavailable, connection refused, etc.), warn the user and ask:
"Integration tests failed — [dependency] doesn't appear to be running. Skip integration tests and continue, or abort?"
Only skip if the user explicitly agrees. All other integration test failures are hard stops.
Run the project's lint-fix command (if one exists). If auto-fixed changes are produced, stage them silently — they'll be included in the commit. If there are remaining lint errors that couldn't be auto-fixed, hard stop.
Run the project's format command (if one exists). Stage any formatting changes silently.
Run the project's type-check command (if one exists). Hard stop on any type errors.
Read .current-issue.md (if it exists) to understand the intent of the current issue. If .current-issue.md does not exist, infer the intent from the branch name and commit history.
Also check for .implementation-plan.md. If it exists, extract the issue number from its first line (<!-- issue: #<number> -->). Compare it to the issue number in .current-issue.md. If they match, read the plan and use it as additional context for scope validation and code review. If they don't match, ignore the plan file entirely — it's stale from a previous run.
Run git diff <main-branch>...HEAD to see all changes on this branch.
Validate that the changes are confined to the intent of the issue. Check for:
If scope creep is detected, report it to the user with specifics and ask whether to proceed or address it first.
Delegate to the reviewer agent. Use the Agent tool with subagent_type="reviewer" and model="sonnet":
"Review all changes on this branch for PR readiness.
Context:
- Read
.current-issue.md(if it exists) to understand the intent of the changes.- Read
.implementation-plan.mdif it exists and its first-line issue number matches.current-issue.md.- Read
CLAUDE.mdfor project-specific rules to enforce (accessibility, JSDoc, logging conventions, prohibited patterns, etc.).- Run
git diff <main-branch>...HEADto see all changes. Read full files where surrounding context is needed to judge correctness.Also check:
- SOLID Principles — Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion
- DRY — Duplicated logic, copy-pasted blocks, patterns that warrant extraction
- Security — Injection risks, XSS, credential exposure, auth checks, input validation at boundaries
For each concern: include the file, line number, what's wrong, and a recommended fix."
Replace <main-branch> in the prompt with the actual main branch name determined in Phase 0.
Present the subagent's findings to the user.
If there are Critical or Warning issues: Ask the user "Would you like to address any of these before committing, or proceed as-is?" and wait for their response.
If there are only Suggestions or no issues: Proceed directly to Phase 4 without pausing.
Check .current-issue.md for a ## Change Type section — the /issue skill writes a hint there when the issue is created.
git diff <main-branch>...HEAD):
<exactly one of: Breaking Change | New Feature | Bug Fix>) or any other non-enumerated value, treat it as no hint.Final value must be exactly one of:
Store this value — it will be included in the PR body and used to update the GitHub issue.
If .current-issue.md references a dependency (e.g., "Depends on #NNN", "companion to #NNN", "blocked by #NNN", "see also #NNN"), add the relationship to the GitHub issue using the native Relationships feature via GraphQL:
# Get node IDs for both issues
gh api graphql -f query='{ repository(owner: "OWNER", name: "REPO") { blocker: issue(number: NNN) { id } blocked: issue(number: CURRENT) { id } } }'
# Add the blocked-by relationship (current issue is blocked by NNN)
gh api graphql -f query='mutation { addBlockedBy(input: {issueId: "BLOCKED_ID", blockingIssueId: "BLOCKER_ID"}) { issue { number } blockingIssue { number } } }'
Do not add or update a ## Depends On section in the issue body — the Relationship is the authoritative record.
Use Conventional Commits format:
feat: for new featuresfix: for bug fixesdocs: for documentationrefactor: for refactorschore: for maintenanceGenerate a commit message that:
closes #<issue_number> if the issue is fully resolved and the issue number is knownPresent the proposed commit message using AskUserQuestion with a preview showing the message and options like:
The user can hit enter to accept the default.
Stage changes using the bundled script (handles the empty-input guard; avoids git add -A or git add .):
bash .claude/skills/commit/stage-changes.sh
If Phase 1c/1d produced lint or format auto-fixes, stage those files explicitly by name afterward.
Before committing, run git status and show the staged file list to the user so they can confirm nothing unexpected is included.
Create the commit with the confirmed message. Use a HEREDOC for the message:
git commit -m "$(cat <<'EOF'
<confirmed commit message>
Co-Authored-By: Claude <model name from system context, e.g. "Sonnet 4.6", "Opus 4.6"> <noreply@anthropic.com>
EOF
)"
git push -u origin HEAD
The script checks whether an open PR already exists for this branch:
The PR title should match the commit subject line.
The PR body should include:
echo "<pr body>" | bash .claude/skills/commit/create-pr.sh "<base-branch>" "<commit subject>"
PR body template:
## Summary
<bullet points summarizing changes, derived from the issue and diff>
Closes #<issue_number>
(omit this line if issue number is unknown)
## Change Type
<exactly one of: Breaking Change | New Feature | Bug Fix>
## Version Bump
<one of: major | minor | patch | none>
Mapping from change type:
- Breaking Change → major
- New Feature → minor
- Bug Fix → patch
- Chore / docs / refactor with no user-facing change → none
## Test plan
- [ ] Unit tests pass
- [ ] Integration tests pass
- [ ] Lint clean
- [ ] Type checks clean
- [ ] Manual verification of <key feature>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Important: The
## Version Bumpline is read by theversion-bump.ymlGitHub Action on merge. Always include it — usenoneif no version change is warranted.
Report the PR URL to the user when done.
If .implementation-plan.md exists and its first-line issue number (<!-- issue: #<number> -->) matches the current issue, post the plan as a comment on the GitHub issue to preserve architectural decisions.
Read .implementation-plan.md with the Read tool first, then inline the content directly as the body argument — do NOT use shell substitutions like $(tail ...), as they don't work inside single-quoted HEREDOCs.
echo "<comment body>" | bash .claude/skills/commit/attach-plan-to-issue.sh <issue-number>
Comment body template:
<details>
<summary>Implementation Plan (generated by Claude)</summary>
<inline the full file content here, excluding the first <!-- issue: #NNN --> line>
</details>
Skip this step if .implementation-plan.md does not exist or the issue number does not match.
Note — Versioning: Version bumps are handled automatically by a GitHub Action on PR merge. Do not include version changes in the commit or PR.