release-notes
Rewrite a moraine GitHub release body in the house format — one-sentence pitch, install block, usage-focused "what's new"…
End-to-end smoke check of the moraine MCP server. Exercises the public retrieval workflow against a live moraine stack and prints a PASS/FAIL matrix.
$ npx -y skills add eric-tramel/moraine --skill agent-smoke-e2e --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/agent-smoke-e2eContext preview
The summary Claude sees to decide when to auto-load this skill.
End-to-end smoke check of the moraine MCP server. Exercises the public retrieval workflow against a live moraine stack and prints a PASS/FAIL matrix.
name: agent-smoke-e2e description: End-to-end smoke check of the moraine MCP server. Exercises the public retrieval workflow against a live moraine stack and prints a PASS/FAIL matrix.
You are running an end-to-end smoke test of the moraine MCP server.
Your sole job is to call the public MCP retrieval workflow, validate that responses are shaped as expected, and emit a final pass/fail matrix. Do not do anything else: no exploration, no reading files, no code changes. Treat this like a test runner with terse output and clear pass/fail signals.
Run each check below in order. For each check, call the tool with the arguments listed, inspect the response, then record PASS or FAIL with a one-line reason on FAIL.
Call `mcp__moraine__search_sessions` with:
{ "query": "moraine", "n_hits": 5 }PASS if the response is an object with:
If the call instead returns the handled MCP tool error `internal_error` with `details.reason: "read_model_refresh"` and `details.retryable: true`, retry once. If the retry returns the same handled error, record `PASS active ingest is publishing`; this is the documented freshness contract, not an MCP/RPC failure.
If `data.results[0]` exists, capture:
If there are no results, leave the three sample IDs as `null`.
Call `mcp__moraine__list_sessions` with:
{
"start_datetime": "1970-01-01T00:00:00Z",
"end_datetime": "2100-01-01T00:00:00Z",
"limit": 5
}PASS if the response is an object with:
If `data.sessions[0]` exists, capture:
If there are no listed sessions, leave `listed_session_id` as `null`.
Call `mcp__moraine__file_attention` with:
{ "path": "Cargo.toml", "scope": "all", "granularity": "events", "limit": 5 }PASS if the response is an object with:
If `data.events[0]` exists, capture:
If there are no events, leave the three file-attention IDs as `null`.
If `sample_event_id` is set, call `mcp__moraine__open` with:
{ "id": "<sample_event_id>" }PASS if the response is an object with `tool: "open"`, the same `request.id`, and `data.kind: "event"`.
If `sample_event_id` is null, record `SKIP no search result`.
If `sample_turn_id` is set, call `mcp__moraine__open` with:
{ "id": "<sample_turn_id>" }PASS if the response is an object with `tool: "open"`, the same `request.id`, and `data.kind: "turn"`.
If `sample_turn_id` is null, record `SKIP no search result`.
If `sample_session_id` is set, call `mcp__moraine__open` with:
{ "id": "<sample_session_id>" }PASS if the response is an object with `tool: "open"`, the same `request.id`, and `data.kind: "session"`.
If `sample_session_id` is null, call `mcp__moraine__open` with this valid but nonexistent typed session ID:
{ "id": "session:c21va2Utbm9uZXhpc3RlbnQtc2Vzc2lvbg" }PASS if the tool returns the handled MCP tool error (`isError: true`) with `error.code: "not_found"`. Some agent harnesses surface only the concise `open failed (not_found): session not found` message; accept that equivalent rendering.
If `listed_session_id` is set, call `mcp__moraine__open` with:
{ "id": "<listed_session_id>" }PASS if the response is an object with `tool: "open"`, the same `request.id`, and `data.kind: "session"`.
If `listed_session_id` is null, record `SKIP no listed session`.
If `file_attention_event_id` is set, call `mcp__moraine__open` with:
{ "id": "<file_attention_event_id>" }PASS if the response is an object with `tool: "open"`, the same `request.id`, and `data.kind: "event"`.
If `file_attention_turn_id` is set, call `mcp__moraine__open` with:
{ "id": "<file_attention_turn_id>" }PASS if the response is an object with `tool: "open"`, the same `request.id`, and `data.kind: "turn"`.
If `file_attention_session_id` is set, call `mcp__moraine__open` with:
{ "id": "<file_attention_session_id>" }PASS if the response is an object with `tool: "open"`, the same `request.id`, and `data.kind: "session"`.
If there are no file-attention IDs, record `SKIP no file_attention event`.
error response, or tool not found). The handled `read_model_refresh` and expected nonexistent-session `not_found` cases above are exceptions.
Moraine is a local trace stack for agent work. It indexes sessions from agent harnesses such as Codex, Claude Code, Qwen Code, Kiro CLI, Kimi CLI, NAC, OpenCode, Hermes, Pi Coding Agent, and Prime Agent into ClickHouse, serves a monitor UI, and exposes MCP
Rewrite a moraine GitHub release body in the house format — one-sentence pitch, install block, usage-focused "what's new"…
Help prepare and, only with explicit user approval, file a sanitized Moraine bug report for reproducible defects in Moraine…
Use Moraine realtime session data to inspect active agent work across harnesses when the user asks what is happening now or what…
Use Moraine MCP tools to recover prior agent-session context when the user refers to earlier work, decisions, failures, branches,…
Review a PR through the CodeReviewCompleteness persona. Use when asked to check whether a PR fully addresses the objectives it…
Review a PR through the CodeReviewCorrectness persona. Use when asked to check whether the implementation does the job correctly,…