CtrlK
BlogDocsLog inGet started
Tessl Logo

azure-api-review

Shared Azure REST API review rules for OpenAPI (Swagger) and TypeSpec specifications. Contains cross-cutting review guidelines used by ARM API reviewers, code review agents, and CI workflows. USE FOR: reviewing API specs for naming, security, property design, resource lifecycle, and versioning compliance. DO NOT USE FOR: authoring TypeSpec files (use azure-typespec-author), SDK generation, or releasing packages.

60

Quality

71%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.github/skills/azure-api-review/SKILL.md
SKILL.md
Quality
Evals
Security

Azure API Review -- Shared Rules

This skill contains cross-cutting API review rules that apply regardless of whether the specification is authored in OpenAPI v2 (Swagger) JSON or TypeSpec. These rules are the single source of truth -- referenced by the format-specific instruction files and review agents.

When to Use

  • Reviewing Azure REST API specification PRs (OpenAPI JSON or TypeSpec)
  • Building review agents or CI workflows that validate API specs
  • Understanding Azure API design rules that span both OpenAPI and TypeSpec formats

Reference Files

Each reference file covers one cross-cutting rule area with:

  • The canonical rule definition
  • Links to authoritative external sources (RPC contract, Azure REST API Guidelines, TypeSpec docs)
  • Format-specific guidance for OpenAPI JSON and TypeSpec
  • Rule IDs for citation in review findings
ReferenceRule AreaKey Rule IDs
secret-detection.mdProactive secret detection in API propertiesSEC-SECRET-DETECT
property-mutability.mdWrite-only, conditional read-only, immutability, update tolerance, and field ownership rulesOAPI027, OAPI020, OAPI029, OAPI030, OAPI031, OAPI034
provisioning-state.mdprovisioningState requirements for ARM resourcesRPC-Async-V1-02, RPC-Async-V1-03
naming-conventions.mdNaming, casing, and Azure terminology--
enum-best-practices.mdEnum extensibility and boolean alternatives--
tracked-resource-lifecycle.mdRequired CRUD operations and resource move for tracked ARM resourcesRPC-Put-V1-22, RPC-Get-V1-05, RPC003
policy-compatibility.mdAzure Policy compatibility rules for API designPLCY001–PLCY009
template-deployment.mdARM Template Deployment engine compatibilityTD001–TD003
availability-zones.mdAvailability zone property contract and zone immutability--
field-ownership.mdValue preservation (array ordering, data types, casing)OAPI024, OAPI025, OAPI026
what-if-preflight-compliance.mdWhat-If noise prevention and preflight validation contractWHATIF-001–005, PREFLIGHT-001–005
lro-final-state-via.mdLRO polling and final-state-via decision table--
suppression-review-criteria.mdSuppression approval/rejection decision frameworkRPC-SUPPRESS-GA, RPC-SUPPRESS-SCOPE
linter-rule-coverage.mdLinter rule ID → instruction file mapping (130+ rules)--
example-quality.mdExample file quality: orphan detection, coverage, descriptive valuesEX-ORPHAN, EX-COVERAGE, EX-DESCRIPTIVE-VALUES
design-decisions.mdGrey-area design trade-off frameworks (10 decision matrices)DD-001–DD-010
pattern-validation.mdAllowlist vs. denylist pattern constraints; Unicode bypass risk; severity matrixOAPI-PATTERN-ALLOWLIST

Authoritative External Sources

These external documents are the upstream authorities. When they conflict with each other, the precedence order is:

  1. Azure Resource Provider Contract (RPC) -- ARM control-plane contract (highest precedence for ARM resources)
  2. Azure REST API Guidelines -- general Azure API design (highest precedence for data-plane)
  3. TypeSpec Azure library docs -- TypeSpec-specific patterns for Azure
  4. ARM wiki / RP guidelines -- supplementary ARM guidance

Design Principles

These principles guide how the ARM API Reviewer agent, its instruction files, and reference files are designed and maintained:

  1. Expert persona. The agent operates as a seasoned engineer -- meticulous, skeptical, and uncompromising on quality -- with years of hands-on experience designing APIs for Azure and other cloud providers: globally distributed, highly scalable, reliable, and secure services that have earned customer trust. It works alongside experienced human reviewers who hold every Azure service to the highest standards of security, reliability, consistency, performance, and maintainability. Missing a violation means a broken SDK, a security hole, or an inconsistency that millions of Azure customers will encounter. Findings should reflect depth of judgment, not mechanical rule-checking alone.
  2. Consistency and reusability. Every rule is defined in exactly one place (a reference file or an instruction file section) and cross-referenced everywhere else. No duplication. When the same concept applies to OpenAPI and TypeSpec, the shared reference file covers both formats. File structure, naming, upstream-alignment comments, and severity levels follow uniform conventions across all files.
  3. Low maintenance overhead. The files are designed so that maintainers spend minimal effort. Updates are needed only when upstream guidance (RPC contract, Azure REST API Guidelines, ARM wiki) changes. When that happens, a maintainer refreshes the affected instruction/reference files, updates the Upstream alignment date, and the change propagates through all cross-references automatically.

Maintenance & Upstream Alignment

The instruction files and reference files in this skill are derived from the authoritative external sources listed above. They are not replacements for those documents — they distill the most commonly violated rules into a structured format optimized for LLM-based review agents.

Why inline rules instead of raw document references: LLM review agents produce more consistent, actionable findings when rules are codified with explicit rule IDs, severity levels, and fix suggestions. Raw upstream documents are prose-heavy and not structured for automated consumption.

Keeping rules current:

  • Each instruction file includes an Upstream alignment date in an HTML comment at the top. This date indicates when the rules were last verified against the upstream documents.
  • When an upstream document changes a rule, the corresponding instruction file MUST be updated to match. The upstream document always takes precedence.
  • Rules that overlap with existing linter checks are annotated with (Also enforced by: ...). The review agent should check CI results before flagging these to avoid duplicating linter findings.
  • To avoid conflicts with the azure-typespec-author skill (used for TypeSpec code generation), coordinate rule changes with that skill's maintainers. A rule flagged by the reviewer agent should not contradict guidance given by the authoring agent.
  • Formatting: After editing any .md file under skills/ or agents/, run npm run format from the .github/ directory (Prettier). Note: instruction files (*instructions.md) are excluded from Prettier via .prettierignore and do not need formatting.

Repository Documentation

These documents in this repo provide additional context:

Relationship to Instruction Files

The format-specific instruction files reference these shared rules:

Instruction FileApplies ToRelationship
arm-api-review.instructions.mdspecification/**/resource-manager/**/*.jsonReferences shared rules + adds ARM-specific rules (path structure, PUT/PATCH/DELETE contracts, LRO, ARG compatibility)
openapi-review.instructions.mdspecification/**/*.jsonReferences shared rules + adds generic OpenAPI rules (file structure, x-ms extensions, examples, security definitions)
typespec-review.instructions.mdspecification/**/*.tspReferences shared rules + adds TypeSpec-specific rules (decorators, project structure, anti-patterns)
Repository
Azure/azure-rest-api-specs
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.