pneuma-skills 2.3.7 → 2.3.9
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/README.md +60 -219
- package/bin/pneuma.ts +6 -3
- package/dist/assets/{EditorPanel-CkCili9y.js → EditorPanel-CAa1t85z.js} +1 -1
- package/dist/assets/{Launcher-DqwqLb8k.js → Launcher-DPtzMHnV.js} +1 -1
- package/dist/assets/{ScaffoldConfirm-DFtBa_lc.js → ScaffoldConfirm-B9hljFVZ.js} +1 -1
- package/dist/assets/{TerminalPanel-D3ae9W9T.js → TerminalPanel-Qpp9FaLi.js} +1 -1
- package/dist/assets/{ar-SA-G6X2FPQ2-aoTcRqom.js → ar-SA-G6X2FPQ2-BWNHcvm1.js} +1 -1
- package/dist/assets/{arc-6tb0j2cQ.js → arc-CzjP0N8c.js} +1 -1
- package/dist/assets/{az-AZ-76LH7QW2-2-Jb-nI9.js → az-AZ-76LH7QW2-DWYoB7cS.js} +1 -1
- package/dist/assets/{bg-BG-XCXSNQG7-2RUMl4Pe.js → bg-BG-XCXSNQG7-CQzhpI20.js} +1 -1
- package/dist/assets/{blockDiagram-38ab4fdb-C08zy6ji.js → blockDiagram-38ab4fdb-CK7R49K1.js} +1 -1
- package/dist/assets/{bn-BD-2XOGV67Q-Drk_pr0m.js → bn-BD-2XOGV67Q-DMTjHtG1.js} +1 -1
- package/dist/assets/{c4Diagram-3d4e48cf-Dfro_iEO.js → c4Diagram-3d4e48cf-BdilvE28.js} +1 -1
- package/dist/assets/{ca-ES-6MX7JW3Y-CklUK7AC.js → ca-ES-6MX7JW3Y-CwKhtfcv.js} +1 -1
- package/dist/assets/channel-uq9ABcZB.js +1 -0
- package/dist/assets/{classDiagram-70f12bd4-au1fDijO.js → classDiagram-70f12bd4-kJCujjIa.js} +1 -1
- package/dist/assets/{classDiagram-v2-f2320105-CHX4kCIY.js → classDiagram-v2-f2320105-C_fyI99I.js} +1 -1
- package/dist/assets/clone-CabbsEuE.js +1 -0
- package/dist/assets/{createText-2e5e7dd3-DeF4LJgF.js → createText-2e5e7dd3-C4Bnt8uA.js} +1 -1
- package/dist/assets/{cs-CZ-2BRQDIVT-C2hP98Ap.js → cs-CZ-2BRQDIVT-DANexfPb.js} +1 -1
- package/dist/assets/{da-DK-5WZEPLOC-TO1BNf5g.js → da-DK-5WZEPLOC-B35TdRCe.js} +1 -1
- package/dist/assets/{de-DE-XR44H4JA-mTWHxyUn.js → de-DE-XR44H4JA-Be9rSUo1.js} +1 -1
- package/dist/assets/{download-DVlDTSBQ.js → download-CZAGwG34.js} +1 -1
- package/dist/assets/{edges-e0da2a9e-CisZ4Z2w.js → edges-e0da2a9e-CsaxHygh.js} +1 -1
- package/dist/assets/{el-GR-BZB4AONW-DwcNPETH.js → el-GR-BZB4AONW-Bem1k8PG.js} +1 -1
- package/dist/assets/{erDiagram-9861fffd-rfAnHG4O.js → erDiagram-9861fffd-DGxt2unr.js} +1 -1
- package/dist/assets/{es-ES-U4NZUMDT-V4Huly_N.js → es-ES-U4NZUMDT-C6rglr2x.js} +1 -1
- package/dist/assets/{eu-ES-A7QVB2H4-BWsnhu7e.js → eu-ES-A7QVB2H4-BmpmJaWV.js} +1 -1
- package/dist/assets/{fa-IR-HGAKTJCU-D2AItBY-.js → fa-IR-HGAKTJCU-BXktFz7j.js} +1 -1
- package/dist/assets/{fi-FI-Z5N7JZ37-BAn56_vL.js → fi-FI-Z5N7JZ37-DNhkKfIn.js} +1 -1
- package/dist/assets/{flowDb-956e92f1-CfVksQtU.js → flowDb-956e92f1-DdWVyJKH.js} +1 -1
- package/dist/assets/{flowDiagram-66a62f08-DRJPiYKy.js → flowDiagram-66a62f08-D-uDdj0C.js} +1 -1
- package/dist/assets/flowDiagram-v2-96b9c2cf-Bt_lriMj.js +1 -0
- package/dist/assets/{flowchart-elk-definition-4a651766-Dnq8ZRcR.js → flowchart-elk-definition-4a651766-C2Wm6Uo6.js} +1 -1
- package/dist/assets/{fr-FR-RHASNOE6-CNGba5FC.js → fr-FR-RHASNOE6-CCEwDL8f.js} +1 -1
- package/dist/assets/{ganttDiagram-c361ad54-D3gn4XdU.js → ganttDiagram-c361ad54-BJ0tkzFP.js} +1 -1
- package/dist/assets/{gitGraphDiagram-72cf32ee-Cew13GHg.js → gitGraphDiagram-72cf32ee-BLDEZRx7.js} +1 -1
- package/dist/assets/{gl-ES-HMX3MZ6V-DgKxzO3x.js → gl-ES-HMX3MZ6V-DAVhXBCS.js} +1 -1
- package/dist/assets/{graph-B5bxl9Po.js → graph-C2vdYysC.js} +1 -1
- package/dist/assets/{he-IL-6SHJWFNN-BcK2qGOG.js → he-IL-6SHJWFNN-Bdi4ekYf.js} +1 -1
- package/dist/assets/{hi-IN-IWLTKZ5I-Cf_ZbUI2.js → hi-IN-IWLTKZ5I-jA8UdCpT.js} +1 -1
- package/dist/assets/{hu-HU-A5ZG7DT2-BD3U2llq.js → hu-HU-A5ZG7DT2-ohSwhPb7.js} +1 -1
- package/dist/assets/{id-ID-SAP4L64H-CSU2g7Uk.js → id-ID-SAP4L64H-t96Bh84G.js} +1 -1
- package/dist/assets/{index-3862675e-Gg_FgxU_.js → index-3862675e-DTo2u8F6.js} +1 -1
- package/dist/assets/{index-BDQeVgEX.js → index-BEqMoQuH.js} +4 -4
- package/dist/assets/{index-Dlp1h6QU.js → index-BTS1TE4_.js} +44 -42
- package/dist/assets/{index-BBe-2hUS.js → index-EzohE6LY.js} +1 -1
- package/dist/assets/{index-CbeNesx_.js → index-kzWroQwe.js} +1 -1
- package/dist/assets/{infoDiagram-f8f76790-DtSrjIIl.js → infoDiagram-f8f76790-Cf6MGxBD.js} +1 -1
- package/dist/assets/{it-IT-JPQ66NNP-C8syFJX7.js → it-IT-JPQ66NNP-DrXuw0jq.js} +1 -1
- package/dist/assets/{ja-JP-DBVTYXUO-DnEh4rkH.js → ja-JP-DBVTYXUO-Bl-OhsSh.js} +1 -1
- package/dist/assets/{journeyDiagram-49397b02-DnUGxg9m.js → journeyDiagram-49397b02-Be0JBMKQ.js} +1 -1
- package/dist/assets/{kaa-6HZHGXH3-DLJXmiVv.js → kaa-6HZHGXH3-C2Bb3WoO.js} +1 -1
- package/dist/assets/{kab-KAB-ZGHBKWFO-D26_Hzc3.js → kab-KAB-ZGHBKWFO-SRe8xRWY.js} +1 -1
- package/dist/assets/{kk-KZ-P5N5QNE5-ClQ6V1VF.js → kk-KZ-P5N5QNE5-Fcn8IsJU.js} +1 -1
- package/dist/assets/{km-KH-HSX4SM5Z-CRrzLtz1.js → km-KH-HSX4SM5Z-BtjfG42z.js} +1 -1
- package/dist/assets/{ko-KR-MTYHY66A-FRgTSbgy.js → ko-KR-MTYHY66A-DDX4x4Nt.js} +1 -1
- package/dist/assets/{ku-TR-6OUDTVRD-BawRUB_1.js → ku-TR-6OUDTVRD-BbM8e8e-.js} +1 -1
- package/dist/assets/{layout-DXqPdWyu.js → layout-CMgNEXu6.js} +1 -1
- package/dist/assets/{line-DOZbB9NW.js → line-tvuO_7Yr.js} +1 -1
- package/dist/assets/{linear-Bax8GgHp.js → linear-DK7elPz3.js} +1 -1
- package/dist/assets/{lt-LT-XHIRWOB4-Bw2r2_z3.js → lt-LT-XHIRWOB4-Z1lCAbdg.js} +1 -1
- package/dist/assets/{lv-LV-5QDEKY6T-Bu4Su0WT.js → lv-LV-5QDEKY6T-B6s47tei.js} +1 -1
- package/dist/assets/{mindmap-definition-fc14e90a-DscgK1-f.js → mindmap-definition-fc14e90a-CHKbCyLk.js} +1 -1
- package/dist/assets/{mr-IN-CRQNXWMA-CRJ0xmGQ.js → mr-IN-CRQNXWMA-OS3ybEF3.js} +1 -1
- package/dist/assets/{my-MM-5M5IBNSE-Bmb65ty5.js → my-MM-5M5IBNSE-D2mdRTlW.js} +1 -1
- package/dist/assets/{nb-NO-T6EIAALU-C6RTGh6s.js → nb-NO-T6EIAALU-C6vYxQ23.js} +1 -1
- package/dist/assets/{nl-NL-IS3SIHDZ-B4dO7uNR.js → nl-NL-IS3SIHDZ-zz9TjXmm.js} +1 -1
- package/dist/assets/{nn-NO-6E72VCQL-BNZyohwh.js → nn-NO-6E72VCQL-DLiOmvrC.js} +1 -1
- package/dist/assets/{oc-FR-POXYY2M6-BkV96V66.js → oc-FR-POXYY2M6-Bd4n_F_x.js} +1 -1
- package/dist/assets/{pa-IN-N4M65BXN-SIxi6-Qu.js → pa-IN-N4M65BXN-COFAhWBw.js} +1 -1
- package/dist/assets/{percentages-BXMCSKIN-DXLdmtqJ.js → percentages-BXMCSKIN-C6fJ51YY.js} +7 -7
- package/dist/assets/{pica-BgcrYgrv.js → pica-CLGR0JK_.js} +1 -1
- package/dist/assets/{pieDiagram-8a3498a8-B76KeLcQ.js → pieDiagram-8a3498a8-BkqLE0tJ.js} +1 -1
- package/dist/assets/{pl-PL-T2D74RX3-H1nfaJtx.js → pl-PL-T2D74RX3-CDn2rBV9.js} +1 -1
- package/dist/assets/{pneuma-mode-BRCJVLHc.js → pneuma-mode-2MxmS-Fv.js} +1 -1
- package/dist/assets/{pneuma-mode-CEUSV7WU.js → pneuma-mode-BJBY9uMq.js} +1 -1
- package/dist/assets/{pneuma-mode-Djnvhd-o.js → pneuma-mode-BiSrfXNA.js} +3 -3
- package/dist/assets/{pneuma-mode-oXBxz5pN.js → pneuma-mode-Bk-3KmZu.js} +1 -1
- package/dist/assets/{pneuma-mode-Dc9sTRDq.js → pneuma-mode-CejBlfQb.js} +3 -3
- package/dist/assets/{pneuma-mode-BI84uyqb.js → pneuma-mode-N-9vdwVq.js} +1 -1
- package/dist/assets/{pt-BR-5N22H2LF-DwkZTOCG.js → pt-BR-5N22H2LF-DoESDDP6.js} +1 -1
- package/dist/assets/{pt-PT-UZXXM6DQ-BCrZeHqr.js → pt-PT-UZXXM6DQ-DV1Te1rI.js} +1 -1
- package/dist/assets/{quadrantDiagram-120e2f19-938-BMAh.js → quadrantDiagram-120e2f19-BxxktVci.js} +1 -1
- package/dist/assets/{rasterize-34PCWURX-BBciumKo.js → rasterize-34PCWURX-Dso6mHUh.js} +1 -1
- package/dist/assets/{requirementDiagram-deff3bca-1_i7qVyw.js → requirementDiagram-deff3bca-CEiWC0fZ.js} +1 -1
- package/dist/assets/{ro-RO-JPDTUUEW-BIVVudYS.js → ro-RO-JPDTUUEW-aK503wOT.js} +1 -1
- package/dist/assets/{ru-RU-B4JR7IUQ-BYpEJhsG.js → ru-RU-B4JR7IUQ-BkIfKUcm.js} +1 -1
- package/dist/assets/{sankeyDiagram-04a897e0-BQ4KaO__.js → sankeyDiagram-04a897e0-CVJ1sfxy.js} +1 -1
- package/dist/assets/{sequenceDiagram-704730f1-BFWj2cLS.js → sequenceDiagram-704730f1-CS5lPOk6.js} +1 -1
- package/dist/assets/{si-LK-N5RQ5JYF-kw6QQHv5.js → si-LK-N5RQ5JYF-B0GJpq86.js} +1 -1
- package/dist/assets/{sk-SK-C5VTKIMK-BfrP2yt1.js → sk-SK-C5VTKIMK-B8MXfTnM.js} +1 -1
- package/dist/assets/{sl-SI-NN7IZMDC-YCfmYwoj.js → sl-SI-NN7IZMDC-3KkYUyOt.js} +1 -1
- package/dist/assets/{stateDiagram-587899a1-CjvBkP0Q.js → stateDiagram-587899a1-C6AeaLK5.js} +1 -1
- package/dist/assets/{stateDiagram-v2-d93cdb3a-XLyDN5Dd.js → stateDiagram-v2-d93cdb3a-BRYseiIF.js} +1 -1
- package/dist/assets/{styles-6aaf32cf-CiGJA06D.js → styles-6aaf32cf-I4t-E1_y.js} +1 -1
- package/dist/assets/{styles-9a916d00-D_iZbqcE.js → styles-9a916d00-BOagg6mp.js} +1 -1
- package/dist/assets/{styles-c10674c1-2cwpVQP8.js → styles-c10674c1-BtorGord.js} +1 -1
- package/dist/assets/{subset-shared.chunk-DfWECsI3.js → subset-shared.chunk-B8NSkcEd.js} +1 -1
- package/dist/assets/{subset-worker.chunk-DLktTlB7.js → subset-worker.chunk-93T5GQEZ.js} +1 -1
- package/dist/assets/{sv-SE-XGPEYMSR-CVpZTPZg.js → sv-SE-XGPEYMSR-DPPcnsAm.js} +1 -1
- package/dist/assets/{svgDrawCommon-08f97a94-Cyv66GJz.js → svgDrawCommon-08f97a94-Bw-BG40U.js} +1 -1
- package/dist/assets/{ta-IN-2NMHFXQM-DWu580UL.js → ta-IN-2NMHFXQM-DekmkHR3.js} +1 -1
- package/dist/assets/{th-TH-HPSO5L25-9dzcKGwC.js → th-TH-HPSO5L25-BD22SRAl.js} +1 -1
- package/dist/assets/{timeline-definition-85554ec2-BFH4IG4U.js → timeline-definition-85554ec2-C9YxHJfD.js} +1 -1
- package/dist/assets/{toBlob-BMSQCuU3.js → toBlob-Bg7-ptq-.js} +1 -1
- package/dist/assets/{toCanvas-B-YMBBBx.js → toCanvas-B3MKxE25.js} +1 -1
- package/dist/assets/{toImg-BGDN0RWi.js → toImg-LqrZ3YJg.js} +1 -1
- package/dist/assets/{tr-TR-DEFEU3FU-CHj5mqsj.js → tr-TR-DEFEU3FU-DKzK1Mb2.js} +1 -1
- package/dist/assets/{uk-UA-QMV73CPH-4QucgtOt.js → uk-UA-QMV73CPH-NBTsjMS-.js} +1 -1
- package/dist/assets/{vi-VN-M7AON7JQ-CBoHJz9i.js → vi-VN-M7AON7JQ-0TkryFyL.js} +1 -1
- package/dist/assets/{xychartDiagram-e933f94c-LMlImx_F.js → xychartDiagram-e933f94c-DUfRAOiK.js} +1 -1
- package/dist/assets/{zh-CN-LNUGB5OW-CWIte384.js → zh-CN-LNUGB5OW-DsY4Y_MD.js} +1 -1
- package/dist/assets/{zh-HK-E62DVLB3-hdfJ07eL.js → zh-HK-E62DVLB3-BaZ_MRbW.js} +1 -1
- package/dist/assets/{zh-TW-RAJ6MFWO-BrILxL2K.js → zh-TW-RAJ6MFWO-CQCBmYe5.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/server/index.ts +4 -1
- package/server/mode-maker-routes.ts +65 -26
- package/dist/assets/channel-DAWkc4TK.js +0 -1
- package/dist/assets/clone-CjdjvubP.js +0 -1
- package/dist/assets/flowDiagram-v2-96b9c2cf-CbW2Vsid.js +0 -1
package/README.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/images/pneuma-logo-helix_2.png" alt="Pneuma" width="120" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
1
5
|
<h1 align="center">Pneuma Skills</h1>
|
|
2
6
|
<p align="center"><strong>Co-creation Infrastructure for Humans × Code Agents</strong></p>
|
|
3
7
|
<p align="center">Visual environment, skills, continuous learning, and distribution — <br>everything humans and agents need to build content together.</p>
|
|
@@ -5,6 +9,7 @@
|
|
|
5
9
|
<p align="center">
|
|
6
10
|
<a href="https://www.npmjs.com/package/pneuma-skills"><img src="https://img.shields.io/npm/v/pneuma-skills.svg" alt="npm version" /></a>
|
|
7
11
|
<a href="https://www.npmjs.com/package/pneuma-skills"><img src="https://img.shields.io/npm/dm/pneuma-skills.svg" alt="npm downloads" /></a>
|
|
12
|
+
<a href="https://github.com/pandazki/pneuma-skills/releases"><img src="https://img.shields.io/github/v/release/pandazki/pneuma-skills?label=desktop" alt="Desktop release" /></a>
|
|
8
13
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License" /></a>
|
|
9
14
|
</p>
|
|
10
15
|
|
|
@@ -18,48 +23,57 @@
|
|
|
18
23
|
|
|
19
24
|
> **"pneuma"** — Greek *pneuma*, meaning soul, breath, life force.
|
|
20
25
|
|
|
21
|
-
When humans and code agents co-create content, they need more than a chat window — they need shared infrastructure. Pneuma provides four pillars for
|
|
22
|
-
|
|
23
|
-
**Visual Environment** — The agent edits files on disk; you see, select, and guide the rendered result in a live, bidirectional workspace. Both human and agent operate on the same content representation in real-time.
|
|
26
|
+
When humans and code agents co-create content, they need more than a chat window — they need shared infrastructure. Pneuma provides four pillars for **isomorphic collaboration**, built atop mainstream code agents (currently [Claude Code](https://docs.anthropic.com/en/docs/claude-code)):
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
**
|
|
28
|
-
|
|
29
|
-
**
|
|
28
|
+
| Pillar | What it does |
|
|
29
|
+
|--------|-------------|
|
|
30
|
+
| **Visual Environment** | Agent edits files on disk; you see, select, and guide the rendered result in a live, bidirectional workspace |
|
|
31
|
+
| **Skills** | Domain-specific knowledge and seed templates injected per mode. Sessions persist across runs — the agent picks up where it left off |
|
|
32
|
+
| **Continuous Learning** | Evolution Agent mines conversation history to extract preferences, then augments skills with learned knowledge |
|
|
33
|
+
| **Distribution** | Build custom modes with AI via Mode Maker, publish to the marketplace, share with `pneuma mode add` |
|
|
30
34
|
|
|
31
35
|
## Built-in Modes
|
|
32
36
|
|
|
33
37
|
| Mode | What it does |
|
|
34
38
|
|------|-------------|
|
|
35
|
-
| **webcraft** | Live web development with [Impeccable](https://impeccable.style) AI design intelligence — 17 design commands, responsive preview,
|
|
39
|
+
| **webcraft** | Live web development with [Impeccable](https://impeccable.style) AI design intelligence — 17 design commands, responsive preview, export |
|
|
36
40
|
| **slide** | HTML presentations — content sets, drag-reorder, presenter mode, PDF/image export |
|
|
37
41
|
| **doc** | Markdown documents with live preview — the simplest mode, a minimal example of the mode system |
|
|
38
|
-
| **draw** | Diagrams and visual thinking on an [Excalidraw](https://excalidraw.com) canvas
|
|
42
|
+
| **draw** | Diagrams and visual thinking on an [Excalidraw](https://excalidraw.com) canvas |
|
|
39
43
|
| **mode-maker** | Create custom modes with AI — fork, play-test, publish |
|
|
40
44
|
| **evolve** | Evolution Agent — analyze history, propose skill improvements, apply/rollback |
|
|
41
45
|
|
|
42
|
-
##
|
|
46
|
+
## Getting Started
|
|
47
|
+
|
|
48
|
+
### Desktop App (recommended)
|
|
49
|
+
|
|
50
|
+
Download the latest release for your platform:
|
|
43
51
|
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
| Platform | Download |
|
|
53
|
+
|----------|----------|
|
|
54
|
+
| macOS (Apple Silicon + Intel) | [`.dmg`](https://github.com/pandazki/pneuma-skills/releases/latest) |
|
|
55
|
+
| Windows x64 | [`.exe` installer](https://github.com/pandazki/pneuma-skills/releases/latest) |
|
|
56
|
+
| Linux x64 | [`.AppImage`](https://github.com/pandazki/pneuma-skills/releases/latest) / [`.deb`](https://github.com/pandazki/pneuma-skills/releases/latest) |
|
|
46
57
|
|
|
47
|
-
|
|
58
|
+
The desktop app bundles Bun — no runtime install needed. Just install [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) and you're ready to go.
|
|
59
|
+
|
|
60
|
+
### CLI
|
|
48
61
|
|
|
49
62
|
```bash
|
|
50
|
-
#
|
|
63
|
+
# Prerequisites: Bun >= 1.3.5, Claude Code CLI
|
|
51
64
|
|
|
52
|
-
# Open the Launcher (marketplace UI
|
|
65
|
+
# Open the Launcher (marketplace UI)
|
|
53
66
|
bunx pneuma-skills
|
|
54
67
|
|
|
55
|
-
# Start with a fresh workspace
|
|
68
|
+
# Start a mode with a fresh workspace
|
|
56
69
|
bunx pneuma-skills slide --workspace ./my-first-pneuma-slide
|
|
57
70
|
|
|
58
|
-
# Or use the current directory
|
|
71
|
+
# Or use the current directory
|
|
59
72
|
bunx pneuma-skills doc
|
|
60
73
|
```
|
|
61
74
|
|
|
62
|
-
|
|
75
|
+
<details>
|
|
76
|
+
<summary><strong>Install from source</strong></summary>
|
|
63
77
|
|
|
64
78
|
```bash
|
|
65
79
|
git clone https://github.com/pandazki/pneuma-skills.git
|
|
@@ -68,12 +82,7 @@ bun install
|
|
|
68
82
|
bun run dev doc --workspace ~/my-notes
|
|
69
83
|
```
|
|
70
84
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
1. Load the Doc Mode manifest and install its skill prompt into `<workspace>/.claude/skills/`
|
|
74
|
-
2. Start the Pneuma server on `http://localhost:17996`
|
|
75
|
-
3. Spawn a Claude Code CLI session connected via WebSocket
|
|
76
|
-
4. Open your browser with the editor UI
|
|
85
|
+
</details>
|
|
77
86
|
|
|
78
87
|
## CLI Usage
|
|
79
88
|
|
|
@@ -82,241 +91,73 @@ pneuma-skills [mode] [options]
|
|
|
82
91
|
|
|
83
92
|
Modes:
|
|
84
93
|
(no argument) Open the Launcher (marketplace UI)
|
|
85
|
-
webcraft Web design with Impeccable.style
|
|
86
|
-
slide HTML presentations
|
|
87
|
-
doc Markdown with live preview
|
|
88
|
-
draw Excalidraw canvas
|
|
89
|
-
mode-maker Create
|
|
90
|
-
evolve Launch the Evolution Agent
|
|
91
|
-
/path/to/mode Load
|
|
92
|
-
github:user/repo Load
|
|
93
|
-
|
|
94
|
-
https://...tar.gz Load mode from a URL
|
|
94
|
+
webcraft Web design with Impeccable.style
|
|
95
|
+
slide HTML presentations
|
|
96
|
+
doc Markdown with live preview
|
|
97
|
+
draw Excalidraw canvas
|
|
98
|
+
mode-maker Create custom modes with AI
|
|
99
|
+
evolve Launch the Evolution Agent
|
|
100
|
+
/path/to/mode Load from a local directory
|
|
101
|
+
github:user/repo Load from GitHub
|
|
102
|
+
https://...tar.gz Load from URL
|
|
95
103
|
|
|
96
104
|
Options:
|
|
97
|
-
--workspace <path> Target workspace directory (default:
|
|
105
|
+
--workspace <path> Target workspace directory (default: cwd)
|
|
98
106
|
--port <number> Server port (default: 17996)
|
|
99
107
|
--no-open Don't auto-open the browser
|
|
100
|
-
--
|
|
101
|
-
--
|
|
102
|
-
--debug Enable debug mode (inspect enriched CLI payloads)
|
|
108
|
+
--skip-skill Skip skill installation
|
|
109
|
+
--debug Enable debug mode
|
|
103
110
|
--dev Force dev mode (Vite)
|
|
104
111
|
|
|
105
112
|
Subcommands:
|
|
106
113
|
evolve <mode> Analyze history and propose skill improvements
|
|
107
|
-
mode add <url> Install a remote mode
|
|
108
|
-
mode list List published modes
|
|
109
|
-
mode publish Publish
|
|
110
|
-
snapshot push
|
|
111
|
-
snapshot pull Download workspace snapshot from R2
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Remote / External Modes
|
|
115
|
-
|
|
116
|
-
Pneuma supports loading modes from outside the built-in `modes/` directory:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
# Load from a local directory (must contain manifest.ts and pneuma-mode.ts)
|
|
120
|
-
bunx pneuma-skills /path/to/my-custom-mode --workspace ~/project
|
|
121
|
-
|
|
122
|
-
# Load from a GitHub repository
|
|
123
|
-
bunx pneuma-skills github:pandazki/pneuma-mode-canvas --workspace ~/project
|
|
124
|
-
|
|
125
|
-
# Load from a specific branch or tag
|
|
126
|
-
bunx pneuma-skills github:pandazki/pneuma-mode-canvas#develop --workspace ~/project
|
|
127
|
-
|
|
128
|
-
# Install a published mode from URL
|
|
129
|
-
pneuma mode add https://example.com/my-mode.tar.gz
|
|
114
|
+
mode add <url> Install a remote mode
|
|
115
|
+
mode list List published modes
|
|
116
|
+
mode publish Publish current workspace as a mode
|
|
117
|
+
snapshot push/pull Upload/download workspace snapshot
|
|
130
118
|
```
|
|
131
119
|
|
|
132
|
-
GitHub repositories are cloned to `~/.pneuma/modes/` and cached locally. Subsequent runs will fetch the latest changes. Published modes can be browsed in the Launcher or installed via `pneuma mode add`.
|
|
133
|
-
|
|
134
|
-
A mode package must contain:
|
|
135
|
-
- `manifest.ts` — default export of `ModeManifest`
|
|
136
|
-
- `pneuma-mode.ts` — default export of `ModeDefinition`
|
|
137
|
-
- `viewer/` — React preview components
|
|
138
|
-
- `skill/` — Skill files (optional)
|
|
139
|
-
|
|
140
120
|
## Architecture
|
|
141
121
|
|
|
142
|
-
Pneuma is organized in four layers, each with a clear contract boundary:
|
|
143
|
-
|
|
144
122
|
```
|
|
145
123
|
┌─────────────────────────────────────────────────────────┐
|
|
146
|
-
│
|
|
124
|
+
│ Desktop / Launcher │
|
|
147
125
|
│ Browse → Discover → Launch → Resume │
|
|
148
126
|
├─────────────────────────────────────────────────────────┤
|
|
149
|
-
│ Mode Resolution │
|
|
150
|
-
│ builtin | local | github | url → manifest.ts on disk │
|
|
151
|
-
├─────────────────────────────────────────────────────────┤
|
|
152
127
|
│ Layer 4: Mode Protocol │
|
|
153
|
-
│ ModeManifest —
|
|
128
|
+
│ ModeManifest — skill + viewer config + agent prefs │
|
|
154
129
|
├─────────────────────────────────────────────────────────┤
|
|
155
130
|
│ Layer 3: Content Viewer │
|
|
156
|
-
│ ViewerContract —
|
|
131
|
+
│ ViewerContract — render, select, agent-callable actions│
|
|
157
132
|
├─────────────────────────────────────────────────────────┤
|
|
158
133
|
│ Layer 2: Agent Bridge │
|
|
159
|
-
│ AgentBackend —
|
|
134
|
+
│ AgentBackend — launch, communicate, lifecycle │
|
|
160
135
|
├─────────────────────────────────────────────────────────┤
|
|
161
136
|
│ Layer 1: Runtime Shell │
|
|
162
137
|
│ HTTP, WebSocket, PTY, File Watch, Frontend │
|
|
163
138
|
└─────────────────────────────────────────────────────────┘
|
|
164
139
|
```
|
|
165
140
|
|
|
166
|
-
|
|
167
|
-
- **Browser channel** (`/ws/browser/:sessionId`) — JSON messages for the React UI
|
|
168
|
-
- **CLI channel** (`/ws/cli/:sessionId`) — NDJSON messages for Claude Code's `--sdk-url` protocol
|
|
169
|
-
|
|
170
|
-
When Claude Code edits files, chokidar detects the changes and pushes updated content to the browser for live preview.
|
|
171
|
-
|
|
172
|
-
## Three Core Contracts
|
|
141
|
+
Three core contracts in `core/types/`:
|
|
173
142
|
|
|
174
143
|
| Contract | Responsibility | Extend to... |
|
|
175
144
|
|----------|---------------|-------------|
|
|
176
|
-
| **ModeManifest** |
|
|
177
|
-
| **ViewerContract** | Preview component, context extraction,
|
|
145
|
+
| **ModeManifest** | Skill, viewer config, agent preferences, init seeds | New modes (mindmap, canvas, etc.) |
|
|
146
|
+
| **ViewerContract** | Preview component, context extraction, action protocol | Custom renderers, viewport tracking |
|
|
178
147
|
| **AgentBackend** | Launch, resume, kill, capability declaration | Other agents (Codex, Aider) |
|
|
179
148
|
|
|
180
|
-
Contracts are defined in `core/types/` with 316 tests across 20 test files.
|
|
181
|
-
|
|
182
|
-
## Project Structure
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
pneuma-skills/
|
|
186
|
-
├── bin/pneuma.ts # CLI entry — orchestrates mode + agent + server
|
|
187
|
-
├── core/
|
|
188
|
-
│ ├── types/ # Contract definitions
|
|
189
|
-
│ │ ├── mode-manifest.ts # ModeManifest, SkillConfig, ViewerConfig, ViewerApi
|
|
190
|
-
│ │ ├── viewer-contract.ts # ViewerContract, FileWorkspaceModel, ViewerAction*
|
|
191
|
-
│ │ ├── agent-backend.ts # AgentBackend, AgentCapabilities
|
|
192
|
-
│ │ ├── mode-definition.ts # ModeDefinition (manifest + viewer)
|
|
193
|
-
│ │ └── index.ts # Re-exports
|
|
194
|
-
│ ├── mode-loader.ts # Dynamic mode discovery and loading (builtin + external)
|
|
195
|
-
│ ├── mode-resolver.ts # Mode source resolution (builtin/local/github/url)
|
|
196
|
-
│ └── __tests__/ # Contract tests
|
|
197
|
-
├── modes/
|
|
198
|
-
│ ├── doc/ # Doc Mode — markdown editing
|
|
199
|
-
│ ├── slide/ # Slide Mode — presentation editing
|
|
200
|
-
│ ├── draw/ # Draw Mode — Excalidraw whiteboard
|
|
201
|
-
│ ├── webcraft/ # WebCraft Mode — live web dev + Impeccable design AI
|
|
202
|
-
│ ├── mode-maker/ # Mode Maker — create custom modes with AI
|
|
203
|
-
│ └── evolve/ # Evolve Mode — evolution agent dashboard
|
|
204
|
-
│ ├── manifest.ts # Mode manifest (fork, play, publish workflow)
|
|
205
|
-
│ ├── seed/ # Template files for new modes
|
|
206
|
-
│ ├── skill/ # Skill prompt for mode development
|
|
207
|
-
│ └── viewer/ # Mode development preview UI
|
|
208
|
-
├── backends/
|
|
209
|
-
│ └── claude-code/
|
|
210
|
-
│ ├── index.ts # ClaudeCodeBackend implements AgentBackend
|
|
211
|
-
│ └── cli-launcher.ts # Process spawner (Bun.spawn + --sdk-url)
|
|
212
|
-
├── server/
|
|
213
|
-
│ ├── index.ts # Hono HTTP server + WS routing + content/viewer APIs
|
|
214
|
-
│ ├── ws-bridge.ts # Dual WebSocket bridge (browser JSON ↔ CLI NDJSON)
|
|
215
|
-
│ ├── ws-bridge-viewer.ts # Viewer action request/response routing
|
|
216
|
-
│ ├── ws-bridge-*.ts # Controls, replay, browser handlers, types
|
|
217
|
-
│ ├── file-watcher.ts # chokidar watcher (manifest-driven patterns)
|
|
218
|
-
│ ├── skill-installer.ts # Copies skill prompts + template engine
|
|
219
|
-
│ ├── terminal-manager.ts # PTY terminal sessions
|
|
220
|
-
│ ├── path-resolver.ts # Binary PATH resolution (cross-platform)
|
|
221
|
-
│ ├── system-bridge.ts # OS-level operations (open, reveal, openUrl)
|
|
222
|
-
│ ├── mode-maker-routes.ts # Mode Maker API routes (fork, play, publish, reset)
|
|
223
|
-
│ ├── evolution-agent.ts # Evolution Agent launcher (spawns CC with analysis tools)
|
|
224
|
-
│ ├── evolution-proposal.ts # Proposal CRUD + apply/rollback + CLAUDE.md sync
|
|
225
|
-
│ └── evolution-routes.ts # Evolution API routes (/api/evolve/*)
|
|
226
|
-
├── src/
|
|
227
|
-
│ ├── App.tsx # Root layout (dynamic viewer from store)
|
|
228
|
-
│ ├── store.ts # Zustand state (session, messages, viewer)
|
|
229
|
-
│ ├── ws.ts # Browser WebSocket client
|
|
230
|
-
│ └── components/
|
|
231
|
-
│ ├── Launcher.tsx # Mode marketplace + recent sessions + local modes
|
|
232
|
-
│ ├── ChatPanel.tsx # Chat message feed
|
|
233
|
-
│ ├── ChatInput.tsx # Message composer with image upload
|
|
234
|
-
│ ├── MessageBubble.tsx # Rich messages (markdown, tools, thinking, context card)
|
|
235
|
-
│ ├── ContextPanel.tsx # Session stats, tasks, MCP servers, tools
|
|
236
|
-
│ ├── TerminalPanel.tsx # Integrated xterm.js terminal
|
|
237
|
-
│ ├── ToolBlock.tsx # Expandable tool call cards
|
|
238
|
-
│ ├── PermissionBanner.tsx # Tool permission approval UI
|
|
239
|
-
│ └── TopBar.tsx # Tabs (Chat/Context/Terminal) + status
|
|
240
|
-
├── snapshot/ # Snapshot push/pull via Cloudflare R2
|
|
241
|
-
│ ├── push.ts # Pack and upload workspace
|
|
242
|
-
│ ├── pull.ts # Download and extract workspace
|
|
243
|
-
│ ├── r2.ts # R2 storage client
|
|
244
|
-
│ └── mode-publish.ts # Mode package publishing to R2 registry
|
|
245
|
-
└── docs/
|
|
246
|
-
├── adr/ # Architecture Decision Records
|
|
247
|
-
├── images/ # Screenshots and visual assets
|
|
248
|
-
└── archive/ # Completed design docs & references
|
|
249
|
-
```
|
|
250
|
-
|
|
251
149
|
## Tech Stack
|
|
252
150
|
|
|
253
151
|
| Layer | Technology |
|
|
254
152
|
|-------|-----------|
|
|
255
153
|
| Runtime | [Bun](https://bun.sh) >= 1.3.5 |
|
|
256
154
|
| Server | [Hono](https://hono.dev) |
|
|
257
|
-
| Frontend | React 19 + [Vite](https://vite.dev) 6 |
|
|
258
|
-
|
|
|
259
|
-
| State | [Zustand](https://zustand.docs.pmnd.rs) 5 |
|
|
260
|
-
| Markdown | [react-markdown](https://github.com/remarkjs/react-markdown) + remark-gfm |
|
|
155
|
+
| Frontend | React 19 + [Vite](https://vite.dev) 6 + [Tailwind CSS](https://tailwindcss.com) 4 |
|
|
156
|
+
| Desktop | [Electron](https://www.electronjs.org) 35 + electron-builder + electron-updater |
|
|
261
157
|
| Terminal | [xterm.js](https://xtermjs.org) + Bun native PTY |
|
|
262
|
-
|
|
|
263
|
-
| Drawing | [Excalidraw](https://excalidraw.com) 0.18 |
|
|
158
|
+
| Drawing | [Excalidraw](https://excalidraw.com) |
|
|
264
159
|
| Agent | [Claude Code](https://docs.anthropic.com/en/docs/claude-code) via `--sdk-url` |
|
|
265
160
|
|
|
266
|
-
## Features
|
|
267
|
-
|
|
268
|
-
- **Launcher marketplace UI** — Browse builtin, published, and local modes; one-click launch or resume
|
|
269
|
-
- **Live visual workspace** — Agent edits files, you see rendered results instantly in a bidirectional canvas
|
|
270
|
-
- **Mode Maker** — Create and develop custom modes with AI assistance (fork, play-test, publish)
|
|
271
|
-
- **Content sets** — Multiple content sets per workspace with unread change indicators
|
|
272
|
-
- **WebCraft + Impeccable** — 17 AI design commands, responsive viewport preview, export to HTML/ZIP/PDF
|
|
273
|
-
- **Next-gen visual design** — Ethereal Tech aesthetic with glassmorphism, neon orange accents, cinematic dark UI
|
|
274
|
-
- **Export & capture** — Slide export to HTML/images via `@zumer/snapdom`
|
|
275
|
-
- **Launcher process management** — Monitor and kill child processes spawned from the launcher
|
|
276
|
-
- **Element selection** — Click any block to select it, then instruct changes on that specific element
|
|
277
|
-
- **Inline editing** — Edit content directly in the preview (edit mode)
|
|
278
|
-
- **Rich chat UI** — Streaming text, expandable tool calls, collapsible thinking, context visualization
|
|
279
|
-
- **Integrated terminal** — Full PTY terminal with xterm.js
|
|
280
|
-
- **Session history** — Persist sessions, resume with one-click, skill update detection on resume
|
|
281
|
-
- **Local mode management** — Install modes via `pneuma mode add`, delete from launcher UI
|
|
282
|
-
- **Mode publishing** — Publish custom modes to R2 registry via `pneuma mode publish`
|
|
283
|
-
- **Permission control** — Review and approve/deny tool use requests
|
|
284
|
-
- **Task tracking** — Visualize Claude's TodoWrite/TaskCreate progress
|
|
285
|
-
- **Background processes** — Monitor long-running background commands
|
|
286
|
-
- **Context visualization** — Rich `/context` card with category breakdown and stacked bar
|
|
287
|
-
- **Image upload** — Drag & drop or paste images into chat
|
|
288
|
-
- **Viewer context enrichment** — `<viewer-context>` XML blocks align agent perception with user viewport
|
|
289
|
-
- **Viewer action protocol** — Agent can invoke viewer capabilities (navigate, toggle UI, capture)
|
|
290
|
-
- **Evolution Agent** — `pneuma evolve <mode>` analyzes conversation history, proposes skill improvements with evidence
|
|
291
|
-
- **Proposal lifecycle** — Review, apply, rollback, discard, or fork proposals into custom modes
|
|
292
|
-
- **Windows compatibility** — Cross-platform PATH resolution, terminal, browser opening, process management
|
|
293
|
-
- **Debug mode** — `--debug` flag shows enriched CLI payloads for each message
|
|
294
|
-
|
|
295
|
-
## Roadmap
|
|
296
|
-
|
|
297
|
-
- [x] Doc Mode — Markdown editing with live visual preview
|
|
298
|
-
- [x] Slide Mode — Presentation editing with iframe preview, drag-reorder, AI image generation
|
|
299
|
-
- [x] Draw Mode — Excalidraw whiteboard with `.excalidraw` file editing
|
|
300
|
-
- [x] Element selection & inline editing
|
|
301
|
-
- [x] Session persistence & resume
|
|
302
|
-
- [x] Terminal, tasks, context panel
|
|
303
|
-
- [x] v1.0 contract architecture (ModeManifest, ViewerContract, AgentBackend)
|
|
304
|
-
- [x] ViewerContract v2 — Agent-Human alignment protocol (workspace model, action protocol, context enrichment)
|
|
305
|
-
- [x] Remote mode loading — `pneuma github:user/repo` or local path
|
|
306
|
-
- [x] Launcher marketplace UI — Browse, discover, launch, resume sessions
|
|
307
|
-
- [x] Mode Maker — Create custom modes with AI (fork, play-test, publish)
|
|
308
|
-
- [x] Mode publishing — `pneuma mode publish` to R2 registry
|
|
309
|
-
- [x] Windows compatibility — Cross-platform PATH, terminal, browser, process management
|
|
310
|
-
- [x] Content sets — Multiple content sets per workspace with unread indicators
|
|
311
|
-
- [x] WebCraft Mode — Live web development with Impeccable.style AI design intelligence
|
|
312
|
-
- [x] Launcher process management — Monitor and kill child processes
|
|
313
|
-
- [x] Next-gen visual redesign — Ethereal Tech aesthetic (glassmorphism, cinematic dark UI)
|
|
314
|
-
- [x] Export & image capture — Slide export via `@zumer/snapdom`
|
|
315
|
-
- [x] Evolution Agent — AI-native continuous skill learning (`pneuma evolve <mode>`)
|
|
316
|
-
- [x] Skill effectiveness optimization — standardized claudeMdSection + YAML frontmatter for native skill discovery
|
|
317
|
-
- [ ] Additional agent backends — Codex CLI, custom agents
|
|
318
|
-
- [ ] In-session adaptation — agent refines its approach in real-time based on feedback within a session
|
|
319
|
-
|
|
320
161
|
## Acknowledgements
|
|
321
162
|
|
|
322
163
|
This project's WebSocket bridge, NDJSON protocol handling, and chat UI rendering are heavily ~~inspired by~~ copied from [Companion](https://github.com/The-Vibe-Company/companion) by The Vibe Company. To be honest, the entire technical approach was basically Claude Code reading Companion's source code and reproducing it here. We stand on the shoulders of giants — or more accurately, we asked an AI to stand on their shoulders for us.
|
package/bin/pneuma.ts
CHANGED
|
@@ -1023,9 +1023,12 @@ async function main() {
|
|
|
1023
1023
|
return;
|
|
1024
1024
|
}
|
|
1025
1025
|
const abs = resolve(dirname(args.importer), args.path);
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1026
|
+
// Redirect imports that reference pneuma project internals (core/, src/)
|
|
1027
|
+
for (const prefix of ["/core/", "/src/"]) {
|
|
1028
|
+
const idx = abs.indexOf(prefix);
|
|
1029
|
+
if (idx !== -1 && !abs.startsWith(PROJECT_ROOT)) {
|
|
1030
|
+
return { path: PROJECT_ROOT + abs.slice(idx) };
|
|
1031
|
+
}
|
|
1029
1032
|
}
|
|
1030
1033
|
});
|
|
1031
1034
|
},
|