SCM (software configuration management) and Git: branching, merges, conflicts, worktrees, baselines, audit readiness, plus Conventional Commits and safe staging.
67
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/oma-scm/SKILL.mdoma-scm)Manage Git and software configuration management safely: commits, branches, merges, worktrees, releases, baselines, audit posture, CODEOWNERS, and Conventional Commits.
This skill is the single place for configuration management (CM) on a software repo and for Conventional Commits / safe staging.
/scm, message type/scope, splitting staged changes into multiple commits.oma-debugoma-qaoma-pm.agents/oma-config.yaml, Conventional Commit references, onboarding-risk and CODEOWNERS playbooks| Action | SSL primitive | Evidence |
|---|---|---|
| Read Git state | READ | git status, diff, log, config |
| Select SCM path | SELECT | Quick Path vs Full CM Path |
| Compare change scopes | COMPARE | Split by type/scope/feature |
| Validate commit/governance rules | VALIDATE | Config and CM controls |
| Stage explicit files | CALL_TOOL | git add <specific-files> |
| Commit or manage refs | CALL_TOOL | Git commit/branch/merge/rebase/tag |
| Write audit notes | WRITE | Commit message or CM report |
| Report result | NOTIFY | Final SCM summary |
git status -sb
git diff --staged
git log --oneline -5Stage and commit only explicit paths:
git add <specific-files>
git commit -m "$(cat <<'EOF'
<type>(<scope>): <description>
[optional body]
Co-Authored-By: First Fluke <our.first.fluke@gmail.com>
EOF
)"| Scope | Resource target |
|---|---|
CODEBASE | Tracked files, diffs, conflicts, CODEOWNERS |
LOCAL_FS | Git metadata, config files, commit message temp files |
PROCESS | Git commands and verification commands |
CREDENTIALS | Secret-sensitive files must not be staged or committed |
main/protected branches", broad staging, the commit-split rules, single vs. multiple commits, message type/scope/length, and shared-history rewrite. State briefly what you are doing and proceed; do not ask for re-confirmation of an instruction the user already gave. Only confirm if the instruction is genuinely ambiguous (multiple plausible interpretations) — never as a way to push back on a clear directive.
.env, keys, raw tokens). If the user's instruction would stage/commit such material, surface it once before proceeding; everything else proceeds without challenge..agents/oma-config.yaml before applying project-specific commit or CM rules.oma-config.yaml language: user-facing SCM output (status summaries, conflict explanations, CM audit notes, action plans) is localized. Per i18n-guide.md, commit messages, PR titles/body, branch names, and status keywords stay in English regardless of the setting.| File | Role |
|---|---|
.agents/oma-config.yaml | Conventional Commit types, branch prefixes, message rules, and CM pointers |
Use this when the user intent is mainly "commit this safely."
commit-config.yamlUse this when the user asks about branching strategy, merges, rebase/cherry-pick, worktrees, release refs, CODEOWNERS, or audit posture.
../../workflows/scm.md| CM function | Intent | Typical artefacts / actions |
|---|---|---|
| Management & planning | Agreed rules | CONTRIBUTING.md, SECURITY.md, commit-config.yaml |
| Configuration identification | What is managed, naming | Branch/tag rules, version files, .gitattributes, LFS |
| Configuration control | Reviewed change | PRs, checks, issue links, BREAKING CHANGE footers |
| Status accounting | As-built truth | main / release refs, CHANGELOG, tags, CI status |
| Verification & audit | Evidence | CI logs, signed commits, lockfiles / SBOM policy |
commit-config.yaml and files listed under documented_process.CONTRIBUTING.md / README; state assumptions.package.json, etc.)..gitattributes / LFS for binaries and generated assets.commit-config.yaml branch_prefixes when the project uses them.merge-base, git status, resolve markers, tests; suggest rerere when conflicts repeat.git worktree add; merge/rebase from the target branch’s checkout; all worktrees share one object database.--force-with-lease if force-push is unavoidable.git status -sb: branch, remote tracking, ahead/behind, merge state.CHANGELOG or tooling (semantic-release, release-please, changesets) if present.merge_group when merge queue applies..env, keys, raw tokens). Filename patterns from commit-config.yaml forbidden_patterns are enforced mechanically by the scm-guard PreToolUse hook; for content-level leaks (tokens hardcoded in ordinary source files), run a scanner when available (gitleaks protect --staged, trufflehog git) before large or unfamiliar commits..github/CODEOWNERS).*).Read change_governance.require_codeowners and ownership.* in commit-config.yaml when present.
Use this quick scan when joining or inheriting a repository to identify risky areas before major changes.
lookback window.Read thresholds from commit-config.yaml onboarding_metrics when present and cite caveats:
| Type | Description | Branch Prefix |
|---|---|---|
| feat | New feature | feature/ |
| fix | Bug fix | fix/ |
| refactor | Code improvement | refactor/ |
| docs | Documentation changes | docs/ |
| test | Test additions/modifications | test/ |
| chore | Build, configuration, etc. | chore/ |
| style | Code style changes | style/ |
| perf | Performance improvements | perf/ |
| build | Build system / external dependencies | build/ |
| ci | CI configuration and scripts | ci/ |
| revert | Revert a previous commit | (none) |
<type>(<scope>): <description>
[optional body]
Co-Authored-By: First Fluke <our.first.fluke@gmail.com>git status
git diff --staged
git log --oneline -5If changes span multiple features/domains, split commits by feature.
Split when: the changes are logically independent (different features, unrelated fixes).
Do not split when: one logical change (even if it touches code + tests + docs together), or the user asked for a single commit.
Precedence for edge cases (when both readings are defensible):
feat · Bug fix → fix · Structure-only → refactor · Docs only → docs · Tests → test · Build/config → choreUse module/component: feat(auth):, fix(api):, or omit: chore: update dependencies
≤72 chars (per commit-config.yaml), imperative mood, lowercase start, no trailing period.
Show the message, then commit with explicit paths:
git add <specific-files>
git commit -m "$(cat <<'EOF'
<type>(<scope>): <description>
[optional body]
Co-Authored-By: First Fluke <our.first.fluke@gmail.com>
EOF
)"If HEREDOC is unstable in your shell (or body is long), use file-based commit input:
git add <specific-files>
msgfile="$(mktemp)"
cat > "$msgfile" <<'EOF'
<type>(<scope>): <description>
[optional body]
Co-Authored-By: First Fluke <our.first.fluke@gmail.com>
EOF
git commit -F "$msgfile"
rm -f "$msgfile"Use HEREDOC by default, and switch to -F for long or flaky terminal sessions.
Push only when the user asks or a workflow requires it. Before pushing:
git status -sb — confirm branch, remote tracking, ahead/behind.commit-config.yaml sets require_pr_for_default_branch: true, push a topic branch and open a PR (gh pr create) instead of pushing directly — unless the user explicitly instructed a direct push (Guardrail 0).--force; after an approved history rewrite use git push --force-with-lease.First determine whether the target commits are shared:
git status -sb # ahead/behind vs upstream
git log --oneline @{u}..HEAD # commits not yet pushed (errors when no upstream — treat all as unpushed)git commit --amend, git commit --fixup <sha> + git rebase -i --autosquash, and interactive rebase are safe — proceed.--force-with-lease when pushing the result.--amend, check git diff --staged: the amend must not silently absorb unrelated staged changes..agents/oma-config.yamlresources/conventional-commits.mdresources/onboarding-risk-signals.mdresources/codeowners-playbook.md../oma-observability/SKILL.md §Integrations — release markers (service.version), revert baseline diffgit add -A or git add . without explicit user permission.3021301
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.