CCPM Project Management
automazeio/ccpm
Runs a spec-driven workflow from PRD to epic to GitHub issues to parallel agents, with status, standup and blocked-work reports from bundled scripts.
Create or fork a Pneuma mode, scaffold its manifest, viewer, skill, seeds, and showcase.
$ npx skills add pandazki/pneuma-skills --skill create-mode -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pandazki/pneuma-skills create-mode --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-mode .claude/skills/create-mode && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "create-mode" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/.agents/skills/create-mode into .claude/skills/create-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-mode", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pandazki/pneuma-skills/tree/main/.agents/skills/create-modeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pandazki/pneuma-skills --skill create-mode -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pandazki/pneuma-skills create-mode --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/create-mode .agents/skills/create-mode && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-mode" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/.agents/skills/create-mode into .agents/skills/create-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-mode", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pandazki/pneuma-skills --skill create-mode -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pandazki/pneuma-skills create-mode --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/create-mode .cursor/skills/create-mode && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-mode" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/.agents/skills/create-mode into .cursor/skills/create-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-mode", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pandazki/pneuma-skills.git --path .agents/skills/create-mode--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pandazki/pneuma-skills --skill create-mode -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pandazki/pneuma-skills create-mode --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/create-mode .gemini/skills/create-mode && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-mode" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/.agents/skills/create-mode into .gemini/skills/create-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-mode", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pandazki/pneuma-skills create-modeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pandazki/pneuma-skills --skill create-mode -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/create-mode .github/skills/create-mode && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-mode" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/.agents/skills/create-mode into .github/skills/create-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-mode", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pandazki/pneuma-skills --skill create-mode -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pandazki/pneuma-skills create-mode --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandazki/pneuma-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/create-mode .opencode/skills/create-mode && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-mode" agent skill from https://github.com/pandazki/pneuma-skills/tree/main/.agents/skills/create-mode into .opencode/skills/create-mode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-mode", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-modeCreate or fork a Pneuma mode, scaffold its manifest, viewer, skill, seeds, and showcase.
Create Mode is an agent skill from pandazki/pneuma-skills. Create or fork a Pneuma mode, scaffold its manifest, viewer, skill, seeds, and showcase. Use for new-mode authoring in this repository; discover unresolved requirements, document the design brief, then implement and verify.
Its SKILL.md is about 6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 17 other files, including reference files and assets (for example `references/case-studies.md`, `references/cloud-surfaces.md` and `references/domain-and-sources.md`).
It sits in Product & Project Management, covering PRD writing. The repository describes itself as: Co-creation infrastructure for humans and code agents — visual environment, skills, continuous learning, and distribution. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1a96fbf. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bunbunxcurljqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use bunx and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create Mode loads about 6k tokens when it runs, and up to ~26k if it reads all its reference files. Until then it costs about 59 tokens; SKILL.md has 2,665 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pandazki/pneuma-skills at commit 1a96fbf, republished under its MIT licence (© pandazki). 2,665 words, ~6,038 tokens.
.claude/skills/create-mode/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.A guided journey for adding a new mode to Pneuma Skills. The journey has three phases — Discovery (ask the right questions), Brief (write down key choices and resolve material unknowns), Implementation (generate files). Each phase has a clear handoff to the next; never skip Brief. Pneuma has a stable contract layer; a concise design brief keeps the viewer aligned with the user's intended work.
This skill runs in Claude Code and Codex. Use the active harness's file, planning, browser, and question tools; native Claude tool names are not prerequisites. Resolve paths from this skill directory.
Apply the root product and architecture guidance and Engineering Judgment to the brief: identify domain invariants and ownership before choosing Source kinds or actions, and inspect existing modes and mature implementations before building anew.
The reference material in references/ is where the knowledge lives — go read the relevant one whenever you're about to make a meaningful decision. SKILL.md is the journey, not the textbook.
Trigger this skill when the user asks for any of:
If the user only asks about an existing mode's behavior, this skill is not the right tool — direct them to docs/reference/viewer-agent-protocol.md or the mode's own SKILL.md.
Goal: fill the design brief from the user's request, existing decisions, and repository evidence. Ask only for missing choices that materially affect the result. Use the question tool available in the active harness, or a concise chat question; never require a tool named AskUserQuestion. Bundle closely related unknowns and continue independent work while waiting.
references/domain-and-sources.md while they think.NOTICE.md and set inspiredBy. Read references/external-integrations.md for the borrow-vs-inspiration line.file-glob / json-file / aggregate-file / memory with the one that fits Q2's domain pre-selected as "Recommended". Explain why it fits in the option's description. If aggregate-file wins, note that you'll also generate domain.ts.memory) — "all" / "manifest" / "single"; do users author many independent files, an ordered/structured set, or one main document? See references/viewer-contract-patterns.md for the FileWorkspaceModel matrix.{ contentSet?, ... } based on Q2's domain noun (slide / page / row / node / heading). Confirm with the user; explicitly name the coarse "where" key and any fine "within" key. See references/viewer-contract-patterns.md::ViewerAddress.navigate-to when users need addressable navigation; add ui and custom for demonstrated needs. Don't list capture — it's framework-built-in.proxy)? does the agent or viewer need API keys (→ init.params with sensitive: true + envMapping)? does this need an MCP server (→ skill.mcpServers)? Read references/external-integrations.md for the proxy / Babel-JIT / NOTICE patterns.description: "yes" buys shareability and costs a read-only degradation path plus a browser verification pass on every viewer change; "no" costs nothing and can be revisited in a later release. Read references/cloud-surfaces.md before you ask — the compatibility checklist there is what "yes" actually commits to.references/seed-and-showcase.md.| When you're about to ask … | Read first |
|---|---|
| Q2 / Q4 (domain → source kind) | references/domain-and-sources.md |
| Q5 / Q6 / Q7 (workspace / address / actions) | references/viewer-contract-patterns.md |
| Q3 / Q8 (inspiration / external deps) | references/external-integrations.md |
| Q9 (cloud surfaces) | references/cloud-surfaces.md |
| Q10 (seed strategy) | references/seed-and-showcase.md |
| Q11 (evolution directive) | references/skill-md-patterns.md (evolution section) |
If you ever find yourself stuck choosing between two patterns, open references/case-studies.md — it indexes which existing mode made which choice, so you can read that mode's manifest as a concrete precedent.
Goal: write down every key choice with a one-line rationale in one place. Use the brief for Phase 3; label assumptions and resolve material unknowns before dependent implementation. An approved brief or explicit instruction to implement already supplies authorization.
Present a concise brief in chat, or link the design document if the task already uses one. Cover the applicable fields below without asking the user to repeat known decisions:
# Mode design brief — <displayName>
## Identity
- name: <kebab-case>
- displayName: <string or LocalizedString>
- description: <one sentence>
- icon: <SVG approach: e.g. "lucide-style line icon, single path">
## Domain
<one paragraph — what the user is creating; what the viewer renders; what the agent does>
## Invariants and implementation choice
- required invariants: <what must remain true, and how it will be verified>
- state and writers: <persistent work, transient UI state, and who may change each>
- reuse: <existing mode / project implementation / library, or the concrete gap>
- added abstraction or complexity: <its contract or real variation and benefit; omit if none>
## Source layer
- kind: <file-glob | json-file | aggregate-file | memory>
- domain type T: <the TypeScript type the viewer subscribes to, sketched>
- why this kind: <one sentence — see references/domain-and-sources.md>
- domain.ts needed: <yes | no>
## Workspace model
- type: <"all" | "manifest" | "single">
- multiFile: <true | false>
- ordered: <true | false>
- hasActiveFile: <true | false>
- supportsContentSets: <true | false>
## ViewerAddress vocabulary
- coarse keys: <e.g. `contentSet?`, `slide`>
- fine keys: <e.g. `selector?`, `anchor?`>
- example address: `{ contentSet: "en-light", slide: 3 }`
- documented in: skill/SKILL.md (will write a sub-section)
## Action space
| id | label | category | agentInvocable | params |
|----|-------|----------|----------------|--------|
| navigate-to | Go to … | navigate | true | { address: object } |
| … | … | … | … | … |
(framework provides `capture` automatically — not listed)
## Seed strategy
- shape: <single | content-sets-by-use-case | language×theme>
- content sets: <list, with each name + one-line purpose>
- first seed narrative: <one sentence>
## External integrations
- proxy: <none | list routes>
- init.params: <none | list with sensitive flag>
- skill.mcpServers: <none | list>
- viewer.refreshStrategy: <"auto" | "manual">
- NOTICE.md required: <yes | no — if yes, upstream name + license + version pinned>
- inspiredBy: <none | { name, url }>
- external effects (if any): <observable completion, retry/idempotency, cancellation, and recovery or undo limits>
## Cloud surfaces
- hosted player: <yes | no — and the reason, in the vocabulary of references/cloud-surfaces.md>
- artifact deploy: <none | vercel + cf-pages>
- obligations (only when either is yes):
- registration: <`core/player-support.ts` whitelist entry / `compatibleModes` entry in BOTH deploy plugins + an `/export/<name>` route>
- read-only degradation: <which affordances hide when `editing === false`; which `/api/*` calls gate on the `staticPlayer` store flag>
- verification: <build the player, load a real package for THIS mode in a browser, exercise it read-only, console clean>
## Launcher surface
- visibility: <public (in gallery) | hidden (internal-only, manifest.hidden=true)>
- featured-eligible: <yes (default; showcase highlights present) | no (no showcase or hidden mode)>
## Evolution directive
> <one sentence to the evolve agent>
## Open questions / deferred
- <anything we punted on; e.g. "showcase imagery defers to /showcase">If the user has authorized implementation and the brief fits that scope, proceed. Ask only when a material unresolved choice would change the product or exceed the agreed scope. Keep the brief current as the user steers; do not request approval again for decisions already made.
Once the brief is sufficiently resolved and implementation is authorized, generate files in this order. Use templates from assets/templates/; replace the TODO: placeholders against the brief. Don't ad-lib structure — the templates encode the conventions extracted from existing modes.
modes/<name>/
├── manifest.ts ← from assets/templates/manifest.ts.template
├── pneuma-mode.ts ← from assets/templates/pneuma-mode.ts.template
├── domain.ts ← only if Source kind is aggregate-file; from domain.ts.template
├── skill/
│ └── SKILL.md ← from assets/templates/SKILL.md.template
├── seed/
│ └── <content sets per brief>
├── viewer/
│ └── <ModeName>Preview.tsx ← scaffold a stub PreviewComponent
└── showcase/
└── showcase.json ← from assets/templates/showcase.json.template (with concept descriptions)
NOTICE.md ← only if brief said "NOTICE.md required: yes"; from NOTICE.md.templateFor each file, fill in templates against the brief. Specifics:
// TODO: identity, // TODO: sources, etc.) — fill each from the brief. Don't add fields the brief doesn't have; brevity over completeness for v0.1.0.ModeDefinition binding: import manifest, wire it to a stub ViewerContract that imports the PreviewComponent and implements extractContext, workspace.resolveItems, workspace.createEmpty. See references/viewer-contract-patterns.md::pneuma-mode.ts for the binding pattern.load(files) → T | null and save(value, current) → { writes, deletes } pair as pure functions. Read existing modes' domain.ts for the pattern (slide / illustrate / kami use this).references/skill-md-patterns.md: Scene → Viewer Contract → Core Rules → Workflow → Commands → References. Include a ## ViewerAddress vocabulary sub-section that names every key from the brief and a one-line meaning per key.<Name>Preview.tsx — stub. Renders a placeholder ("Mode initialized — start authoring"). Imports the Source from props.sources via useSource. The user (or you in a follow-up) will flesh this out.assets/templates/NOTICE.md.template.Complete frontend registration (3a), launcher discovery (3b), and public documentation (3c) as applicable. These serve different consumers: a mode can launch successfully while remaining absent from the gallery or docs.
Use the visibility decision recorded in the brief. Public modes need all three;
hidden modes still need frontend registration but stay out of public catalogs
and may omit the gallery entry as described below. Resolve visibility only if
it is still unknown. Cloud registration (3d) is conditional on the brief's
## Cloud surfaces decision and the verification pass described there.
core/mode-loader.tsAdd an entry to the builtinModes: Record<string, ModeSource> map
so the frontend can dynamic-import the mode's manifest and viewer.
Without this, the mode 404s when a user opens its URL ("Unknown
mode: <name>").
// core/mode-loader.ts — inside `const builtinModes: Record<string, ModeSource> = { ... }`
<name>: {
type: "builtin",
manifestLoader: () =>
import("../modes/<name>/manifest.js").then((m) => m.default),
definitionLoader: () =>
import("../modes/<name>/pneuma-mode.js").then((m) => m.default),
},Copy the shape from the neighboring entry rather than from memory —
the field names are manifestLoader / definitionLoader, and the
type: "builtin" discriminant is required.
server/index.tsAdd the mode's name to the builtinNames array (search for const builtinNames = [...]). This array drives /api/registry, which
the launcher's marketplace UI and ProjectPanel's mode-tile grid
both consume. Skipping this is the #1 way a freshly-built mode
silently fails to appear in the launcher gallery even though
bun run dev <name> works fine.
// server/index.ts — search for "const builtinNames"
const builtinNames = [..., "<name>"];The launcher filters out modes whose manifest declares
hidden: true, so listing a hidden mode here is harmless — the
filter is the safety net. Current practice omits them anyway, so a
hidden mode needs no entry; add one only if you want the filter,
rather than your memory, to be what keeps it out of the gallery.
If the mode is not hidden, add its row to the "Built-in Modes" table
and update CLI usage in both README.md and README.zh.md. Hidden
modes stay out of the public catalog. AGENTS.md links to the catalog;
it does not maintain another mode list. CLAUDE.md remains the one-line
@AGENTS.md import: never add content to it or copy it over AGENTS.md.
Unlike 3a–3c, this one is not universal. Add each entry only if
the brief's ## Cloud surfaces section said yes; a mode that answered
"no" is correctly absent from both files, and adding it speculatively
ships a broken share link.
WEB_PLAYER_SUPPORTED_MODES in core/player-support.ts. This is the
only line of code, and it is the last thing you do: the whitelist
is a claim that the viewer has been exercised in a real player build.
See the verification obligation below.compatibleModes in
both plugins/vercel/manifest.ts and
plugins/cf-pages/manifest.ts. Membership there only makes the
deploy providers resolve for the session; the button itself lives on
the mode's /export/<name> page (server/routes/export.ts +
server/routes/deploy-ui.ts), which needs a mode-specific
collectDeployFiles(). Listing the mode without building that page
produces nothing — doc and gridboard are both listed today and
neither has an export route.Verification obligation (hosted player). Never whitelist a mode on
the strength of reading code. Build the player
(bunx vite build --config vite.player.config.ts), materialize a real
package for this mode and serve it from one origin (copy
scripts/smoke-player.ts; scripts/smoke-webcraft.ts and
scripts/smoke-kami.ts are the mode-specific precedents), open it in a
browser, and exercise the viewer read-only — content sets, item
navigation, timeline scrub — with the console clean. The failure modes
here all look fine in source: an empty viewer because the mode's file
extension isn't in the package's text allowlist, an asset path the
content service worker can't resolve, a viewer stuck on "Loading…"
waiting for a signal the player never sends.
references/cloud-surfaces.md carries the full checklist.
Use the visibility decision already recorded in the brief. Public modes with
showcase highlights are eligible for the random featured slot. hidden: true
removes the mode from user pickers entirely; it is not a separate "do not feature"
switch. Do not ask again after registration or hide a public mode to avoid featuring.
Hand off to the existing showcase workflow. Read .agents/skills/showcase/SKILL.md and execute its Step 3 (Generate Showcase Images) for the new mode — hero + 3 highlight images, 1376×768, "Ethereal Tech Dark Mockup" style, saved to modes/<name>/showcase/. The descriptions you put in showcase.json during Step 2 become the briefs for image generation.
This is the only Phase-3 step that takes appreciable time. If image generation isn't available right now (no API key, offline), surface that to the user and let them decide whether to defer —
showcase.jsonwith the right descriptions but missing images is a valid intermediate state.
Don't claim the mode is ready until you verify these:
modes/<name>/manifest.ts type-checks against core/types/mode-manifest.ts (bun run typecheck runs clean from the repository root).bun run dev <name> --no-open --viewing session starts without error. Use an isolated workspace; do not resume an unrelated agent just to inspect the viewer./api/registry includes the new entry. Test via curl -s http://localhost:17996/api/registry | jq '.builtins[].name' (or whatever port the launcher is on). If the name isn't there, you skipped Step 3b (server/index.ts builtinNames) — go fix it before continuing.TODO: comments from the template you didn't address.core/player-support.ts
nor either deploy plugin's compatibleModes — a speculative entry
ships a broken share link or a dead Deploy button. If the brief said
yes to the hosted player, the browser pass from Step 3d must have
actually happened: player built, real package for this mode loaded,
viewer exercised read-only, console clean. If you couldn't run it,
say so explicitly and leave the whitelist entry out until someone
can — an unverified whitelist entry is worse than a missing one,
because supported is baked into every package at share time and a
package exported while the flag was wrong stays wrong until it's
re-shared.These show up in every existing mode; honor them in the one you're creating too.
T before choosing how it serializes. Source kind is a consequence of T, not a prior decision.ViewerAddress. Every action that takes an object reference, every notification that reports one, every locator card that points to one, must use the same address shape. Mode owns the vocabulary; framework owns the slot.manifest.ts declares; pneuma-mode.ts implements. Keep the split. Manifest is read by skill-installer + backend; pneuma-mode.ts is read by the frontend mode-loader. Don't put React imports in manifest.ts.SKILL.md is the agent's project guide for this mode — it follows the same "scene → contract → rules → examples → references" rhythm as the root AGENTS.md does for the project. Put depth in skill/references/<topic>.md files, not in the main body.NOTICE.md; borrowed ideas don't. Direct transcription, license excerpts, command tables, font subsets → declare upstream + license + version. Architectural metaphors, aesthetic direction, workflow philosophy → no notice needed.showcase.json with descriptions and a tagline is the minimum bar (so the launcher gallery has copy); imagery generation can happen later via the existing /showcase flow.Open the matching file when you're about to make the corresponding decision. Don't load them all eagerly — progressive disclosure.
| File | When to read |
|---|---|
references/mode-anatomy.md | First touch — overview of the directory shape, required vs optional files, manifest field matrix |
references/domain-and-sources.md | Picking Source kind, designing domain type T, writing domain.ts |
references/viewer-contract-patterns.md | Wiring ViewerContract, choosing ViewerAddress vocabulary, designing workspace.resolveItems |
references/skill-md-patterns.md | Writing skill/SKILL.md and the evolution directive |
references/seed-and-showcase.md | Designing seed content sets and showcase.json |
references/external-integrations.md | proxy routes, JIT compilation, API-key params, NOTICE.md mechanics |
references/cloud-surfaces.md | Deciding hosted-player support and artifact deploy — what the player environment is, the viewer compatibility checklist, the static-web fast path, the disqualifiers, how to verify before whitelisting |
references/case-studies.md | "Where did <existing mode> make this choice?" — index by pattern, not by mode |
Templates in assets/templates/ are the concrete files you'll write from. Each template has TODO: markers where the brief plugs in.
© pandazki, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 14 other files (references, assets) in .agents/skills/create-mode of pandazki/pneuma-skills.
Open the folder on GitHubat commit 1a96fbf
Create Mode next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Mode this skillpandazki/pneuma-skills | 162 | — | ~6k | Automated safety check: Pass | MIT | |
| CCPM Project Managementautomazeio/ccpm | 8.4k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Ralph Tui Create Beadssubsy/ralph-tui | 2.5k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Trellis Brainstormanjiemo/SunnyBeach | 178 | 7 repos | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Adversarial Speczscole/adversarial-spec | 556 | 1 repos | ~8.3k | Automated safety check: Notes | MIT | |
| Ralph Tui Create Beads Rustsubsy/ralph-tui | 2.5k | 1 repos | ~2.8k | Automated safety check: Pass | MIT |
automazeio/ccpm
Runs a spec-driven workflow from PRD to epic to GitHub issues to parallel agents, with status, standup and blocked-work reports from bundled scripts.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution. An agent skill from subsy/ralph-tui.
anjiemo/SunnyBeach
Guides collaborative requirements discovery before implementation.
zscole/adversarial-spec
Iteratively refine a product spec by debating with multiple LLMs (GPT, Gemini, Grok, etc.) until all models agree.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution using beads-rust (br CLI).
Q00/ouroboros
Runs a guided product-manager interview that classifies each question automatically and produces a Product Requirements Document.
pandazki/pneuma-skills
Explain something by writing it on a board. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
AI-orchestrated video production on @pneuma-craft. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Lucid Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Plotwise workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma Sprite Mode workspace guidelines. An agent skill from pandazki/pneuma-skills.
pandazki/pneuma-skills
Pneuma WebCraft Mode workspace guidelines with Impeccable.style design intelligence.
Categories
Create or fork a Pneuma mode, scaffold its manifest, viewer, skill, seeds, and showcase. Create Mode is an agent skill from pandazki/pneuma-skills. Create or fork a Pneuma mode, scaffold its manifest, viewer, skill, seeds, and showcase.
Create Mode fits situations like: new-mode authoring in this repository; discover unresolved requirements; document the design brief; then implement and verify.
Run `npx skills add pandazki/pneuma-skills --skill create-mode -a claude-code`. Or copy the skill folder (.agents/skills/create-mode in pandazki/pneuma-skills) into .claude/skills/create-mode in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pandazki/pneuma-skills --skill create-mode -a codex`. Or copy the skill folder (.agents/skills/create-mode in pandazki/pneuma-skills) into .agents/skills/create-mode in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pandazki/pneuma-skills --skill create-mode -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-mode, .gemini/skills/create-mode, .github/skills/create-mode and .opencode/skills/create-mode in your project.
Going by SKILL.md and its folder, Create Mode needs the command-line tools its instructions call (bun, bunx, curl and jq). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Create Mode is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 20k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Create Mode: CCPM Project Management (automazeio/ccpm, 8.4k stars), Ralph Tui Create Beads (subsy/ralph-tui, 2.5k stars), Trellis Brainstorm (anjiemo/SunnyBeach, 178 stars) and Adversarial Spec (zscole/adversarial-spec, 556 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pandazki (a GitHub user) maintains it in pandazki/pneuma-skills, which has 162 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on September 27, 2026.
Source: pandazki/pneuma-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.