convention-enforcement — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited convention-enforcement (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Iron law: a commit that violates project conventions is defective regardless of code quality; conventions are not optional. Invoked by /flow:commit Phase 4 (message generation and validation) and by the convention-checker agent during /flow:pr and /flow:address reviews. Reads rules from CLAUDE.md, then conventions.* settings, then defaults; infers project-specific patterns from recent history when they differ. Returns a violation table (violation, P2/P3 severity, fix) covering commit messages, branch name, PR format, and issue linkage, or an explicit "no violations". Permitted skips: none — an unconfigured rule is reported as inferred, never treated as absent.
.claude/CLAUDE.md, else CLAUDE.md (highest priority)conventions.commitTypes, conventions.branchPatternsFormat <type>(<scope>): <subject>, optional body and footer separated by blank lines. Type must be one of conventions.commitTypes (default: feat, fix, docs, style, refactor, test, chore, perf, ci, build, revert, improve); scope optional, parenthesized, lowercase; subject imperative, no trailing period.
DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>/dev/null || printf '%s\n' "main")
git log --format="%s" "$DEFAULT_BRANCH"..HEADCheck each subject against ^(feat|fix|docs|style|refactor|test|chore|perf|ci|build|revert|improve)(\(.+\))?: .+$ with the configured types substituted.
git branch --show-current must match a conventions.branchPatterns entry — defaults feature/issue-{N}-{desc}, fix/issue-{N}-{desc}, docs/issue-{N}-{desc}, alphanumeric plus hyphens. Invalid: spaces or special characters, missing issue number (unless explicitly configured), commits directly on the default branch.
Title in conventional-commit format; body with at least a Summary section and a linked issue reference; at least one label; not draft when requesting review.
ISSUE_NUM=$(printf '%s\n' "$BRANCH" | grep -oE 'issue-[0-9]+' | grep -oE '[0-9]+')
[ -n "$ISSUE_NUM" ] && gh issue view "$ISSUE_NUM" --json state,assignees 2>/dev/nullWarn when the branch has no issue number, the linked issue is closed, or it is assigned to someone else.
git log --oneline -20 --format="%s"
git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/remotes/origin/ | head -10If the project uses different conventions (e.g. feat/123-description), validate against the observed pattern and say so in the output. A configured convention applies to every change type — there is no "doesn't apply to this kind of change". A bad message is fixed now; "later" does not exist in git history.
| Violation | Severity | Fix |
|---|---|---|
| Non-conventional commit message | P2 | Amend or reword |
| Wrong branch naming | P3 | Note only (too late to rename) |
| Missing issue linkage | P2 | Add Closes #N to PR body |
| Missing PR labels | P3 | Add during PR creation |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.