finish
Skill30 starsChanged 3 months agoMITView on GitHub
Create a pull request with comprehensive description following repo best practices
- Commits and pushes
22 other projects use a version of this.
Adopted by
Most recently taken up by
- MarvinJWendt/skillstheir own version, first seen Nov 8, 2026
- leinardi/adversarial-review-looptheir own version, first seen Nov 8, 2026
- MammadovEshgin/clean-code-skilltheir own version, first seen Nov 8, 2026
- hex/claude-sessionstheir own version, first seen Nov 3, 2026
- CG-5228/ClaudeCodeImpactLab_hackathontheir own version, first seen Nov 1, 2026
- danielcherubini/skillstheir own version, first seen Oct 25, 2026
Used with
Projects with it also use bootstrap, debug and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
OpenAISkillbootstrap
Project bootstrapping orchestrator for repos that depend on Vercel-linked resources (databases, auth, and managed integrations). Use when setting up or repairing a repository so linking, environment provisioning, env pulls, and first-run db/dev commands happen in the correct safe order.
Also in 3 projects that use this
AnthropicSkilldebug
Structured debugging session — reproduce, isolate, diagnose, and fix. Trigger with an error message or stack trace, "this works in staging but not prod", "something broke after the deploy", or when behavior diverges from expected and the cause isn't obvious.
Also in 5 projects that use this
Hugging FaceSkillimplement
Make tests pass. Invoke after /write-tests produces failing tests.
Also in 6 projects that use this
dillonluiSkilldesign-review
Review a view or flow for UX and UI issues. Provides severity-ranked, actionable findings grounded in established design heuristics. Use when the user asks for design feedback, UX review, or UI critique.
Also in 3 projects that use this
BlockSkillplan
Draft a TDD, PRD, or lightweight plan in the conversation without committing it.
Also in 4 projects that use this
nicolasestremSkillbrainstorm
Structured idea generation and solution exploration with systematic analysis.
Also in 3 projects that use this
Other versions22 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 22
- hacan359/tonkatsu_box★ 597same name
- alexeykrol/claude-code-starter★ 194same name
- hex/claude-sessions★ 54same name
- alexiolan/craft-skills★ 17same name
- danielcherubini/skills★ 14same name
- keefar/ticket-flow★ 4same name
- mmjclayton/agent-sop★ 4same name
- andreasbaumgartner/gilo★ 2same name
- clearsmog/claude-skills★ 2same name
- leinardi/adversarial-review-loop★ 2same name
12 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- change-briefSkill
- clean-goneSkill
- close-customer-loopSkill
- commitSkill
- notificationsSkill
- plan-qaSkill
- plan-tddSkill
- release-notesSkill
- releaseSkill
- review-requestSkill
- reviewSkill
- review-watchSkill
- rfcSkill
- setupSkill
- standupSkill
- start-qaSkill
- startSkill
- statusSkill
- syncSkill
- tddSkill
- updateSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
20 rules. 0 are common, 16 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 18 edited versions we read keep these.
16
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Check for configuration and context:
- Distinctive: line 62
If context file is missing or incomplete:
- Distinctive: line 65
Ask for missing information (ticket ID, branch name)
- Very specific: line 67
If the context contains a branch value that does not match the current branch, treat it as stale, explain which file was ignored, and …
- Distinctive: line 71
Check current git state:
- Very specific: line 87
If uncommitted changes exist: "You have uncommitted changes.
- Very specific: line 88
If no commits on branch: "No commits to create PR.
- Distinctive: line 89
If on target branch: "You're on the target branch.
- Distinctive: line 128
Ask the user for additional context (use the active host user-input mechanism):
- Distinctive: line 156
Run existing tests (default)
- Distinctive: line 160
If manual testing, ask for specific test steps.
- Distinctive: line 168
No breaking changes (default)
- Distinctive: line 171
If yes, ask for description of breaking changes.
- Distinctive: line 175
Use this template and fill with collected data:
- Distinctive: line 273
If branch already pushed with changes: Ask to force push or just update
- Distinctive: line 274
If push fails: Show error and suggest solutions
- Very specific: line 280
Use commit message format from config (default: [{type}] {message} ({ticket})):
- Distinctive: line 328
If Linear MCP server is available, update ticket status:
- Distinctive: line 338
If Jira MCP server is available, add PR link and update status:
- Distinctive: line 365
Ask if the user wants to clean up canonical context:
“Common” is measured: kept by at least 6 in 10 of the 18 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Cross-runtime: follow runtime compatibility for invocation, delegation, configuration precedence, state paths, and permissions.
You are helping create a pull request with a comprehensive description. Your task is to gather information, generate the PR description, push the branch, and create the PR using project conventions.
Step 1: Load Configuration
Check for configuration and context:
# Check for config and context files
if [ -f ".git-workflow/config.yaml" ]; then CONFIG_PATH=".git-workflow/config.yaml"; elif [ -f ".claude/config.yaml" ]; then CONFIG_PATH=".claude/config.yaml"; else CONFIG_PATH=""; fi
if [ -f ".git-workflow/pr-context.json" ]; then CONTEXT_PATH=".git-workflow/pr-context.json"; elif [ -f ".claude/.pr-context.json" ]; then CONTEXT_PATH=".claude/.pr-context.json"; else CONTEXT_PATH=""; fi
# Get current branch
git branch --show-currentLoad from the resolved CONFIG_PATH (canonical first, legacy read-only fallback):
workflow:
developmentBranch: staging
productionBranch: main
pullRequests:
targetBranch: staging
reviewers: []
labels: []
issueTracker:
type: autoLoad from the resolved CONTEXT_PATH (canonical first, legacy read-only fallback):
{
"ticket_id": "PROJ-1234",
"ticket_url": "https://...",
"ticket_title": "Ticket title",
"branch": "fix/proj-1234-description",
"type": "fix",
"description": "Short description"
}Default Values (when no config):
pullRequests:
targetBranch: staging
reviewers: []
labels: []If context file is missing or incomplete:
- Inform the user they should run
/startand/commitfirst - Ask for missing information (ticket ID, branch name)
If the context contains a branch value that does not match the current branch, treat it as stale, explain which file was ignored, and gather fresh context. Do not silently reuse context from another branch.
Step 2: Verify State
Check current git state:
# Current branch
CURRENT_BRANCH=$(git branch --show-current)
# Commits on this branch vs target
TARGET_BRANCH=$(config.pullRequests.targetBranch || "staging")
git log --oneline ${TARGET_BRANCH}..HEAD
# Any uncommitted changes?
git status --shortWarnings:
- If uncommitted changes exist: "You have uncommitted changes. Run
/commitfirst?" - If no commits on branch: "No commits to create PR. Make changes and run
/commitfirst." - If on target branch: "You're on the target branch. Switch to a feature branch first."
Step 3: Gather Changed Files
Analyze what changed:
# Files changed vs target branch
TARGET_BRANCH=$(config.pullRequests.targetBranch || "staging")
git diff --name-only ${TARGET_BRANCH}...HEAD
git diff --stat ${TARGET_BRANCH}...HEAD
# Commit messages on this branch
git log --oneline ${TARGET_BRANCH}..HEADDisplay summary:
Changes on this branch:
Files changed: 5
Commits: 3
Files:
M src/services/auth.ts (+45, -12)
M src/controllers/user.ts (+23, -8)
A src/utils/validation.ts (+67)
M tests/auth.test.ts (+89, -0)
M package.json (+2, -1)
Commits:
abc1234 [Fix] Update authentication flow (PROJ-1234)
def5678 [Fix] Add input validation (PROJ-1234)
ghi9012 [Fix] Add unit tests (PROJ-1234)Step 4: Gather PR Information
Ask the user for additional context (use the active host user-input mechanism):
Question 1: Summary of Changes
Question: "Briefly describe what this PR does and why"
Example: "Fixes authentication timeout by implementing token refresh and adding proper error handling"
Question 2: What Issues Were Fixed
Question: "What issues did this PR fix? List each problem and solution."
Format: Numbered list
Example:
1. Token expiry not handled -> Added automatic token refresh
2. No validation on user input -> Added input sanitization
3. Missing error messages -> Added user-friendly error responsesQuestion 3: Testing Instructions
Question: "How should reviewers test these changes?"
Options:
- Run existing tests (default)
- Manual testing required - will provide instructions
- Both automated and manual testing needed
If manual testing, ask for specific test steps.
Question 4: Breaking Changes
Question: "Are there any breaking changes?"
Options:
- No breaking changes (default)
- Yes, there are breaking changes
If yes, ask for description of breaking changes.
Step 5: Generate PR Description
Use this template and fill with collected data:
## Description
{Fixes|Closes|Relates to} {ticket_id}
{High-level summary from user input}
### Changes
{For each commit or logical change, create a bullet point}
- **{Component/Area}**: {Description of change}
### Why
{Root cause explanation from user}
{Solution explanation}
---
## Testing
### Automated Tests
```bash
{testing.unit command or auto-detected}
```
### Manual Testing
{If manual testing required, include steps}
{If API endpoint, include curl example:}
```bash
curl -X {METHOD} "{base_url}/{endpoint}" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json"
```
### Expected Result
**Before**: {Description of broken behavior}
**After**: {Description of fixed behavior}
---
## Checklist
- [ ] Tests pass locally
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Documentation updated (if needed)
{If breaking changes:}
- [ ] Breaking changes documented
- [ ] Migration guide providedCustomize for Issue Tracker
Linear:
## Description
Fixes {ticket_id}
{Linear will auto-link to the ticket}Jira:
## Description
Fixes [{ticket_id}]({jira_base_url}/browse/{ticket_id})GitHub Issues:
## Description
Fixes #{issue_number}Step 6: Push Branch
# Push branch to remote with upstream tracking
git push -u origin {branch_name}Error Handling:
- If branch already pushed with changes: Ask to force push or just update
- If push fails: Show error and suggest solutions
Step 7: Create PR
Format PR Title
Use commit message format from config (default: [{type}] {message} ({ticket})):
[Fix] Update authentication flow (PROJ-1234)
[Feature] Add dark mode support (ENG-456)
[Hotfix] Fix critical security issue (ABC-789)Create PR with gh CLI
# Determine target branch
TARGET_BRANCH=$(config.pullRequests.targetBranch || "staging")
# Create PR
gh pr create \
--base "${TARGET_BRANCH}" \
--title "{PR_TITLE}" \
--body "$(cat <<'EOF'
{GENERATED_DESCRIPTION}
EOF
)"Add Reviewers (If Configured)
# From config.pullRequests.reviewers
gh pr edit {PR_NUMBER} --add-reviewer "user1,user2,team/name"Add Labels (If Configured)
# From config.pullRequests.labels
gh pr edit {PR_NUMBER} --add-label "needs-review,bug"Assign to Self
gh pr edit {PR_NUMBER} --add-assignee @meStep 8: Link to Issue Tracker
Linear (via MCP)
If Linear MCP server is available, update ticket status:
mcp__linear__update_issue(id: ticket_id, state: "In Review")The MCP server handles authentication automatically.
Jira (via MCP)
If Jira MCP server is available, add PR link and update status:
mcp__jira__add_comment(issueKey: ticket_id, body: "PR: {PR_URL}")GitHub Issues
GitHub automatically links PRs with "Fixes #123" syntax (no additional action needed).
Step 9: Confirm and Cleanup
Output confirmation:
Branch pushed: {branch_name}
PR created: {PR_URL}
Title: {PR_TITLE}
Target: {target_branch}
Reviewers: {reviewers_list or "None configured"}
Labels: {labels_list or "None"}
PR is ready for review!Optional Cleanup
Ask if the user wants to clean up canonical context:
# Remove context file (optional)
rm .git-workflow/pr-context.jsonOr keep it for reference until the PR is merged. Legacy .claude/.pr-context.json is a read-only fallback and must never be deleted or modified by this workflow. If the active context came from that legacy path, warn that cleanup cannot remove it, leave it in place, and recommend /setup or $setup to migrate it.
Configuration Reference
| Setting | Default | Description |
pullRequests.targetBranch | staging | Default base branch for PRs |
pullRequests.reviewers | [] | Default reviewers |
pullRequests.labels | [] | Default labels |
issueTracker.type | auto | Issue tracker integration |
workflow.developmentBranch | staging | Development branch name |
Error Handling
| Scenario | Action |
gh not installed | Provide installation instructions |
| Not authenticated | Run gh auth login instructions |
| No commits on branch | Suggest running /commit first |
| Uncommitted changes | Suggest running /commit first |
| Branch not pushed | Push automatically before PR |
| PR already exists | Show existing PR URL, ask to update |
| Context file missing | Gather info manually, suggest /start |
| Target branch doesn't exist | Error with suggestion |
Examples
Standard Flow
User: /finish
Agent: [Shows 5 files changed, 3 commits]
Agent: Describe what this PR does? -> "Fixes auth timeout"
Agent: What issues were fixed? -> "1. Token expiry -> Added refresh"
Agent: How to test? -> "Run existing tests"
Agent: Breaking changes? -> "No"
Result: PR #123 created
URL: https://github.com/org/repo/pull/123With Reviewers and Labels
User: /finish
Agent: [Gathers info]
Result: PR #124 created
Reviewers: @alice, @bob, @team/backend
Labels: needs-review, featureWith Linear Integration
User: /finish
Agent: [Creates PR]
Agent: [Updates Linear ticket ENG-456 to "In Review"]
Result: PR #125 created
Ticket ENG-456 updated to "In Review"PR Description Templates
Bug Fix Template
## Description
Fixes {ticket_id}
This PR fixes {brief description of bug}.
### Root Cause
{Explanation of why the bug occurred}
### Solution
{How the fix addresses the root cause}
### Changes
- {Change 1}
- {Change 2}
## Testing
{Test instructions}Feature Template
## Description
Implements {ticket_id}
This PR adds {feature name} which allows users to {capability}.
### Implementation
{High-level overview of implementation approach}
### Changes
- {Change 1}
- {Change 2}
## Testing
{Test instructions}
## Screenshots
{If UI changes, include before/after screenshots}Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

