skills/hmem-new-error/SKILL.md
Create a new error/bug entry (E-entry) in hmem. Use this skill whenever: the user wants to log a bug, document an error, file a bug report, track a problem ("Bug loggen", "Fehler eintragen", "E-Entry anlegen", "log this error", "track this bug", "document this problem", "in hmem festhalten als Fehler"); OR you are about to call write_memory with prefix="E"; OR a bug or unexpected behavior has been found and should be persisted in long-term memory. Never write E-entries manually without this skill — the format is strict and the auto-scaffold handles structure automatically.
npx skillsauth add Bumblebiber/hmem hmem-new-errorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
E-entries use a fixed 6-section schema (Analysis → Possible fixes → Fixing attempts → Solution → Cause → Key Learnings). The server auto-scaffolds all sections — you only need to provide a title and a flat description.
The parser treats every tab-indented line as a structural node. Tabs in the description accidentally create invalid L2 nodes. Write the description as flat text after a blank line:
✅ write_memory(
prefix="E",
content="Short bug title\n\nFlat description of what went wrong. No tabs here.",
tags=["#project", "#area", "#open"],
links=["P00XX"]
)
❌ write_memory(
prefix="E",
content="Short bug title\n\nDescription:\n\tStep 1 caused X\n\tStep 2 failed",
...
)
The ❌ example creates invalid L2 nodes (Step 1 caused X, Step 2 failed) that fail schema validation.
Ask the user (or extract from context):
| Field | Notes |
|-------|-------|
| Title | Short, descriptive. Max ~50 chars. Format: What broke / where |
| Description | What happened, what was observed. Flat text, no tabs. |
| Tags | At least #open + 2–3 topic tags. |
| Links | Which P-entry does this belong to? (P00XX) |
write_memory(
prefix="E",
content="<title>\n\n<flat description>",
tags=["#open", "#tag1", "#tag2"],
links=["P00XX"]
)
The server auto-creates:
The write response shows the created ID (e.g. E0149) and a #open tag.
Use append_memory to add detail to the sections you can already fill:
append_memory(id="E00XX.1", content="Root cause hypothesis: ...") # Analysis
append_memory(id="E00XX.2", content="Try X first, then Y") # Possible fixes
Leave empty sections alone — Haiku fills them at the next checkpoint, or you fill them as debugging progresses.
update_memory(id="E00XX", content="<title> #solved", tags=["#solved", "#tag1", "#tag2"])
append_memory(id="E00XX.4", content="Final fix: ...") # Solution
append_memory(id="E00XX.5", content="Root cause: ...") # Cause
append_memory(id="E00XX.6", content="Key learning: ...") # Key Learnings
The Key Learnings section auto-creates an L-entry when updated (reaction rule in hmem.config.json).
| Mistake | Fix |
|---------|-----|
| Tab-indented body text | Write flat text after the blank line — no tabs |
| Section names as L2 nodes | Don't write \tAnalysis\n\t\tdetail — auto-scaffold does this |
| Forgetting #open tag | Always include #open — it's how bugs are tracked |
| Too long title | Keep title under 50 chars; detail goes in the body |
tools
Update flow for its-over-9k (hmem). Runs `npm update -g`, syncs skills, applies migrations, verifies hooks, shows the changelog. Use when the user asks to update/upgrade hmem, o9k, o9k-mcp, or its-over-9k (any language), or when the startup version-check flags a new release. Runs the npm update itself — don't assume it's already done.
development
Mandatory entry point for every Cortex session — invoke at conversation start, after /clear, and after any load_project call. All stable context (H-entries, projects, device, sync) is pre-injected by the hook — no read_memory(mode='essentials') needed. Surfaces pending git work, Next Steps + open T-tasks, and runs the O-entry routing check.
tools
Curate an .hmem file (your own or foreign) — mark obsolete/irrelevant, fix titles, consolidate duplicates, repair broken links. **Requires the `hmem-curate` MCP server** (skill prompts the user to enable it on entry). Use whenever the user says 'aufräumen', 'memory aufräumen', 'Speicher aufräumen', 'hmem aufräumen', 'clean up memory', 'tidy up hmem', 'curate memory', 'consolidate duplicates', 'merge duplicate entries', 'fix broken links', 'kümmer dich um die Memory', or invokes /o9k-curate. Also trigger when `memory_health()` flags BLOCKER/WARNING issues, when a P-entry's load_project output exceeds 4k tokens (session-start noise check defers to this skill), or before any batch cleanup of L, E, D, P entries. Skipping this skill and editing memory directly bypasses health checks, severity triage, and obsolete-chain integrity — never curate without it.
testing
Add a new rule and place it correctly — decide between a cross-project R-entry and a project-specific subnode under the active project's Rules section. Use whenever the user says 'neue Regel', 'Regel hinzufügen', 'new rule', 'add a rule', or invokes /o9k-new-rule. Critical safeguard: project-specific rules placed as R-entries pollute the session-start Rules listing across every project — get the scope right BEFORE writing.