# sakd (Sakkuri Done) 🚀
**最速・便利・美しい、Rust製の次世代タスク管理ツール。**
`sakd` は、ターミナル作業の合間に「さっくり」とタスクを管理し、生産性を最大化するために設計されました。シンプルな ToDo 管理から、依存関係を伴う複雑なプロジェクト管理まで、モダンな CLI/TUI スペックでサポートします。
---
## 📑 目次
#### � はじめに
- [概要](#-ツール概要)
- [視覚ガイド](#-視覚ガイド記号と色)
#### 💻 使い方
- [CLI モード (`sakd`)](#-cli-モード-sakd)
- [TUI モード (`sakd-tui`)](#-tui-モード-sakd-tui)
- [インテリジェント機能](#-インテリジェント機能-スマートパース)
#### ⚙️ その他
- [インストール](#-インストール)
- [ライセンス](#ライセンス)
---
## 📖 ツール概要
`sakd` は、ターミナルユーザーに最適な「使い勝手」を追求しています。
- **スピード**: Rust によるネイティブバイナリと内蔵 SQLite により、数千件のタスクも瞬時に処理。
- **柔軟性**: 短いコマンドで操作する「CLI モード」と、全画面でじっくり整理する「TUI モード」を自由に行き来可能。
- **スマートパース**: 「明日 (tm)」「来週の月曜 (mon)」といった自然な略称を理解します。
---
## 🎨 視覚ガイド(記号と色)
リスト表示で現れる記号や色は、あなたの直感を助けるための「情報」です。
### 1. ステータスと警告(Status & Symbols)
タスクの左側に表示される記号です。
| `[ ]` | **Todo**/ 未完了 | 未着手のタスクです。 |
| `v` / `[v]` | **Done** / 完了 | 完了したタスクです。 |
| `>>` | **選択中 (TUI)** | TUIにおいて現在カーソルが合っているタスクを示します。 |
| `*` | **依存警告** | この項目の前に終わらせるべき「別のタスク」が未完了であることを示します。 |
### 2. 優先度(Priority)
ステータスの右側に表示されます。
- `!!!` : **High** (高) - 最優先事項。
- `!!` : **Medium** (中) - 重要な事項。
- `!` : **Low** (低) - 余裕がある時に。
### 3. 緊急度(タイトルのカラー)
タイトルの色は「締め切りの近さ」を表しています。
- **マゼンタ (太字)**: 期限超過(Overdue)
- **赤色**: 今日が締め切り
- **黄色**: 3日以内
- **緑色**: 1週間以内
- **灰色**: それ以降、または期限なし
---
## 💻 CLI モード (`sakd`)
CLI モードは、コマンド一つで素早く情報を引き出したり、操作したりするのに適しています。
### 1. タスクの追加 (`add` / `a`)
新しいタスクをデータベースに登録します。
- **引数なしで実行した場合**:
対話型プロンプトが起動します。`タイトル` → `優先度` → `タグ` → `依存関係` → `期限` → `説明` の順に詳しく聞かれるため、初心者でも迷わず追加できます。
- **引数ありで実行した場合**:
コマンドラインから直接値を設定します。
```bash
sakd add "設計書作成" --priority high --tags work --limit 2d
```
### 2. 一覧表示・検索 (`list` / `l`)
現在のタスクを一覧で表示します。
- **引数なしで実行した場合**:
「未完了」のタスクをすべて表示します。
- **引数ありで実行した場合**:
`--all` で完了済みを含めたり、`--tag` や `--priority` で特定のタスクを抽出できます。
```bash
sakd list --tag work --priority high
```
### 3. タスクを完了にする (`done` / `d`)
ステータスを Done に切り替えます(既に Done の場合は未完了に戻ります)。
- **引数なしで実行した場合**:
対話形式でどのタスクを完了にするか選ぶメニューが表示されます。
- **引数ありで実行した場合**:
指定した ID のタスクを即座にトグルします。
```bash
sakd done 12
```
### 4. 詳細を確認する (`show` / `s`)
タスクの全メタデータ(作成日時、長い説明文、依存しているタスクなど)を確認します。
- **引数なしで実行した場合**:
どのタスクの詳細を見るか選択するメニューが表示されます。
- **引数ありで実行した場合**:
指定した ID のタスクの詳細を整形して表示します。
**実行例 (`sakd show 12`):**
```text
--- Task Details ---
ID: 12
Priority: High
Tags: work, critical
Depends on: [10, 11]
Title: 設計書作成
Done: No
Limit: 2026-02-05 23:59
Description: プロジェクトの基本設計とDB設計を含む資料。
```
### 5. タスクを編集する (`edit` / `e`)
既存のタスクの内容を上書きします。
- **引数なしで実行した場合**:
まず編集したいタスクを ID 指定または選択し、その後、現時点の値を初期値とした対話型プロンプトで修正を行えます。
- **引数ありで実行した場合**:
ID と修正したい項目をフラグで指定します。
```bash
sakd edit 10 --title "修正後の課題" --limit tomorrow
```
### 6. タスクを削除する (`remove` / `r`)
タスクを完全に消去します。
- **引数なしで実行した場合**:
削除するタスクを安全に選ぶためのメニューが表示されます。
- **引数ありで実行した場合**:
指定した ID のタスクを削除します(ミス防止のため確認プロンプトが出ます)。
**実行例 (`sakd remove 10`):**
```text
? Are you sure you want to remove this task? (y/N) > y
Task removed.
```
---
## 🖼️ TUI モード (`sakd-tui`)
TUI モードは、独立したコマンド `sakd-tui` として提供されています。全画面でタスクを管理するための強力なツールです。
### 起動方法
```bash
sakd-tui
```
### 画面の構成
- **左側(リスト)**: タスクの ID、ステータス、優先度、依存警告、タイトルが一覧表示。
- **右側(詳細)**: 選択中のタスクの全情報。未完了の依存タスク名などもここで確認できます。
- **最下部**: 入力モードやヘルプメッセージが表示されます。
### 主要な操作キー(Normalモード時)
| `j`/`k` (↑/↓) | 移動 | リスト内の選択タスクを移動。選択中は背景が青くなります。 |
| `Space` | 完了トグル | ポップアップを介さず一瞬で Done/Todo を切り替え。 |
| `a` | 新規追加 | ポップアップ入力で全項目を入力。 |
| `e` | 編集 | 選択中のタスクの全項目を安全に編集。 |
| `r` | 削除 | 確認の後、タスクを消去。 |
| `s` | **提案ジャンプ** | 期限と優先度から算出した「今やるべきタスク」へ瞬間移動。 |
| `o` | ソート変更 | 期限順 → 優先度順 → ID順 へ、リストの並びを切り替え。 |
| `f` | タグ等フィルタ | 入力した文字列を含むタグを持つタスクのみを表示。 |
| `p` | 優先度フィルタ | `l`/`m`/`h` キーで特定の優先度のみを抽出します。 |
| `h` | 全表示切替 | 完了済みタスクを表示/非表示にします。 |
| `q` / `Esc` | 終了 | TUI環境を閉じてターミナルに戻ります。 |
---
## 🧠 インテリジェント機能 (スマートパース)
`sakd` は、あなたが入力した曖昧な時間表現を論理的に解釈します。
**日付の省略形:**
- `t` or `today`: 今日
- `tm` or `tomorrow`: 明日
- `2d`, `3d` ...: N日後の日付
- `1w`: 7日後の日付
- `mon` ~ `sun`: 次の該当曜日の日付(例: 今が火曜日に `sat` と打てば、今週の土曜日)
**時刻の省略形:**
- `last`: 23:59 (当日の最終)
- `morning`: 09:00 / `noon`: 12:00 / `evening`: 18:00
- `1h`, `2h` ...: 現在時刻から N 時間後
**「指定なし(空白)」の扱い:**
優先度や説明など、入力したくない項目は何も打たずに `Enter` を押すだけでOKです。内部的にスマートに「指定なし(None)」として記録され、UI 上も邪魔にならないように表示されます。
---
## ⚙️ インストール
### 1. crates.io からインストール (推奨)
以下のコマンドでインストール可能です。
`sakd` (CLI) と `sakd-tui` (TUI) の両方のバイナリが同時にインストールされます。
```bash
cargo install sakd
```
### 2. ソースからビルド
最新の開発版を使いたい場合などは、リポジトリから直接インストールできます。
```bash
git clone https://github.com/twil3/sakd.git
cd sakd
cargo install --path .
```
---
## ライセンス
[MIT License](LICENSE)