59 lines
1.5 KiB
Markdown
59 lines
1.5 KiB
Markdown
# Commit Workflow
|
|
|
|
Execute via `git-manager` subagent.
|
|
|
|
## Tool 1: Stage + Analyze
|
|
```bash
|
|
git add -A && \
|
|
echo "=== STAGED ===" && git diff --cached --stat && \
|
|
echo "=== SECURITY ===" && \
|
|
git diff --cached | grep -c -iE "(api[_-]?key|token|password|secret|credential)" | awk '{print "SECRETS:"$1}' && \
|
|
echo "=== GROUPS ===" && \
|
|
git diff --cached --name-only | awk -F'/' '{
|
|
if ($0 ~ /\.(md|txt)$/) print "docs:"$0
|
|
else if ($0 ~ /test|spec/) print "test:"$0
|
|
else if ($0 ~ /\.opencode/) print "config:"$0
|
|
else if ($0 ~ /package\.json|lock/) print "deps:"$0
|
|
else print "code:"$0
|
|
}'
|
|
```
|
|
|
|
**If SECRETS > 0:** STOP, show matches, block commit.
|
|
|
|
## Tool 2: Split Decision
|
|
|
|
NOTE:
|
|
- Search for related issues on GitHub and add to body.
|
|
- Only use `feat`, `fix`, or `perf` prefixes for files in `.claude` directory (do not use `docs`).
|
|
|
|
**From groups, decide:**
|
|
|
|
**A) Single commit:** Same type/scope, FILES ≤ 3, LINES ≤ 50
|
|
|
|
**B) Multi commit:** Mixed types/scopes, group by:
|
|
- Group 1: `config:` → `chore(config): ...`
|
|
- Group 2: `deps:` → `chore(deps): ...`
|
|
- Group 3: `test:` → `test: ...`
|
|
- Group 4: `code:` → `feat|fix: ...`
|
|
- Group 5: `docs:` → `docs: ...`
|
|
|
|
## Tool 3: Commit
|
|
|
|
**Single:**
|
|
```bash
|
|
git commit -m "type(scope): description"
|
|
```
|
|
|
|
**Multi (sequential):**
|
|
```bash
|
|
git reset && git add file1 file2 && git commit -m "type(scope): desc"
|
|
```
|
|
Repeat for each group.
|
|
|
|
## Tool 4: Push (if requested)
|
|
```bash
|
|
git push && echo "✓ pushed: yes" || echo "✓ pushed: no"
|
|
```
|
|
|
|
**Only push if user explicitly requested** ("push", "commit and push").
|