Problem and Background
Often TILs pile up but knowledge does not. A TIL is essentially a record of "what happened that day in that project," so it is strongly bound to its context. Read it again a month later and the context of the time has vanished, making it unusable.
/til-to-knowledge is a command that bridges this gap. It takes a day's worth of TIL as input, derives the general-purpose CS/web concepts worth studying further within it, and writes each concept as a self-contained learning document recorded into two systems.
How It Works
- Input —
wiki/todayILearned/{date}.mdin the Obsidian AgentMemory vault. Omit the date to use the latest TIL. - Extraction — Derive derivative learning topics from the TIL. It asks not "I fixed this bug today" but "what is the general principle behind this bug."
- Dual recording — Convert the same knowledge into two formats and write both.
- Vault
wiki/cs/{domain}/— a learning document structured as one-line definition / why it's needed / core concepts / diagnostic questions / prescription. Back-linked from the TIL note via a wikilink. - Blog
content/knowledge/{category}/— a public-facing document with a Zod frontmatter schema. This site's Knowledge section is exactly this output.
- Vault
Because the two systems have different formats and classification schemes, this is not a copy but a conversion. The vault document has no frontmatter, and the blog document carries the invariant directory category === frontmatter category.
The Most Important Rule: Confidentiality Removal
A TIL contains the names, paths, and figures of company projects as-is. Since this command's output is intended to be public, the TIL is used only as input for concept extraction, and the result is rewritten in a textbook-like, general-purpose way. From the result alone, it should be impossible to tell which company or which project it came from. Project anecdotes and figures are not quoted; where necessary, they are replaced with anonymous, generic examples.
Another rule is no stubs. "TODO documents to fill in later" are not created. An empty shell document becomes a broken promise in the knowledge graph, and in the end no one fills it.
Position in the Pipeline
The session records accumulated by /agent-memory-log and the daily TILs are the input to this command, and the knowledge documents produced here become the basis for blog posts. In [record → knowledge → writing], this is the middle stage — the step that promotes context-dependent records into context-independent knowledge.
What I Learned
The bottleneck of knowledge management is not collection but conversion. If records pile up but knowledge does not, it's because there is no step that rewrites records into general-purpose concepts. Doing that conversion by hand every time is unsustainable, so I baked the rules (confidentiality removal, no stubs, classification invariant) into the command to automate it.