| name | git-workflow |
| description | Git and GitHub workflow — conventional commits, branching, PRs, and gh CLI usage Use when this capability is needed. |
| metadata | {"author":"eidolonlabs-ai"} |
Git Workflow Skill
Commit Message Convention
Nova Agent uses conventional commits:
<type>: <subject>
<body (optional)>
Types: feat (new feature), fix (bug fix), docs (docs only), test (tests only), refactor (no behavior change), chore (maintenance)
Rules:
- Subject line: imperative mood, under 72 chars, no trailing period
- Body: optional, use when the why isn't obvious from the subject
- Never mix types — a commit that adds a feature AND fixes a bug should be two commits
Examples:
feat: add semantic symbol search tool
fix: handle empty context files gracefully
test: expand CLI coverage to 82%
refactor: extract token budget logic into tokens.py
docs: update test counts to reflect 596 tests
Pre-Commit Checklist
Always run the full CI check before committing:
ruff check . && ruff format --check . && mypy nova/ && pytest
If any step fails, fix it before committing. Never commit broken code.
Workflow
git status — understand current state
- Make changes
ruff check . && ruff format --check . && mypy nova/ && pytest — full CI check must pass
git diff --staged — review exactly what you're committing
git add <specific files> — stage intentionally, never git add .
git commit -m "type: subject" — follow conventional commits
git push (or git push -u origin HEAD for new branches)
Branching
git checkout -b feat/short-description
git checkout -b fix/short-description
git switch main
git pull --rebase
git branch -d feat/short-description
GitHub CLI — PRs
gh pr create --title "feat: add X" --body "$(cat <<'EOF'
## Summary
- What changed and why
## Test plan
- [ ] All 596 tests pass (`pytest`)
- [ ] Lint clean (`ruff check .`)
- [ ] Format clean (`ruff format --check .`)
- [ ] Types clean (`mypy nova/`)
- [ ] No CVEs (`pip-audit`)
EOF
)"
gh pr list
gh pr view 42
gh pr checks 42
gh pr merge 42 --squash
gh pr close 42
GitHub CLI — Reviews
gh pr diff 42
gh pr review 42 --approve
gh pr review 42 --request-changes --body "See inline comments"
gh pr review 42 --comment --body "LGTM with nits"
gh api repos/{owner}/{repo}/pulls/42/comments \
--method POST \
--field body="Comment text" \
--field path="nova/agent.py" \
--field line=42
GitHub CLI — Issues
gh issue list
gh issue view 12
gh issue create --title "Bug: X fails when Y" --body "..."
gh issue close 12
gh issue comment 12 --body "Fixed in #43"
Common Git Commands
git log --oneline -10
git show HEAD
git diff
git diff --staged
git blame nova/agent.py
git log --follow nova/agent.py
git restore <file>
git restore --staged <file>
git revert HEAD
git stash / git stash pop
Pitfalls
- Never
git add . — always stage specific files
- Never
git push --force on shared branches — use --force-with-lease if you must
- Don't commit without running the full CI check first
- Don't commit secrets,
.env, or API keys
- Don't mix whitespace-only changes with logic changes in the same commit
- Don't amend commits that have already been pushed
Source: eidolonlabs-ai/nova-agent — distributed by TomeVault.