backup
Backup the entire workspace to GitHub. EXPLICIT INVOCATION ONLY - never auto-trigger from natural language.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Backup the entire workspace to GitHub. EXPLICIT INVOCATION ONLY - never auto-trigger from natural language.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Daily email intelligence processor. Scans incoming + outgoing 31C Exchange emails (ceo@31c.io via exchangelib/EWS), groups by conversation thread, categorizes for CRM actions, tasks, pipeline updates, knowledge capture, and relationship signals. Presents digest for approval before executing. Integrates with /prime for morning briefing. Trigger: '/email-intel', 'process emails', 'email digest', 'check my email'. Do NOT trigger for: sending email (use send-email.py), reading specific emails, email search queries, or Gmail operations.
Ultrathink principal-engineer review gate. Runs a Validate-Identify-Improve-Adjust (VIIA) pass over a target - a plan awaiting approval, just-executed work, a specific file or directory, or the entire workspace - then runs an adversarial refutation layer (Phase 2.5) with cross-family judge rotation (Claude / Gemini / Grok) and optional two-agent debate on BLOCKER + HIGH findings before presenting findings with concrete proposed fixes for batched approval. Blocks forward progress until approved. Triggers on "scrutinize", "stress-test this", "principal review", "validate and improve", "review the plan before I approve", "audit what you just did", "ultrathink review". Do NOT trigger for artifact grading alone (use /evaluate), fact-checking drafts (use /validate), or strategic reasoning (use /deep-think). Usage: /scrutinize [plan | execution | file:<path> | dir:<path> | workspace | trajectory:<run_id>] [--relentless] [--no-refute] [--include-low-confidence] [--include-ambiguous]
Second-opinion advisor. Consults Gemini, Grok, and Kimi in parallel for independent views on hard or high-stakes calls. Two modes: independent (all models see the problem only, reason fresh) and critique (all stress-test a draft). Distinct from /deep-think (Claude reasoning structured, alone) and /odin (Claude + the curated knowledge brain). Trigger when the user says: "council", "/council", "second opinion on", "consult the council", "what would Gemini/Grok/Kimi say about", "stress-test this with Gemini/Grok/Kimi", "council vote".
Reflective memory consolidation - performs a periodic pass over memory files, synthesizing recent learnings into durable, well-organized memories for future sessions. Validates technical claims against Context7, enforces security protocols, prunes stale entries, and produces a structured consolidation report. Use when the user says "dream", "/dream", "consolidate memories", "memory cleanup", "reflect on recent sessions", "update memories", or at the end of a productive session when significant new information was learned. Do NOT use for: simple memory writes (use auto-memory), knowledge base operations (use /zk), or session initialization (use /prime).
Odin - personal AI advisor with persistent knowledge brain. Ingests books, articles, videos, documents. Builds principles and positions. Gives referenced advice prioritizing learned knowledge. Nine modes: learn (ingest material), consult (give advice), reflect (review brain), recall (query brain), teach (direct learning), log (record an episode - something that happened), collect (scan business threads + captured comms for episodes you forgot to log), compile (unified linting across brain and ZK), skill-proposal (propose a reflection-derived how-to principle as a checklist step in a target skill - proposal only). Triggers on "Odin" as name/address, "ask Odin", "what would Odin say", "/odin". DO NOT trigger on "odin" as the Russian numeral "one" in phrases like "odin variant" or "another one". Only trigger when used as a proper name or form of address.
Workspace-wide semantic recall. Searches the local associative-memory index (scripts/memory-index.py: bge-m3 hybrid dense+BM25, on-machine, zero API cost) across everything meaningful in the workspace -- Odin brain, business threads, CRM, LinkedIn, context, reference, plans, deliverable outputs, knowledge, datastore extracts, and the auto-memory files -- then answers ONLY from the retrieved sources with file-path citations, or says "not in memory" when the index reports a gap. Use when the user asks "what do we know about X", "where did we decide Y", "have we touched Z before", "recall ...", "search my memory for ...", "find what we said about ...", or wants to surface a past decision / brief / contact / note by meaning rather than exact words. Do NOT use for: Odin-brain-only advice or episode dedup (use /odin recall, which is brain-scoped); external/world intelligence on a company or person (use /osint); capturing a NEW note (use /zk); plain exact-string file search (use Grep). This skill never fabricates be
| name | backup |
| disable-model-invocation | true |
| description | Backup the entire workspace to GitHub. EXPLICIT INVOCATION ONLY - never auto-trigger from natural language. |
| argument-hint | (no arguments) |
| metadata | {"author":"Misha Hanin","email":"misha.hanin@odinix.com","version":"1.3"} |
| allowed-tools | Bash(git:*), Bash(python3:*) |
| model | haiku |
| x-heading-orchestration | {"parallel_safe":false,"shared_state":[],"triggers":["backup","push to github","save workspace"]} |
| x-heading-capability | {"what":"Commits all workspace changes and pushes them to GitHub origin/main, so the entire workspace is backed up off-machine.\n","how":"Explicit invocation only - type /backup (no arguments); never auto-triggers. It runs git add/commit/push, excluding corporate and CRM-clone trees on exec workspaces, and reports the file count pushed.\n","when":"Use to save the whole workspace to GitHub. To publish content to executives use /publish-corporate; for a full versioned push with CRM aggregate use /push-updates.\n"} |
| x-heading-routing | {"category":"Operations","triggers":["NEVER auto-trigger. Explicit `/backup` only."],"exclusions":["Corporate publish -> /publish-corporate"],"compound":"No","router":"manual"} |
Backup the entire workspace to GitHub.
push-all.pyThe CEO workspace is split into two repos — the ENGINE clone (.heading-os,
code only) and the DATA overlay (.heading-os-data, all data + every
artifact), each with its own private origin/main. The single command that
commits and pushes BOTH, with a pre-push secret scan and an ahead/behind
[0 0] verification (a bare push can silently leave a ref behind), is:
python scripts/push-all.py # commit working-tree changes + push both
python scripts/push-all.py -m "msg" # custom commit message
python scripts/push-all.py --no-commit # push existing commits only
python scripts/push-all.py --dry-run # show what would happen, change nothing
It reads GH_TOKEN from the engine .env, refuses to push any tracked
secret-like file (.env, .session, cookies.json, .sessions/), and never
pushes .memory-index/ (gitignored, rebuildable). The DATA overlay is pushed
FIRST, because the engine's pre-push hook runs the full suite inside the push and
data is the only half that cannot be reconstructed. Prefer this over the manual
git steps below whenever the data overlay exists (get_data_root() differs
from the engine root). The manual steps remain the path for exec workspaces and
the pre-cutover single-repo case.
Exit 3 means at least one repository was skipped. Read the HEADLINE, not the
code, because it has two shapes and they mean opposite things to the operator.
Partial: N of M repo(s) not pushed. — the backup was partial, not failed.
Report it that way. The repositories named below the headline were not pushed, for
the reason printed next to each; everything else was pushed and verified.NOTHING PUSHED: all M repo(s) skipped. — nothing reached a remote and there
is NO new off-machine copy. Never report this as a partial success. The exec and
pre-cutover single-repo modes push one repository, so exit 3 there is always this
shape.In both shapes every skipped repository is still committed locally, so nothing is
lost. Tell the operator which repository was skipped, quote the reason, and give the
remedy: usually merge the branch into main and run the command again, or
python scripts/install-git-hooks.py for an unarmed engine test gate. Do NOT re-run
the command hoping for a different answer.
Exit 1 and 2 are real failures that stopped the run (a security refusal, a
remote a repository must not push to, an absent GH_TOKEN, a misconfigured data
root, a push that ran and did not verify).
Exit 2 with "REFUSING TO PUSH" naming a remote is the newest of those and is
different in kind from the others. It means a repository is aimed at a remote it
must not push to: the engine's own remote, or a repository GitHub reports as
public. Nothing was pushed, nothing was lost, and the whole run stops rather than
continuing with the other repositories, because a wrong remote makes all of them
suspect. Report the remote it names to Misha and do not retry until it is
corrected.
Because the DATA overlay is pushed first, a failure at the ENGINE can still leave
DATA pushed and verified — read the per-repository lines above the failure before
telling the operator nothing was backed up. Exit 0 means everything went.
push-all.pyAn executive workspace is the same two-repo topology from the exec's side: a
READ-ONLY engine clone (.heading-os, consumed via git pull; its origin is the
CEO's engine repo, so the exec cannot push it) and a WRITABLE data overlay
(heading-os-data-{slug}). push-all.py is exec-aware — it reads
.workspace-identity.json, detects the exec-workspace type, and pushes ONLY the
data overlay, skipping the engine entirely:
python scripts/push-all.py # commit + push the data overlay
python scripts/push-all.py --dry-run # show what would happen, change nothing
Do NOT git add -A / commit in the engine clone on an exec — it is read-only and
all real artifacts already resolve into the data overlay via the get_*_dir()
helpers. Machine-local config (.zed/, .claude/settings.local.json) stays local
and uncommitted by design (gitignored). Corporate content lives in the gitignored
.corporate-repo/ clone and is refreshed by /sync, never by /backup.
push-all.py is unavailable)Fallback for the rare case the script cannot run. The repo target differs by workspace:
heading-os-data-{slug}), NEVER the engine clone.Steps:
cd into the correct repo (the data overlay for an exec; the workspace root for
the single-repo CEO case).git status --short. If there are no changes, say "Nothing to commit" and stop.git add -A, review with git diff --cached --stat, commit, push origin main,
and confirm what was pushed.Important:
Co-Authored-By: Claude <noreply@anthropic.com>.gitignore, and proceed with the rest..env files) — these are already in .gitignore.--no-verify.