Files
asepharyana-hub-guide/skills/git-workflow/SKILL.md
T
asepharyana e513cddd68 feat(hub-guide): expand plugin with 26 best-practice skills, hooks, and references
Transform hub-guide from a single-skill Hub monorepo guide into a
comprehensive programming best-practice plugin covering all situations.

Skills (26):
- Core: engineering-principles, clean-code, clean-architecture,
  design-patterns, testing, error-handling, security, api-design,
  git-workflow, documentation, logging-observability, performance
- Languages: typescript, python, rust, go
- Frameworks: react-frontend, elysiajs, hono-backend, drizzle-database, nextjs
- Infrastructure: docker, ci-cd, monitoring
- Monorepo: monorepo, hub-guide (existing)

Hooks:
- SessionStart: auto-detect project type and activate relevant skills
- PreToolUse (Write|Edit): inject language-specific rules per file type

Reference files for deep dives:
- clean-architecture/references/solid.md (SOLID + component principles)
- design-patterns/references/catalog.md (full GoF catalog with examples)
- testing/references/mocks.md (test double taxonomy)

Restructure plugin to modern skills/ directory format.
2026-07-25 11:35:16 +07:00

4.3 KiB

name, description
name description
git-workflow Git workflow best practices — commit conventions, branching strategies, PR conventions, rebase vs merge, and code review. Use when writing commit messages, reviewing PRs, planning branching strategy, or whenever the user mentions "commit," "branch," "pull request," "PR," "merge," "rebase," "squash," "git flow," "trunk-based," "conventional commit," or "code review."

Git Workflow

Commit Message Convention

Format: <type>(<scope>): <description>

feat(auth): add google oauth sign-in
fix(billing): handle null currency in invoice
chore(deps): update typescript to 5.5
docs(api): document rate-limit headers
refactor(orders): extract payment validation
test(users): add unit tests for CreateUser
ci(deploy): split build and push steps
perf(db): add index on orders.created_at
style(ui): fix button alignment

Rules:

  • Type is lowercase. No period at the end.
  • Scope is required — the affected module/context.
  • Imperative mood ("add" not "added" or "adds").
  • Subject under 72 chars.
  • Body wraps at 72 chars. Explains why (not what).
  • Footer for breaking changes: BREAKING CHANGE: ...
  • Footer for co-authors: Co-Authored-By: Name <email>

Branching Strategy

Trunk-Based (preferred for CI/CD)

main ← feature branches
  • Short-lived feature branches (1-2 days max).
  • PR → auto-merge to main after CI passes.
  • Deploy from main. Hotfix = branch from main → merge back.

GitHub Flow

main → feature/xyz → PR → main
main → fix/xyz → PR → main
main → chore/xyz → PR → main

Git Flow (for release-based projects)

main → develop → feature/xyz → PR → develop
                              → release/v1.2 → main + develop
                              → hotfix/v1.2.1 → main + develop

Choose:

  • Trunk-based — if you deploy multiple times a day (SaaS, web apps).
  • Git Flow — if you version releases (libraries, mobile apps, on-prem).

PR Conventions

Title

Same as commit convention: feat(scope): description

Description Template

## What
Brief description of the change.

## Why
Problem being solved. Link to issue/ticket.

## How
High-level approach — architecture decisions, trade-offs.

## Testing
- [ ] Unit tests added/passed
- [ ] Integration tests added/passed
- [ ] Manual test steps

## Screenshots (if UI change)
...

## Checklist
- [ ] Lint passes
- [ ] Tests pass
- [ ] Docs updated
- [ ] Breaking changes documented

PR Size

  • Target: <200 lines changed. Large PRs get less thorough reviews.
  • If >500 lines, split into logical chunks or mark as "stacked PR."
  • One logical change per PR. Don't mix refactors with features.

Code Review

Reviewer Checklist

  1. Does the solution match the PR description?
  2. Any edge cases unhandled? (empty state, errors, concurrency)
  3. Tests cover happy path + error paths + edge cases?
  4. No dead code, commented-out code, magic numbers?
  5. Dependencies are necessary (no scope creep)?
  6. Error handling appropriate (not silent, not leaky)?
  7. Security: input validated? Auth checked? No secrets?

Review Etiquette

  • Be specific — "Line 42: this query is N+1, use JOIN" not "this is slow"
  • Ask, don't demand — "Should this be a named constant?" not "Make this a constant"
  • Approve quickly for trivial changes — don't block for style nits
  • Distinguish blocking vs nit — explicitly label nit: or blocking:
  • Respond to reviews — every comment gets a reply or action

Merging Strategy

Strategy When
Squash merge One feature = one commit on main. Clean history.
Rebase merge Preserve individual commits. For stacked PRs.
Merge commit Preserves full history of feature branch. Noisy.

Default: squash merge. Keeps main clean and bisectable.

Anti-patterns

  • Committing to main directly — always use PRs (except hotfix emergencies)
  • Large, unfocused commits"WIP", "fixes", "misc changes"
  • Rebasing shared branches — never rebase a branch others have pulled
  • Merge commits in main — unless you use merge-commit strategy deliberately
  • Stale branches — clean up after merge. Name indicates age/staleness
  • No issue/PR reference — every commit should answer "why?"