pstack (hermes agent-plugins-v1 package)
Phase-0 conversion of pstack v0.14.8 for the Hermes Agent platform's
portable plugin path. Upstream: https://github.com/cursor/plugins/tree/main/pstack
(MIT, Copyright (c) 2026 Lauren Tan). Conversion provenance: see .build-provenance.txt;
regenerate with python tools/convert.py --source <pstack-clone> --out <package-dir>.
What hermes loads
- 45 skills via the agent-plugins-v1 portable path
(24 workflow/mode skills + 21
principle-*skills): single-levelskills/<dir>/SKILL.md, immediate children only. - Root
plugin.json— the strict agent-plugins-v1 manifest hermes probes at the package root: exact$schemaURL, 9 whitelisted fields ($schema, name, version, description, author, homepage, repository, license, keywords).
What stays inert on hermes (for now)
agents/(poteto-agent, comment-sicko) — the portable path discovers skills and mcp.json only; no agent registration exists in hermes v0.20.5. Kept for Cursor dual-load and a Phase-2 native wrapper.automations/benny/— excluded from this package: the install scanner flags its copy-instructions as persistence patterns (verdict: dangerous), and Phase 4 rebuilds it as hermes cron/loop jobs anyway.skills/make-bot-ui/— excluded: its Tailscale setup script trips the privilege-escalation scanner (F33); deepest vendor coupling. The slot is filled byskills/hermesbot/— a hermes-native control-surface skill injected fromtools/assets/hermesbot/SKILL.mdat build time.- Executable scripts shipped inside skills (e.g.
skills/poteto-mode/scripts/) — shipped verbatim; the hermes loader never executes them itself, but the skills instruct the agent to run them at runtime (they invoke thebunandghCLIs).
How to invoke on hermes
Portable plugin skills are opt-in: they do not enter the system-prompt
<available_skills> index. Load a skill explicitly with skill_view using the
namespaced id agent-plugin-pstack-<digest>:<skill-name>, where <digest> is the
first 8 hex chars of the sha256 of the plugin key (stable while the install
directory keeps the name pstack).
Optional slash-command route (no code): add this package's skills directory to
skills.external_dirs in the hermes config.yaml (%LOCALAPPDATA%\hermes\config.yaml on
Windows, ~/.hermes/config.yaml on macOS/Linux) and the hub scanner
registers all 45 skills as /<name> slash commands (agent/skill_commands.py:424).
Trade-offs: skills enter the prompt index with 60-char descriptions and lose the
plugin namespace; the portable path itself registers zero commands
(plugins.py:5088-5138).
Install path
Copy this package directory to the hermes plugins directory —
%LOCALAPPDATA%\hermes\plugins\pstack on Windows, ~/.hermes/plugins/pstack on
macOS/Linux — then add pstack to plugins.enabled in the hermes config.yaml
(%LOCALAPPDATA%\hermes\config.yaml on Windows, ~/.hermes/config.yaml on macOS/Linux).
Cursor dual-load
.cursor-plugin/plugin.json is preserved unchanged, so this same directory still
loads as a Cursor plugin. Hermes probes only <root>/plugin.json and never reads
.cursor-plugin/.
Differences from upstream (the conversion gate)
- Root
plugin.jsoninjected with the exact agent-plugins-v1$schemaURL and a whitelisted field set (upstream Cursor fieldsdisplayName,category,tags,skills,agentsare omitted — unknown fields produce loader diagnostics). skills/poteto-mode/SKILL.md: frontmattername: Poteto Mode->name: poteto-mode.skills/grokbot/container andskills/make-bot-ui/are excluded (see 9); the loader only sees immediate children ofskills/anyway.- Text normalization to UTF-8 without BOM and LF line endings.
- R1: the poteto-mode principles index is regenerated from the 21 principle leaves at build time — the leaves are the single source of truth, so the historical four-way duplication (index/leaf/README/guide) cannot drift here.
- F16:
check-plan.mjsreads the fast-lane slug fromPSTACK_FAST_LANE(defaultgrok-4.6-fast-xhigh) instead of a hardcoded literal; the multi-phase-plan template documents the override. - F10-F12:
worktree-audit.shdetects GNU vs BSDstat/dateat runtime (stat_mtime/date_epochhelpers) and no longer truncates worktree paths containing spaces (verified on GNU/Linux; unchanged behavior on macOS). - F-publish:
automations/benny/andskills/make-bot-ui/excluded — the hermes install scanner blocks packages whose scan verdict is "dangerous" (benny copy-instructions + make-bot-ui Tailscale), --force cannot override, and both are Phase-4/what-not-to-port items anyway. The make-bot-ui slot is filled by hermes-nativeskills/hermesbot/(injected fromtools/assets/hermesbot/SKILL.md): a control-surface skill on the hermes gateway's own webhook stack (X-Webhook-Signature-V2HMAC routes),hermes send, andhermes peer— no Tailscale, no third-party bot runtime. - G1: a delegation escape hatch added to the Feature playbook and the poteto-mode Subagents section — surgical, fully-specified edits to files already resident in context may be implemented in-thread, provided a leaf delegate reviews the diff (review separation preserved; fixes the deviation observed in the first live usage run).
Nothing else in any SKILL.md was modified.
Adapted for Hermes Agent plugin compatibility from github.com/cursor/plugins pstack..