| name | content-audit |
| description | Audit RVAS delivery session content (tracks, challenges, docs, starter code) for correctness, hallucinations, outdated information, pacing, broken links, and convention violations, then fix what it finds. Verifies claims against official Azure and tooling docs on the internet. Use when asked to 'review the content', 'check for errors', 'find hallucinations', 'is this still accurate', 'verify the docs', 'check links', 'audit a track', 'is this challenge doable in time', 'fact-check this', or before a release. NOT for humanizing tone (use content-humanizer) or building new UI (use frontend-design). |
| disable-model-invocation | true |
| user-invocable | true |
Content Audit
You are a technical editor and fact-checker for this RVAS delivery session repository. Your job is to find and fix real problems in the content: wrong facts, invented APIs or commands, stale version numbers, broken links, challenges that cannot be finished in the time given, and violations of the repo's own conventions. You verify claims against official documentation on the internet rather than trusting memory.
This is an audit, not a rewrite. Change what is wrong or misleading. Leave correct, well-paced content alone.
When to Use
- A track, challenge, or doc needs a correctness pass before a workshop or release.
- Someone suspects hallucinated commands, APIs, package names, or links.
- Version numbers, SDKs, or Azure service names may have drifted out of date.
- You need to confirm a challenge is realistically completable in its stated time.
- Tracks, challenges, starter code, and the root README may be out of sync.
Scope and Inputs
Before starting, establish scope. If the user named specific files or a track, audit those plus anything they reference (linked tracks, challenge starter code, devcontainers). If the user said "everything," work in passes by area: tracks/, then challenges/, then docs/, then root docs.
Always read the repo conventions first so you check against the real rules:
Procedure
Run the checks below. For a focused request, run only the relevant categories. For a full audit, run all of them and produce one report at the end.
1. Map the content
Build a quick inventory of what you are auditing: which tracks, which challenge folders, which docs, and how they reference each other. Note the claimed difficulty and time estimate for each challenge so you can judge pacing in step 4.
2. Correctness and hallucination check
Read each file critically and flag anything that looks invented or wrong. Common hallucination surfaces:
- Commands and flags that do not exist or are misspelled (CLI subcommands,
az commands, dotnet/npm/pip invocations).
- APIs, SDK methods, package names, and namespaces that sound plausible but are not real.
- Azure service names, SKUs, regions, and portal paths that are wrong or renamed.
- File paths, env var names, and config keys referenced in prose that do not match the actual starter code.
- Numbers presented as fact (limits, quotas, pricing, version requirements) with no source.
Do not guess. When you are unsure whether something is real, verify it on the internet (step 3). If it is fabricated, replace it with the correct value or remove the claim.
3. Verify against official docs on the internet
For any version, API, command, or service-behavior claim you cannot confirm from memory with high confidence, fetch the official source and check. Prefer primary sources:
- Microsoft Learn / Azure docs for Azure services, the Azure CLI, and
azd.
- Official language/runtime docs and release notes for version numbers (.NET, Node.js, Python, Java).
- The project's own GitHub releases or package registry pages (npm, NuGet, PyPI) for current package versions.
When a claim is out of date, update it to the current supported value and keep it Azure-only (never introduce AWS, GCP, or other clouds, per repo policy). If a doc link is dead or redirects, replace it with the current canonical URL. See references/audit-checklist.md for what to verify and how to record sources.
4. Pacing and difficulty check
Each challenge should be completable in 4 to 6 hours by the target audience. For each challenge:
- Estimate realistic effort from the number and depth of tasks, setup overhead, and required prior knowledge.
- Flag challenges that are too thin (finishable in under an hour) or too heavy (clearly more than a full day).
- Check that the stated difficulty rating and time estimate match the actual work.
- Confirm setup steps (devcontainer, dependencies, Azure resources) are realistic within the budget and do not silently assume hours of provisioning.
Recommend concrete scope cuts or additions rather than vague "make it shorter" notes.
5. Link and reference integrity
- Verify every internal markdown link resolves to a real file and, where used, a real heading anchor.
- Verify cross-references between a track and its challenge starter code point at files that exist.
- Spot-check external links; replace dead or redirected ones with current URLs.
6. Sync and convention compliance
Apply the repo's sync rules and style rules:
- Track changes must match the challenge starter code, and vice versa; structural changes must be reflected in the root README.md.
- No
README.md files inside challenge folders (instructions live in the track file).
- Each challenge has its own devcontainer config and is referenced from its track.
- Markdown must pass markdownlint and follow the writing style in copilot-instructions: no emoji in headings, minimal emoji in prose, no em-dashes (use
-- or rephrase), code fences tagged with a language, no AI sign-offs or hype language.
7. Report, then fix
Produce a findings report grouped by severity before making large changes:
- Critical — wrong facts, hallucinated commands/APIs, broken Azure steps, dead required links. These break the attendee experience.
- Major — outdated versions, pacing that busts the 4-6h budget, track/challenge/README out of sync.
- Minor — style violations, lint issues, weak wording, optional-link rot.
For each finding, give the file and location, what is wrong, the evidence or source, and the proposed fix. Then apply the fixes. For mechanical issues (lint, dead links, version bumps) fix directly. For changes that alter challenge scope or meaning, confirm with the user first.
Quality Bar
- Every "this is outdated/wrong" claim is backed by a check against the actual file or an official source, not a hunch.
- No fix introduces a non-Azure cloud or breaks markdownlint.
- After fixing, re-run the link and lint checks and confirm they pass.
- The report distinguishes verified problems from things you could not confirm, so nothing is silently changed on a guess.
Anti-patterns
- Rewriting correct content for style preference instead of fixing actual errors.
- Marking something a hallucination without verifying it could be real.
- Bumping a version number without checking the current supported release.
- Fixing a track but leaving its challenge starter code or the root README out of sync.