Files
jpmschweitzerandClaude Opus 4.7 79be7a9aae seed example content so Bases render non-empty on first open
Five files across four note types so every new Obsidian Base has
something to display immediately when the vault is opened:

- daily/2026-04-19.md — today's journal entry, covering the PKB
  setup work. Wikilinks to the permanent note, project brief, and
  reading note below.
- notes/pkb-as-lens-substrate.md — the load-bearing design note
  capturing the PKB-as-substrate / Council-as-lens inversion that
  drove this whole extension.
- projects/mql/brief.md and log.md — active project tracking the
  companion Markdown-Query-Language CLI (sibling repo). First log
  entry records the Go-over-Rust decision and v0.1 scope.
- reading/audiopen-integration-research.md — marked done; captures
  the two-clouds distinction (AudioPen's processing cloud
  unavoidable; Obsidian Sync optional) and names Tailscale Funnel
  as the chosen webhook-exposure path.
- inbox/2026-04-19-1900_test-ingestion.md — hand-authored fleeting
  note (source: manual, distinguishable from AudioPen drops) so
  /triage-inbox has something to exercise on before the real voice
  pipeline is running.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:18:14 +02:00

41 lines
1.7 KiB
Markdown

---
type: project
title: "mql — Markdown Query Language CLI"
status: active
started: 2026-04-19
tags: [tooling, go, pkb]
---
# mql — Markdown Query Language CLI
## Why
The Council's members currently reach for Grep + Read to find patterns across `daily/`, `notes/`, `projects/`, `reading/`. Grep is stringly-typed; it doesn't understand YAML frontmatter, wikilinks, tags, or Obsidian Bases. As the PKB grows, "find all sessions where winner = X" or "list permanent notes tagged with Y linked to project Z" will be load-bearing queries, and a proper query tool pays off.
`mql` is a Go CLI that indexes and queries any repo with Markdown + YAML frontmatter + wikilinks + tags + Obsidian Bases, exposing a Dataview-compatible query language from outside Obsidian.
## Outcome definition
v0.1 shipped and installed in `~/.local/bin/mql`:
- Cold-scan builds a SQLite index under `~/.cache/mql/<vault-hash>.sqlite`.
- `mql 'LIST FROM "sessions" WHERE winner = "vaasa"'` returns JSON.
- `mql base <name>` executes an Obsidian `.base` file as a query.
- Researcher and `/ask-*`-invoked members can shell out to `mql` instead of grep-walking directories.
## Constraints
- Go (single static binary across Linux/macOS/Windows).
- Pure-Go SQLite (modernc.org/sqlite) — no cgo, no C toolchain at build time.
- MIT or Apache-2.0 license (open-source candidate).
- Dataview-compatible subset; `GROUP BY`, `FLATTEN`, `TASK`/`CALENDAR`, inline fields in prose, and `dataviewjs` are explicitly out for v0.1.
## Log
See [[log]].
## Links
- Sibling repo: `~/projects/mql/` (separate from this repo).
- Design: `~/projects/mql/docs/structure/initial-plan.md`.
- First customer: this vault. `/var/mnt/data/projects/council/` is the v0.1 integration-test fixture.