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.
Files changed (122) hide show
  1. package/README.md +60 -219
  2. package/bin/pneuma.ts +6 -3
  3. package/dist/assets/{EditorPanel-CkCili9y.js → EditorPanel-CAa1t85z.js} +1 -1
  4. package/dist/assets/{Launcher-DqwqLb8k.js → Launcher-DPtzMHnV.js} +1 -1
  5. package/dist/assets/{ScaffoldConfirm-DFtBa_lc.js → ScaffoldConfirm-B9hljFVZ.js} +1 -1
  6. package/dist/assets/{TerminalPanel-D3ae9W9T.js → TerminalPanel-Qpp9FaLi.js} +1 -1
  7. package/dist/assets/{ar-SA-G6X2FPQ2-aoTcRqom.js → ar-SA-G6X2FPQ2-BWNHcvm1.js} +1 -1
  8. package/dist/assets/{arc-6tb0j2cQ.js → arc-CzjP0N8c.js} +1 -1
  9. package/dist/assets/{az-AZ-76LH7QW2-2-Jb-nI9.js → az-AZ-76LH7QW2-DWYoB7cS.js} +1 -1
  10. package/dist/assets/{bg-BG-XCXSNQG7-2RUMl4Pe.js → bg-BG-XCXSNQG7-CQzhpI20.js} +1 -1
  11. package/dist/assets/{blockDiagram-38ab4fdb-C08zy6ji.js → blockDiagram-38ab4fdb-CK7R49K1.js} +1 -1
  12. package/dist/assets/{bn-BD-2XOGV67Q-Drk_pr0m.js → bn-BD-2XOGV67Q-DMTjHtG1.js} +1 -1
  13. package/dist/assets/{c4Diagram-3d4e48cf-Dfro_iEO.js → c4Diagram-3d4e48cf-BdilvE28.js} +1 -1
  14. package/dist/assets/{ca-ES-6MX7JW3Y-CklUK7AC.js → ca-ES-6MX7JW3Y-CwKhtfcv.js} +1 -1
  15. package/dist/assets/channel-uq9ABcZB.js +1 -0
  16. package/dist/assets/{classDiagram-70f12bd4-au1fDijO.js → classDiagram-70f12bd4-kJCujjIa.js} +1 -1
  17. package/dist/assets/{classDiagram-v2-f2320105-CHX4kCIY.js → classDiagram-v2-f2320105-C_fyI99I.js} +1 -1
  18. package/dist/assets/clone-CabbsEuE.js +1 -0
  19. package/dist/assets/{createText-2e5e7dd3-DeF4LJgF.js → createText-2e5e7dd3-C4Bnt8uA.js} +1 -1
  20. package/dist/assets/{cs-CZ-2BRQDIVT-C2hP98Ap.js → cs-CZ-2BRQDIVT-DANexfPb.js} +1 -1
  21. package/dist/assets/{da-DK-5WZEPLOC-TO1BNf5g.js → da-DK-5WZEPLOC-B35TdRCe.js} +1 -1
  22. package/dist/assets/{de-DE-XR44H4JA-mTWHxyUn.js → de-DE-XR44H4JA-Be9rSUo1.js} +1 -1
  23. package/dist/assets/{download-DVlDTSBQ.js → download-CZAGwG34.js} +1 -1
  24. package/dist/assets/{edges-e0da2a9e-CisZ4Z2w.js → edges-e0da2a9e-CsaxHygh.js} +1 -1
  25. package/dist/assets/{el-GR-BZB4AONW-DwcNPETH.js → el-GR-BZB4AONW-Bem1k8PG.js} +1 -1
  26. package/dist/assets/{erDiagram-9861fffd-rfAnHG4O.js → erDiagram-9861fffd-DGxt2unr.js} +1 -1
  27. package/dist/assets/{es-ES-U4NZUMDT-V4Huly_N.js → es-ES-U4NZUMDT-C6rglr2x.js} +1 -1
  28. package/dist/assets/{eu-ES-A7QVB2H4-BWsnhu7e.js → eu-ES-A7QVB2H4-BmpmJaWV.js} +1 -1
  29. package/dist/assets/{fa-IR-HGAKTJCU-D2AItBY-.js → fa-IR-HGAKTJCU-BXktFz7j.js} +1 -1
  30. package/dist/assets/{fi-FI-Z5N7JZ37-BAn56_vL.js → fi-FI-Z5N7JZ37-DNhkKfIn.js} +1 -1
  31. package/dist/assets/{flowDb-956e92f1-CfVksQtU.js → flowDb-956e92f1-DdWVyJKH.js} +1 -1
  32. package/dist/assets/{flowDiagram-66a62f08-DRJPiYKy.js → flowDiagram-66a62f08-D-uDdj0C.js} +1 -1
  33. package/dist/assets/flowDiagram-v2-96b9c2cf-Bt_lriMj.js +1 -0
  34. package/dist/assets/{flowchart-elk-definition-4a651766-Dnq8ZRcR.js → flowchart-elk-definition-4a651766-C2Wm6Uo6.js} +1 -1
  35. package/dist/assets/{fr-FR-RHASNOE6-CNGba5FC.js → fr-FR-RHASNOE6-CCEwDL8f.js} +1 -1
  36. package/dist/assets/{ganttDiagram-c361ad54-D3gn4XdU.js → ganttDiagram-c361ad54-BJ0tkzFP.js} +1 -1
  37. package/dist/assets/{gitGraphDiagram-72cf32ee-Cew13GHg.js → gitGraphDiagram-72cf32ee-BLDEZRx7.js} +1 -1
  38. package/dist/assets/{gl-ES-HMX3MZ6V-DgKxzO3x.js → gl-ES-HMX3MZ6V-DAVhXBCS.js} +1 -1
  39. package/dist/assets/{graph-B5bxl9Po.js → graph-C2vdYysC.js} +1 -1
  40. package/dist/assets/{he-IL-6SHJWFNN-BcK2qGOG.js → he-IL-6SHJWFNN-Bdi4ekYf.js} +1 -1
  41. package/dist/assets/{hi-IN-IWLTKZ5I-Cf_ZbUI2.js → hi-IN-IWLTKZ5I-jA8UdCpT.js} +1 -1
  42. package/dist/assets/{hu-HU-A5ZG7DT2-BD3U2llq.js → hu-HU-A5ZG7DT2-ohSwhPb7.js} +1 -1
  43. package/dist/assets/{id-ID-SAP4L64H-CSU2g7Uk.js → id-ID-SAP4L64H-t96Bh84G.js} +1 -1
  44. package/dist/assets/{index-3862675e-Gg_FgxU_.js → index-3862675e-DTo2u8F6.js} +1 -1
  45. package/dist/assets/{index-BDQeVgEX.js → index-BEqMoQuH.js} +4 -4
  46. package/dist/assets/{index-Dlp1h6QU.js → index-BTS1TE4_.js} +44 -42
  47. package/dist/assets/{index-BBe-2hUS.js → index-EzohE6LY.js} +1 -1
  48. package/dist/assets/{index-CbeNesx_.js → index-kzWroQwe.js} +1 -1
  49. package/dist/assets/{infoDiagram-f8f76790-DtSrjIIl.js → infoDiagram-f8f76790-Cf6MGxBD.js} +1 -1
  50. package/dist/assets/{it-IT-JPQ66NNP-C8syFJX7.js → it-IT-JPQ66NNP-DrXuw0jq.js} +1 -1
  51. package/dist/assets/{ja-JP-DBVTYXUO-DnEh4rkH.js → ja-JP-DBVTYXUO-Bl-OhsSh.js} +1 -1
  52. package/dist/assets/{journeyDiagram-49397b02-DnUGxg9m.js → journeyDiagram-49397b02-Be0JBMKQ.js} +1 -1
  53. package/dist/assets/{kaa-6HZHGXH3-DLJXmiVv.js → kaa-6HZHGXH3-C2Bb3WoO.js} +1 -1
  54. package/dist/assets/{kab-KAB-ZGHBKWFO-D26_Hzc3.js → kab-KAB-ZGHBKWFO-SRe8xRWY.js} +1 -1
  55. package/dist/assets/{kk-KZ-P5N5QNE5-ClQ6V1VF.js → kk-KZ-P5N5QNE5-Fcn8IsJU.js} +1 -1
  56. package/dist/assets/{km-KH-HSX4SM5Z-CRrzLtz1.js → km-KH-HSX4SM5Z-BtjfG42z.js} +1 -1
  57. package/dist/assets/{ko-KR-MTYHY66A-FRgTSbgy.js → ko-KR-MTYHY66A-DDX4x4Nt.js} +1 -1
  58. package/dist/assets/{ku-TR-6OUDTVRD-BawRUB_1.js → ku-TR-6OUDTVRD-BbM8e8e-.js} +1 -1
  59. package/dist/assets/{layout-DXqPdWyu.js → layout-CMgNEXu6.js} +1 -1
  60. package/dist/assets/{line-DOZbB9NW.js → line-tvuO_7Yr.js} +1 -1
  61. package/dist/assets/{linear-Bax8GgHp.js → linear-DK7elPz3.js} +1 -1
  62. package/dist/assets/{lt-LT-XHIRWOB4-Bw2r2_z3.js → lt-LT-XHIRWOB4-Z1lCAbdg.js} +1 -1
  63. package/dist/assets/{lv-LV-5QDEKY6T-Bu4Su0WT.js → lv-LV-5QDEKY6T-B6s47tei.js} +1 -1
  64. package/dist/assets/{mindmap-definition-fc14e90a-DscgK1-f.js → mindmap-definition-fc14e90a-CHKbCyLk.js} +1 -1
  65. package/dist/assets/{mr-IN-CRQNXWMA-CRJ0xmGQ.js → mr-IN-CRQNXWMA-OS3ybEF3.js} +1 -1
  66. package/dist/assets/{my-MM-5M5IBNSE-Bmb65ty5.js → my-MM-5M5IBNSE-D2mdRTlW.js} +1 -1
  67. package/dist/assets/{nb-NO-T6EIAALU-C6RTGh6s.js → nb-NO-T6EIAALU-C6vYxQ23.js} +1 -1
  68. package/dist/assets/{nl-NL-IS3SIHDZ-B4dO7uNR.js → nl-NL-IS3SIHDZ-zz9TjXmm.js} +1 -1
  69. package/dist/assets/{nn-NO-6E72VCQL-BNZyohwh.js → nn-NO-6E72VCQL-DLiOmvrC.js} +1 -1
  70. package/dist/assets/{oc-FR-POXYY2M6-BkV96V66.js → oc-FR-POXYY2M6-Bd4n_F_x.js} +1 -1
  71. package/dist/assets/{pa-IN-N4M65BXN-SIxi6-Qu.js → pa-IN-N4M65BXN-COFAhWBw.js} +1 -1
  72. package/dist/assets/{percentages-BXMCSKIN-DXLdmtqJ.js → percentages-BXMCSKIN-C6fJ51YY.js} +7 -7
  73. package/dist/assets/{pica-BgcrYgrv.js → pica-CLGR0JK_.js} +1 -1
  74. package/dist/assets/{pieDiagram-8a3498a8-B76KeLcQ.js → pieDiagram-8a3498a8-BkqLE0tJ.js} +1 -1
  75. package/dist/assets/{pl-PL-T2D74RX3-H1nfaJtx.js → pl-PL-T2D74RX3-CDn2rBV9.js} +1 -1
  76. package/dist/assets/{pneuma-mode-BRCJVLHc.js → pneuma-mode-2MxmS-Fv.js} +1 -1
  77. package/dist/assets/{pneuma-mode-CEUSV7WU.js → pneuma-mode-BJBY9uMq.js} +1 -1
  78. package/dist/assets/{pneuma-mode-Djnvhd-o.js → pneuma-mode-BiSrfXNA.js} +3 -3
  79. package/dist/assets/{pneuma-mode-oXBxz5pN.js → pneuma-mode-Bk-3KmZu.js} +1 -1
  80. package/dist/assets/{pneuma-mode-Dc9sTRDq.js → pneuma-mode-CejBlfQb.js} +3 -3
  81. package/dist/assets/{pneuma-mode-BI84uyqb.js → pneuma-mode-N-9vdwVq.js} +1 -1
  82. package/dist/assets/{pt-BR-5N22H2LF-DwkZTOCG.js → pt-BR-5N22H2LF-DoESDDP6.js} +1 -1
  83. package/dist/assets/{pt-PT-UZXXM6DQ-BCrZeHqr.js → pt-PT-UZXXM6DQ-DV1Te1rI.js} +1 -1
  84. package/dist/assets/{quadrantDiagram-120e2f19-938-BMAh.js → quadrantDiagram-120e2f19-BxxktVci.js} +1 -1
  85. package/dist/assets/{rasterize-34PCWURX-BBciumKo.js → rasterize-34PCWURX-Dso6mHUh.js} +1 -1
  86. package/dist/assets/{requirementDiagram-deff3bca-1_i7qVyw.js → requirementDiagram-deff3bca-CEiWC0fZ.js} +1 -1
  87. package/dist/assets/{ro-RO-JPDTUUEW-BIVVudYS.js → ro-RO-JPDTUUEW-aK503wOT.js} +1 -1
  88. package/dist/assets/{ru-RU-B4JR7IUQ-BYpEJhsG.js → ru-RU-B4JR7IUQ-BkIfKUcm.js} +1 -1
  89. package/dist/assets/{sankeyDiagram-04a897e0-BQ4KaO__.js → sankeyDiagram-04a897e0-CVJ1sfxy.js} +1 -1
  90. package/dist/assets/{sequenceDiagram-704730f1-BFWj2cLS.js → sequenceDiagram-704730f1-CS5lPOk6.js} +1 -1
  91. package/dist/assets/{si-LK-N5RQ5JYF-kw6QQHv5.js → si-LK-N5RQ5JYF-B0GJpq86.js} +1 -1
  92. package/dist/assets/{sk-SK-C5VTKIMK-BfrP2yt1.js → sk-SK-C5VTKIMK-B8MXfTnM.js} +1 -1
  93. package/dist/assets/{sl-SI-NN7IZMDC-YCfmYwoj.js → sl-SI-NN7IZMDC-3KkYUyOt.js} +1 -1
  94. package/dist/assets/{stateDiagram-587899a1-CjvBkP0Q.js → stateDiagram-587899a1-C6AeaLK5.js} +1 -1
  95. package/dist/assets/{stateDiagram-v2-d93cdb3a-XLyDN5Dd.js → stateDiagram-v2-d93cdb3a-BRYseiIF.js} +1 -1
  96. package/dist/assets/{styles-6aaf32cf-CiGJA06D.js → styles-6aaf32cf-I4t-E1_y.js} +1 -1
  97. package/dist/assets/{styles-9a916d00-D_iZbqcE.js → styles-9a916d00-BOagg6mp.js} +1 -1
  98. package/dist/assets/{styles-c10674c1-2cwpVQP8.js → styles-c10674c1-BtorGord.js} +1 -1
  99. package/dist/assets/{subset-shared.chunk-DfWECsI3.js → subset-shared.chunk-B8NSkcEd.js} +1 -1
  100. package/dist/assets/{subset-worker.chunk-DLktTlB7.js → subset-worker.chunk-93T5GQEZ.js} +1 -1
  101. package/dist/assets/{sv-SE-XGPEYMSR-CVpZTPZg.js → sv-SE-XGPEYMSR-DPPcnsAm.js} +1 -1
  102. package/dist/assets/{svgDrawCommon-08f97a94-Cyv66GJz.js → svgDrawCommon-08f97a94-Bw-BG40U.js} +1 -1
  103. package/dist/assets/{ta-IN-2NMHFXQM-DWu580UL.js → ta-IN-2NMHFXQM-DekmkHR3.js} +1 -1
  104. package/dist/assets/{th-TH-HPSO5L25-9dzcKGwC.js → th-TH-HPSO5L25-BD22SRAl.js} +1 -1
  105. package/dist/assets/{timeline-definition-85554ec2-BFH4IG4U.js → timeline-definition-85554ec2-C9YxHJfD.js} +1 -1
  106. package/dist/assets/{toBlob-BMSQCuU3.js → toBlob-Bg7-ptq-.js} +1 -1
  107. package/dist/assets/{toCanvas-B-YMBBBx.js → toCanvas-B3MKxE25.js} +1 -1
  108. package/dist/assets/{toImg-BGDN0RWi.js → toImg-LqrZ3YJg.js} +1 -1
  109. package/dist/assets/{tr-TR-DEFEU3FU-CHj5mqsj.js → tr-TR-DEFEU3FU-DKzK1Mb2.js} +1 -1
  110. package/dist/assets/{uk-UA-QMV73CPH-4QucgtOt.js → uk-UA-QMV73CPH-NBTsjMS-.js} +1 -1
  111. package/dist/assets/{vi-VN-M7AON7JQ-CBoHJz9i.js → vi-VN-M7AON7JQ-0TkryFyL.js} +1 -1
  112. package/dist/assets/{xychartDiagram-e933f94c-LMlImx_F.js → xychartDiagram-e933f94c-DUfRAOiK.js} +1 -1
  113. package/dist/assets/{zh-CN-LNUGB5OW-CWIte384.js → zh-CN-LNUGB5OW-DsY4Y_MD.js} +1 -1
  114. package/dist/assets/{zh-HK-E62DVLB3-hdfJ07eL.js → zh-HK-E62DVLB3-BaZ_MRbW.js} +1 -1
  115. package/dist/assets/{zh-TW-RAJ6MFWO-BrILxL2K.js → zh-TW-RAJ6MFWO-CQCBmYe5.js} +1 -1
  116. package/dist/index.html +1 -1
  117. package/package.json +1 -1
  118. package/server/index.ts +4 -1
  119. package/server/mode-maker-routes.ts +65 -26
  120. package/dist/assets/channel-DAWkc4TK.js +0 -1
  121. package/dist/assets/clone-CjdjvubP.js +0 -1
  122. 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 this **isomorphic collaboration**, built atop mainstream code agents (currently [Claude Code](https://docs.anthropic.com/en/docs/claude-code)):
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
- **Skills** Domain-specific knowledge and seed templates injected into the agent per mode. A presentation skill teaches layout, rhythm, and export; a document skill teaches prose and structure. Skills version and evolve with each release, and sessions persist across runs — the agent picks up where it left off.
26
-
27
- **Continuous Learning** Skills aren't static presets. The Evolution Agent mines cross-session conversation history to extract user preferences and style patterns, then augments the preset skill with learned knowledge. Run `pneuma evolve <mode>` to analyze your history, review AI-generated proposals with evidence citations, and apply them to personalize your experience.
28
-
29
- **Distribution** A complete ecosystem for sharing capabilities. Build a custom mode with AI assistance via Mode Maker, publish to the marketplace, and let anyone `pneuma mode add` it instantly.
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, element selection, export |
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 — showcasing viewer extensibility with a rich third-party component |
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
- ## Prerequisites
46
+ ## Getting Started
47
+
48
+ ### Desktop App (recommended)
49
+
50
+ Download the latest release for your platform:
43
51
 
44
- - [Bun](https://bun.sh) >= 1.3.5 (required for PTY terminal support)
45
- - [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code) installed and authenticated (`claude` command available in PATH)
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
- ## Quick Start
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
- # Install Bun if you haven't: curl -fsSL https://bun.sh/install | bash
63
+ # Prerequisites: Bun >= 1.3.5, Claude Code CLI
51
64
 
52
- # Open the Launcher (marketplace UI — browse, discover, resume sessions)
65
+ # Open the Launcher (marketplace UI)
53
66
  bunx pneuma-skills
54
67
 
55
- # Start with a fresh workspace (recommended)
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 (files will be created here)
71
+ # Or use the current directory
59
72
  bunx pneuma-skills doc
60
73
  ```
61
74
 
62
- Or install from source:
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
- This will:
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 — 17 AI design commands, responsive preview, export
86
- slide HTML presentations — content sets, drag-reorder, presenter mode, export
87
- doc Markdown with live preview — simplest mode, minimal example of the mode system
88
- draw Excalidraw canvas — viewer extensibility showcase with third-party component
89
- mode-maker Create and develop custom modes with AI
90
- evolve Launch the Evolution Agent for skill learning
91
- /path/to/mode Load mode from a local directory
92
- github:user/repo Load mode from a GitHub repository
93
- github:user/repo#branch Load mode from a specific branch/tag
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: current directory)
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
- --no-prompt Non-interactive mode (used by launcher)
101
- --skip-skill Skip skill installation (session resume without update)
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 to ~/.pneuma/modes/
108
- mode list List published modes on the R2 registry
109
- mode publish Publish the current workspace as a mode
110
- snapshot push Upload workspace snapshot to R2
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
- Launcher (marketplace UI)
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 — "what capability, what config, what UI"
128
+ │ ModeManifest — skill + viewer config + agent prefs
154
129
  ├─────────────────────────────────────────────────────────┤
155
130
  │ Layer 3: Content Viewer │
156
- │ ViewerContract — "how to render, select, align"
131
+ │ ViewerContract — render, select, agent-callable actions
157
132
  ├─────────────────────────────────────────────────────────┤
158
133
  │ Layer 2: Agent Bridge │
159
- │ AgentBackend — "how to launch, communicate, lifecycle"
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
- The server maintains dual WebSocket channels:
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** | Declares skill, viewer config, agent preferences, init seeds | Add new modes (mindmap, canvas, etc.) |
177
- | **ViewerContract** | Preview component, context extraction, file workspace model, agent-callable actions | Custom renderers, viewport tracking, action protocols |
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
- | Styling | [Tailwind CSS](https://tailwindcss.com) 4 |
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
- | File Watching | [chokidar](https://github.com/paulmillr/chokidar) 4 |
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
- const coreIdx = abs.indexOf("/core/");
1027
- if (coreIdx !== -1 && !abs.startsWith(PROJECT_ROOT)) {
1028
- return { path: PROJECT_ROOT + abs.slice(coreIdx) };
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
  },