Six-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, and publish talk pages to a Jekyll shownotes site. Includes a 111-entry Presentation Patterns taxonomy (81 observable: 62 patterns + 19 antipatterns; 30 unobservable: 21 patterns + 9 antipatterns) for scoring, brainstorming, and go-live preparation.
—
—
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Every deterministic vault-ingress entrypoint closes its outer failure boundary (#203). No unexpected exception reaches a caller as a traceback, and no machine-readable command leaves a truncated document on stdout.
Read this when a script exits non-zero and you need to know what state it left
behind. It inventories the boundary contract only — each script's normal
validation predicates stay in the script (rules/script-as-black-box.md).
skills/vault-ingress/scripts/failure_diagnostics.py owns the emitted
document. On an unexpected
failure the entrypoint writes to stderr, one JSON object on the first line:
{"error": "<entrypoint>_unexpected_failure",
"error_type": "RuntimeError",
"origin": ["persist-results.py:412 in merge_return"]}A human-readable recovery note follows on the next lines.
error_type is the exception CLASS. The exception MESSAGE never crosses the
boundary — no-secrets forbids it, and a FileNotFoundError message embeds
the path it could not find.origin is basename:line in function, innermost last. Never a full path.Every script named below lives in skills/vault-ingress/scripts/.
| Script | stdout on success | Unexpected-failure exit | Failure identifier | Commit-position field |
|---|---|---|---|---|
persist-results.py | one JSON receipt | 2 | persist_results_unexpected_failure | database_written |
write-analysis.py | one JSON receipt | 2 | write_analysis_unexpected_failure | analyses_written |
preflight-vault.py | one JSON report | 2 | preflight_unexpected_failure (a blocking finding in a real report, not a stderr document) | — read-only |
validate-returns.py | one JSON report | 2 | validate_returns_unexpected_failure | — read-only |
audit-pattern-catalog.py | one JSON report | 3 | catalog_audit_unexpected_failure | — read-only |
aggregate-catalog-feedback.py | one JSON report | 3 | catalog_feedback_unexpected_failure | — read-only |
The two catalog gates use exit 3 because argparse already owns exit 2 there; a caller can still tell a malformed invocation from a broken tool.
preflight-vault.py is the one entrypoint whose failure lands on stdout: a
caller gates claiming on its report, and a missing report reads as "preflight
never ran". It emits a real report — ok: false, one blocking finding whose
keys match every other finding — so a consumer parses it normally.
SystemExit from a documented error path is not caught by these boundaries —
those exit codes reach the caller unchanged.database_written and analyses_written state whether the atomic commit
landed before the failure:
true — the write is durable. Re-running re-persists the batch. Re-read the
live state before deciding.false — every target was rolled back. The batch can be retried as-is.Never infer commit position from the exit code; read the field.
pptx_evidence.py, pptx-extraction.py, and pdf_evidence.py — same
directory — run supervised worker children whose stdout is reserved for one
authenticated frame. Their boundaries emit a path-neutral
<kind> worker failed: <reason> line on stderr and exit 2; the supervisor
reads a non-zero child without an authenticated response as a bounded crash.
.tessl-plugin
rules
skills
illustrations
presentation-creator
references
patterns
build
deliver
prepare
scripts
shownotes-publisher
vault-clarification
vault-ingress
references
scripts
vault-profile