一键导入
post-mortem
Receives issue reports, deduplicates them, and maintains structured post-mortem notes in the Memex inbox vault
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Receives issue reports, deduplicates them, and maintains structured post-mortem notes in the Memex inbox vault
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Author one loop-harness planning ticket in the format the implement-ticket loop consumes. Use when asked to plan a feature, scope a change, draft a ticket, or turn a described problem into a ticket the loop can run. Writes one ticket file to the configured plans directory.
Run one planning ticket through the loop lifecycle - perceive (ledger + git reconcile), implement tests-first, gate via `loopctl stamp`, self-review, adversarial review, commit, close via `loopctl finish`. Use when asked to implement the next ticket, run the loop, or continue autonomous ticket implementation.
Generate static artwork/illustrations for a repo with Nano Banana Pro (aka "nano banana", Gemini 3 Pro Image) via the bundled generate_art.py — craft a detailed prompt, run the script, view the result, iterate. Use this whenever the user wants to create, generate, or regenerate a visual asset for a project: an architecture diagram, portrait, card/illustration, icon, splash, or any image that lands as a PNG in the repo — even if they don't name the tool or just say "make me an image / a picture of X". Do NOT trigger for application runtime image needs, or for editing source code rather than producing an image file.
Remove a solid background from an image and write a transparent PNG, using the bundled remove_background.py. Use this whenever the user wants to knock out, drop, or make transparent the background of a logo, banner, icon, or other static image asset in a repo, or to trim an asset to its content and pad it. Pairs with generate-art: generate a flat asset, then key its background here. Do NOT trigger for photo cutouts needing subject segmentation, for runtime image processing, or for editing source code rather than an image file.
Teach the user a new codebase, technology, framework, or system by walking through it from high-level architecture down to implementation details using a paginated, layered approach. Use this skill whenever the user wants to understand how something works, needs onboarding onto a new technology, asks you to explain a system end-to-end, or says things like "walk me through", "explain how X works", "I need to learn X", "teach me", or "help me understand". Also use when the user shares documentation and asks to be taught from it.
Write or refactor project documentation — tutorials, how-to guides, reference pages, and explanation articles — using the Diátaxis framework. Enforces strict mode purity (a tutorial is not a how-to is not a reference is not an explanation), Orwell's six rules for clear prose, and a ladder-of-abstraction rhythm where concrete examples open and close each piece. Targets HUMAN readers — not agents — so emphasizes plain, everyday English over jargon. Use whenever the user asks to write, draft, refactor, edit, improve, or polish documentation — phrases like "write a tutorial", "draft a how-to", "turn this into a reference", "document this feature", "rewrite this doc", "improve the README", "add user docs", "document the API", "explain how X works for newcomers", or any task that produces user-facing prose for a software project. Triggers even when the user does not say "Diátaxis" explicitly — any doc-writing or doc-refactoring task gets this lens.
| name | post-mortem |
| description | Receives issue reports, deduplicates them, and maintains structured post-mortem notes in the Memex inbox vault |
| version | 1.1.0 |
| metadata | {"hermes":{"tags":["devops","incident","post-mortem","memex"],"category":"devops"}} |
Activate when another skill or agent reports an error, failure, or operational issue that needs to be recorded. This skill is the single entry point for persisting structured incident records.
memex_*). Do not shell out to curl.Do NOT use the memory search endpoint (memex_recall) for deduplication. Use note search with specific tags (memex_retrieve_notes / memex_find_note) instead.
On first invocation, confirm the inbox vault exists:
memex_get_vault_summary(vault_id="inbox")
If the call fails because the vault does not exist, stop and report an error -- you cannot persist without it.
Create a lowercase, hyphen-separated, short identifier for the issue (e.g. postgres-oom-killed, nomad-api-unreachable, note-migration-failed, github-rate-limited). The slug MUST be stable -- the same underlying problem must always produce the same slug so deduplication works.
Check the KV store for an existing tracker entry:
memex_kv_get(key="app:hermes:post-mortem:processed:{issue-slug}")
first_seen, occurrence_count, and reporters. Increment occurrence_count, update last_seen, merge the new reporter into the list.occurrence_count = 1, first_seen = now, reporters = [reporting skill].Use the native Memex plugin tool to create/upsert the note:
memex_retain(
title="Post-Mortem: {issue-slug}",
author="post-mortem",
description="One-sentence summary of the issue",
tags=["post-mortem", "hermes", ...reporter tags, ...domain tags],
markdown_content=<raw markdown body, see below>,
vault_id="inbox",
note_key="post-mortem:{issue-slug}",
background=True
)
markdown_content takes the raw markdown body — no base64 encoding.
The note content (do NOT include YAML frontmatter -- it is auto-generated):
## Summary
{What happened -- based on the reporting skill's description}
## Cause
{Root cause if the reporter identified one, otherwise "Under investigation"}
## Likely Fix
{What would most likely resolve this, based on the reporter's suggestion}
## Metadata
- **Issue ID:** {issue-slug}
- **First seen:** {ISO timestamp}
- **Last seen:** {ISO timestamp}
- **Occurrences:** {count}
- **Reported by:** {comma-separated list of skill IDs}
- **Status:** {Active if count == 1, Recurring if count > 1}
Write the updated tracker entry to KV:
memex_kv_write(
key="app:hermes:post-mortem:processed:{issue-slug}",
value="{\"first_seen\": \"...\", \"last_seen\": \"...\", \"occurrence_count\": N, \"reporters\": [\"skill-a\", \"skill-b\"]}"
)
Reply to the reporting skill confirming the post-mortem was created or updated, and whether this is a new issue or a recurrence.
When creating post-mortem notes, add domain-specific tags based on which skill reported the issue:
| Reporting Skill | Additional Tags |
|---|---|
cluster-watchdog | cluster, infrastructure |
trader-advisor, trend-scout, market-analyst | trading, finance |
blog-scraper, medium-reader | engineering, agentic |
sorting-hat, insight-linker, or any other skill | system |
For example, if cluster-watchdog reports an issue, the tags array would be: ["post-mortem", "hermes", "cluster-watchdog", "cluster", "infrastructure"].
inbox is missing: reply with an error. Do not attempt to save.memex_retain fails: reply with the error so the reporting skill knows the report was not persisted.note_key when calling memex_retain to enable upsert behavior. Without it, duplicate notes will be created.app:hermes:post-mortem: -- do not use the old app:openfang:post-mortem: prefix.