Distil accumulated experience records (experiences.jsonl) into updated domain knowledge summaries (knowledge.md) for any chip-design domain. Run after every 10 orchestrator sessions, or on demand when a domain has collected new issue/fix patterns.
/chip-design-infrastructure:memory-keeper [--domain <name>] [--all] [--min-records <n>]
--domain <name> — distil a single domain (e.g. synthesis, sta, pd)--all — distil every domain that has an experiences.jsonl with enough records--min-records <n> — minimum record count to proceed (default: 5); skip domains below thresholdIf neither --domain nor --all is given, prompt the user to choose.
Orchestrators write one JSON record to memory/<domain>/experiences.jsonl after every run.
Over time those records accumulate issue descriptions, applied fixes, metric ranges, and
tool-flag observations. This skill reads that evidence and merges the new learnings into
— the Tier-2 summary that every orchestrator reads at session
start. Without periodic distillation, knowledge.md drifts stale while the evidence log grows.
memory/<domain>/knowledge.mdValid domain names match the subdirectories under memory/:
| Domain | JSONL path |
|---|---|
architecture | memory/architecture/experiences.jsonl |
compiler | memory/compiler/experiences.jsonl |
dft | memory/dft/experiences.jsonl |
firmware | memory/firmware/experiences.jsonl |
formal | memory/formal/experiences.jsonl |
fpga | memory/fpga/experiences.jsonl |
hls | memory/hls/experiences.jsonl |
pd | memory/pd/experiences.jsonl |
rtl-design | memory/rtl-design/experiences.jsonl |
soc | memory/soc/experiences.jsonl |
sta | memory/sta/experiences.jsonl |
synthesis | memory/synthesis/experiences.jsonl |
verification | memory/verification/experiences.jsonl |
memory/<domain>/experiences.jsonl (one JSON object per line).--min-records (default 5), print a skip notice and
stop — not enough signal to distil.issues_encountered and fixes_applied stringsnotes and fixes_applied for explicit flag/command patterns
(lines containing -, --, or backtick-quoted commands)key_metrics, collect the list of values
across all records; compute min, max, median, and the most recent valuerecords_read: total valid JSONL records parsed (target ≥ min-records threshold)records_skipped: malformed lines ignored (target: 0)signoff_rate: fraction of records where signoff_achieved: true (informational)Structured summary object (in-memory) passed to distil_knowledge:
{
"domain": "<domain>",
"record_count": "<n>",
"date_range": ["<oldest ISO-8601>", "<newest ISO-8601>"],
"signoff_rate": "<fraction>",
"issue_fix_pairs": [{"issue": "...", "fix": "...", "count": "<n>"}],
"tool_flag_candidates": ["<flag or command fragment>"],
"metric_ranges": {
"<metric_field>": {"min": "x", "max": "y", "median": "z", "latest": "w"}
},
"free_notes": ["<note string>"]
}
memory/<domain>/knowledge.md in full.load_experiences, identify new evidence that is
not already captured in the current knowledge.md:
## Notes section with a distillation timestamp:
_Last distilled: <ISO-8601 date> from <n> experience records._
Replace any previous such line.memory/<domain>/knowledge.md.| Scenario | Action |
|---|---|
| New issue/fix not in knowledge.md | Add under Known Failure Patterns |
| Existing entry confirmed by ≥ 3 records | Add (confirmed across N runs) annotation |
| Existing entry contradicted by ≥ 3 records | Strike through old text, add corrected entry |
| New tool flag observed in ≥ 2 records | Add under Successful Tool Flags |
| Single-record observation | Add only if signoff_achieved: true and notes are detailed |
new_failure_patterns: new entries added under Known Failure Patterns (target ≥ 1 if new issues exist)new_tool_flags: new entries added under Successful Tool Flags (target ≥ 1 if new flags observed)existing_entries_annotated: count of existing entries updated with confirmation or correction notescontradictions_flagged: entries where new evidence contradicts old — must never be silently overwrittenmemory/<domain>/knowledge.mdDomain: <domain>
Records read: <n>
Date range: <oldest> → <newest>
Signoff rate: <pct>%
New entries: +<k> Known Failure Patterns, +<j> Successful Tool Flags, +<i> PDK Quirks
Annotations: <m> existing entries updated
knowledge.md: memory/<domain>/knowledge.md [updated]
--all was used, print a summary table across all processed domains.domains_processed: count of domains where knowledge.md was updated (target ≥ 1)domains_skipped: count of domains below the min-records threshold (informational)--all: printed summary table across all processed and skipped domainsexperiences.jsonl read; record count ≥ min-records thresholdknowledge.md read without modification during analysisknowledge.md written back to disk# Distil synthesis domain (must have ≥ 5 records)
/chip-design-infrastructure:memory-keeper --domain synthesis
# Distil all domains with ≥ 10 records
/chip-design-infrastructure:memory-keeper --all --min-records 10
# Force distillation even with 3 records (debugging or early feedback)
/chip-design-infrastructure:memory-keeper --domain sta --min-records 3