CtrlK
BlogDocsLog inGet started
Tessl Logo

jbaruch/speaker-toolkit

Seven-skill presentation system: ingest talks into a rhetoric vault, run interactive clarification, generate a speaker profile, create presentations that match your documented patterns, produce the deck illustrations + thumbnail visual layer, publish talk pages to a Jekyll shownotes site, and verify a recorded screencast against its storyboard. Includes a 113-entry Presentation Patterns taxonomy (83 observable: 64 patterns + 19 antipatterns; 30 unobservable: 21 patterns + 9 antipatterns) for scoring, brainstorming, and go-live preparation.

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

cloud_artifacts.pyskills/vault-ingress/scripts/

"""Project metadata-only cloud-placeholder receipts into queue/preflight reports.

The evidence probes own platform flags and generation checks. This module never
opens, stats, hashes, or hydrates an artifact. Sizes are apparent download bytes,
not allocated disk blocks. Repeated references to one path count once.
"""

from __future__ import annotations

from collections.abc import Iterable, Mapping
from typing import Any


CLOUD_PLACEHOLDER_REASONS = frozenset(
    {
        "pdf_cloud_placeholder_unavailable",
        "pptx_cloud_placeholder_unavailable",
        "video_cloud_placeholder_unavailable",
    }
)
ARTIFACT_DATALESS = "artifact_dataless"


def unavailable_cloud_artifacts(sources: object) -> list[dict[str, Any]]:
    """Retain only closed placeholder failures, including unknown-size facts."""
    if not isinstance(sources, Mapping):
        return []
    result = []
    for source, record in sorted(sources.items()):
        if not isinstance(record, Mapping):
            continue
        if record.get("reason_code") not in CLOUD_PLACEHOLDER_REASONS:
            continue
        details = record.get("details")
        size = details.get("size_bytes") if isinstance(details, Mapping) else None
        if isinstance(size, bool) or not isinstance(size, int) or size < 0:
            size = None
        result.append(
            {
                "source": source,
                "artifact_path": record.get("artifact_path"),
                "size_bytes": size,
                "reason_code": record["reason_code"],
            }
        )
    return result


def cloud_artifacts(assessment: Mapping[str, object]) -> list[dict[str, Any]]:
    """Read retained declarations, including sources superseded by a fallback."""
    retained = assessment.get("cloud_artifacts")
    result = [dict(item) for item in retained] if isinstance(retained, list) else []
    result.extend(
        unavailable_cloud_artifacts(assessment.get("unavailable_evidence_sources"))
    )
    unique = {(item["source"], item["artifact_path"]): item for item in result}
    return sorted(
        unique.values(), key=lambda item: (item["source"], str(item["artifact_path"]))
    )


def cloud_artifact_blocking_reason(assessment: Mapping[str, object]) -> str | None:
    """Explain the owner action needed before any fresh claim can proceed."""
    if not cloud_artifacts(assessment):
        return None
    return (
        f"{ARTIFACT_DATALESS}: declared local evidence is not downloaded; "
        "review preflight's cloud_artifacts count, total_bytes, and paths, "
        "download those files with the cloud provider, then rerun preflight"
    )


def summarize_cloud_artifacts(
    records: Iterable[tuple[str, Mapping[str, object]]],
) -> dict[str, Any]:
    """Report distinct paths, affected talks, and explicitly incomplete costs."""
    artifacts: dict[object, dict[str, Any]] = {}
    for filename, assessment in records:
        for item in cloud_artifacts(assessment):
            path = item["artifact_path"]
            key = path if path is not None else (filename, item["source"])
            if key not in artifacts:
                artifacts[key] = {
                    "artifact_path": path,
                    "size_bytes": item["size_bytes"],
                    "filenames": set(),
                    "sources": set(),
                }
            entry = artifacts[key]
            # A path observed with different sizes changed during this report;
            # do not turn either generation into a confident cost estimate.
            if entry["size_bytes"] != item["size_bytes"]:
                entry["size_bytes"] = None
            entry["filenames"].add(filename)
            entry["sources"].add(item["source"])
    rows = [
        {
            **entry,
            "filenames": sorted(entry["filenames"]),
            "sources": sorted(entry["sources"]),
        }
        for entry in artifacts.values()
    ]
    rows.sort(key=lambda row: (str(row["artifact_path"]), row["filenames"]))
    return {
        "schema_version": 1,
        "artifact_count": len(rows),
        "talk_count": len({name for row in rows for name in row["filenames"]}),
        "total_bytes": sum(row["size_bytes"] or 0 for row in rows),
        "unknown_size_count": sum(row["size_bytes"] is None for row in rows),
        "artifacts": rows,
    }

skills

vault-ingress

scripts

adherence_baseline.py

aggregate-catalog-feedback.py

apply-source-repairs.py

artifact_locator.py

artifact_metadata.py

artifact_supervisor.py

audit-pattern-catalog.py

audit-persisted-pattern-observations.py

audit-source-identities.py

batch-download-videos.py

build-contact-sheet.py

build-crop-reviewer.py

build-score-basis.py

catalog_dimension_registry.py

catalog_io.py

catalog_normalization.py

check-runtime.py

classify-pptx-evidence.py

cloud_artifacts.py

cooperative_lock.py

crop_frames.py

crop-reviewer-shell.html

crop-reviewer-shell.html.txt

crop-reviewer.js

crop-reviewer.js.txt

establish-date-provenance.py

failure_diagnostics.py

fetch-transcript.py

ingress_contract.py

local_media_contract.py

local_media_download.py

local_media_evidence.py

local_media_process.py

local_media_sampling.py

local_media_transcription.py

local_media_words.py

markdown_deck.py

migrate-tracking-database.py

mutate-tracking-database.py

pattern_evidence.py

pdf_evidence.py

persist-results.py

persisted_pattern_observations.py

pptx_catalog_selection.py

pptx_deck_facts.py

pptx_discovery_contract.py

pptx_evidence.py

pptx_talk_identity.py

pptx-extraction.py

preflight-vault.py

queue_claim_contract.py

queue-state.py

read-tracking-database.py

render-markdown-deck.py

render-vault-status.py

retained_stage.py

return_validation.py

scan-shownotes.py

source_alias_contract.py

source_identity_matching.py

summary_lock.py

sweep-pptx-talk-identity.py

tracking_database_io.py

tracking_database.py

transcript_quality.py

transcript_timing.py

validate-returns.py

vault_root_authority.py

video_evidence.py

video_integrity.py

video-slide-extraction.py

vtt-cleanup.py

write-analysis.py

ytdlp_runtime.py

SKILL.md

README.md

tile.json