Systems Gallery¶
A system is a whole knowledge methodology you can install in one click — a ready-to-run canvas plus its step notes, written straight into your vault. Systems are the fastest way to get started with ZettelFlow: instead of a blank canvas you begin from a real workflow that already composes the cognitive actions, so a note you create through a system lands already related, cross-checked, link-suggested and maturity-scored against your own graph.
Systems ship in the unified .zftemplate format and install from the Community Templates browser — see Community resources. Everything is offline (no network, no AI) and additive (nothing in your vault is removed).
Install a system¶
- Open the Community Templates browser (ZettelFlow ribbon → Community templates).
- Select the Systems tab and click a system to preview it.
- Choose an install folder (a per-system subfolder is suggested) and press Install system.
- ZettelFlow writes the canvas and every step note, then opens the canvas — pick an entry point and go.
Shipped systems¶
Each system offers several independent entry points on one canvas — pick the note type you want to create. Every system carries a difficulty badge in the browser — easy (a light workflow, few actions), medium (more steps and the relation/research actions), hard (the full pipeline). Start easy and grow into the richer systems; the on-creation cognitive work scales with the difficulty.
| System | Difficulty | Entry points | What lands on creation |
|---|---|---|---|
| 🎓 ZettelFlow tour | easy | Guided note | a three-step guided walkthrough that teaches capture → develop → connect while you build a real note — the fastest way to learn the whole workflow |
| Concept note | easy | Concept note | the full treatment — related · contradictions · suggested links · maturity · thinking prompts · next move |
| Daily journal | easy | Daily journal | highlights · gratitude · tomorrow, connected to related days on creation |
| Meeting notes | easy | Meeting note | attendees/agenda/actions captured, tagged, stamped with a Zettel ID, linked to related meetings |
| Inquiry | easy | Open question | surfaces your other open questions, related notes and the claims you're implicitly making |
| Reading | medium | Reading source · Reading note | highlights mined for claims and candidate sources; insights connected to your graph |
| GTD | medium | Inbox capture · Next action · Project | a thought moves from capture to a context-tagged next action, connected with find related |
| Writing | medium | Draft · Section · Review | drafts pull in related source notes; sections suggest connections; reviews surface contradictions |
| Zettelkasten v2 | medium | Fleeting · Literature · Permanent | the permanent note is related, cross-checked, link-suggested and maturity-scored (the on-creation pattern) |
| Decision journal | medium | Decision record | options · rationale · review date, Zettel ID, checked against earlier decisions for contradictions |
| Academic research | hard | Literature note · Permanent note | claims extracted · candidate sources · contradictions flagged · maturity scored → connected permanent notes |
| PARA v2 | hard | Project · Area · Resource · Archive | each note lands in its PARA folder, tagged by category and connected with find related |
| Weekly focus | hard | Weekly focus | the scripting showcase — picks this week's idea from the ones that grew without your judgement and stamps the vault's state so next week has something to compare against; uses zf.knowledge |
| Software architecture KB | hard | Decision record (ADR) · Component | new decisions are checked against existing ones for contradictions and linked to related decisions |
Previews: each system shows a preview image in the browser. Previews currently ship as placeholders pending final artwork (tracked in issue #223) — the system itself is fully functional regardless.
Systems that run code¶
A system may ship a Script or Dynamic selector action, and those carry JavaScript that ZettelFlow runs with access to your vault. Because systems install in one click from a remote catalog, the install modal says so before writing anything: it names the steps that carry code and asks you to acknowledge it. A system built from stock actions gains no extra step — there is nothing to disclose.
Conditional canvas edges (if: …) are not in that category: they are read by a pure parser with no eval, so they are never reported as executable code.
If you author one, write the code as a YAML block scalar:
- type: script
id: my-stamp
hasUI: false
code: |
if (!zf.knowledge.ready()) return;
content.addFrontMatter({ vault_debt: zf.knowledge.debt().score });
Weekly focus is the shipped example: it picks this week's idea from the ones that grew without your judgement, using zf.knowledge — something no stock action can do.
Author your own system¶
A system is a single .zftemplate JSON bundle: a canvas (a real .canvas) plus its steps (the .md files with zettelFlowSettings frontmatter). To contribute one:
- Build it in Obsidian. Compose a canvas whose step nodes are
.mdfiles carrying validzettelFlowSettingsfrontmatter (the same frontmatter the Step Builder writes). Run the commandZettelFlow: Export current canvas as .zftemplateto produce the bundle. - Use independent entry points, not a chain. For a system that offers several note types, give each its own
root: truestep and leave the canvas edges empty — a chained child auto-advances and merges the notes into one. (See any shipped system underdocs/systems/.) - Stay offline. Compose the graph-computing actions in an
onCreationblock (find-related,suggest-link,find-contradiction,calculate-maturity,extract-claims,find-sources). Do not use the AI actions (classify,summarize,generate-questions) — a shipped system must run with no network. Avoid actions whose value is a build-time-fixed target (attach-source,create-semantic-relation) — they are no-ops in a template; capture relations withfind-related/suggest-linkand a plain wikilink prompt instead. - Quote YAML-unsafe values. A prompt
placeholder/labelthat starts with[[,@,{,*(or contains:) must be single-quoted, or the frontmatter fails to parse and the step is dropped. - Declare a difficulty. Set a top-level
"difficulty": "easy" | "medium" | "hard"on the bundle so the gallery shows the right badge — easy for a light workflow, medium once you add relation/research actions, hard for the full on-creation pipeline. Optional; omit it and the badge is simply hidden. - Catalog it. Add the
.zftemplateunderdocs/systems/, a sibling<id>.pngpreview, and atemplate_type: "system"row todocs/main_template.json(ref= the.zftemplatepath). - Validate.
npm testruns the validity harness (shippedSystems.test.ts+catalog.test.ts): every shipped system must parse, reference only registered non-AI actions, use YAML-safe frontmatter, and resolve its canvas file-nodes to real steps. - Publish. The fastest in-app route: build the workflow on a canvas, run ZettelFlow → Export current canvas as .zftemplate (also in the Open ZettelFlow ribbon menu), then submit it through the community browser's Add template link. That closes the loop — your system in the gallery for everyone.