docs-corpus-audit

작성자: microsoft

이 스킬을 사용하여 microsoft/apm 문서 코퍼스 전체에 대해 현재 소스 코드를 기준으로 페이지별로 전체적인 재근거 검증을 실행하고, 정밀한...

npx skills add https://github.com/microsoft/apm --skill docs-corpus-audit

docs-corpus-audit -- whole-corpus regrounding pass

The docs corpus drifts silently between releases. docs-sync catches drift introduced by individual PRs at PR-open time. This skill catches the accumulated drift that slips past per-PR review -- stale flag names, dead nav links from past IA reshuffles, deprecation banners that outlived their version targets, factual claims whose source-side truth has moved.

The pattern is A1 PANEL + WAVE EXECUTION + S7 DETERMINISTIC TOOL BRIDGE + A8 ALIGNMENT LOOP + A9 SUPERVISED EXECUTION. The corpus is split into disjoint page scopes; one verifier subagent owns each scope; agents extract factual claims, S7-verify against source, apply surgical fixes inline. The orchestrator then runs an alignment-loop pass to re-verify that applied edits actually ground out true.

This skill is ADVISORY but ACTIONABLE: agents apply edits inline on a working branch. The orchestrator is the sole writer to git -- stages, commits, pushes. Maintainer reviews the resulting PR.

Sibling contract with docs-sync

These two skills share substrate. Be explicit:

Shared resourceOwnerBoth use
.apm/docs-index.yml (corpus map)docs-syncyes
doc-writer personasharedyes (per-page edits)
python-architect personasharedyes (S7 verification)
editorial-owner personasharedoptional (voice pass at scale)
cdo personasharedyes (final synthesis)
assets/panelist-return-schema.jsondocs-sync (mirrored)yes

Trigger boundary (avoid DISPATCH COLLISION):

  • docs-sync triggers on a PR event ("PR opened/synchronized", source-diff-driven).
  • docs-corpus-audit triggers on a maintainer ask for a WHOLE-CORPUS pass ("audit the corpus", "reground", "pre-release sweep") -- no PR required, no diff required, the whole corpus is the input.

If a maintainer asks "review this PR's doc impact", route to docs-sync. If they ask "audit all our docs" or "the docs feel stale everywhere", route here.

Architecture invariants

  • Wave-batched, not flat. Pages are partitioned into 6-8 disjoint scopes; each scope is one verifier subagent. Cost scales with wave size, not corpus size. A wave of 6 agents on ~10 pages each is the canonical shape.
  • Disjoint page ownership. Each subagent has EDIT AUTHORITY on its scope only. No two agents touch the same file -- guarantees no merge conflicts during fan-in.
  • S7 verification is mandatory. Every factual claim is verified against deterministic source: uv run apm <verb> --help for CLI, grep -n src/apm_cli/ for symbols, python -c "import ..." for module shape, file-existence checks for nav links. Never assert from LLM recall.
  • Surgical edits only. 1-3 line patches per drift, preserving voice. Restructuring is deferred to the orchestrator post-pass, never auto-applied by per-scope agents.
  • Single-writer interlock for git. Subagents NEVER run git commit, git push, or gh pr <write>. Orchestrator commits per wave; pushes once per session.
  • Alignment loop (A8). After waves return, orchestrator re-greps the corpus for the patterns the agents claimed to fix. Any residue triggers a targeted re-dispatch (max 2 redrafts) or is escalated to maintainer.

Roster (composition, not invention)

Reuse docs-sync's personas. Do NOT invent a one-off "grounding- verifier" role; that's R3 EXTRACT in reverse.

RolePersonaAlways active?
Per-scope verifier+editorpython-architect (S7) and doc-writer (edits), bundled into one subagent prompt per scopeYes -- one per page scope, parallel fan-out
Cross-corpus post-passorchestrator (deterministic greps via scripts/scan-cross-corpus-drift.sh)Yes -- once after waves return
Alignment-loop checkerorchestrator (deterministic re-grep + targeted re-dispatch)Yes -- once after post-pass
Voice pass (optional)editorial-ownerOnly when >20 edits to keep tone coherent
Final synthesiscdoOnce, for the PR summary comment

The per-scope subagent prompt that composes python-architect + doc-writer is in assets/subagent-prompt-template.md -- the orchestrator substitutes scope + working dir + branch and dispatches via the task tool.

Process

1. PROBE (A9 SUPERVISED EXECUTION)
   - Check working tree: docs/src/content/docs/ exists?
   - Check working tree: packages/apm-guide/.apm/skills/apm-usage/
     exists? (Rule-4 backfill target. If missing, the audit cannot
     close Rule 4; ask maintainer before continuing.)
   - Check `.apm/docs-index.yml` reachable.
   - Verify on a working branch (not main).

2. RISK-TRIAGE (orchestrator, ~1 LLM call)
   - Read .apm/docs-index.yml only (NOT the corpus body).
   - Bucket pages by drift risk: HIGH (CLI ref, schemas, consumer
     flows), MEDIUM (producer, enterprise policy), LOW (concepts,
     contributing, troubleshooting, integrations).
   - Decide wave order: HIGH first, MEDIUM next, LOW last.

3. WAVE-PLANNER (orchestrator, deterministic)
   - Partition pages into 6-8 disjoint scopes per wave.
   - Each agent gets ~9 pages, mixed surface types.

4. WAVE EXECUTION (parallel, one subagent per scope)
   - Orchestrator dispatches one task per scope using the prompt
     template in assets/subagent-prompt-template.md.
   - Subagents read pages, extract claims, S7-verify, apply
     surgical edits, return JSON per the docs-sync panelist
     schema (mirrored at assets/panelist-return-schema.json).
   - Validate every return against the schema; reject malformed
     JSON.

5. CROSS-CORPUS POST-PASS (orchestrator, deterministic)
   - Run scripts/scan-cross-corpus-drift.sh to grep for patterns
     a per-scope agent cannot see (IA-reshuffle dead links, stale
     deprecation version targets, phantom flag references).
   - Patch residue inline.

6. ALIGNMENT LOOP (orchestrator, deterministic)
   - Re-run scripts/scan-cross-corpus-drift.sh.
   - Re-grep for claims the agents marked DRIFTED-FIXED.
   - If residue: targeted re-dispatch to the owning agent
     (bounded: max 2 redrafts per wave).

7. COMMIT + PUSH (orchestrator, single writer)
   - One commit per wave; structured message naming closed items.
   - Push to working branch.

8. PR + SUMMARY COMMENT (orchestrator)
   - If no PR exists: open one with the [pr-description-skill]
     (../pr-description-skill/SKILL.md).
   - Post per-wave summary comment: pages audited, drift caught,
     fixes applied, items deferred, alignment-loop residue.

Bundled assets

  • assets/subagent-prompt-template.md -- the per-scope prompt the orchestrator substitutes and dispatches. Composes python-architect (S7) + doc-writer (surgical edit). Loaded once per scope.
  • assets/panelist-return-schema.json -- subagent return schema, mirrored from docs-sync. Loaded once at wave start; validated against every return.
  • scripts/scan-cross-corpus-drift.sh -- deterministic grep sweep for cross-corpus patterns (IA dead links, stale deprecation targets, phantom flags). Non-interactive; emits structured matches on stdout, diagnostics on stderr. Run --help for pattern list. Update this script after each major IA reshuffle.

Cost model

Wave sizePagesSubagentsLLM dispatchesWall time
Small~304~5~3 min
Medium (default)~556~7~5 min
Large~110 (full corpus)12 (two medium waves)~14~10 min

Compared to docs-sync (15-call flat ceiling), this skill scales as O(waves), not O(claims), because per-agent work fits in one context window. S7 verification dominates wall-time, not LLM cost.

Boundary (what this skill does NOT do)

  • Per-PR doc-impact review -- use docs-sync.
  • Single-page typo or copy edit -- direct edit is faster.
  • Writing docs for a brand-new feature -- use docs-impact-architect and doc-writer directly.
  • Auto-merging or pushing without maintainer review.
  • Reviewing code quality, security, or test coverage (out of scope).

Evals

See evals/:

  • evals/content-evals.json -- 3 corpus snapshots with seeded drift (stale CLI flag, dead nav link, expired deprecation target); expected behavior is that the skill catches all three and applies surgical fixes that ground out true on re-verification.
  • evals/trigger-evals.json -- 10 should-trigger + 10 should-NOT- trigger queries, 60/40 train/val. The val split is the ship gate (>=0.5 should-trigger AND <0.5 should-not-trigger).
  • evals/README.md -- how to run.

Provenance

This skill was extracted from a real session that audited the microsoft/apm corpus across 3 waves (PR #1511, 2026-05-27): 112/112 pages audited, 49 surgical fixes, ~25 LLM dispatches, ~30 min wall-time. The session design artifact (genesis hand-off packet) lives in session state, not in this bundle (maintainer- scope, not runtime-loaded).

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