Locus は、特にAIコーディングアシスタントとの連携を念頭に設計された、Git対応のローカルファーストなタスク管理CLIツールです。
Locusは、AIコーディングアシスタントとの共同作業をより効率的にするCLIです。エージェントから高品質な成果を得るためには、事前によく構造化された仕様書が必要になります。そして複数のエージェントを並行して実行する場合、それらのファイルを管理する高速でローカルな方法が必要になります。GitHub Issuesは概念的には近いですが、クラウド上に存在し、エージェントが呼び出せるCLIから操作するには不便です。
Locusはその解決策です:各タスクがAIアシスタントが読み書きできる独自のMarkdownファイルとして存在する、Gitネイティブでローカルファーストなタスク管理CLIです。シンプルでローカルなGitHub Issuesと考えてください。複雑な作業を小さな管理しやすい単位に分割し、エージェントがより自律的に動作し、大規模なリファクタリングやテスト生成などのタスクで高品質な結果を生み出すことを可能にします。
もちろん、公式のプロジェクトボードを煩雑にすることなく、日々のタスクを管理するための優れたツールとしても使用できます。
AI支援開発ワークフロー
Locus はAI支援開発ワークフローに最適です。複雑な作業を明確に定義された一連のタスクに分割することで、AIに大規模または反復的な作業をより効果的に実行させることができます。
Locus とAIアシスタントを使用したテストファイル生成の一般的なワークフローは次のとおりです:
まず、タスクの汎用テンプレートを作成します。このテンプレートには $FILE_NAME のようなプレースホルダーを含めることができます。
test_template.md:
# $FILE_NAME のテストを作成
- [ ] `docs/testing.md` を読んで、テスト戦略を理解する
- [ ] リポジトリ全体をスキャンして、プロジェクトのコンテキストを把握する
- [ ] `$FILE_NAME` のコードを読んで、その責務と目的を理解する
- [ ] 上記に基づいて、`$FILE_NAME` の新しいテストファイルを作成する
- [ ] ファイル内の各関数について、正常系とエッジケースのテストケースを作成する
- [ ] `docs/testing.md` の観点から作成したテストをレビューし、改善する
- [ ] 最後に、`gh` コマンドを使用してプルリクエストを作成する次に、シンプルなシェルスクリプトを使用して、対象としたいすべてのファイルに対してタスクを生成します。
# srcディレクトリ内のすべての.tsファイルに対してタスクを生成
for FILE in src/**/*.ts; do
# テンプレート内のプレースホルダーを実際のファイル名に置換
TASK_BODY=$(sed "s/\\$FILE_NAME/$FILE/g" test_template.md)
# --bodyオプションを使用して`locus add`でタスクを作成
locus add "$FILE のテストを作成" --tags test,autogen --body "$TASK_BODY"
doneこれで明確に定義されたタスクのリストができました。これらを一つずつお好みのAIエージェントに渡すことができます。
# 特定のタスクの内容を取得し、エージェントにパイプ
locus read "src-services-user-service.ts-のテストを作成" | your-ai-agentこの方法により、AIエージェントに実行ごとに狭く明確に定義されたスコープを提供でき、出力の一貫性と信頼性の向上に役立ちます。
- Git対応の整理機能: タスクは自動的にGitリポジトリごとに整理されます(
~/locus/<ユーザー名>/<リポジトリ名>/) - Markdownベース: タスクはYAMLフロントマターを含むMarkdownファイルとして保存されます
- 柔軟なプロパティ: タグ、ステータス、優先度、無制限のカスタムプロパティをサポート
- スマートなファイル命名: 日付、スラグ、ハッシュによる自動ファイル命名
- タスクプロパティ管理: ファイルを編集せずに任意のプロパティを取得/設定
- JSON出力: スクリプティングや自動化のための機械可読出力
- 国際化: 英語と日本語インターフェースの完全サポート
- クロスプラットフォーム: macOS、Linux、Windowsで動作
# JSRからインストール
deno install -g -A -n locus jsr:@tesso/locus# インストールせずに実行
npx @tesso/locus --versionコマンド:
add <title> - 新しいタスクを追加
edit <fileName> - タスクの内容を編集
list - タスクを一覧表示
tags - タスクファイルのプロパティを管理
set <fileName> - タスクプロパティを設定(柔軟なkey=value構文)
get <fileName> - タスクプロパティを取得
config - 設定を管理
read <fileName> - タスクの内容を表示(フルパス対応)
path <fileName> - タスクファイルの絶対パスを表示
help - ヘルプを表示
コマンドの例
# 基本的な使い方
locus add "認証バグの修正"
# コマンド置換を使用して本文を追加
TASK_BODY="JWTトークンの検証を修正する必要があります"
locus add "認証バグの修正" --body "$TASK_BODY"
# 本文を直接指定
locus add "バグ修正" --body "バグ修正の詳細"
# タグとプロパティを指定
locus add "ダークモードの実装" --tags ui,feature --priority high --status in-progress
# key=value構文でカスタムプロパティを指定
locus add "データベース移行" --tags backend assignee=alice estimate=3h
# Gitコンテキストなしでタスクを作成
locus add "個人的なタスク" --no-git
# タスク情報をJSONとして出力
locus add "新機能" --json# 現在のリポジトリのタスクを表示
locus list
# ステータスでフィルタリング
locus list --status todo
locus list --status in-progress
locus list --status done
# 優先度でフィルタリング
locus list --priority high
locus list --priority normal
locus list --priority low
# タグでフィルタリング
locus list --tags bug,critical
# タスクをソート
locus list --sort created # 作成日でソート(デフォルト)
locus list --sort status # ステータスでソート
locus list --sort priority # 優先度でソート
locus list --sort title # タイトルでソート
# リポジトリごとにグループ化
locus list --group-by-repo
# 詳細表示
locus list --detail
# 全リポジトリのタスクを表示
locus list --all
# JSONとして出力
locus list --json# すべてのタスクファイルを一覧表示
locus tags list
# 特定のファイルのプロパティを表示
locus tags list "fix-auth-bug"
# 特定のプロパティを取得
locus tags get "fix-auth-bug" status
# プロパティを設定/更新
locus tags set "fix-auth-bug" status done
locus tags set "fix-auth-bug" priority high
# プロパティを削除
locus tags rm "fix-auth-bug" assignee
# すべてのプロパティをクリア
locus tags clear "fix-auth-bug"# key=value構文でプロパティを設定
locus set "fix-auth-bug" status=done priority=high
locus set "feature-task" assignee=bob estimate=5h
# 複数のプロパティを一度に設定
locus set "complex-task" status=in-progress assignee=alice reviewer=bob due=tomorrow
# スマートな値の解析
locus set "data-task" count=42 active=true tags=backend,urgent
# 日付パターン
locus set "deadline-task" due=today start=tomorrow end=+7d
# 特定のプロパティを取得
locus get "fix-auth-bug" status
# 出力: done
# すべてのプロパティを取得
locus get "fix-auth-bug"
# 出力:
# date: 2024-01-15
# created: 2024-01-15T10:00:00Z
# status: done
# priority: high
# スクリプト用のJSON出力
locus get "task" --json
locus get "task" status --json# タスクファイルを読む(長い内容は自動的にページャーで表示)
locus read "fix-auth-bug"
# 生のMarkdownを表示(フロントマター含む)
locus read "implement-dark-mode" --raw
# ページャーなしで表示
locus read "update-readme" --pager never
# 特定のページャーを使用
locus read "long-task" --pager less
# 色付き出力を無効化
locus read "task" --no-color
# スクリプティング用にJSONとして出力
locus read "add-tests" --json
# 絶対パスで読む
locus read /path/to/task.md# タスクの絶対パスを取得
locus path "fix-auth-bug"
# すべてのリポジトリからタスクを検索
locus path "implement-feature" --all
# 部分的なファイル名やタイトルで検索
locus path "auth" # 名前やタイトルに"auth"を含むファイルを検索
# 追加のメタデータと共にJSONで出力
locus path "task-name" --json
# Gitコンテキストなしで動作
locus path "task" --no-git
# スクリプトや他のコマンドで使用
cat $(locus path "my-task")
editor $(locus path "todo-task")# 現在の設定を表示
locus config show
locus config show --json # JSON出力
# 設定ファイルパスを表示
locus config path
# 設定ファイルを初期化
locus config init
locus config init --force # 既存の設定を上書きLocusは英語と日本語の両方のインターフェースをサポートしています。言語は複数の方法で設定できます:
# 環境変数で言語を設定(最優先)
export LOCUS_LANG=en # または日本語の場合は "ja"
locus add "New task"
# 設定ファイルで言語を設定
locus config init
# ~/.config/locus/settings.yml を編集し、language.default を "en" または "ja" に設定
# 言語検出の優先順位:
# 1. LOCUS_LANG 環境変数
# 2. 設定ファイルの設定
# 3. システムの LANG 環境変数
# 4. デフォルトで日本語 ("ja")ほとんどのコマンドはスクリプティングや自動化のために --json フラグでJSON出力をサポートしています:
locus add "task" --json
locus list --json
locus read "task" --json
locus path "task" --json
locus config show --json設定は ~/.config/locus/settings.yml に保存されます(XDG Base Directory仕様に準拠)。
詳細な設定ドキュメントについては、以下を参照してください:
- 設定ガイド - 完全な設定リファレンス
- Configuration Guide - 英語版設定ガイド
# タスク保存ディレクトリ
task_directory: "~/locus"
# 言語設定
language:
default: "ja" # 利用可能: "ja" (日本語) または "en" (英語)
# Git統合設定
git:
extract_username: true
username_from_remote: true
# ファイル命名設定
file_naming:
pattern: "{slug}.md"
date_format: "YYYY-MM-DD"
hash_length: 8
# 新規タスクのデフォルト値
defaults:
status: "todo"
priority: "normal"
tags: []
custom: {}
# カスタムデフォルトプロパティをここに追加
# 例: assignee: "unassigned"
# 例: category: "general"タスクはYAMLフロントマターを含むMarkdownファイルとして保存されます:
---
date: 2024-01-15
created: 2024-01-15T10:30:00Z
tags:
- feature
- backend
status: in-progress
priority: high
# カスタムプロパティ
assignee: alice
estimate: 8h
reviewer: bob
---
# ユーザー認証の実装
APIエンドポイントにJWTベースの認証を追加する。
## 要件
- [ ] ログインエンドポイント
- [ ] トークンリフレッシュ機能
- [ ] ログアウト機能- Deno >= 2.0
# リポジトリをクローン
git clone https://github.com/tesso57/locus.git
cd locus
# 開発モードで実行
deno task dev
# テストを実行
deno task test
# バイナリをビルド
deno task compiledeno task dev- 開発モードで実行deno task test- カバレッジ付きでテストを実行deno task lint- リンターを実行deno task fmt- コードをフォーマットdeno task check- フォーマットチェック、リント、テストを実行deno task compile- 全プラットフォーム用のバイナリをビルドdeno task install-local- ローカルに 'locus' コマンドとしてインストール
タスクを使わずにCLIを直接実行することもできます:
# denoで実行
deno run --allow-all src/cli.ts
# npxで実行(npmでDenoがインストールされている場合)
npx deno run --allow-all src/cli.ts
# JSRから直接実行
deno run jsr:@tesso/locus
# JSRからnpxで実行
npx @tesso/locus- 設定ガイド - Locusの設定に関する包括的なガイド
- Configuration Guide - Configuration guide in English
- English README - English version of this README
このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。