| name | memory-propose-confirm |
| description | This skill should be used by the kon orchestrator when saving memory — from |
Memory Propose Confirm Flow
Owner: orchestrator
Consumers: pipeline commands that end with retro (see skills/session-retro) plus mid-session propose from /kon:team, /kon:quick, /kon:debug.
Core principles (always): follow skills/core-principles — propose only evidence-backed entries; ask before saving ambiguous lessons.
Saving is propose + retro only (human confirm each write). Browse stored entries with cat on the two MEMORY.md indexes.
Storage paths
| Scope | Directory | Index |
|---|
| public | ~/.kon/public/memory/ | MEMORY.md |
| repo | ~/.kon/projects/<repo-name>/memory/ | MEMORY.md |
Ensure dirs exist before write:
python3 $KON_ROOT/hooks/_kon_paths.py public-memory
python3 $KON_ROOT/hooks/_kon_paths.py project-memory
Trigger: agent ## Memory propose
When 📝 Mio or 🎶 Yui output contains ## Memory propose (outside code fences — see fence rule below),
run confirm flow before the next pipeline step.
Required fields: name / slug / description / body / type / rationale.
Missing any → skip with one line: "Memory propose detected but format incomplete — skipped."
Confirm flow
- Format check (agent propose) or build candidate (session retro).
- Show both indexes — print paths to public and repo
MEMORY.md if they exist.
- Print summary — type, name, description, rationale; suggest scope:
public — user prefs, cross-repo habits, language, feedback
repo — this repo's paths, tooling, local conventions
User may override.
- Ask user —
Save to public / Save to repo / Edit / Skip.
- On Save or Edit → write entry (step below).
- On Skip → continue main flow, write nothing.
Write entry
On confirmed save:
- Resolve target dir from scope (
public or repo).
- If
<slug>.md already exists → ask: Overwrite / Rename slug / Cancel.
- Write
<slug>.md:
---
name: <name>
description: <description>
type: <user|feedback|project|reference>
---
<body>
- Append to that scope's
MEMORY.md (skip if an identical index line already present):
- [<name>](<slug>.md) — <description>
- Print:
Saved [public|repo] <name> → <path>.
Rollback on failure: if index append fails after entry write, remove the new entry file and report error.
Fence-tracking rule (agent propose only)
Only detect ## Memory propose outside code fences.
Track triple-backtick count from output start; inside a fence (odd count), ignore the heading.
Memory types
| Type | Typical scope | When to use |
|---|
user | public | Personal preferences, language, identity |
project | repo (sometimes public) | Repo conventions, tool choices, patterns |
feedback | public | Process feedback ("reviews too long") |
reference | either | URLs, docs, specs |
Relationship to retro
Two save paths only (both require human confirm):
| When | Trigger |
|---|
| Mid-session | Mio/Yui ## Memory propose → this skill |
| End of pipeline | Session retro (after /kon:summarize) → this skill |
Do not re-propose entries the user already saved this session.
Automatic retro at session close is the primary catch-all; propose handles explicit mid-session signals.