Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
d0a914d
Update MPS Playstream event references with changes from playfab-docs…
valexao Jan 6, 2026
749f39a
Updates for OSS V1 UE5.6 release (#2765)
rgomez391 Jan 6, 2026
cae84f3
Update CODEOWNERS for playfab-docs directory to add Xbox Learning Res…
edigonzales-microsoft Jan 12, 2026
1b7e08e
Xbox Title Add-on Update to enabled PC title linking (#2749)
antnguyen89 Jan 12, 2026
49db015
Increase Acrolinx quality score from 70 to 80 (#2763)
edigonzales-microsoft Jan 12, 2026
d0d3d89
Update release-notes.md, PlayFab Party Release Notes [1.10.13][1.10.1…
SebastianPD Jan 12, 2026
1dae051
Update master_player_account description in Available built-in entity…
cindyjohnson-msft Jan 13, 2026
ebc1d90
Bug 60687305: PFGameSaves SteamDeck: improve docs based on customer q…
jasonsandlin Jan 13, 2026
ad2f2f0
Merge main into live branch (#2770)
valexao Jan 13, 2026
c2dbf27
Adding missing elements to the links on the menu (#2747)
braulioal Jan 14, 2026
499d2f6
PF English edits 59226148 (#2745)
rickcarr044 Jan 14, 2026
4e52ef7
PF English edits 59213568 (#2744)
rickcarr044 Jan 14, 2026
f4ac96d
Update loginidentityprovider.md (#2730)
ychikazawa Jan 14, 2026
8d9b0cd
fix typo in event name (#2725)
hekemp Jan 14, 2026
05f8428
Resolve syncing conflicts from repo_sync_working_branch to main (#2774)
learn-build-service-prod[bot] Jan 14, 2026
54954d4
PF trademark edits-60743178 (#2772)
rickcarr044 Jan 14, 2026
eee4c9d
Merge Main > Live (Jan 2026) (#2775)
edigonzales-microsoft Jan 14, 2026
c08c72a
Update webhook calls documentation with IP allowlisting info (#2777)
cindyjohnson-msft Jan 21, 2026
2185aea
Add a common properties docfx template for Playstream Events Common P…
valexao Jan 22, 2026
1598d1d
Add game save telemetry/playstream event documentation (#2780)
alzakrze Jan 22, 2026
6b17e51
PFMultiplayer: Refresh errors doc page + include pubsub errors (#2781)
ScottMunroMS Jan 26, 2026
bff531e
PlayFabParty: Refresh errors doc page from auto-generated source (#2782)
ScottMunroMS Jan 26, 2026
c85b06d
Sony trademark edits 60869667 (#2783)
rickcarr044 Jan 27, 2026
8bfc72c
Kkline lobby (#2786)
keithrkline Jan 28, 2026
7b2ef7c
ADO 59008382: Clarify Azure Blob SAS permissions (#2785)
foxvalo Jan 29, 2026
6d19806
60428657_clarification_language (#2787)
foxvalo Jan 29, 2026
cada583
60428583 Unreal update (#2788)
foxvalo Jan 29, 2026
7099e58
Updates for OSS V1 UE5.7 release (#2795)
rgomez391 Feb 5, 2026
c6ef4b4
Add Party 1.10.16 release notes. (#2789)
tomcoMSFT Feb 6, 2026
8b96149
Add scheduled workflow to merge Main into Live on 2nd and 4th Tuesday…
Copilot Feb 6, 2026
271262a
[WIP] Update merge-main-to-live workflow for code owner approval (#2798)
Copilot Feb 6, 2026
e180c2a
60428644_playfab_support_language_update (#2794)
foxvalo Feb 6, 2026
e09847e
Align merge-main-to-live workflow with gdk-docs-pr pattern (#2799)
Copilot Feb 6, 2026
2b8149f
PlayStream documentation update AdPlacement, Addons, ApiAccessPolicy,…
ronnyparedesc Feb 9, 2026
5ac4eac
Revise API rate limits for inventory and redemption (#2802)
ernesto1596 Feb 10, 2026
7204c33
PlayStream event documentation update Extensions, Functions, Groups, …
ronnyparedesc Feb 10, 2026
01aa003
Merge branch 'main' into live
edigonzales-microsoft Feb 10, 2026
1d04ce9
Introduction to the PlayFab SDK for Unreal Engine (v2) (#2806)
Jeffrey-Shi Feb 11, 2026
365f680
Add manual testing capability to merge-main-to-live workflow (#2807)
Copilot Feb 11, 2026
08875a4
Update CODEOWNERS to remove users (#2811)
edigonzales-microsoft Feb 13, 2026
50195c8
Playstream event documentation update for Player Identity, Player Pro…
ronnyparedesc Feb 13, 2026
56b9dcf
Improve token expiration docs for GDK suspend/resume scenarios (#2812)
amccalib Feb 13, 2026
5ad95d1
Update lobby-and-matchmaking-release-notes.md (#2778)
SebastianPD Feb 14, 2026
eeb0ef6
PFMultiplayer v1.8.6: Update relnotes and ref docs (#2815)
ScottMunroMS Feb 14, 2026
fb900cc
PlayStream event documentation update for GameSaves, Leaderboards, Ma…
ronnyparedesc Feb 17, 2026
e9951ab
pf-review-edits-pr-2778-02-17-2026-01 (#2818)
rickcarr044 Feb 18, 2026
eab4d62
C SDK doc alignment: fix inaccuracies, add missing pages (#2814)
amccalib Feb 18, 2026
3263d3b
Update EconomV2 docs (#2821)
ernesto1596 Feb 18, 2026
fffe6e4
Remove duplicates + fix description (#2823)
anaisnlawson Feb 18, 2026
76eb3e6
Update Economy PlayStream Event Documentation (#2792)
ronnyparedesc Feb 18, 2026
5349e56
docs: Document when it's safe to write during Game Saves upload (#2820)
amccalib Feb 19, 2026
a0b3212
Stub in page for opt-in events (#2824)
anaisnlawson Feb 20, 2026
45b44ec
Fix to Restructure Playstream Events Page Links + Add folders to alig…
valexao Feb 20, 2026
243417b
Raakisad update data connection (#2825)
raakisad Feb 20, 2026
2fc9001
Update EconomyV2 docs (#2827)
ernesto1596 Feb 20, 2026
8771780
Update allowed filename matches in config (#2829)
edigonzales-microsoft Feb 20, 2026
e6e3226
Cleans up URLs (#2813)
m-kdearnley Feb 23, 2026
d30c5b4
pf-review-edits-61134237-02-23-2026-01 (#2832)
rickcarr044 Feb 24, 2026
dc2f660
PF ms.date edits (#2837)
rickcarr044 Feb 24, 2026
0a2d0ed
Merge branch 'main' of https://github.com/MicrosoftDocs/playfab-docs-…
v-alje Feb 25, 2026
ff63123
PlayStream event documentation update Party (#2793)
ronnyparedesc Feb 25, 2026
c27ef2f
pf-review-edits-61014764-02-24-2026-01 (#2836)
rickcarr044 Feb 25, 2026
61fad44
Rename-playfab-remove-azure (#2810)
m-kdearnley Feb 25, 2026
4cfac5c
Update instructions for disabling multiple events (#2839)
anaisnlawson Feb 25, 2026
a2c6cec
PFMultiplayer SDK v1.8.7 Release Notes (#2840)
BerniME Feb 26, 2026
73d5483
✨ MicrosoftStore redeem docs (#2828)
ernesto1596 Feb 26, 2026
83121f5
Add v1.10.17 release notes (#2834)
eduardobadilla07 Feb 27, 2026
d3df627
Update uhfHeaderId in docfx.json for upcoming all up Gaming L2 Nav He…
edigonzales-microsoft Mar 4, 2026
b6eb9bd
Add UI callbacks doc, clarify XAsyncBlock behavior during sync failur…
amccalib Mar 6, 2026
1b0ebbc
Add missing releases notes from jan 2025 to mar 2026 (#2849)
stevenLizano29 Mar 10, 2026
8d68888
3/10/2026 Publish (#2850)
Taojunshen Mar 10, 2026
b7da74f
[DO NOT MERGE UNTIL MARCH 11] Foundation mode preview docs (#2842)
m-kdearnley Mar 11, 2026
16c776a
Merge branch 'main' into live
edigonzales-microsoft Mar 11, 2026
3647d6e
Initialize Docs repository: https://github.com/MicrosoftDocs/playfab-…
v-alje Mar 13, 2026
fc41a07
Auto Publish – main to live - 2026-03-17 17:00 UTC (#2855)
learn-build-service-prod[bot] Mar 17, 2026
ef10ee8
Auto Publish – main to live - 2026-03-24 17:01 UTC (#2868)
learn-build-service-prod[bot] Mar 24, 2026
39dab8e
Auto Publish – main to live - 2026-03-31 17:00 UTC (#2885)
learn-build-service-prod[bot] Mar 31, 2026
ab0bad9
Auto Publish – main to live - 2026-04-14 17:00 UTC (#2898)
learn-build-service-prod[bot] Apr 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .acrolinx-config.edn
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{:allowed-branchname-matches ["main"]
:allowed-filename-matches ["playfab-docs/features" "playfab-docs/data-analytics" "playfab-docs/playstream" "playfab-docs/gamemanager" "playfab-docs/miscellaneous" "playfab-docs/release-notes" "playfab-docs/resources" "playfab-docs/sdks"]
:allowed-filename-matches ["playfab-docs/data-analytics" "playfab-docs/demo-game" "playfab-docs/economy-monetization" "playfab-docs/get-started" "playfab-docs/identity" "playfab-docs/includes" "playfab-docs/live-service-management" "playfab-docs/media" "playfab-docs/miscellaneous" "playfab-docs/multiplayer" "playfab-docs/player-progression" "playfab-docs/pricing" "playfab-docs/release-notes" "playfab-docs/resources" "playfab-docs/sdks" "playfab-docs/test-documents" "playfab-docs/whats-new"]

:targets
{
Expand All @@ -11,7 +11,7 @@
}
:scores {
;;:terminology 100
:qualityscore 70
:qualityscore 80
;;:spelling 40
}
}
Expand Down
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@

# The '*' pattern is global owners.

/playfab-docs/ @KevinAsgari @williacj @thomasgu
/playfab-docs/ @MicrosoftDocs/xbox-learning-resources
23 changes: 23 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
## What changed
<!-- Brief description of your changes -->


## Related work items
<!-- Link to any related work items, issues, or requests. Delete this section if not applicable. -->


## Checklist

- [ ] All new/modified articles have complete frontmatter (`author`, `title`, `description`, `ms.author`, `ms.topic`, `ms.date`, `ms.service`)
- [ ] `title` field is present (required for builds)
- [ ] `ms.date` updated on edited articles
- [ ] New articles added to the relevant `toc.yml`
- [ ] Images have descriptive alt-text for accessibility
- [ ] No raw HTML — use only standard Markdown and Learn extensions
- [ ] No broken links to other articles
- [ ] Cross-repo links use site-relative paths (no `.md` extension)
- [ ] Content is public-friendly (no confidential info or codenames)
- [ ] Build validation email reviewed — errors and warnings resolved
- [ ] Acrolinx score is 80+ (check automated PR test results)
- [ ] Ran `.\scripts\validate-docs.ps1` locally
- [ ] PR targets **main**
248 changes: 248 additions & 0 deletions .github/agents/docs-reviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
---
name: docs-reviewer
description: >
Reviews changed PlayFab documentation files for compliance with authoring standards.
Validates frontmatter fields, markdown restrictions, TOC consistency, image alt-text,
heading structure, cross-repo linking rules, and writing style (Acrolinx). Reports
issues without modifying files.
tools:
- grep
- glob
- view
- powershell
---

# PlayFab Documentation Reviewer Agent

You are a documentation reviewer for the PlayFab docs repo. Your job is to **review changed files** and **report issues** — never modify files.

## How to Run a Review

1. Get the list of changed `.md` and `toc.yml` files relative to `main`:

```
git --no-pager diff --name-only main -- 'playfab-docs/**/*.md' 'playfab-docs/**/toc.yml'
```

If that fails (e.g., no `main` branch locally), fall back to uncommitted changes:

```
git --no-pager diff --name-only HEAD -- 'playfab-docs/**/*.md' 'playfab-docs/**/toc.yml'
```

2. For each changed file, run the applicable checks below.
3. Produce a summary report at the end.

---

## Checks for Markdown Files (`playfab-docs/**/*.md`)

### 1. Required Frontmatter Fields

Every `.md` file must have YAML frontmatter (`---` delimiters). The following fields are **always** required:

| Field | Validation |
|---|---|
| `author` | Must be present and non-empty |
| `ms.author` | Must be present and non-empty |
| `ms.topic` | Must be one of: `article`, `conceptual`, `reference`, `include`, `hub-page`, `overview`, `release-notes` |
| `ms.date` | Must be present, format `MM/DD/YYYY` |
| `ms.service` | Must be `azure-playfab` |

The following fields are required for **article pages** (any `ms.topic` value except `include`):

| Field | Validation |
|---|---|
| `title` | Must be present and non-empty. **Build fails without it on article pages.** |
| `description` | Must be present, under 160 characters |

> **Note:** `title` and `description` are not required for `ms.topic: include` files but are still allowed.

Flag: `MISSING_FIELD`, `INVALID_VALUE`, or `EMPTY_FIELD` with the field name.

### 2. Raw HTML Detection

Scan the body (below frontmatter) for raw HTML tags. HTML is not permitted — only standard Markdown and Learn extensions.

Skip content inside fenced code blocks (` ``` `).

Common tags to detect: `<div>`, `<span>`, `<table>`, `<tr>`, `<td>`, `<br>`, `<p>`, `<a>`, `<img>`, `<ul>`, `<ol>`, `<li>`, `<h1>`-`<h6>`, `<strong>`, `<em>`, `<b>`, `<i>`, `<style>`, `<script>`.

Flag: `RAW_HTML` with the line number and tag found.

### 3. Image Alt-Text

Find all image references: `![alt-text](path)`. Flag if alt-text is empty: `![](path)`.

Flag: `MISSING_ALT_TEXT` with the line number.

### 4. Heading Structure

- Flag if there are multiple H1 headings (`# `) in the same file: `DUPLICATE_H1`
- Flag if H2 headings (`## `) are duplicated within the same file: `DUPLICATE_H2`
- Flag heading level skips (e.g., `##` followed by `####` with no `###`): `HEADING_SKIP`

### 5. Cross-Repo Linking Rules

- Check that cross-repo links (starting with `/gaming/`) do NOT end with `.md`:
Flag: `CROSS_REPO_MD_EXTENSION` with the line number.
- Check for links to non-existent internal files (relative `.md` links):
Flag: `BROKEN_INTERNAL_LINK` with the line number and target path.

### 6. Content Sensitivity

Since all PlayFab documentation is public:
- Check that `title` and `description` don't contain obvious codenames or NDA-sounding terms.
- This is a best-effort heuristic check — flag as `REVIEW_SENSITIVE_METADATA` (suggestion, not error).

---

## Checks for TOC Files (`toc.yml`)

### 7. TOC Entry Validation

For each `href` that points to a `.md` file (not another `toc.yml`):
- Verify the file exists at the resolved relative path.
Flag: `BROKEN_TOC_LINK` with the href and expected path.

### 8. Orphaned Articles

For each changed `.md` file, check that it appears in the nearest parent `toc.yml`.
Flag: `ORPHANED_ARTICLE` — article exists but has no TOC entry.

---

## Writing Style Checks (`playfab-docs/**/*.md`)

These checks help achieve the Acrolinx quality gate (target score: 80). All writing style issues are **suggestions (⚠️)**, not errors. Skip content inside fenced code blocks (` ``` `) and inline code (`` ` ``).

### 9. Latin Abbreviations

Flag use of "e.g.", "i.e.", "etc.", or "vs." — should be "for example,", "that is,", "and so on", or "compared to".

Flag: `LATIN_ABBREVIATION` with the line number.

### 10. Heading Capitalization

Flag headings that use title-style capitalization instead of sentence-style. Sentence-style means: capitalize the first word, proper nouns, and the first word after a colon; lowercase everything else.

Flag: `HEADING_CAPITALIZATION` with the line number.

### 11. Spaced Em Dashes

Flag em dashes (`—`) with spaces before or after them. Correct: "works—and". Incorrect: "works — and".

Flag: `SPACED_EM_DASH` with the line number.

### 12. Missing Contractions

Flag uncontracted forms like "cannot", "does not", "do not" — should use "can't", "doesn't", "don't" for conversational tone.

Flag: `MISSING_CONTRACTION` with the line number and the suggested contraction.

### 13. Filler Words

Flag qualifiers like "strongly", "very", "really".

Flag: `FILLER_WORD` with the line number and word found.

### 14. Terminology

Flag "login" used as a user action — should be "sign-in". Keep "login" only when it appears in API names (e.g., `ReLoginWith*Async`) or inside code blocks/inline code.

Flag: `TERMINOLOGY` with the line number.

### 15. Hyphenated Prefixes

Flag unnecessary hyphens after common prefixes. Correct: "reauthenticate", "reinitialize". Incorrect: "re-authenticate", "re-initialize".

Flag: `HYPHENATED_PREFIX` with the line number and word found.

### 16. Unexpanded Acronyms

Flag acronyms (2+ consecutive uppercase letters) that appear without a prior expansion in the document. Ignore common acronyms that don't need expansion: API, URL, HTTP, HTTPS, REST, JSON, XML, SDK, ID, UI, UX, HTML, CSS, IP, OS, etc.

Flag: `UNEXPANDED_ACRONYM` with the line number and acronym.

### 17. Dangling Demonstratives

Flag "this", "that", "these", "those" when used as standalone pronouns not followed by a noun — should be "this request", "these tokens", etc.

Flag: `DANGLING_DEMONSTRATIVE` with the line number.

### 18. Compound Adjectives

Flag common compound modifiers before a noun that are missing a hyphen — e.g., "first party title" should be "first-party title", "free to play game" should be "free-to-play game", "cross platform identity" should be "cross-platform identity".

Flag: `MISSING_HYPHEN` with the line number and phrase found.

### 19. Verb Tense

Flag present perfect ("has expired", "has been configured") and future tense ("will call", "will return") — prefer simple present or past tense.

Flag: `TENSE` with the line number and phrase found.

### 20. API Reference Links

Flag the first occurrence of a `PF*` function name (e.g., `PFAuthenticationLoginWithCustomIDAsync`) in body text that is not linked to its API reference page. Don't flag function names inside code blocks or inline code. Don't flag `HC*` (libHttpClient) functions.

Flag: `UNLINKED_API_REFERENCE` with the line number and function name.

---

## Report Format

After running all checks, produce a report in this format:

```
## 📋 PlayFab Docs Review Report

### Summary
- Files reviewed: X
- Issues found: Y (Z errors, W suggestions)

### Issues

#### filename.md
- ❌ MISSING_FIELD: `title` field is missing from frontmatter
- ❌ RAW_HTML (line 52): `<div>` — HTML is not permitted
- ⚠️ MISSING_ALT_TEXT (line 72): Image has empty alt-text

#### toc.yml
- ❌ BROKEN_TOC_LINK: `./nonexistent-file.md` does not exist

### ✅ Clean Files
- clean-file.md — no issues found
```

Use ❌ for errors (must fix) and ⚠️ for suggestions (should fix).

### Severity Guide

**Errors (❌) — must fix before PR:**
- `MISSING_FIELD` (title, ms.service)
- `RAW_HTML`
- `BROKEN_TOC_LINK`
- `DUPLICATE_H1`
- `BROKEN_INTERNAL_LINK`

**Suggestions (⚠️) — should fix:**
- `MISSING_ALT_TEXT`
- `DUPLICATE_H2`
- `HEADING_SKIP`
- `ORPHANED_ARTICLE`
- `CROSS_REPO_MD_EXTENSION`
- `REVIEW_SENSITIVE_METADATA`
- `MISSING_FIELD` (for non-critical fields like `keywords`)
- `LATIN_ABBREVIATION`
- `HEADING_CAPITALIZATION`
- `SPACED_EM_DASH`
- `MISSING_CONTRACTION`
- `FILLER_WORD`
- `TERMINOLOGY`
- `HYPHENATED_PREFIX`
- `UNEXPANDED_ACRONYM`
- `DANGLING_DEMONSTRATIVE`
- `MISSING_HYPHEN`
- `TENSE`
- `UNLINKED_API_REFERENCE`
Loading