Skip to content

Commit 7fa6e0f

Browse files
chore: bump pre-release version to 3.1.120
1 parent b1a0a4f commit 7fa6e0f

File tree

22 files changed

+330
-330
lines changed

22 files changed

+330
-330
lines changed

.github/plugin/marketplace.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "hve-core",
33
"metadata": {
44
"description": "HVE Core",
5-
"version": "3.1.46",
5+
"version": "3.1.120",
66
"pluginRoot": "./plugins"
77
},
88
"owner": {
@@ -13,67 +13,67 @@
1313
"name": "ado",
1414
"source": "ado",
1515
"description": "Azure DevOps work item management, build monitoring, and pull request creation",
16-
"version": "3.1.46"
16+
"version": "3.1.120"
1717
},
1818
{
1919
"name": "coding-standards",
2020
"source": "coding-standards",
2121
"description": "Language-specific coding instructions and pre-PR code review agents for bash, Bicep, C#, PowerShell, Python, Rust, and Terraform projects",
22-
"version": "3.1.46"
22+
"version": "3.1.120"
2323
},
2424
{
2525
"name": "data-science",
2626
"source": "data-science",
2727
"description": "Data specification generation, Jupyter notebooks, and Streamlit dashboards",
28-
"version": "3.1.46"
28+
"version": "3.1.120"
2929
},
3030
{
3131
"name": "design-thinking",
3232
"source": "design-thinking",
3333
"description": "Design Thinking coaching identity, quality constraints, and methodology instructions for AI-enhanced design thinking across nine methods",
34-
"version": "3.1.46"
34+
"version": "3.1.120"
3535
},
3636
{
3737
"name": "experimental",
3838
"source": "experimental",
3939
"description": "Experimental and preview artifacts not yet promoted to stable collections",
40-
"version": "3.1.46"
40+
"version": "3.1.120"
4141
},
4242
{
4343
"name": "github",
4444
"source": "github",
4545
"description": "GitHub issue discovery, triage, sprint planning, and backlog execution agents and prompts",
46-
"version": "3.1.46"
46+
"version": "3.1.120"
4747
},
4848
{
4949
"name": "hve-core",
5050
"source": "hve-core",
5151
"description": "HVE Core RPI (Research, Plan, Implement, Review) workflow with Git commit, merge, setup, and pull request prompts",
52-
"version": "3.1.46"
52+
"version": "3.1.120"
5353
},
5454
{
5555
"name": "hve-core-all",
5656
"source": "hve-core-all",
5757
"description": "Full bundle of all stable HVE Core agents, prompts, instructions, and skills",
58-
"version": "3.1.46"
58+
"version": "3.1.120"
5959
},
6060
{
6161
"name": "installer",
6262
"source": "installer",
6363
"description": "Decision-driven installer skill for deploying HVE Core artifacts across workspace configurations",
64-
"version": "3.1.46"
64+
"version": "3.1.120"
6565
},
6666
{
6767
"name": "project-planning",
6868
"source": "project-planning",
6969
"description": "PRDs, BRDs, ADRs, and architecture diagrams",
70-
"version": "3.1.46"
70+
"version": "3.1.120"
7171
},
7272
{
7373
"name": "security",
7474
"source": "security",
7575
"description": "Security review, planning, incident response, risk assessment, and vulnerability analysis",
76-
"version": "3.1.46"
76+
"version": "3.1.120"
7777
}
7878
]
7979
}

.github/skills/experimental/powerpoint/SKILL.md

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -312,38 +312,38 @@ Validates only the specified slides. When content directories cover fewer slides
312312

313313
#### validate_slides.py CLI Reference
314314

315-
| Flag | Required | Default | Description |
316-
|---|---|---|---|
317-
| `--image-dir` | Yes || Directory containing `slide-NNN.jpg` images |
318-
| `--prompt` | One of `--prompt` / `--prompt-file` || Validation prompt text |
319-
| `--prompt-file` | One of `--prompt` / `--prompt-file` || Path to file containing the validation prompt |
320-
| `--model` | No | `claude-haiku-4.5` | Vision model ID |
321-
| `--output` | No | stdout | JSON results file path |
322-
| `--slides` | No | all | Comma-separated slide numbers to validate |
323-
| `-v`, `--verbose` | No || Enable debug-level logging |
315+
| Flag | Required | Default | Description |
316+
|-------------------|-------------------------------------|--------------------|-----------------------------------------------|
317+
| `--image-dir` | Yes | | Directory containing `slide-NNN.jpg` images |
318+
| `--prompt` | One of `--prompt` / `--prompt-file` | | Validation prompt text |
319+
| `--prompt-file` | One of `--prompt` / `--prompt-file` | | Path to file containing the validation prompt |
320+
| `--model` | No | `claude-haiku-4.5` | Vision model ID |
321+
| `--output` | No | stdout | JSON results file path |
322+
| `--slides` | No | all | Comma-separated slide numbers to validate |
323+
| `-v`, `--verbose` | No | | Enable debug-level logging |
324324

325325
#### validate_deck.py CLI Reference
326326

327-
| Flag | Required | Default | Description |
328-
|---|---|---|---|
329-
| `--input` | Yes || Input PPTX file path |
330-
| `--content-dir` | No || Content directory for slide count comparison |
331-
| `--slides` | No | all | Comma-separated slide numbers to validate |
332-
| `--output` | No | stdout | JSON results file path |
333-
| `--report` | No || Markdown report file path |
334-
| `--per-slide-dir` | No || Directory for per-slide JSON files (`slide-NNN-deck-validation.json`) |
327+
| Flag | Required | Default | Description |
328+
|-------------------|----------|---------|-----------------------------------------------------------------------|
329+
| `--input` | Yes | | Input PPTX file path |
330+
| `--content-dir` | No | | Content directory for slide count comparison |
331+
| `--slides` | No | all | Comma-separated slide numbers to validate |
332+
| `--output` | No | stdout | JSON results file path |
333+
| `--report` | No | | Markdown report file path |
334+
| `--per-slide-dir` | No | | Directory for per-slide JSON files (`slide-NNN-deck-validation.json`) |
335335

336336
#### Validation Outputs
337337

338338
When run through the pipeline, validation produces these files in the image output directory:
339339

340-
| File | Format | Content |
341-
|---|---|---|
342-
| `deck-validation-results.json` | JSON | Per-slide PPTX property issues (speaker notes, slide count) |
343-
| `deck-validation-report.md` | Markdown | Human-readable report for PPTX property validation |
344-
| `validation-results.json` | JSON | Consolidated vision model responses with quality findings |
345-
| `slide-NNN-validation.txt` | Text | Per-slide vision response text (next to `slide-NNN.jpg`) |
346-
| `slide-NNN-deck-validation.json` | JSON | Per-slide PPTX property validation result (next to `slide-NNN.jpg`) |
340+
| File | Format | Content |
341+
|----------------------------------|----------|---------------------------------------------------------------------|
342+
| `deck-validation-results.json` | JSON | Per-slide PPTX property issues (speaker notes, slide count) |
343+
| `deck-validation-report.md` | Markdown | Human-readable report for PPTX property validation |
344+
| `validation-results.json` | JSON | Consolidated vision model responses with quality findings |
345+
| `slide-NNN-validation.txt` | Text | Per-slide vision response text (next to `slide-NNN.jpg`) |
346+
| `slide-NNN-deck-validation.json` | JSON | Per-slide PPTX property validation result (next to `slide-NNN.jpg`) |
347347

348348
Per-slide vision text files are written alongside their corresponding `slide-NNN.jpg` images, enabling agents to read validation findings for individual slides without parsing the consolidated JSON file.
349349

@@ -400,19 +400,19 @@ python scripts/render_pdf_images.py \
400400

401401
The build and extraction scripts use shared modules in the `scripts/` directory:
402402

403-
| Module | Purpose |
404-
|---|---|
405-
| `pptx_utils.py` | Shared utilities: exit codes, logging configuration, slide filter parsing, unit conversion (`emu_to_inches()`), YAML loading |
406-
| `pptx_colors.py` | Color resolution (`#hex`, `@theme`, dict with brightness), theme color map (16 entries) |
407-
| `pptx_fonts.py` | Font resolution, family normalization, weight suffix handling, alignment mapping |
408-
| `pptx_shapes.py` | Shape constant map (29 entries + circle alias), auto-shape name mapping, rotation utilities |
409-
| `pptx_fills.py` | Solid, gradient, and pattern fill application/extraction; line/border styling with dash styles |
410-
| `pptx_text.py` | Text frame properties (margins, auto-size, vertical anchor), paragraph properties (spacing, level), run properties (underline, hyperlink) |
411-
| `pptx_tables.py` | Table element creation and extraction with cell merging, banding, and per-cell styling |
412-
| `pptx_charts.py` | Chart element creation and extraction for 12 chart types (column, bar, line, pie, scatter, bubble, etc.) |
413-
| `validate_deck.py` | PPTX-only validation for speaker notes and slide count |
414-
| `validate_slides.py` | Vision-based slide issue detection and quality validation via Copilot SDK with built-in checks and plain-text per-slide output |
415-
| `render_pdf_images.py` | PDF-to-JPG rendering via PyMuPDF with optional slide-number-based naming |
403+
| Module | Purpose |
404+
|------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
405+
| `pptx_utils.py` | Shared utilities: exit codes, logging configuration, slide filter parsing, unit conversion (`emu_to_inches()`), YAML loading |
406+
| `pptx_colors.py` | Color resolution (`#hex`, `@theme`, dict with brightness), theme color map (16 entries) |
407+
| `pptx_fonts.py` | Font resolution, family normalization, weight suffix handling, alignment mapping |
408+
| `pptx_shapes.py` | Shape constant map (29 entries + circle alias), auto-shape name mapping, rotation utilities |
409+
| `pptx_fills.py` | Solid, gradient, and pattern fill application/extraction; line/border styling with dash styles |
410+
| `pptx_text.py` | Text frame properties (margins, auto-size, vertical anchor), paragraph properties (spacing, level), run properties (underline, hyperlink) |
411+
| `pptx_tables.py` | Table element creation and extraction with cell merging, banding, and per-cell styling |
412+
| `pptx_charts.py` | Chart element creation and extraction for 12 chart types (column, bar, line, pie, scatter, bubble, etc.) |
413+
| `validate_deck.py` | PPTX-only validation for speaker notes and slide count |
414+
| `validate_slides.py` | Vision-based slide issue detection and quality validation via Copilot SDK with built-in checks and plain-text per-slide output |
415+
| `render_pdf_images.py` | PDF-to-JPG rendering via PyMuPDF with optional slide-number-based naming |
416416

417417
## python-pptx Constraints
418418

@@ -428,19 +428,19 @@ The build and extraction scripts use shared modules in the `scripts/` directory:
428428

429429
## Troubleshooting
430430

431-
| Issue | Cause | Solution |
432-
|---|---|---|
433-
| SVG runtime error | python-pptx cannot embed SVG | Convert to PNG via `cairosvg` before adding |
434-
| Text overlay between elements | Insufficient vertical spacing | Follow element positioning conventions in `pptx.instructions.md` |
435-
| Width overflow off-slide | Element extends beyond slide boundary | Follow element positioning conventions in `pptx.instructions.md` |
436-
| Bright accent color unreadable as fill | White text on bright background | Darken accent to ~60% saturation for box fills |
437-
| Background fill replaced with NoFill | Accessed `background.fill` on inherited background | Check `slide.follow_master_background` before accessing |
438-
| Missing speaker notes | Notes not specified in `content.yaml` | Add `speaker_notes` field to every content slide |
439-
| LibreOffice not found during Validate | Validate exports slides to images first | Install LibreOffice: `brew install --cask libreoffice` (macOS) |
440-
| `uv` not found | uv package manager not installed | Install uv: `curl -LsSf https://astral.sh/uv/install.sh \| sh` (macOS/Linux) or `pip install uv` |
441-
| Python not found by uv | No Python 3.11+ on PATH | Install via `uv python install 3.11` or `pyenv install 3.11` |
442-
| `uv sync` fails | Missing or corrupt `.venv` | Delete `.venv/` at the skill root and re-run `uv sync` |
443-
| Import errors in scripts | Dependencies not installed or stale venv | Run `uv sync` from the skill root to recreate the environment |
431+
| Issue | Cause | Solution |
432+
|----------------------------------------|----------------------------------------------------|--------------------------------------------------------------------------------------------------|
433+
| SVG runtime error | python-pptx cannot embed SVG | Convert to PNG via `cairosvg` before adding |
434+
| Text overlay between elements | Insufficient vertical spacing | Follow element positioning conventions in `pptx.instructions.md` |
435+
| Width overflow off-slide | Element extends beyond slide boundary | Follow element positioning conventions in `pptx.instructions.md` |
436+
| Bright accent color unreadable as fill | White text on bright background | Darken accent to ~60% saturation for box fills |
437+
| Background fill replaced with NoFill | Accessed `background.fill` on inherited background | Check `slide.follow_master_background` before accessing |
438+
| Missing speaker notes | Notes not specified in `content.yaml` | Add `speaker_notes` field to every content slide |
439+
| LibreOffice not found during Validate | Validate exports slides to images first | Install LibreOffice: `brew install --cask libreoffice` (macOS) |
440+
| `uv` not found | uv package manager not installed | Install uv: `curl -LsSf https://astral.sh/uv/install.sh \| sh` (macOS/Linux) or `pip install uv` |
441+
| Python not found by uv | No Python 3.11+ on PATH | Install via `uv python install 3.11` or `pyenv install 3.11` |
442+
| `uv sync` fails | Missing or corrupt `.venv` | Delete `.venv/` at the skill root and re-run `uv sync` |
443+
| Import errors in scripts | Dependencies not installed or stale venv | Run `uv sync` from the skill root to recreate the environment |
444444

445445
## Environment Recovery
446446

.github/skills/experimental/powerpoint/content-extra-py-template.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ def render(slide, style, content_dir):
5151

5252
## Function Parameters
5353

54-
| Parameter | Type | Description |
55-
|---|---|---|
56-
| `slide` | `pptx.slide.Slide` | The slide object with base elements already placed from `content.yaml` |
57-
| `style` | `dict` | Style dictionary with `defaults` and `metadata` keys |
58-
| `content_dir` | `pathlib.Path` | Path to the slide's content directory for referencing local assets |
54+
| Parameter | Type | Description |
55+
|---------------|--------------------|------------------------------------------------------------------------|
56+
| `slide` | `pptx.slide.Slide` | The slide object with base elements already placed from `content.yaml` |
57+
| `style` | `dict` | Style dictionary with `defaults` and `metadata` keys |
58+
| `content_dir` | `pathlib.Path` | Path to the slide's content directory for referencing local assets |
5959

6060
## Guidelines
6161

0 commit comments

Comments
 (0)