@prismer/runtime 2.2.55 → 2.2.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +574 -0
- package/apc/skills/releasing-test/SKILL.md +9 -0
- package/built-in-skills/agent-coordination/SKILL.md +21 -4
- package/built-in-skills/agent-meta/SKILL.md +11 -0
- package/built-in-skills/assets/SKILL.md +1 -1
- package/built-in-skills/canvas-design/SKILL.md +3 -3
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/LICENSE-SOURCES.md +16 -0
- package/built-in-skills/claim-agent-ownership/SKILL.md +7 -3
- package/built-in-skills/claude-api/SKILL.md +1 -1
- package/built-in-skills/claude-api/python/claude-api/README.md +2 -2
- package/built-in-skills/claude-api/python/claude-api/tool-use.md +9 -5
- package/built-in-skills/claude-api/python/managed-agents/README.md +11 -1
- package/built-in-skills/claude-api/shared/error-codes.md +4 -4
- package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +4 -2
- package/built-in-skills/claude-api/shared/managed-agents-core.md +1 -2
- package/built-in-skills/claude-api/shared/managed-agents-events.md +41 -22
- package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +5 -3
- package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +1 -1
- package/built-in-skills/claude-api/shared/managed-agents-tools.md +2 -3
- package/built-in-skills/claude-api/shared/model-migration.md +3 -3
- package/built-in-skills/claude-api/shared/models.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/batches.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/files-api.md +3 -1
- package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +8 -2
- package/built-in-skills/claude-api/typescript/managed-agents/README.md +8 -2
- package/built-in-skills/codebase-design/SKILL.md +15 -1
- package/built-in-skills/codebase-design/references/requesting-code-review/GUIDE.md +291 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE.superpowers +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/NOTICE.md +37 -0
- package/built-in-skills/codebase-design/references/sdlc-review/GUIDE.md +130 -0
- package/built-in-skills/codebase-design/references/sdlc-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/sdlc-review/NOTICE.md +17 -0
- package/built-in-skills/codebase-design/references/simplify-code/GUIDE.md +269 -0
- package/built-in-skills/codebase-design/references/simplify-code/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/simplify-code/NOTICE.md +37 -0
- package/built-in-skills/competitor-intelligence/LICENSE +21 -0
- package/built-in-skills/competitor-intelligence/NOTICE.md +6 -0
- package/built-in-skills/competitor-intelligence/SKILL.md +125 -0
- package/built-in-skills/competitor-intelligence/scripts/watch_state.py +160 -0
- package/built-in-skills/conversation-compaction/SKILL.md +3 -0
- package/built-in-skills/council-creator/SKILL.md +4 -3
- package/built-in-skills/diagnosing-bugs/SKILL.md +12 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/GUIDE.md +64 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/NOTICE.md +17 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/GUIDE.md +410 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE.superpowers +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/NOTICE.md +37 -0
- package/built-in-skills/doc-coauthoring/SKILL.md +6 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/GUIDE.md +647 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE.hermes +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/PROVENANCE.md +7 -0
- package/built-in-skills/document-actions/LICENSE +21 -0
- package/built-in-skills/document-actions/NOTICE.md +21 -0
- package/built-in-skills/document-actions/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/LICENSE +21 -0
- package/built-in-skills/evidence-citations/NOTICE.md +21 -0
- package/built-in-skills/evidence-citations/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/references/citation-formats.md +68 -0
- package/built-in-skills/evidence-citations/references/grounding-rationale.md +64 -0
- package/built-in-skills/evidence-citations/scripts/sources.py +720 -0
- package/built-in-skills/frontend-design/SKILL.md +6 -0
- package/built-in-skills/frontend-design/references/claude-design/GUIDE.md +650 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE +21 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE.hermes +21 -0
- package/built-in-skills/frontend-design/references/claude-design/PROVENANCE.md +7 -0
- package/built-in-skills/image-generate/SKILL.md +5 -0
- package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +24 -3
- package/built-in-skills/mcp-builder/reference/evaluation.md +11 -2
- package/built-in-skills/mcp-builder/reference/node_mcp_server.md +34 -5
- package/built-in-skills/mcp-builder/reference/python_mcp_server.md +6 -2
- package/built-in-skills/mcp-builder/scripts/connections.py +1 -1
- package/built-in-skills/mcp-builder/scripts/evaluation.py +52 -34
- package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -2
- package/built-in-skills/meeting-actions/LICENSE +21 -0
- package/built-in-skills/meeting-actions/NOTICE.md +21 -0
- package/built-in-skills/meeting-actions/SKILL.md +48 -0
- package/built-in-skills/memory/SKILL.md +27 -3
- package/built-in-skills/memory/references/llm-wiki/GUIDE.md +468 -0
- package/built-in-skills/memory/references/llm-wiki/LICENSE +21 -0
- package/built-in-skills/memory/references/llm-wiki/NOTICE.md +4 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/lint_wiki.py +84 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/requirements.txt +1 -0
- package/built-in-skills/memory/references/llm-wiki/templates/SCHEMA.md +19 -0
- package/built-in-skills/memory/references/llm-wiki/templates/index.md +9 -0
- package/built-in-skills/memory/references/llm-wiki/templates/log.md +4 -0
- package/built-in-skills/memory-dream/SKILL.md +8 -15
- package/built-in-skills/memory-import/SKILL.md +51 -0
- package/built-in-skills/office-artifacts/NOTICE.md +15 -0
- package/built-in-skills/office-artifacts/SKILL.md +20 -0
- package/built-in-skills/office-artifacts/references/RESOURCE-LIMITS.md +44 -0
- package/built-in-skills/office-artifacts/references/docx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/docx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/docx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/docx/references/revisions-and-comments.md +88 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_comments.py +292 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_common.py +93 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_create.py +177 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_edit.py +250 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_read.py +169 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_revisions.py +149 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_template.py +70 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_validate.py +155 -0
- package/built-in-skills/office-artifacts/references/docx/tests/test_docx_skill.py +525 -0
- package/built-in-skills/office-artifacts/references/pdf/GUIDE.md +125 -0
- package/built-in-skills/office-artifacts/references/pdf/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/pdf/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/pdf/references/forms.md +99 -0
- package/built-in-skills/office-artifacts/references/pdf/references/nano-pdf-editing.md +40 -0
- package/built-in-skills/office-artifacts/references/pdf/references/ocr-extraction.md +165 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/_raster.py +87 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_marker.py +95 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_pymupdf.py +107 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_create.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_fill_form.py +97 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_form_layout.py +168 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_make_form.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_merge.py +50 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_meta.py +123 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_page_image.py +101 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_read.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_secure.py +71 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_split.py +86 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_stamp.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_watermark.py +51 -0
- package/built-in-skills/office-artifacts/references/pdf/tests/test_pdf_skill.py +414 -0
- package/built-in-skills/office-artifacts/references/powerpoint/GUIDE.md +220 -0
- package/built-in-skills/office-artifacts/references/powerpoint/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_create.py +214 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_edit.py +442 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_from_template.py +88 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_read.py +131 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_render.py +104 -0
- package/built-in-skills/office-artifacts/references/powerpoint/tests/test_powerpoint_skill.py +478 -0
- package/built-in-skills/office-artifacts/references/xlsx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/xlsx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/references/restructuring.md +74 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/csv_to_xlsx.py +108 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_create.py +259 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_edit.py +269 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_read.py +160 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_recalc.py +111 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_restructure.py +418 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_to_csv.py +69 -0
- package/built-in-skills/office-artifacts/references/xlsx/tests/test_xlsx_skill.py +542 -0
- package/built-in-skills/office-artifacts/tests/test_resource_regressions.py +272 -0
- package/built-in-skills/persona-generator/SKILL.md +9 -9
- package/built-in-skills/pkf-svg/SKILL.md +5 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/GUIDE.md +148 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE.hermes +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/PROVENANCE.md +7 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/templates/template.html +345 -0
- package/built-in-skills/pkf-writing/SKILL.md +36 -14
- package/built-in-skills/prismer-airtable/LICENSE +21 -0
- package/built-in-skills/prismer-airtable/NOTICE.md +11 -0
- package/built-in-skills/prismer-airtable/SKILL.md +248 -0
- package/built-in-skills/prismer-airtable/scripts/airtable_client.py +76 -0
- package/built-in-skills/prismer-apple-notes/LICENSE +21 -0
- package/built-in-skills/prismer-apple-notes/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-notes/SKILL.md +118 -0
- package/built-in-skills/prismer-apple-notes/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-apple-reminders/LICENSE +21 -0
- package/built-in-skills/prismer-apple-reminders/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-reminders/SKILL.md +155 -0
- package/built-in-skills/prismer-apple-reminders/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-ascii-video/LICENSE +21 -0
- package/built-in-skills/prismer-ascii-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-ascii-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-ascii-video/README.md +290 -0
- package/built-in-skills/prismer-ascii-video/SKILL.md +252 -0
- package/built-in-skills/prismer-ascii-video/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-ascii-video/references/architecture.md +807 -0
- package/built-in-skills/prismer-ascii-video/references/composition.md +900 -0
- package/built-in-skills/prismer-ascii-video/references/effects.md +1877 -0
- package/built-in-skills/prismer-ascii-video/references/inputs.md +693 -0
- package/built-in-skills/prismer-ascii-video/references/optimization.md +688 -0
- package/built-in-skills/prismer-ascii-video/references/scenes.md +1018 -0
- package/built-in-skills/prismer-ascii-video/references/shaders.md +1408 -0
- package/built-in-skills/prismer-ascii-video/references/troubleshooting.md +360 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.origin +21 -0
- package/built-in-skills/prismer-baoyu-infographic/PORT_NOTES.md +37 -0
- package/built-in-skills/prismer-baoyu-infographic/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-baoyu-infographic/SKILL.md +240 -0
- package/built-in-skills/prismer-baoyu-infographic/references/analysis-framework.md +182 -0
- package/built-in-skills/prismer-baoyu-infographic/references/base-prompt.md +43 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bento-grid.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/binary-comparison.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bridge.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/circular-flow.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comic-strip.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comparison-matrix.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dashboard.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dense-modules.md +72 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/funnel.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hierarchical-layers.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hub-spoke.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/iceberg.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/isometric-map.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/jigsaw.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/linear-progression.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/periodic-table.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/story-mountain.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/structural-breakdown.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/tree-branching.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/venn-diagram.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/winding-roadmap.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/structured-content-template.md +244 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/aged-academia.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/bold-graphic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/chalkboard.md +61 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/claymation.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/corporate-memphis.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/craft-handmade.md +44 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/cyberpunk-neon.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/hand-drawn-edu.md +63 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ikea-manual.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/kawaii.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/knolling.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/lego-brick.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/morandi-journal.md +60 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/origami.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pixel-art.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pop-laboratory.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/retro-pop-grid.md +47 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/storybook-watercolor.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/subway-map.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/technical-schematic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ui-wireframe.md +29 -0
- package/built-in-skills/prismer-blocked-page-recovery/LICENSE +21 -0
- package/built-in-skills/prismer-blocked-page-recovery/NOTICE.md +17 -0
- package/built-in-skills/prismer-blocked-page-recovery/SKILL.md +158 -0
- package/built-in-skills/prismer-blocked-page-recovery/scripts/recover_page.py +311 -0
- package/built-in-skills/prismer-box/LICENSE +21 -0
- package/built-in-skills/prismer-box/NOTICE.md +11 -0
- package/built-in-skills/prismer-box/SKILL.md +147 -0
- package/built-in-skills/prismer-box/references/bulk-operations.md +43 -0
- package/built-in-skills/prismer-box/references/cli-guide.md +133 -0
- package/built-in-skills/prismer-box/references/content-workflows.md +86 -0
- package/built-in-skills/prismer-box/references/hubs.md +77 -0
- package/built-in-skills/prismer-box/references/oauth-setup.md +92 -0
- package/built-in-skills/prismer-box/references/rest-api.md +37 -0
- package/built-in-skills/prismer-box/references/sdk-development.md +85 -0
- package/built-in-skills/prismer-box/references/search-and-ai.md +147 -0
- package/built-in-skills/prismer-box/references/troubleshooting.md +33 -0
- package/built-in-skills/prismer-box/references/webhooks-and-events.md +43 -0
- package/built-in-skills/prismer-codebase-inspection/LICENSE +21 -0
- package/built-in-skills/prismer-codebase-inspection/NOTICE.md +17 -0
- package/built-in-skills/prismer-codebase-inspection/SKILL.md +141 -0
- package/built-in-skills/prismer-computer-use/LICENSE +21 -0
- package/built-in-skills/prismer-computer-use/NOTICE.md +17 -0
- package/built-in-skills/prismer-computer-use/SKILL.md +372 -0
- package/built-in-skills/prismer-design-md/LICENSE +21 -0
- package/built-in-skills/prismer-design-md/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-design-md/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-design-md/SKILL.md +227 -0
- package/built-in-skills/prismer-design-md/templates/starter.md +99 -0
- package/built-in-skills/prismer-email-inbox-triage/LICENSE +21 -0
- package/built-in-skills/prismer-email-inbox-triage/NOTICE.md +11 -0
- package/built-in-skills/prismer-email-inbox-triage/SKILL.md +116 -0
- package/built-in-skills/prismer-findmy/LICENSE +21 -0
- package/built-in-skills/prismer-findmy/NOTICE.md +17 -0
- package/built-in-skills/prismer-findmy/SKILL.md +150 -0
- package/built-in-skills/prismer-findmy/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-gif-search/LICENSE +21 -0
- package/built-in-skills/prismer-gif-search/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-gif-search/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-gif-search/SKILL.md +97 -0
- package/built-in-skills/prismer-gif-search/scripts/tenor.py +81 -0
- package/built-in-skills/prismer-github/LICENSE +21 -0
- package/built-in-skills/prismer-github/NOTICE.md +17 -0
- package/built-in-skills/prismer-github/SKILL.md +74 -0
- package/built-in-skills/prismer-github/references/auth.md +91 -0
- package/built-in-skills/prismer-github/references/ci-troubleshooting.md +193 -0
- package/built-in-skills/prismer-github/references/code-review.md +465 -0
- package/built-in-skills/prismer-github/references/conventional-commits.md +81 -0
- package/built-in-skills/prismer-github/references/github-api-cheatsheet.md +177 -0
- package/built-in-skills/prismer-github/references/issue-to-pr.md +74 -0
- package/built-in-skills/prismer-github/references/issues.md +336 -0
- package/built-in-skills/prismer-github/references/pr-workflow.md +346 -0
- package/built-in-skills/prismer-github/references/repo-management.md +484 -0
- package/built-in-skills/prismer-github/references/review-output-template.md +84 -0
- package/built-in-skills/prismer-github/scripts/ensure-gh.py +132 -0
- package/built-in-skills/prismer-github/scripts/gh-env.sh +25 -0
- package/built-in-skills/prismer-github/scripts/git-credential-token.py +68 -0
- package/built-in-skills/prismer-github/scripts/github-api.py +71 -0
- package/built-in-skills/prismer-github/scripts/github-context.py +28 -0
- package/built-in-skills/prismer-github/templates/bug-report.md +35 -0
- package/built-in-skills/prismer-github/templates/feature-request.md +31 -0
- package/built-in-skills/prismer-github/templates/pr-body-bugfix.md +35 -0
- package/built-in-skills/prismer-github/templates/pr-body-feature.md +33 -0
- package/built-in-skills/prismer-google-workspace/LICENSE +21 -0
- package/built-in-skills/prismer-google-workspace/NOTICE.md +11 -0
- package/built-in-skills/prismer-google-workspace/SKILL.md +369 -0
- package/built-in-skills/prismer-google-workspace/references/daily-brief.md +65 -0
- package/built-in-skills/prismer-google-workspace/references/gmail-search-syntax.md +63 -0
- package/built-in-skills/prismer-google-workspace/scripts/_hermes_home.py +17 -0
- package/built-in-skills/prismer-google-workspace/scripts/_private_state.py +39 -0
- package/built-in-skills/prismer-google-workspace/scripts/google_api.py +1339 -0
- package/built-in-skills/prismer-google-workspace/scripts/gws_bridge.py +121 -0
- package/built-in-skills/prismer-google-workspace/scripts/setup.py +563 -0
- package/built-in-skills/prismer-google-workspace/tests/test_productivity_regressions.py +214 -0
- package/built-in-skills/prismer-hermes-agent/LICENSE +21 -0
- package/built-in-skills/prismer-hermes-agent/NOTICE.md +17 -0
- package/built-in-skills/prismer-hermes-agent/SKILL.md +247 -0
- package/built-in-skills/prismer-hermes-agent/references/background-systems.md +108 -0
- package/built-in-skills/prismer-hermes-agent/references/cli-reference.md +158 -0
- package/built-in-skills/prismer-hermes-agent/references/configuration.md +96 -0
- package/built-in-skills/prismer-hermes-agent/references/contributor-guide.md +151 -0
- package/built-in-skills/prismer-hermes-agent/references/delegate-task-concurrency-diagnosis.md +47 -0
- package/built-in-skills/prismer-hermes-agent/references/desktop-plugins.md +215 -0
- package/built-in-skills/prismer-hermes-agent/references/native-mcp.md +351 -0
- package/built-in-skills/prismer-hermes-agent/references/petdex.md +82 -0
- package/built-in-skills/prismer-hermes-agent/references/portal-auth-for-third-party-apps.md +135 -0
- package/built-in-skills/prismer-hermes-agent/references/project-context-files.md +55 -0
- package/built-in-skills/prismer-hermes-agent/references/providers-and-models.md +81 -0
- package/built-in-skills/prismer-hermes-agent/references/security-privacy.md +73 -0
- package/built-in-skills/prismer-hermes-agent/references/slash-commands.md +119 -0
- package/built-in-skills/prismer-hermes-agent/references/themes.md +134 -0
- package/built-in-skills/prismer-hermes-agent/references/troubleshooting.md +87 -0
- package/built-in-skills/prismer-hermes-agent/references/tui-widgets.md +144 -0
- package/built-in-skills/prismer-hermes-agent/references/webhooks.md +219 -0
- package/built-in-skills/prismer-hermes-agent/references/windows-quirks.md +64 -0
- package/built-in-skills/prismer-hermes-agent/templates/clock.mjs +51 -0
- package/built-in-skills/prismer-hermes-agent/templates/plugin.js +97 -0
- package/built-in-skills/prismer-hermes-agent/templates/skin.yaml +49 -0
- package/built-in-skills/prismer-himalaya/LICENSE +21 -0
- package/built-in-skills/prismer-himalaya/NOTICE.md +11 -0
- package/built-in-skills/prismer-himalaya/SKILL.md +340 -0
- package/built-in-skills/prismer-himalaya/references/configuration.md +227 -0
- package/built-in-skills/prismer-himalaya/references/message-composition.md +206 -0
- package/built-in-skills/prismer-himalaya/scripts/compose_draft.py +48 -0
- package/built-in-skills/prismer-im-collab/SKILL.md +1 -1
- package/built-in-skills/prismer-imessage/LICENSE +21 -0
- package/built-in-skills/prismer-imessage/NOTICE.md +17 -0
- package/built-in-skills/prismer-imessage/SKILL.md +128 -0
- package/built-in-skills/prismer-imessage/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-manim-video/LICENSE +21 -0
- package/built-in-skills/prismer-manim-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-manim-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-manim-video/README.md +23 -0
- package/built-in-skills/prismer-manim-video/SKILL.md +279 -0
- package/built-in-skills/prismer-manim-video/references/animation-design-thinking.md +161 -0
- package/built-in-skills/prismer-manim-video/references/animations.md +282 -0
- package/built-in-skills/prismer-manim-video/references/camera-and-3d.md +135 -0
- package/built-in-skills/prismer-manim-video/references/decorations.md +202 -0
- package/built-in-skills/prismer-manim-video/references/equations.md +216 -0
- package/built-in-skills/prismer-manim-video/references/graphs-and-data.md +163 -0
- package/built-in-skills/prismer-manim-video/references/mobjects.md +333 -0
- package/built-in-skills/prismer-manim-video/references/paper-explainer.md +255 -0
- package/built-in-skills/prismer-manim-video/references/production-quality.md +190 -0
- package/built-in-skills/prismer-manim-video/references/rendering.md +187 -0
- package/built-in-skills/prismer-manim-video/references/scene-planning.md +118 -0
- package/built-in-skills/prismer-manim-video/references/troubleshooting.md +135 -0
- package/built-in-skills/prismer-manim-video/references/updaters-and-trackers.md +260 -0
- package/built-in-skills/prismer-manim-video/references/visual-design.md +124 -0
- package/built-in-skills/prismer-manim-video/scripts/setup.sh +15 -0
- package/built-in-skills/prismer-maps/LICENSE +21 -0
- package/built-in-skills/prismer-maps/NOTICE.md +11 -0
- package/built-in-skills/prismer-maps/SKILL.md +240 -0
- package/built-in-skills/prismer-maps/scripts/maps_client.py +1324 -0
- package/built-in-skills/prismer-node-inspect-debugger/LICENSE +21 -0
- package/built-in-skills/prismer-node-inspect-debugger/NOTICE.md +17 -0
- package/built-in-skills/prismer-node-inspect-debugger/SKILL.md +347 -0
- package/built-in-skills/prismer-notion/LICENSE +21 -0
- package/built-in-skills/prismer-notion/NOTICE.md +11 -0
- package/built-in-skills/prismer-notion/SKILL.md +495 -0
- package/built-in-skills/prismer-notion/references/block-types.md +112 -0
- package/built-in-skills/prismer-obsidian/LICENSE +21 -0
- package/built-in-skills/prismer-obsidian/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-obsidian/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-obsidian/SKILL.md +80 -0
- package/built-in-skills/prismer-obsidian/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-obsidian/scripts/write_note.py +84 -0
- package/built-in-skills/prismer-p5js/LICENSE +21 -0
- package/built-in-skills/prismer-p5js/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-p5js/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-p5js/README.md +64 -0
- package/built-in-skills/prismer-p5js/SKILL.md +574 -0
- package/built-in-skills/prismer-p5js/references/animation.md +439 -0
- package/built-in-skills/prismer-p5js/references/color-systems.md +355 -0
- package/built-in-skills/prismer-p5js/references/core-api.md +410 -0
- package/built-in-skills/prismer-p5js/references/export-pipeline.md +534 -0
- package/built-in-skills/prismer-p5js/references/interaction.md +398 -0
- package/built-in-skills/prismer-p5js/references/shapes-and-geometry.md +300 -0
- package/built-in-skills/prismer-p5js/references/troubleshooting.md +532 -0
- package/built-in-skills/prismer-p5js/references/typography.md +302 -0
- package/built-in-skills/prismer-p5js/references/visual-effects.md +905 -0
- package/built-in-skills/prismer-p5js/references/webgl-and-3d.md +423 -0
- package/built-in-skills/prismer-p5js/scripts/export-frames.js +91 -0
- package/built-in-skills/prismer-p5js/scripts/render.sh +113 -0
- package/built-in-skills/prismer-p5js/scripts/serve.sh +25 -0
- package/built-in-skills/prismer-p5js/scripts/setup.sh +87 -0
- package/built-in-skills/prismer-p5js/templates/viewer.html +401 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.origin +21 -0
- package/built-in-skills/prismer-popular-web-designs/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-popular-web-designs/SKILL.md +218 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airbnb.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airtable.md +102 -0
- package/built-in-skills/prismer-popular-web-designs/templates/apple.md +326 -0
- package/built-in-skills/prismer-popular-web-designs/templates/bmw.md +193 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cal.md +272 -0
- package/built-in-skills/prismer-popular-web-designs/templates/claude.md +325 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clay.md +317 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clickhouse.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cohere.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/coinbase.md +142 -0
- package/built-in-skills/prismer-popular-web-designs/templates/composio.md +320 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cursor.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/elevenlabs.md +278 -0
- package/built-in-skills/prismer-popular-web-designs/templates/expo.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/figma.md +233 -0
- package/built-in-skills/prismer-popular-web-designs/templates/framer.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/hashicorp.md +291 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ibm.md +345 -0
- package/built-in-skills/prismer-popular-web-designs/templates/intercom.md +159 -0
- package/built-in-skills/prismer-popular-web-designs/templates/kraken.md +138 -0
- package/built-in-skills/prismer-popular-web-designs/templates/linear.app.md +380 -0
- package/built-in-skills/prismer-popular-web-designs/templates/lovable.md +311 -0
- package/built-in-skills/prismer-popular-web-designs/templates/minimax.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mintlify.md +339 -0
- package/built-in-skills/prismer-popular-web-designs/templates/miro.md +121 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mistral.ai.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mongodb.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/notion.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/nvidia.md +306 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ollama.md +280 -0
- package/built-in-skills/prismer-popular-web-designs/templates/opencode.ai.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/pinterest.md +243 -0
- package/built-in-skills/prismer-popular-web-designs/templates/posthog.md +269 -0
- package/built-in-skills/prismer-popular-web-designs/templates/raycast.md +281 -0
- package/built-in-skills/prismer-popular-web-designs/templates/replicate.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/resend.md +316 -0
- package/built-in-skills/prismer-popular-web-designs/templates/revolut.md +198 -0
- package/built-in-skills/prismer-popular-web-designs/templates/runwayml.md +257 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sanity.md +370 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sentry.md +275 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spacex.md +207 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spotify.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/stripe.md +335 -0
- package/built-in-skills/prismer-popular-web-designs/templates/supabase.md +268 -0
- package/built-in-skills/prismer-popular-web-designs/templates/superhuman.md +265 -0
- package/built-in-skills/prismer-popular-web-designs/templates/together.ai.md +276 -0
- package/built-in-skills/prismer-popular-web-designs/templates/uber.md +308 -0
- package/built-in-skills/prismer-popular-web-designs/templates/vercel.md +323 -0
- package/built-in-skills/prismer-popular-web-designs/templates/voltagent.md +336 -0
- package/built-in-skills/prismer-popular-web-designs/templates/warp.md +266 -0
- package/built-in-skills/prismer-popular-web-designs/templates/webflow.md +105 -0
- package/built-in-skills/prismer-popular-web-designs/templates/wise.md +186 -0
- package/built-in-skills/prismer-popular-web-designs/templates/x.ai.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/zapier.md +341 -0
- package/built-in-skills/prismer-product-price-monitor/LICENSE +21 -0
- package/built-in-skills/prismer-product-price-monitor/NOTICE.md +11 -0
- package/built-in-skills/prismer-product-price-monitor/SKILL.md +97 -0
- package/built-in-skills/prismer-product-price-monitor/scripts/watch_state.py +116 -0
- package/built-in-skills/prismer-python-debugpy/LICENSE +21 -0
- package/built-in-skills/prismer-python-debugpy/NOTICE.md +17 -0
- package/built-in-skills/prismer-python-debugpy/SKILL.md +377 -0
- package/built-in-skills/prismer-python-debugpy/scripts/dap_client.py +68 -0
- package/built-in-skills/prismer-songsee/LICENSE +21 -0
- package/built-in-skills/prismer-songsee/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songsee/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songsee/SKILL.md +91 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/SKILL.md +317 -0
- package/built-in-skills/prismer-spike/LICENSE +21 -0
- package/built-in-skills/prismer-spike/LICENSE.gsd +21 -0
- package/built-in-skills/prismer-spike/NOTICE.md +17 -0
- package/built-in-skills/prismer-spike/SKILL.md +212 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/LICENSE +21 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/NOTICE.md +11 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/SKILL.md +156 -0
- package/built-in-skills/prismer-xurl/LICENSE +21 -0
- package/built-in-skills/prismer-xurl/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-xurl/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-xurl/SKILL.md +444 -0
- package/built-in-skills/prismer-xurl/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/LICENSE +21 -0
- package/built-in-skills/prismer-youtube-content/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-youtube-content/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-youtube-content/SKILL.md +86 -0
- package/built-in-skills/prismer-youtube-content/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/references/output-formats.md +56 -0
- package/built-in-skills/prismer-youtube-content/scripts/fetch_transcript.py +146 -0
- package/built-in-skills/research-arxiv/LICENSE +21 -0
- package/built-in-skills/research-arxiv/NOTICE.md +4 -0
- package/built-in-skills/research-arxiv/SKILL.md +263 -0
- package/built-in-skills/research-arxiv/scripts/search_arxiv.py +111 -0
- package/built-in-skills/role-builder/SKILL.md +7 -1
- package/built-in-skills/role-builder/scripts/author-role.mjs +23 -7
- package/built-in-skills/role-builder/scripts/ingest-role.mjs +15 -117
- package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +15 -1
- package/built-in-skills/role-builder/scripts/operation-harness.mjs +6 -4
- package/built-in-skills/skill-creator/LICENSE.prismer +21 -0
- package/built-in-skills/skill-creator/NOTICE.md +18 -0
- package/built-in-skills/skill-creator/SKILL.md +20 -1
- package/built-in-skills/skill-creator/eval-viewer/generate_review.py +20 -31
- package/built-in-skills/skill-creator/eval-viewer/viewer.html +35 -23
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/GUIDE.md +220 -0
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/LICENSE +21 -0
- package/built-in-skills/{skill-authoring/SKILL.md → skill-creator/references/skill-authoring/GUIDE.md} +1 -1
- package/built-in-skills/{skill-builder/SKILL.md → skill-creator/references/skill-builder/GUIDE.md} +8 -12
- package/built-in-skills/skill-creator/references/skill-builder/scripts/ingest.mjs +93 -0
- package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +3 -2
- package/built-in-skills/skill-creator/scripts/import-library.mjs +30 -7
- package/built-in-skills/skill-creator/scripts/improve_description.py +14 -16
- package/built-in-skills/skill-creator/scripts/package_skill.py +16 -9
- package/built-in-skills/skill-creator/scripts/quick_validate.py +22 -5
- package/built-in-skills/skill-creator/scripts/run_eval.py +63 -144
- package/built-in-skills/skill-creator/scripts/run_loop.py +24 -16
- package/built-in-skills/slack-gif-creator/core/gif_builder.py +13 -2
- package/built-in-skills/slack-gif-creator/core/validators.py +17 -7
- package/built-in-skills/tasks/SKILL.md +2 -2
- package/built-in-skills/tdd/SKILL.md +7 -0
- package/built-in-skills/tdd/references/test-driven-development/GUIDE.md +356 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE +21 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE.superpowers +21 -0
- package/built-in-skills/tdd/references/test-driven-development/NOTICE.md +37 -0
- package/built-in-skills/team/SKILL.md +1 -1
- package/built-in-skills/web-artifacts-builder/SKILL.md +3 -3
- package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +9 -7
- package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +28 -55
- package/built-in-skills/webapp-qa/LICENSE +21 -0
- package/built-in-skills/webapp-qa/NOTICE.md +37 -0
- package/built-in-skills/webapp-qa/SKILL.md +41 -0
- package/built-in-skills/webapp-qa/references/dogfood/GUIDE.md +161 -0
- package/built-in-skills/webapp-qa/references/issue-taxonomy.md +109 -0
- package/built-in-skills/webapp-qa/templates/dogfood-report-template.md +86 -0
- package/built-in-skills/webapp-testing/SKILL.md +9 -2
- package/built-in-skills/webapp-testing/examples/console_logging.py +10 -4
- package/built-in-skills/webapp-testing/examples/element_discovery.py +11 -4
- package/built-in-skills/webapp-testing/examples/static_html_automation.py +14 -9
- package/built-in-skills/webapp-testing/scripts/with_server.py +34 -10
- package/built-in-skills/weekly-review/LICENSE +21 -0
- package/built-in-skills/weekly-review/NOTICE.md +21 -0
- package/built-in-skills/weekly-review/SKILL.md +49 -0
- package/components/eaas-pi-components.manifest.json +37 -0
- package/dist/cli.cjs +7017 -3340
- package/dist/cli.js +6631 -2936
- package/dist/index.cjs +7863 -3830
- package/dist/index.d.cts +459 -5
- package/dist/index.d.ts +459 -5
- package/dist/index.js +7106 -3064
- package/package.json +7 -2
- package/plugins/memory/prismer/__init__.py +4 -0
- package/plugins/memory/prismer/tool-schemas.generated.json +8 -0
- package/built-in-skills/skill-builder/scripts/ingest.mjs +0 -265
- package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- /package/built-in-skills/{document-generation/SKILL.md → office-artifacts/references/document-generation/GUIDE.md} +0 -0
- /package/built-in-skills/{skill-authoring/skill.json → skill-creator/references/skill-authoring/draft-contract.json} +0 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Paper Explainer Workflow
|
|
2
|
+
|
|
3
|
+
How to turn a research paper into an animated explainer video.
|
|
4
|
+
|
|
5
|
+
## Why animate a paper?
|
|
6
|
+
|
|
7
|
+
A research paper is optimized for precision and completeness. A video is optimized for understanding and retention. The translation is NOT "read the paper aloud with pictures" — it's "extract the core insight and make it feel obvious through visual storytelling."
|
|
8
|
+
|
|
9
|
+
The paper has one job: prove the claim is true. The video has a different job: make the viewer understand WHY the claim is true, and WHY it matters.
|
|
10
|
+
|
|
11
|
+
## Who is watching?
|
|
12
|
+
|
|
13
|
+
Before anything, decide the audience:
|
|
14
|
+
|
|
15
|
+
| Audience | Prerequisites | Pacing | Depth |
|
|
16
|
+
|----------|--------------|--------|-------|
|
|
17
|
+
| General public | None | Slow, many analogies | Intuition only, skip proofs |
|
|
18
|
+
| Undergrad students | Basic math/CS | Medium, some formalism | Key equations, skip derivations |
|
|
19
|
+
| Grad students / researchers | Domain knowledge | Faster, more notation | Full equations, sketch proofs |
|
|
20
|
+
|
|
21
|
+
This determines everything: vocabulary, pacing, which sections to animate, how much math to show.
|
|
22
|
+
|
|
23
|
+
## The 5-minute template
|
|
24
|
+
|
|
25
|
+
Most paper explainers fit this structure (scale times proportionally for longer videos):
|
|
26
|
+
|
|
27
|
+
| Section | Duration | Purpose |
|
|
28
|
+
|---------|----------|---------|
|
|
29
|
+
| **Hook** | 0:00-0:30 | Surprising result or provocative question |
|
|
30
|
+
| **Problem** | 0:30-1:30 | What was broken/missing before this paper |
|
|
31
|
+
| **Key insight** | 1:30-3:00 | The core idea, explained visually |
|
|
32
|
+
| **How it works** | 3:00-4:00 | Method/algorithm, simplified |
|
|
33
|
+
| **Evidence** | 4:00-4:30 | Key result that proves it works |
|
|
34
|
+
| **Implications** | 4:30-5:00 | Why it matters, what it enables |
|
|
35
|
+
|
|
36
|
+
### What to skip
|
|
37
|
+
|
|
38
|
+
- Related work survey → one sentence: "Previous approaches did X, which had problem Y"
|
|
39
|
+
- Implementation details → skip unless they're the contribution
|
|
40
|
+
- Ablation studies → show one chart at most
|
|
41
|
+
- Proofs → show the key step, not the full proof
|
|
42
|
+
- Hyperparameter tuning → skip entirely
|
|
43
|
+
|
|
44
|
+
### What to expand
|
|
45
|
+
|
|
46
|
+
- The core insight → this gets the most screen time
|
|
47
|
+
- Geometric/visual intuition → if the paper has math, show what it MEANS
|
|
48
|
+
- Before/after comparison → the most compelling evidence
|
|
49
|
+
|
|
50
|
+
## Pre-code workflow
|
|
51
|
+
|
|
52
|
+
### Gate 1: Narration script
|
|
53
|
+
|
|
54
|
+
Write the full narration before any code. Every sentence maps to a visual beat. If you can't write the narration, you don't understand the paper well enough to animate it.
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
## Hook (30s)
|
|
58
|
+
"What if I told you that a model with 7 billion parameters can outperform
|
|
59
|
+
one with 70 billion — if you train it on the right data?"
|
|
60
|
+
|
|
61
|
+
## Problem (60s)
|
|
62
|
+
"The standard approach is to scale up. More parameters, more compute.
|
|
63
|
+
[VISUAL: bar chart showing model sizes growing exponentially]
|
|
64
|
+
But Chinchilla showed us that most models are undertrained..."
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Gate 2: Scene list
|
|
68
|
+
|
|
69
|
+
After the narration, break it into scenes. Each scene is one Manim class.
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
Scene 1: Hook — surprising stat with animated counter
|
|
73
|
+
Scene 2: Problem — model size bar chart growing
|
|
74
|
+
Scene 3: Key insight — training data vs parameters, animated 2D plot
|
|
75
|
+
Scene 4: Method — pipeline diagram building left to right
|
|
76
|
+
Scene 5: Results — before/after comparison with animated bars
|
|
77
|
+
Scene 6: Closing — implications text
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Gate 3: Style constants
|
|
81
|
+
|
|
82
|
+
Before coding scenes, define the visual language:
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
# style.py — import in every scene file
|
|
86
|
+
BG = "#0D1117"
|
|
87
|
+
PRIMARY = "#58C4DD"
|
|
88
|
+
SECONDARY = "#83C167"
|
|
89
|
+
ACCENT = "#FFFF00"
|
|
90
|
+
HIGHLIGHT = "#FF6B6B"
|
|
91
|
+
MONO = "Menlo"
|
|
92
|
+
|
|
93
|
+
# Color meanings for THIS paper
|
|
94
|
+
MODEL_COLOR = PRIMARY # "the model"
|
|
95
|
+
DATA_COLOR = SECONDARY # "training data"
|
|
96
|
+
BASELINE_COLOR = HIGHLIGHT # "previous approach"
|
|
97
|
+
RESULT_COLOR = ACCENT # "our result"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## First-principles equation explanation
|
|
101
|
+
|
|
102
|
+
When the paper has a key equation, don't just show it — build it from intuition:
|
|
103
|
+
|
|
104
|
+
### The "what would you do?" pattern
|
|
105
|
+
|
|
106
|
+
1. Pose the problem in plain language
|
|
107
|
+
2. Ask what the simplest solution would be
|
|
108
|
+
3. Show why it doesn't work (animate the failure)
|
|
109
|
+
4. Introduce the paper's solution as the fix
|
|
110
|
+
5. THEN show the equation — it now feels earned
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
# Scene: Why we need attention (for a Transformer paper)
|
|
114
|
+
# Step 1: "How do we let each word look at every other word?"
|
|
115
|
+
# Step 2: Show naive approach (fully connected = O(n²) everything)
|
|
116
|
+
# Step 3: Show it breaks (information overload, no selectivity)
|
|
117
|
+
# Step 4: "What if each word could CHOOSE which words to attend to?"
|
|
118
|
+
# Step 5: Show attention equation — Q, K, V now mean something
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Equation reveal strategy
|
|
122
|
+
|
|
123
|
+
```python
|
|
124
|
+
# Show equation dimmed first (full destination)
|
|
125
|
+
eq = MathTex(r"Attention(Q,K,V) = softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V")
|
|
126
|
+
eq.set_opacity(0.15)
|
|
127
|
+
self.play(FadeIn(eq))
|
|
128
|
+
|
|
129
|
+
# Highlight Q, K, V one at a time with color + label
|
|
130
|
+
for part, color, label_text in [
|
|
131
|
+
(r"Q", PRIMARY, "Query: what am I looking for?"),
|
|
132
|
+
(r"K", SECONDARY, "Key: what do I contain?"),
|
|
133
|
+
(r"V", ACCENT, "Value: what do I output?"),
|
|
134
|
+
]:
|
|
135
|
+
eq.set_color_by_tex(part, color)
|
|
136
|
+
label = Text(label_text, font_size=18, color=color, font=MONO)
|
|
137
|
+
# position label, animate it, wait, then dim it
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Building architecture diagrams
|
|
141
|
+
|
|
142
|
+
### The progressive build pattern
|
|
143
|
+
|
|
144
|
+
Don't show the full architecture at once. Build it:
|
|
145
|
+
|
|
146
|
+
1. First component appears alone → explain
|
|
147
|
+
2. Arrow grows → "this feeds into..."
|
|
148
|
+
3. Second component appears → explain
|
|
149
|
+
4. Repeat until complete
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
# Component factory
|
|
153
|
+
def make_box(label, color, width=2.0, height=0.8):
|
|
154
|
+
box = RoundedRectangle(corner_radius=0.1, width=width, height=height,
|
|
155
|
+
color=color, fill_opacity=0.1, stroke_width=1.5)
|
|
156
|
+
text = Text(label, font_size=18, font=MONO, color=color).move_to(box)
|
|
157
|
+
return Group(box, text)
|
|
158
|
+
|
|
159
|
+
encoder = make_box("Encoder", PRIMARY)
|
|
160
|
+
decoder = make_box("Decoder", SECONDARY).next_to(encoder, RIGHT, buff=1.5)
|
|
161
|
+
arrow = Arrow(encoder.get_right(), decoder.get_left(), color=DIM, stroke_width=1.5)
|
|
162
|
+
|
|
163
|
+
self.play(FadeIn(encoder))
|
|
164
|
+
self.wait(1) # explain encoder
|
|
165
|
+
self.play(GrowArrow(arrow))
|
|
166
|
+
self.play(FadeIn(decoder))
|
|
167
|
+
self.wait(1) # explain decoder
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Data flow animation
|
|
171
|
+
|
|
172
|
+
After building the diagram, show data moving through it:
|
|
173
|
+
|
|
174
|
+
```python
|
|
175
|
+
# Dot traveling along the pipeline
|
|
176
|
+
data_dot = Dot(color=ACCENT, radius=0.1).move_to(encoder)
|
|
177
|
+
self.play(FadeIn(data_dot))
|
|
178
|
+
self.play(MoveAlongPath(data_dot, arrow), run_time=1)
|
|
179
|
+
self.play(data_dot.animate.move_to(decoder), run_time=0.5)
|
|
180
|
+
self.play(Flash(data_dot.get_center(), color=ACCENT), run_time=0.3)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Animating results
|
|
184
|
+
|
|
185
|
+
### Bar chart comparison (most common)
|
|
186
|
+
|
|
187
|
+
```python
|
|
188
|
+
# Before/after bars
|
|
189
|
+
before_data = [45, 52, 38, 61]
|
|
190
|
+
after_data = [78, 85, 72, 91]
|
|
191
|
+
labels = ["Task A", "Task B", "Task C", "Task D"]
|
|
192
|
+
|
|
193
|
+
before_chart = BarChart(before_data, bar_names=labels,
|
|
194
|
+
y_range=[0, 100, 20], bar_colors=[HIGHLIGHT]*4).scale(0.6).shift(LEFT*3)
|
|
195
|
+
after_chart = BarChart(after_data, bar_names=labels,
|
|
196
|
+
y_range=[0, 100, 20], bar_colors=[SECONDARY]*4).scale(0.6).shift(RIGHT*3)
|
|
197
|
+
|
|
198
|
+
before_label = Text("Baseline", font_size=20, color=HIGHLIGHT, font=MONO)
|
|
199
|
+
after_label = Text("Ours", font_size=20, color=SECONDARY, font=MONO)
|
|
200
|
+
|
|
201
|
+
# Reveal baseline first, then ours (dramatic comparison)
|
|
202
|
+
self.play(Create(before_chart), FadeIn(before_label))
|
|
203
|
+
self.wait(1.5)
|
|
204
|
+
self.play(Create(after_chart), FadeIn(after_label))
|
|
205
|
+
self.wait(0.5)
|
|
206
|
+
|
|
207
|
+
# Highlight the improvement
|
|
208
|
+
improvement = Text("+32.5 points (mean 49 to 81.5)", font_size=24, color=ACCENT, font=MONO)
|
|
209
|
+
self.play(FadeIn(improvement))
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Training curve (for ML papers)
|
|
213
|
+
|
|
214
|
+
```python
|
|
215
|
+
tracker = ValueTracker(0)
|
|
216
|
+
curve = always_redraw(lambda: axes.plot(
|
|
217
|
+
lambda x: 1 - 0.8 * np.exp(-x / 3),
|
|
218
|
+
x_range=[0, tracker.get_value()], color=PRIMARY
|
|
219
|
+
))
|
|
220
|
+
epoch_label = always_redraw(lambda: Text(
|
|
221
|
+
f"Epoch {int(tracker.get_value())}", font_size=18, font=MONO
|
|
222
|
+
).to_corner(UR))
|
|
223
|
+
|
|
224
|
+
self.add(curve, epoch_label)
|
|
225
|
+
self.play(tracker.animate.set_value(10), run_time=5, rate_func=linear)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Domain-specific patterns
|
|
229
|
+
|
|
230
|
+
### ML papers
|
|
231
|
+
- Show data flow through the model (animated pipeline)
|
|
232
|
+
- Training curves with `ValueTracker`
|
|
233
|
+
- Attention heatmaps as colored grids
|
|
234
|
+
- Embedding space as 2D scatter (PCA/t-SNE visualization)
|
|
235
|
+
- Loss landscape as 3D surface with gradient descent dot
|
|
236
|
+
|
|
237
|
+
### Physics/math papers
|
|
238
|
+
- Use `LinearTransformationScene` for linear algebra
|
|
239
|
+
- Vector fields with `ArrowVectorField` / `StreamLines`
|
|
240
|
+
- Phase spaces with `NumberPlane` + trajectories
|
|
241
|
+
- Wave equations with time-parameterized plots
|
|
242
|
+
|
|
243
|
+
### Systems/architecture papers
|
|
244
|
+
- Pipeline diagrams built progressively
|
|
245
|
+
- `ShowPassingFlash` for data flow along arrows
|
|
246
|
+
- `ZoomedScene` for zooming into components
|
|
247
|
+
- Before/after latency/throughput comparisons
|
|
248
|
+
|
|
249
|
+
## Common mistakes
|
|
250
|
+
|
|
251
|
+
1. **Trying to cover the whole paper.** A 5-minute video can explain ONE core insight well. Covering everything means explaining nothing.
|
|
252
|
+
2. **Reading the abstract as narration.** Academic writing is designed for readers, not listeners. Rewrite in conversational language.
|
|
253
|
+
3. **Showing notation without meaning.** Never show a symbol without first showing what it represents visually.
|
|
254
|
+
4. **Skipping the motivation.** Jumping straight to "here's our method" without showing why the problem matters. The Problem section is what makes the viewer care.
|
|
255
|
+
5. **Identical pacing throughout.** The hook and key insight need the most visual energy. The method section can be faster. Evidence should land with impact (pause after showing the big number).
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Production Quality Checklist
|
|
2
|
+
|
|
3
|
+
Standards and checks for ensuring animation output is publication-ready.
|
|
4
|
+
|
|
5
|
+
## Pre-Code Checklist
|
|
6
|
+
|
|
7
|
+
Before writing any Manim code:
|
|
8
|
+
|
|
9
|
+
- [ ] Narration script written with visual beats marked
|
|
10
|
+
- [ ] Scene list with purpose, duration, and layout for each
|
|
11
|
+
- [ ] Color palette defined with meaning assignments (`PRIMARY` = main concept, etc.)
|
|
12
|
+
- [ ] `MONO = "Menlo"` set as the font constant
|
|
13
|
+
- [ ] Target resolution and aspect ratio decided
|
|
14
|
+
|
|
15
|
+
## Text Quality
|
|
16
|
+
|
|
17
|
+
### Overlap prevention
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
# RULE: buff >= 0.5 for edge text
|
|
21
|
+
label.to_edge(DOWN, buff=0.5) # GOOD
|
|
22
|
+
label.to_edge(DOWN, buff=0.3) # BAD — may clip
|
|
23
|
+
|
|
24
|
+
# RULE: FadeOut previous before adding new at same position
|
|
25
|
+
self.play(ReplacementTransform(note1, note2)) # GOOD
|
|
26
|
+
self.play(Write(note2)) # BAD — overlaps note1
|
|
27
|
+
|
|
28
|
+
# RULE: Reduce font size for dense scenes
|
|
29
|
+
# When > 4 text elements visible, use font_size=20 not 28
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Width enforcement
|
|
33
|
+
|
|
34
|
+
Long text strings overflow the frame:
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# RULE: Set max width for any text that might be long
|
|
38
|
+
text = Text("This is a potentially long description", font_size=22, font=MONO)
|
|
39
|
+
if text.width > config.frame_width - 1.0:
|
|
40
|
+
text.set_width(config.frame_width - 1.0)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Font consistency
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
# RULE: Define MONO once, use everywhere
|
|
47
|
+
MONO = "Menlo"
|
|
48
|
+
|
|
49
|
+
# WRONG: mixing fonts
|
|
50
|
+
Text("Title", font="Helvetica")
|
|
51
|
+
Text("Label", font="Arial")
|
|
52
|
+
Text("Code", font="Courier")
|
|
53
|
+
|
|
54
|
+
# RIGHT: one font
|
|
55
|
+
Text("Title", font=MONO, weight=BOLD, font_size=48)
|
|
56
|
+
Text("Label", font=MONO, font_size=20)
|
|
57
|
+
Text("Code", font=MONO, font_size=18)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Spatial Layout
|
|
61
|
+
|
|
62
|
+
### The coordinate budget
|
|
63
|
+
|
|
64
|
+
The visible frame is approximately 14.2 wide × 8.0 tall (default 16:9). With mandatory margins:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Usable area: x ∈ [-6.5, 6.5], y ∈ [-3.5, 3.5]
|
|
68
|
+
Top title zone: y ∈ [2.5, 3.5]
|
|
69
|
+
Bottom note zone: y ∈ [-3.5, -2.5]
|
|
70
|
+
Main content: y ∈ [-2.5, 2.5], x ∈ [-6.0, 6.0]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Fill the frame
|
|
74
|
+
|
|
75
|
+
Empty scenes look unfinished. If the main content is small, add context:
|
|
76
|
+
- A dimmed grid/axes behind the content
|
|
77
|
+
- A title/subtitle at the top
|
|
78
|
+
- A source citation at the bottom
|
|
79
|
+
- Decorative geometry at low opacity
|
|
80
|
+
|
|
81
|
+
### Maximum simultaneous elements
|
|
82
|
+
|
|
83
|
+
**Hard limit: 6 actively visible elements.** Beyond that, the viewer can't track everything. If you need more:
|
|
84
|
+
- Dim old elements to opacity 0.3
|
|
85
|
+
- Remove elements that have served their purpose
|
|
86
|
+
- Split into two scenes
|
|
87
|
+
|
|
88
|
+
## Animation Quality
|
|
89
|
+
|
|
90
|
+
### Variety audit
|
|
91
|
+
|
|
92
|
+
Check that no two consecutive scenes use the exact same:
|
|
93
|
+
- Animation type (if Scene 3 uses Write for everything, Scene 4 should use FadeIn or Create)
|
|
94
|
+
- Color emphasis (rotate through palette colors)
|
|
95
|
+
- Layout (center, left-right, grid — alternate)
|
|
96
|
+
- Pacing (if Scene 2 was slow and deliberate, Scene 3 can be faster)
|
|
97
|
+
|
|
98
|
+
### Tempo curve
|
|
99
|
+
|
|
100
|
+
A good video follows a tempo curve:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Slow ──→ Medium ──→ FAST (climax) ──→ Slow (conclusion)
|
|
104
|
+
|
|
105
|
+
Scene 1: Slow (introduction, setup)
|
|
106
|
+
Scene 2: Medium (building understanding)
|
|
107
|
+
Scene 3: Medium-Fast (core content, lots of animation)
|
|
108
|
+
Scene 4: FAST (montage of applications/results)
|
|
109
|
+
Scene 5: Slow (conclusion, key takeaway)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Transition quality
|
|
113
|
+
|
|
114
|
+
Between scenes:
|
|
115
|
+
- **Clean exit**: `self.play(FadeOut(Group(*self.mobjects)), run_time=0.5)`
|
|
116
|
+
- **Brief pause**: `self.wait(0.3)` after fadeout, before next scene's first animation
|
|
117
|
+
- **Never hard-cut**: always animate the transition
|
|
118
|
+
|
|
119
|
+
## Color Quality
|
|
120
|
+
|
|
121
|
+
### Dimming on dark backgrounds
|
|
122
|
+
|
|
123
|
+
Colors that look vibrant on white look muddy on dark backgrounds (#0D1117, #1C1C1C). Test your palette:
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
# Colors that work well on dark backgrounds:
|
|
127
|
+
# Bright and saturated: #58C4DD, #83C167, #FFFF00, #FF6B6B
|
|
128
|
+
# Colors that DON'T work: #666666 (invisible), #2244AA (too dark)
|
|
129
|
+
|
|
130
|
+
# RULE: Structural elements (axes, grids) at opacity 0.15
|
|
131
|
+
# Context elements at 0.3-0.4
|
|
132
|
+
# Primary elements at 1.0
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Color meaning consistency
|
|
136
|
+
|
|
137
|
+
Once a color is assigned a meaning, it keeps that meaning for the entire video:
|
|
138
|
+
|
|
139
|
+
```python
|
|
140
|
+
# If PRIMARY (#58C4DD) means "the model" in Scene 1,
|
|
141
|
+
# it means "the model" in every scene.
|
|
142
|
+
# Never reuse PRIMARY for a different concept later.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Data Visualization Quality
|
|
146
|
+
|
|
147
|
+
### Minimum requirements for charts
|
|
148
|
+
|
|
149
|
+
- Axis labels on every axis
|
|
150
|
+
- Y-axis range starts at 0 (or has a clear break indicator)
|
|
151
|
+
- Bar/line colors match the legend
|
|
152
|
+
- Numbers on notable data points (at least the maximum and the comparison point)
|
|
153
|
+
|
|
154
|
+
### Animated counters
|
|
155
|
+
|
|
156
|
+
When showing a number changing:
|
|
157
|
+
```python
|
|
158
|
+
# GOOD: DecimalNumber with smooth animation
|
|
159
|
+
counter = DecimalNumber(0, font_size=48, num_decimal_places=0, font="Menlo")
|
|
160
|
+
self.play(counter.animate.set_value(1000), run_time=3, rate_func=rush_from)
|
|
161
|
+
|
|
162
|
+
# BAD: Text that jumps between values
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Pre-Render Checklist
|
|
166
|
+
|
|
167
|
+
Before running `manim -qh`:
|
|
168
|
+
|
|
169
|
+
- [ ] All scenes render without errors at `-ql`
|
|
170
|
+
- [ ] Preview stills at `-qm` for text-heavy scenes (check kerning)
|
|
171
|
+
- [ ] Background color set in every scene (`self.camera.background_color = BG`)
|
|
172
|
+
- [ ] `add_subcaption()` or `subcaption=` on every significant animation
|
|
173
|
+
- [ ] No text smaller than font_size=18
|
|
174
|
+
- [ ] No text using proportional fonts (use monospace)
|
|
175
|
+
- [ ] buff >= 0.5 on all `.to_edge()` calls
|
|
176
|
+
- [ ] Clean exit (FadeOut all) at end of every scene
|
|
177
|
+
- [ ] `self.wait()` after every reveal
|
|
178
|
+
- [ ] Color constants used (no hardcoded hex strings in scene code)
|
|
179
|
+
- [ ] All scenes use the same quality flag (don't mix `-ql` and `-qh`)
|
|
180
|
+
|
|
181
|
+
## Post-Render Checklist
|
|
182
|
+
|
|
183
|
+
After stitching the final video:
|
|
184
|
+
|
|
185
|
+
- [ ] Watch the complete video at 1x speed — does it feel rushed anywhere?
|
|
186
|
+
- [ ] Is there a moment where two things animate simultaneously and it's confusing?
|
|
187
|
+
- [ ] Does every text label have enough time to be read?
|
|
188
|
+
- [ ] Are transitions between scenes smooth (no black frames, no jarring cuts)?
|
|
189
|
+
- [ ] Is the audio in sync with the visuals (if using voiceover)?
|
|
190
|
+
- [ ] Is the Gibbs-like "first impression" good? The first 5 seconds determine if someone keeps watching
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Rendering Reference
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
manim --version # Manim CE
|
|
7
|
+
pdflatex --version # LaTeX
|
|
8
|
+
ffmpeg -version # ffmpeg
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## CLI Reference
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
manim -ql script.py Scene1 Scene2 # draft (480p 15fps)
|
|
15
|
+
manim -qm script.py Scene1 # medium (720p 30fps)
|
|
16
|
+
manim -qh script.py Scene1 # production (1080p 60fps)
|
|
17
|
+
manim -ql --format=png -s script.py Scene1 # preview still (last frame)
|
|
18
|
+
manim -ql --format=gif script.py Scene1 # GIF output
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Quality Presets
|
|
22
|
+
|
|
23
|
+
| Flag | Resolution | FPS | Use case |
|
|
24
|
+
|------|-----------|-----|----------|
|
|
25
|
+
| `-ql` | 854x480 | 15 | Draft iteration (layout, timing) |
|
|
26
|
+
| `-qm` | 1280x720 | 30 | Preview (use for text-heavy scenes) |
|
|
27
|
+
| `-qh` | 1920x1080 | 60 | Production |
|
|
28
|
+
|
|
29
|
+
**Text rendering quality:** `-ql` (480p15) produces noticeably poor text kerning and readability. For scenes with significant text, preview stills at `-qm` to catch issues invisible at 480p. Use `-ql` only for testing layout and animation timing.
|
|
30
|
+
|
|
31
|
+
## Output Structure
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
media/videos/script/480p15/Scene1_Intro.mp4
|
|
35
|
+
media/images/script/Scene1_Intro.png (from -s flag)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Stitching with ffmpeg
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
cat > concat.txt << 'EOF'
|
|
42
|
+
file 'media/videos/script/480p15/Scene1_Intro.mp4'
|
|
43
|
+
file 'media/videos/script/480p15/Scene2_Core.mp4'
|
|
44
|
+
EOF
|
|
45
|
+
ffmpeg -y -f concat -safe 0 -i concat.txt -c copy final.mp4
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Add Voiceover
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Mux narration
|
|
52
|
+
ffmpeg -y -i final.mp4 -i narration.mp3 -c:v copy -c:a aac -b:a 192k -shortest final_narrated.mp4
|
|
53
|
+
|
|
54
|
+
# Concat per-scene audio first
|
|
55
|
+
cat > audio_concat.txt << 'EOF'
|
|
56
|
+
file 'audio/scene1.mp3'
|
|
57
|
+
file 'audio/scene2.mp3'
|
|
58
|
+
EOF
|
|
59
|
+
ffmpeg -y -f concat -safe 0 -i audio_concat.txt -c copy full_narration.mp3
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Add Background Music
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
ffmpeg -y -i final.mp4 -i music.mp3 \
|
|
66
|
+
-filter_complex "[1:a]volume=0.15[bg]" \
|
|
67
|
+
-map 0:v:0 -map '[bg]' -c:v copy -c:a aac -shortest final_with_music.mp4
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## GIF Export
|
|
71
|
+
|
|
72
|
+
The command above adds music to a silent render. For an already narrated input, first verify its audio stream with ffprobe, then mix `[0:a][bg]amix=inputs=2:duration=first[mix]` and map `[mix]`. Do not reference a nonexistent input audio stream.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
ffmpeg -y -i scene.mp4 \
|
|
76
|
+
-vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
|
|
77
|
+
output.gif
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Aspect Ratios
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
manim -ql --resolution 1080,1920 script.py Scene # 9:16 vertical
|
|
84
|
+
manim -ql --resolution 1080,1080 script.py Scene # 1:1 square
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Render Workflow
|
|
88
|
+
|
|
89
|
+
1. Draft render all scenes at `-ql`
|
|
90
|
+
2. Preview stills at key moments (`-s`)
|
|
91
|
+
3. Fix and re-render only broken scenes
|
|
92
|
+
4. Stitch with ffmpeg
|
|
93
|
+
5. Review stitched output
|
|
94
|
+
6. Production render at `-qh`
|
|
95
|
+
7. Re-stitch + add audio
|
|
96
|
+
|
|
97
|
+
## manim.cfg — Project Configuration
|
|
98
|
+
|
|
99
|
+
Create `manim.cfg` in the project directory for per-project defaults:
|
|
100
|
+
|
|
101
|
+
```ini
|
|
102
|
+
[CLI]
|
|
103
|
+
quality = low_quality
|
|
104
|
+
preview = True
|
|
105
|
+
media_dir = ./media
|
|
106
|
+
|
|
107
|
+
[renderer]
|
|
108
|
+
background_color = #0D1117
|
|
109
|
+
|
|
110
|
+
[tex]
|
|
111
|
+
tex_template_file = custom_template.tex
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
This eliminates repetitive CLI flags and `self.camera.background_color` in every scene.
|
|
115
|
+
|
|
116
|
+
## Sections — Chapter Markers
|
|
117
|
+
|
|
118
|
+
Mark sections within a scene for organized output:
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
class LongVideo(Scene):
|
|
122
|
+
def construct(self):
|
|
123
|
+
self.next_section("Introduction")
|
|
124
|
+
# ... intro content ...
|
|
125
|
+
|
|
126
|
+
self.next_section("Main Concept")
|
|
127
|
+
# ... main content ...
|
|
128
|
+
|
|
129
|
+
self.next_section("Conclusion")
|
|
130
|
+
# ... closing ...
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Render individual sections: `manim --save_sections script.py LongVideo`
|
|
134
|
+
This outputs separate video files per section — useful for long videos where you want to re-render only one part.
|
|
135
|
+
|
|
136
|
+
## manim-voiceover Plugin (Recommended for Narrated Videos)
|
|
137
|
+
|
|
138
|
+
The official `manim-voiceover` plugin integrates TTS directly into scene code, auto-syncing animation duration to voiceover length. This is significantly cleaner than the manual ffmpeg muxing approach above.
|
|
139
|
+
|
|
140
|
+
### Installation
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
pip install "manim-voiceover[elevenlabs]"
|
|
144
|
+
# Or for free/local TTS:
|
|
145
|
+
pip install "manim-voiceover[gtts]" # Google TTS (free, lower quality)
|
|
146
|
+
pip install "manim-voiceover[azure]" # Azure Cognitive Services
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Usage
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
from manim import *
|
|
153
|
+
from manim_voiceover import VoiceoverScene
|
|
154
|
+
from manim_voiceover.services.elevenlabs import ElevenLabsService
|
|
155
|
+
|
|
156
|
+
class NarratedScene(VoiceoverScene):
|
|
157
|
+
def construct(self):
|
|
158
|
+
self.set_speech_service(ElevenLabsService(
|
|
159
|
+
voice_name="Alice",
|
|
160
|
+
model_id="eleven_multilingual_v2"
|
|
161
|
+
))
|
|
162
|
+
|
|
163
|
+
# Voiceover auto-controls scene duration
|
|
164
|
+
with self.voiceover(text="Here is a circle being drawn.") as tracker:
|
|
165
|
+
self.play(Create(Circle()), run_time=tracker.duration)
|
|
166
|
+
|
|
167
|
+
with self.voiceover(text="Now let's transform it into a square.") as tracker:
|
|
168
|
+
self.play(Transform(Circle(), Square()), run_time=tracker.duration)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Key Features
|
|
172
|
+
|
|
173
|
+
- `tracker.duration` — total voiceover duration in seconds
|
|
174
|
+
- `tracker.time_until_bookmark("mark1")` — sync specific animations to specific words
|
|
175
|
+
- Auto-generates subtitle `.srt` files
|
|
176
|
+
- Caches audio locally — re-renders don't re-generate TTS
|
|
177
|
+
- Works with: ElevenLabs, Azure, Google TTS, pyttsx3 (offline), and custom services
|
|
178
|
+
|
|
179
|
+
### Bookmarks for Precise Sync
|
|
180
|
+
|
|
181
|
+
```python
|
|
182
|
+
with self.voiceover(text='This is a <bookmark mark="circle"/>circle.') as tracker:
|
|
183
|
+
self.wait_until_bookmark("circle")
|
|
184
|
+
self.play(Create(Circle()), run_time=tracker.time_until_bookmark("circle", limit=1))
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
This is the recommended approach for any video with narration. The manual ffmpeg muxing workflow above is still useful for adding background music or post-production audio mixing.
|