- .gitignore: ignore root tmp/ (temp/ and .claude/tmp/ were already ignored; root tmp/ was not, which is how scratch got committed and needed cleanup). - New .claude/scripts/tmp-promotion-check.sh: advisory, read-only, never blocks. Scans the gitignored scratch dirs (tmp/, temp/, .claude/tmp/) and flags files worth graduating (scripts, substantial docs, session-log-referenced) before they're lost to cleanup. Silent when scratch is empty. - /save (Phase 4) and /scc (new step 2) run the check before sync.sh, pointing at .claude/TEMP_GRADUATION.md for the graduate-vs-delete decision. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.6 KiB
/scc - Save, Commit, and Push
Quick command to save session log, stage everything, and push to Gitea in one shot.
Steps
-
Save session log - Create/update session log for today using the /save skill logic:
- Determine correct location based on work context (project-specific or general
session-logs/) - Per-session-unique filename (mandatory) — concurrent sessions share this worktree, so never use the bare
YYYY-MM-DD-session.md. UseYYYY-MM-DD-<user>-<topic>.md; collision-guard + same-session-append rules are in/save(save.md). - Include: summary, credentials (unredacted), infrastructure, commands, files changed, pending tasks
- Determine correct location based on work context (project-specific or general
-
Promotion check (advisory) - Run
bash .claude/scripts/tmp-promotion-check.sh. The scratch dirs (tmp/,temp/,.claude/tmp/) are gitignored, so anything there is invisible to git and lost on cleanup. If it flags[GRADUATE?]candidates,git mvthe keepers to a permanent home (scripts//clients/<x>/reports//projects/<p>/tools/) per.claude/TEMP_GRADUATION.mdbefore committing. Never blocks — pure scratch can be left or deleted. -
Commit + push (locked, rebase-safe) - Run
bash .claude/scripts/sync.sh. This is the single serialized git path: it takes the per-machine sync lock (so it can't interleave with another session's sync/commit), reconciles git identity toidentity.json, stages changes, commits, fetch + rebase, pushes — ClaudeTools then vault.- Do NOT run raw
git add -A/git commit/git push origin mainhere — that bypasses the lock AND the fetch+rebase (the old flow raced and would reject on a stale push). - If
sync.shexits 75, another sync is in progress: report "sync deferred — your log is saved locally and will sync on the next run"; do not claim pushed. - Note: the discrete
scc:-prefixed message is dropped in favour of one locked git path (commit lands undersync.sh's auto message). If a custom message matters, revisit later (e.g. a-marg onsync.sh).
- Do NOT run raw
-
Report - Confirm what was saved, committed, and pushed (or deferred)
-
Reaffirm roles - After push, briefly restate:
- You are a COORDINATOR, not an executor
- Delegate: DB -> Database Agent, code -> Coding Agent, git -> Gitea Agent, tests -> Testing Agent
- Do yourself: simple responses, reading 1-2 files, planning, decisions
-
500 tokens of work = delegate. Code or database = ALWAYS delegate.
- NO EMOJIS. Use ASCII markers:
[OK],[ERROR],[WARNING],[SUCCESS],[INFO]
Important
- This is a FAST command - no lengthy analysis, just save and ship
- Just save, commit, push, reaffirm, report