hannesloots/commonplace
Cited markdown research wiki and second brain maintained by your coding agent: immutable sources, page-anchored text layers, verbatim-quote citations verified by a Rust tool, PARA organisation, persona reviews, packs for TOGAF, SA legal, comparisons and study.
Changelog
0.6.1 — 2026-11-09
- The plugin installs in GitHub Copilot CLI and OpenAI Codex as well as
Claude Code. A root
plugin.json(Agent Plugins format) sits next to.claude-plugin/plugin.json, and the shelf marketplace has a Codex list (.agents/plugins/marketplace.json) that the release keeps in step. SKILL.mdtells agents that do not setCLAUDE_SKILL_DIRhow to find the launcher, and to usescripts/commonplace.ps1in Windows PowerShell.
0.6.0 — 2026-11-05
- Errors have stable codes. A failed command (exit 2) prints
error[<code>]: <message>and ahint:line on stderr; with--jsonit prints{"error": {"code", "message", "hint", "suggestions", "path"}}on stdout, so an agent can branch on the code. A missing page suggests the closest titles. Command-line usage errors with--jsonuse codeusage. The codes are listed inreferences/cli.md. review recordchecks every page in scope before writing. Before, a page with broken frontmatter stopped it after the review page and some stamps were already written; the error now names the page. A missing findings file is anioerror that names the path.- An unreadable
.commonplace/manifest.jsonmadelintfail with exit 2 after checking, so the Stop hook (which blocks on exit 1) let it pass.lintnow reports it asSRC-005(error), skips the raw-file check that would flag every source, and leaves the manifest untouched. lint --changed(and the Stop hook that uses it) skipped changed files whose names had non-ASCII characters (Café.md), because git escaped them. It now reads git's NUL-separated output, which is never escaped.lintreports a pack rule whose regex does not compile (PACK-001, error, on the pack'spack.yaml). Before, such a rule silently never fired. Pack regexes are now compiled once per run, not once per page.graph walk/graph path:--directionaccepts onlyout,inorboth; anything else is ausageerror. Before, a typo silently meantboth.query --helpshowed its field-comparison example in backticks (`target_maturity>baseline_maturity`); typed as shown, the query silently matched nothing. The help no longer shows backticks, and the query parser now ignores them.- A YAML syntax error in a page's frontmatter is a
frontmattererror that names the page (path), not an unlocatedparseerror. lint --changed(andlint <paths>) no longer hides findings on non-markdown files such asSRC-005on the manifest orPACK-001on apack.yaml; and in a vault without git it no longer fails outright on an unreadable manifest.COMMONPLACE_NOW(YYYY-MM-DDor RFC 3339) pins the clock for every date the tool writes or compares, for repeatable runs and evals.--rootat a folder withoutcommonplace.tomlnow fails withno_rootinstead of an I/O error.exportrenumbered footnotes one label at a time, so a page that defined[^2]before[^1]ended up with both references as[^2]. Footnotes are now renumbered in one pass.doctorprinted the enabled packs asArray [String("ea"), ...]; it now prints["ea", "legal"], likestatus.cite findno longer crashes on a line locator of 0.lint --changednow includes files ending in upper-case.MD, as the rest of the tool does.- Internal: Rust edition 2024; the workspace denies clippy pedantic and
unwrap/expect/paniclints; long functions split; CI checks formatting, clippy, tests, docs, licences and advisories (cargo-deny) and the minimum Rust version (1.88).
0.5.2 — 2026-11-03
- First release from the published history: author and copyright are
"Commonplace contributors"; the marketplace is
shelf(hannesloots/shelf, installcommonplace@shelf).
0.5.1 — 2026-11-03
- Releases publish the built plugin (with binaries) into the marketplace repository hannesloots/shelf, so a marketplace install gets the tool and not only the skill. The marketplace manifest moved there; this repository keeps only the plugin manifest.
0.5.0 — 2026-11-03
- Renamed from
braintocommonplace(after the commonplace book: a personal book of sourced excerpts kept so they can be cited later). The binary, skill, plugin, repository (github.com/hannesloots/commonplace), config file (commonplace.toml), tool folder (.commonplace/), generated block markers (<!-- commonplace:… -->) and env vars (COMMONPLACE_SKILL_DIR,COMMONPLACE_BIN) carry the new name. - Compatibility: a root with
brain.tomlor.brain/keeps using them;<!-- brain:… -->markers are recognised and rewritten on the nextindex;BRAIN_SKILL_DIRandBRAIN_BINare still read. Nothing in an existing vault needs to change.
0.4.1 — 2026-11-03
- Release workflow: the Intel macOS binary is cross-compiled on the current
macOS runner; GitHub retired the
macos-13image the matrix used, which left every release run queued forever on that one job.
0.4.0 — 2026-11-03
- The
togafpack is nowea(enterprise architecture). The pack was never affiliated with The Open Group; the name, the persona (togaf-architect, nowchief-architect) and the ADM phase letters in the workflow could read as if it were. The workflow is now organised by stage (vision, business, information and technology, gaps and roadmap) with one line noting the alignment with the TOGAF® ADM and the trademark. Rule ids TOG-00n are EA-00n; both spellings work indisabled_rules.togafremains an alias (brain init --pack togafworks, and a brain whose.brain/packs/togaf/predates the rename keeps loading it). Runbrain pack install eato upgrade such a brain.
0.3.0 — 2026-11-03
- The
sa-legalpack is nowlegalplus a jurisdiction profile. Country specifics (neutral and report citation patterns, court codes, hierarchy, primary sources, citator, regulator, privacy law, drafting conventions) live injurisdictions/<code>.yaml; shipped:za,au,en, plusgeneric.brain.tomlgainsjurisdiction;brain init --jurisdictionandbrain pack install legal --jurisdictionset it;brain doctorandbrain pack listshow it.sa-legalin an existing brain.toml is read aslegalwithza. Thesa-advocatepersona is nowsenior-counsel, reading the profile first; the authority template'ssaflii_urlissource_url.
0.2.1 — 2026-11-03
- Release workflow: build attestation is skipped on private repositories (GitHub does not offer it there), so a private repo can publish releases.
0.2.0 — 2026-11-03
-
Graph analysis, in memory, no new dependencies:
brain graph related(links, co-citation, Adamic-Adar, tags, personalised PageRank, each with the reason),hubs(PageRank, degree, betweenness),communities(Louvain, with hub page and evidence count),gaps(wanted pages ranked by referrers, orphans, dead ends, uncited sources, clusters without a map page, single-source clusters, bridges),suggest-links(unlinked mentions with the line to link on) andconflicts(same-type pairs sharing sources or subject, for contradiction review). Graph commands are now documented in the skill and wired into the weekly maintenance pass. -
HTML ingest drops site chrome (scripts, styles,
nav,footer) and rewrites relative links and images to absolute URLs against--origin, so Obsidian no longer shows hundreds of unresolved links undersources/. -
brain source relink <id> | --allrepairs sources ingested before this change (rewrites links in place, re-hashes the text layer; locators unchanged). -
brain initwrites.obsidian/app.json(if absent) that hidessources/raw/andsources/text/from search, graph and unresolved-link counts; links into them still open.
0.1.0 — 2026-11-03
First working version.
brainCLI (Rust, static musl): init, doctor, status, ingest, source verify/attach-text/list/show, new, rename, archive, lint (core + pack rules), cite verify/find, links check/backlinks, dedupe, index, search (BM25), query (frontmatter expressions), trace, graph (stats, schema, walk, path, export cypher/graphml/mermaid/dot/json), review prepare/record, export, log, pack list/install.- Skill
brain: SKILL.md, references (cli, schema, ingest, research, review, maintain, memory, express), seven personas, four packs (togaf, sa-legal, compare, study) with templates, declarative lint rules, traces and expert personas. - Plugin wrapper: manifest, marketplace, Stop hook running lint and cite verify
inside a brain,
bin/brainon PATH. - Fixture brain and release workflow (five targets, attestations, cloud and desktop skill bundles, plugin zip).