git-workflow's description enumerated the six domains it exists to route away from, so it competed for selection with the very skills it should be handing off to. It now triggers on the case it actually serves: an interactive request whose domain is not yet clear. Also clears frontmatter drift across the plugin and removes duplicated guidance in pc-run that had diverged from its reference.
65 lines
2.8 KiB
Markdown
65 lines
2.8 KiB
Markdown
---
|
|
name: git-commits
|
|
|
|
description: >
|
|
Use when creating, amending, squashing, or cherry-picking commits, including
|
|
writing and validating the Conventional Commits message.
|
|
Not history inspection -> `git-history`.
|
|
Not branch lifecycle -> `git-branches`.
|
|
|
|
metadata:
|
|
category: git
|
|
source_keys:
|
|
- conventional-commits-spec
|
|
- commitlint-config-conventional
|
|
- org-commit-conventions
|
|
- context7-git-htmldocs
|
|
|
|
allowed-tools: Bash
|
|
---
|
|
|
|
## Gotchas
|
|
|
|
- **Run git as `rtk git <subcommand>`, never bare `git`** — org convention, in `&&` chains too.
|
|
- **Refuse to force-push `main`/`master`** — a rewrite leaves the branch diverged and the reflex is to force it back; safe only where nobody else has based work on it.
|
|
- **Never add `--no-verify`** — using it when a hook fails bypasses the QA gate the pipeline depends on. Only on the user's explicit demand, with a warning.
|
|
|
|
## Dispatch
|
|
|
|
Read exactly one flow file. Each is self-contained.
|
|
|
|
| Condition | Flow | Read |
|
|
|---|---|---|
|
|
| Composing a new commit from staged changes | create | `references/create-commit.md` |
|
|
| Amending, squashing, or folding a fixup into an earlier commit | rewrite | `references/rewrite-history.md` |
|
|
| Replaying an existing commit onto the current branch | cherry-pick | `references/cherry-pick.md` |
|
|
|
|
## Gates on every flow
|
|
|
|
1. **Confirmation.** No history rewrite executes without explicit approval from the user or the calling agent. Cherry-pick needs the destination branch confirmed first.
|
|
2. **Secrets.** Before any commit or amend, scan the staged diff for anything resembling an API key,
|
|
token, password, connection string, or environment-specific config. Stop and flag it rather than
|
|
committing it.
|
|
3. **Validation.** Check the message against commitlint `config-conventional` before committing. If a type, footer, or breaking-change edge case is not obvious, read `references/conventional-commits-spec.md` — it carries the constraint table, the 11-type set, and the footer token rules.
|
|
4. **SemVer impact.** Report the bump the commit implies: `feat` → MINOR, `fix`/`perf`/`revert` → PATCH, any breaking change → MAJOR, everything else → none. Callers decide releases from this, so never omit it.
|
|
5. **Conflicts.** If a rebase or cherry-pick halts, offer resolution or an abort. Do not resolve automatically without confirmation.
|
|
|
|
## Output
|
|
|
|
For an agent caller, return:
|
|
|
|
```json
|
|
{
|
|
"operation": "create|amend|squash|cherry-pick",
|
|
"status": "success|conflict|rejected",
|
|
"message": "commit message or error description",
|
|
"commit_hash": "abc1234",
|
|
"semver_impact": "MAJOR|MINOR|PATCH|none",
|
|
"breaking_change": false,
|
|
"confirmation_required": false,
|
|
"details": { "type": "feat", "scope": "api", "description": "add user authentication" }
|
|
}
|
|
```
|
|
|
|
For a human caller, show the same fields as a prose preview with a confirmation prompt.
|