Skip to content

feat(skills): add PowerPoint automation skill with YAML-driven deck generation#868

Merged
WilliamBerryiii merged 44 commits intomainfrom
feat/powerpoint
Mar 9, 2026
Merged

feat(skills): add PowerPoint automation skill with YAML-driven deck generation#868
WilliamBerryiii merged 44 commits intomainfrom
feat/powerpoint

Conversation

@agreaves-ms
Copy link
Copy Markdown
Collaborator

This PR introduces a comprehensive PowerPoint automation skill under the experimental collection, enabling AI-assisted creation, extraction, and validation of slide decks through a YAML-driven content pipeline. The implementation delivers a three-agent orchestration system, bidirectional PPTX-to-YAML conversion across 14 Python scripts, a PowerShell orchestrator, and dual-path validation combining PPTX property checks with Copilot SDK vision model analysis. Supporting changes include a new VS Code Playwright screenshot skill, collection manifest updates, Python virtual environment gitignore patterns, and a documentation file rename.

Description

PowerPoint Skill Architecture

The skill establishes a full-featured PPTX automation toolkit at .github/skills/experimental/powerpoint/, organized around a YAML-driven content model and bidirectional conversion pipeline.

  • Added build_deck.py implementing two exclusive build modes: full rebuild from corporate templates (--template) and partial in-place regeneration of specific slides (--source + --slides). Uses an ELEMENT_BUILDERS registry dictionary for element dispatch supporting 11 element types (shape, textbox, rich_text, image, card, arrow_flow, numbered_step, table, chart, connector, group), z-order sorting, turbo mode for dense slides, and content-extra.py post-hooks for custom rendering.
  • Added extract_content.py for reverse-engineering existing PPTX files into structured YAML with type-specific dispatch, global style detection via frequency analysis, light/dark slide classification, multi-theme generation, and @theme_name preservation.
  • Added export_slides.py and render_pdf_images.py for PPTX-to-PDF conversion via LibreOffice with platform-specific executable detection, optional slide filtering, and PDF-to-JPG rasterization with original slide number mapping.
  • Added validate_deck.py for offline PPTX property validation (speaker notes, slide count) with per-slide JSON output, and validate_slides.py for vision model-based quality analysis via Copilot SDK with exponential backoff retry.

Utility Module Library

Shared patterns were consolidated into modular utilities following a bidirectional apply/extract design for PPTX-to-YAML round-trip fidelity.

  • Added pptx_text.py with three populate modes (flat, per-paragraph, rich-text), key-mapping abstraction for element-type-specific YAML conventions, and comprehensive paragraph/run property support including bullets, hyperlinks, and character spacing.
  • Added pptx_fills.py for solid, gradient, and pattern fills with alpha transparency via XML alphaModFix manipulation, line properties, and outer shadow effects via effectLst.
  • Added pptx_charts.py supporting 12 chart types, pptx_tables.py with cell merging and banding, pptx_colors.py for hex/theme/brightness color resolution, pptx_fonts.py for font normalization, pptx_shapes.py with 30+ shape type mappings, and pptx_utils.py centralizing exit codes, logging, EMU conversion, and slide filter parsing.

Agent and Prompt System

  • Added pptx.agent.md as the PowerPoint Builder orchestrator coordinating five phases: research, build-content, build-deck, validate, and export. Delegates all execution to subagents while maintaining coordination artifacts.
  • Added pptx-subagent.agent.md executing delegated tasks (extract, build-content, build-deck, validate, export) with a blocking failure protocol that prevents silent degradation on unexpected results.
  • Added pptx.instructions.md defining shared conventions for working directory structure, content schemas, validation criteria, and build modes.
  • Added pptx.prompt.md as the user-facing entry point for initiating PowerPoint workflows.

Skill Documentation and Configuration

  • Added comprehensive SKILL.md covering prerequisites, content directory structure, YAML schemas, script reference, architecture, constraints, validation rules, and troubleshooting.
  • Added content-yaml-template.md (complete YAML schema for slide content), content-extra-py-template.md (custom Python rendering), and style-yaml-template.md (dimensions, layout mapping, metadata, theme defaults).
  • Added pyproject.toml declaring dependencies (python-pptx, pyyaml, cairosvg, Pillow, pymupdf, github-copilot-sdk) with dev dependencies for pytest and ruff.
  • Added Invoke-PptxPipeline.ps1 as the PowerShell orchestrator managing virtual environment lifecycle via uv sync, platform-specific Python path resolution, and delegation to Python scripts.

Test Suite

  • Added 14 Python test modules and 1 PowerShell Pester test suite with shared conftest.py fixtures. Coverage spans all element types, round-trip fidelity, platform-specific behavior, and mocked external dependencies (LibreOffice, PyMuPDF, Copilot SDK).
    • test_build_deck.py (1,270 lines) covers all 11 element types, z-order, turbo mode, cards, arrow flows, numbered steps, and groups
    • test_extract_content.py (1,169 lines) covers extraction, theme resolution, and global style detection
    • test_pptx_text.py (~800 lines) covers text frame operations, bullets, and rich-text formatting
    • Remaining modules verify charts, colors, fills, fonts, shapes, tables, utils, PDF rendering, and validation
    • Invoke-PptxPipeline.Tests.ps1 (413 lines) validates pipeline orchestration with platform-specific handling
  • Added uv.lock pinning 30+ dependency versions.

VS Code Playwright Screenshot Skill

  • Added .github/skills/experimental/vscode-playwright/SKILL.md providing a workflow for capturing VS Code screenshots via Playwright MCP tools with serve-web, covering server lifecycle, viewport configuration, UI cleanup, theme seeding, and screenshot validation.

Infrastructure and Documentation

  • Updated .gitignore with venv/ and .venv/ patterns for Python virtual environments.
  • Updated collections/experimental.collection.yml with the powerpoint skill entry.
  • Regenerated plugins/experimental/README.md and plugins/hve-core-all/README.md with the powerpoint skill row.
  • Renamed docs/customization/agents.md to docs/customization/custom-agents.md and updated the corresponding link in docs/README.md.

Related Issue(s)

None

Type of Change

Select all that apply:

Code & Documentation:

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature causing existing functionality to change)
  • Documentation update

Infrastructure & Configuration:

  • GitHub Actions workflow
  • Linting configuration (markdown, PowerShell, etc.)
  • Security configuration
  • DevContainer configuration
  • Dependency update

AI Artifacts:

  • Reviewed contribution with prompt-builder agent and addressed all feedback
  • Copilot instructions (.github/instructions/*.instructions.md)
  • Copilot prompt (.github/prompts/*.prompt.md)
  • Copilot agent (.github/agents/*.agent.md)
  • Copilot skill (.github/skills/*/SKILL.md)

Note for AI Artifact Contributors:

  • Agents: Research, indexing/referencing other project (using standard VS Code GitHub Copilot/MCP tools), planning, and general implementation agents likely already exist. Review .github/agents/ before creating new ones.
  • Skills: Must include both bash and PowerShell scripts. See Skills.
  • Model Versions: Only contributions targeting the latest Anthropic and OpenAI models will be accepted. Older model versions (e.g., GPT-3.5, Claude 3) will be rejected.
  • See Agents Not Accepted and Model Version Requirements.

Other:

  • Script/automation (.ps1, .sh, .py)
  • Other (please describe):

Sample Prompts (for AI Artifact Contributions)

User Request:

Invoke the PowerPoint Builder workflow using @pptx build me a slide deck about cloud-native architecture for a customer presentation. The prompt supports topic-based generation, extraction from existing PPTX files, and iterative validation with vision model feedback.

Execution Flow:

  1. The orchestrator agent (pptx.agent.md) receives the request and delegates research to the Researcher Subagent for topic investigation and content gathering.
  2. The PowerPoint Subagent executes build-content to generate per-slide YAML content files from research findings.
  3. The subagent runs build-deck via Invoke-PptxPipeline.ps1, which manages the Python virtual environment and calls build_deck.py to produce the PPTX file.
  4. The subagent runs validate to check PPTX properties (speaker notes, slide count) and optionally sends rendered images to the Copilot SDK vision model for quality analysis.
  5. Validation findings drive iteration back to content fixes or design adjustments (up to 5 iterations).
  6. The subagent runs export to render final slide images for visual review.

Output Artifacts:

  • .copilot-tracking/ppt/{session}/content/slide-NNN/content.yaml — Per-slide YAML definitions
  • .copilot-tracking/ppt/{session}/content/style.yaml — Global style configuration
  • .copilot-tracking/ppt/{session}/output/*.pptx — Generated PowerPoint deck
  • .copilot-tracking/ppt/{session}/output/slide-NNN.jpg — Rendered slide images
  • .copilot-tracking/ppt/{session}/validation/report.md — Validation findings

Success Indicators:

  • The generated PPTX opens in PowerPoint or LibreOffice and renders all slides with correct layout, styling, and content. Validation reports show no errors. Speaker notes are present on all slides. Slide count matches the content directory structure.

Testing

  • Automated validation commands run during PR generation (see Checklist below).
  • Security analysis found no sensitive data exposure, dependency vulnerabilities, or privilege escalation concerns.
  • Diff-based assessment confirmed all 46 changed files follow repository naming conventions.
  • Manual testing was not performed during PR generation.

Note

Manual testing of the PowerPoint skill pipeline is recommended before merging.

Checklist

Required Checks

  • Documentation is updated (if applicable)
  • Files follow existing naming conventions
  • Changes are backwards compatible (if applicable) (N/A — all files are new additions)
  • Tests added for new functionality (if applicable)

AI Artifact Contributions

  • Used /prompt-analyze to review contribution
  • Addressed all feedback from prompt-builder review
  • Verified contribution follows common standards and type-specific requirements

Required Automated Checks

The following validation commands must pass before merging:

  • Markdown linting: npm run lint:md
  • Spell checking: npm run spell-check
  • Frontmatter validation: npm run lint:frontmatter
  • Skill structure validation: npm run validate:skills
  • Link validation: npm run lint:md-links
  • PowerShell analysis: npm run lint:ps
  • Plugin freshness: npm run plugin:generate

Warning

This PR includes experimental GHCP artifacts that may have breaking changes.

  • .github/skills/experimental/powerpoint/SKILL.md
  • .github/skills/experimental/vscode-playwright/SKILL.md

GHCP Artifact Maturity

File Type Maturity Notes
.github/agents/pptx.agent.md Agent ✅ stable Repo-specific
.github/agents/pptx-subagent.agent.md Agent ✅ stable Repo-specific
.github/instructions/pptx.instructions.md Instructions ✅ stable Repo-specific
.github/prompts/pptx.prompt.md Prompt ✅ stable Repo-specific
.github/skills/experimental/powerpoint/SKILL.md Skill ⚠️ experimental In experimental collection
.github/skills/experimental/vscode-playwright/SKILL.md Skill ⚠️ experimental Not yet in collection manifest

GHCP Maturity Acknowledgment

  • I acknowledge this PR includes non-stable GHCP artifacts
  • Non-stable artifacts are intentional for this change

Security Considerations

  • This PR does not contain any sensitive or NDA information
  • Any new dependencies have been reviewed for security issues
  • Security-related scripts follow the principle of least privilege

Additional Notes

  • The vscode-playwright/SKILL.md was added to the repository but is not yet listed in the experimental.collection.yml manifest. Plugin generation auto-added it to hve-core-all.collection.yml; consider also adding it to the experimental collection for consistency.
  • Added invoke-pptx-pipeline.sh bash script to satisfy the skill validation requirement for a .sh file in scripts/.
  • Added BOM encoding to Invoke-PptxPipeline.ps1 to resolve PSScriptAnalyzer PSUseBOMForUnicodeEncodedFile warning.
  • The plugins/experimental/README.md row for powerpoint shows powerpoint | powerpoint with duplicate description text — this is generated output and may warrant updating the collection metadata to include a proper description.
  • All 31 commits follow conventional commits format.

@agreaves-ms agreaves-ms requested a review from a team as a code owner March 4, 2026 07:10
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 4, 2026

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 6 package(s) with unknown licenses.
  • ⚠️ 1 packages with OpenSSF Scorecard issues.
See the Details below.

License Issues

.github/skills/experimental/powerpoint/pyproject.toml

PackageVersionLicenseIssue Type
PillowNullUnknown License

.github/skills/experimental/powerpoint/uv.lock

PackageVersionLicenseIssue Type
cssselect20.9.0NullUnknown License
github-copilot-sdk0.1.30NullUnknown License
packaging26.0NullUnknown License
pycparser3.0NullUnknown License
pymupdf1.27.1NullUnknown License

OpenSSF Scorecard

Scorecard details
PackageVersionScoreDetails
pip/Pillow UnknownUnknown
pip/annotated-types 0.7.0 UnknownUnknown
pip/cairocffi 1.7.1 UnknownUnknown
pip/cairosvg 2.8.2 UnknownUnknown
pip/cffi 2.0.0 UnknownUnknown
pip/colorama 0.4.6 UnknownUnknown
pip/coverage 7.13.4 UnknownUnknown
pip/cssselect2 0.9.0 UnknownUnknown
pip/defusedxml 0.7.1 🟢 5.1
Details
CheckScoreReason
Maintained⚠️ 00 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Security-Policy🟢 10security policy file detected
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review⚠️ 0Found 2/24 approved changesets -- score normalized to 0
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Packaging⚠️ -1packaging workflow not detected
License🟢 9license file detected
Fuzzing🟢 10project is fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
pip/github-copilot-sdk 0.1.30 UnknownUnknown
pip/iniconfig 2.3.0 UnknownUnknown
pip/lxml 6.0.2 UnknownUnknown
pip/packaging 26.0 UnknownUnknown
pip/pillow 12.1.1 UnknownUnknown
pip/pluggy 1.6.0 UnknownUnknown
pip/pycparser 3.0 UnknownUnknown
pip/pydantic 2.12.5 UnknownUnknown
pip/pydantic-core 2.41.5 UnknownUnknown
pip/pygments 2.19.2 UnknownUnknown
pip/pymupdf 1.27.1 UnknownUnknown
pip/pytest 9.0.2 UnknownUnknown
pip/pytest-cov 7.0.0 UnknownUnknown
pip/python-dateutil 2.9.0.post0 🟢 5.5
Details
CheckScoreReason
Code-Review⚠️ 2Found 5/17 approved changesets -- score normalized to 2
Maintained🟢 1013 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Binary-Artifacts🟢 10no binaries found in the repo
Packaging⚠️ -1packaging workflow not detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Fuzzing🟢 10project is fuzzed
License🟢 9license file detected
Signed-Releases🟢 82 out of the last 2 releases have a total of 2 signed artifacts.
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
pip/python-pptx 1.0.2 UnknownUnknown
pip/pyyaml 6.0.3 UnknownUnknown
pip/ruff 0.15.4 UnknownUnknown
pip/six 1.17.0 🟢 3.9
Details
CheckScoreReason
Code-Review⚠️ 2Found 7/30 approved changesets -- score normalized to 2
Binary-Artifacts🟢 10no binaries found in the repo
Packaging⚠️ -1packaging workflow not detected
Maintained⚠️ 23 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Fuzzing🟢 10project is fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
pip/tinycss2 1.5.1 UnknownUnknown
pip/tomli 2.4.0 UnknownUnknown
pip/typing-extensions 4.15.0 UnknownUnknown
pip/typing-inspection 0.4.2 UnknownUnknown
pip/webencodings 0.5.1 ⚠️ 2.6
Details
CheckScoreReason
Code-Review⚠️ 2Found 6/27 approved changesets -- score normalized to 2
Token-Permissions⚠️ -1No tokens found
Binary-Artifacts🟢 10no binaries found in the repo
Dangerous-Workflow⚠️ -1no workflows found
Packaging⚠️ -1packaging workflow not detected
Maintained⚠️ 00 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Pinned-Dependencies⚠️ -1no dependencies found
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 9license file detected
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
pip/xlsxwriter 3.2.9 🟢 4.9
Details
CheckScoreReason
Code-Review⚠️ 1Found 3/30 approved changesets -- score normalized to 1
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Maintained🟢 93 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 9
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
Signed-Releases⚠️ -1no releases found
License🟢 10license file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
Fuzzing🟢 10project is fuzzed
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
SAST🟢 6SAST tool is not run on all commits -- score normalized to 6

Scanned Files

  • .github/skills/experimental/powerpoint/pyproject.toml
  • .github/skills/experimental/powerpoint/uv.lock

@WilliamBerryiii
Copy link
Copy Markdown
Member

Not for the scope of this PR ... but I am specking all the build changes that need to happen for us to maintain our OSSF attestation in response to this. Just as an FYI. We can merge this and I'll fast follow with the build work.

@WilliamBerryiii
Copy link
Copy Markdown
Member

Hi @agreaves-ms — Thanks for putting this together! A quick note on project conventions: we ask that pull requests be paired with a corresponding backlog issue for tracking purposes. I wasn't able to find an existing issue related to PowerPoint skill support.

When you get a chance, could you file an issue describing the feature this PR addresses and link it here using Closes #NNN in the PR body? This helps the team track work across the backlog and ensures issues are automatically closed when PRs merge. Thanks! 🙏

JasonOA888 added a commit to JasonOA888/hve-core that referenced this pull request Mar 9, 2026
Changes:
- Add discover-python-skills job that finds all pyproject.toml under .github/skills/
- Replace hardcoded pytest-powerpoint job with matrix-based pytest job
- Adding new Python skill now only requires dropping pyproject.toml in skill folder

This follows the project convention of dynamic discovery (see extension-package.yml).

Note: Tests will pass with empty matrix until PowerPoint skill (microsoft#868) lands.
- implement lifecycle management for PowerPoint slide decks
- define working directory structure and required phases
- include detailed instructions for content preparation and validation

🔧 - Generated by Copilot
…ting, rendering, and validating slides

- implement export_slides.py for PPTX to PDF conversion with optional slide filtering
- create extract_content.py to extract content and styles from PPTX into YAML
- develop render_pdf_images.py to convert PDF pages to JPG images
- introduce validate_deck.py to validate PPTX against content definitions and styling rules
- add style YAML template for consistent styling across slides

🎨 - Generated by Copilot
…ation improvements

- add support for extracting specific slides from PPTX files
- implement in-place rebuilding of existing slides
- improve validation checks for font consistency and text overlay
- update documentation for extraction limitations and usage examples

🔧 - Generated by Copilot
…ndling

- add rotation extraction for shapes and textboxes
- implement per-slide background fill support
- update text box and shape element handling for rotation
- improve font extraction from paragraphs

🎨 - Generated by Copilot
Add 8 shared Python modules for the PowerPoint Agent Skill:
pptx_utils, pptx_colors, pptx_fonts, pptx_shapes, pptx_fills,
pptx_text, pptx_tables, and pptx_charts.

New capabilities:
- 4 new element types: table, chart, connector, group
- Theme colors (@accent_1 syntax) and gradient/pattern fills
- Template loading via --template with layout selection
- Placeholder population for themed layouts
- Presentation metadata read/write
- Enhanced text properties (hyperlinks, spacing, margins, auto-size)
- 29 shape types (up from 9) with enum-based detection
- 6 new validation checks (10 total)

Update content-yaml-template.md, style-yaml-template.md, SKILL.md,
and pptx.instructions.md with documentation for all new features.
…olor preservation

- add --strict flag to validate_deck.py and -Strict to Invoke-PptxPipeline.ps1
- add freeform shape extraction with path vertex data in extract_content.py
- fix theme color preservation across all fill types and line colors in pptx_fills.py

🎨 - Generated by Copilot
WilliamBerryiii added a commit that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---


##
[3.2.0](hve-core-v3.1.46...hve-core-v3.2.0)
(2026-03-20)


### ✨ Features

* add -OutputPath parameter to Validate-MarkdownFrontmatter.ps1
([#1134](#1134))
([fdf1bcf](fdf1bcf)),
closes [#1006](#1006)
* add action version consistency scan workflow
([#1127](#1127))
([4229df1](4229df1))
* **agent:** MVE Experiment Designer
([#976](#976))
([70f86ca](70f86ca))
* **agents:** add ADO Backlog Manager orchestrator agent
([#800](#800))
([fae3987](fae3987))
* **agents:** add meeting analyst agent for transcript analysis using
work-iq ([#502](#502))
([5345b5b](5345b5b))
* **agents:** add quick-reference line to RPI Phase 5 suggestions
([#897](#897))
([9a90f39](9a90f39))
* **agents:** add RAI Planner, enhance SSSC Planner, and redesign
Security Planner
([#979](#979))
([06f826c](06f826c))
* **agents:** add symmetric cross-system handoff to GitHub Backlog
Manager ([#952](#952))
([ba34a35](ba34a35))
* **agents:** Functional Code Review Agent — pre-PR functional
correctness reviewer
([#733](#733))
([9cf63b7](9cf63b7))
* **build:** add Python extensions and uv 0.10.8 to devcontainer
([#920](#920))
([9ca0579](9ca0579))
* **build:** add uv ecosystem to Dependabot configuration
([#913](#913))
([2a4bd39](2a4bd39))
* **build:** enable npm pinning enforcement in dependency scan
([#838](#838))
([4e9e31f](4e9e31f))
* **build:** migrate attestation actions to v4.1.0 and add SBOM
verification docs
([#841](#841))
([ca1e65b](ca1e65b))
* **collections:** add four new validator checks (orphan, duplicate,
companion, coverage)
([#869](#869))
([1a96b73](1a96b73))
* **devcontainer,security:** add enterprise artifact hub configuration
([#1032](#1032))
([1d56d25](1d56d25))
* **docs:** add Rust coding standards and guidelines
([#809](#809))
([d4c4899](d4c4899))
* **extension:** add Microsoft logo icon to VS Code Marketplace listings
([#906](#906))
([82aca41](82aca41))
* **github:** add declarative label management
([#953](#953))
([a1a6845](a1a6845))
* **instructions:** add ADO backlog shared infrastructure
([#786](#786))
([1914078](1914078))
* **instructions:** add ADO backlog sprint planning and capacity
tracking ([#788](#788))
([d6fb77d](d6fb77d))
* **instructions:** add ADO triage workflow and prompt
([#787](#787))
([cde0190](cde0190))
* **instructions:** add shared story quality conventions and sprint
planning ([#803](#803))
([a2f18e3](a2f18e3))
* **prompts:** add ADO discovery and work item prompts with agent
routing ([#790](#790))
([7e74523](7e74523))
* **prompts:** add security review prompts
([#1118](#1118))
([ad30967](ad30967))
* **scripts:** add dynamic Python skill discovery for lint/test
([#957](#957))
([0a90f57](0a90f57))
* **scripts:** add Get-StandardTimestamp utility to CIHelpers module
([#1126](#1126))
([b273a4b](b273a4b))
* **scripts:** add Python copyright header validation
([#905](#905))
([67df902](67df902))
* **scripts:** add Python skill support to Validate-SkillStructure
([#903](#903))
([68479d9](68479d9))
* **scripts:** add workflow npm command scanning to dependency pinning
([#837](#837))
([6b5ae06](6b5ae06))
* **security:** add basic security reviewer agent with owasp skills
([#1008](#1008))
([cb1fd05](cb1fd05))
* **security:** add sigstore attestation bundles and fix
component-detection action
([#1148](#1148))
([f79c272](f79c272))
* **skills:** add Atheris fuzz harness with CI workflow integration
([#1102](#1102))
([d337e1d](d337e1d))
* **skills:** add PowerPoint automation skill with YAML-driven deck
generation ([#868](#868))
([00465cd](00465cd))
* **skills:** convert hve-core-installer agent to self-contained skill
([#846](#846))
([1d821fb](1d821fb))
* **skills:** enhance pr-reference skill with flexible filtering and
base branch detection
([#1095](#1095))
([26a32ea](26a32ea))
* **workflows:** add devcontainer infrastructure change log workflow
([#899](#899))
([8aca446](8aca446))
* **workflows:** add milestone auto-close on stable and pre-release
publishes ([#834](#834))
([79362b1](79362b1))
* **workflows:** add ms.date documentation freshness checking
([#969](#969))
([3ed441c](3ed441c))
* **workflows:** add Python linting CI workflow with Ruff
([#951](#951))
([f89f0eb](f89f0eb))
* **workflows:** add Python testing CI workflow with pytest and Codecov
([#934](#934))
([5e8306f](5e8306f))
* **workflows:** add uv and Python package sync to copilot-setup-steps
([#921](#921))
([45d517d](45d517d))


### 🐛 Bug Fixes

* **build:** override Linguist vendored flag for Python skill files
([#1155](#1155))
([0eee5b6](0eee5b6))
* **build:** override serialize-javascript to >=7.0.3 for RCE fix
([#876](#876))
([e49039a](e49039a))
* **build:** resolve Pinned-Dependencies alerts for vsce npm commands in
extension workflows
([#782](#782))
([89dad9d](89dad9d))
* **build:** update undici and yauzl overrides for security audit
([#1030](#1030))
([2c2f92f](2c2f92f))
* **docs:** add CLI Plugins to install.md navigation surfaces
([#902](#902))
([79d6595](79d6595))
* **docs:** add sidebar ordering for Design Thinking documentation
([#832](#832))
([551fddc](551fddc)),
closes [#830](#830)
* **docs:** graduate design-thinking to preview and correct stale
collection references
([#831](#831))
([5110e35](5110e35))
* **docs:** include project-planning in UX Designer install guidance
([#908](#908))
([e7aa9bc](e7aa9bc))
* **docs:** remediate writing-style convention violations
([#865](#865))
([68b04bc](68b04bc))
* **docs:** remove draft content announcement banner
([#825](#825))
([b45de80](b45de80))
* **docs:** remove unbounded path-to-regexp override breaking SSG
([#1153](#1153))
([d810018](d810018))
* **docs:** use actual clone paths instead of folder display names in
multi-root workspace settings
([#984](#984))
([5dbab82](5dbab82))
* **instructions:** replace black with ruff in uv-projects
([#898](#898))
([b0c06d9](b0c06d9))
* **scripts:** cover .github/ skill files in copyright header validation
([#1055](#1055))
([#1098](#1098))
([27fbd33](27fbd33))
* **scripts:** eliminate phantom git changes from plugin generation
([#1035](#1035))
([e49a1b5](e49a1b5))
* **scripts:** enable JSON log output for lint:version-consistency
([#1033](#1033))
([52b0885](52b0885))
* **security:** calculate compliance score from total scanned
dependencies ([#930](#930))
([c112c3d](c112c3d))
* **skills:** add AST validation and namespace restriction for
content-extra.py
([#1027](#1027))
([c50c7a3](c50c7a3))
* **skills:** add depth limits to recursive PowerPoint processing
functions ([#1028](#1028))
([bf08994](bf08994))
* **skills:** harden XML parsing and blob writes in powerpoint extract
([#1053](#1053))
([89d24b1](89d24b1))
* **skills:** resolve ruff lint and format violations in powerpoint
skill ([#1048](#1048))
([17bbe7a](17bbe7a))
* **workflows:** add uv.lock dependencies submission have fork-skip
condition ([#1109](#1109))
([dec56ac](dec56ac))
* **workflows:** automate weekly SHA staleness check with issue creation
([#975](#975))
([1ea4caa](1ea4caa))
* **workflows:** close Codecov integration gaps for Pester and pytest
flags ([#1106](#1106))
([cca29b7](cca29b7))
* **workflows:** propagate uv sync errors in copilot-setup-steps
([#961](#961))
([df88d7c](df88d7c))
* **workflows:** resolve release-please skip cascade and Python project
discovery ([#1043](#1043))
([79993e2](79993e2))
* **workflows:** scan only commit subjects for breaking change detection
([#1157](#1157))
([a38a657](a38a657))


### 📚 Documentation

* clarify HVE Core Extension vs Installer messaging across documentation
([#965](#965))
([0fceb8f](0fceb8f))
* **docs:** add ADO integration user documentation
([#935](#935))
([ec89302](ec89302))
* **docs:** add Project Planning agent documentation
([#936](#936))
([3a3a0fd](3a3a0fd))
* **onboarding:** overhaul marketplace onboarding and documentation site
([#982](#982))
([4309e10](4309e10))


### ♻️ Refactoring

* **build:** merge code-review collection into coding-standards
([#863](#863))
([8027e7b](8027e7b))
* **workflows:** rename release pipeline workflows and add marketplace
automation triggers
([#829](#829))
([b6397f4](b6397f4))


### 🔧 Maintenance

* **build:** add clean:logs npm script
([#1122](#1122))
([f85fe02](f85fe02)),
closes [#988](#988)
* **build:** add JSON reporter for cspell
([#1123](#1123))
([6d59f67](6d59f67))
* **ci:** add multi-arch support to copilot-setup-steps binary downloads
([#955](#955))
([8d0c706](8d0c706))
* **deps-dev:** bump cspell from 9.6.4 to 9.7.0 in the npm-dependencies
group ([#839](#839))
([3fa16ff](3fa16ff))
* **deps:** bump actions/dependency-review-action from 4.8.3 to 4.9.0 in
the github-actions group across 1 directory
([#942](#942))
([1a9b858](1a9b858))
* **deps:** bump cairosvg from 2.8.2 to 2.9.0 in
/.github/skills/experimental/powerpoint
([#1025](#1025))
([f4deda7](f4deda7))
* **deps:** bump dompurify from 3.3.1 to 3.3.2 in /docs/docusaurus
([#924](#924))
([d2060d6](d2060d6))
* **deps:** bump svgo from 3.3.2 to 3.3.3 in /docs/docusaurus
([#880](#880))
([6dc2406](6dc2406))
* **deps:** bump the github-actions group across 1 directory with 4
updates ([#1100](#1100))
([2290dc0](2290dc0))
* **deps:** bump the github-actions group with 6 updates
([#840](#840))
([f57bc01](f57bc01))
* **docs:** correct New-MsDateReport table rendering and refresh stale
docs ([#1114](#1114))
([c2b806f](c2b806f))
* **settings:** remove orphaned Checkov config and stale gitignore
entries ([#870](#870))
([98fcd74](98fcd74))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: hve-core-release-please[bot] <254602402+hve-core-release-please[bot]@users.noreply.github.com>
Co-authored-by: Bill Berry <wberry@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants