cm_ambient
ChatGPTSession-start memory block. Does not write cards or .ambient.md. Pass shelf, library, or cwd so later writes route correctly. Unmatched cwd is not a shelf (library=none plus libraries=). Curate: empty means offer once to file existing durable memories as cards (capture stays).
cm_copy
ChatGPTCopy shelf cards+attach on the librarian (from→to). Extra keys need both grants. Never to=unclassified. See Skill REFERENCE.
cm_delete
ChatGPTDelete leftover shelf {id}, or card {file,shelf} (optional heading= for one ##). Default key. Not account delete. See Skill REFERENCE.
cm_doctor
ChatGPTDistinguish missing CLI, sandbox, librarian down, and token failure. Does not write memory cards.
cm_done
ChatGPTFile a session-unit card on a named shelf. This does not close ChatGPT or the MCP session. summary= is required and must state the key points of this unit, not a placeholder. Pass attach= from keep. Skip if the user said not to remember.
cm_health
ChatGPTCheck that the CentricMem librarian is reachable.
cm_import
ChatGPTDaily cards: items= (or package.items). A bundle that is {items:[...]} with no version is that same package ingest. ImportBundle is {version:1, lessons?, imported?, decisions?, sessions?, research?} — not a card list. skipExisting skips a dest slug (or mapped external_id) instead of writing slug-2.md. One commit max 50 cards / 50 attachments. Each item needs title (summary) and body (key points). Stage locally, cm_keep {card:false}, then items with attach pointers. Do not send a zip through MCP. dryRun previews the same skip/paths as apply.
cm_index
ChatGPTRebuild FTS when the index may be dirty or after bulk/local-junction sync. Host cm_import already indexes. scanned = candidates, indexed = rehashed this pass, skipped = walked but not FTS. With no shelf= and a * / owner key, rebuilds every granted shelf (same as all=true). all=true is ignored when the key is pinned to one shelf.
cm_keep
ChatGPTStore an original in R2 (prefer contentBase64 for binary). Never path= or secrets. Keep stub ≠ card — follow with cm_note. card=false for later cm_import. See Skill REFERENCE.
cm_library
ChatGPTOmit id to list shelves this key can see ({ok, libraries:[{id, displayName}]}). Default lists the catalog including share:; extra keys list grants only. With id, mint a named shelf (or rename the display label of an existing id). Extra keys can list; they cannot mint. Never id=unclassified. New ids past the named-shelf cap (Lite/Education 1, Pro 10, Ultra 50, Lifetime 1 20, Lifetime 2 100) return 403 SHELF_LIMIT.
cm_log_decision
ChatGPTWrite an architecture / host decision. title is the summary; decision/context/consequences are the key points. refs is a string: 1, 0001, #0001, or a comma list. File this turn when the choice is durable.
cm_move
ChatGPTMove selected Markdown card paths between named shelves. files= whole paths only (not lessons.md / #heading). Default key. Never to=unclassified. See Skill REFERENCE.
cm_note
ChatGPTWrite durable knowledge. title is the summary; body is the key points later agents cm_show. Title-only is not a card. Same title in lessons.md is an error — pick a new title, or cm_delete heading= then rewrite. File as soon as Non-Micro work exists; never library=unclassified.
cm_ops
ChatGPTHost-specific operational detail, served on request: how each agent installs and refreshes this Skill, the failure modes worth knowing, the OAuth callback shapes, and how the optional hooks layer. Read it when a host-specific question blocks you - it is served here instead of shipping in every Skill copy.
cm_rename
ChatGPTRename card title {file,shelf,title}; optional heading= for multi-## files. Default key. See Skill REFERENCE.
cm_search
ChatGPTFTS search (q, not query), or list cards when q is omitted and shelf= is set (browse default 50). Pass limit= to raise. tags/type/status/filter/shelf. See Skill REFERENCE.
cm_show
ChatGPTPrint the Markdown card. Originals are human downloads, not agent context. Extra keys and * keys must pass shelf= / library= (or project=); omitting it returns Pick a shelf.