Notes and issues
App-owned notes, tables, issues, kanban views, search, and backlinks in Cocurdex.
Notes and issues are first-class product records in Cocurdex. They live in app-owned storage (cocurdex.sqlite), not as an implicit dual-write Markdown tree in your repository.
Why app-owned
| Capability | Why SQLite helps |
|---|---|
| Stable ids | Titles and folders can change without breaking links |
| Transactions | Multi-row updates stay consistent |
| Revisions | Stale writes can be detected |
| Full-text search | Notes and issues share a search index |
| Backlinks / tags | Normalized graphs instead of path scraping |
Markdown remains available for explicit import/export later. Until then, treat the CLI and desktop UI as the only supported writers.
Notes
Notes support:
- Hierarchical folders and note pages (including New subpage)
- A note title field separate from the body
- Markdown bodies, edited as blocks
- Tags
- Backlinks between notes
- Optional association with a workspace
The notes sidebar groups Personal notes and per-workspace sections. Drag a note, or use Move to, to reparent it. Double-click a title, or choose Rename, to edit it in place — the same control the Decks list uses.
Desktop editor
The title sits above the body. Enter or Down from the title moves the caret into the body.
The body placeholder is Start writing, or press "/" for commands…. / opens Insert block:
| Block | Inserts |
|---|---|
| Text / Heading 1–3 | Paragraph or heading |
| Bulleted / Numbered / To-do list | Lists, including checkboxes |
| Quote / Code block / Divider | Common Markdown blocks |
| Table | An editable table |
Tables have click/drag handles on the edge (Click to add, drag to add more). Row and column menus cover insert, delete, Duplicate, Clear contents, alignment (left / center / right), Sort A → Z / Sort Z → A, and Delete table. If the last block in a note is a table, clicking the empty space below it inserts a new empty line so you can keep writing.
Saves show as Saving… / Saved. Prefer stable titles and links so agents and humans can find the same record later.
Reading a PDF in the PDF reader? Select text and choose Add to Note to quote it into a note.
CLI
cocurdex note list
cocurdex note create --title "Architecture notes" --body "## Context\n..."
cocurdex note show <id>
cocurdex note update <id> --body "..."
cocurdex note move <id> --parent <note-id>
cocurdex note move <id> --root
cocurdex note backlinks <id>
cocurdex note tags
cocurdex note delete <id>--body - reads Markdown from stdin; --body-file <path> reads it from a file.
Create a folder:
cocurdex note create --title "PRDs" --folderIssues
Issues are the product’s todo / ticket / board card model. Language differs; the storage is one pool:
| You say | Same model |
|---|---|
| issue | issue |
| todo | issue |
| ticket | issue |
Default board columns (status)
| Id | Title |
|---|---|
backlog | Backlog |
doing | Doing |
review | Review |
done | Done |
Default priority values
| Id | Title |
|---|---|
urgent | Urgent |
high | High |
medium | Medium |
low | Low |
none | No priority |
Views
The built-in view id is project. The issues sidebar lists Views plus shortcuts: Active, All issues, Backlog, and Agent working. Views can group by status or priority, and layout can be board or list. Drag cards (and columns) to update the grouped field. View display applies only to that view. Create extra views with Add view; deleting a view does not delete the issues.
Open an issue for title, description, labels, parent / sub-issues, relations (blocks / related / duplicate), linked Agent sessions, comments, and an Activity feed. Filters can hide completed and canceled cards, or narrow by workspace and label.
List views and create/move operations go through the daemon (desktop UI or CLI) — do not invent issue ids by hand.
cocurdex issue views
cocurdex issue list
cocurdex issue list --status doing [--label <name>] [--parent <id>] [--open]
cocurdex issue create --title "Wire download artifacts" --status backlog --priority high [--labels <ids>] [--parent <id>]
cocurdex issue update <id> [--title <title>] [--body <text>] [--status <column>] [--priority <id>]
cocurdex issue move <id> doing
cocurdex issue show <id> [--detail]
cocurdex issue comment <id> --body "Shipped on main"
cocurdex issue relate <id> blocks|related|duplicate <id>
cocurdex issue unrelate <id> blocks|related|duplicate <id>
cocurdex issue labels
cocurdex issue label create --name "release" [--color <color>]
cocurdex issue label delete <id|name>
cocurdex issue delete <id>Search
cocurdex search "download"
cocurdex search "auth" --kind note
cocurdex search "release" --kind issue --workspace <workspace-id>Working with agents
Give an agent an issue or note directly from the composer: + → Issue or + → Note attaches it as a pill, and the agent receives the full title and body in its prompt. Clicking the pill in the transcript opens the record.
Product skills (/cocurdex-note, /cocurdex-issue, …) call the same CLI surface so agents do not open SQLite. See Skills.
Recommended loop for product work:
/cocurdex-note (PRD or spec) → /cocurdex-issue → /cocurdex-shipPRDs and specs are ordinary notes, stored as private notes by default. Publishing into a repository requires an explicit user request — never assume “open workspace” means “write product docs into the repo.”
What not to do
- Do not treat paths under the project as issue identity
- Do not hand-edit
cocurdex.sqlite - Do not invent issue or note ids in scripts — create via CLI and keep returned ids
- Do not dual-write Markdown copies “for safety” unless you own an explicit export workflow