Git commit and pull request guidelines using conventional commits. Use when creating commits, writing commit messages, creating PRs, or reviewing PR descriptions.
Install
mkdir -p .claude/skills/git && curl -L -o skill.zip "https://mcp.directory/api/skills/download/1102" && unzip -o skill.zip -d .claude/skills/git && rm skill.zipInstalls to .claude/skills/git
About this skill
Git Commit and Pull Request Guidelines
Conventional Commits Format
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Commit Types
feat: New features (correlates with MINOR in semantic versioning)fix: Bug fixes (correlates with PATCH in semantic versioning)docs: Documentation only changesrefactor: Code changes that neither fix bugs nor add featuresperf: Performance improvementstest: Adding or modifying testschore: Maintenance tasks, dependency updates, etc.style: Code style changes (formatting, missing semicolons, etc.)build: Changes to build system or dependenciesci: Changes to CI configuration files and scripts
Scope Guidelines
- Scope is OPTIONAL: only add when it provides clarity
- Use lowercase, placed in parentheses after type:
feat(transcription): - Prefer specific component/module names over generic terms
- Your current practice is good: component names (
EditRecordingDialog), feature areas (transcription,sound) - Avoid overly generic scopes like
uiorbackendunless truly appropriate
When to Use Scope
- When the change is localized to a specific component/module
- When it helps distinguish between similar changes
- When working in a large codebase with distinct areas
When NOT to Use Scope
- When the change affects multiple areas equally
- When the type alone is sufficiently descriptive
- For small, obvious changes
Description Rules
- Start with lowercase immediately after the colon and space
- Use imperative mood ("add" not "added" or "adds")
- No period at the end
- Keep under 50-72 characters on first line
Breaking Changes
- Add
!after type/scope, before colon:feat(api)!: change endpoint structure - Include
BREAKING CHANGE:in the footer with details - These trigger MAJOR version bumps in semantic versioning
Examples Following Your Style:
feat(transcription): add model selection for OpenAI providersfix(sound): resolve audio import paths in assets modulerefactor(EditRecordingDialog): implement working copy patterndocs(README): clarify cost comparison sectionchore: update dependencies to latest versionsfix!: change default transcription API endpoint
Commit Messages Best Practices
The "Why" is More Important Than the "What"
The commit message subject line describes WHAT changed. The commit body explains WHY.
Good commit (explains motivation):
fix(auth): prevent session timeout during file upload
Users were getting logged out mid-upload on large files because the
session refresh only triggered on navigation, not background activity.
Bad commit (only describes what):
fix(auth): add keepalive call to upload handler
The first commit tells future developers WHY the code exists. The second makes them dig through the code to understand the purpose.
Other Best Practices
- NEVER include Claude Code or opencode watermarks or attribution
- Each commit should represent a single, atomic change
- Write commits for future developers (including yourself)
- If you need more than one line to describe what you did, consider splitting the commit
Pull Request Guidelines
Motivation First
Every PR description MUST start with WHY this change exists. Not what files changed, not how it works—WHY.
Good PR opening:
Users were getting logged out mid-upload on large files. The session refresh only triggered on navigation, not during background activity like uploads.
Bad PR opening:
This PR adds a keepalive call to the upload handler and updates the session refresh logic.
The reader should understand the PROBLEM before they see the SOLUTION.
Code Examples Are Mandatory for API Changes
If the PR introduces or modifies APIs, you MUST include code examples showing how to use them. No exceptions.
What requires code examples:
- New functions, types, or exports
- Changes to function signatures
- New CLI commands or flags
- New HTTP endpoints
- Configuration changes
Good API PR (shows the actual usage):
// Define actions once
const actions = {
posts: {
create: defineMutation({
input: type({ title: 'string' }),
handler: ({ title }) => client.tables.posts.create({ title }),
}),
},
};
// Pass to adapters - they generate CLI commands and HTTP routes
const cli = createCLI(client, { actions });
const server = createServer(client, { actions });
Bad API PR (only describes without showing):
This PR adds an action system that generates CLI commands and HTTP routes from action definitions.
The first version lets reviewers understand the API at a glance. The second forces them to dig through the code to understand the call sites.
Before/After Code Snippets for Refactors
Code examples aren't just for API changes. For internal refactors that change how code is structured without changing the public API, before/after code snippets show reviewers the improvement concretely:
// BEFORE: direct YKeyValueLww usage with manual scanning
const ykv = new YKeyValueLww<unknown>(yarray);
function reconstructRow(rowId) { // O(n) - scan every cell
for (const [key, entry] of ykv.map) {
if (key.startsWith(prefix)) { ... }
}
}
// AFTER: composed storage layers
const cellStore = createCellStore<unknown>(ydoc, TableKey(tableId));
const rowStore = createRowStore(cellStore);
rowStore.has(id) // O(1)
rowStore.get(id) // O(m) where m = fields per row
rowStore.count() // O(1)
Use before/after snippets when:
- Internal implementation changes significantly even though external API is unchanged
- Performance characteristics change and the code shows why
- Complexity is being moved/decomposed (show what was inlined vs what's now delegated)
Visual Communication with ASCII Art
Use ASCII diagrams liberally to communicate complex ideas. They're more scannable than prose and show relationships at a glance.
Journey/Evolution Diagrams
For PRs that iterate on previous work, show the evolution:
┌─────────────────────────────────────────────────────────────────────────┐
│ PR #1217 (Jan 7) │
│ "Add YKeyValue for 1935x storage improvement" │
│ │
│ Y.Map (524,985 bytes) ──→ YKeyValue (271 bytes) │
│ │
└───────────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ PR #1226 (Jan 8) │
│ "Remove YKeyValue, use native Y.Map + epoch compaction" │
│ │
│ Reasoning: "Unpredictable LWW behavior" ← ⚠️ (misleading!) │
│ │
└───────────────────────────────────┬─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ This PR │
│ "Restore YKeyValue with LWW timestamps" │
│ │
│ Why: Timestamp-based resolution gives intuitive "latest wins" │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Layered Architecture Diagrams
Show how components stack:
┌─────────────────────────────────────────────────────────────┐
│ defineWorkspace() + workspace.create() │ ← High-level
│ Creates Y.Doc internally, binds tables/kv/capabilities │
├─────────────────────────────────────────────────────────────┤
│ createTables(ydoc, {...}) / createKv(ydoc, {...}) │ ← Mid-level
│ Binds to existing Y.Doc │
├─────────────────────────────────────────────────────────────┤
│ defineTable() / defineKv() │ ← Low-level
│ Pure schema definitions │
└─────────────────────────────────────────────────────────────┘
Comparison Tables
For showing trade-offs between approaches:
┌────────────────────────────────────────────────────────────────┐
│ Use Case │ Recommendation │
├───────────────────────────────────┼────────────────────────────┤
│ Real-time collab, simple cases │ YKeyValue (positional) │
│ Offline-first, multi-device │ YKeyValueLww (timestamp) │
│ Clock sync unreliable │ YKeyValue (no clock dep) │
└────────────────────────────────────────────────────────────────┘
Flow Diagrams
For showing data/control flow:
┌────────────────────────────────────────────────────────────────┐
│ Conflict Resolution │
├────────────────────────────────────────────────────────────────┤
│ │
│ Client A (2:00pm) ──┐ │
│ │──→ Sync ──→ Winner? │
│ Client B (3:00pm) ──┘ │
│ │ │
│ ┌────────────────┴────────────────┐ │
│ ▼ ▼ │
│ YKeyValue YKeyValueLww │
│ (clientID
---
*Content truncated.*
More by EpicenterHQ
View all skills by EpicenterHQ →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
pdf-to-markdown
aliceisjustplaying
Convert entire PDF documents to clean, structured Markdown for full context loading. Use this skill when the user wants to extract ALL text from a PDF into context (not grep/search), when discussing or analyzing PDF content in full, when the user mentions "load the whole PDF", "bring the PDF into context", "read the entire PDF", or when partial extraction/grepping would miss important context. This is the preferred method for PDF text extraction over page-by-page or grep approaches.
Related MCP Servers
Browse all serversIntegrate with Gitee to manage repositories, track issues, and streamline code workflows easily using secure token authe
Extend your developer tools with GitHub MCP Server for advanced automation, supporting GitHub Student and student packag
GitLab MCP Server integrates with the GitLab API for seamless CI CD and continuous integration automation using natural
GitHub Repos Manager integrates with GitHub's REST API to streamline repo management, issues, pull requests, file ops, s
Integrate with GitLab for seamless repository management, file operations, CI/CD, issue tracking, and merge requests via
Doclea MCP: persistent memory for AI assistants—store and retrieve architectural decisions, patterns and code insights u
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.