Context OS guarantees shared state transitions, not identical host features. Portable skills gather and review intent; the deterministic kernel owns paths, dates, append behavior, optimistic hashes, locking, and receipts.
| Job | Claude Code | Codex | Hermes | OpenClaw | Cursor CLI / Cursor IDE (experimental) | Devin session (experimental) | Deterministic operation |
|---|---|---|---|---|---|---|---|
| Initialize context | /setup |
$setup |
/context-setup |
/contextos <alias> setup |
/context-setup |
@skills:context-setup |
contextos propose setup then apply |
| Start a session | /start |
$start |
/context-start |
/contextos <alias> start |
/context-start |
@skills:context-start |
read-only contextos start |
| Checkpoint | /update |
$update |
/context-update |
/contextos <alias> update |
/context-update |
@skills:context-update |
contextos propose update then apply |
| Close a session | /end |
$end |
/context-end |
/contextos <alias> end |
/context-end |
@skills:context-end |
contextos propose end then apply |
The portable cores are .agents/skills/context-setup, context-start,
context-update, and context-end. Short skill directories are thin aliases;
Claude files are host adapters. All lifecycle names require explicit invocation.
OpenClaw resumes setup, update, and end questions with
/contextos <alias> continue <session-key> <response> (or the operator-scoped
contextos.continue Gateway method). Its plugin does not expose apply; after
independent proposal review, an operator runs the kernel from a trusted shell.
Devin's portable skill frontmatter carries a native user-only trigger, but the
host remains experimental until its account-managed session behavior has
versioned live-conformance evidence.
The mutation protocol is always:
- the agent drafts reviewed JSON input under ignored
.context-os/inputs/; bash scripts/contextos.sh proposeemits exact diffs and a proposal digest;- the agent presents those diffs and waits;
bash scripts/contextos.sh applyreceives that exact digest; and- the kernel verifies target hashes, takes an exclusive lock, writes only the proposal paths, and records a receipt.
| Capability | Claude Code | Codex | Hermes | OpenClaw | Cursor CLI / Cursor IDE (experimental) | Devin session (experimental) |
|---|---|---|---|---|---|---|
| Project instructions | CLAUDE.md |
AGENTS.md |
AGENTS.md |
Alias-bound execution-directory AGENTS.md |
Root AGENTS.md |
Root AGENTS.md |
| Portable skill source | Thin slash adapters | .agents/skills/ |
External directory or copied skills | Copied into private workspace .agents/skills/ |
.agents/skills/ |
.agents/skills/ |
| Project hooks | .claude/settings.json |
.codex/hooks.json after trust |
Optional shell/plugin adapter | Not claimed | Not claimed | Not claimed |
| Authorization | Host settings | Host settings | Outside contract | Operator-scoped lifecycle plugin, OpenClaw model-tool policy, and separate trusted-shell apply | IDE/CLI permissions; CLI --force |
Account-managed; outside adapter |
| Lifecycle enforcement | Kernel | Kernel | Kernel | Kernel | Kernel | Kernel |
| Native memory | Claude auto-memory | Not part of the shared contract | MEMORY.md and USER.md |
Private OpenClaw workspace | Outside contract | Knowledge is not synchronized |
Runtime manifests in runtimes/ are machine-readable claims. Hooks are defense
in depth: the kernel repeats mutation invariants during every proposal and apply.
Run bash scripts/contextos.sh capabilities --agent codex,hermes to compare
explicitly named agents. Repeated --agent flags also work; omit them to use
the agents selected in contextos.workspace.json. Add --json for structured data.
The view lists each surface's support tier and capability values, portable skills
from component ownership, common skills, and differences. unsupported means the
descriptor does not claim the capability. host-provided marks native and
advisory capabilities, which do not depend on repository components. Adapter
capabilities list their runtime-specific required components in JSON and text.
installed means those components appear in installed-bundle.json;
not-installed means at least one is absent. unknown-install-state means
the file is absent. Skill install status uses each skill's owning component.
Availability is not permission or activation, and this view does not verify a
host installation.
| Skill | Job | Effects |
|---|---|---|
$context-setup |
Canonical setup core | Proposal/apply only |
$context-start |
Canonical read-only start core | No writes |
$context-update |
Canonical checkpoint core | Proposal/apply only |
$context-end |
Canonical close core | Proposal/apply only |
$migrate-gemini |
Map selected Gemini configuration | Reviewed mapping only |
$mine-gemini-workflows |
Recover repeated Gemini workflows | Narrow selected evidence |
The $setup, $start, $update, and $end rows in the shared lifecycle table
are the short portable aliases. The ten tokens above and in that table are the
complete shipped portable skill catalog.
The two migration skills do not expose private reasoning or make bulk-history import safe. Their Claude adapters appear in the command index below.
| Command | Job | Effects and prerequisites |
|---|---|---|
/today |
Morning heartbeat | Reviewed heartbeat write; live data stays opt-in |
/capture |
Triage inbox notes | Approved destinations only; source cleanup remains separate |
/find-context |
Locate relevant context | Read-only |
/reconcile |
Detect repository drift | Read-only report unless fixes are separately approved |
/recover |
Inspect stale worktrees and branches | Read-only until destructive cleanup approval |
/content-shipped |
Log confirmed published content | Local content-log write; does not publish |
/clean-ai-writing |
Apply the writing workflow | Proposed revision only |
/dream |
Curate host-local auto-memory | Proposal artifacts only |
/dream-apply |
Apply reviewed memory proposals | Host-local write with per-item review |
/migrate-gemini |
Claude adapter for selected migration | Routes to the portable skill |
/mine-gemini-workflows |
Claude adapter for workflow recovery | Routes to the portable skill |
Uploading these files to claude.ai does not activate commands, hooks, tool
permissions, or skill metadata. See docs/claude-projects-sync.md.
Some Claude adapter files carry optional x-source and x-source-version
frontmatter. A maintainer-core/... value is a stable logical synchronization
ID, not a repository path or public link. It says that the public adapter was
reviewed and published from the maintainer's generic command core. The paired
hexadecimal version is the synchronization checkpoint used to detect lag; it
is provenance metadata, not a release tag or a claim that readers can fetch a
private source revision.
The checked-in adapter is the complete public artifact for that release. Operative rules must be present in the file itself, and any separately published upstream is linked directly in the file body at a pinned public revision. Current adapter metadata and operative documentation never name private repositories or private issue IDs; historical changelog entries remain an audit record. Removing these fields is safe for runtime discovery but discards useful maintainer drift evidence; changing their logical IDs requires updating the publication mapping as well.
Run bash scripts/contextos.sh doctor for runtime and state diagnostics, then
bash scripts/validate-all.sh --workspace after personalized repository
changes. Product contributors use the strict form without --workspace.