ワンクリックで
ob-userstory
Parse Azure DevOps user story URL and create OpenSpec change. Use when user provides an Azure DevOps URL.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Parse Azure DevOps user story URL and create OpenSpec change. Use when user provides an Azure DevOps URL.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Fallback skill, used when no other skill matches. Use when the task is unclear or no specialized skill applies.
Generic guardrails, foundational rules that all agents follow. Users add specialized guardrails skills for specific concerns. Covers git, secrets, code quality, and security rules.
Create GitHub PRs with screenshots, or read and triage PR review feedback. Use when shipping a feature branch or when user says "I've added comments to the PR".
Create GitLab merge requests with screenshots, or read and triage MR review feedback. Use when shipping a feature branch or when user says "I've added comments to the MR".
Parse work item from any URL using browser automation. Use when user provides a URL that doesn't match GitHub/Azure/Jira CLI platforms, or when backlog platform is 'browser'.
Parse GitHub Issue URL and create OpenSpec change. Use when user provides a GitHub Issue URL.
| name | ob-userstory |
| description | Parse Azure DevOps user story URL and create OpenSpec change. Use when user provides an Azure DevOps URL. |
| license | MIT |
| compatibility | Requires openspec CLI and Azure CLI. |
| metadata | {"author":"copilots","version":"3.1"} |
Browser MCP tools are FORBIDDEN for all Azure DevOps operations.
az config set extension.dynamic_install_allow_preview=true
az extension add --name azure-devops
az login
az devops login --organization https://dev.azure.com/{org}
az devops configure --defaults organization=https://dev.azure.com/{org} project={project}
The configure --defaults line is required: every command below relies on the default org/project instead of passing --organization.
PAT Token, go to https://dev.azure.com/{org}/_usersSettings/tokens
Create with scopes: Work Items (Read & Write) + Code (Read & Write)
Extract Work Item ID from URL
?workitem=193208 → ID: 193208/workitems/edit/193208 → ID: 193208Fetch Work Item
az boards work-item show --id 193208
Do NOT use --organization flag (uses default org).
Extract Key Fields from JSON response:
fields.System.Title → Titlefields.System.Description → Description (may be HTML, strip tags)fields.System.WorkItemType → Typefields.System.IterationPath → Sprintfields.System.State → Statefields.System.AcceptanceCriteria → AC (if present)Create OpenSpec Change
openspec new change "us-{id}-{slug}"
Use these for ALL DevOps operations, browser MCP is FORBIDDEN.
# Read work item
az boards work-item show --id <id>
# Update work item state
az boards work-item update --id <id> --state "Active"
# Read all threads
az devops invoke \
--area git --resource pullRequestThreads \
--route-parameters project={project} repositoryId=<repo> pullRequestId=<id> \
--http-method GET --api-version 7.1
# Post new comment thread (requires body.json)
az devops invoke \
--area git --resource pullRequestThreads \
--route-parameters project={project} repositoryId=<repo> pullRequestId=<id> \
--http-method POST --api-version 7.1 --in-file body.json
# Reply to existing thread
az devops invoke \
--area git --resource pullRequestThreadComments \
--route-parameters project={project} repositoryId=<repo> pullRequestId=<id> threadId=<tid> \
--http-method POST --api-version 7.1 --in-file reply.json
{
"comments": [
{
"parentCommentId": 0,
"content": "Your markdown comment here.",
"commentType": 1
}
],
"status": "active"
}
For replies, parentCommentId should be the ID of the first comment in the thread (usually 1).
Never upload images as PR attachments. Save to openspec change folder and reference via raw URL.
openspec/changes/{change-name}/images/{screenshot}.png
https://dev.azure.com/{org}/{project}/_apis/git/repositories/{repo}/items?path=openspec/changes/{change}/images/{file}.png&versionType=branch&version={branch}&api-version=7.1
Do NOT use _git/ URLs, they return HTML, not raw binary.
# Sprint board with work item
https://dev.azure.com/{org}/{project}/_sprints/backlog/{team}/{project}/Sprint%20110?workitem=193208
# Direct work item
https://dev.azure.com/{org}/{project}/_workitems/edit/193208
# PR
https://dev.azure.com/{org}/{project}/_git/{repo}/pullrequest/{pr-id}
## User Story Parsed
**Work Item:** #{id}
**Title:** {title}
**Type:** User Story
**Iteration:** {sprint}
**State:** {state}
**Change Created:** us-{id}-{slug}
After outputting the above, the lead MUST load the ob-plan-propose skill (interactive mode) to generate the proposal, specs, and tasks. After it completes, STOP and ask the user: "Ready to implement? (yes/no)", do NOT load ob-plan-apply until confirmed.
az CLI for all Azure DevOps operationsob-plan-propose skill after parsing, never skip to implementationob-plan-apply