プランの登録・管理
Nolto の中心的な概念は プラン(Plan)です。プランは AI 開発ツールが生成した実装計画(Markdown 形式)を表し、登録すると LLM が自動的に日本語のビジネスサマリに変換します。分類器が正確にフェーズとステータスを読み取れるよう、プランを作成する前に Claude Code プラグインの推奨テンプレートを参照してください。
プランの登録
REST API で登録する
curl -X POST \
-H "Authorization: Bearer $VIDOCS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan": {
"title": "決済機能の実装",
"content": "## 概要\nStripe Checkout を導入する...",
"status": "not_started",
"phases": [
{
"title": "Stripe SDK のセットアップ",
"content": "npm install @stripe/stripe-js ...",
"status": "not_started"
},
{
"title": "Checkout セッションの実装",
"content": "サーバーサイドで checkout.sessions.create を呼び出す...",
"status": "not_started"
}
]
},
"source": {
"kind": "api"
},
"git": {
"userName": "tanaka",
"userEmail": "tanaka@example.com"
}
}' \
"https://nolto.app/api/projects/$PROJECT_ID/plans"
MCP で登録する
Claude Code や Codex からは、register_plan ツールで同じ操作を行えます:
> このプランを Nolto に登録して
MCP 経由の場合、projectId を省略すると デフォルトプロジェクト が使われます。
リクエストスキーマ
plan(必須)
| フィールド | 型 | 必須 | 制限 | 説明 |
|---|---|---|---|---|
title | string | Yes | 1〜500文字 | プランのタイトル |
content | string | Yes | 1〜50,000文字 | プランの本文(Markdown) |
status | string | No | enum | 初期ステータス(デフォルト: not_started) |
phases | array | No | 最大50件 | フェーズ(サブタスク)のリスト |
plannedStartAt | string | No | ISO 8601 | 予定開始日時 |
plannedEndAt | string | No | ISO 8601 | 予定終了日時 |
phases[]
| フィールド | 型 | 必須 | 制限 | 説明 |
|---|---|---|---|---|
title | string | Yes | 1〜500文字 | フェーズのタイトル |
content | string | Yes | 1〜20,000文字 | フェーズの詳細 |
status | string | No | enum | 初期ステータス(デフォルト: not_started) |
plannedStartAt | string | No | ISO 8601 | 予定開始日時 |
plannedEndAt | string | No | ISO 8601 | 予定終了日時 |
source(任意)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
kind | string | No | "file" / "api" / "mcp" / "manual"(デフォルト: "api") |
path | string | No | ファイルパス(最大1,024文字) |
url | string | No | URL(最大2,048文字) |
hash | string | No | コンテンツハッシュ(最大128文字、重複検出用) |
git(任意)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
userName | string | No | Git ユーザー名(最大255文字) |
userEmail | string | No | Git メールアドレス(最大320文字) |
レスポンス
{
"planId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"transformStatus": "queued",
"detailUrl": "https://nolto.app/projects/.../plans/..."
}
構造化済みプランを直接登録する(register_structured_plan)
AI ツールが既にプランを正規の 2 階層 StructuredPlan(グループ → タスク)に構造化済みの場合は、MCP の register_structured_plan でそれを直接渡せます。register_plan と次の点だけが異なります:
register_plan | register_structured_plan | |
|---|---|---|
| 入力 | raw markdown | raw markdown + StructuredPlan |
| 構造抽出(haiku) | あり | なし(スキップ) |
| 日本語サマリ(sonnet) | あり | あり |
| 課金 | 変換 1 回分 | 変換 1 回分(同じ) |
haiku の抽出ステップを省けるぶん処理が速くなります。plan.phases は受け付けず、フェーズ構造は必ず structuredPlan で渡します。各フィールドの型・サイズ上限は MCP ツールリファレンス を参照してください。
structuredPlan 内の status は not_started / in_progress / done の 3 値のみです(discarded はプラン全体の plan.status でのみ指定可)。構造が不正な場合はフィールドパス付きのエラーで拒否され、register_plan への自動フォールバックはありません。
LLM Transform パイプライン
プランを登録すると、バックグラウンドで LLM による変換ジョブがキューに入ります。
処理の流れ
- プランが登録される →
transformStatus: "queued" - バックグラウンドワーカーがジョブを取得して処理
- 技術的な実装プランが 日本語のビジネスサマリ に変換される
- 結果がプランの
display_title、display_summary、display_bodyに保存される
出力構造(ReadablePlan)
LLM が生成する構造化データ:
| フィールド | 説明 |
|---|---|
displayTitle | ビジネス向けのプランタイトル |
summary | 1〜2文の要約 |
background | プランの背景・経緯 |
goal | 達成すべき目標 |
tasks | 主要タスクのリスト |
impact | ビジネスへの影響 |
reviewPoints | レビュー時の確認ポイント |
risks | リスクと懸念事項 |
phases[].displayTitle | 各フェーズのビジネス向けタイトル |
phases[].summary | 各フェーズの要約 |
再変換
変換結果を更新したい場合は、再変換をリクエストできます:
curl -X POST \
-H "Authorization: Bearer $VIDOCS_TOKEN" \
"https://nolto.app/api/projects/$PROJECT_ID/plans/$PLAN_ID/retransform"
再変換は月間の変換クォータを 1 回分消費します。 クォータの詳細は レート制限・Tier またはビリングページを参照してください。
ステータス管理
プランのステータス
| ステータス | 日本語 | 説明 |
|---|---|---|
not_started | 未着手 | まだ作業を始めていない |
in_progress | 進行中 | 現在作業中 |
done | 完了 | 完了した |
discarded | 破棄 | 進めないことにした |
許可される遷移
not_started ──→ in_progress ──→ done
│ │ │
│ ↓ │
│ not_started │
│ │ │
↓ ↓ ↓
discarded ←──── discarded in_progress
│
↓
not_started
not_started→in_progress,discardedin_progress→done,discarded,not_starteddone→in_progress(再開)discarded→not_started(復活)
ステータスを更新する
REST API:
curl -X POST \
-H "Authorization: Bearer $VIDOCS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "done", "message": "全タスク完了"}' \
"https://nolto.app/api/projects/$PROJECT_ID/plans/$PLAN_ID/status"
MCP:
> このプランのステータスを完了にして
フェーズのステータスと親プランの自動派生
フェーズのステータスを更新すると、親プランのステータスが 自動的に派生 されます:
| フェーズの状態 | 派生される親プランのステータス |
|---|---|
全フェーズが discarded | discarded |
discarded 以外の全フェーズが done | done |
いずれかのフェーズが in_progress | in_progress |
| 上記以外 | not_started |
curl -X POST \
-H "Authorization: Bearer $VIDOCS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "done"}' \
"https://nolto.app/api/projects/$PROJECT_ID/plans/$PLAN_ID/phases/$PHASE_ID/status"
アサイニー(担当者)
プランに担当者を設定できます。担当者はプロジェクトメンバーである必要があります。
# 担当者を設定
curl -X POST \
-H "Authorization: Bearer $VIDOCS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userId": "user-uuid-here"}' \
"https://nolto.app/api/projects/$PROJECT_ID/plans/$PLAN_ID/assignee"
# 担当者をクリア
curl -X POST \
-H "Authorization: Bearer $VIDOCS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userId": null}' \
"https://nolto.app/api/projects/$PROJECT_ID/plans/$PLAN_ID/assignee"
プラン登録時に git.userEmail を指定すると、そのメールアドレスに一致する Nolto ユーザーが自動的にコントリビューターとして紐づきます。