README file from
GithubChecklist Flow
A calmer way to organize tasks and ordered lists in Obsidian.
Install · Usage · Settings · Privacy · Contributing
Completed tasks move out of the way. Numbered lists stay numbered.
Why Checklist Flow?
Obsidian lists are excellent for thinking, but long checklists can become noisy as work changes. Checklist Flow keeps the editor calm: completed tasks sink below unfinished work, and same-level items can be rearranged with a direct press-and-drag gesture.
Everything stays in ordinary Markdown. There is no special syntax, no database, and no metadata hidden in your notes.
Highlights
| Capability | What you get | |
|---|---|---|
| ✅ | Auto-sink completed tasks | Finished work moves below unfinished siblings in the same contiguous list. |
| 🖐️ | Drag task checkboxes | Reorder same-level tasks while child notes and sublists stay attached. |
| 🔢 | Drag ordinary list numbers | Reorder numbered lists by pressing the number, not just checkboxes. |
| 🔢 | Stable numbering | A list starting at 5. remains anchored to 5. after sorting or dragging. |
| 🧱 | Markdown-native | Works with regular - [ ], - [x], 1., and nested Markdown blocks. |
| 🔒 | Local and private | No account, telemetry, network request, or note-content collection. |
Quick start
Requirements
- Obsidian
1.5.0or later - A desktop or mobile Obsidian vault
Install from a release
-
Open the latest release.
-
Download
main.js,manifest.json, andstyles.css. -
Create this folder in your vault:
<vault>/.obsidian/plugins/checklist-flow/ -
Copy the three downloaded files into that folder.
-
In Obsidian, open Settings → Community plugins, refresh the list, and enable Checklist Flow.
Install with BRAT
If you already use BRAT, add this repository:
hemashishi12/obsidian-checklist-flow
Usage
Complete and auto-sink tasks
Use ordinary Markdown tasks:
- [ ] Read the paper
- [x] Send the reply
- [ ] Write the summary
With auto-sink enabled, checking Send the reply becomes:
- [ ] Read the paper
- [ ] Write the summary
- [x] Send the reply
Only sibling items in the same contiguous list are reordered. Nested notes and child lists remain attached to their parent.
Drag to reorder
Press and hold a task checkbox:
- [ ] First
- [ ] Second
- [ ] Third
Or press and hold an ordinary ordered-list number:
1. First
2. Second
3. Third
While dragging:
- an insertion line shows the drop position;
- the dragged line remains highlighted;
- the cursor changes to a closed hand;
- text selection is suppressed until the gesture ends.
A quick click still toggles a checkbox. List numbers have no hover effect and remain visually unchanged until a press-and-drag gesture starts.
Supported scope
| Works | Not covered |
|---|---|
| Regular Markdown task lines | Reading-view rendered checklists |
| Ordinary numbered-list lines | Tasks plugin query results |
| Same-level sibling items | Kanban cards, tables, and canvas cards |
| Nested blocks attached to a parent task/list | Content inside fenced code blocks |
Checklist Flow intentionally edits only the affected contiguous list block. That keeps behavior predictable in notes that mix outlines, quotes, code, and tasks.
Settings
Open Settings → Community plugins → Checklist Flow.
| Setting | Default | Description |
|---|---|---|
| Auto-sink completed tasks | On | Move completed tasks below unfinished siblings. |
| Drag from checkbox or number | On | Enable press-and-drag reordering. |
| Done status characters | xX |
Checkbox values treated as completed. |
Privacy
Checklist Flow runs locally inside Obsidian. It does not:
- collect note contents or usage analytics;
- make network requests;
- require an account or external service;
- add telemetry, tracking identifiers, or metadata to notes.
Development
Setup
npm install --no-audit --no-fund
Commands
npm test
npx tsc --noEmit
npm run build
npm run dev
npm run build generates these files in the repository root:
main.js
manifest.json
styles.css
Copy them into a folder named checklist-flow inside your vault’s .obsidian/plugins/ directory to test a local build.
Project layout
src/
├── checklist.ts # Pure Markdown parsing, sorting, and reordering
├── editor-extension.ts # CodeMirror drag and auto-sink integration
├── main.ts # Plugin lifecycle, commands, and settings
└── settings.ts # Shared setting types and defaults
tests/
└── checklist.test.ts # Markdown transformation behavior tests
docs/
└── assets/
└── hero.svg # Generic documentation illustration
Releasing
- Update
versioninmanifest.json,package.json, andpackage-lock.json. - Run tests, type checking, and a production build.
- Push a tag whose name exactly matches the manifest version (for example,
0.2.0, without avprefix). - GitHub Actions builds and creates a draft release with
main.js,manifest.json, andstyles.css. - Review the draft, add release notes, and publish it. The workflow also creates build provenance attestations.
Contributing
Issues and pull requests are welcome. For behavior changes, please include tests covering Markdown edge cases such as indentation, nested blocks, blank-line boundaries, ordered numbering, and CRLF line endings.
- Fork the repository.
- Create a focused branch.
- Add tests for new behavior.
- Run
npm testandnpx tsc --noEmit. - Open a pull request with a short before/after description.