The dev-project preset: running a software project
Running a project: glossary, ADRs, specs, tickets, research, bugs
A ready-made preset for a notebook where a team and its agents keep knowledge about a software project. Its types cover the domain glossary and ADRs, specs and tickets, research, prototypes, bug diagnosis and retrospectives. File: presets/dev-project.yaml.
Enabling it
Point config.yaml at the presets directory (in Docker it sits next to the config, for example /config/presets):
presets_dir: ./presets
Create the notebook:
uv run okf-notebooks notebook create my-project \
--description "my-project development: glossary, decisions (ADR), specs, tickets, research and bugs" \
--scope "Durable project knowledge: terms, ADRs, specs, tickets, research, bugs. No personal notes" \
--preset dev-project
The presets directory is read on every access, no restart needed. A preset whose YAML is broken is skipped silently
and --preset dev-project then reports “unknown preset”: check the file with yaml.safe_load.
Types
| Type | Directory | What it holds | Required fields | stale_after |
|---|---|---|---|---|
Project | projects/ | what the project is, how to run and test it | — | 180d |
Term | terms/ | a glossary entry: a definition without implementation details, avoid lists words to avoid | — | — |
Decision | decisions/ | an ADR: context, decision, alternatives, consequences | decided | — |
Spec | specs/ | a statement of work: problem, solution, user stories, out of scope | — | 365d |
Ticket | tickets/ | a task or bug with a brief and blocking tickets | category, triage | 90d |
Research | research/ | findings on a question, each fact linked to a primary source | question | 180d |
Prototype | prototypes/ | the question, what was built, what was learned, a verdict | question | 90d |
Bug | bugs/ | symptom, reproduction, cause, fix and regression test | symptom | — |
Retro | retros/ | a session retrospective: what slowed the agent down and what to change | — | — |
Playbook | playbooks/ | a repeatable procedure: release, deploy, setup | — | 180d |
Ticket.triage takes the roles needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix;
category is bug or enhancement.
How it works with agents
- An agent finds the preset on its own: the
presets_listtool returns the name, the description (“what it is for”) and the types of every preset, this one included. statusandverifiedare set by a human (Review UI or CLI): everything an agent writes staysdraftuntil you verify it. That is why a ticket’s state lives intriage, not instatus.- Aging by
stale_aftermarks a note asstalein search: research and prototypes lose relevance quickly, ADRs and terms do not age on their own. - Add a line to your project’s
AGENTS.mdsuch as “write decisions, specs and research to themy-projectnotebook and choose the type from the type description innotebook_describe” (the rules block:okf-notebooks print-agent-guide).
Making your own variant
Copy presets/dev-project.yaml, rename it and adjust the types. The rules, the 12-type limit and the format are in
presets.md.
This preset is one example of a format, not a requirement. If your case is different, design your own types or ask an agent to propose them.