Agent reads this to understand the Projects shard
Understanding these concepts will make everything else click.
The Mental Model
Flint is a bounded workspace - a single folder that contains everything related to one domain of thought. This boundary is intentional and powerful.
Think of a Flint as a self-contained unit of knowledge work:
- Bounded - One folder with clear edges. When you move or share it, everything travels together.
- Structured - Standard directories organize different types of content.
- Agent-friendly - AI assistants can read a single init file and understand the whole context.
- Declarative - You describe what you want in configuration files; Flint handles the details.
This is different from a file system (infinite, unstructured), a database (infinite, structured), or a wiki (can sprawl indefinitely). The boundary matters because it enables comprehensibility, portability, and focused collaboration.
The Flint Folder
A Flint is a folder with a specific structure:
(Flint) My Project/
flint.toml # Configuration (you edit this)
flint.json # Identity and state (managed by Flint)
.flint/ # Internal state (gitignored)
Mesh/ # Your notes and thinking
Shards/ # Installed shards (agent capabilities)
Mods/ # Installed mods (environment integrations)
Workspace/ # References to external resources
Media/ # Binary assets
Imports/ # Content from other Flints
Exports/ # Built export output
Connections/ # References to other Flints (gitignored)
Subflints/ # Nested Flint workspacesThe folder naming convention (Flint) Name makes Flints visually distinct and sortable. The name inside flint.toml is the canonical name; the folder name follows it.
Mesh: Your Thinking Space
The Mesh/ directory is the heart of a Flint. This is where your notes live - organized not as a hierarchy but as a connected graph.
Typed Prefixes
Notes use typed prefixes to indicate their purpose:
| Prefix | Purpose | Example |
|---|---|---|
(Task) | Actionable work items | (Task) 076 Implement auth flow.md |
(Plan) | High-level plans | (Plan) 003 Q1 Roadmap.md |
(Increment) | Versioned work packages | (Increment) 1.2.0 - UI Polish.md |
(Dashboard) | Aggregation views | (Dashboard) Backlog.md |
(System) | Configuration/metadata | (System) Flint Init.md |
(Notepad) | Brainstorming sessions | (Notepad) 015 Architecture Ideas.md |
(Report) | Research/analysis output | (Report) Performance Audit.md |
These prefixes aren't just conventions - they enable shards to find and operate on specific note types. A Projects shard knows to look for (Task) files; an Increments shard tracks (Increment) files.
Typed artifacts use sequential numbering: (Type) NNN Name.md. Use flint helper type newnumber <Type> to get the next available number.
The Graph
Notes connect through wikilinks: [Other Note](/other-note) creates a link,  transcludes content inline. This creates a graph where ideas link to related ideas.
The graph enables:
- Navigation - Follow links between concepts
- Discovery - Find backlinks (what links to this?)
- Compilation - Resolve transclusions into complete documents for export
Think of Mesh as your external brain for this domain. Ideas go in as notes. Connections form through links. Insights emerge from the structure.
Shards: Prompt-Based Extensions
Shards extend what you and AI agents can do in a Flint. Unlike traditional code plugins, Flint shards are prompt packages - collections of markdown files that provide context, skills, templates, workflows, and knowledge.
A shard contains:
Shards/Projects/
shard.yaml # Shard manifest (version, dependencies, install entries)
init-proj.md # Context to load when using this shard
skills/
sk-proj-capture_as_task.md # Repeatable task: capture ideas as tasks
sk-proj-archive_tasks.md # Repeatable task: archive completed tasks
templates/
tmp-proj-task.md # Document structure for tasks
workflows/
wkfl-proj-create_task.md # Multi-step process for creating tasks
wkfl-proj-do_task.md # Multi-step process for completing tasks
knowledge/
knw-proj-conventions.md # Deep reference on project conventions
scripts/
newtasknum.js # Executable utility scripts
install/
(Dashboard) Backlog.md # Files installed into Mesh/Why Prompt-Based?
This approach is:
- Safe - No arbitrary code execution in shard markdown. Agents interpret prompts.
- Inspectable - You can read exactly what a shard does.
- Portable - Works with any capable AI agent.
- Extensible - Create your own shards with
flint shard create.
Loading Shards
Shards are installed to Shards/ but not automatically loaded into agent context. An agent reads a shard's init file when it needs that shard's capabilities:
# Agent reads this to understand the Projects shard
@Shards/Projects/init-proj.mdThis on-demand loading keeps context focused. Don't load everything at session start - that wastes context window.
Shard Components
| Component | Pattern | Purpose |
|---|---|---|
| Init file | init-[sh].md | Context that explains the shard and how to use it |
| Skills | sk-[sh]-[name].md | Repeatable tasks with clear inputs and outputs |
| Templates | tmp-[sh]-[name].md | Document structures for creating new artifacts |
| Workflows | wkfl-[sh]-[name].md | Multi-step processes with human decision points |
| Knowledge | knw-[sh]-[name].md | Deep reference material on specific topics |
| Scripts | scripts/[name].* | Executable utilities (JS, TS, Python, Bash) |
Declaring Shards
Shards are declared in flint.toml with their source:
[shards]
projects = { source = "NUU-Cognition/shard-projects" }
increments = { source = "NUU-Cognition/shard-increments" }
plan = { source = "NUU-Cognition/shard-plan" }
my-shard = { source = "path:./Shards/(Dev) My Shard", dev = true }Running flint sync installs declared shards and warns about orphaned ones.
Mods: Environment Modifications
Mods modify how the Flint environment works. Unlike shards (which add agent capabilities), mods configure the system itself by installing files, running commands, and providing scripts.
Examples:
- claude-code - Creates
CLAUDE.mdand.claude/settings.jsonfor Claude Code integration - agents - Creates
AGENTS.mdfor multi-agent tool integration
Mods can:
- Install files into the flint root (with template rendering)
- Run shell commands at lifecycle points (
onInstall,onSync) - Provide executable scripts
- Use template variables like
{{flint.name}},{{uuid}},{{date}}
Declaring Mods
Mods are declared in flint.toml with their source:
[mods]
claude-code = { source = "NUU-Cognition/flint-mod-claude-code" }
agents = { source = "NUU-Cognition/flint-mod-agents" }
my-mod = { source = "path:./Mods/(Dev) My Mod", dev = true }Workspace: External References
The Workspace/ directory links your Flint to external resources - codebases, APIs, databases, or other services that your notes reference.
Reference Files
Each reference is a markdown file in Workspace/References/:
Workspace/References/
rf-monorepo.md # Reference to a codebase
rf-api.md # Reference to an APIA reference file contains:
- Human-readable description of what this resource is
- Machine-specific path (gitignored, not committed)
- Any relevant context for agents
Declaring References
References are declared in flint.toml:
[workspace]
references = [
{ name = "monorepo", type = "codebase" },
{ name = "api-docs", type = "drive" },
]The declaration is portable (committed to git). The actual path is stored in the reference file and .flint/references.json (both gitignored, machine-specific).
This separation means:
- You can clone a Flint and it knows what references it needs
- You run
flint workspace fulfillto set paths on your machine - Paths don't leak into version control
Repositories
Workspace also supports cloned repositories - Git repos pulled into your Flint for reference:
[workspace]
repositories = [
{ name = "example-api", url = "https://github.com/user/example-api" },
]
[workspace.sources]
repositories = [
{ name = "design-ref", url = "https://github.com/company/design-system" },
]Full repositories keep .git history. Source repositories are shallow-cloned with .git removed for lightweight reference.
Media: Binary Assets
The Media/ directory stores binary files - images, PDFs, diagrams, and other assets that your notes reference.
Keep Media organized however makes sense for your domain. Some patterns:
Media/screenshots/for UI capturesMedia/diagrams/for architecture drawingsMedia/attachments/for general files
Imports and Exports: Sharing Between Flints
Flints can share content with each other through the import/export system.
Exports
An export is a curated subset of your Mesh that you want to share. You define exports by creating (Export) prefixed documents in your Mesh/:
# Mesh/(Export) Guide.md
---
export-depth: 1
---
This export includes the core documentation:
- [Guide - Quick Start](/guide/quick-start)
- [Guide - Core Concepts](/guide/core-concepts)
- [Guide - CLI Reference](/guide-cli-reference)Running flint export build processes these documents, resolves linked documents, follows transclusions, and outputs to Exports/Guide/.
Imports
To import another Flint's export, declare it in flint.toml:
[imports]
required = [
"NUU Flint/Guide",
]Running flint sync automatically builds exports from the source Flint and copies them into Imports/NUU Flint/Guide/.
Connections: Cross-Flint References
Connections link your Flint to other Flints you work with. They use the same declaration + fulfillment pattern as workspace references:
[connections]
flints = [
{ name = "NUU Vessel" },
{ name = "NUU Mesh" },
]Declarations travel in flint.toml (committed). Fulfillments with machine-specific paths live in Connections/ (gitignored). Target Flints must be registered in the global registry.
Connections are one-way. Flint A connecting to Flint B doesn't mean B knows about A.
Configuration Files
flint.toml
The main configuration file. Human-editable, committed to version control. This is the source of truth for declarations - what shards, mods, imports, references, and connections your Flint needs.
[flint]
name = "My Project"
type = "flint"
[shards]
projects = { source = "NUU-Cognition/shard-projects" }
increments = { source = "NUU-Cognition/shard-increments" }
[mods]
claude-code = { source = "NUU-Cognition/flint-mod-claude-code" }
[imports]
required = [
"NUU Flint/Guide",
]
[workspace]
references = [
{ name = "monorepo", type = "codebase" },
]
[connections]
flints = [
{ name = "NUU Vessel" },
]flint.json
Machine-managed identity and state file. Committed to version control.
{
"version": "0.2.0",
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "flint",
"created": "2026-01-15T10:00:00.000Z",
"synced": "2026-03-01T15:30:00.000Z",
"migrations": {}
}Contains the Flint's unique identity (UUID), creation timestamp, last sync timestamp, and applied migrations.
.flint/ Directory
The .flint/ directory stores internal state (gitignored):
.flint/
references.json # Fulfilled workspace reference paths
connections.json # Fulfilled connection pathsThe Global Registry
Flint maintains a global registry at ~/.flint/ that tracks all Flints on your machine:
~/.flint/
config.toml # Global user preferences
registry.json # List of registered Flints
presets/ # Custom preset configurationsregistry.json
Tracks registered Flints by path:
{
"version": 1,
"flints": [
{
"name": "My Project",
"path": "/Users/me/flints/(Flint) My Project",
"type": "flint",
"tags": ["active"],
"description": "Main project workspace"
}
]
}The registry enables:
flint listto show all your Flints- Import resolution (finding source Flints for imports)
- Connection fulfillment (auto-resolving paths from registry)
- Discovery scan (
flint register --scan)
Sync: Keeping Everything in Order
The flint sync command is the reconciliation point. It ensures your Flint's actual state matches its declared configuration:
- Bootstrap - Creates
.flint/and standard directories if missing - Migrations - Runs pending data migrations
- Obsidian - Clones
.obsidian/configuration if missing - Shards - Installs declared shards, warns about orphaned ones
- Mods - Installs declared mods, runs
onSynchooks - Imports - Pulls required imports from source Flints
- Workspace - Validates reference fulfillment status
- Registry - Updates the global registry if name/path changed
- Connections - Migrates old formats, validates fulfillment
- Gitignore - Updates
.gitignorefor current configuration
Sync is idempotent - running it multiple times produces the same result. It's safe to run after any change to flint.toml.
When to Sync
- After cloning a Flint repository
- After editing
flint.toml - After pulling changes that modified
flint.toml - When something seems out of sync
Putting It Together
The Flint mental model:
- One Flint per domain - Keep workspaces focused. When it sprawls, split it.
- Mesh is the center - Everything else either feeds into your thinking (Imports, Workspace), flows out of it (Exports), or supports it (Media, Shards).
- Declare, then sync - Edit
flint.tomlto describe what you want, runflint syncto make it so. - Shards are prompts - Safe, inspectable, portable extensions that agents interpret.
- Mods are infrastructure - Active environment modifications that install files and run commands.
- Agents are first-class - The system is designed for AI collaboration from the ground up.
Next Steps
- Guide - Quick Start - Create your first Flint
- Reference - CLI Commands - Complete command reference
- Module - Shards & Mods - Deep dive into the extension system