mcpField
S
start-issue

start-issue

github.com/vkehfdl1開発01.2k 回インストール35 週間前に更新
リポジトリ

start-issue について

現在のリポジトリでMarshroomのカート内Issueに着手するスキルです。リポジトリとIssueを照合してブランチを作成し、続行前にステータスをrunningへ更新する手順を必須とします。

主な機能

  1. 01カート内Issueをリポジトリと照合
  2. 02候補からIssueを選択
  3. 03mainを更新してIssueブランチを作成
  4. 04ステータスをrunningに設定して確認
  5. 05Issue詳細とブランチ情報を表示

活用シーン

  1. 01選んだカート内Issueの作業を開始
  2. 02機能またはホットフィックス用ブランチを準備
  3. 03計画前にIssueのコンテキストを読み込む

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/vkehfdl1/marshroom --skill start-issue

インストール後、Claude Code で/start-issueを入力して読み込まれたか確認します。

詳細

現在のリポジトリで Marshroom カートの課題への対応を開始します。

重要な要件

  • state.json の更新は必須です。ブランチを作成した後、${MARSHROOM_STATE:-~/.config/marshroom/state.json} の課題ステータスを必ず running に更新してください。更新に失敗した場合は、停止してエラーを報告してください。黙って処理を続行しないでください。
  • marsh start が利用できる場合はそれを使用してください。利用できない場合は、直接 jq でアトミック書き込みを行ってください(手順 10 を参照)。

手順

  1. ${MARSHROOM_STATE:-~/.config/marshroom/state.json} を読み取り、JSON を解析します
  2. cart 配列を抽出します。カートが空の場合は、Marshroom アプリで課題を追加するようユーザーに伝えます
  3. git remote get-url origin を実行して、現在のリポジトリのリモート URL を取得します
  4. リモート URL から owner/repo を抽出します(HTTPS と SSH の両方の形式に対応)
  5. 現在のリモートと一致する repoCloneURL(HTTPS)または repoSSHURL(SSH)を持つカート項目に絞り込みます。それぞれから owner/repo を抽出して比較します
  6. 一致するカート項目がない場合は、このリポジトリにはカート内の課題がないことをユーザーに伝えます
  7. $ARGUMENTS に課題番号が含まれている場合は、その項目を見つけます。それ以外の場合、一致する項目が複数あれば一覧を表示し、ユーザーに選択を求めます
  8. git checkout main && git pull origin main を実行して、main を最新の状態にします
  9. ブランチを作成してチェックアウトします:git checkout -b {branchName} ブランチ名は Feature/#N または HotFix/#N にします。N は課題番号です
  10. 課題ステータスを更新します(必須):
    • まず、次を試します:marsh start #{issueNumber}
    • marsh が PATH に見つからない場合は、次の方法で直接アトミック更新を行います:
      STATE_FILE="${MARSHROOM_STATE:-~/.config/marshroom/state.json}"
      TMP="$(mktemp "${STATE_FILE}.XXXXXX")"
      jq --argjson n ISSUE_NUMBER '.cart |= map(if .issueNumber == $n then .status = "running" else . end)' \
        "$STATE_FILE" > "$TMP" && mv -f "$TMP" "$STATE_FILE"
      
    • state.json を読み取り、ステータスが running であることを確認して、更新が成功したことを検証します
  11. 課題のコンテキストを挿入します:
    • 一致したカート項目から issueBody フィールドを読み取ります
    • null でない場合は、"## Issue Details" ヘッダーの下に表示します
    • これにより、エージェントは対応すべき内容をすべて把握できます
  12. ブランチが作成されたことを確認し、次の情報を表示します:
    • 課題:#{issueNumber} {issueTitle}
    • ブランチ:{branchName}
    • リポジトリ:{repoFullName}
    • ステータス:running
  13. 課題解決の計画を開始してよいか、ユーザーに許可を求めます。ユーザーが許可した場合は、/plan モードを使って計画を開始します。

コメント