You are working with SoulStack, a collection of skills, Empryo presets and prompts. This file tells you how to use it and how to add to it.
When the user asks you to set up SoulStack, run the setup script and show its output. It asks nothing, prints plain lines when run by an agent, and backs up every file it changes to <file>.bak-<time>.
- macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/proxysoul/SoulStack/main/scripts/setup.sh | sh - Windows:
powershell -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/proxysoul/SoulStack/main/scripts/setup.ps1 | iex"
It clones SoulStack to ~/dev/SoulStack (or updates it), links the skills, and adds guides/takeaways.md as a marked block to the global rules of each agent it finds (Empryo, Claude Code, Codex, Copilot CLI, pi, OpenCode) and links the immune cells from agents/ into the agents that support custom agents. Existing rules are kept. Empryo parts are skipped when Empryo is not installed.
Presets are optional and change the user's models, theme and permissions: add them only when the user asks for ProxySoul's setup, by running the script from the clone with --presets proxysoul,proxysoul-mcp (-Presets on Windows). Add proxysoul-trusted only when they explicitly ask for full autonomy, and say what it turns on. proxysoul-mcp needs CLOUDFLARE_API_TOKEN.
Setup adds a soulstack command. When the user asks to update SoulStack, run soulstack update (or the one-liner again) and show its output: it pulls the latest version, refreshes skills and rules, and lists what changed. soulstack check shows whether an update is out, soulstack remove takes SoulStack out again. If the user only uses GitHub Copilot CLI, the plugin is an alternative to the script: copilot plugin marketplace add proxysoul/SoulStack, then copilot plugin install soulstack@soulstack. Use one or the other, not both, or the takeaways load twice. If the user only wants some skills, use npx skills add proxysoul/SoulStack -s <skill> -a <agent> -y (-a universal for Empryo).
- Skills live in
skills/<name>/SKILL.md. The frontmatterdescriptionsays when a skill applies. When the user's task matches, read the wholeSKILL.mdand any files it points to underreference/orscripts/, then follow it. Do not follow a skill from memory or from its description alone. - Presets in
plugins/presets/*.jsonchange Empryo settings. Load one withempryo --plugin <path>or through thepresetsarray in a config file. Never copy their values into the user's config by hand. - Prompts in
prompts/*.mdare complete briefs. Fill in the bracketed placeholders from the user's project; ask only for what the code cannot tell you. - Guides in
guides/are rules for you. Readguides/takeaways.mdbefore any task and follow it;guides/agent-guidance.mdcovers working habits,guides/mote-mascot.mdhow to build a mascot. - Immune cells in
agents/are stem cells: general versions installed globally. The immune system is grown per project with theimmune-systemskill, and grown copies of the cells live in the project (.agents/agents/for Empryo,.claude/agents/for Claude Code) with a filled## This projectsection. SoulStack's own grown cells are in.agents/agents/. - Design systems are built by the agent: when a project has UI and no
design_system/, run theensoulskill before any visual work.
- Start from the matching folder in
templates/. - Names are lowercase with hyphens, and the folder name equals the
namein the frontmatter or JSON. - A skill's
descriptionsays what it does and when to use it, in one or two sentences, because agents choose skills from it. - Keep
SKILL.mdfocused: steps and rules. Move long background intoreference/, runnable helpers intoscripts/. - Nothing confidential: no API keys, tokens, private URLs, customer data or private screenshots.
- Add a row to the catalog in
README.md. Whenguides/takeaways.mdchanges, copy it tocom.github.copilot/rules/soulstack.instructions.mdso the Copilot plugin matches. - Never rewrite published history: users update with
soulstack update. Add commits on top and raiseversioninplugin.jsonand.github/plugin/marketplace.jsonfor every release; commit subjects are what users see as "new" when they update, so write them for users. - Commit one topic at a time with a short scoped conventional subject (
feat(skills): add <name>,fix(plugins): …) and a body of short scoped one-liner bullets (- skills/<name>: what changed).
skills/<name>/SKILL.md required
skills/<name>/reference/*.md optional background
skills/<name>/scripts/* optional helpers
plugins/presets/<name>.json Empryo preset: name, version, description, config
prompts/<name>.md standalone prompt
templates/ copy these to start
guides/<name>.md takeaways, working habits, mascot how-to
assets/ images used by the README and guides (kept out of the Genome by .empryoignore)
morphs/ Empryo morphs
agents/<name>.md immune cells (Claude Code, Empryo, Copilot and OpenCode agent format)
immune/ SoulStack's own immune system: setup and update tests for Linux and Windows
design_system/ SoulStack's design system, built with ensoul; the site follows it
site/ the SoulStack website and docs (bun run dev); docs also ship as Markdown and llms.txt for agents
EMPRYO.md SoulStack's own rules; templates/EMPRYO.md is the template for other projects
plugin.json Copilot plugin manifest (Agent Plugins 1.0): skills/ plus com.github.copilot/rules/
.github/plugin/marketplace.json Copilot marketplace listing the plugin
scripts/setup.sh, setup.ps1 set everything up on macOS and Linux, or Windows: links skills, adds the takeaways to each agent, adds the soulstack command (update, check, remove)
scripts/install.sh links skills into an agent's skills folder
scripts/export-config.ts regenerates plugins/presets from ~/.empryo/config.json