Software configuration management: SCM (oma-scm)
Scheduling
Goal
Manage Git and software configuration management safely: commits, branches, merges, worktrees, releases, baselines, audit posture, CODEOWNERS, and Conventional Commits.
Intent signature
- User asks to commit, stage, branch, merge, rebase, cherry-pick, tag, release, resolve conflicts, manage worktrees, inspect SCM posture, or apply Conventional Commits.
- User needs safe Git operations with explicit file staging, secret awareness, and CM governance.
This skill is the single place for configuration management (CM) on a software repo and for Conventional Commits / safe staging.
When to use
- Commits: “commit this”,
/scm, message type/scope, splitting staged changes into multiple commits.
- CM / Git: branching (gitflow, GitHub Flow, GitLab Flow, trunk-based), protected branches, merge queue, merge conflicts, rebase, cherry-pick, worktrees, submodules/subtrees, tags and releases.
- Governance: issue/ADR links, breaking-change footers, changelog or release-tool alignment.
- Audit posture: signed commits, CI before merge, secret-sensitive paths.
When NOT to use
- Implementing product or application code -> use the relevant domain skill
- Debugging runtime failures without a Git or CM operation -> use
oma-debug
- Security, performance, or accessibility review -> use
oma-qa
- Planning feature requirements or decomposing work -> use
oma-pm
Expected inputs
- Git task, desired branch/commit/release operation, and affected files
- Current worktree status, staged diff, branch tracking, config files, and governance constraints
- Optional issue/ADR/PR/release context
Expected outputs
- Safe commit, branch, merge/rebase guidance, conflict plan, status accounting, or CM audit findings
- Conventional Commit message and explicit staged paths when committing
- Risk notes for shared history, secrets, CODEOWNERS, CI, and release evidence
Dependencies
- Git CLI and repository metadata
config/commit-config.yaml, config/cm-config.yaml, Conventional Commit references, onboarding-risk and CODEOWNERS playbooks
Control-flow features
- Branches by quick commit path versus full CM/governance path
- Reads Git state and diffs; may write commits, branches, tags, or conflict resolutions
- Requires explicit approval for broad staging, shared-history rewrite, production-destructive operations, or secret-risk paths
Structural Flow
Entry
- Inspect Git status, branch, staged/unstaged changes, and user intent.
- Choose Quick Path for ordinary commits or Full CM Path for governance/risky history work.
- Read commit and CM config before enforcing project-specific rules.
Scenes
- PREPARE: Determine operation type, risk, and affected files.
- ACQUIRE: Read status, diff, logs, config, ownership, and release context.
- REASON: Split changes, choose message/scope, identify CM controls and risks.
- ACT: Stage explicit paths, commit, branch, resolve, or provide CM action plan.
- VERIFY: Check status, staged diff, CI expectations, signatures, secrets, and audit evidence.
- FINALIZE: Report operation result and remaining SCM tasks.
Transitions
- If user intent is commit-only, follow Quick Path and stop after safe commit.
- If branching/history/release/governance is involved, run Full CM Path.
- If shared history rewrite is requested, require maintainer approval.
- If changes span independent features, split commits unless user requests one commit.
Failure and recovery
- If worktree is dirty in unrelated files, avoid touching unrelated changes.
- If conflicts exist, resolve markers, test, and preserve target-branch context.
- If secrets are detected or suspected, stop before staging/committing.
Exit
- Success: requested SCM operation is complete or a safe, auditable plan is delivered.
- Partial success: blockers such as conflicts, missing approval, CI, or secret risk are explicit.
Logical Operations
Actions
| 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 |
Tools and instruments
- Git CLI and repository metadata
- Commit/CM config, Conventional Commit guide, CODEOWNERS playbook, onboarding-risk signals
Canonical command path
git status -sb
git diff --staged
git log --oneline -5
Stage and commit only explicit paths:
git add <specific-files>
git commit -m "$(cat <<'EOF'
<type>(<scope>): <description>
[optional body]
EOF
)"
Resource scope
| 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 |
Preconditions
- Repository and Git intent are identifiable.
- User has authorized the requested SCM operation.
Effects and side effects
- May stage files, create commits, branches, tags, worktrees, or history operations.
- Can affect shared repository history if unsafe commands are used, so approvals matter.
Guardrails
- Explicit user override (highest priority). When the user gives an explicit, unambiguous instruction on how to perform a Git/SCM operation, follow it exactly and do not argue, re-litigate, or block on the conditions below. This overrides every default and guardrail in this skill — including "no direct push to
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.
- Single hard exception: likely-secret material (
.env, keys, raw tokens). If the user's instruction would stage/commit such material, surface it once before proceeding; everything else proceeds without challenge.
- Choose Quick Path for ordinary commits and Full CM Path for branching, history, release, or governance work.
- Read
config/commit-config.yaml and config/cm-config.yaml before applying project-specific commit or CM rules.
- Stage only explicit files; never use broad staging unless the user explicitly approves it.
- Do not rewrite shared history without maintainer approval.
- Never stage or commit likely-secret material.
- Response language follows
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.
Configuration
| File |
Role |
config/commit-config.yaml |
Conventional Commit types, branch prefixes, message rules |
config/cm-config.yaml |
CM pointers (documented process, branching model, baselines, changelog) |
Operating mode (choose first)
Quick Path (commit-focused, default)
Use this when the user intent is mainly "commit this safely."
- Follow Conventional Commits section only
- Stage explicit files only
- Validate message type/scope/length from
commit-config.yaml
- Stop after safe commit unless user asks CM/governance operations
Full CM Path (repo governance / risky history operations)
Use this when the user asks about branching strategy, merges, rebase/cherry-pick, worktrees, release refs, CODEOWNERS, or audit posture.
- Run CM workflows in order (Planning -> Identification -> Control -> Status accounting -> Verification)
- Add onboarding risk scan when inheriting or auditing a repository
- Include commit governance from Conventional Commits when creating commits
- For large-scope merge operations, use risk scoring and Ask Gate criteria from
../../workflows/scm.md
CM process map (software)
| CM function |
Intent |
Typical artefacts / actions |
| Management & planning |
Agreed rules |
CONTRIBUTING.md, SECURITY.md, cm-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 |
CM workflows (use before risky history operations)
1) Planning
- Read
cm-config.yaml and files listed under documented_process.
- If missing, infer from
CONTRIBUTING.md / README; state assumptions.
- Confirm branching model and whether force-push on shared branches is allowed (default: not without explicit approval).
2) Identification
- Canonical refs: default branch, release branches/tags, version sources (
package.json, etc.).
.gitattributes / LFS for binaries and generated assets.
- Branch names vs
commit-config.yaml branch_prefixes when the project uses them.
3) Control
- Small, reviewable units; align commits with PR / issue intent.
- Conflicts:
merge-base, git status, resolve markers, tests; suggest rerere when conflicts repeat.
- Worktrees:
git worktree add; merge/rebase from the target branch’s checkout; all worktrees share one object database.
- Do not rewrite shared history without maintainer approval; prefer
--force-with-lease if force-push is unavoidable.
4) Status accounting
git status -sb: branch, remote tracking, ahead/behind, merge state.
- Relate last tag / release branch to
CHANGELOG or tooling (semantic-release, release-please, changesets) if present.
5) Verification & audit
- Required CI and
merge_group when merge queue applies.
- Never stage/commit secrets (
.env, keys, raw tokens).
- Call out signed-commit expectations when the org cares about verification badges.
CODEOWNERS maintenance checklist
- Validate CODEOWNERS file exists (prefer
.github/CODEOWNERS).
- Ensure critical paths are explicitly owned (not only fallback
*).
- Ensure owners are active and mapped to current teams.
- Confirm branch protection requires CODEOWNERS review where needed.
- Flag overlapping/ambiguous rules that can hide intended owners.
Read change_governance.require_codeowners and ownership.* in cm-config.yaml when present.
6) Onboarding risk scan (optional, recommended)
Use this quick scan when joining or inheriting a repository to identify risky areas before major changes.
- High churn files in
lookback window.
- Ownership concentration / bus-factor signals.
- Bug hotspot files from fix-related history.
- Velocity trend by month.
- Revert/hotfix/emergency frequency.
Read thresholds from cm-config.yaml onboarding_metrics when present and cite caveats:
- squash merge teams can distort ownership metrics,
- weak commit labeling reduces hotspot accuracy,
- monorepo commit counts can bias subsystem interpretation.
Conventional Commits
Commit types
| 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/ |
Commit format
<type>(<scope>): <description>
[optional body]
Co-Authored-By: First Fluke <our.first.fluke@gmail.com>
Commit workflow
Step 1: Analyze changes
git status
git diff --staged
git log --oneline -5
Step 1.5: Split by feature (if needed)
If changes span multiple features/domains, split commits by feature.
Split when: different scopes, different types, logically independent work.
Do not split when: one feature, few files (≤5), or user asked for a single commit.
Step 2: Determine type
- New capability →
feat · Bug fix → fix · Structure-only → refactor · Docs only → docs · Tests → test · Build/config → chore
Step 3: Scope
Use module/component: feat(auth):, fix(api):, or omit: chore: update dependencies
Step 4: Description
≤72 chars (per commit-config.yaml), imperative mood, lowercase start, no trailing period.
Step 5: Execute commit
Show the message, then commit with explicit paths:
git add <specific-files>
git commit -m "$(cat <<'EOF'
<type>(<scope>): <description>
[optional body]
EOF
)"
If HEREDOC is unstable in your shell (or body is long), use file-based commit input:
git add <specific-files>
cat > /tmp/oma-commit-msg.txt <<'EOF'
<type>(<scope>): <description>
[optional body]
EOF
git commit -F /tmp/oma-commit-msg.txt
Use HEREDOC by default, and switch to -F for long or flaky terminal sessions.
References
config/commit-config.yaml
config/cm-config.yaml
resources/conventional-commits.md
resources/onboarding-risk-signals.md
resources/codeowners-playbook.md
- Observability handoff:
../oma-observability/SKILL.md §Integrations — release markers (service.version), revert baseline diff
Important notes
- Explicit user instruction wins. A clear user directive on how to commit/push/branch overrides every rule below (and every other guardrail). Follow it without arguing; the only thing that still warrants a heads-up is likely-secret material.
- NEVER
git add -A or git add . without explicit user permission.
- NEVER commit likely-secret material.
- ALWAYS stage by explicit paths; tie non-trivial CM work to the five CM rows above, even briefly.
1---2name: oma-scm-43description: SCM (software configuration management) and Git: branching, merges, conflicts, worktrees, baselines, audit readiness, plus Conventional Commits and safe staging.4---56# Software configuration management: SCM (`oma-scm`)78## Scheduling910### Goal11Manage Git and software configuration management safely: commits, branches, merges, worktrees, releases, baselines, audit posture, CODEOWNERS, and Conventional Commits.1213### Intent signature14- User asks to commit, stage, branch, merge, rebase, cherry-pick, tag, release, resolve conflicts, manage worktrees, inspect SCM posture, or apply Conventional Commits.15- User needs safe Git operations with explicit file staging, secret awareness, and CM governance.1617This skill is the **single** place for **configuration management (CM)** on a software repo and for **Conventional Commits** / safe staging.1819### When to use2021- **Commits:** “commit this”, `/scm`, message type/scope, splitting staged changes into multiple commits.22- **CM / Git:** branching (gitflow, GitHub Flow, GitLab Flow, trunk-based), protected branches, merge queue, merge conflicts, rebase, cherry-pick, worktrees, submodules/subtrees, tags and releases.23- **Governance:** issue/ADR links, breaking-change footers, changelog or release-tool alignment.24- **Audit posture:** signed commits, CI before merge, secret-sensitive paths.2526### When NOT to use2728- Implementing product or application code -> use the relevant domain skill29- Debugging runtime failures without a Git or CM operation -> use `oma-debug`30- Security, performance, or accessibility review -> use `oma-qa`31- Planning feature requirements or decomposing work -> use `oma-pm`3233### Expected inputs34- Git task, desired branch/commit/release operation, and affected files35- Current worktree status, staged diff, branch tracking, config files, and governance constraints36- Optional issue/ADR/PR/release context3738### Expected outputs39- Safe commit, branch, merge/rebase guidance, conflict plan, status accounting, or CM audit findings40- Conventional Commit message and explicit staged paths when committing41- Risk notes for shared history, secrets, CODEOWNERS, CI, and release evidence4243### Dependencies44- Git CLI and repository metadata45- `config/commit-config.yaml`, `config/cm-config.yaml`, Conventional Commit references, onboarding-risk and CODEOWNERS playbooks4647### Control-flow features48- Branches by quick commit path versus full CM/governance path49- Reads Git state and diffs; may write commits, branches, tags, or conflict resolutions50- Requires explicit approval for broad staging, shared-history rewrite, production-destructive operations, or secret-risk paths5152## Structural Flow5354### Entry551. Inspect Git status, branch, staged/unstaged changes, and user intent.562. Choose Quick Path for ordinary commits or Full CM Path for governance/risky history work.573. Read commit and CM config before enforcing project-specific rules.5859### Scenes601. **PREPARE**: Determine operation type, risk, and affected files.612. **ACQUIRE**: Read status, diff, logs, config, ownership, and release context.623. **REASON**: Split changes, choose message/scope, identify CM controls and risks.634. **ACT**: Stage explicit paths, commit, branch, resolve, or provide CM action plan.645. **VERIFY**: Check status, staged diff, CI expectations, signatures, secrets, and audit evidence.656. **FINALIZE**: Report operation result and remaining SCM tasks.6667### Transitions68- If user intent is commit-only, follow Quick Path and stop after safe commit.69- If branching/history/release/governance is involved, run Full CM Path.70- If shared history rewrite is requested, require maintainer approval.71- If changes span independent features, split commits unless user requests one commit.7273### Failure and recovery74- If worktree is dirty in unrelated files, avoid touching unrelated changes.75- If conflicts exist, resolve markers, test, and preserve target-branch context.76- If secrets are detected or suspected, stop before staging/committing.7778### Exit79- Success: requested SCM operation is complete or a safe, auditable plan is delivered.80- Partial success: blockers such as conflicts, missing approval, CI, or secret risk are explicit.8182## Logical Operations8384### Actions85| Action | SSL primitive | Evidence |86|--------|---------------|----------|87| Read Git state | `READ` | `git status`, diff, log, config |88| Select SCM path | `SELECT` | Quick Path vs Full CM Path |89| Compare change scopes | `COMPARE` | Split by type/scope/feature |90| Validate commit/governance rules | `VALIDATE` | Config and CM controls |91| Stage explicit files | `CALL_TOOL` | `git add <specific-files>` |92| Commit or manage refs | `CALL_TOOL` | Git commit/branch/merge/rebase/tag |93| Write audit notes | `WRITE` | Commit message or CM report |94| Report result | `NOTIFY` | Final SCM summary |9596### Tools and instruments97- Git CLI and repository metadata98- Commit/CM config, Conventional Commit guide, CODEOWNERS playbook, onboarding-risk signals99100### Canonical command path101```bash102git status -sb103git diff --staged104git log --oneline -5105```106107Stage and commit only explicit paths:108```bash109git add <specific-files>110git commit -m "$(cat <<'EOF'111<type>(<scope>): <description>112113[optional body]114EOF115)"116```117118### Resource scope119| Scope | Resource target |120|-------|-----------------|121| `CODEBASE` | Tracked files, diffs, conflicts, CODEOWNERS |122| `LOCAL_FS` | Git metadata, config files, commit message temp files |123| `PROCESS` | Git commands and verification commands |124| `CREDENTIALS` | Secret-sensitive files must not be staged or committed |125126### Preconditions127- Repository and Git intent are identifiable.128- User has authorized the requested SCM operation.129130### Effects and side effects131- May stage files, create commits, branches, tags, worktrees, or history operations.132- Can affect shared repository history if unsafe commands are used, so approvals matter.133134### Guardrails1351360. **Explicit user override (highest priority).** When the user gives an explicit, unambiguous instruction on how to perform a Git/SCM operation, follow it exactly and do not argue, re-litigate, or block on the conditions below. This overrides every default and guardrail in this skill — including "no direct push to `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.137 - **Single hard exception:** likely-secret material (`.env`, keys, raw tokens). If the user's instruction would stage/commit such material, surface it once before proceeding; everything else proceeds without challenge.1381. Choose Quick Path for ordinary commits and Full CM Path for branching, history, release, or governance work.1392. Read `config/commit-config.yaml` and `config/cm-config.yaml` before applying project-specific commit or CM rules.1403. Stage only explicit files; never use broad staging unless the user explicitly approves it.1414. Do not rewrite shared history without maintainer approval.1425. Never stage or commit likely-secret material.1436. **Response language follows `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.144145### Configuration146147| File | Role |148|------|------|149| `config/commit-config.yaml` | Conventional Commit types, branch prefixes, message rules |150| `config/cm-config.yaml` | CM pointers (documented process, branching model, baselines, changelog) |151152### Operating mode (choose first)153154### Quick Path (commit-focused, default)155156Use this when the user intent is mainly "commit this safely."1571581. Follow **Conventional Commits** section only1592. Stage explicit files only1603. Validate message type/scope/length from `commit-config.yaml`1614. Stop after safe commit unless user asks CM/governance operations162163### Full CM Path (repo governance / risky history operations)164165Use this when the user asks about branching strategy, merges, rebase/cherry-pick, worktrees, release refs, CODEOWNERS, or audit posture.1661671. Run CM workflows in order (Planning -> Identification -> Control -> Status accounting -> Verification)1682. Add onboarding risk scan when inheriting or auditing a repository1693. Include commit governance from Conventional Commits when creating commits1704. For large-scope merge operations, use risk scoring and Ask Gate criteria from `../../workflows/scm.md`171172### CM process map (software)173174| CM function | Intent | Typical artefacts / actions |175|-------------|--------|------------------------------|176| **Management & planning** | Agreed rules | `CONTRIBUTING.md`, `SECURITY.md`, `cm-config.yaml` |177| **Configuration identification** | What is managed, naming | Branch/tag rules, version files, `.gitattributes`, LFS |178| **Configuration control** | Reviewed change | PRs, checks, issue links, `BREAKING CHANGE` footers |179| **Status accounting** | As-built truth | `main` / release refs, `CHANGELOG`, tags, CI status |180| **Verification & audit** | Evidence | CI logs, signed commits, lockfiles / SBOM policy |181182### CM workflows (use before risky history operations)183184### 1) Planning1851861. Read `cm-config.yaml` and files listed under `documented_process`.1872. If missing, infer from `CONTRIBUTING.md` / `README`; state assumptions.1883. Confirm **branching model** and whether **force-push** on shared branches is allowed (default: not without explicit approval).189190### 2) Identification1911921. Canonical refs: default branch, release branches/tags, version sources (`package.json`, etc.).1932. `.gitattributes` / LFS for binaries and generated assets.1943. Branch names vs `commit-config.yaml` `branch_prefixes` when the project uses them.195196### 3) Control1971981. Small, reviewable units; align commits with PR / issue intent.1992. **Conflicts:** `merge-base`, `git status`, resolve markers, tests; suggest `rerere` when conflicts repeat.2003. **Worktrees:** `git worktree add`; merge/rebase from the **target branch’s** checkout; all worktrees share one object database.2014. Do not rewrite **shared** history without maintainer approval; prefer `--force-with-lease` if force-push is unavoidable.202203### 4) Status accounting2042051. `git status -sb`: branch, remote tracking, ahead/behind, merge state.2062. Relate last tag / release branch to `CHANGELOG` or tooling (semantic-release, release-please, changesets) if present.207208### 5) Verification & audit2092101. Required CI and `merge_group` when merge queue applies.2112. Never stage/commit secrets (`.env`, keys, raw tokens).2123. Call out signed-commit expectations when the org cares about verification badges.213214#### CODEOWNERS maintenance checklist2152161. Validate CODEOWNERS file exists (prefer `.github/CODEOWNERS`).2172. Ensure critical paths are explicitly owned (not only fallback `*`).2183. Ensure owners are active and mapped to current teams.2194. Confirm branch protection requires CODEOWNERS review where needed.2205. Flag overlapping/ambiguous rules that can hide intended owners.221222Read `change_governance.require_codeowners` and `ownership.*` in `cm-config.yaml` when present.223224### 6) Onboarding risk scan (optional, recommended)225226Use this quick scan when joining or inheriting a repository to identify risky areas before major changes.2272281. High churn files in `lookback` window.2292. Ownership concentration / bus-factor signals.2303. Bug hotspot files from fix-related history.2314. Velocity trend by month.2325. Revert/hotfix/emergency frequency.233234Read thresholds from `cm-config.yaml` `onboarding_metrics` when present and cite caveats:235- squash merge teams can distort ownership metrics,236- weak commit labeling reduces hotspot accuracy,237- monorepo commit counts can bias subsystem interpretation.238239---240241### Conventional Commits242243### Commit types244245| Type | Description | Branch Prefix |246|------|-------------|---------------|247| feat | New feature | feature/ |248| fix | Bug fix | fix/ |249| refactor | Code improvement | refactor/ |250| docs | Documentation changes | docs/ |251| test | Test additions/modifications | test/ |252| chore | Build, configuration, etc. | chore/ |253| style | Code style changes | style/ |254| perf | Performance improvements | perf/ |255256### Commit format257258```259<type>(<scope>): <description>260261[optional body]262263Co-Authored-By: First Fluke <our.first.fluke@gmail.com>264```265266### Commit workflow267268#### Step 1: Analyze changes269270```bash271git status272git diff --staged273git log --oneline -5274```275276#### Step 1.5: Split by feature (if needed)277278If changes span multiple features/domains, **split commits by feature**.279280**Split when:** different scopes, different types, logically independent work.281282**Do not split when:** one feature, few files (≤5), or user asked for a single commit.283284#### Step 2: Determine type285286- New capability → `feat` · Bug fix → `fix` · Structure-only → `refactor` · Docs only → `docs` · Tests → `test` · Build/config → `chore`287288#### Step 3: Scope289290Use module/component: `feat(auth):`, `fix(api):`, or omit: `chore: update dependencies`291292#### Step 4: Description293294≤72 chars (per `commit-config.yaml`), imperative mood, lowercase start, no trailing period.295296#### Step 5: Execute commit297298Show the message, then commit with explicit paths:299300```bash301git add <specific-files>302git commit -m "$(cat <<'EOF'303<type>(<scope>): <description>304305[optional body]306EOF307)"308```309310If HEREDOC is unstable in your shell (or body is long), use file-based commit input:311312```bash313git add <specific-files>314cat > /tmp/oma-commit-msg.txt <<'EOF'315<type>(<scope>): <description>316317[optional body]318EOF319git commit -F /tmp/oma-commit-msg.txt320```321322Use HEREDOC by default, and switch to `-F` for long or flaky terminal sessions.323324## References325326- `config/commit-config.yaml`327- `config/cm-config.yaml`328- `resources/conventional-commits.md`329- `resources/onboarding-risk-signals.md`330- `resources/codeowners-playbook.md`331- Observability handoff: `../oma-observability/SKILL.md` §Integrations — release markers (`service.version`), revert baseline diff332333### Important notes334335- **Explicit user instruction wins.** A clear user directive on how to commit/push/branch overrides every rule below (and every other guardrail). Follow it without arguing; the only thing that still warrants a heads-up is likely-secret material.336- **NEVER** `git add -A` or `git add .` without explicit user permission.337- **NEVER** commit likely-secret material.338- **ALWAYS** stage by explicit paths; tie non-trivial CM work to the five CM rows above, even briefly.