Move the to-do list from NOTES.md to a kandown board

Each note is a task in tasks/ with the owner's words under ## Context; the
board rules are in .kandown/kandown_work.md and docs/kandown.md explains how
kandown works here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 00:44:22 -04:00
co-authored by Claude Opus 5.5
parent aadcbc6efb
commit e0525c1cfb
28 changed files with 579 additions and 58 deletions
+9
View File
@@ -0,0 +1,9 @@
daemon.json
daemon.lock
.undo/
# Local extension state. Which extensions you enabled and which you trusted is a
# per-machine decision, and a committed copy is ignored at load time anyway
# (see docs/EXTENSIONS.md).
extensions/enabled.json
extensions/trust.json
+56
View File
@@ -0,0 +1,56 @@
# Kandown
File-based kanban for this project. Zero install, zero backend, plain markdown on disk.
## Layout
```
.kandown/ # config, web UI, workflows, skills
├── kandown.html # single-file web app — open this in your browser
├── kandown.json # project preferences, columns, appearance
├── kandown_work.md # optional project agent instructions
├── workflows/ # optional local workflow packages
├── skills/ # optional local Markdown skill packages
└── README.md # this file
tasks/ # source of truth — one .md file per task
├── t1.md
├── t2.md
└── archive/ # archived tasks live here
```
## Usage
1. Open `.kandown/kandown.html` in Chrome, Edge, Brave or Opera (File System Access API required)
2. Click **Select folder** and pick the **project root** (the parent of `.kandown/`), then grant read/write permission
3. That's it
The app remembers the last 10 projects you've opened — no need to re-select the folder each time.
## Settings
Open Settings from the app header to tune this project. Board columns are stored in `.kandown/kandown.json` at `board.columns`. Each task chooses a column with its frontmatter `status`.
## Editing without the app
Everything is plain markdown. Edit files directly in your IDE, Obsidian, or vim. Click **Reload** in the app (or press `R`) to see changes.
The task editor includes a markdown-backed subtask checklist. Add steps with **Add subtask**, press **Enter** to insert another step, and expand a step to edit its description or report. Changes are saved back to the task file automatically.
## For AI agents
Run `kandown work` for the current agent protocol and live board context. Each task file in `tasks/` is its own source of truth. Moving a task means editing its frontmatter `status`.
## Keyboard shortcuts
| Key | Action |
|---|---|
| `⌘K` / `Ctrl+K` | Command palette |
| `⌘1` / `Ctrl+1` | Board view |
| `⌘2` / `Ctrl+2` | List view |
| `N` | New task |
| `R` | Reload |
| `/` | Focus search |
| `Esc` | Close drawer / palette |
| `⌘S` | Save current task |
| `⌘⌫` | Delete task (with confirmation) |
+74
View File
@@ -0,0 +1,74 @@
{
"version": 1,
"preferred": "claude",
"cascade": {
"unassignedBehavior": "skip",
"sameSessionChain": false
},
"agents": [
{
"id": "claude",
"name": "Claude Code",
"bin": "claude",
"interactive": true,
"description": "Anthropic Claude (interactive session)",
"aliases": ["claude", "claudecode", "anthropic", "claudeai"]
},
{
"id": "codex",
"name": "OpenAI Codex",
"bin": "codex",
"interactive": true,
"description": "OpenAI Codex CLI",
"aliases": ["codex", "openaicodex"]
},
{
"id": "gemini",
"name": "Gemini CLI",
"bin": "gemini",
"interactive": true,
"description": "Google Gemini CLI",
"aliases": ["gemini", "geminicli", "googlegemini"]
},
{
"id": "goose",
"name": "Goose",
"bin": "goose",
"interactive": false,
"description": "Block open-source AI agent",
"aliases": ["goose", "blockgoose"]
},
{
"id": "aider",
"name": "Aider",
"bin": "aider",
"interactive": true,
"description": "Git-aware AI pair programmer",
"aliases": ["aider"]
},
{
"id": "opencode",
"name": "OpenCode",
"bin": "opencode",
"interactive": true,
"description": "SST AI coding TUI",
"aliases": ["opencode", "sstopencode"]
},
{
"id": "cursor",
"name": "Cursor",
"bin": "cursor",
"interactive": true,
"description": "Cursor IDE (opens project; paste prompt)",
"aliases": ["cursor"]
},
{
"id": "pi",
"name": "Pi",
"bin": "pi",
"interactive": true,
"description": "Earendil Works pi coding agent",
"aliases": ["pi", "piearendil", "picodingagent"]
}
]
}
+87
View File
@@ -0,0 +1,87 @@
{
"ui": {
"language": "en",
"theme": "auto",
"skin": "kandown",
"font": "inter"
},
"agent": {
"suggestFollowUp": false,
"maxSuggestions": 3,
"workOutput": {
"detailMode": "complete",
"boardDigest": {
"showColumnCounts": true,
"showTasks": true,
"showPriority": true,
"showAssignee": true,
"showBlockedBy": true,
"showNextActionable": true
}
}
},
"workflow": {
"active": "kandown-standard",
"skills": [],
"trackingCadence": "balanced"
},
"board": {
"columns": [
"Backlog",
"Todo",
"In Progress",
"Review",
"Done"
],
"defaultPriority": "P3",
"defaultOwnerType": "human",
"stackDefaultState": "collapsed",
"columnMeta": {
"Backlog": {
"role": "backlog",
"instructions": "Capture unscheduled work here. Keep enough context to decide whether it belongs in this workflow."
},
"Todo": {
"role": "ready",
"instructions": "Only move work here when its required inputs, acceptance criteria, dependencies, and approvals are ready."
},
"In Progress": {
"role": "active",
"instructions": "Execute the current workflow phase, update the checklist as work happens, and record blockers immediately."
},
"Review": {
"role": "review",
"instructions": "Finished work waits here for the owner to check in the game. Only the owner moves it to Done; if it isn't fixed, the owner moves it back with feedback."
},
"Done": {
"role": "terminal",
"instructions": "Only accept work whose criteria and required review are satisfied. Preserve the completion report and evidence."
}
},
"columnColors": {
"done": "yellow"
}
},
"tui": {
"defaultView": "list",
"showDetailPane": true,
"listSort": "status"
},
"fields": {
"priority": true,
"assignee": false,
"tags": true,
"dueDate": false,
"ownerType": false,
"tools": false
},
"notifications": {
"browser": false,
"sound": false,
"soundId": "soft",
"statusChanges": true,
"taskEdits": true,
"subtaskCompletions": true,
"editDebounceMs": 2000
}
}
+27
View File
@@ -0,0 +1,27 @@
## Deepgrain Foundry: working the board
The board is the owner's to-do list. `docs/kandown.md` explains how kandown works here.
- **Work on tasks only when the owner asks** ("do the next task", "do t8"). Don't pick up work
on your own.
- **Kinds of task.**
- **Todo**: things to build or fix.
- **Backlog, tagged `discussion`**: give options with trade-offs and a recommendation, in
chat, and write nothing in code until the owner decides. Then record the decision.
- **Backlog, tagged `idea`**: ideas for later. Leave them alone unless asked.
- Questions get answers.
- **Keep the owner's words.** Never rewrite or tidy the owner's text in `## Context`, and don't
rename tasks the owner made. Add what you learn as `## Subtasks` with `report:` lines, or in
the `report` field.
- **When a task is finished**, move it to **Review** (that is "done, please check") and set the
`report` field: what changed, and how to check it in the game. Never move a task to Done:
the owner does that after checking it. If the owner moves it back with feedback, keep the
feedback and work from it.
- **Log your work.** Add an entry at the top of `docs/agent-log.md` with the date, the task id
and title, what changed, the files touched, the tests run, and anything left open.
- **Record decisions.** When the owner decides something about the design, add it to the
decisions list in `docs/DESIGN.md` with the date and the reason they gave.
- **Commit task files with the work** they describe. The owner may be editing tasks too: stage
only the task files you changed.
- **New tasks the owner asks for**: `kandown create "title" --to Todo` (add `-t discussion` or
`-t idea` for Backlog), then put the owner's words under `## Context`.