Twelve design docs (00-vision through 11-command-nexus) plus assets and the wishlist, authored ahead of implementation. Claude-Session: https://claude.ai/code/session_018BjQRYBR6jQja3jCRi5S3A
5.4 KiB
Agent Integration
AI agents are first-class users of Lanework boards — not through an API, but through the filesystem itself. An agent that can read and write files can read and write a board. The app's design carries several load-bearing guarantees that exist substantially for this use case.
The load-bearing guarantees
- Unknown-key preservation — agent overlays add custom frontmatter (
project:,sphere:,tags:) and the app preserves hand-added keys and their order verbatim across every rewrite. The schema is safe to extend from outside. - Live external-edit reload — an agent writing a card folder makes the card appear on the open board via FSEvents immediately. Agent write-path and human read-path are the same surface; the agent is just another external editor.
- Fail-fast validation + atomic writes — a malformed agent write surfaces loudly with the offending path instead of silently corrupting. The right failure mode for letting AI write into a planning system.
- Skip-don't-fail for index-less folders — an agent interrupted between
mkdirand writingindex.mdcannot brick the board. - Git trail (06-history-undo.md) — on git-enabled boards, agent changes are auto-committed, attributed, and undoable like any others. Foreign changes are committed under a synthetic external author, structurally distinct from the user's own commits; an agent can claim its work lightly by stamping
modified-by(guarantee 6 below), or precisely by committing its changes itself — the app follows along: a heldindex.lockjust makes the auto-committer retry/re-debounce, and a tree the agent already committed is a silent no-op that preserves the agent's authorship (06-history-undo.md). The guide says so, and also tells agents to stage only their own paths (nogit add -A) — a sweep would commit the user's not-yet-auto-committed changes under the agent's name. modified-byself-stamping (01-storage-format.md) — the lightweight attribution path: an agent stamps files it writes (modified-by: <your-name>), and the stamp renders on the card window's modified line and authors the agent's foreign commits (06-history-undo.md) — no git ceremony, and it works on no-git boards, where it is the only attribution there is. The app clears the stamp on its own writes, so agents should re-stamp on every write, not once.
The agent guide (CLAUDE.md at board root)
The app silently maintains a CLAUDE.md in every board — a condensed, agent-facing rendition of the schema teaching any agent how to operate on the board directly:
- Creating cards (mkdir UUID, write
index.md, ordering rules). - Moving between lanes (folder move), reordering (gapped ranks, only touch the moved item).
- Tombstone deletes, colors/icons.
- New in the rewrite: attachments (the
attachments/convention, importing files). - New in the rewrite:
modified-byself-stamping — stamp files you write; re-stamp every write (the app clears it on its own writes); self-commit instead when you need exact authorship. - New in the rewrite: a pointer to the optional
CLAUDE.user.md(see below), instructing agents to read it when present.
Mechanics: version marker in the first line (lanework-agent-guide vN); rewritten when missing or older, never downgraded, left untouched when current or newer. To the loader it's just another ignored file.
Ownership: the board-root CLAUDE.md is app-owned and not available for user editing — its header says so, and user edits do not survive upgrades. This holds on every board, including repo-nested ones: the guide is auto-written there too (the untracked file in the user's repository is accepted — a board is agent-facing wherever it lives). A board-root CLAUDE.md found without the marker is displaced user content, not clobbered: its content is moved to CLAUDE.user.md if that name is free (otherwise the guide write is skipped with a log — user content is never destroyed), and the guide is then written.
CLAUDE.user.md is the user's extension point: an optional, user-authored file at board root carrying board-specific agent instructions. The generated guide tells agents to read it when present, so it lands in agent context without the app ever touching it — the app never writes, upgrades, or validates it.
On git boards, a guide write rides the normal watcher → auto-commit path with an honest message ("Update agent guide (v3)"), not "External edit" (06-history-undo.md).
Agent conventions worth specifying (new in the rewrite)
- The masterplan pattern (from the old repo's AI-MASTERPLAN.md): a cross-project board with lifecycle lanes (Inbox → Triaged → Active → Done) where agent sessions file needs as cards at near-zero friction. The design requirement it imposes here: filing a card must need nothing but the schema — no app running, no registration, no index to update.
Automation surfaces (beyond raw files)
Raw files are the primary surface. Candidates for more, all unadjudicated:
- CLI (
lanework add-card …) — probably unnecessary; agents handle raw files fine, and a CLI is a second schema client to maintain. - URL scheme / AppleScript / Shortcuts — for human automation more than agents.
- MCP server — same schema knowledge packaged for non-file-capable agents.
Lean: ship none initially; the guide + schema are the API.
Open questions
None currently — the "while you were away" digest idea moved to the project wishlist (../WISHLIST.md).