install
source · Clone the upstream repo
git clone https://github.com/openai/symphony
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openai/symphony "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.codex/skills/commit" ~/.claude/skills/openai-symphony-commit && rm -rf "$T"
manifest:
.codex/skills/commit/SKILL.mdsource content
Commit
Goals
- Produce a commit that reflects the actual code changes and the session context.
- Follow common git conventions (type prefix, short subject, wrapped body).
- Include both summary and rationale in the body.
Inputs
- Codex session history for intent and rationale.
,git status
, andgit diff
for actual changes.git diff --staged- Repo-specific commit conventions if documented.
Steps
- Read session history to identify scope, intent, and rationale.
- Inspect the working tree and staged changes (
,git status
,git diff
).git diff --staged - Stage intended changes, including new files (
) after confirming scope.git add -A - Sanity-check newly added files; if anything looks random or likely ignored (build artifacts, logs, temp files), flag it to the user before committing.
- If staging is incomplete or includes unrelated files, fix the index or ask for confirmation.
- Choose a conventional type and optional scope that match the change (e.g.,
,feat(scope): ...
,fix(scope): ...
).refactor(scope): ... - Write a subject line in imperative mood, <= 72 characters, no trailing period.
- Write a body that includes:
- Summary of key changes (what changed).
- Rationale and trade-offs (why it changed).
- Tests or validation run (or explicit note if not run).
- Append a
trailer for Codex usingCo-authored-by
unless the user explicitly requests a different identity.Codex <codex@openai.com> - Wrap body lines at 72 characters.
- Create the commit message with a here-doc or temp file and use
so newlines are literal (avoidgit commit -F <file>
with-m
).\n - Commit only when the message matches the staged changes: if the staged diff includes unrelated files or the message describes work that isn't staged, fix the index or revise the message before committing.
Output
- A single commit created with
whose message reflects the session.git commit
Template
Type and scope are examples only; adjust to fit the repo and changes.
<type>(<scope>): <short summary> Summary: - <what changed> - <what changed> Rationale: - <why> - <why> Tests: - <command or "not run (reason)"> Co-authored-by: Codex <codex@openai.com>