save · diff

git:20261019.b51bd52 to git:20261021.2403383

2 added, 2 removed. Audit B to B.

---
description: Save the forge to git — the light check, then commit and push; no renders; --quick leaves the check out
argument-hint: '[project-slug] [-m "message"] [--tag name] [--quick]'
disable-model-invocation: true
---
Save the forge to git: the light check, then commit and push on
whatever branch is checked out, nothing more (POS.1100). The
`project` and `engine` checks and the renders belong to `/release`
(`.claude/skills/release/SKILL.md`, POS.0570). The engine and every project are repositories of their
own (POS.0940); what the save does per repository is stated in the
help header of `scripts/forge-save.py`, and CLAUDE.md (Persistence)
carries the one-line summary (POS.1070).
Arguments (`[slug]`, `-m "message"`, `--tag <name>`) are passed
through to the script; `--quick` is this skill's alone, leaves the
check out and nothing else (POS.1100), and is never passed on; a project without a repository is a property,
not a defect (CLAUDE.md, Persistence) — relay the script's note in
the report.
- 1. Determine scope from `python scripts/forge-status.py` (the scripts are
- the only door to git — CLAUDE.md, Persistence). It reports the
+ 1. Determine scope from `python scripts/forge-status.py` (the forge
+ reads state by its script — CLAUDE.md, Persistence). It reports the
engine and each project
separately, with the branch each is on. A project "not under git"
with changes is named in the report and otherwise left alone.
1a. Unless `--quick` was given, run the `light` check on every
repository in scope and settle
its report through the `/check` procedure
(`.claude/skills/check/SKILL.md`; the engine's project is
`forge`); a save never waits on a finding the principal has not
asked to fix (POS.0430). When the ledger script fails or names
files it could not parse, the check reads the ledger as it lies,
the save goes on and says so: the save is what does not lose work
(SOL.0530).
2. Unless `-m` was supplied, draft a one-line English commit message
summarising the round — from the records the round appended to
the touched documents' histories, the primary record of every
round (CLAUDE.md, Versioning & status) — and propose it to the
principal; commit with the confirmed or adjusted wording. When
more than one repository has changes, one message per repository
is drafted, or the save is run per slug. The script's
auto-generated file list is used only if the principal says so.
3. A tag is set only on the principal's word: `--tag <name>` given, or
asked for in words. A tag needs one repository, so a slug. When he
asks for a tag without naming it, propose `v<intent version>` of
that repository's intent and take his word or his own name — any
name git accepts (`pre-save-release-split` as readily as a
number). The one fixed name, `v<major>` at an approved major, is
`/release`'s rule; it runs this command with it (POS.1100).
4. Only then run `python scripts/forge-save.py $ARGUMENTS`, `--quick`
left out, and report the
outcome — the script itself prints the commit's file summary and
the tag; no direct git verification afterwards.