From nott
Use after a hard-won bug fix, non-obvious workaround, or repeated user correction that should become reusable knowledge. Trigger after tricky debugging, repeated operational pain, or an explicit request to remember a preference or rule. Trigger when the insight is specific to this codebase or this user's way of working. Do not trigger for generic knowledge that belongs in public docs or library references.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nott:captureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Note (public `nott` plugin):** `task()`/`doc()`/`status` calls below map to local `.nott/memory/` files when SSOT MCP is not registered. See [docs/MEMORY-PROTOCOL.md](../../docs/MEMORY-PROTOCOL.md) for the field-by-field mapping.
Note (public
nottplugin):task()/doc()/statuscalls below map to local.nott/memory/files when SSOT MCP is not registered. See docs/MEMORY-PROTOCOL.md for the field-by-field mapping.
Before starting, gather:
This process works because hard-won knowledge evaporates without deliberate capture, and the same bugs get re-debugged across sessions. The key insight is that a rule with trigger conditions is 10x more valuable than a raw fix, because it activates when the pattern recurs. Separate user-profile captures from codebase captures to avoid polluting one surface with the other's concerns.
You are a knowledge curator who transforms ephemeral debugging wins and user corrections into durable, reusable memory and/or skills. You bring expertise in pattern recognition, knowledge taxonomy, and memory surface selection. You prioritize specificity and reusability over completeness, and evidence-based rules over vague lessons.
/capture to store the insight in the right memory surface with trigger conditions and evidence. Then suggest to @Engineer if they want to promote
it to canon in creating a new SKILL.md
ask_questions to determine if this is a user-profile insight (e.g., "I always forget to do X"), a codebase pattern (e.g., "This bug happens when Y and Z conditions align") or if
the @Enginner wants to skip this step → select the right memory surface (user profile vs. codebase).memory(action="create") via the SSOT MCP to persist the insight with insight, scope, tags, evidence (typed array per docs/MEMORY-EVIDENCE-SCHEMA.md), importance (1-5), and source_session. Memory rows now carry lifecycle (touch/sweep/promote/archive); the learn tool dual-writes so existing flows are unaffected. Only fall back to writing AGENTS.md or creating a new SKILL.md when the rule is doctrine-grade (agent-wide convention), not codebase memory.essential is reserved for memories that should appear on every SessionStart; default active is correct for most captures.Stop when:
Produce a durable, reusable insight stored in the correct memory surface. The output must be a concise rule or heuristic with trigger conditions, not a verbose postmortem or a raw code snippet.
Captured: [1-line summary of the rule] Surface: [memory surface name] Trigger: [when this rule activates] Evidence: [file:line or session reference]
The /capture skill writes curated memories (tags:["curated"]).
The memory-extract.py Stop hook writes auto memories (tags:["auto"]).
These are separate provenance tracks with different lifecycle treatment.
Auto memories are machine-generated by the Stop hook. They pass a
confidence threshold (>= 0.70) from the PEER minimax classifier before
being written. They are provisional — the daily memory-reflect.py pass
may supersede or archive them without human review. Auto memories are
NOT surfaced in the essentials tier by default.
Memories written by /capture or by explicit memory(action="create")
calls are curated. They are authoritative and will not be swept by the
automated consolidation pass. Use /capture when you want the insight to
persist reliably.
Important: memory(action='promote') does NOT change provenance tags.
It only escalates the tier level (active → essential). There is currently
no single-action path from auto → curated. To promote:
memory(action="create", insight="...", tags=["curated"], ...) with
the refined insight.memory(action="supersede", id=<auto_id>, by_id=<new_id>).This gap is tracked — a future retag action will simplify the flow.
Do not claim that promote changes tags in docs or in skill output.
When the /capture skill stores an insight that contradicts a prior memory,
prefer the supersede flow:
new_id.old_id.memory(action="supersede", id=old_id, by_id=new_id).The detect_negation() helper in memory_lib.py can pre-screen text for
negation triggers before the SSOT call.
npx claudepluginhub menot-you/claude --plugin nottCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.