brief
SkillDev toolsSession bootstrap, loads shared memories and team standards from the Mori server. Use at session start, or after a context compaction with --post-compact.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the brief skill
What this skill tells your AI
The instructions your AI receives, as published by fjwood69/mori in skills/brief/SKILL.md and read by ahel’s review.
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.
Argument Parsing
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. Triggered automatically by the MoriSessionStarthook whensource == "compact"— Claude Code re-firesSessionStartafter compaction with that source field, which is the only supported mechanism for injecting context at that seam. Can also be run manually.
If no arguments: run the standard unscoped brief.
Marker file
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"
Execution
1. Resolve project (if --auto or --project)
If --auto:
- Check for
.mori-projectfile — walk up from CWD to filesystem root; if found, use its text content (stripped, lowercased) - Else check
MORI_PROJECTenvironment variable - Else run
git rev-parse --show-toplevel 2>/dev/nulland usebasenameof the result (lowercased) - If no project detected: fall back to unscoped brief and note "no project detected, loading unscoped"
If --project <name>: use that name directly.
2. Call the MCP tool
Standard brief (default):
- With project: call
mori-briefwithproject=<name> - Without project: call
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.
- Read the marker
${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.mori-last-brief. If it exists and is non-empty, use its contents assince. - Else derive session start (best-effort): the start time of the current session
transcript
.jsonl(e.g. the file's first-event timestamp, or its creation time). - Else omit
sinceand let the server default window (MORI_POST_COMPACT_WINDOW, default6h) 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.
3. Check pending messages
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:
- task / question — prominent; include a ready-made reply command:
- task →
mori-msg_send(to="<from_host>", type="ack", reply_to="<id>", body="acknowledged") - question →
mori-msg_send(to="<from_host>", type="reply", reply_to="<id>", body="...")
- task →
- decision / broadcast — awareness items only (lower prominence)
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.
4. Stamp the marker
Write the current UTC time to the marker file (see Marker file above). Do this in both modes, after the tool calls.
5. Report
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.
Signals
- GitHub stars
- 28
- Forks
- 5
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
brief-fjwood69- Source
- github.com/fjwood69/mori