Skip to content

feat(creative): deck_builder v0.2.0 baseline — placeholders, quality linting, archetypes, and new layouts (#336) - #337

Open
tusharjamunkar wants to merge 3 commits into
ARPAHLS:mainfrom
tusharjamunkar:feat/deck-builder-336
Open

feat(creative): deck_builder v0.2.0 baseline — placeholders, quality linting, archetypes, and new layouts (#336)#337
tusharjamunkar wants to merge 3 commits into
ARPAHLS:mainfrom
tusharjamunkar:feat/deck-builder-336

Conversation

@tusharjamunkar

@tusharjamunkar tusharjamunkar commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Part of #336 (v0.2.0 Baseline)

Implements the v0.2.0 baseline upgrade for creative/deck_builder, advancing it from a proof-of-concept slide assembler to an enterprise-grade presentation platform layer for autonomous agents as outlined in #336.

Following maintainer guidance (@rosspeili), this baseline PR establishes the core architectural foundations, layout extensions, heuristic linting gates, archetype outlines, and skill chaining pipelines in an incremental, reviewable step.


Scope & Roadmap Alignment

  • Included in this Baseline PR:
    • Procedural neutral Pillow placeholders (hero, logo, icon, chart_backdrop, headshot) with zero remote dependencies.
    • Image fit policies (contain, cover, crop_center, stretch, native) with EXIF transposition and color-space normalization.
    • 3 new slide layouts: timeline, metrics, and comparison.
    • Presentation quality gates: lint_deck (scoring 0–100, 9 heuristic rules).
    • Deterministic archetype outline generator: suggest_outline (5 archetypes + constraint filtering).
    • Governance metadata ribbons (metadata.classification) and legal disclaimers (metadata.legal_footer).
    • Skill chaining demo (examples/deck_builder_chain_demo.py) and .skillware.yaml.example pipeline.
  • Deferred to Follow-Up PRs (Phase 2b Roadmap):
    • extract_spec & render_patch actions.
    • New master templates, vibe tokens, and palette contrast validators.
    • team and agenda layout templates.
    • Per-layout strict required fields schema validation.
    • Golden PPTX corpus fixtures.

Key Capabilities Added

  1. Procedural Neutral Image Placeholders & Fit Policies (placeholders.py):

    • 100% offline Pillow-based placeholder generator supporting hero, logo, icon, chart_backdrop, and headshot with subtle geometric motifs and typography badges.
    • Preserves offline-first constitution: zero remote network calls or image generation APIs inside the skill.
    • Pillow-backed EXIF transposition and color-space normalization (CMYK, Grayscale, RGBA to RGB).
    • Configurable image fit policies: contain, cover / crop_center, stretch, and native.
  2. 3 New Slide Layout Types (timeline, metrics, comparison):

    • timeline: Horizontal milestone roadmaps with chronological connectors, dates, titles, descriptions, and color-coded status pills (completed, in_progress, planned).
    • metrics: KPI big-number cards (up to 4 per slide) with primary numeric callouts, metric labels, trend direction indicators (up, down, neutral), and delta badges.
    • comparison: Structured two-column comparative matrix supporting card dictionaries (title + items) or bullet arrays for contrasting features, tradeoffs, or before/after paradigms.
  3. Presentation Quality Gates (lint_deck):

    • Deterministic heuristic deck scoring (0–100) evaluating presentation readability, bullet density, and layout rhythm.
    • Rule checks implemented: WALL_OF_TEXT, DECK_TOO_LONG, MISSING_ALT, ORPHAN_BULLET, EMPTY_TITLE, CHART_NO_TITLE, METRIC_WITHOUT_LABEL, LOW_SLIDE_COUNT, MONOTONOUS_LAYOUT.
    • Supports min_score and strict_a11y parameters declared in manifest.yaml.
  4. Deterministic Archetype Outlines (suggest_outline):

    • Offline outline and skeleton generator for 5 standard presentation archetypes (investor_pitch, technical_brief, quarterly_review, product_launch, training_workshop).
    • Intelligent negative constraint filtering (e.g. constraints=["no pricing", "no financial"]) automatically removes sensitive sections while keeping narrative coherence.
  5. Enterprise Governance Support:

    • Standardized deck_spec.metadata.classification header ribbons (CONFIDENTIAL, INTERNAL, PUBLIC, RESTRICTED) stamped on slides (with backward-compatible root fallback).
    • Standardized deck_spec.metadata.legal_footer disclaimer banner stamped on all slides.
    • Fully verified with explicit shape text assertions in test suite.
  6. Skill Chaining Pipeline Demo & Tooling:

    • Authored examples/deck_builder_chain_demo.py showcasing composability with creative/bg_remover + creative/deck_builder (suggest_outlinebg_removerlint_deckrender).
    • Added deck_build_pipeline named chain to .skillware.yaml.example.
    • Indexed demo in examples/README.md and added to tests/test_examples_smoke.py.

Verification & Test Coverage

  • Bundle Unit Tests: 21/21 tests passed in skills/creative/deck_builder/test_skill.py.
  • Integration Tests: 3/3 tests passed in tests/skills/creative/test_deck_builder.py.
  • Total Skill Tests: 24/24 tests passed across unit and integration suites.
  • Smoke Tests: 14/14 examples passed in tests/test_examples_smoke.py.
  • Core Repositories: 92/92 tests passed across registry, docs, manifests, and UI schema suites.
  • Linters & Formatters: black --check clean, flake8 clean (0 errors), scripts/sync_extras.py --check OK.
  • Offline Invariant: Offline constitution validated (test_constitution_offline_no_remote_apis verifies no banned imports in any skill module).

@rosspeili

Copy link
Copy Markdown
Contributor

Thanks @tusharjamunkar, very solid v0.2.0 baseline direction for #336. Architecture split (placeholders / lint / archetypes), offline constitution, chain demo, and targeted tests all look good on our side (23/23 deck_builder tests pass, and registry/docs/smoke clean).

Before merge:

  1. Governance path bug, test_render_v020_new_layouts and instructions.md use root classification / legal_footer, but builder.py only reads deck_spec.metadata.*. Banners/footers are currently no-ops. Align contract (prefer metadata) and add a test that asserts ribbon + footer actually render.

  2. brand_kit / theme.vibe, documented in schema/instructions but not implemented in builder.py. Either wire them up or remove from schema/instructions until phase 2b (don’t ship dead fields).

  3. manifest.yaml, add parameters for lint_deck (min_score, strict_a11y) and suggest_outline (archetype, topic, constraints), plus outputs (score, passed, findings/issues, etc.).

  4. Catalog ripples, update docs/skills/README.md to 0.2.0, append skill history row on deck_builder.md, and extend the chaining section to show suggest_outline → lint → render (you already have deck_builder_chain_demo.py).

  5. PR description accuracy, bundle tests are 20 in test_skill.py (23 includes integration), please fix the count.

Scope note: This is a reasonable baseline (placeholders, fit, 3 layouts, lint, archetypes, chain). Full v0.2 (#336 parent roadmap) still defers extract_spec/render_patch, new templates/vibe/contrast, team/agenda, per-type required fields, golden fixtures, call that out in the PR so we don’t over-close the parent issue.

Happy to re-review after the additions. <3

@tusharjamunkar

Copy link
Copy Markdown
Contributor Author

Thanks for the meticulous review @rosspeili! All 6 pre-merge items have been addressed in commit 07e7e78:

  1. Governance path contract: Aligned \�uilder.py\ to read \deck_spec.metadata.classification\ and \deck_spec.metadata.legal_footer\ (with root fallback). Added \ est_governance_ribbon_and_footer_rendered\ inspecting shape texts directly to verify headers and footers render.
  2. Dead fields removed: Removed \�rand_kit\ and \ heme.vibe\ from \deck_spec.schema.json\ and \instructions.md\ until Phase 2b.
  3. \manifest.yaml\ parameters & outputs: Declared \min_score, \strict_a11y, \�rchetype, \ opic, \constraints\ parameters and all corresponding outputs.
  4. Catalog ripples: Updated \docs/skills/README.md\ to 0.2.0, added 0.2.0 skill history row on \deck_builder.md, and extended the chaining section to demonstrate \suggest_outline\ → \�g_remover\ → \lint_deck\ →
    ender.
  5. PR test count accuracy: Updated count in description (21 bundle unit tests in \ est_skill.py\ + 3 integration tests in \ est_deck_builder.py\ = 24 total).
  6. Scope note & roadmap: Updated PR to \Part of [Skill Upgrade]: creative/deck_builder — v0.2 smart themes, images, and PPTX rework #336 (v0.2.0 Baseline)\ and explicitly documented deferred Phase 2b items (\extract_spec/
    ender_patch, new master templates/vibe, \ eam/\�genda\ layouts, golden fixtures).

All 24 deck_builder tests pass, and all 6 GitHub Actions CI checks are 100% green. Ready for your re-review! <3

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.

2 participants