Official agent skill

Docs Impact Classifier

by microsoft in microsoft/apm

A skill your agent uses to classify the documentation impact of a pull request diff, returning one of three verdicts -- no-change, in-place edit, or structural change -- with bounded LLM cost.

OfficialMITAuto-check passedDevelopment

Install Docs Impact Classifier

skills CLI
$ npx skills add microsoft/apm --skill docs-impact-classifier -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install microsoft/apm docs-impact-classifier --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/microsoft/apm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.apm/skills/docs-impact-classifier .claude/skills/docs-impact-classifier && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
docs-impact-classifier
GitHub stars
4k
Token cost
~1.8k tokens
SKILL.md length
826 words
Files
1
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses to classify the documentation impact of a pull request diff, returning one of three verdicts -- no-change, in-place edit, or structural change -- with bounded LLM cost.

  • Works in 3 steps: L0 deterministic path gate (no LLM) → L1 symbol extraction + corpus grep (no… → L2 LLM verdict (1 call, bounded context)
  • Classify the documentation impact of a pull request diff
  • SKILL.md covers Architecture, Step 1: L0 deterministic path…, Step 2: L1 symbol extraction +… and Step 3: L2 LLM verdict (1…, plus 5 more sections
  • Calls gh

What it does

Docs Impact Classifier is an agent skill from microsoft/apm, published by the product's own GitHub organization. Use this skill to classify the documentation impact of a pull request diff, returning one of three verdicts -- no-change, in-place edit, or structural change -- with bounded LLM cost. Activate as a sibling skill of docs-sync; the orchestrator calls this first, before any panel spawn, to keep cost floor at 1 LLM call when no docs work is needed. Reads .apm/docs-index.yml as the corpus map; never reads the full corpus.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Monitoring and alerting, LLM cost and token optimization and Pull requests. The repository describes itself as: Agent Package Manager. The licence is MIT.

When your agent uses it

  • Classify the documentation impact of a pull request diff
  • Returning one of three verdicts -- no-change
  • Structural change -- with bounded LLM cost

Example prompts

  • “/docs-impact-classifier”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. L0 deterministic path gate (no LLM)
  2. L1 symbol extraction + corpus grep (no LLM)
  3. L2 LLM verdict (1 call, bounded context)

What it can do on your machine

Read from SKILL.md and the folder at commit 280b8a7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Docs Impact Classifier loads about 1.8k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 826 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~111
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from microsoft/apm at commit 280b8a7, republished under its MIT licence (© microsoft). 826 words, ~1,786 tokens.

Download SKILL.mdSave it as .claude/skills/docs-impact-classifier/SKILL.md (or your agent's skills folder).
name
docs-impact-classifier
description
Use this skill to classify the documentation impact of a pull request diff, returning one of three verdicts -- no-change, in-place edit, or structural change -- with bounded LLM cost. Activate as a sibling skill of docs-sync; the orchestrator calls this first, before any panel spawn, to keep cost floor at 1 LLM call when no docs work is needed. Reads .apm/docs-index.yml as the corpus map; never reads the full corpus.

docs-impact-classifier

Single responsibility: given a PR diff and the .apm/docs-index.yml corpus map, emit ONE classification verdict.

This skill is the cost gate for the entire docs-sync system. ~70% of PRs should exit at verdict no_change with zero panel spawn.

Architecture

This is a 3-layer funnel inside a single skill invocation:

  • L0 deterministic path gate -- pure file-path matching, no LLM.
  • L1 symbol extraction + corpus grep -- pure text processing, no LLM.
  • L2 LLM classifier -- bounded ~8 KB context envelope, 1 call.

The skill returns the verdict from the earliest layer that can decide.

Step 1: L0 deterministic path gate (no LLM)

Read .apm/docs-index.yml to load no_impact_paths[] and user_surface_paths[]. Get the changed file list from the PR diff (gh pr diff --name-only).

if every changed file matches no_impact_paths AND none match user_surface_paths:
    return {verdict: "no_change", confidence: "high", source: "L0", scope_pages: []}

This handles:

  • Test-only PRs (tests/**)
  • CI workflow PRs (.github/workflows/**)
  • Doc-only PRs (docs/**) -- out of scope, docs-sync doesn't review docs PRs
  • Primitive-only PRs (.apm/**)
  • Script and meta PRs

Expected hit rate: ~70% of PRs short-circuit here.

Step 2: L1 symbol extraction + corpus grep (no LLM)

If L0 did not exit, extract user-observable symbols from the diff:

  • CLI command names -- grep diff for ^@click.command, ^@cli.command, or any apm <verb> mention in added/removed lines.
  • Flag names -- grep diff for ^@click.option, --[a-z-]+ patterns.
  • Public API symbols -- added/removed def <name> in src/apm_cli/__init__.py or src/apm_cli/api/**.
  • Schema keys -- added/removed keys in apm.yml, apm.lock.yaml, apm-policy.yml parsers.
  • Error strings -- added/removed string literals in user-facing error paths (look for _rich_error, click.echo, raise ... Error().

For each extracted symbol, consult .apm/docs-index.yml#symbol_index to find the documented pages. Collect all hits into candidate_pages[].

Also grep -rn <symbol> docs/src/content/docs/ for symbols NOT in the index (catches drift between index and corpus).

Step 3: L2 LLM verdict (1 call, bounded context)

If L1 found zero candidate pages AND zero schema/CLI/flag changes: return {verdict: "no_change", confidence: "medium", source: "L1", scope_pages: []}.

Otherwise, invoke the doc-analyser persona with EXACTLY this context envelope (must fit in ~8 KB tokens):

  • PR title + body (first 500 chars)
  • Diff stats (gh pr diff --stat output)
  • .apm/docs-index.yml (the whole file; it's ~8 KB seeded, may grow)
  • L1 candidate pages with +/-5 lines of context per hit
  • Path-classification summary from L0
  • pr_doc_diff_paths[]: the list of paths under docs/src/content/docs/** that the PR itself already modifies (drives the in_place_resolved downgrade rule in "In-place-resolved detection" below).

Ask doc-analyser to return JSON matching this schema:

json
{
  "verdict": "no_change" | "in_place_resolved" | "in_place" | "structural",
  "confidence": "low" | "medium" | "high",
  "scope_pages": ["docs/src/content/docs/..."],
  "structural_proposal": {
    "new_pages": [{"slug": "...", "rationale": "..."}],
    "moved_pages": [{"from": "...", "to": "..."}],
    "toc_changes": "<one-paragraph>"
  },
  "reasoning": "<one-paragraph: what surface changed, what docs are affected, why this verdict>"
}

structural_proposal is populated only when verdict is structural. scope_pages is populated for in_place and structural verdicts.

Verdict semantics

VerdictMeaningPanel sizeCost
no_changeNo user-observable surface changed0 panel spawns~0-1 LLM call
in_place_resolvedDoc impact existed, but the PR's OWN diff already patches every page in scope_pages -- author already did the work0 panel spawns; skill emits NO advisory~1 LLM call
in_placeOne to a few pages need a paragraph or section update; no new pages, no TOC changeN candidate pages x (doc-writer + python-architect) + editorial-owner + growth-hacker + CDO~6-12 LLM calls
structuralA new page is needed, OR an existing page should be split/merged, OR the TOC needs to change to fit a new conceptarchitect first (TOC delta), then in-place panel for affected pages~10-15 LLM calls
Show full SKILL.md (320 more words)Show less

In-place-resolved detection (false-alarm killer)

BEFORE returning in_place, intersect your scope_pages[] with the list of files the PR itself touches under docs/** (provided to you by the orchestrator under pr_doc_diff_paths[]). If EVERY scope page already appears in pr_doc_diff_paths, downgrade to in_place_resolved and emit reasoning of the form "Author already patched <page list>". This is the well-behaved-author path; the skill stays silent.

If only SOME scope pages are pre-patched, keep in_place and list the REMAINING (unpatched) pages in scope_pages[]. Note the pre-patched ones in reasoning for transparency.

Rename / breaking-change heuristic (PR 1244 class)

When the L1 layer reports an ADDED public symbol that matches an EXISTING public symbol's name in the corpus (e.g. PR adds apm update but apm update already appears in 9 docs pages with different semantics), this is a RENAME or BREAKING SEMANTIC CHANGE. Bias toward structural (not in_place):

  • the existing page describing the OLD semantics may need to SPLIT into two pages (old verb under new name + new verb keeping old name)
  • the TOC may need a NEW reference page for the renamed verb
  • every passing mention in the corpus needs verification

Do NOT collapse a rename into in_place just because the affected pages already exist. The shape of the work is structural even when no new page is strictly required.

Anti-patterns (verdict shape errors)

  • Returning in_place with empty scope_pages -- invalid; orchestrator will reject.
  • Returning structural without structural_proposal -- invalid.
  • Returning in_place when EVERY scope page is in pr_doc_diff_paths -- should be in_place_resolved.
  • Inflating structural to seem thorough -- the CDO will catch this. Return the minimal true verdict.
  • Missing the rename heuristic above and emitting in_place for a verb-swap PR.
  • Reading the corpus (the .md files themselves) at L2 -- context budget breach. You read the index, not the corpus.

Output contract

Return a SINGLE JSON document matching the schema in Step 3 as the final message of your task. No prose around the JSON. The orchestrator parses your last message.

© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .apm/skills/docs-impact-classifier of microsoft/apm.

Open the folder on GitHubat commit 280b8a7

Compare with similar skills

Docs Impact Classifier next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Docs Impact Classifier compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Docs Impact Classifier this skillmicrosoft/apm4k—~1.8kAutomated safety check: PassMIT
Skill Reviewermicrosoft/GitHub-Copilot-for-Azure255—~482Automated safety check: PassMIT
App Observabilitygrafana/skills278—~1.8kAutomated safety check: PassApache-2.0
Monitoring Observabilityyonatangross/orchestkit288—~2.2kAutomated safety check: PassMIT
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Babysit PR To Pass CIsgl-project/sglang37k2 repos~3kAutomated safety check: PassApache-2.0

Similar skills

  • Skill Reviewer

    microsoft/GitHub-Copilot-for-Azure

    Official

    Review skill PRs with structured severity-rated feedback covering token budgets, routing conflicts, and repo conventions.

    255 GitHub stars~482 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • App Observability

    grafana/skills

    Official

    Get RED metrics + service maps + frontend RUM + AI/LLM monitoring out of Grafana Cloud — Application Observability (tracesspanmetrics from OTel traces, p50/p95/p99 latency, exemplar-to-trace…

    278 GitHub stars~1.8k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Monitoring Observability

    yonatangross/orchestkit

    Monitoring and observability patterns for Prometheus metrics, Grafana dashboards, Langfuse v4 LLM tracing (astype, scorecurrentspan, shouldexportspan, LangfuseMedia), and drift detection.

    288 GitHub stars~2.2k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Babysit PR To Pass CI

    sgl-project/sglang

    Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.

    37k GitHub starsUsed in 2 repos~3k tokens
    DevelopmentAuto-check passed
  • Load Ansible project development guidelines, testing conventions, PR review processes, and code structure reference into context

    71k GitHub stars~427 tokensUpdated yesterday
    DevelopmentAuto-check passed

More from microsoft/apm

All 27 skills in this repo
  • Cut Release

    microsoft/apm

    Official

    A skill your agent uses to cut an APM release from the current worktree: assess whether the cycle since the last tag warrants a patch or minor bump (semver discipline against the…

    4k GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Docs Corpus Audit

    microsoft/apm

    Official

    A skill your agent uses to run a holistic regrounding pass on the entire microsoft/apm documentation corpus against current source code, page-by-page, and emit surgical fixes for stale claims.

    4k GitHub stars~2.6k tokensUpdated yesterday
    Auto-check passed
  • Official

    A skill your agent uses to verify CLAIM-LEVEL grounding of a documentation page (or set of pages) against the source code.

    4k GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Official

    A skill your agent uses to write the PR description (PR body) for any pull request opened against microsoft/apm.

    4k GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed
  • Official

    A skill your agent uses to implement ONE microsoft/apm issue already selected by autopilot-issue-delivery-scheduler.

    4k GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Official

    Drive ONE already selected open pull request in microsoft/apm to mergeable.

    4k GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed

Questions about Docs Impact Classifier

What does Docs Impact Classifier do?

A skill your agent uses to classify the documentation impact of a pull request diff, returning one of three verdicts -- no-change, in-place edit, or structural change -- with bounded LLM cost. Docs Impact Classifier is an agent skill from microsoft/apm, published by the product's own GitHub organization. Use this skill to classify the documentation impact of a pull request diff, returning one of three verdicts -- no-change, in-place edit, or structural change -- with bounded LLM cost.

When should I use Docs Impact Classifier?

Docs Impact Classifier fits situations like: classify the documentation impact of a pull request diff; returning one of three verdicts -- no-change; structural change -- with bounded LLM cost.

How do I install Docs Impact Classifier in Claude Code?

Run `npx skills add microsoft/apm --skill docs-impact-classifier -a claude-code`. Or copy the skill folder (.apm/skills/docs-impact-classifier in microsoft/apm) into .claude/skills/docs-impact-classifier in your project. Claude Code loads it when a task matches its description.

How do I install Docs Impact Classifier in Codex?

Run `npx skills add microsoft/apm --skill docs-impact-classifier -a codex`. Or copy the skill folder (.apm/skills/docs-impact-classifier in microsoft/apm) into .agents/skills/docs-impact-classifier in your project. Codex loads it when a task matches its description.

Can I use Docs Impact Classifier in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/apm --skill docs-impact-classifier -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docs-impact-classifier, .gemini/skills/docs-impact-classifier, .github/skills/docs-impact-classifier and .opencode/skills/docs-impact-classifier in your project.

What does Docs Impact Classifier need to run?

Going by SKILL.md and its folder, Docs Impact Classifier needs the command-line tools its instructions call (gh).

Does Docs Impact Classifier access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Docs Impact Classifier safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Docs Impact Classifier use?

Docs Impact Classifier is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Docs Impact Classifier use?

About 1.8k tokens (SKILL.md is roughly 7.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Docs Impact Classifier?

Skills that share tags, products or a category with Docs Impact Classifier: Skill Reviewer (microsoft/GitHub-Copilot-for-Azure, 255 stars), App Observability (grafana/skills, 278 stars), Monitoring Observability (yonatangross/orchestkit, 288 stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Docs Impact Classifier?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/apm, which has 3,968 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 6, 2026.

Source: microsoft/apm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.