/memory
Unified read-side memory operations including knowledge graph search, session context loading, decision timeline viewing, and Mermaid graph visualization. Subcommands: search, load, history, viz, status. Complements /ork:remember (write-side). Use when searching past decisions,
$ npx -y skills add yonatangross/orchestkit --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/memory
Context preview
What this command does when you run it.
Unified read-side memory operations including knowledge graph search, session context loading, decision timeline viewing, and Mermaid graph visualization. Subcommands: search, load, history, viz, status. Complements /ork:remember (write-side). Use when searching past decisions,
Command definition
memory.mddescription: "Unified read-side memory operations including knowledge graph search, session context loading, decision timeline viewing, and Mermaid graph visualization. Subcommands: search, load, history, viz, status. Complements /ork:remember (write-side). Use when searching past decisions, loading context, or visualizing the knowledge graph."
argument-hint: "[subcommand] [query]"
model: haiku
effort: low
context: inherit
user-invocable: true
name: memory
allowed-tools: [Read, Grep, Glob, Bash, AskUserQuestion, mcp__memory__search_nodes, mcp__memory__read_graph]
Auto-generated from skills/memory/SKILL.md
Source: https://github.com/yonatangross/orchestkit
Memory - Read & Access Operations
Unified read-side memory skill with subcommands for searching, loading, syncing, history, and visualization.
> **Cross-session read strategy (Opus 5 / CC 2.1.111+):** Opus 5 reads filesystem memory reliably across sessions. When loading context at session start, prefer the layered read order: > 1. `~/.claude/projects/<slug>/memory/MEMORY.md` (durable index — load first, always) > 2. `.claude/chain/state.json` + most recent `NN-*.json` handoff (session continuation) > 3. MCP `mcp__memory__search_nodes` for anything the filesystem index doesn't answer (typed graph traversal) > > Layer 1 is cheap (small index file), Layer 2 is scoped (session-specific), Layer 3 is selective (only when needed). Avoid dumping the full knowledge graph into context — use the index to narrow the search first.
Argument Resolution
SUBCOMMAND = "$ARGUMENTS[0]" # First token: search, load, history, viz, status
QUERY = "$ARGUMENTS[1]" # Second token onward: search query or flags
# $ARGUMENTS is the full string (CC 2.1.59 indexed access)
Usage
/ork:memory search <query> # Search knowledge graph
/ork:memory load # Load context at session start
/ork:memory history # View decision timeline
/ork:memory viz # Visualize knowledge graph
/ork:memory status # Show memory system health
CRITICAL: Use AskUserQuestion When No Subcommand
If invoked without a subcommand, ask the user what they want:
AskUserQuestion(
questions=[{
"question": "What memory operation do you need?",
"header": "Operation",
"options": [
{"label": "search", "description": "Search decisions and patterns in knowledge graph"},
{"label": "load", "description": "Load relevant context for this session"},
{"label": "history", "description": "Decision timeline + knowledge-graph viz (--mermaid)"},
{"label": "status", "description": "Check memory system health"}
],
"multiSelect": false
}]
)Subcommands
Load details: `Read("${CLAUDE_PLUGIN_ROOT}/skills/memory/references/memory-commands.md")` for full usage, flags, output formats, and context-aware result limits for each subcommand.
| Subcommand | Purpose | |------------|---------| | `search` | Search past decisions, patterns, entities. Supports `--category` (maps to metadata.category), `--limit`, `--agent` (scopes by agent_id), `--global` filter flags | | `load` | Auto-load relevant memories at session start. Supports `--project`, `--global` | | `history` | Decision timeline with table, Mermaid, or JSON output. Supports `--since`, `--mermaid` | | `viz` | Render knowledge graph as Mermaid diagram. See also `Read("${CLAUDE_PLUGIN_ROOT}/skills/memory/references/mermaid-patterns.md")` | | `status` | Memory system health check |
Scheduled Sweeps (cron)
Nightly KG staleness report
Cron job in `.github/workflows/memory-staleness.yml` runs nightly at 04:00 UTC. Calls `scripts/staleness_cron.py` to scan ALL memory MCP entities, flag those whose latest observation timestamp is older than 30 days, and write a Markdown report to `docs/reports/memory-staleness-YYYY-MM-DD.md`.
python3 ${CLAUDE_PLUGIN_ROOT}/skills/memory/scripts/staleness_cron.py docs/reports/ \
--threshold-days 30 --limit 50Auto-skip conditions (all exit 0, all WARN-logged):
| Skip reason | Trigger | |-------------|---------| | `yg-mcp-core not importable` | `yg-mcp-core>=0.3.0` not installed (orchestkit is public; yg-mcp-core lives on private `pypi.yonyon.ai` — HQ-only) | | `memory MCP unreachable` | memory MCP server down OR `.mcp.json` doesn't define `memory` |
**Report contents:**
- Total / stale / fresh entity counts
- Top N stale entries sorted by staleness (no-timestamp first, then oldest → newest)
- Each row: name, entityType, age in days, observations count
- Suggested actions per age bucket (>90d review, >180d archive candidate)
**Treats entities with no parsable timestamp as stale** — operator intervention is the right outcome (backfill `last_read` observation OR prune).
Pure helpers (`parse_iso_timestamp`, `latest_observation_timestamp`, `is_stale`, `build_report_payload`, `render_markdown`) live in sibling `staleness_lib.py` for unit-testability.
Mirrors `Yonatan-HQ/hq-ext-plugin#194` (audio_podcast) and orchestkit#1886 (post-synth podcast) + #1887 (memory writeback) pattern. Unblocked by `Yonatan-HQ/core#993` (yg-mcp-core 0.3.0).
Workflow
1. Parse Subcommand
Extract first argument as subcommand
If no subcommand -> AskUserQuestion
Validate subcommand is one of: search, load, history, viz, status
Parse remaining flags
Check for --agent <agent-id> flag → agent_id: "ork:{agent-id}"2. Execute Subcommand
Route to appropriate handler based on subcommand.
3. Report Results
Format output appropriate to the operation.
Rules Quick Reference
| Rule | Impact | What It Covers | |------|--------|----------------| | entity-extraction-patterns (load `${CLAUDE_PLUGIN_ROOT}/skills/memory/rules/entity-extraction-patterns.md`) | HIGH | Entity types, relation types, graph query semantics | | deduplication-strategy (load `${CLAUDE_PLUGIN_ROOT}/skills/memory/rules/deduplication-strategy.md`) | HIGH | Edit-over-Write pattern, anchor-based inse
Read more
description: "Unified read-side memory operations including knowledge graph search, session context loading, decision timeline viewing, and Mermaid graph visualization. Subcommands: search, load, history, viz, status. Complements /ork:remember (write-side). Use when searching past decisions, loading context, or visualizing the knowledge graph." argument-hint: "[subcommand] [query]" model: haiku effort: low context: inherit user-invocable: true name: memory allowed-tools: [Read, Grep, Glob, Bash, AskUserQuestion, mcp__memory__search_nodes, mcp__memory__read_graph]
Auto-generated from skills/memory/SKILL.md
Source: https://github.com/yonatangross/orchestkit
Memory - Read & Access Operations
Unified read-side memory skill with subcommands for searching, loading, syncing, history, and visualization.
> **Cross-session read strategy (Opus 5 / CC 2.1.111+):** Opus 5 reads filesystem memory reliably across sessions. When loading context at session start, prefer the layered read order: > 1. `~/.claude/projects/<slug>/memory/MEMORY.md` (durable index — load first, always) > 2. `.claude/chain/state.json` + most recent `NN-*.json` handoff (session continuation) > 3. MCP `mcp__memory__search_nodes` for anything the filesystem index doesn't answer (typed graph traversal) > > Layer 1 is cheap (small index file), Layer 2 is scoped (session-specific), Layer 3 is selective (only when needed). Avoid dumping the full knowledge graph into context — use the index to narrow the search first.
Argument Resolution
SUBCOMMAND = "$ARGUMENTS[0]" # First token: search, load, history, viz, status QUERY = "$ARGUMENTS[1]" # Second token onward: search query or flags # $ARGUMENTS is the full string (CC 2.1.59 indexed access)
Usage
/ork:memory search <query> # Search knowledge graph /ork:memory load # Load context at session start /ork:memory history # View decision timeline /ork:memory viz # Visualize knowledge graph /ork:memory status # Show memory system health
CRITICAL: Use AskUserQuestion When No Subcommand
If invoked without a subcommand, ask the user what they want:
AskUserQuestion(
questions=[{
"question": "What memory operation do you need?",
"header": "Operation",
"options": [
{"label": "search", "description": "Search decisions and patterns in knowledge graph"},
{"label": "load", "description": "Load relevant context for this session"},
{"label": "history", "description": "Decision timeline + knowledge-graph viz (--mermaid)"},
{"label": "status", "description": "Check memory system health"}
],
"multiSelect": false
}]
)Subcommands
Load details: `Read("${CLAUDE_PLUGIN_ROOT}/skills/memory/references/memory-commands.md")` for full usage, flags, output formats, and context-aware result limits for each subcommand.
| Subcommand | Purpose | |------------|---------| | `search` | Search past decisions, patterns, entities. Supports `--category` (maps to metadata.category), `--limit`, `--agent` (scopes by agent_id), `--global` filter flags | | `load` | Auto-load relevant memories at session start. Supports `--project`, `--global` | | `history` | Decision timeline with table, Mermaid, or JSON output. Supports `--since`, `--mermaid` | | `viz` | Render knowledge graph as Mermaid diagram. See also `Read("${CLAUDE_PLUGIN_ROOT}/skills/memory/references/mermaid-patterns.md")` | | `status` | Memory system health check |
Scheduled Sweeps (cron)
Nightly KG staleness report
Cron job in `.github/workflows/memory-staleness.yml` runs nightly at 04:00 UTC. Calls `scripts/staleness_cron.py` to scan ALL memory MCP entities, flag those whose latest observation timestamp is older than 30 days, and write a Markdown report to `docs/reports/memory-staleness-YYYY-MM-DD.md`.
python3 ${CLAUDE_PLUGIN_ROOT}/skills/memory/scripts/staleness_cron.py docs/reports/ \
--threshold-days 30 --limit 50Auto-skip conditions (all exit 0, all WARN-logged):
| Skip reason | Trigger | |-------------|---------| | `yg-mcp-core not importable` | `yg-mcp-core>=0.3.0` not installed (orchestkit is public; yg-mcp-core lives on private `pypi.yonyon.ai` — HQ-only) | | `memory MCP unreachable` | memory MCP server down OR `.mcp.json` doesn't define `memory` |
**Report contents:**
- Total / stale / fresh entity counts
- Top N stale entries sorted by staleness (no-timestamp first, then oldest → newest)
- Each row: name, entityType, age in days, observations count
- Suggested actions per age bucket (>90d review, >180d archive candidate)
**Treats entities with no parsable timestamp as stale** — operator intervention is the right outcome (backfill `last_read` observation OR prune).
Pure helpers (`parse_iso_timestamp`, `latest_observation_timestamp`, `is_stale`, `build_report_payload`, `render_markdown`) live in sibling `staleness_lib.py` for unit-testability.
Mirrors `Yonatan-HQ/hq-ext-plugin#194` (audio_podcast) and orchestkit#1886 (post-synth podcast) + #1887 (memory writeback) pattern. Unblocked by `Yonatan-HQ/core#993` (yg-mcp-core 0.3.0).
Workflow
1. Parse Subcommand
Extract first argument as subcommand
If no subcommand -> AskUserQuestion
Validate subcommand is one of: search, load, history, viz, status
Parse remaining flags
Check for --agent <agent-id> flag → agent_id: "ork:{agent-id}"2. Execute Subcommand
Route to appropriate handler based on subcommand.
3. Report Results
Format output appropriate to the operation.
Rules Quick Reference
| Rule | Impact | What It Covers | |------|--------|----------------| | entity-extraction-patterns (load `${CLAUDE_PLUGIN_ROOT}/skills/memory/rules/entity-extraction-patterns.md`) | HIGH | Entity types, relation types, graph query semantics | | deduplication-strategy (load `${CLAUDE_PLUGIN_ROOT}/skills/memory/rules/deduplication-strategy.md`) | HIGH | Edit-over-Write pattern, anchor-based inse
The Complete AI Development Toolkit for Claude Code — 114 skills, 37 agents, 212 hooks. Production-ready patterns for full-stack development.
Repo: yonatangross/orchestkit
Other commands on orchestkit.
- /assess
Assesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with
Open command - /audit-activation
Audits OrchestKit sub-agent activation from real spawn telemetry — computes the generic-vs-specialist spawn split, flags dormant agents (never fired), and classifies each as fires/mis-triggered/niche. The agent-side analogue of audit-skills. Use when specialized agents feel
Open command - /auto
Intent-classified router, the front door to OrchestKit and the DEFAULT entry point for any goal-shaped request. Classifies a plain-English goal and routes it to the right specialist skill. Routing is never overhead, so use it even when the target skill seems obvious; skip only
Open command - /brainstorm
Design exploration using parallel agents through a 7-phase process: topic analysis, memory context, divergent ideation (10+ ideas), feasibility filtering, evaluation with devil's advocate scoring (0-10 across 7 dimensions), synthesis of top approaches, and trade-off comparison.
Open command - /ci-debug
Diagnose a failing CI run against an 11-pattern playbook. Classifies the failure, cites the relevant memory entry, proposes the exact fix command — but NEVER applies without explicit user approval. Use when a specific PR check or GitHub Actions run failed and you want a
Open command - /ci-sentinel
Daily autonomous classifier for failing PRs across your repos. Runs /ci-debug headless against every open PR with red required checks, posts the verdict as a collapsed PR comment, and appends to a per-repo .sentinel/ledger.jsonl. v1 is propose-don't-apply — NEVER auto-pushes a
Open command

