mcpField
A
azure-devops

azure-devops

github.com/sanjay3290開発447353 回インストール7 週間前に更新
リポジトリ

azure-devops について

OAuth または PAT 認証と REST API v7.1 を使って Azure DevOps を操作するコマンドラインスキルです。作業項目、リポジトリ、パイプライン、Wiki、テストなどを扱います。

主な機能

  1. 01OAuth または PAT 認証
  2. 02作業項目と添付ファイルの管理
  3. 03リポジトリとプルリクエストの確認
  4. 04イテレーションとパイプラインの管理
  5. 05コード、Wiki、作業項目の検索
  6. 06テストとセキュリティアラートの管理

活用シーン

  1. 01プロジェクトの作業項目を作成・更新
  2. 02リポジトリ、ブランチ、ビルドの確認
  3. 03プロジェクトのコードや Wiki を検索
  4. 04テスト計画とセキュリティアラートの確認

インストール

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

$npx skills add https://github.com/sanjay3290/ai-skills --skill azure-devops

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
requirements.txt
scripts/
api_client.py
attachments.py
auth.py
core.py
environments.py
pipelines.py
policies.py
repos.py
search.py
security.py
test_plans.py
variable_groups.py
wiki.py
work_items.py
work.py

詳細

Azure DevOps

OAuth または PAT 認証と REST API v7.1 を使用した、Azure DevOps との包括的な統合です。

初回セットアップ

オプション 1:OAuth(推奨)

OAuth デバイスコードフローでログインします(「Visual Studio Code」のプロンプトが表示されます)。

python scripts/auth.py login --org MyOrganization

URL にアクセスし、デバイスコードを入力して認証してください。トークンは自動的に更新されます。

オプション 2:PAT

個人用アクセストークンでログインします。

python scripts/auth.py login --org MyOrganization --pat YOUR_PAT

https://dev.azure.com/{org}/_usersSettings/tokens で、次のスコープを設定した PAT を作成します。

  • 作業項目:読み取りと書き込み
  • コード:読み取りと書き込み(リポジトリ/PR 用)
  • ビルド:読み取りと実行(パイプライン用)
  • Wiki:読み取りと書き込み
  • テスト管理:読み取りと書き込み
  • Advanced Security:読み取り(セキュリティアラート用)
  • プロジェクトとチーム:読み取り
  • ID:読み取り(ユーザー検索用)
よく使うコマンド

認証ステータスを確認します。

python scripts/auth.py status

ログアウトします。

python scripts/auth.py logout

コア(scripts/core.py)

# List all projects
python scripts/core.py list-projects
python scripts/core.py list-projects --top 10

# List teams in a project
python scripts/core.py list-teams --project MyProject

# Search for a user identity
python scripts/core.py get-identity --search "[email protected]"

作業項目(scripts/work_items.py)

# Get a work item
python scripts/work_items.py get --project MyProject --id 123
python scripts/work_items.py get --project MyProject --id 123 --expand relations

# Create a work item
python scripts/work_items.py create --project MyProject --type "User Story" --title "New feature"
python scripts/work_items.py create --project MyProject --type Bug --title "Fix login" \
  --field System.Description "Login fails on timeout" \
  --field System.AssignedTo "[email protected]"

# Update a work item
python scripts/work_items.py update --project MyProject --id 123 \
  --field System.State "Active" \
  --field System.AssignedTo "[email protected]"

# Batch get multiple work items
python scripts/work_items.py batch-get --project MyProject --ids 1,2,3

# Add children to a parent
python scripts/work_items.py add-children --project MyProject --parent-id 100 --child-ids 101,102

# Link work items
python scripts/work_items.py link --project MyProject --source-id 100 --target-id 200
python scripts/work_items.py link --project MyProject --source-id 100 --target-id 200 \
  --link-type "System.LinkTypes.Dependency-Forward"

# Remove a link
python scripts/work_items.py unlink --project MyProject --source-id 100 --relation-index 0

# Comments
python scripts/work_items.py add-comment --project MyProject --id 123 --text "Working on this"
python scripts/work_items.py list-comments --project MyProject --id 123

# History
python scripts/work_items.py get-revisions --project MyProject --id 123

# List work item types
python scripts/work_items.py list-types --project MyProject

# My assigned items
python scripts/work_items.py my-items --project MyProject

# Items in an iteration
python scripts/work_items.py iteration-items --project MyProject --iteration-path "MyProject\\Sprint 1"

# Backlogs
python scripts/work_items.py list-backlogs --project MyProject --team "MyProject Team"

# Saved queries
python scripts/work_items.py list-queries --project MyProject
python scripts/work_items.py get-query --project MyProject --path "Shared Queries/Active Bugs"
python scripts/work_items.py run-query --project MyProject --query-id "guid-here"

# WIQL query
python scripts/work_items.py run-wiql --project MyProject \
  --query "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.State] = 'Active'"

# Delete / recycle bin
python scripts/work_items.py delete --project MyProject --id 999
python scripts/work_items.py recycle-bin --project MyProject

Git リポジトリと PR(scripts/repos.py)

# List repositories
python scripts/repos.py list --project MyProject

# Get repo details
python scripts/repos.py get --project MyProject --repo my-repo

# Branches
python scripts/repos.py list-branches --project MyProject --repo my-repo
python scripts/repos.py create-branch --project MyProject --repo my-repo --name feature/new --source main

# Commits
python scripts/repos.py search-commits --project MyProject --repo my-repo --path /src --author "john" --top 10

# Pull requests
python scripts/repos.py list-prs --project MyProject --repo my-repo
python scripts/repos.py list-prs --project MyProject --status completed --top 5

python scripts/repos.py create-pr --project MyProject --repo my-repo \
  --source feature/new --target main --title "Add new feature" --description "Details here"

python scripts/repos.py get-pr --project MyProject --repo my-repo --pr-id 42

python scripts/repos.py update-pr --project MyProject --repo my-repo --pr-id 42 --title "Updated title"

# Reviewers
python scripts/repos.py list-reviewers --project MyProject --repo my-repo --pr-id 42
python scripts/repos.py add-reviewer --project MyProject --repo my-repo --pr-id 42 \
  --reviewer-id "guid" --vote 10

# PR comments
python scripts/repos.py list-threads --project MyProject --repo my-repo --pr-id 42
python scripts/repos.py create-thread --project MyProject --repo my-repo --pr-id 42 \
  --content "Looks good!" --file-path "/src/main.py" --line 25
python scripts/repos.py add-thread-comment --project MyProject --repo my-repo --pr-id 42 \
  --thread-id 1 --content "Fixed"

# Complete or abandon PR
python scripts/repos.py complete-pr --project MyProject --repo my-repo --pr-id 42
python scripts/repos.py complete-pr --project MyProject --repo my-repo --pr-id 42 \
  --merge-strategy rebase --keep-source
python scripts/repos.py abandon-pr --project MyProject --repo my-repo --pr-id 42

# Diff
python scripts/repos.py get-diff --project MyProject --repo my-repo --base main --target feature/new

# Browse files
python scripts/repos.py list-files --project MyProject --repo my-repo --path /src --branch main

イテレーションとキャパシティ(scripts/work.py)

# List iterations
python scripts/work.py list-iterations --project MyProject

# Create iteration
python scripts/work.py create-iteration --project MyProject --name "Sprint 5" \
  --start-date 2026-03-01 --finish-date 2026-03-14

# Get iteration details
python scripts/work.py get-iteration --project MyProject --iteration-id "guid"

# Team iterations
python scripts/work.py team-iterations --project MyProject --team "MyTeam" --timeframe current

# Assign iteration to team
python scripts/work.py assign-iteration --project MyProject --team "MyTeam" --iteration-id "guid"

# Capacities
python scripts/work.py get-capacities --project MyProject --team "MyTeam" --iteration-id "guid"
python scripts/work.py set-capacity --project MyProject --team "MyTeam" --iteration-id "guid" \
  --member-id "user-guid" --activity Development --capacity-per-day 6

パイプラインとビルド(scripts/pipelines.py)

# Create pipeline
python scripts/pipelines.py create --project MyProject --name "CI" \
  --repo-id "repo-guid" --yaml-path "/azure-pipelines.yml"

# List builds
python scripts/pipelines.py list-builds --project MyProject --top 5
python scripts/pipelines.py list-builds --project MyProject --status completed --branch main

# Get build details and logs
python scripts/pipelines.py get-build --project MyProject --build-id 100
python scripts/pipelines.py build-logs --project MyProject --build-id 100
python scripts/pipelines.py build-logs --project MyProject --build-id 100 --log-id 3
python scripts/pipelines.py build-changes --project MyProject --build-id 100

# Pipeline definitions
python scripts/pipelines.py list-definitions --project MyProject
python scripts/pipelines.py list-definitions --project MyProject --name "CI"

# Run a pipeline
python scripts/pipelines.py run --project MyProject --pipeline-id 5 --branch develop
python scripts/pipelines.py run --project MyProject --pipeline-id 5 \
  --variable ENV production --variable DEPLOY true

# Pipeline runs
python scripts/pipelines.py get-run --project MyProject --pipeline-id 5 --run-id 200
python scripts/pipelines.py list-runs --project MyProject --pipeline-id 5 --top 10

# Stage management
python scripts/pipelines.py update-stage --project MyProject --build-id 100 --stage Deploy --state retry

# Artifacts
python scripts/pipelines.py get-artifacts --project MyProject --build-id 100

# Queue and cancel builds
python scripts/pipelines.py queue-build --project MyProject --definition-id 10 --branch main
python scripts/pipelines.py cancel-build --project MyProject --build-id 100

# Latest build status
python scripts/pipelines.py build-status --project MyProject --definition-id 10

検索(scripts/search.py)

# Search code
python scripts/search.py code --project MyProject --query "TODO"
python scripts/search.py code --project MyProject --query "connectionString" --top 10

# Search wiki
python scripts/search.py wiki --project MyProject --query "deployment guide"

# Search work items
python scripts/search.py work-items --project MyProject --query "login bug"

Wiki(scripts/wiki.py)

# List wikis
python scripts/wiki.py list --project MyProject

# Get wiki details
python scripts/wiki.py get --project MyProject --wiki-id MyProject.wiki

# List pages
python scripts/wiki.py list-pages --project MyProject --wiki-id MyProject.wiki
python scripts/wiki.py list-pages --project MyProject --wiki-id MyProject.wiki --path /Architecture

# Get page content
python scripts/wiki.py get-page --project MyProject --wiki-id MyProject.wiki --path /Home
python scripts/wiki.py get-page-content --project MyProject --wiki-id MyProject.wiki --path /Home

# Create or update a page
python scripts/wiki.py create-or-update-page --project MyProject --wiki-id MyProject.wiki \
  --path /NewPage --content "# New Page\n\nContent here"

テスト計画(scripts/test_plans.py)

# Test plans
python scripts/test_plans.py list-plans --project MyProject
python scripts/test_plans.py get-plan --project MyProject --plan-id 1
python scripts/test_plans.py create-plan --project MyProject --name "Release 2.0 Tests"

# Test suites
python scripts/test_plans.py list-suites --project MyProject --plan-id 1
python scripts/test_plans.py get-suite --project MyProject --plan-id 1 --suite-id 2

# Test cases
python scripts/test_plans.py list-test-cases --project MyProject --plan-id 1 --suite-id 2
python scripts/test_plans.py add-test-cases --project MyProject --plan-id 1 --suite-id 2 --ids 100,101

# Test results
python scripts/test_plans.py list-results --project MyProject --run-id 50
python scripts/test_plans.py get-result --project MyProject --run-id 50 --result-id 1

Advanced Security(scripts/security.py)

# List security alerts
python scripts/security.py list-alerts --project MyProject --repo my-repo
python scripts/security.py list-alerts --project MyProject --repo my-repo \
  --state active --severity high --type dependency

# Get alert details
python scripts/security.py get-alert --project MyProject --repo my-repo --alert-id 42

変数グループ(scripts/variable_groups.py)

# List variable groups
python scripts/variable_groups.py list --project MyProject

# Get a variable group
python scripts/variable_groups.py get --project MyProject --id 1

# Create a variable group
python scripts/variable_groups.py create --project MyProject --name "Deploy Vars" \
  --variable ENV production --variable REGION eastus --description "Deploy config"

# Update a variable group
python scripts/variable_groups.py update --project MyProject --id 1 --name "New Name" \
  --variable ENV staging

# Add/update a single variable (supports --secret for sensitive values)
python scripts/variable_groups.py add-variable --project MyProject --id 1 \
  --key API_KEY --value "secret123" --secret

# Remove a variable
python scripts/variable_groups.py remove-variable --project MyProject --id 1 --key OLD_VAR

# Delete a variable group
python scripts/variable_groups.py delete --project MyProject --id 1

環境と承認(scripts/environments.py)

# List environments
python scripts/environments.py list --project MyProject

# Create an environment
python scripts/environments.py create --project MyProject --name "Production" \
  --description "Production environment"

# Get environment details
python scripts/environments.py get --project MyProject --id 1

# List checks/approvals configured on an environment
python scripts/environments.py list-checks --project MyProject --id 1

# List pending approvals
python scripts/environments.py list-approvals --project MyProject
python scripts/environments.py list-approvals --project MyProject --state all

# Approve/reject
python scripts/environments.py approve --project MyProject --approval-id "guid" \
  --comment "Looks good"
python scripts/environments.py reject --project MyProject --approval-id "guid" \
  --comment "Needs fixes"

# Delete an environment
python scripts/environments.py delete --project MyProject --id 1

ブランチポリシー(scripts/policies.py)

# List all policies
python scripts/policies.py list --project MyProject
python scripts/policies.py list --project MyProject --branch main --repo my-repo-id

# Get a policy
python scripts/policies.py get --project MyProject --id 1

# List available policy types
python scripts/policies.py list-types --project MyProject

# Create minimum reviewers policy
python scripts/policies.py create-min-reviewers --project MyProject \
  --repo-id "repo-guid" --branch main --min-reviewers 2 --reset-on-push

# Create build validation policy
python scripts/policies.py create-build-policy --project MyProject \
  --repo-id "repo-guid" --branch main --build-definition-id 10

# Update a policy (enable/disable/blocking)
python scripts/policies.py update --project MyProject --id 1 --enabled false
python scripts/policies.py update --project MyProject --id 1 --blocking true

# List policy evaluations for a PR
python scripts/policies.py list-evaluations --project MyProject --pr-id 42

# Delete a policy
python scripts/policies.py delete --project MyProject --id 1

作業項目の添付ファイル(scripts/attachments.py)

# Upload a file
python scripts/attachments.py upload --project MyProject --file ./report.pdf

# Attach an uploaded file to a work item
python scripts/attachments.py attach --project MyProject --id 123 \
  --url "https://dev.azure.com/org/project/_apis/wit/attachments/guid" \
  --comment "Test report"

# Upload and attach in one step
python scripts/attachments.py upload-and-attach --project MyProject --id 123 \
  --file ./screenshot.png --comment "Bug screenshot"

# List attachments on a work item
python scripts/attachments.py list --project MyProject --id 123

# Download an attachment
python scripts/attachments.py download --project MyProject \
  --url "https://dev.azure.com/org/project/_apis/wit/attachments/guid" \
  --output ./downloaded.pdf

# Remove an attachment by relation index
python scripts/attachments.py remove --project MyProject --id 123 --index 0

一般的な作業項目フィールド

フィールド参照名
タイトルSystem.Title
状態System.State
担当者System.AssignedTo
説明System.Description
エリアパスSystem.AreaPath
イテレーションパスSystem.IterationPath
優先度Microsoft.VSTS.Common.Priority
ストーリーポイントMicrosoft.VSTS.Scheduling.StoryPoints
タグSystem.Tags
再現手順Microsoft.VSTS.TCM.ReproSteps
受け入れ条件Microsoft.VSTS.Common.AcceptanceCriteria

リンクの種類

リンクの種類参照名
関連System.LinkTypes.Related
親 → 子System.LinkTypes.Hierarchy-Forward
子 → 親System.LinkTypes.Hierarchy-Reverse
先行System.LinkTypes.Dependency-Forward
後続System.LinkTypes.Dependency-Reverse

トークン管理

認証情報はシステムのキーリングを使用して安全に保存されます。

  • macOS:キーチェーン
  • Windows:Windows 資格情報ロッカー
  • Linux:Secret Service API

サービス名:azure-devops-skill

コメント