Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
acedergren avatar

Quality Commit

  • 23 installs
  • 22 repo stars
  • Updated May 28, 2026
  • acedergren/agentic-tools

quality-commit is a Claude Code skill that runs lint, typecheck, Semgrep, and related tests on staged files before creating a quality-gated commit.

About

quality-commit is a Claude Code skill for creating a quality-gated commit. It runs lint, typecheck, a Semgrep security scan, optional CodeRabbit review, and related tests on staged files before committing, and can push after. A developer uses it when committing changes and wanting gates enforced instead of relying on pre-commit hooks. It bundles scripts to classify staged files and find related tests, plus a per-file Semgrep workaround.

  • Runs lint, typecheck, Semgrep, optional CodeRabbit, and related tests before committing
  • Stages only named files and never uses git add . or -A
  • Supports --review, --push, --dry-run, and --message flags with a per-file Semgrep workaround

Quality Commit by the numbers

  • 23 all-time installs (skills.sh)
  • Ranked #377 of 733 Git & Pull Requests skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

quality-commit capabilities & compatibility

Capabilities
quality gating · security scan · test runner · git commit
Works with
github
Use cases
code review · security audit · testing
Pricing
Free
From the docs

What quality-commit says it does

Run all quality gates on staged changes, then commit.
SKILL.md
Never run `git add .` or `git add -A` — always stage specific files by name.
SKILL.md
npx skills add https://github.com/acedergren/agentic-tools --skill quality-commit

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs23
repo stars22
Last updatedMay 28, 2026
Repositoryacedergren/agentic-tools

What it does

Run lint, typecheck, Semgrep, and related tests on staged files, then create a quality-gated commit.

Who is it for?

Committing code only after lint, typecheck, Semgrep, and related tests pass.

Skip if: Staging all files indiscriminately, bypassing hooks on failure, or unrelated repo cleanup during commit prep.

When should I use this skill?

Committing code changes.

What you get

A committed change that passed lint, typecheck, Semgrep, and related tests, optionally pushed.

  • quality-gated commit
  • gate summary table
  • optional remote push

By the numbers

  • Five-gate pipeline: lint, typecheck, Semgrep, tests, commit
  • Per-file Semgrep loop workaround for 1.146.0+

Files

SKILL.mdMarkdownGitHub ↗

Quality Commit

Run all quality gates on staged changes, then commit. Replaces manual multi-step commit prep that frequently causes pre-commit hook friction.

NEVER

  • Never run git add . or git add -A — always stage specific files by name.
  • Never commit after partial gate failures by bypassing hooks — gates exist for correctness.
  • Never let optional tools (CodeRabbit, Semgrep) block the workflow when not installed — skip with warning.
  • Never widen scope to unrelated repo cleanup during commit prep.
  • Never attempt to auto-fix gate failures and retry — report errors, let the agent fix first.

Decision: What Gates to Run

Has staged files?
├─ No → Print warning, exit
└─ Yes →
    ├─ Always: Lint → TypeCheck → Semgrep → Tests → Commit
    ├─ --review or --full: Add CodeRabbit (slow, ~30s) before commit
    └─ --push: After commit, Semgrep committed files, push to remote

Gate Execution

Scope detection

STAGED=$(git diff --cached --name-only --diff-filter=ACMR)
bash scripts/classify-staged-files.sh  # categorizes into frontend/api/shared

Semgrep: file-at-a-time (critical workaround)

Semgrep 1.146.0+ crashes with multiple file arguments (Invalid_argument: invalid path). Always loop:

for f in $STAGED_FILES; do
  semgrep scan --config auto --json "$f" 2>/dev/null || true
done

Block on critical/high findings. Warn on medium/low. Skip if not installed.

TypeCheck workspace commands

  • frontend: npx svelte-check --tsconfig ./tsconfig.json --threshold error (11 pre-existing errors in test files are known baseline — ignore)
  • api: npx tsc --noEmit
  • shared: npx tsc --noEmit

Related test discovery

node scripts/find-related-tests.js <staged-file>
# src/lib/server/auth/rbac.ts → src/lib/server/auth/rbac.test.ts

Run discovered tests: npx vitest run <test-files> --reporter=verbose

Commit message format

type(scope): description

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Types: feat, fix, refactor, test, docs, chore Scopes: security, phaseX.Y, api, frontend, database, auth, workflows

Push flow (--push only)

1. Re-run Semgrep on committed files (same file-at-a-time loop, use git diff --name-only HEAD~1) 2. Detect upstream: git rev-parse --abbrev-ref @{u} 2>/dev/null 3. If no upstream: git push -u origin $BRANCH, else git push 4. Abort push on critical/high Semgrep findings — commit stays intact, do NOT undo it

Summary table

| Gate       | Status | Details                    |
|------------|--------|----------------------------|
| Lint       | PASS   | 5 files, 0 errors          |
| TypeCheck  | PASS   | api + frontend             |
| Semgrep    | PASS   | 0 findings                 |
| CodeRabbit | SKIP   | (use --review to enable)   |
| Tests      | PASS   | 3 test files, 12 tests     |
| Commit     | DONE   | abc1234                    |
| Push       | SKIP   | (use --push to enable)     |

Arguments

  • (empty): lint + typecheck + semgrep + tests + commit
  • --review / --full: Add CodeRabbit review
  • --dry-run: Run all gates, skip actual commit and push
  • --push: Commit then semgrep + push to remote
  • --message "...": Use custom commit message

Related skills

FAQ

How are files staged for the commit?

By name only; the skill never runs git add . or git add -A, so scope stays tight and unrelated files are not committed.

Why does Semgrep run file-at-a-time?

Semgrep 1.146.0+ crashes with multiple file arguments (Invalid_argument: invalid path), so the skill loops over each staged file.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.