# Commit

> Commit changes following project quality gates and best practices. Run before creating any git commit.

- Skill: `hyperlane-xyz/commit` (Agent Skill)
- Install (CLI): `npx skillmds@latest add hyperlane-xyz/commit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hyperlane-xyz/commit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: hyperlane-xyz (https://skillmd.com/u/hyperlane-xyz)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/hyperlane-xyz/commit

---


# Commit Skill

Use this skill when committing changes to ensure quality and correctness.

## Pre-Commit Checklist

Run these in order. **Do not commit if any fail.**

1. **`pnpm format`** — Format all source files
2. **`pnpm lint`** — Check for ESLint errors
3. **`pnpm typecheck`** — Verify TypeScript compiles
4. **`pnpm build`** — Ensure production build succeeds (optional for small changes, required before PR)

## Staging Rules

- **Only stage files related to the current task.** Review `git status` carefully.
- **Never stage unrelated files** — markdown notes, scratch files, `.monorepo-tarballs/`, `agent/`, etc. should not be committed unless explicitly requested.
- **Use specific file paths** with `git add`, not `git add .` or `git add -A`.
- **Review `git diff --staged`** before committing to verify only intended changes are included.

## Commit Message Format

- Use conventional commit prefixes: `feat:`, `fix:`, `style:`, `chore:`, `refactor:`, `docs:`, `test:`
- Keep the first line under 72 characters
- Add a blank line then bullet points for multi-change commits
- End with `Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>`
- Use a HEREDOC to pass the message to avoid shell escaping issues

## Things to Watch For

- **Secrets**: Never commit `.env`, credentials, or API keys
- **Large files**: Don't commit binaries, build artifacts, or font files (check `.gitignore`)
- **Formatting drift**: If oxfmt changed files you didn't touch, stage them separately or skip them

## Example Flow

```bash
pnpm format
pnpm lint
pnpm typecheck
git status                    # review what changed
git diff                      # verify changes are correct
git add <specific-files>      # only related files
git diff --staged             # double-check staged changes
git commit -m "$(cat <<'EOF'
feat: description of change

- Detail 1
- Detail 2

EOF
)"
```

