workitem

작성자: microsoft

ADO 또는 GitHub 작업 항목을 읽고, 유사한 과거 PR을 조사한 후, 수정 사항을 구현하고, /create-pr을 위한 브랜치를 준비합니다.

npx skills add https://github.com/microsoft/powerplatform-build-tools --skill workitem

Work Item — Read, Triage, and Implement

Use this skill to read an ADO or GitHub work item, understand its impact on this codebase, research similar past PRs and work items, then implement and leave the branch ready for /create-pr.

Invoke as: /workitem <url-or-id>

Zero user input required. Research first, implement second — never skip the research phase.


Step 0 — Sync knowledge if stale

Before researching or implementing, ensure the knowledge base is current.

grep "## Last sync" memory/ado-knowledge.md 2>/dev/null | tail -1
  • If last sync was ≤ 7 days ago: skip, proceed to Step 1
  • If last sync was > 7 days ago or file missing: run /knowledge-sync inline now, then continue

This ensures known patterns, confirmed fixes, and accepted risks are up to date before you base any implementation on them.


Step 1 — Fetch the work item

GitHub issue:

gh issue view <number> 2>&1
gh issue view <number> --comments 2>&1

ADO work item (requires az CLI):

az boards work-item show --id <id> 2>&1

If only a URL is given, extract the ID and detect the type from the URL pattern:

  • github.com/.../issues/<n> → GitHub issue
  • dev.azure.com/.../workitems/<n> or /_workitems/edit/<n> → ADO work item

Step 2 — Research similar past work (always before touching code)

Extract 2-4 keywords from the work item title/description, then run all three in parallel:

2a — Search merged PRs for similar fixes

gh search prs --repo microsoft/powerplatform-build-tools \
  --state merged \
  --limit 10 \
  "<keyword1> <keyword2>" 2>&1

# For the top 3 most relevant results, read the full body:
gh pr view <past-pr-number> --json title,body,mergedAt,files 2>&1

Look for: how the fix was structured, which files were changed, patterns used.

2b — Search ADO for similar resolved items

az boards query --wiql "
  SELECT [System.Id], [System.Title], [System.State], [System.ChangedDate]
  FROM WorkItems
  WHERE [System.AreaPath] UNDER 'OneCRM\Client\UnifiedClient\AppLifeCycle\PPBT Extensions'
    AND [System.State] IN ('Closed', 'Resolved', 'Done')
    AND [System.Title] CONTAINS '<keyword>'
  ORDER BY [System.ChangedDate] DESC
" --output json 2>&1

# Fetch details for most relevant matches:
az boards work-item show --id <id> 2>&1

2c — Check local knowledge base

Read memory/ado-knowledge.md for any entry matching the work item topic. Check MEMORY.md known customer issues and hard rules.

Research summary (print before proceeding)

Before writing any code, print:

Research findings:
- Similar PRs: <PR titles + numbers, or "none">
- Similar ADO items: <IDs + titles, or "none">
- Applicable hard rules: <from MEMORY.md, or "none">
- Reusable pattern: <describe how the fix should mirror a past fix, or "novel">

If a confirmed fix already exists for the exact same issue in a merged PR, reuse that pattern directly rather than solving from scratch.


Step 3 — Understand impact using architecture (read-only, before branching)

Before touching code, map the work item to the correct layer using the architecture below. Read the relevant source files to understand the current behaviour.

Layer map — where to look:

Work item topicLayerKey files to read
Task input/output, pipeline variable, service connectionbuild-toolssrc/tasks/<name>/index.ts, src/params/auth/getCredentials.ts, src/params/auth/getEnvironmentUrl.ts
pac CLI argument, action logic, auth flowcli-wrappernode_modules/@microsoft/powerplatform-cli-wrapper/dist/actions/<action>.ts
New/changed task definitionbuild-toolssrc/tasks/<name>/task.json, src/tasks/<name>/index.ts
Build, packaging, VSIX, stage GUIDsbuild systemgulp/pack.mjs, extension/task-metadata.json, extension/extension-manifest.json
Vulnerability / dependencydependenciespackage.json overrides, package-lock.json — use /fix-dependencies
Test failureteststest/unit-test/, test/functional-test/

Architecture call chain (for context):

Azure DevOps Pipeline
  → src/tasks/<name>/index.ts          (build-tools: reads inputs, calls cli-wrapper)
  → cli-wrapper: actions/<action>.ts   (assembles pac args, handles auth)
  → pac CLI binary (pac.exe)           (executes, spawned via child_process)
  → Power Platform API

Key constraints:

  • All 32 tasks share the same host abstraction (BuildToolsHost, BuildToolsRunnerParams) — changes there affect every task
  • task.json declares the Azure DevOps UI contract — changing input names is breaking for existing pipelines
  • bundleDependencies packages (azure-pipelines-task-lib, @microsoft/powerplatform-cli-wrapper, fs-extra, semver) ship inside the VSIX — their interfaces are the extension's API surface
  • Four release stages (LIVE / BETA / DEV / EXPERIMENTAL) each have unique task GUIDs in task-metadata.json

Step 4 — Sync with origin and create a branch

Always fetch the latest main before branching:

git fetch origin 2>&1
git checkout main 2>&1
git merge origin/main --no-edit 2>&1

Then create the branch following the project naming convention:

git checkout -b users/<your-alias>/<short-description>
# e.g. users/jbujula/fix-export-solution-timeout

Reference the work item ID in the branch name if it's a tracked ticket:

git checkout -b users/<alias>/<id>-<short-description>

Step 5 — Implement

Make the minimal change that resolves the work item. Follow existing patterns:

  • New task input: add to task.json inputs array AND handle in index.ts via parameterMap
  • Auth issue: check getCredentials.ts and the cloudInstance resolution map
  • Environment URL not found: check the 4-level fallback chain in getEnvironmentUrl.ts
  • pac CLI arg change: this is in cli-wrapper, not this repo — raise issue upstream; workaround via BuildToolsRunnerParams if urgent
  • Build/pack issue: check gulp/pack.mjs and webpack.config.js
  • Dependency vulnerability: use /fix-dependencies

After implementing, always run:

npm run build 2>&1   # must pass before committing
npm test 2>&1        # must pass before committing

Step 6 — Commit

Stage relevant files only (never git add .):

git add src/tasks/<name>/... package.json package-lock.json  # etc.
git commit -m "fix: <short description> (#<work-item-id>)"

Step 7 — Hand off to /create-pr

Leave the branch in a clean, pushed state and note:

  • Work item URL
  • What was changed and why
  • Any follow-up items or known limitations

Then run /create-pr to create the pull request.

microsoft의 다른 스킬

oss-growth
microsoft
OSS 성장 해커 페르소나
agent-framework-azure-ai-py
microsoft
Microsoft Agent Framework Python SDK(agent-framework-azure-ai)를 사용하여 Azure AI Foundry 에이전트를 구축합니다. AzureAIAgentsProvider로 지속적 에이전트를 만들 때, 호스팅 도구(코드 인터프리터, 파일 검색, 웹 검색)를 사용할 때, MCP 서버를 통합할 때, 대화 스레드를 관리할 때, 또는 스트리밍 응답을 구현할 때 사용합니다. 함수 도구, 구조화된 출력, 다중 도구 에이전트를 다룹니다.
development
airunway-aks-setup
microsoft
AKS에서 AI Runway 설정 — 빈 클러스터에서 실행 중인 모델까지. 클러스터 검증, 컨트롤러 설치, GPU 평가, 공급자 설정, 첫 배포를 다룹니다. 시기: "AI Runway 설정", "AKS 클러스터 온보딩", "AI Runway 설치", "airunway 설정", "AKS에 모델 배포", "AKS에서 GPU 추론", "AKS에서 KAITO 설정", "AKS에서 LLM 실행", "AKS에서 vLLM", "AKS에서 모델 서빙 설정", "AI Runway 컨트롤러".
devops
appinsights-instrumentation
microsoft
Azure Application Insights로 웹앱을 계측하기 위한 지침입니다. 원격 분석 패턴, SDK 설정, 구성 참조를 제공합니다. WHEN: 앱 계측 방법, App Insights SDK, 원격 분석 패턴, App Insights란 무엇인가, Application Insights 지침, 계측 예시, APM 모범 사례.
devops
applicationinsights-web-ts
microsoft
브라우저/웹 앱을 Application Insights JavaScript SDK(@microsoft/applicationinsights-web)로 계측합니다. Real User Monitoring(RUM) — 페이지 뷰, 클릭, AJAX/fetch 종속성, 예외, 사용자 지정 이벤트, 백엔드 OpenTelemetry 트레이스와 상관관계가 있는 브라우저 측 GenAI 에이전트 트레이스에 사용합니다. SDK Loader Script 및 npm 설정, 프레임워크 확장(React, React Native, Angular), Click Analytics, 텔레메트리 이니셜라이저, 브라우저에서 생성된 에이전트/도구/모델 스팬에 대한 OTel GenAI 의미론적 규칙을 다룹니다.
devops
azure-ai-anomalydetector-java
microsoft
Azure AI Anomaly Detector SDK for Java로 이상 탐지 애플리케이션을 구축하세요. 단변량/다변량 이상 탐지, 시계열 분석 또는 AI 기반 모니터링을 구현할 때 사용하세요.
development
azure-ai-language-conversations-py
microsoft
azure-ai-language-conversations Python SDK를 사용하여 대화형 언어 이해(CLU)를 구현합니다. ConversationAnalysisClient로 대화 의도와 엔터티를 분석하거나, NLP 기능을 구축하거나, 애플리케이션에 언어 이해를 통합할 때 사용합니다.
development
azure-ai-ml-py
microsoft
Azure Machine Learning SDK v2 for Python. ML 작업 영역, 작업, 모델, 데이터 세트, 컴퓨팅 및 파이프라인에 사용합니다. 트리거: "azure-ai-ml", "MLClient", "workspace", "model registry", "training jobs", "datasets".
development