sakd 0.6.1

Fastest, most useful CLI task manager
Documentation
# 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)