Files
claudetools/.claude/commands/scc.md
Mike Swanson f495b08f42 harness: gitignore tmp/ + add promotion check to /save and /scc
- .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>
2026-06-12 06:26:20 -07:00

2.6 KiB

/scc - Save, Commit, and Push

Quick command to save session log, stage everything, and push to Gitea in one shot.

Steps

  1. 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. Use YYYY-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
  2. 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 mv the keepers to a permanent home (scripts/ / clients/<x>/reports/ / projects/<p>/tools/) per .claude/TEMP_GRADUATION.md before committing. Never blocks — pure scratch can be left or deleted.

  3. 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 to identity.json, stages changes, commits, fetch + rebase, pushes — ClaudeTools then vault.

    • Do NOT run raw git add -A / git commit / git push origin main here — that bypasses the lock AND the fetch+rebase (the old flow raced and would reject on a stale push).
    • If sync.sh exits 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 under sync.sh's auto message). If a custom message matters, revisit later (e.g. a -m arg on sync.sh).
  4. Report - Confirm what was saved, committed, and pushed (or deferred)

  5. 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