claude-code-plugin-ref…
Explain plugin, skill, command, agent, and hook mechanics used here. Use when authoring or debugging plugins. Do not use for ops;…
Generates conventional commit messages from staged changes. Use when committing and needing a well-formatted message. Do not use for full PR prep; use pr-prep.
Claude Code
$ npx -y skills add athola/claude-night-market --skill commit-messages --agent claude-code
Codex
$ npx skills add athola/claude-night-market --skill commit-messages -a codex -y
Cursor
$ npx skills add athola/claude-night-market --skill commit-messages -a cursor -y
Gemini CLI
$ npx skills add athola/claude-night-market --skill commit-messages -a gemini-cli -y
GitHub Copilot
$ npx skills add athola/claude-night-market --skill commit-messages -a github-copilot -y
OpenCode
$ npx skills add athola/claude-night-market --skill commit-messages -a opencode -y
Windsurf
$ npx skills add athola/claude-night-market --skill commit-messages -a windsurf -y
name: commit-messages description: Generates conventional commit messages from staged changes. Use when committing and needing a well-formatted message. For full PR prep, use pr-prep. alwaysApply: false category: artifact-generation tags: - git - commit - conventional-commits tools: [] complexity: low estimated_tokens: 350
1. **Gather context** (run in parallel):
`sem diff --staged --json` for entity-level changes
If nothing is staged, tell the user and stop.
When sem output is available, use entity names (function, class, method) in the commit subject and body instead of parsing raw diff hunks. For example, "add function validate_webhook_url" instead of "add validation logic to notify.py".
2. **Classify**: Pick type (`feat`, `fix`, `docs`, `refactor`, `test`, `chore`, `style`, `perf`, `ci`) and optional scope.
3. **Draft the message**:
discussion trailer below
3a. **Discussion trailer**: when the change resolves a finding from the Discussions board, add a trailer on its own line:
Addresses-Discussion: #654 Addresses-Discussion: #604, #610
This is the only signal `scripts/reconcile_discussions.py` accepts as proof a finding is done. It posts the resolution comment and closes the discussion, so the board stops carrying work that is already finished.
**Only add it when this commit resolves the finding.** Prose that merely names a discussion is read as a mention and is never written back. That distinction is load-bearing: `6b28aa1a` says "posted 13 insights to discussions #424-#436", which is the commit that *opened* those discussions. A trailer there would have announced "Addressed" on findings nobody had looked at yet.
Cite a discussion in the body for context as often as it helps. Reserve the trailer for resolution.
4. **Slop check**: reject these words and replace with plain alternatives:
| Reject | Use instead | |--------|-------------| | leverage, utilize | use | | seamless | smooth | | comprehensive | complete | | robust | solid | | facilitate | enable | | streamline | simplify | | optimize | improve | | delve | explore | | multifaceted | varied | | pivotal | key | | intricate | detailed |
Also reject: "it's worth noting", "at its core", "in essence", "a testament to"
4a. **Character-level slop check**: load `shared/output-hygiene.md` (Contract A) and strip these markers. Inline fallback if that module is absent:
| Marker | Replace with | |--------|--------------| | `"+"` as a prose conjunction | `and` (keep `+` in versions/code) | | em-dash `—` | colon, period, comma, or rewrite | | `--` as prose punctuation | colon or rewrite | | arrows `->` / `→` as connectors | `to` / `into` | | smart quotes `“ ” ‘ ’` | straight `"` and `'` | | a `, so` tail after fact after fact | delete a consequence the reader can infer, else its own sentence |
4b. **Subject-matter check** (Contract B): describe the change by its reader-facing effect. Name neither the AI origin nor the specific marker removed. Do NOT write `remove AI slop`, `de-slop`, `AI-generated content`, `AI phrasing`, `replace em-dashes`, or `remove smart quotes`. Test: if the subject only makes sense as "I cleaned up AI output", rewrite it. For example `docs: clarify the setup section`, not `style: replace em-dashes with colons`.
5. **Write** to `./commit_msg.txt` and preview.
confirms HEAD advanced (`git rev-parse HEAD` before and after) before reporting the commit as landed. An auto-fixing hook aborts the commit while printing a tail that reads like success, so hook output is not evidence. See discussion #614.
the drafted conventional commit message
is at most 50 characters
utilize, seamless, comprehensive, robust, etc.) appear in the message
conjunction, no smart quotes, no `->` as prose connector
(`scripts/slop_score.py --audit` lists each as `so_connective`)
"nothing staged" without producing a commit message
A plugin marketplace for Claude Code. Install only the plugins you need to run git workflows, code review, spec-driven development, and autonomous agents from inside your Claude Code session.
Explain plugin, skill, command, agent, and hook mechanics used here. Use when authoring or debugging plugins. Do not use for ops;…
States load-bearing decisions, invariants, and weak points. Use when judging a design change. Do not use for gating; use…
Rebuild the dev environment: uv, Python tiers, pins, traps. Use when onboarding or toolchain breaks. Do not use for daily…
Classify, gate, and review changes. Use when landing a PR, releasing, or amending rules. Do not use for failure triage; use…
Search and record project memory (Discussions, journal, ADRs). Use before re-investigating anything. Do not use for settled…
Bind loop 'done' to unfakeable gates. Use to harden egregore/herald loops or promote completion_integrity. Not for QA gates; use…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.