<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Logseq on Prskavec.Net</title><link>https://www.prskavec.net/tags/logseq/</link><description>Personal site of Ladislav Prskavec — Software Engineer &amp; Site Reliability Engineer in Prague. Writing, conference talks, an OnCall design guide, and the You Build It You Run It podcast.</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>ladislav@prskavec.net (Prskavec.Net)</managingEditor><webMaster>ladislav@prskavec.net (Prskavec.Net)</webMaster><copyright>&amp;copy; {year} Ladislav Prskavec</copyright><lastBuildDate>Thu, 16 Jul 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.prskavec.net/tags/logseq/index.xml" rel="self" type="application/rss+xml"/><item><title>A Knowledge Format Is Not a Knowledge Base</title><link>https://www.prskavec.net/post/a-knowledge-format-is-not-a-knowledge-base/</link><pubDate>Thu, 16 Jul 2026 09:00:00 +0200</pubDate><author>ladislav@prskavec.net (Prskavec.Net)</author><guid>https://www.prskavec.net/post/a-knowledge-format-is-not-a-knowledge-base/</guid><description>Google's Open Knowledge Format standardizes the container, not the relationships and curation that make a knowledge base useful. Existing document formats already cover the authoring layer; a portable knowledge base needs a stronger, syntax-independent model.</description><content:encoded>&lt;p&gt;&lt;img src="https://www.prskavec.net/post/a-knowledge-format-is-not-a-knowledge-base/./featured.png"
alt=""
loading="lazy"
decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing"&gt;Google&amp;rsquo;s Open Knowledge Format&lt;/a&gt;
sounded relevant to me immediately. OKF v0.1 is a directory of Markdown files
with YAML frontmatter, stored in Git and readable by people and agents. That is
close to how I already &lt;a href="https://www.prskavec.net/post/how-i-use-logseq-as-a-personal-knowledge-base/"&gt;use Logseq, Codex, and Claude Code&lt;/a&gt;
with my own knowledge base.&lt;/p&gt;
&lt;p&gt;After reading the specification, I do not think I should adopt it. OKF could be
an export format one day, but it leaves out too much of what makes a knowledge
base useful.&lt;/p&gt;
&lt;p&gt;First, a correction: OKF is not another markup language. It is a small profile
on top of Markdown and YAML. The required surface is deliberately thin: every
concept is a file, its path is its identity, and its frontmatter must contain a
&lt;code&gt;type&lt;/code&gt;. Titles, descriptions, tags, resources, timestamps, indexes, logs, and
citations are optional or recommended.&lt;/p&gt;
&lt;p&gt;That simplicity is attractive. It also standardizes the least difficult part of
a knowledge system.&lt;/p&gt;
&lt;h2 id="backlinks-are-part-of-the-data-model"&gt;Backlinks are part of the data model&lt;/h2&gt;
&lt;p&gt;OKF defines a link from concept A to concept B as a directed, untyped edge. The
meaning, such as &amp;ldquo;depends on&amp;rdquo;, &amp;ldquo;references&amp;rdquo;, or &amp;ldquo;joins with&amp;rdquo;, stays in the
surrounding prose. A consumer may scan the bundle and compute the reverse edge,
but the format does not require it.&lt;/p&gt;
&lt;p&gt;This distinction matters. In Logseq, a backlink is not decoration in a graph
view. When I open B, I can see every page that mentions B, including connections
I did not remember to encode on B itself. The forward link records what the
author of A knew. The backlink shows how the rest of the corpus has accumulated
around B.&lt;/p&gt;
&lt;p&gt;Adding an explicit link from B back to A is not the same thing. It duplicates
the edge and may misstate the relationship: &amp;ldquo;A references B&amp;rdquo; does not imply &amp;ldquo;B
references A&amp;rdquo;. It also creates a synchronization problem when pages move or
relationships change.&lt;/p&gt;
&lt;p&gt;An OKF consumer can reconstruct backlinks. Google&amp;rsquo;s reference visualizer does
this and presents them as &amp;ldquo;Cited by&amp;rdquo;. But another consumer can ignore reverse
links and still conform to the specification. Both tools support the same format
while exposing materially different knowledge bases.&lt;/p&gt;
&lt;h2 id="conformance-does-not-imply-shared-meaning"&gt;Conformance does not imply shared meaning&lt;/h2&gt;
&lt;p&gt;The rest of the interoperability contract is similarly thin. &lt;code&gt;type&lt;/code&gt; is the only
required field, but type names are not registered. Consumers must tolerate
unknown values. Links are untyped. Citations are recommended rather than
required. Broken links are explicitly permitted.&lt;/p&gt;
&lt;p&gt;These are sensible choices for a forgiving file exchange format. They also mean
that two conformant bundles can agree on syntax while disagreeing on nearly all
of the semantics. One producer&amp;rsquo;s &lt;code&gt;Playbook&lt;/code&gt; may not resemble another&amp;rsquo;s. A
consumer can parse both files without knowing how to compare, validate, or use
them.&lt;/p&gt;
&lt;p&gt;That is portability of text. It is not yet portability of knowledge.&lt;/p&gt;
&lt;h2 id="we-already-have-document-formats"&gt;We already have document formats&lt;/h2&gt;
&lt;p&gt;If the problem is how to store rich, readable technical documents in plain text,
we already have mature options.
&lt;a href="https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html"&gt;reStructuredText&lt;/a&gt;
has field lists, citations, hyperlink targets, directives, and
&lt;a href="https://docutils.sourceforge.io/docs/ref/rst/roles.html"&gt;extensible interpreted-text roles&lt;/a&gt;.
AsciiDoc has &lt;a href="https://docs.asciidoctor.org/asciidoc/latest/attributes/document-attributes/"&gt;document attributes&lt;/a&gt;,
&lt;a href="https://docs.asciidoctor.org/asciidoc/latest/macros/inter-document-xref/"&gt;document-to-document cross-references&lt;/a&gt;,
and &lt;a href="https://docs.asciidoctor.org/asciidoc/latest/directives/include/"&gt;includes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Neither format gives every tool Logseq-style backlinks automatically. That is
the point: backlinks are a corpus-level index and navigation contract, not an
inline-markup feature. Putting YAML in front of Markdown does not solve that
layer either.&lt;/p&gt;
&lt;p&gt;Markdown plus YAML is a reasonable transport choice with modest parsing
requirements. But choosing a transport is different from defining a knowledge
architecture. If a team prefers AsciiDoc or reStructuredText, it should not need
to convert its source documents just to participate in a knowledge exchange. A
useful standard could define concepts, identifiers, relationships, provenance,
and lifecycle independently, then provide mappings for several text formats.&lt;/p&gt;
&lt;h2 id="markdown-is-the-least-interesting-part-of-my-knowledge-base"&gt;Markdown is the least interesting part of my knowledge base&lt;/h2&gt;
&lt;p&gt;My setup works because it is selective. Journals are a raw inbox. External
sources are retained locally when needed. Durable pages are synthesized rather
than copied. Claims carry source notes with searchable anchors. A curation log
records what was promoted, skipped, or left for later. Every page edit is
reviewed against its sources instead of trusted because the prose sounds
coherent.&lt;/p&gt;
&lt;p&gt;None of that follows from the file extension.&lt;/p&gt;
&lt;p&gt;A directory can be perfectly conformant with OKF and still be a bad knowledge
base: duplicated notes, stale claims, missing provenance, disconnected pages,
and generated summaries nobody has checked. An agent can parse the corpus, but
parsing is not the same as trusting or navigating it.&lt;/p&gt;
&lt;p&gt;For me, a stronger interchange model would need at least:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;stable concept identifiers that survive file moves&lt;/li&gt;
&lt;li&gt;standardized backlink or reverse-edge behavior&lt;/li&gt;
&lt;li&gt;relationship types that consumers can understand without reading prose&lt;/li&gt;
&lt;li&gt;claim-level provenance, not only an optional citations section&lt;/li&gt;
&lt;li&gt;a way to distinguish raw capture, durable synthesis, and deprecated material&lt;/li&gt;
&lt;li&gt;mappings for existing systems and formats instead of one mandatory source syntax&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not all need to live inside every document. A manifest or generated
graph index may be better than duplicating metadata across files. The important
part is that the behavior belongs to the contract, so each consumer does not
invent it again.&lt;/p&gt;
&lt;h2 id="where-okf-could-still-fit"&gt;Where OKF could still fit&lt;/h2&gt;
&lt;p&gt;OKF may become useful as a lowest-common-denominator export. If an agent or
catalog I want to use accepts OKF, a Logseq plugin could map page properties to
YAML, convert wiki links to Markdown links, and generate a backlink index. My
knowledge base would remain the source of truth.&lt;/p&gt;
&lt;p&gt;I would not build that adapter before there is a consumer worth using. OKF is
still a v0.1 draft, and changing a working knowledge base to satisfy a thin
interchange profile would add maintenance without improving the knowledge.&lt;/p&gt;
&lt;p&gt;The problem is real: agents need portable context, and knowledge should not be
locked inside one vendor&amp;rsquo;s catalog. But a collection of readable files is only
the substrate. A great knowledge base also needs relationships, provenance,
selection, and maintenance. Another file profile does not provide those by
itself.&lt;/p&gt;
&lt;h2 id="sources"&gt;Sources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Google Cloud, &lt;a href="https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing"&gt;&lt;em&gt;Introducing the Open Knowledge Format&lt;/em&gt;&lt;/a&gt; (2026-06-12)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md"&gt;Open Knowledge Format v0.1 draft specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf"&gt;Open Knowledge Format reference implementation and visualizer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docutils, &lt;a href="https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html"&gt;&lt;em&gt;reStructuredText Markup Specification&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docutils, &lt;a href="https://docutils.sourceforge.io/docs/ref/rst/roles.html"&gt;&lt;em&gt;reStructuredText Interpreted Text Roles&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Asciidoctor, &lt;a href="https://docs.asciidoctor.org/asciidoc/latest/attributes/document-attributes/"&gt;&lt;em&gt;Document Attributes&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Asciidoctor, &lt;a href="https://docs.asciidoctor.org/asciidoc/latest/macros/inter-document-xref/"&gt;&lt;em&gt;Document to Document Cross References&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Asciidoctor, &lt;a href="https://docs.asciidoctor.org/asciidoc/latest/directives/include/"&gt;&lt;em&gt;Includes&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title>How I Use Logseq as a Personal Knowledge Base</title><link>https://www.prskavec.net/post/how-i-use-logseq-as-a-personal-knowledge-base/</link><pubDate>Sat, 27 Jun 2026 09:00:00 +0200</pubDate><author>ladislav@prskavec.net (Prskavec.Net)</author><guid>https://www.prskavec.net/post/how-i-use-logseq-as-a-personal-knowledge-base/</guid><description>How I use Logseq journals, local sources, durable pages, and agent-assisted curation to keep a personal knowledge base useful without turning every note into permanent documentation.</description><content:encoded>&lt;p&gt;This setup was inspired by Andrej Karpathy&amp;rsquo;s &lt;a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f"&gt;LLM Wiki&lt;/a&gt;,
but my version is deliberately local and boring: Logseq journals as the inbox,
source files as the archive, and compact pages as the durable layer.&lt;/p&gt;
&lt;p&gt;Google is making a similar argument with &lt;a href="https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing"&gt;Open Knowledge Format&lt;/a&gt;:
&lt;a href="https://spec.commonmark.org/"&gt;Markdown&lt;/a&gt; plus &lt;a href="https://jekyllrb.com/docs/front-matter/"&gt;YAML front matter&lt;/a&gt;
as a shareable knowledge format. I think the format is the easy part.
&lt;a href="https://spec.commonmark.org/"&gt;Markdown&lt;/a&gt;, &lt;a href="https://docutils.sourceforge.io/rst.html"&gt;reStructuredText&lt;/a&gt;,
&lt;a href="https://docs.asciidoctor.org/asciidoc/latest/"&gt;AsciiDoc&lt;/a&gt;, or any plain text
format with metadata can work. For company-wide use, the harder part is the
documentation pipeline: how you ingest sources from different places, keep them
fresh, and assign curators, human or LLM, to maintain the useful layer.&lt;/p&gt;
&lt;p&gt;My Logseq graph is not where every thought becomes permanent. It is where raw
material waits until I decide whether it deserves a second life.&lt;/p&gt;
&lt;p&gt;The split in this repository is blunt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;journals/&lt;/code&gt; is the raw inbox.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sources/&lt;/code&gt; is where bulky external material lives.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pages/&lt;/code&gt; is the durable knowledge layer.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;log.md&lt;/code&gt; is the audit trail of curation work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Day to day, that is not formal. I capture links, screenshots, meeting fragments,
commands, papers, talks, and half-formed notes into Logseq journals. Later, I run
a curation pass and promote only the material I expect to search for again.&lt;/p&gt;
&lt;h2 id="the-flow"&gt;The flow&lt;/h2&gt;
&lt;img src="https://www.prskavec.net/img/mermaid/post-how-i-use-logseq-as-a-personal-knowledge-base-1.png" alt="Diagram (rendered from Mermaid)"&gt;
&lt;h2 id="journals-are-the-inbox"&gt;Journals are the inbox&lt;/h2&gt;
&lt;p&gt;Daily journals are intentionally messy. They contain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;links I may or may not read later&lt;/li&gt;
&lt;li&gt;meeting scraps&lt;/li&gt;
&lt;li&gt;debugging notes&lt;/li&gt;
&lt;li&gt;command fragments&lt;/li&gt;
&lt;li&gt;screenshots&lt;/li&gt;
&lt;li&gt;TODOs&lt;/li&gt;
&lt;li&gt;short observations&lt;/li&gt;
&lt;li&gt;notes for work projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I do not try to make journals beautiful. If I had to polish every note at
capture time, I would capture less.&lt;/p&gt;
&lt;p&gt;The rule is that journals are source material, not the knowledge base.
Most journal bullets should never be promoted. TODO-only items, meeting
logistics, unexplained fragments, and one-off status updates usually stay where
they are.&lt;/p&gt;
&lt;p&gt;What gets promoted is the material with reuse value:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;architecture decisions&lt;/li&gt;
&lt;li&gt;operational patterns&lt;/li&gt;
&lt;li&gt;incident/debugging lessons&lt;/li&gt;
&lt;li&gt;recurring themes&lt;/li&gt;
&lt;li&gt;commands with explanation&lt;/li&gt;
&lt;li&gt;glossary terms&lt;/li&gt;
&lt;li&gt;papers, talks, docs, and articles worth finding again&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="external-sources-need-a-local-copy"&gt;External sources need a local copy&lt;/h2&gt;
&lt;p&gt;Some source material is too large, too valuable, or too likely to disappear
behind a login wall. The graph has a &lt;code&gt;sources/&lt;/code&gt; directory for that.&lt;/p&gt;
&lt;p&gt;For conference talks, I fetch subtitles with &lt;code&gt;yt-dlp&lt;/code&gt; and store &lt;code&gt;.vtt&lt;/code&gt; files under
&lt;code&gt;sources/transcripts/&amp;lt;conference&amp;gt;-&amp;lt;year&amp;gt;/&lt;/code&gt;. Each talk gets a small metadata file
with the URL, title, speakers, runtime, transcript path, and the page that
summarizes it.&lt;/p&gt;
&lt;p&gt;The summary goes into &lt;code&gt;pages/&lt;/code&gt;. The transcript stays in &lt;code&gt;sources/&lt;/code&gt; so future
search can still find an exact phrase, command, or speaker quote that did not
make the summary.&lt;/p&gt;
&lt;p&gt;X.com needs a different path because direct fetching is unreliable from this
workspace. Long posts and threads are exported locally as Markdown into
&lt;code&gt;sources/x-com-posts/&lt;/code&gt;. The stable join key is the numeric status ID. When a
journal has an X link, I grep the exports for that ID and cite the local file.&lt;/p&gt;
&lt;p&gt;Attachments such as screenshots, PDFs, CSVs, and images live in &lt;code&gt;assets/&lt;/code&gt;, using
Logseq&amp;rsquo;s normal local asset links.&lt;/p&gt;
&lt;p&gt;The result is boring in a useful way: a broken website or login wall does not
erase the source trail.&lt;/p&gt;
&lt;h2 id="pages-are-the-knowledge-layer"&gt;Pages are the knowledge layer&lt;/h2&gt;
&lt;p&gt;The durable pages are compact Markdown notes. They are not dumps from journals.
They answer the questions I expect a future reader, including a future AI agent,
to ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is this?&lt;/li&gt;
&lt;li&gt;Why does it matter?&lt;/li&gt;
&lt;li&gt;How does it work?&lt;/li&gt;
&lt;li&gt;What are the gotchas?&lt;/li&gt;
&lt;li&gt;Where did this come from?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The common shape is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;## Summary&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;## Key Ideas&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;## Operational Notes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;## Gotchas&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;## Links&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;## Source Notes&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not every page needs every heading. The format is only there to force the useful
work: make the page searchable, connect it to related pages, and show where the
material came from.&lt;/p&gt;
&lt;p&gt;A recent addition to that shape is claim-level footnotes. &lt;code&gt;## Links&lt;/code&gt; is a fine
roster of further reading, and &lt;code&gt;## Source Notes&lt;/code&gt; records which journal a page
grew from, but neither tells a reader which specific source backs a specific
sentence. When a page states a number, a benchmark result, or a direct
attribution, I now tie it to its source with a footnote at the point of the
claim, so the reader lands on the primary source instead of guessing which of
ten links in the list is the right one. Logseq renders standard Markdown
footnotes: &lt;code&gt;[^1]&lt;/code&gt; next to the claim, and &lt;code&gt;[^1]: Title, date, URL&lt;/code&gt; collected at
the bottom of the page. The &lt;code&gt;curate-journals&lt;/code&gt; skill treats this as a rule now:
any paper, post, or video a page relies on has to be reachable from the page
itself, because the journal it came from usually holds only a bare link.&lt;/p&gt;
&lt;p&gt;Logseq links are the connective tissue. A page about local models can point to
&lt;code&gt;[[Claude Code]]&lt;/code&gt;, &lt;code&gt;[[AI/Harness engineering]]&lt;/code&gt;, or &lt;code&gt;[[Observability/LLM observability]]&lt;/code&gt;
without needing a separate taxonomy project. If a page name contains a slash,
the file uses Logseq&amp;rsquo;s triple-lowbar encoding, so &lt;code&gt;AI/Local models and RAG&lt;/code&gt;
lives as &lt;code&gt;pages/AI___Local models and RAG.md&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="the-curation-pass"&gt;The curation pass&lt;/h2&gt;
&lt;p&gt;The curation workflow is deliberately mechanical:&lt;/p&gt;
&lt;p&gt;The repo has a Claude skill for this: &lt;code&gt;.claude/skills/curate-journals/SKILL.md&lt;/code&gt;.
&lt;code&gt;AGENTS.md&lt;/code&gt; says what the graph is and what good curation looks like; the skill
turns that into the repeatable pass.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find unprocessed journal changes from the last &lt;code&gt;Curation hash:&lt;/code&gt; in &lt;code&gt;log.md&lt;/code&gt;,
plus any untracked journal files.&lt;/li&gt;
&lt;li&gt;Read each journal in full and note the &lt;code&gt;[[tag]]&lt;/code&gt; blocks.&lt;/li&gt;
&lt;li&gt;Classify each bullet as durable, raw, or already promoted.&lt;/li&gt;
&lt;li&gt;Map durable items to existing pages before creating new pages.&lt;/li&gt;
&lt;li&gt;Investigate external links, transcripts, and local X.com exports.&lt;/li&gt;
&lt;li&gt;Write synthesis into &lt;code&gt;pages/&lt;/code&gt;, not a dump of journal bullets.&lt;/li&gt;
&lt;li&gt;Cross-link related pages.&lt;/li&gt;
&lt;li&gt;Append a new batch entry to &lt;code&gt;log.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Update &lt;code&gt;pages/contents.md&lt;/code&gt; if a new durable page was created.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The last step saves future work. &lt;code&gt;log.md&lt;/code&gt; records which journals were processed,
which pages changed, which external links were investigated, which videos or
transcripts were fetched, what was skipped, and what backlog remains.&lt;/p&gt;
&lt;p&gt;That makes curation resumable. A later pass can see why a link was ignored or
whether a conference playlist was already fetched.&lt;/p&gt;
&lt;p&gt;The git hash is the part that makes this work for real daily notes. A date scan
only finds journal files newer than the last processed date. That misses the
normal Logseq habit: I open an old day, add one new block, and save it. The
&lt;code&gt;curate-journals&lt;/code&gt; skill reads the previous &lt;code&gt;Curation hash:&lt;/code&gt; and diffs
&lt;code&gt;journals/&lt;/code&gt; against it, so a re-edited &lt;code&gt;journals/2026_06_24.md&lt;/code&gt; shows up even if
&lt;code&gt;journals/2026_06_25.md&lt;/code&gt; was already processed.&lt;/p&gt;
&lt;p&gt;The pass starts with roughly this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git diff --name-only &amp;lt;stored-hash&amp;gt; HEAD -- journals/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git status --short journals/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The union is the work list: journal files changed since the last curation pass,
plus new untracked journals. The curation log then records the next hash so the
following pass has a new high-water mark.&lt;/p&gt;
&lt;p&gt;The skill also keeps the pass conservative. It explicitly says to leave TODOs,
meeting logistics, PR breadcrumbs, isolated IDs, and ungrounded fragments in the
journal. That matters because the easiest way to ruin a personal knowledge base
is to promote everything.&lt;/p&gt;
&lt;h2 id="agents-make-the-graph-more-useful"&gt;Agents make the graph more useful&lt;/h2&gt;
&lt;p&gt;This graph is written for humans, but I also expect coding agents to read it.&lt;/p&gt;
&lt;p&gt;The repository has explicit instructions for Codex and Claude Code. They say,
in effect: this is a private Logseq knowledge base, not an app repo; journals
are the raw inbox; pages are the durable layer; do not copy raw fragments into
pages; synthesize, cite sources, and keep sensitive details private.&lt;/p&gt;
&lt;p&gt;For journal work, the agent loads &lt;code&gt;curate-journals&lt;/code&gt; and follows the same checklist
every time. That gives the agent a smaller job than &amp;ldquo;organize my notes&amp;rdquo;: find the
new journal material, decide what has durable value, update the right page, and
write down what happened.&lt;/p&gt;
&lt;p&gt;That changes how I use AI tools. Instead of asking an agent to remember context
from a chat, I ask it to inspect the repo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;search journals for a topic&lt;/li&gt;
&lt;li&gt;find the existing page&lt;/li&gt;
&lt;li&gt;read source notes&lt;/li&gt;
&lt;li&gt;summarize a talk transcript&lt;/li&gt;
&lt;li&gt;connect related pages&lt;/li&gt;
&lt;li&gt;draft a post from the durable layer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The agent does not need everything pasted into the prompt. It can search the
repository, read the source material, and leave behind better Markdown for the
next run.&lt;/p&gt;
&lt;h2 id="what-i-do-not-promote"&gt;What I do not promote&lt;/h2&gt;
&lt;p&gt;The part that keeps the system usable is omission.&lt;/p&gt;
&lt;p&gt;I do not move every note into &lt;code&gt;pages/&lt;/code&gt;. Most raw material stays raw. That keeps
the durable layer useful.&lt;/p&gt;
&lt;p&gt;I leave behind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tasks without reusable context&lt;/li&gt;
&lt;li&gt;meeting logistics&lt;/li&gt;
&lt;li&gt;temporary debugging noise&lt;/li&gt;
&lt;li&gt;private operational details that do not need to be repeated&lt;/li&gt;
&lt;li&gt;links that looked interesting but did not turn into a durable idea&lt;/li&gt;
&lt;li&gt;source material that I cannot verify&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The durable layer works because it is selective.&lt;/p&gt;
&lt;h2 id="the-result"&gt;The result&lt;/h2&gt;
&lt;p&gt;I am not trying to build a perfect wiki. I want a working memory system with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fast capture in journals&lt;/li&gt;
&lt;li&gt;source retention for long-form material&lt;/li&gt;
&lt;li&gt;compact durable pages&lt;/li&gt;
&lt;li&gt;explicit source notes&lt;/li&gt;
&lt;li&gt;a curation log&lt;/li&gt;
&lt;li&gt;enough structure for Logseq, Codex, Claude Code, and future me to navigate it&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The design choice is to treat personal knowledge as ingestion, not filing.
Capture stays cheap because journals can stay messy. Curation happens later,
when there is enough signal to write a page worth keeping.&lt;/p&gt;
&lt;p&gt;That delay is the trick. It keeps the inbox easy and the knowledge layer clean
enough to be useful months later.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.prskavec.net/post/how-i-use-logseq-as-a-personal-knowledge-base/logseq-graph-view.png"
alt="Logseq graph view showing the knowledge base connections"
loading="lazy"
decoding="async"&gt;
&lt;/p&gt;</content:encoded></item></channel></rss>