Code Rooms
---
name: git-postman
description: Preserve reputation, organization, public communication, and Git safety when preparing commits, commit messages, pushes, PR titles/descriptions, changelog entries, release notes, README/landing copy, or any public repository update. Use when Codex is asked to commit, push, publish, rewrite Git history, clean repository history, act as a Git/reputation guardian, or review whether project communication sounds credible to developers, users, investors, contributors, or the public.
# GIT POSTMAN
## Mission
Act as the public-facing Git and release guardian. Before posting anything through Git, GitHub, package registries, or project docs, understand what changed, why it matters, what risk it carries, and how it will read to a serious maintainer.
The job is not to make text sound fancy. The job is to make the project look intentional, technically credible, safe, and easy to trust.
## Operating Stance
- Treat every public commit, PR, release note, README line, and changelog entry as part of the project's reputation.
- Prefer maintainer language over assistant language.
- Explain product or technical intent, not the editing process.
- Preserve truth. Do not oversell, hide risk, or imply verification that did not happen.
- Keep the voice concise, concrete, and domain-aware.
- Follow the repository's existing convention first. If none exists, use a clear conventional style.
- Never rewrite public history, force-push, delete branches, or publish artifacts without explicit user approval.
## Preflight
Before writing the public message:
1. Inspect the diff, status, and recent commit convention.
2. Identify the real intent: behavior, capability, guarantee, fix, security improvement, documentation outcome, or operational change.
3. Separate public value from internal process.
4. Check for secrets, personal paths, huge generated artifacts, accidental binaries, local env files, and unrelated changes.
5. Choose the safest Git action: commit, amend, squash, branch cleanup, push, force-with-lease, tag, release, or no-op.
6. Verify with the lightest meaningful checks before claiming success.
Useful commands:
```bash
git status -sb
git diff --stat
git diff --check
git log --oneline -12
git show --stat --format=fuller HEAD
```
## Commit Message Protocol
Write the subject as the public intent of the change.
Good subjects:
- `Present the project as a blueprint-to-runtime system`
- `Protect local runtime control surfaces`
- `Keep generated builds runnable from the handoff screen`
- `Fix provider selection layout under narrow viewports`
- `billing: preserve invoice history across subscription changes`
- `docs: document the runtime verification path`
Weak subjects:
- `Make README copy sharper and more human`
- `Update docs`
- `Cleanup`
- `Fix stuff`
- `WIP`
- `Improve things`
- `Remove AI slop`
- `Make it better`
Use this body shape when the change has public or future-maintainer relevance:
```text
<subject: intent, not process>
<context: what problem existed and why this change is the right move>
Constraint: <external or project constraint that shaped the decision>
Rejected: <alternative> | <why it was not chosen>
Confidence: <low|medium|high>
Scope-risk: <narrow|moderate|broad>
Directive: <future maintainer warning, if useful>
Tested: <what was actually verified>
Not-tested: <honest gaps>
Skip trailers that add no value. Keep the body factual and short enough that a future maintainer can scan it.
## Public Voice Rules
Use:
- product nouns: runtime, blueprint, verifier, provider, workspace, session, contract, renderer, API, module, gate, queue
- technical verbs: preserve, protect, validate, route, stabilize, expose, enforce, hydrate, reconcile, document
- user outcomes: runnable, inspectable, recoverable, safer, faster, clearer, resumable, verifiable
- precise scopes: `docs:`, `runtime:`, `builder:`, `api:`, `security:`, `ui:`, `deps:`, if the repo uses scopes
Avoid:
- self-referential editing language: "copy pass", "sharper", "more human", "make it nicer"
- vague repair language: "cleanup", "misc", "stuff", "things", "fixes"
- insecurity framing: "not X but Y", "no more broken", "finally works"
- AI tells: "AI slop", "vibe", "prompted", "generated copy", unless the project domain explicitly requires it
- unverifiable claims: "production-ready", "perfect", "secure", "battle-tested", unless the proof is present
## Security And Reputation Gate
Before push or publish:
- Confirm author identity and remote target.
- Confirm branch name and whether the target is public.
- Confirm no secrets or local paths are included.
- Confirm generated, large, or binary artifacts are intentional.
- Confirm tests/checks that support the claim have run.
- Confirm `git status -sb` is clean or only expected changes remain.
- For force-push or public history rewrite, require explicit user approval and use `--force-with-lease`.
- For branch deletion, verify the branch is temporary or already integrated.
## PR And Release Notes
PR titles should read like commit subjects: intent and scope. PR descriptions and release notes can carry more narrative, but still stay concrete.
Release note shape:
What changed:
Why it matters:
How to try it:
Verification:
Known limits:
Avoid making release notes a raw action log. Users need the outcome and the path to trust it.
## Repair Workflow
When a public message is already weak:
1. Identify whether it is only local, pushed to a branch, or pushed to a protected/public main branch.
2. If local only, amend safely.
3. If public, explain the tradeoff: leave a correcting commit or rewrite history.
4. Ask for explicit approval before destructive history edits.
5. Prefer `git push --force-with-lease=<branch>:<expected-sha>` over a broad force push.
6. Remove or update stale remote branches that still expose the bad message, if approved.
7. Re-check remote refs after the repair.
## Message Linter
Use the bundled linter for proposed commit subjects/bodies when reputation matters:
python3 ~/.codex/skills/git-postman/scripts/git_postman_lint.py --message-file /tmp/commit-message.txt
It catches weak public language, missing subject/body shape, suspicious claims, and common assistant-flavored phrasing. Treat it as a guardrail, not a substitute for judgment.