GoalToDo is an Obsidian plugin for managing hierarchical goals and tasks directly in ordinary Markdown task lists.
It keeps Markdown as the source of truth and does not create a separate task database.
日本語
Core idea
- A root task becomes a GOAL only after it has child tasks.
- A standalone task remains a normal Obsidian checklist item.
- A parent task is a derived summary. Its status and progress are calculated recursively from its direct children.
- Parent tasks cannot be completed manually; leaf tasks toggle directly between open and done.
- Indenting or outdenting a task with
Tab or Shift+Tab moves its entire subtree.
- [/] Release version 1.0.0 @due(2026-08-01T18:00)
- [x] Finish task editor @completed(2026-07-28T14:30) @priority(high) @assignee(Alex)
- [ ] Publish documentation @due() @priority(middle) @assignee()
The parent above is automatically rendered as a GOAL with its aggregated progress. The Markdown remains editable in place.
Task states
| Markdown |
Meaning |
- [ ] |
Open leaf task |
- [/] |
In-progress parent state derived from direct children |
- [x] |
Completed task |
A leaf task written as [/] is automatically normalized to [ ]. Clicking a leaf checkbox switches only between [ ] and [x].
Inline task properties
GoalToDo recognizes the following plain-text tokens anywhere on a task line:
| Token |
Purpose |
@due(YYYY-MM-DD) |
Due date |
@due(YYYY-MM-DDTHH:mm) |
Due date and time |
@completed(YYYY-MM-DD) |
Completion date |
@completed(YYYY-MM-DDTHH:mm) |
Completion date and time |
@priority(high|middle|low) |
Priority |
@assignee(name) |
Assignee |
Typing @ on a Markdown task line opens suggestions for @due(), @priority(), and @assignee().
In Live Preview, dates, priorities, and assignees become compact controls that can be edited without leaving the note.
Text that does not match the supported syntax remains ordinary Markdown text.
Editor features
- Preserves Obsidian task lists, checkboxes, list indentation, folding, and Enter-to-continue behavior.
- Shows root GOALs with a monochrome checkered flag.
- Displays parent progress as a percentage and completed direct children over total direct children.
- Fills an in-progress parent checkbox clockwise from the top while preserving its checkbox shape.
- Displays due dates with an hourglass and completion timestamps with an hourglass and check.
- Marks overdue due dates in red.
- Displays high, middle, and low priorities with distinct thermometer icons.
- Displays assignees with a person icon.
- Optionally records completion timing using the computer's local date or local date and time.
- Shows decorated controls in Live Preview while leaving the original Markdown visible in Source Mode.
Task view
Open a Markdown file and select the GoalToDo ribbon icon to open a task-focused view for that file.
The view reads from and writes back to the same Markdown document.
- Shows GOAL and TODO counts separately.
- Filters every visible column using existing values.
- Supports text filtering for GOAL, task name, parent task, and assignee.
- Filters by open, in-progress, and completed state.
- Filters deadlines by overdue, today, next seven days, no due date, or a custom range.
- Filters by priority, including unset priority.
- Sorts every column in ascending or descending order.
- Edits task state, due date, completion time, priority, and assignee in place.
- Opens the existing source note at the selected line and temporarily highlights it.
- Hides completed tasks by default.
Settings
- Record completion timing: enabled by default.
- Completion precision: date only or date and time.
- Completion timestamps use the computer's local time zone.
- Reopening a completed task removes its completion timestamp.
Installation
After GoalToDo is accepted into the Obsidian community directory, install it from Settings → Community plugins → Browse.
Manual installation
- Download
manifest.json, main.js, and styles.css from the latest GitHub release.
- Create
<Vault>/.obsidian/plugins/goal-todo/.
- Copy the three files into that folder.
- Reload Obsidian and enable GoalToDo under Settings → Community plugins.
Data model
GoalToDo does not create a proprietary database. Tasks and properties stay in the Markdown document, so they remain readable and editable without the plugin.
Privacy and disclosures
- GoalToDo does not require an account.
- GoalToDo does not make network requests or access files outside the Obsidian vault.
- GoalToDo does not collect telemetry, analytics, or personal information.
- GoalToDo does not display advertisements.
- The optional funding link opens the external Ko-fi page only when selected by the user.
Support
If GoalToDo is useful to you, you can buy me an onigiri on Ko-fi.
Development
pnpm install
pnpm test
pnpm run build
Roadmap
- A vault-wide date aggregation view.
- A focus mode for editing only a selected task subtree.
日本語
GoalToDoは、Obsidianの通常のMarkdownタスクリストで階層式の目標とTODOを管理するプラグインです。
専用データベースは作らず、Markdown本文だけを保存データとして扱います。
基本仕様
- 親を持たず、直属の子TODOを持つルートTODOだけをGOALとして表示します。
- 子を持たない単独TODOは、Obsidian標準のチェックリストとして動作します。
- 親TODOの状態と進捗は、直属の子TODOから再帰的に自動集約されます。
- 親TODOは手動で完了できず、子を持たないTODOだけを
[ ]と[x]の間で切り替えます。
Tab/Shift+Tabでは、子孫を含むサブツリー全体を移動します。
- 進行中の親TODOは、チェックボックス形状を保ったまま真上から時計回りに進捗を表示します。
- Live PreviewではGOAL、進捗、日時、優先度、担当者を装飾表示し、Source ModeではMarkdownをそのまま表示します。
インライン記法
- [/] Ver.1.0.0 公式リリース @due(2026-08-01T18:00)
- [x] タスク編集機能を完成 @completed(2026-07-28T14:30) @priority(high) @assignee(田中)
- [ ] ドキュメントを公開 @due() @priority(middle) @assignee()
@due(...):期限
@completed(...):完了日時
@priority(high|middle|low):優先度
@assignee(...):担当者
- 日付形式:
YYYY-MM-DDまたはYYYY-MM-DDTHH:mm
タスク行で@を入力すると、期限・優先度・担当者の入力候補を表示します。
記法に一致しない文字列は通常のMarkdownテキストとして扱います。
専用タスクビュー
Markdownファイルを開いた状態で左端のGoalToDoアイコンを押すと、そのファイル専用のタスクビューを開きます。
- GOAL、タスク名、親TODO、進捗、期限、優先度、担当者による絞り込みと並べ替え
- 既存値の複数チェックと文字列検索
- 期限超過、今日、今後7日、期限なし、期間指定による絞り込み
- 一覧上でのチェック状態、期限、完了日時、優先度、担当者の変更
- 元ノートの該当行への移動と一時的な強調表示
- 完了済みタスクは初期状態で非表示
専用ビューも元のMarkdown本文を直接読み書きします。
プライバシーと開示事項
- アカウント登録は不要です。
- ネットワーク通信や、Obsidian Vault外のファイルへのアクセスは行いません。
- テレメトリ、利用状況、個人情報を収集しません。
- 広告を表示しません。
- 任意の支援リンクは、ユーザーが選択した場合だけ外部のKo-fiページを開きます。
手動インストール
- 最新のGitHub Releaseから
manifest.json、main.js、styles.cssをダウンロードします。
- Vaultの
.obsidian/plugins/goal-todo/フォルダへ3ファイルを配置します。
- Obsidianの「設定 → コミュニティプラグイン」でGoalToDoを有効にします。
支援
GoalToDoが役に立った場合は、Ko-fiでおにぎりを差し入れられます。