skills/crosmos/SKILL.md
Use this tool to recall and store information about the user, their work, preferences, and past conversations. This tool should be used to understand context before answering.
npx skillsauth add crosmos-app/crosmos crosmosInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Crosmos is persistent memory infrastructure for AI agents, built on a Monotonic Temporal Knowledge Graph (MTKG). Use Crosmos whenever the assistant needs:
If the query plausibly depends on the user's past — search memory first. Memory is the default source of context, not an optional step.
Crosmos is the primary source of user context.
Always search memory before using general-purpose tools (such as documentation or context tools).
Only use other tools if memory search does not return useful results.
Search memory before answering if there is any chance the query could depend on past context.
This includes:
When unsure, always search memory first.
Do not wait for explicit phrases like "what did I" — search even for implicit queries.
When in doubt, search first.
crosmos-memory_add_memoryStore information into the knowledge graph. The LLM extraction pipeline handles entity and relationship extraction automatically.
When: User shares facts, preferences, experiences, or conversation context.
Single-source ingestion via /api/v1/sources:
{
"space_id": "2ada2fa0-206d-43cc-8a75-7524dd8ddfe2",
"sources": [
{"content": "User prefers dark mode and uses Neovim as their primary editor"}
]
}
Multi-turn conversations use a different endpoint, /api/v1/conversations, which handles segmentation and lookback automatically:
{
"space_id": "2ec40aa3-c5c3-4026-8379-3191d95f9ece",
"messages": [
{"role": "user", "content": "I just got back from Tokyo"},
{"role": "assistant", "content": "How was it?"},
{"role": "user", "content": "Amazing, I visited Shibuya and ate at Ichiran ramen"}
],
"session_id": "tokyo-trip-2024"
}
crosmos-memory_search_memoriesRetrieve relevant memories using hybrid search (semantic + keyword + graph).
When: User asks about themselves, past preferences, or anything requiring memory context.
{
"query": "What editor does the user prefer?",
"space_id": "019dc652-2714-76d3-ab4b-1b0d077019b5"
}
Optional parameters:
limit (1-50, default 10): Number of resultsrerank (boolean, default true): Cross-encoder reranking for precision. Disable for ~500ms faster responses.graph (boolean, default true): Include graph traversal signal. Disable for keyword+semantic only.diversify (boolean, default false): MMR diversity filter for exploratory or summarization queries. Returns diverse memories instead of relevance-clustered ones.recency_bias (float 0.0-1.0, optional): Override recency weighting. 0.0 disables recency boost; higher values favor recent memories. Useful for "latest"/"most recent" queries.include_source (boolean, default true): Include original source text in results.crosmos-memory_list_spacesList all memory spaces the user has access to.
{}
crosmos-memory_health_checkVerify the API is operational.
{}
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/v1/sources | POST | Ingest raw content (text, markdown). Returns job_id for async processing. |
| /api/v1/conversations | POST | Ingest multi-turn conversations with auto-segmentation and lookback. Returns job_id. |
| /api/v1/jobs/{job_id} | GET | Poll ingestion job status. |
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/v1/search | POST | Hybrid retrieval (semantic + keyword + graph). Returns scored candidates with total and took_ms. |
| /api/v1/entities | GET | List/search entities with edge counts. |
| /api/v1/entities/{id} | GET | Entity detail with recent memories. |
| /api/v1/graph | GET | Graph viewport — nodes + edges for visualization. |
| /api/v1/graph/stats | GET | Entity type distribution, top relations, totals. |
| Endpoint | Method | Purpose |
|----------|--------|---------|
| /api/v1/spaces | POST | Create memory space |
| /api/v1/spaces | GET | List all spaces |
| /api/v1/spaces/{id} | GET | Get space details |
| /api/v1/spaces/{id} | DELETE | Delete space and all contents |
| /api/v1/memories?space_id=X | GET | List memories in a space |
| /api/v1/memories/{id} | GET | Get memory by ID |
| /api/v1/memories/{id} | DELETE | Soft-delete a memory |
1. Receive user message
2. Search memories for relevant context → search_memories
3. Generate response using retrieved context
4. If new facts emerged → add_memory (ingest conversation turn)
User: "I work at Anthropic on Claude safety"
Agent: add_memory → store the fact
Agent: "Got it, I'll remember you work at Anthropic."
User: "What editor do I use?"
Agent: search_memories → finds "User prefers Neovim"
Agent: "You prefer Neovim as your primary editor."
User: "I switched from VS Code to Neovim"
Agent: add_memory → appends a new memory + edge for the Neovim state.
The old VS Code memory and edge remain in the graph;
retrieval surfaces the most recent state via valid_from /
event_time ordering. Nothing is mutated or deleted.
Agent: "Updated! You now use Neovim."
Note on valid_from: it marks when the asserted fact about a relation
became true. For ongoing relations, leave null. For ended relations
(left, quit, fired, moved from), set to the transition date.
{
"query": "what editor does the user prefer",
"candidates": [
{
"memory_id": "02beaa7a-4961-45ef-a5d9-b3904aa33204",
"content": "User prefers dark mode in all editors and uses Neovim as primary editor",
"memory_type": "viewpoint",
"score": 0.95,
"source": "I always use Neovim and dark mode in every editor.",
"created_at": "2024-03-15T10:30:00Z",
"recorded_at": "2024-03-15T10:30:00Z",
"event_time": null
}
],
"total": 5,
"took_ms": 120.5
}
The source field contains the raw input the memory was extracted from (omitted when include_source: false).
Do not wait for explicit phrases like "what did I" — search even for implicit queries.
When in doubt, search first.
status: "completed" before searchinggraph: false on search if you only need keyword+semantic for faster resultsforgotten_at set, excluded from retrieval but preserved in the graphtools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.