Quickstart [[quickstart: Tutorial]]Tutorial
🤖 Content Generator
- target: [[#quickstart.content]]
- about: Object, Field, Heading, Reference, Data Type
- sources_hash: 27078aa4723f0ce1
Prompt [[quickstart_gen_prompt: text]]textGuides Namespace 80%Content Generator ContentGenerator 80%Write Your First QMD.md File Tutorial 79%
Write a quickstart that gets someone from zero to working QMDC in 5 minutes. This is a DO page, not a READ page.
Structure:
- Install —
cargo install qmdcoruv pip install qmdcornpm install qmdc(show all three, let them pick) - Create a file — literally "create
hello.qmd.mdwith this content:" and show a 5-line example - Parse it —
qmdc parse -i hello.qmd.md— show the command and what it outputs - Validate —
qmdc parse -i hello.qmd.md > /dev/null && echo "valid" - Create a workspace — add a second file, add a reference between them, run
qmdc workspace validate . - Query —
qmdc query . "SELECT __id, __kind FROM objects"— show the output
Every step: command to run, expected output. Copy-paste friendly. No theory. No "what is QMDC". No "core concepts". Just do the thing. End with: "Next: read Why QMDC to understand the philosophy, or jump to the Guides for specific tasks."
At the very top of the content (before "Install"), embed the demo recording:

1. Install
Pick your package manager:
# Rust
cargo install qmdc
# Python
uv pip install qmdc
# Node.js Coming Soon, works when installed from the repo
# npm install -g qmdc
Confirm it's working:
qmdc --version
2. Create a file
Create hello.qmd.md:
## Server [[server: Config]]
- host: localhost
- port: 8080
- debug: true
A Heading with [[id: Kind]] creates an Object. Bullet items with - key: value become Fields. Values are auto-typed — 8080 is a number, true is a boolean (Data Type).
3. Parse it
qmdc parse -i hello.qmd.md --pretty
Output:
[
{
"__id": "server",
"__label": "Server",
"__kind": "Config",
"host": "localhost",
"port": 8080,
"debug": true
}
]
4. Validate
qmdc parse -i hello.qmd.md > /dev/null && echo "valid"
Output:
valid
If there are syntax errors, you'll see them on stderr and a non-zero exit code.
5. Create a workspace
Add a second file, services.qmd.md:
## API [[api: Service]]
- port: 3000
- config: [[#server]]
The Reference [[#server]] creates a typed edge from api to server with edge type config.
Mark the directory as a workspace with readme.qmd.md:
# My Project [[my_project: __Workspace]]
Validate the workspace — this checks that all cross-file references resolve:
qmdc workspace validate .
Output (empty array = no errors):
[]
6. Query
qmdc query . "SELECT __id, __kind FROM objects"
Output:
__id | __kind
------------|------------
my_project | __Workspace
server | Config
api | Service
Query the edges (relationships between objects):
qmdc query . "SELECT source_id, target_id, edge_type FROM edges"
Output:
source_id | target_id | edge_type
----------|-----------|----------
api | server | config
Next: read Write Your First QMD.md File for a detailed walkthrough with explanations, or jump to the Guides for specific tasks.
