Help us improve
Share bugs, ideas, or general feedback.
From mori
Bootstraps a Claude Code session by loading shared memories and team standards from the Mori server. Invoke at session start or after context compaction with --post-compact.
npx claudepluginhub fjwood69/mori --plugin moriHow this skill is triggered — by the user, by Claude, or both
Slash command
/mori:briefThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**If the Mori server is unreachable** (a tool call returns a connection error, ECONNREFUSED, or timeout), do not show a stack trace. Tell the user the Mori server appears to be down and that a running Mori server is required. Point them to the quickstart at https://github.com/fjwood69/mori#quickstart and suggest checking the server URL in plugin settings. Then stop.
Recalls project context via ctx CLI: loads context packet, reads TASKS.md/DECISIONS.md, lists recent sessions, presents structured readback of last session, active tasks, recent decisions, next steps. For memory questions or session starts.
Initializes Claude Code sessions by migrating legacy harness files to .claude-harness/, creating missing state files like memory rules and config, and preparing GitHub sync.
Loads relevant Pensyve memories at session start for cross-session continuity. Use when switching projects or needing historical context.
Share bugs, ideas, or general feedback.
If the Mori server is unreachable (a tool call returns a connection error, ECONNREFUSED, or timeout), do not show a stack trace. Tell the user the Mori server appears to be down and that a running Mori server is required. Point them to the quickstart at https://github.com/fjwood69/mori#quickstart and suggest checking the server URL in plugin settings. Then stop.
Parse the raw input for:
--project <name>: scope the brief to a specific project--auto: detect project from the current git working directory--post-compact: lightweight delta re-grounding after a context compaction —
surfaces only what changed in shared state since the last brief, not the full base.
Fired automatically by the Mori PostCompact hook; can also be run manually.If no arguments: run the standard unscoped brief.
The brief boundary is tracked in a per-config-dir marker:
${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.mori-last-brief
It holds the UTC ISO-8601 timestamp of the most recent brief. Stamp it (overwrite with the current UTC time) at the end of every brief run, in all modes:
date -u +%Y-%m-%dT%H:%M:%SZ > "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.mori-last-brief"
If --auto:
.mori-project file — walk up from CWD to filesystem root; if found, use its text content (stripped, lowercased)MORI_PROJECT environment variablegit rev-parse --show-toplevel 2>/dev/null and use basename of the result (lowercased)If --project <name>: use that name directly.
Standard brief (default):
mori-brief with project=<name>mori-brief (no params — loads all memories up to cap)Post-compact brief (--post-compact): resolve the since boundary first
(session-aware), then call the delta tool.
${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.mori-last-brief. If it
exists and is non-empty, use its contents as since..jsonl (e.g. the file's first-event timestamp, or its creation time).since and let the server default window (MORI_POST_COMPACT_WINDOW,
default 6h) apply.Then call mori-brief with post_compact=true, plus project=<name> if resolved and
since=<resolved> if found:
mori-brief(post_compact=true, project="<name>", since="<iso-or-omitted>")
The delta lists are capped; if the tool reports "…N more — run a full /brief if you need the rest", relay that pointer rather than auto-running a full brief.
Call mori-msg_recv(unacked=True) (both modes — new messages are part of the delta).
If messages are returned, surface them after the memory summary:
mori-msg_send(to="<from_host>", type="ack", reply_to="<id>", body="acknowledged")mori-msg_send(to="<from_host>", type="reply", reply_to="<id>", body="...")Skip this section silently if no pending messages or if mori-msg_recv fails (daemon may not be running).
On --post-compact, also catch cross-device traffic that arrived during the session:
call mori-nats_sub(replay=true, wait=2) and surface anything new.
Write the current UTC time to the marker file (see Marker file above). Do this in both modes, after the tool calls.
Standard brief: report "Ready" — summarise what was loaded (memory counts, project scope, dream state, pending message count if any). Do not take autonomous actions.
Post-compact brief: report a one-line abbreviated re-grounding summary, e.g. "Re-grounded — N changed, M superseded, K messages". Do not re-dump the full base; the working context is already preserved by the compaction summary.