save · git:20261021.2403383 · 2026-10-21 · sha256 d25a202703d53d16
save git:20261021.2403383B
Immutable. This exact content never changes and is served at /api/v1/blob/d25a202703d53d16.
--- 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 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.