AgentLayerdocs
Agent · Harness

Tasks and projects

Markdown-native task management. One file per task, YAML frontmatter, threads as callouts, a generated dashboard.

Projects and tasks are files. There is no database to sync, nothing to export, and Obsidian renders all of it.

Projects

create-project scaffolds projects/<slug>/ with a README and a tasks/ folder. The two-letter task prefix derives from the slug automatically. archive-project retires one cleanly: moves the folder to the archive, strips references from active docs, banners the README, recompiles the index.

Tasks

Each task lives at projects/<slug>/tasks/<id>-<slug>.md:

---
schema: 1
id: bd-004
title: "Write blog post: Why Bun is a joy for local TS scripts"
type: task
status: open
priority: P2
project: blog-dev
assignee: [basem]
labels: []
created: 2026-04-21
updated: 2026-07-24
due:
depends_on: []
---

## Description
...

## Checklist
- [ ] ...

## Thread
> [!quote] Basem · 2026-07-24
> Let's frame it around the postinstall story.

> [!info] Kevin · 2026-07-24
> Drafted an outline in the description.
FieldValues
IDTwo-letter project prefix plus a three-digit number. Globally unique. Kevin assigns them
Typetask · bug · idea · epic
Statusopen · active · blocked · done · cancelled. Transitions are validated
PriorityP0 drop everything · P1 this week · P2 this sprint · P3 backlog
ThreadAppend-only. [!quote] for you, [!info] for Kevin, [!warning] for automated actions

Closed tasks move to tasks/archive/ on the next sync so the active folder stays scannable.

Driving them

Inside a session, Kevin uses the task_* MCP tools (query, get, create, update, close, thread, scan). Outside a session, the same operations are on the CLI:

kevin task query --status=active
kevin task create --project=blog-dev --title="Draft launch post" --priority=P1
kevin task close bd-004

The dashboard file

projects/TASKS.md is generated from task frontmatter on every mutation: weekly, monthly, and yearly goals at the top, then active tasks grouped by project, blocked, overdue, stale, and recently closed. It loads into every session, so Kevin always knows the board. Never edit it by hand.

The goals blocks come from the weekly-goals, monthly-goals, and yearly-goals skills. See Daily rhythm.

On this page