Portable MCP-first toolkit for turning Azure Updates into a customer-facing Azure Update deck.
When To Use
- "Create an Azure Update PPT", "Azure update materials for customers", "This month's Azure Update slides"
- Bootstrapping a blank workspace from this skill's assets/scripts
- Fetching Azure Updates by MCP and classifying them for a customer
- Designing or validating a customer-specific PowerPoint template before automation
- Rebuilding / enriching an existing date folder from manifest JSON
- Fixing labels, notes, region stamps, UPDATE Points, or gate failures in this workflow
When Not To Use
- General PowerPoint editing or design-only cleanup
- Non-Microsoft or non-Azure update decks
- Workflows that do not use Azure Updates MCP or MCP-sourced manifest JSON
- One-off extraction from an arbitrary existing PPTX without this manifest contract
Execution Model
This skill is a toolkit, not a standalone runner. It carries scripts, references, starter config, and a neutral template. Required files: Pre-check › Workspace Contract.
If any workspace contract file is missing, do not build. Run Bootstrap first, then fill .config.
Mode Selection
- Bootstrap: no
.config/config.json, no rootscripts/, or no template folder. RunInitialize-AzureUpdateWorkspace.ps1and fill.config. - Template Design: no customer-approved template exists. Work in PowerPoint first; scripts may inspect, but must not invent the design.
- Template Contract: a candidate template exists. Validate required layouts, placeholders, sections, table shape, hidden-slide policy, and branding before content build.
- Fetch/Prepare: date folder exists but manifests are missing or stale. Use Azure Updates MCP to write
fetched-updates.json, then runPrepare-CustomerPptx.ps1. - Build/Re-apply: manifests and template contract are ready. Run
Run-CustomerPptxPipeline.ps1or-SkipBuildfor manifest-only changes. - Repair: Verify fails. Fix only the failed slice, then rerun the same gate.
Build engine selection: missing build.engine means com. Use python only for contract-v1 templates;
it fails closed and never silently falls back to COM. See Python Build Engine.
MCP Boundary
- Script/MCP split and
sourceUrl/learnUrlrules: MCP-sourced Content › MCP Boundary. - Slide-visible manifest fields, including
titleandtitleJa, must stay reusable and customer-neutral. Customer/system-specific impact belongs innotes.jsonor review notes, not in visible body fields such ascustomerImpact,background,before,after,pricing, orkeypoint.
Previous Delivery Diff (required)
new {date} When creating a folder, always check the diff from the previous delivery via MCP. If you find omissions, ask the user whether to add them to this round as-is or carry them over to the next round. Procedure (previousEndDate Fetch range starting from the basis, double-check of the boundary date,logs/diff-check.md): Previous Delivery Diff。
Japan Region Rendering (visible slides)
item.japanRegion is displayed directly in the visible slide body. Use Region Stamp Definition as the SSOT for the determination, and always go through the following 3 classifications: Region Stamp Definition › Japan Region Rendering Flow。
Maintenance determinations without overview confirmation and determinations that a client tool is not supported in Japan are prohibited. For visible wording, priority order of nearby regions, URL propagation, and the reviewed JSON schema, follow Region Stamp Definition .
Bootstrap
From a blank workspace, run:
& ".\.github\skills\azure-update-customer-pptx\scripts\Initialize-AzureUpdateWorkspace.ps1" -TargetRoot "." -UpdateScripts
Options (-CopyMcpSample, .new conflicts, -ForceConfig): Pre-check › Bootstrap Options.
After Bootstrap, ask for missing customer values before generating a deck: customer/system name, filename year/pattern, template/branding, priority services, in-use or monitored SKUs, Appendix categories, and tenant/subscription references when needed.
Standard Run
$d = "0704"
New-Item -ItemType Directory -Force "$d\manifest", "$d\logs" | Out-Null
# Agent step: write $d/manifest/fetched-updates.json from Azure Updates MCP
# Agent step: add customer-neutral Japanese `titleJa` for every selected update before Prepare
& ".\scripts\Prepare-CustomerPptx.ps1" -DateFolder ".\$d"
# Agent steps: review region info and generate notes JSON
& ".\scripts\Run-CustomerPptxPipeline.ps1" -DateFolder ".\$d"
# Agent step: inspect generated deck quality before reporting done
Fast re-apply after manifest-only changes (-SkipBuild): Pre-check › Fast Re-apply.
Template setup is intentionally separate from regular generation. See Template Lifecycle before automating a new customer template.
Gotchas
- Close the target deck before any COM write, and re-apply all sections after any Weekly rebuild. Details and other COM pitfalls: Validation Rules › COM Write Gotchas.
Validation
Run preflight (Test-AzureUpdateWorkspace.ps1) before build/re-apply: Pre-check › Preflight Command.
Final script success is scripts/Verify-Pptx.ps1 exit code 0. Do not report final done until the quality review below also passes or the remaining issue is explicitly reported.
Quality Review Loop
After every build or re-apply, inspect the generated deck rather than trusting logs. Apply all script and visual checks in Validation Rules, including placeholders, customer neutrality, links, notes, Ending, Appendix visibility, region evidence, and critic review for nontrivial delivery decks.
SSOT And Runtime Copies
Skill/runtime ownership and refresh rules are defined in Dependencies. Customer-specific values belong in workspace config and manifests, never in skill references.
Agent Registry
Skill agents/ is the role-definition source; workspace copies are derived. Rules: Agents Overview › Agent Registry.
References
- Preflight/template:
pre-check.md,template-lifecycle.md,template-requirements.md - Content/validation:
mcp-sourced-content.md,validation-rules.md,slide-structure.md,region-stamp.md,delivery-diff.md - Operation/migration:
customer-profile.md,agents-overview.md,dependencies.md,migration-map.md
Done Criteria
- Workspace contract exists or Bootstrap completed
- Customer-specific template is designed, approved, and contract-validated before regular build automation
manifest/fetched-updates.json,classification.json, reviewed region JSON, andnotes.jsonexist- Weekly items use Azure Updates
sourceUrland, where available, Microsoft LearnlearnUrl - Deck has section order, label order, UPDATE Points, notes, and region stamps applied
- Visible reference labels and hyperlinks distinguish Microsoft Learn detail pages from Azure Updates announcements
- The Ending slide says only a concise formal closure such as
以上/Azure アップデート情報, and non-selected ending variants are hidden Verify-Pptx.ps1exits0- Immediately before customer delivery,
Test-PptxDistribution.ps1passes for the exact PPTX/PDF pair; Python-engine delivery also requires nonempty PDF text extraction and customer-safe body checks. - Quality review passes: no unresolved placeholders, duplicate honorifics, visible customer-specific terms outside cover/metadata, malformed bullets, weak notes, or Appendix visibility mismatch
- Rubber-duck / critic review is completed or explicitly skipped with a reason for nontrivial customer-delivery decks