@prismer/runtime 2.2.55 → 2.2.64
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 +7079 -3327
- package/dist/cli.js +6706 -2936
- package/dist/index.cjs +7930 -3822
- package/dist/index.d.cts +484 -5
- package/dist/index.d.ts +484 -5
- package/dist/index.js +7181 -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,216 @@
|
|
|
1
|
+
# Equations and LaTeX Reference
|
|
2
|
+
|
|
3
|
+
## Basic LaTeX
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
eq = MathTex(r"E = mc^2")
|
|
7
|
+
eq = MathTex(r"f(x) &= x^2 + 2x + 1 \\ &= (x + 1)^2") # multi-line aligned
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
**Always use raw strings (`r""`).**
|
|
11
|
+
|
|
12
|
+
## Step-by-Step Derivations
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
step1 = MathTex(r"a^2 + b^2 = c^2")
|
|
16
|
+
step2 = MathTex(r"a^2 = c^2 - b^2")
|
|
17
|
+
self.play(Write(step1), run_time=1.5)
|
|
18
|
+
self.wait(1.5)
|
|
19
|
+
self.play(TransformMatchingTex(step1, step2), run_time=1.5)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Selective Color
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
eq = MathTex(r"a^2", r"+", r"b^2", r"=", r"c^2")
|
|
26
|
+
eq[0].set_color(RED)
|
|
27
|
+
eq[4].set_color(GREEN)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Building Incrementally
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
parts = MathTex(r"f(x)", r"=", r"\sum_{n=0}^{\infty}", r"\frac{f^{(n)}(a)}{n!}", r"(x-a)^n")
|
|
34
|
+
self.play(Write(parts[0:2]))
|
|
35
|
+
self.wait(0.5)
|
|
36
|
+
self.play(Write(parts[2]))
|
|
37
|
+
self.wait(0.5)
|
|
38
|
+
self.play(Write(parts[3:]))
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Highlighting
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
highlight = SurroundingRectangle(eq[2], color=YELLOW, buff=0.1)
|
|
45
|
+
self.play(Create(highlight))
|
|
46
|
+
self.play(Indicate(eq[4], color=YELLOW))
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Annotation
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
brace = Brace(eq, DOWN, color=YELLOW)
|
|
53
|
+
label = brace.get_text("Fundamental Theorem", font_size=24)
|
|
54
|
+
self.play(GrowFromCenter(brace), Write(label))
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Common LaTeX
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
MathTex(r"\frac{a}{b}") # fraction
|
|
61
|
+
MathTex(r"\alpha, \beta, \gamma") # Greek
|
|
62
|
+
MathTex(r"\sum_{i=1}^{n} x_i") # summation
|
|
63
|
+
MathTex(r"\int_{0}^{\infty} e^{-x} dx") # integral
|
|
64
|
+
MathTex(r"\vec{v}") # vector
|
|
65
|
+
MathTex(r"\lim_{x \to \infty} f(x)") # limit
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Matrices
|
|
69
|
+
|
|
70
|
+
`MathTex` supports standard LaTeX matrix environments via `amsmath` (loaded by default):
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
# Bracketed matrix
|
|
74
|
+
MathTex(r"\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}")
|
|
75
|
+
|
|
76
|
+
# Parenthesized matrix
|
|
77
|
+
MathTex(r"\begin{pmatrix} a & b \\ c & d \end{pmatrix}")
|
|
78
|
+
|
|
79
|
+
# Determinant (vertical bars)
|
|
80
|
+
MathTex(r"\begin{vmatrix} a & b \\ c & d \end{vmatrix}")
|
|
81
|
+
|
|
82
|
+
# Plain (no delimiters)
|
|
83
|
+
MathTex(r"\begin{matrix} x_1 \\ x_2 \\ x_3 \end{matrix}")
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
For matrices you need to animate element-by-element or color individual entries, use the `IntegerMatrix`, `DecimalMatrix`, or `MobjectMatrix` mobjects instead — see `mobjects.md`.
|
|
87
|
+
|
|
88
|
+
## Cases and Piecewise Functions
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
MathTex(r"""
|
|
92
|
+
f(x) = \begin{cases}
|
|
93
|
+
x^2 & \text{if } x \geq 0 \\
|
|
94
|
+
-x^2 & \text{if } x < 0
|
|
95
|
+
\end{cases}
|
|
96
|
+
""")
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Aligned Environments
|
|
100
|
+
|
|
101
|
+
For multi-line derivations with alignment, use `aligned` inside `MathTex`:
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
MathTex(r"""
|
|
105
|
+
\begin{aligned}
|
|
106
|
+
\nabla \cdot \mathbf{E} &= \frac{\rho}{\epsilon_0} \\
|
|
107
|
+
\nabla \cdot \mathbf{B} &= 0 \\
|
|
108
|
+
\nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\
|
|
109
|
+
\nabla \times \mathbf{B} &= \mu_0 \mathbf{J} + \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t}
|
|
110
|
+
\end{aligned}
|
|
111
|
+
""")
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Note: `MathTex` wraps content in `align*` by default. Override with `tex_environment` if needed:
|
|
115
|
+
```python
|
|
116
|
+
MathTex(r"...", tex_environment="gather*")
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Derivation Pattern
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
class DerivationScene(Scene):
|
|
123
|
+
def construct(self):
|
|
124
|
+
self.camera.background_color = BG
|
|
125
|
+
s1 = MathTex(r"ax^2 + bx + c = 0")
|
|
126
|
+
self.play(Write(s1))
|
|
127
|
+
self.wait(1.5)
|
|
128
|
+
s2 = MathTex(r"x^2 + \frac{b}{a}x + \frac{c}{a} = 0")
|
|
129
|
+
s2.next_to(s1, DOWN, buff=0.8)
|
|
130
|
+
self.play(s1.animate.set_opacity(0.4), TransformMatchingTex(s1.copy(), s2))
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## substrings_to_isolate for Complex Equations
|
|
134
|
+
|
|
135
|
+
For dense equations where manually splitting into parts is impractical, use `substrings_to_isolate` to tell Manim which substrings to track as individual elements:
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
# Without isolation — the whole expression is one blob
|
|
139
|
+
lagrangian = MathTex(
|
|
140
|
+
r"\mathcal{L} = \bar{\psi}(i \gamma^\mu D_\mu - m)\psi - \tfrac{1}{4}F_{\mu\nu}F^{\mu\nu}"
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
# With isolation — each named substring is a separate submobject
|
|
144
|
+
lagrangian = MathTex(
|
|
145
|
+
r"\mathcal{L} = \bar{\psi}(i \gamma^\mu D_\mu - m)\psi - \tfrac{1}{4}F_{\mu\nu}F^{\mu\nu}",
|
|
146
|
+
substrings_to_isolate=[r"\psi", r"D_\mu", r"\gamma^\mu", r"F_{\mu\nu}"]
|
|
147
|
+
)
|
|
148
|
+
# Now you can color individual terms
|
|
149
|
+
lagrangian.set_color_by_tex(r"\psi", BLUE)
|
|
150
|
+
lagrangian.set_color_by_tex(r"F_{\mu\nu}", YELLOW)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Essential for `TransformMatchingTex` on complex equations — without isolation, matching fails on dense expressions.
|
|
154
|
+
|
|
155
|
+
## Multi-Line Complex Equations
|
|
156
|
+
|
|
157
|
+
For equations with multiple related lines, pass each line as a separate argument:
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
maxwell = MathTex(
|
|
161
|
+
r"\nabla \cdot \mathbf{E} = \frac{\rho}{\epsilon_0}",
|
|
162
|
+
r"\nabla \times \mathbf{B} = \mu_0\mathbf{J} + \mu_0\epsilon_0\frac{\partial \mathbf{E}}{\partial t}"
|
|
163
|
+
).arrange(DOWN)
|
|
164
|
+
|
|
165
|
+
# Each line is a separate submobject — animate independently
|
|
166
|
+
self.play(Write(maxwell[0]))
|
|
167
|
+
self.wait(1)
|
|
168
|
+
self.play(Write(maxwell[1]))
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## TransformMatchingTex with key_map
|
|
172
|
+
|
|
173
|
+
Map specific substrings between source and target equations during transformation:
|
|
174
|
+
|
|
175
|
+
```python
|
|
176
|
+
eq1 = MathTex(r"A^2 + B^2 = C^2")
|
|
177
|
+
eq2 = MathTex(r"A^2 = C^2 - B^2")
|
|
178
|
+
|
|
179
|
+
self.play(TransformMatchingTex(
|
|
180
|
+
eq1, eq2,
|
|
181
|
+
key_map={"+": "-"}, # map "+" in source to "-" in target
|
|
182
|
+
path_arc=PI / 2, # arc the pieces into position
|
|
183
|
+
))
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## set_color_by_tex — Color by Substring
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
eq = MathTex(r"E = mc^2")
|
|
190
|
+
eq.set_color_by_tex("E", BLUE)
|
|
191
|
+
eq.set_color_by_tex("m", RED)
|
|
192
|
+
eq.set_color_by_tex("c", GREEN)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## TransformMatchingTex with matched_keys
|
|
196
|
+
|
|
197
|
+
When matching substrings are ambiguous, specify which to align explicitly:
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
kw = dict(font_size=72, t2c={"A": BLUE, "B": TEAL, "C": GREEN})
|
|
201
|
+
lines = [
|
|
202
|
+
MathTex(r"A^2 + B^2 = C^2", **kw),
|
|
203
|
+
MathTex(r"A^2 = C^2 - B^2", **kw),
|
|
204
|
+
MathTex(r"A^2 = (C + B)(C - B)", **kw),
|
|
205
|
+
MathTex(r"A = \sqrt{(C + B)(C - B)}", **kw),
|
|
206
|
+
]
|
|
207
|
+
|
|
208
|
+
self.play(TransformMatchingTex(
|
|
209
|
+
lines[0].copy(), lines[1],
|
|
210
|
+
matched_keys=["A^2", "B^2", "C^2"], # explicitly match these
|
|
211
|
+
key_map={"+": "-"}, # map + to -
|
|
212
|
+
path_arc=PI / 2, # arc pieces into position
|
|
213
|
+
))
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Without `matched_keys`, the animation matches the longest common substrings, which can produce unexpected results on complex equations (e.g., "^2 = C^2" matching across terms).
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Graphs, Plots, and Data Visualization
|
|
2
|
+
|
|
3
|
+
## Axes
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
axes = Axes(
|
|
7
|
+
x_range=[-3, 3, 1], y_range=[-2, 2, 1],
|
|
8
|
+
x_length=8, y_length=5,
|
|
9
|
+
axis_config={"include_numbers": True, "font_size": 24}
|
|
10
|
+
)
|
|
11
|
+
axes.set_opacity(0.15) # structural element
|
|
12
|
+
x_label = axes.get_x_axis_label(r"x")
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Plotting
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
graph = axes.plot(lambda x: x**2, color=BLUE)
|
|
19
|
+
graph_label = axes.get_graph_label(graph, label=r"x^2", x_val=2)
|
|
20
|
+
area = axes.get_area(graph, x_range=[0, 2], color=BLUE, opacity=0.3)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Animated Plotting
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
self.play(Create(graph), run_time=3) # trace the graph
|
|
27
|
+
|
|
28
|
+
# Moving dot along curve
|
|
29
|
+
dot = Dot(color=YELLOW).move_to(axes.c2p(0, 0))
|
|
30
|
+
self.play(MoveAlongPath(dot, graph), run_time=3)
|
|
31
|
+
|
|
32
|
+
# Dynamic parameter
|
|
33
|
+
tracker = ValueTracker(1)
|
|
34
|
+
dynamic = always_redraw(lambda: axes.plot(lambda x: tracker.get_value() * x**2, color=BLUE))
|
|
35
|
+
self.add(dynamic)
|
|
36
|
+
self.play(tracker.animate.set_value(3), run_time=2)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Bar Charts
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
chart = BarChart(
|
|
43
|
+
values=[4, 6, 2, 8, 5], bar_names=["A", "B", "C", "D", "E"],
|
|
44
|
+
y_range=[0, 10, 2], bar_colors=[RED, GREEN, BLUE, YELLOW, PURPLE]
|
|
45
|
+
)
|
|
46
|
+
self.play(Create(chart), run_time=2)
|
|
47
|
+
self.play(chart.animate.change_bar_values([6, 3, 7, 4, 9]))
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Number Lines
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
nl = NumberLine(x_range=[0, 10, 1], length=10, include_numbers=True)
|
|
54
|
+
pointer = Arrow(nl.n2p(3) + UP * 0.5, nl.n2p(3), color=RED, buff=0)
|
|
55
|
+
tracker = ValueTracker(3)
|
|
56
|
+
pointer.add_updater(lambda m: m.put_start_and_end_on(
|
|
57
|
+
nl.n2p(tracker.get_value()) + UP * 0.5, nl.n2p(tracker.get_value())))
|
|
58
|
+
self.play(tracker.animate.set_value(8), run_time=2)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Animated Counters
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
counter = DecimalNumber(0, font_size=72, num_decimal_places=0)
|
|
65
|
+
self.play(counter.animate.set_value(1000), run_time=3, rate_func=rush_from)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Algorithm Visualization Pattern
|
|
69
|
+
|
|
70
|
+
```python
|
|
71
|
+
values = [5, 2, 8, 1, 9, 3]
|
|
72
|
+
bars = VGroup(*[
|
|
73
|
+
Rectangle(width=0.6, height=v * 0.4, color=BLUE, fill_opacity=0.7)
|
|
74
|
+
for v in values
|
|
75
|
+
]).arrange(RIGHT, buff=0.2, aligned_edge=DOWN).move_to(ORIGIN)
|
|
76
|
+
self.play(LaggedStart(*[GrowFromEdge(b, DOWN) for b in bars], lag_ratio=0.1))
|
|
77
|
+
# Highlight, swap, etc.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Data Story Pattern
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
# Before/After comparison
|
|
84
|
+
before = BarChart(values=[3, 5, 2], bar_colors=[RED]*3).shift(LEFT * 3)
|
|
85
|
+
after = BarChart(values=[8, 9, 7], bar_colors=[GREEN]*3).shift(RIGHT * 3)
|
|
86
|
+
self.play(Create(before)); self.wait(1)
|
|
87
|
+
self.play(Create(after)); self.wait(1)
|
|
88
|
+
arrow = Arrow(before.get_right(), after.get_left(), color=YELLOW)
|
|
89
|
+
label = Text("+167% (first bar only)", font_size=36, color=YELLOW).next_to(arrow, UP)
|
|
90
|
+
self.play(GrowArrow(arrow), Write(label))
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Graph / DiGraph — Graph Theory Visualization
|
|
94
|
+
|
|
95
|
+
Built-in graph mobjects with automatic layout:
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
# Undirected graph
|
|
99
|
+
g = Graph(
|
|
100
|
+
vertices=[1, 2, 3, 4, 5],
|
|
101
|
+
edges=[(1, 2), (2, 3), (3, 4), (4, 5), (5, 1), (1, 3)],
|
|
102
|
+
layout="spring", # or "circular", "kamada_kawai", "planar", "tree"
|
|
103
|
+
labels=True,
|
|
104
|
+
vertex_config={"fill_color": PRIMARY},
|
|
105
|
+
edge_config={"stroke_color": SUBTLE},
|
|
106
|
+
)
|
|
107
|
+
self.play(Create(g))
|
|
108
|
+
|
|
109
|
+
# Directed graph
|
|
110
|
+
dg = DiGraph(
|
|
111
|
+
vertices=["A", "B", "C"],
|
|
112
|
+
edges=[("A", "B"), ("B", "C"), ("C", "A")],
|
|
113
|
+
layout="circular",
|
|
114
|
+
labels=True,
|
|
115
|
+
edge_config={("A", "B"): {"stroke_color": RED}},
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# Add/remove vertices and edges dynamically
|
|
119
|
+
self.play(g.animate.add_vertices(6, positions={6: RIGHT * 2}))
|
|
120
|
+
self.play(g.animate.add_edges((1, 6)))
|
|
121
|
+
self.play(g.animate.remove_vertices(3))
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Layout algorithms: `"spring"`, `"circular"`, `"kamada_kawai"`, `"planar"`, `"spectral"`, `"tree"` (for rooted trees, specify `root=`).
|
|
125
|
+
|
|
126
|
+
## ArrowVectorField / StreamLines — Vector Fields
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
# Arrow field: arrows showing direction at each point
|
|
130
|
+
field = ArrowVectorField(
|
|
131
|
+
lambda pos: np.array([-pos[1], pos[0], 0]), # rotation field
|
|
132
|
+
x_range=[-3, 3], y_range=[-3, 3],
|
|
133
|
+
colors=[BLUE, GREEN, YELLOW, RED]
|
|
134
|
+
)
|
|
135
|
+
self.play(Create(field))
|
|
136
|
+
|
|
137
|
+
# StreamLines: flowing particle traces through the field
|
|
138
|
+
stream = StreamLines(
|
|
139
|
+
lambda pos: np.array([-pos[1], pos[0], 0]),
|
|
140
|
+
stroke_width=2, max_anchors_per_line=30
|
|
141
|
+
)
|
|
142
|
+
self.add(stream)
|
|
143
|
+
stream.start_animation(warm_up=True, flow_speed=1.5)
|
|
144
|
+
self.wait(3)
|
|
145
|
+
stream.end_animation()
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Use cases: electromagnetic fields, fluid flow, gradient fields, ODE phase portraits.
|
|
149
|
+
|
|
150
|
+
## ComplexPlane / PolarPlane
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
# Complex plane with Re/Im labels
|
|
154
|
+
cplane = ComplexPlane().add_coordinates()
|
|
155
|
+
dot = Dot(cplane.n2p(2 + 1j), color=YELLOW)
|
|
156
|
+
label = Text("2+i", font_size=20).next_to(dot, UR, buff=0.1)
|
|
157
|
+
|
|
158
|
+
# Apply complex function to the plane
|
|
159
|
+
self.play(cplane.animate.apply_complex_function(lambda z: z**2), run_time=3)
|
|
160
|
+
|
|
161
|
+
# Polar plane
|
|
162
|
+
polar = PolarPlane(radius_max=3).add_coordinates()
|
|
163
|
+
```
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
# Mobjects Reference
|
|
2
|
+
|
|
3
|
+
Everything visible on screen is a Mobject. They have position, color, opacity, and can be animated.
|
|
4
|
+
|
|
5
|
+
## Text
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
title = Text("Hello World", font_size=48, color=BLUE)
|
|
9
|
+
eq = MathTex(r"E = mc^2", font_size=40)
|
|
10
|
+
|
|
11
|
+
# Multi-part (for selective coloring)
|
|
12
|
+
eq = MathTex(r"a^2", r"+", r"b^2", r"=", r"c^2")
|
|
13
|
+
eq[0].set_color(RED)
|
|
14
|
+
eq[4].set_color(BLUE)
|
|
15
|
+
|
|
16
|
+
# Mixed text and math
|
|
17
|
+
t = Tex(r"The area is $\pi r^2$", font_size=36)
|
|
18
|
+
|
|
19
|
+
# Styled markup
|
|
20
|
+
t = MarkupText('<span foreground="#58C4DD">Blue</span> text', font_size=30)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Always use raw strings (`r""`) for any string with backslashes.**
|
|
24
|
+
|
|
25
|
+
## Shapes
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
circle = Circle(radius=1, color=BLUE, fill_opacity=0.5)
|
|
29
|
+
square = Square(side_length=2, color=RED)
|
|
30
|
+
rect = Rectangle(width=4, height=2, color=GREEN)
|
|
31
|
+
dot = Dot(point=ORIGIN, radius=0.08, color=YELLOW)
|
|
32
|
+
line = Line(LEFT * 2, RIGHT * 2, color=WHITE)
|
|
33
|
+
arrow = Arrow(LEFT, RIGHT, color=ORANGE)
|
|
34
|
+
rrect = RoundedRectangle(corner_radius=0.3, width=4, height=2)
|
|
35
|
+
brace = Brace(rect, DOWN, color=YELLOW)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Polygons and Arcs
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
# Arbitrary polygon from vertices
|
|
42
|
+
poly = Polygon(LEFT, UP * 2, RIGHT, color=GREEN, fill_opacity=0.3)
|
|
43
|
+
|
|
44
|
+
# Regular n-sided polygon
|
|
45
|
+
hexagon = RegularPolygon(n=6, color=TEAL, fill_opacity=0.4)
|
|
46
|
+
|
|
47
|
+
# Triangle (shorthand for RegularPolygon(n=3))
|
|
48
|
+
tri = Triangle(color=YELLOW, fill_opacity=0.5)
|
|
49
|
+
|
|
50
|
+
# Arc (portion of a circle)
|
|
51
|
+
arc = Arc(radius=2, start_angle=0, angle=PI / 2, color=BLUE)
|
|
52
|
+
|
|
53
|
+
# Arc between two points
|
|
54
|
+
arc_between = ArcBetweenPoints(LEFT * 2, RIGHT * 2, angle=TAU / 4, color=RED)
|
|
55
|
+
|
|
56
|
+
# Curved arrow (arc with tip)
|
|
57
|
+
curved_arrow = CurvedArrow(LEFT * 2, RIGHT * 2, color=ORANGE)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Sectors and Annuli
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
# Sector (pie slice)
|
|
64
|
+
sector = Sector(outer_radius=2, start_angle=0, angle=PI / 3, fill_opacity=0.7, color=BLUE)
|
|
65
|
+
|
|
66
|
+
# Annulus (ring)
|
|
67
|
+
ring = Annulus(inner_radius=1, outer_radius=2, fill_opacity=0.5, color=GREEN)
|
|
68
|
+
|
|
69
|
+
# Annular sector (partial ring)
|
|
70
|
+
partial_ring = AnnularSector(
|
|
71
|
+
inner_radius=1, outer_radius=2,
|
|
72
|
+
angle=PI / 2, start_angle=0,
|
|
73
|
+
fill_opacity=0.7, color=TEAL
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# Cutout (punch holes in a shape)
|
|
77
|
+
background = Square(side_length=4, fill_opacity=1, color=BLUE)
|
|
78
|
+
hole = Circle(radius=0.5)
|
|
79
|
+
cutout = Cutout(background, hole, fill_opacity=1, color=BLUE)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Use cases: pie charts, ring progress indicators, Venn diagrams with arcs, geometric proofs.
|
|
83
|
+
|
|
84
|
+
## Positioning
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
mob.move_to(ORIGIN) # center
|
|
88
|
+
mob.move_to(UP * 2 + RIGHT) # relative
|
|
89
|
+
label.next_to(circle, DOWN, buff=0.3) # next to another
|
|
90
|
+
title.to_edge(UP, buff=0.5) # screen edge (buff >= 0.5!)
|
|
91
|
+
mob.to_corner(UL, buff=0.5) # corner
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## VGroup vs Group
|
|
95
|
+
|
|
96
|
+
**VGroup** is for collections of shapes (VMobjects only — Circle, Square, Arrow, Line, MathTex):
|
|
97
|
+
```python
|
|
98
|
+
shapes = VGroup(circle, square, arrow)
|
|
99
|
+
shapes.arrange(DOWN, buff=0.5)
|
|
100
|
+
shapes.set_color(BLUE)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Group** is for mixed collections (Text + shapes, or any Mobject types):
|
|
104
|
+
```python
|
|
105
|
+
# Text objects are Mobjects, not VMobjects — use Group when mixing
|
|
106
|
+
labeled_shape = Group(circle, Text("Label").next_to(circle, DOWN))
|
|
107
|
+
labeled_shape.move_to(ORIGIN)
|
|
108
|
+
|
|
109
|
+
# FadeOut everything on screen (may contain mixed types)
|
|
110
|
+
self.play(FadeOut(Group(*self.mobjects)))
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Rule: if your group contains any `Text()` objects, use `Group`, not `VGroup`.** VGroup will raise a TypeError on Manim CE v0.20+. MathTex and Tex are VMobjects and work with VGroup.
|
|
114
|
+
|
|
115
|
+
Both support `arrange()`, `arrange_in_grid()`, `set_opacity()`, `shift()`, `scale()`, `move_to()`.
|
|
116
|
+
|
|
117
|
+
## Styling
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
mob.set_color(BLUE)
|
|
121
|
+
mob.set_fill(RED, opacity=0.5)
|
|
122
|
+
mob.set_stroke(WHITE, width=2)
|
|
123
|
+
mob.set_opacity(0.4)
|
|
124
|
+
mob.set_z_index(1) # layering
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Specialized Mobjects
|
|
128
|
+
|
|
129
|
+
```python
|
|
130
|
+
nl = NumberLine(x_range=[-3, 3, 1], length=8, include_numbers=True)
|
|
131
|
+
table = Table([["A", "B"], ["C", "D"]], row_labels=[Text("R1"), Text("R2")])
|
|
132
|
+
code = Code("example.py", tab_width=4, font_size=20, language="python")
|
|
133
|
+
highlight = SurroundingRectangle(target, color=YELLOW, buff=0.2)
|
|
134
|
+
bg = BackgroundRectangle(equation, fill_opacity=0.7, buff=0.2)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Custom Mobjects
|
|
138
|
+
|
|
139
|
+
```python
|
|
140
|
+
class NetworkNode(Group):
|
|
141
|
+
def __init__(self, label_text, color=BLUE, **kwargs):
|
|
142
|
+
super().__init__(**kwargs)
|
|
143
|
+
self.circle = Circle(radius=0.4, color=color, fill_opacity=0.3)
|
|
144
|
+
self.label = Text(label_text, font_size=20).move_to(self.circle)
|
|
145
|
+
self.add(self.circle, self.label)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Matrix Mobjects
|
|
149
|
+
|
|
150
|
+
Display matrices as grids of numbers or mobjects:
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
# Integer matrix
|
|
154
|
+
m = IntegerMatrix([[1, 2], [3, 4]])
|
|
155
|
+
|
|
156
|
+
# Decimal matrix (control decimal places)
|
|
157
|
+
m = DecimalMatrix([[1.5, 2.7], [3.1, 4.9]], element_to_mobject_config={"num_decimal_places": 2})
|
|
158
|
+
|
|
159
|
+
# Mobject matrix (any mobject in each cell)
|
|
160
|
+
m = MobjectMatrix([
|
|
161
|
+
[MathTex(r"\pi"), MathTex(r"e")],
|
|
162
|
+
[MathTex(r"\phi"), MathTex(r"\tau")]
|
|
163
|
+
])
|
|
164
|
+
|
|
165
|
+
# Bracket types: "(" "[" "|" or "\\{"
|
|
166
|
+
m = IntegerMatrix([[1, 0], [0, 1]], left_bracket="[", right_bracket="]")
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Use cases: linear algebra, transformation matrices, system-of-equations coefficient display.
|
|
170
|
+
|
|
171
|
+
## Constants
|
|
172
|
+
|
|
173
|
+
Directions: `UP, DOWN, LEFT, RIGHT, ORIGIN, UL, UR, DL, DR`
|
|
174
|
+
Colors: `RED, BLUE, GREEN, YELLOW, WHITE, GRAY, ORANGE, PINK, PURPLE, TEAL, GOLD`
|
|
175
|
+
Frame: `config.frame_width = 14.222, config.frame_height = 8.0`
|
|
176
|
+
|
|
177
|
+
## SVGMobject — Import SVG Files
|
|
178
|
+
|
|
179
|
+
```python
|
|
180
|
+
logo = SVGMobject("path/to/logo.svg")
|
|
181
|
+
logo.set_color(WHITE).scale(0.5).to_corner(UR)
|
|
182
|
+
self.play(FadeIn(logo))
|
|
183
|
+
|
|
184
|
+
# SVG submobjects are individually animatable
|
|
185
|
+
for part in logo.submobjects:
|
|
186
|
+
self.play(part.animate.set_color(random_color()))
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## ImageMobject — Display Images
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
img = ImageMobject("screenshot.png")
|
|
193
|
+
img.set_height(3).to_edge(RIGHT)
|
|
194
|
+
self.play(FadeIn(img))
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Note: images cannot be animated with `.animate` (they're raster, not vector). Use `FadeIn`/`FadeOut` and `shift`/`scale` only.
|
|
198
|
+
|
|
199
|
+
## Variable — Auto-Updating Display
|
|
200
|
+
|
|
201
|
+
```python
|
|
202
|
+
var = Variable(0, Text("x"), num_decimal_places=2)
|
|
203
|
+
var.move_to(ORIGIN)
|
|
204
|
+
self.add(var)
|
|
205
|
+
|
|
206
|
+
# Animate the value
|
|
207
|
+
self.play(var.tracker.animate.set_value(5), run_time=2)
|
|
208
|
+
# Display auto-updates: "x = 5.00"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Cleaner than manual `DecimalNumber` + `add_updater` for simple labeled-value displays.
|
|
212
|
+
|
|
213
|
+
## BulletedList
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
bullets = BulletedList(
|
|
217
|
+
"First key point",
|
|
218
|
+
"Second important fact",
|
|
219
|
+
"Third conclusion",
|
|
220
|
+
font_size=28
|
|
221
|
+
)
|
|
222
|
+
bullets.to_edge(LEFT, buff=1.0)
|
|
223
|
+
self.play(Write(bullets))
|
|
224
|
+
|
|
225
|
+
# Highlight individual items
|
|
226
|
+
self.play(bullets[1].animate.set_color(YELLOW))
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## DashedLine and Angle Markers
|
|
230
|
+
|
|
231
|
+
```python
|
|
232
|
+
# Dashed line (asymptotes, construction lines)
|
|
233
|
+
dashed = DashedLine(LEFT * 3, RIGHT * 3, color=SUBTLE, dash_length=0.15)
|
|
234
|
+
|
|
235
|
+
# Angle marker between two lines
|
|
236
|
+
line1 = Line(ORIGIN, RIGHT * 2)
|
|
237
|
+
line2 = Line(ORIGIN, UP * 2 + RIGHT)
|
|
238
|
+
angle = Angle(line1, line2, radius=0.5, color=YELLOW)
|
|
239
|
+
angle_label = angle.get_value() # returns the angle in radians
|
|
240
|
+
|
|
241
|
+
# Right angle marker
|
|
242
|
+
right_angle = RightAngle(line1, Line(ORIGIN, UP * 2), length=0.3, color=WHITE)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Boolean Operations (CSG)
|
|
246
|
+
|
|
247
|
+
Combine, subtract, or intersect 2D shapes:
|
|
248
|
+
|
|
249
|
+
```python
|
|
250
|
+
circle = Circle(radius=1.5, color=BLUE, fill_opacity=0.5).shift(LEFT * 0.5)
|
|
251
|
+
square = Square(side_length=2, color=RED, fill_opacity=0.5).shift(RIGHT * 0.5)
|
|
252
|
+
|
|
253
|
+
# Union, Intersection, Difference, Exclusion
|
|
254
|
+
union = Union(circle, square, color=GREEN, fill_opacity=0.5)
|
|
255
|
+
intersect = Intersection(circle, square, color=YELLOW, fill_opacity=0.5)
|
|
256
|
+
diff = Difference(circle, square, color=PURPLE, fill_opacity=0.5)
|
|
257
|
+
exclude = Exclusion(circle, square, color=ORANGE, fill_opacity=0.5)
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Use cases: Venn diagrams, set theory, geometric proofs, area calculations.
|
|
261
|
+
|
|
262
|
+
## LabeledArrow / LabeledLine
|
|
263
|
+
|
|
264
|
+
```python
|
|
265
|
+
# Arrow with built-in label (auto-positioned)
|
|
266
|
+
arr = LabeledArrow(Text("force", font_size=18), start=LEFT, end=RIGHT, color=RED)
|
|
267
|
+
|
|
268
|
+
# Line with label
|
|
269
|
+
line = LabeledLine(Text("d = 5m", font_size=18), start=LEFT * 2, end=RIGHT * 2)
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Auto-handles label positioning — cleaner than manual `Arrow` + `Text().next_to()`.
|
|
273
|
+
|
|
274
|
+
## Text Color/Font/Style Per-Substring (t2c, t2f, t2s, t2w)
|
|
275
|
+
|
|
276
|
+
```python
|
|
277
|
+
# Color specific words (t2c = text-to-color)
|
|
278
|
+
text = Text(
|
|
279
|
+
"Gradient descent minimizes the loss function",
|
|
280
|
+
t2c={"Gradient descent": BLUE, "loss function": RED}
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
# Different fonts per word (t2f = text-to-font)
|
|
284
|
+
text = Text(
|
|
285
|
+
"Use Menlo for code and Inter for prose",
|
|
286
|
+
t2f={"Menlo": "Menlo", "Inter": "Inter"}
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
# Italic/slant per word (t2s = text-to-slant)
|
|
290
|
+
text = Text("Normal and italic text", t2s={"italic": ITALIC})
|
|
291
|
+
|
|
292
|
+
# Bold per word (t2w = text-to-weight)
|
|
293
|
+
text = Text("Normal and bold text", t2w={"bold": BOLD})
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
These are much cleaner than creating separate Text objects and grouping them.
|
|
297
|
+
|
|
298
|
+
## Backstroke for Readability Over Backgrounds
|
|
299
|
+
|
|
300
|
+
When text overlaps other content (graphs, diagrams, images), add a dark stroke behind it:
|
|
301
|
+
|
|
302
|
+
```python
|
|
303
|
+
# CE syntax:
|
|
304
|
+
label.set_stroke(BLACK, width=5, background=True)
|
|
305
|
+
|
|
306
|
+
# Apply to a group
|
|
307
|
+
for mob in labels:
|
|
308
|
+
mob.set_stroke(BLACK, width=4, background=True)
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
This is how 3Blue1Brown keeps text readable over complex backgrounds without using BackgroundRectangle.
|
|
312
|
+
|
|
313
|
+
## Complex Function Transforms
|
|
314
|
+
|
|
315
|
+
Apply complex functions to entire mobjects — transforms the plane:
|
|
316
|
+
|
|
317
|
+
```python
|
|
318
|
+
c_grid = ComplexPlane()
|
|
319
|
+
moving_grid = c_grid.copy()
|
|
320
|
+
moving_grid.prepare_for_nonlinear_transform() # adds more sample points for smooth deformation
|
|
321
|
+
|
|
322
|
+
self.play(
|
|
323
|
+
moving_grid.animate.apply_complex_function(lambda z: z**2),
|
|
324
|
+
run_time=5,
|
|
325
|
+
)
|
|
326
|
+
|
|
327
|
+
# Also works with R3->R3 functions:
|
|
328
|
+
self.play(grid.animate.apply_function(
|
|
329
|
+
lambda p: [p[0] + 0.5 * math.sin(p[1]), p[1] + 0.5 * math.sin(p[0]), p[2]]
|
|
330
|
+
), run_time=5)
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Critical:** Call `prepare_for_nonlinear_transform()` before applying nonlinear functions — without it, the grid has too few sample points and the deformation looks jagged.
|