diff --git a/README.md b/README.md index 8ba27ee..05fa969 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Claude Code 用のプラグイン集 | プラグイン | 説明 | |------------|------| | [law-study](./law-study/) | e-Gov法令APIを活用した法令勉強支援。キーワード検索・要約・質問応答 | -| [redmine](./redmine/) | redmine-cli を活用したチケット検索・閲覧・分析・作成・関連付け支援。複数サーバー横断操作対応 | +| [redmine](./redmine/) | redmine-cli を活用したチケット検索・閲覧・分析・作成・更新・削除・関連付け支援。複数サーバー横断操作対応 | ## 使い方 @@ -58,7 +58,7 @@ e-Gov法令APIを使った法令勉強支援。 ### redmine -redmine-cli を使ったチケット検索・閲覧・分析・作成・関連付け支援。 +redmine-cli を使ったチケット検索・閲覧・分析・作成・更新・削除・関連付け支援。 ```text # プロファイル設定 @@ -70,6 +70,9 @@ redmine:search ログイン機能のバグ # チケット作成 redmine:create +# チケット更新・削除・コメント +redmine:update + # チケット関連付け redmine:relation @@ -82,6 +85,7 @@ redmine:analyze - チケット検索(キーワード、プロジェクト、ステータス、担当者等) - チケット詳細・コメント履歴の表示 - チケット作成(対話的にプロジェクト選択・名称→ID解決) +- チケット更新・削除・コメント記入(確認フロー付き) - チケット関連付け(6種のリレーションタイプ対応) - チケット分析(ステータス別集計、担当者負荷、期限切れ警告) diff --git a/redmine/.claude-plugin/plugin.json b/redmine/.claude-plugin/plugin.json index 70bed91..0cd6d08 100644 --- a/redmine/.claude-plugin/plugin.json +++ b/redmine/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "redmine", - "version": "2.1.1", - "description": "redmine-cli を活用したチケット検索・閲覧・分析・作成・関連付け支援プラグイン。プロファイル管理で複数の Redmine サーバーを横断操作。", + "version": "2.2.0", + "description": "redmine-cli を活用したチケット検索・閲覧・分析・作成・更新・削除・関連付け支援プラグイン。プロファイル管理で複数の Redmine サーバーを横断操作。", "author": { "name": "chippy-ao" }, diff --git a/redmine/README.md b/redmine/README.md index d10b796..b13d57a 100644 --- a/redmine/README.md +++ b/redmine/README.md @@ -93,6 +93,20 @@ redmine:relation チケット間のリレーション(関連・ブロック・先行/後続等)を対話的に追加・削除できる。 +### チケット更新・削除・コメント + +```text +redmine:update +``` + +または具体的に: + +```text +redmine:update チケット#123のステータスを完了にして +redmine:update チケット#456にコメントを追加 +redmine:update チケット#789を削除 +``` + ### プロジェクト状況分析 ```text @@ -113,6 +127,7 @@ redmine:config | `redmine:search` | キーワード・プロジェクト・ステータス・担当者等でチケット検索、詳細表示 | | `redmine:create` | 対話的にチケットを作成(プロジェクト選択・名称→ID解決付き) | | `redmine:relation` | チケット間のリレーション追加・削除(6種の関連タイプ対応) | +| `redmine:update` | チケットの更新・削除・コメント記入(名称→ID解決・確認フロー付き) | | `redmine:analyze` | ステータス別集計、担当者負荷、期限切れ警告、優先度分布 | ## 複数の Redmine サーバーを使う @@ -130,7 +145,7 @@ redmine-cli config set-default work ## 制約 -- チケットの更新・削除は未対応(作成・関連付けは対応済み) +- チケットのカスタムフィールド操作は未対応 - 1リクエストあたり最大 100 件の取得制限 ## ライセンス diff --git a/redmine/skills/update/SKILL.md b/redmine/skills/update/SKILL.md new file mode 100644 index 0000000..0ce65a9 --- /dev/null +++ b/redmine/skills/update/SKILL.md @@ -0,0 +1,120 @@ +--- +description: Redmineチケット更新・削除・コメント記入スキル。redmine-cli を使ってチケットの更新・削除・コメント記入を対話的に行う。「redmine:update」「チケットを更新」「ステータス変更」「コメントして」「チケット削除」で起動。 +--- + +# Redmine チケット更新・削除・コメント + +redmine-cli を使って、チケットの更新・削除・コメント記入を対話的に支援する。 + +## 利用する CLI コマンド + +すべてのコマンドは JSON を stdout に出力する。Bash ツールで実行し、出力をパースして整形表示する。 + +- `redmine-cli update-issue [flags]` — チケット更新(フィールド変更・コメント記入) +- `redmine-cli delete-issue ` — チケット削除 +- `redmine-cli get-issue ` — チケット詳細取得(更新前の現在状態確認用) +- `redmine-cli search` — 対象チケットの特定 +- `redmine-cli trackers` — トラッカー一覧取得(名称→ID解決) +- `redmine-cli statuses` — ステータス一覧取得(名称→ID解決) +- `redmine-cli priorities` — 優先度一覧取得(名称→ID解決) +- `redmine-cli members --project ` — メンバー一覧取得(担当者の名称→ID解決) +- `redmine-cli categories --project ` — カテゴリ一覧取得 +- `redmine-cli versions --project ` — バージョン一覧取得 +- `redmine-cli config list` — プロファイル一覧取得 + +すべてのコマンドに `--profile ` を付与してプロファイルを指定する(デフォルトプロファイル使用時は省略可)。 + +## 大前提 + +- **確認必須**: 更新・削除の実行前に必ずユーザーに確認プロンプトを表示する +- **削除は特に慎重に**: 削除操作は取り消せないため、対象チケットの内容を表示した上で再確認する +- チケット情報は参考であり、最新の状態は Redmine 本体で確認するよう補足する + +## フロー + +### -1. 前提チェック + +1. `which redmine-cli` で CLI がインストールされているか確認する +2. **未インストールの場合**、以下を案内して終了する: + - macOS: `brew install chippy-ao/tap/redmine-cli` + - Windows: GitHub Releases (https://github.com/chippy-ao/redmine-cli/releases) から ZIP をダウンロードし、展開して `redmine-cli.exe` を取得。PATH に追加すると便利 + - その他: `go install github.com/chippy-ao/redmine-cli@latest` + +### 0. プロファイル選択 + +`redmine-cli config list` を実行してプロファイルを確認する。 + +- **0件**: 「プロファイルが未設定です。今から設定しましょう」と伝え、AskUserQuestion でプロファイル名・URL・API キーを順に聞いて `redmine-cli config add` を実行する +- **1件**: そのプロファイルを使用する旨を伝え、次のステップに進む +- **複数**: AskUserQuestion で使用するプロファイルを選択 + +### 1. 対象チケットの特定 + +ユーザーの入力からチケット ID を特定する。 + +- **ID が明示されている場合**: そのまま使用 +- **ID が不明な場合**: AskUserQuestion でチケット番号を確認、または `redmine-cli search` で検索して候補を表示 + +### 2. 現在の状態を確認 + +`redmine-cli get-issue --profile

` で対象チケットの現在の状態を取得し、表示する。 + +### 3. 操作の判定 + +ユーザーの入力から操作を判定する: + +- **更新**: フィールド変更(ステータス、担当者、優先度など) +- **コメント**: notes によるコメント記入 +- **更新 + コメント**: フィールド変更とコメントの同時実行 +- **削除**: チケットの削除 + +### 4a. 更新・コメントの場合 + +ユーザーの入力から変更内容を読み取り、不足分のみ質問する。 + +名称→ID解決が必要なフィールド: +- **ステータス**: `redmine-cli statuses --profile

` で一覧取得 +- **トラッカー**: `redmine-cli trackers --profile

` で一覧取得 +- **優先度**: `redmine-cli priorities --profile

` で一覧取得 +- **担当者**: `redmine-cli members --project --profile

` で一覧取得 +- **カテゴリ**: `redmine-cli categories --project --profile

` で一覧取得 +- **バージョン**: `redmine-cli versions --project --profile

` で一覧取得 + +変更内容を一覧表示し、AskUserQuestion で「実行する / 修正する / キャンセル」を確認。 + +「実行する」が選ばれたら: + +```bash +redmine-cli update-issue --profile

[--status-id N] [--assigned-to-id N] [--tracker-id N] [--priority-id N] [--subject "題名"] [--description "説明"] [--category-id N] [--version-id N] [--notes "コメント"] [--private-notes] +``` + +### 4b. 削除の場合 + +対象チケットの情報(ID・件名・ステータス・担当者)を表示し、AskUserQuestion で「本当に削除しますか?この操作は取り消せません」と確認。 + +「削除する」が選ばれたら: + +```bash +redmine-cli delete-issue --profile

+``` + +### 5. 結果表示と次のアクション + +操作結果を表示し、次のアクションを**平易な言葉**で提案する: + +- **更新後**: 更新されたことを伝え、必要に応じて `get-issue` で最新状態を表示 +- **削除後**: 削除されたことを伝える + +提案する次のアクション: +- **別のチケットを更新する**: 同じスキルで継続 +- **チケットを検索する**: `redmine:search` スキルへ案内 +- **チケットを作成する**: `redmine:create` スキルへ案内 + +## エラーハンドリング + +- **CLI 未インストール**: `which redmine-cli` で検出。OS に応じたインストール方法を案内 +- **プロファイル未設定**: `redmine-cli config list` で空を検出。インラインで config add フローを実行 +- **認証エラー・接続エラー**: 「Redmine への接続でエラーが発生しました。以下を確認してください: (1) プロファイルの URL が正しいか (2) API キーが有効か (3) Redmine サーバーが稼働しているか」と案内 +- **チケット未発見 (404)**: 「指定されたチケットが見つかりません。チケット番号を確認してください」と案内 +- **権限エラー (403)**: 「このチケットの更新/削除権限がありません。Redmine の管理者に権限を確認してください」と案内 +- **バリデーションエラー (422)**: Redmine からのエラーメッセージをそのまま表示し、修正を促す