@skills/creative/manim-video/ lets load this skill into pi as an extension in ~/.pi/
>ls -la>find skills -maxdepth 3 -type d | head -n 200>find skills -maxdepth 4 -type f | rg "manim|creative" -n>rg -n "resources_discover|skillPaths" /opt/homebrew/Cellar/pi-coding-agent/0.65.2/libexec/lib/node_modules/@mariozechner/pi-coding-agent/examples/extensions -Slets not use @skills/creative/manim-video/scripts/setup.sh directly. the requirements are installed. lets use a lighter version that will use uv for the python and the manim executatble and then checks for the other two, but just asks the user to install manually instead of just installing shit
we'll model this as a simple pi extension that works with /manim
given these instructions, can you port everything under @skills/creative/manim-video/ to a new pi extension? do it in a subrepo in ~/dev/
use pnpm dlx gh-axi to create a new repo and then push to it
call it pi-manim-video
install it via pi install git:[REDACTED]:user/repo
and then pi update <same string> to update as we patch
>find skills/creative/manim-video -maxdepth 3 -type f | sort>pnpm dlx gh-axi --help>pnpm dlx gh-axi repo --help>gh auth status>ls -la ~/dev>find ~/dev/pi-extension-01 -maxdepth 3 -type f | sort>cd ~/dev && pnpm dlx gh-axi repo create pi-manim-video --public --description "Pi extension for Manim video production workflow" --clone>ls -la ~/dev/pi-manim-video && git -C ~/dev/pi-manim-video remote -v>cd ~/dev/pi-manim-video && mkdir -p extensions/manim-video skills/manim-video && cp -R /Users/mukund/src/tries/2026-03-28-hermes-agent/skills/creative/manim-video/* skills/manim-video/>uv --version && uv run --no-project python --version && uv run --no-project manim --version | head -n 1>cd ~/dev/pi-manim-video && rg -n "skills/creative/manim-video|pip install manim|scripts/setup.sh|pip install" skills/manim-video -S>cd ~/dev/pi-manim-video && rg -n "skills/creative/manim-video|pip install manim" -S>stat -f '%Sp %N' ~/dev/pi-manim-video/skills/manim-video/scripts/setup.sh>cd ~/dev/pi-manim-video && git status --short>cd ~/dev/pi-manim-video && find . -maxdepth 4 -type f | sort>cd ~/dev/pi-manim-video && git add . && git commit -m "feat: port manim-video skill into pi extension with /manim command" && git push -u origin HEAD>pi install git:[REDACTED]:maujim/pi-manim-video>pi update git:[REDACTED]:maujim/pi-manim-video>pi list | rg -n "pi-manim-video|[REDACTED]:maujim/pi-manim-video" -n -SDone — I fully ported skills/creative/manim-video/ into a new pi package/extension repo and wired /manim.
Repo: ~/dev/pi-manim-video
Remote: [REDACTED]:maujim/pi-manim-video.git (created via pnpm dlx gh-axi repo create ... --clone)
Pushed commit: 9542d3b
extensions/manim-video/index.ts
/manimresources_discover to load bundled skill:
skills/manim-video/SKILL.mdskills/manim-video/SKILL.mdskills/manim-video/README.mdskills/manim-video/references/* (all files)skills/manim-video/scripts/setup.shI replaced the old setup behavior with a lighter checker that:
uv checks for Python + Manim executablepdflatex and ffmpegExecuted successfully:
pi install git:[REDACTED]:maujim/pi-manim-videopi update git:[REDACTED]:maujim/pi-manim-videoAnd confirmed via pi list.
If you want, I can now add a /manim-init helper command that scaffolds a fresh project folder (plan.md, script.py, concat.txt) in one shot.
out of curiosity is it possible to make it so this skill is dispatched with a specific model from a specific provider?? Let's say in the future I train a model that is fine-tuned to be really good at generating videos like this.
Yes — absolutely possible.
In pi, skills themselves are just prompt content, but your extension command (/manim) can control model selection before dispatching /skill:manim-video.
In /manim handler:
await pi.setModel(targetModel)pi.sendUserMessage("/skill:manim-video ...")Optionally:
agent_end), orpi.registerProvider())./manim-model set provider/model-id).If you want, I can patch your pi-manim-video extension to do exactly this with a default + optional auto-restore toggle.
can we add into this manim extension that it was created by porting from the hermes skill and what commit this was done against? and also link to the specific subdirs we used? This way we can update if the skill gets updated yk
>cd /Users/mukund/src/tries/2026-03-28-hermes-agent && git rev-parse HEAD && git remote -v | head -n 2>cd ~/dev/pi-manim-video && git add README.md UPSTREAM.md && git commit -m "docs: add Hermes upstream provenance and pinned source commit" && git pushYep — done ✅
I added explicit provenance tracking to ~/dev/pi-manim-video and pushed it.
README.md now includes:
e902e55b26aab4658debab070fc1048b22517158references/scripts/UPSTREAM.md (new file) with:
setup.sh is intentionally adapted (lightweight, no auto-install)22cd475[REDACTED]:maujim/pi-manim-video.gitIf you want, I can also add a tiny /manim-upstream command that prints this provenance info in-chat so you can quickly inspect source/commit without opening files.
commit and push this. Does this skill ask the agent to run commands always insiade a fresh uv env, or to use the users env, or to at least do something like uvx manim
>cd ~/dev/pi-manim-video && git status --short && rg -n "uv|uvx|manim -|scripts/setup.sh|pip install|python3|venv" skills/manim-video/SKILL.md skills/manim-video/README.md skills/manim-video/references -SCommitted and pushed already ✅
Latest pushed commit is:
22cd475 on master[REDACTED]:maujim/pi-manim-video.gitAnd right now: no uncommitted changes.
On your question: currently this skill does NOT enforce fresh uv env / uvx manim.
What it does today:
uv only to verify availabilitymanim -ql ...manim -qh ...pip install ... snippets for optional voiceover toolingSo execution is effectively in the user’s existing env / PATH, unless the model decides otherwise.
If you want, I can patch it so the skill consistently prefers one strategy, e.g.:
uvx manim ... (tool-style ephemeral execution), oruv run --no-project manim ..., oruv venv && uv pip install ... instructions.prefer 1) when just running commands doing one off renders prefere 2) and 3) in more mature codebases
>cd ~/dev/pi-manim-video && rg -n "manim -|manim --|pip install \"manim-voiceover|uv run|uvx" skills/manim-video -S>cd ~/dev/pi-manim-video && git status --short && git add skills/manim-video/SKILL.md skills/manim-video/references/rendering.md skills/manim-video/references/troubleshooting.md skills/manim-video/references/production-quality.md && git commit -m "docs: prefer uvx for one-offs and uv run/project env for mature workflows" && git pushDone — committed and pushed ✅
798b1c8docs: prefer uvx for one-offs and uv run/project env for mature workflows[REDACTED]:maujim/pi-manim-video.gitPreviously it didn’t enforce this clearly.
Now the skill/docs explicitly guide:
uvx manim ...uv run --no-project manim ...uv env (venv + pinned deps)I updated:
skills/manim-video/SKILL.mdskills/manim-video/references/rendering.mdskills/manim-video/references/troubleshooting.mdskills/manim-video/references/production-quality.mdIf you want, I can also add a strict /manim-mode oneoff|mature|repro command that injects the chosen policy into the session automatically.
commit and push then update Pi
>cd ~/dev/pi-manim-video && git status --short && git log -1 --oneline>pi update git:[REDACTED]:maujim/pi-manim-videoDone ✅
798b1c8 docs: prefer uvx for one-offs and uv run/project env for mature workflowspi update git:[REDACTED]:maujim/pi-manim-videook one more update. when the model is running the render command, teach it to pipe stdout and stderr to a file or to stream it elsewhere. I don't want all the context of the stdout video render to fill up ctx but i also wanna have errors and success to be read to keep the workflows going.
>cd ~/dev/pi-manim-video && git status --short && rg -n "Render policy|LLM-safe Render Logging|redirect stdout/stderr|tail -n 120|tee" skills/manim-video extensions/manim-video -S>cd ~/dev/pi-manim-video && git add extensions/manim-video/index.ts skills/manim-video/SKILL.md skills/manim-video/references/rendering.md && git commit -m "feat: enforce render log redirection to keep Manim output out of context" && git push>pi update git:[REDACTED]:maujim/pi-manim-videoDone ✅ — updated, committed, pushed, and refreshed in Pi.
I taught the extension/skill to keep render logs out of LLM context by default:
skills/manim-video/SKILL.md
stdout+stderr to log filetail -n 120)tee only when explicit live streaming is neededskills/manim-video/references/rendering.md
uvx + log redirection, failure handling, optional tee streaming).extensions/manim-video/index.ts
/manim now appends a short render-policy instruction every time it dispatches /skill:manim-video, to reinforce this behavior operationally.0389ed9feat: enforce render log redirection to keep Manim output out of contextorigin/masterpi update git:[REDACTED]:maujim/pi-manim-videopi install git:[REDACTED]:maujim/pi-manim-videopi update git:[REDACTED]:maujim/pi-manim-video