npcsh 1.1.22__tar.gz → 1.1.23__tar.gz

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 (159) hide show
  1. {npcsh-1.1.22/npcsh.egg-info → npcsh-1.1.23}/PKG-INFO +168 -7
  2. {npcsh-1.1.22 → npcsh-1.1.23}/README.md +167 -6
  3. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/_state.py +272 -120
  4. npcsh-1.1.23/npcsh/benchmark/npcsh_agent.py +172 -0
  5. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/benchmark/templates/install-npcsh.sh.j2 +12 -4
  6. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/config.py +5 -2
  7. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/alicanto.npc +4 -8
  8. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/corca.npc +5 -11
  9. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/frederic.npc +4 -6
  10. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/guac.npc +4 -4
  11. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/delegate.jinx +1 -1
  12. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/edit_file.jinx +1 -1
  13. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sh.jinx +1 -1
  14. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/core/skill.jinx +59 -0
  15. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/help.jinx +236 -0
  16. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/init.jinx +532 -0
  17. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/jinxs.jinx +0 -1
  18. npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils/serve.jinx +943 -0
  19. npcsh-1.1.22/npcsh/npc_team/jinxs/modes/config_tui.jinx → npcsh-1.1.23/npcsh/npc_team/jinxs/modes/config.jinx +1 -1
  20. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/convene.jinx +76 -3
  21. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/crond.jinx +818 -0
  22. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/plonk.jinx +76 -14
  23. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/roll.jinx +378 -0
  24. npcsh-1.1.23/npcsh/npc_team/jinxs/modes/skills.jinx +621 -0
  25. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/yap.jinx +504 -30
  26. npcsh-1.1.23/npcsh/npc_team/jinxs/skills/code-review/SKILL.md +45 -0
  27. npcsh-1.1.23/npcsh/npc_team/jinxs/skills/debugging/SKILL.md +44 -0
  28. npcsh-1.1.23/npcsh/npc_team/jinxs/skills/git-workflow.jinx +44 -0
  29. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/kadiefa.npc +4 -5
  30. npcsh-1.1.23/npcsh/npc_team/npcsh.ctx +34 -0
  31. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/plonk.npc +5 -9
  32. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/sibiji.npc +13 -5
  33. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npcsh.py +1 -0
  34. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/routes.py +0 -4
  35. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/yap.py +22 -4
  36. {npcsh-1.1.22 → npcsh-1.1.23/npcsh.egg-info}/PKG-INFO +168 -7
  37. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh.egg-info/SOURCES.txt +8 -20
  38. {npcsh-1.1.22 → npcsh-1.1.23}/setup.py +1 -1
  39. npcsh-1.1.22/npcsh/benchmark/npcsh_agent.py +0 -335
  40. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/add_tab.jinx +0 -11
  41. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/close_pane.jinx +0 -9
  42. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/close_tab.jinx +0 -10
  43. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/confirm.jinx +0 -10
  44. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/focus_pane.jinx +0 -9
  45. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/list_panes.jinx +0 -8
  46. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/navigate.jinx +0 -10
  47. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/notify.jinx +0 -10
  48. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/open_pane.jinx +0 -13
  49. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/read_pane.jinx +0 -9
  50. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/run_terminal.jinx +0 -10
  51. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/send_message.jinx +0 -10
  52. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/split_pane.jinx +0 -12
  53. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/switch_npc.jinx +0 -10
  54. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/switch_tab.jinx +0 -10
  55. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/write_file.jinx +0 -11
  56. npcsh-1.1.22/npcsh/npc_team/jinxs/incognide/zen_mode.jinx +0 -9
  57. npcsh-1.1.22/npcsh/npc_team/jinxs/lib/core/convene.jinx +0 -232
  58. npcsh-1.1.22/npcsh/npc_team/jinxs/lib/utils/help.jinx +0 -52
  59. npcsh-1.1.22/npcsh/npc_team/jinxs/lib/utils/init.jinx +0 -41
  60. npcsh-1.1.22/npcsh/npc_team/jinxs/lib/utils/serve.jinx +0 -26
  61. npcsh-1.1.22/npcsh/npc_team/jinxs/modes/roll.jinx +0 -65
  62. npcsh-1.1.22/npcsh/npc_team/npcsh.ctx +0 -18
  63. {npcsh-1.1.22 → npcsh-1.1.23}/LICENSE +0 -0
  64. {npcsh-1.1.22 → npcsh-1.1.23}/MANIFEST.in +0 -0
  65. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/__init__.py +0 -0
  66. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/alicanto.py +0 -0
  67. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/benchmark/__init__.py +0 -0
  68. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/benchmark/runner.py +0 -0
  69. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/build.py +0 -0
  70. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/completion.py +0 -0
  71. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/conversation_viewer.py +0 -0
  72. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/corca.py +0 -0
  73. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/diff_viewer.py +0 -0
  74. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/execution.py +0 -0
  75. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/guac.py +0 -0
  76. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/mcp_helpers.py +0 -0
  77. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/mcp_server.py +0 -0
  78. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc.py +0 -0
  79. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/alicanto.png +0 -0
  80. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/corca.png +0 -0
  81. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/corca_example.png +0 -0
  82. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/frederic4.png +0 -0
  83. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/guac.png +0 -0
  84. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/browser_action.jinx +0 -0
  85. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/browser_screenshot.jinx +0 -0
  86. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/close_browser.jinx +0 -0
  87. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/browser/open_browser.jinx +0 -0
  88. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/click.jinx +0 -0
  89. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/key_press.jinx +0 -0
  90. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/launch_app.jinx +0 -0
  91. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/screenshot.jinx +0 -0
  92. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/trigger.jinx +0 -0
  93. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/type_text.jinx +0 -0
  94. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/computer_use/wait.jinx +0 -0
  95. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/compress.jinx +0 -0
  96. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/load_file.jinx +0 -0
  97. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/ots.jinx +0 -0
  98. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/paste.jinx +0 -0
  99. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/python.jinx +0 -0
  100. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sample.jinx +0 -0
  101. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/db_search.jinx +0 -0
  102. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/file_search.jinx +0 -0
  103. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/search/web_search.jinx +0 -0
  104. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sleep.jinx +0 -0
  105. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/core/sql.jinx +0 -0
  106. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/benchmark.jinx +0 -0
  107. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/chat.jinx +0 -0
  108. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/cmd.jinx +0 -0
  109. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/compile.jinx +0 -0
  110. {npcsh-1.1.22/npcsh/npc_team/jinxs/incognide → npcsh-1.1.23/npcsh/npc_team/jinxs/lib/utils}/incognide.jinx +0 -0
  111. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/models.jinx +0 -0
  112. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/set.jinx +0 -0
  113. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/setup.jinx +0 -0
  114. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/shh.jinx +0 -0
  115. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/switch.jinx +0 -0
  116. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/switches.jinx +0 -0
  117. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/sync.jinx +0 -0
  118. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/teamviz.jinx +0 -0
  119. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/usage.jinx +0 -0
  120. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/lib/utils/verbose.jinx +0 -0
  121. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/alicanto.jinx +0 -0
  122. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/arxiv.jinx +0 -0
  123. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/build.jinx +0 -0
  124. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/corca.jinx +0 -0
  125. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/git.jinx +0 -0
  126. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/guac.jinx +0 -0
  127. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/kg.jinx +0 -0
  128. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/memories.jinx +0 -0
  129. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/nql.jinx +0 -0
  130. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/papers.jinx +0 -0
  131. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/pti.jinx +0 -0
  132. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/reattach.jinx +0 -0
  133. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/spool.jinx +0 -0
  134. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/team.jinx +0 -0
  135. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/vixynt.jinx +0 -0
  136. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/jinxs/modes/wander.jinx +0 -0
  137. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/kadiefa.png +0 -0
  138. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/npcsh_sibiji.png +0 -0
  139. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/plonk.png +0 -0
  140. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/plonkjr.png +0 -0
  141. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/sibiji.png +0 -0
  142. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/spool.png +0 -0
  143. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/npc_team/yap.png +0 -0
  144. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/parsing.py +0 -0
  145. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/plonk.py +0 -0
  146. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/pti.py +0 -0
  147. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/salmon_simulation.py +0 -0
  148. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/spool.py +0 -0
  149. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/ui.py +0 -0
  150. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh/wander.py +0 -0
  151. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh.egg-info/dependency_links.txt +0 -0
  152. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh.egg-info/entry_points.txt +0 -0
  153. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh.egg-info/requires.txt +0 -0
  154. {npcsh-1.1.22 → npcsh-1.1.23}/npcsh.egg-info/top_level.txt +0 -0
  155. {npcsh-1.1.22 → npcsh-1.1.23}/project/__init__.py +0 -0
  156. {npcsh-1.1.22 → npcsh-1.1.23}/setup.cfg +0 -0
  157. {npcsh-1.1.22 → npcsh-1.1.23}/tests/test_config.py +0 -0
  158. {npcsh-1.1.22 → npcsh-1.1.23}/tests/test_jinxs.py +0 -0
  159. {npcsh-1.1.22 → npcsh-1.1.23}/tests/test_tool_routing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: npcsh
3
- Version: 1.1.22
3
+ Version: 1.1.23
4
4
  Summary: npcsh is a command-line toolkit for using AI agents in novel ways.
5
5
  Home-page: https://github.com/NPC-Worldwide/npcsh
6
6
  Author: Christopher Agostino
@@ -167,10 +167,11 @@ Once installed, run `npcsh` to enter the NPC shell. The pip installation also pr
167
167
  - **Computer Use**
168
168
 
169
169
  ```bash
170
- /plonk 'find out the latest news on cnn' gemma3:12b ollama
170
+ /plonk
171
171
  ```
172
172
  <p align="center">
173
- <img src="gh_images/plonk.png" alt="Plonk GUI automation TUI", width=500>
173
+ <img src="gh_images/plonk.png" alt="Plonk GUI automation TUI — task entry" width=500>
174
+ <img src="gh_images/plonk_task.png" alt="Plonk GUI automation — completed flight search task" width=500>
174
175
  </p>
175
176
 
176
177
  - **Generate Images with Vixynt**
@@ -189,11 +190,14 @@ Once installed, run `npcsh` to enter the NPC shell. The pip installation also pr
189
190
  <p align="center">
190
191
  <img src="https://raw.githubusercontent.com/npc-worldwide/npcsh/main/test_data/rabbit.PNG" alt="a rabbit eating ham in the bring of dawn", width=350>
191
192
  </p>
192
- - **Generate Videos**
193
+ - **Generate Videos with Roll**
193
194
 
194
195
  ```bash
195
196
  /roll
196
197
  ```
198
+ <p align="center">
199
+ <img src="gh_images/roll.png" alt="Roll Video Creation Studio" width=500>
200
+ </p>
197
201
 
198
202
  - Generate videos directly
199
203
 
@@ -205,6 +209,16 @@ Once installed, run `npcsh` to enter the NPC shell. The pip installation also pr
205
209
  <img src="https://raw.githubusercontent.com/NPC-Worldwide/npcsh/main/test_data/hatridingdog.gif" alt="video of a hat riding a dog", width=350>
206
210
  </p>
207
211
 
212
+ - **Multi-Agent Discussions**
213
+
214
+ ```bash
215
+ /convene "Is the universe a simulation?" npcs=alicanto,corca,guac rounds=3
216
+ ```
217
+ <p align="center">
218
+ <img src="gh_images/convene.png" alt="Convene — multi-NPC structured discussion" width=500>
219
+ <img src="gh_images/convene_convene.png" alt="Convene — live discussion view" width=500>
220
+ </p>
221
+
208
222
  - **Serve an NPC Team**
209
223
  ```bash
210
224
  /serve --port 5337 --cors='http://localhost:5137/'
@@ -288,6 +302,108 @@ When an NPC is invoked, they can only use the jinxs assigned to them. This creat
288
302
 
289
303
  The forenpc (orchestrator) can delegate to any team member based on their specialization.
290
304
 
305
+ ## Skills — Knowledge Content for Agents
306
+
307
+ Skills are jinxs that serve instructional content instead of executing code. They use the `skill.jinx` sub-jinx (just like code jinxs use `python.jinx` or `sh.jinx`) and return sections of methodology on demand.
308
+
309
+ Because skills are jinxs, they're assigned to agents the same way — through the `jinxs:` list in `.npc` files:
310
+
311
+ ```yaml
312
+ # reviewer.npc
313
+ name: reviewer
314
+ primary_directive: "You review code and provide feedback."
315
+ jinxs:
316
+ - lib/core/sh
317
+ - lib/core/python
318
+ - skills/code-review
319
+ - skills/debugging
320
+ ```
321
+
322
+ The agent sees `code-review` and `debugging` in its tool catalog alongside `sh` and `python`. When it encounters a review task, it calls the skill to get methodology, then uses `sh` or `python` to do the actual work.
323
+
324
+ ### Two Authoring Formats
325
+
326
+ **SKILL.md folder** — a folder with a `SKILL.md` file (folder name = skill name):
327
+
328
+ ```
329
+ jinxs/skills/debugging/
330
+ SKILL.md # YAML frontmatter + ## sections
331
+ scripts/ # Optional
332
+ references/ # Optional
333
+ ```
334
+
335
+ ```markdown
336
+ ---
337
+ description: Debugging methodology. Use when asked to debug or troubleshoot.
338
+ ---
339
+ # Debugging
340
+
341
+ ## reproduce
342
+ First, reproduce the bug consistently.
343
+ Find the minimal reproduction case.
344
+
345
+ ## isolate
346
+ Binary search through the codebase (git bisect).
347
+ Comment out components to isolate the cause.
348
+
349
+ ## fix
350
+ Fix the root cause, not the symptom.
351
+ Add a test that fails without the fix.
352
+ ```
353
+
354
+ **`.jinx` file** — a regular jinx with `engine: skill` steps:
355
+
356
+ ```yaml
357
+ jinx_name: git-workflow
358
+ description: "Git workflow best practices. [Sections: branching, commits, merging]"
359
+ inputs:
360
+ - section: all
361
+ steps:
362
+ - engine: skill
363
+ skill_name: git-workflow
364
+ skill_description: Git workflow best practices.
365
+ sections:
366
+ branching: |
367
+ Use feature branches off main/develop.
368
+ Name branches: feature/, fix/, chore/
369
+ commits: |
370
+ Imperative summary under 72 chars.
371
+ One logical change per commit.
372
+ merging: |
373
+ Prefer squash merges for feature branches.
374
+ Delete branches after merging.
375
+ scripts_json: '[]'
376
+ references_json: '[]'
377
+ assets_json: '[]'
378
+ section: '{{section}}'
379
+ ```
380
+
381
+ ### Using Skills
382
+
383
+ In npcsh, skills work as slash commands like any jinx:
384
+
385
+ ```bash
386
+ /debugging # All sections
387
+ /debugging -s reproduce # Just the reproduce section
388
+ /debugging -s list # Available section names
389
+ /code-review -s correctness # Just the correctness section
390
+ ```
391
+
392
+ In the agent loop, the agent calls skills automatically when relevant — requesting specific sections to minimize token usage (progressive disclosure).
393
+
394
+ ### Importing External Skills
395
+
396
+ Add `SKILLS_DIRECTORY` to your `.ctx` file to load skills from an external directory:
397
+
398
+ ```yaml
399
+ model: llama3.2
400
+ provider: ollama
401
+ forenpc: lead-dev
402
+ SKILLS_DIRECTORY: ~/shared-skills
403
+ ```
404
+
405
+ All `SKILL.md` folders and `.jinx` skill files in that directory are loaded alongside the team's own jinxs. This lets you maintain a single skills library shared across multiple teams.
406
+
291
407
  ## Delegation with Review Loop
292
408
 
293
409
  The `/delegate` jinx sends a task to another NPC with automatic review and feedback:
@@ -581,14 +697,15 @@ npc sample "a sunset over mountains"
581
697
  | `/git` | Git integration TUI |
582
698
  | `/build` | Build team to deployable format (flask, docker, cli, static) |
583
699
  | `/team` | Team config browser — context, NPCs, jinxs |
584
- | `/config_tui` | Interactive config editor |
700
+ | `/config` | Interactive config editor |
585
701
  | `/reattach` | Resume previous conversation sessions |
586
702
  | `/delegate` | Delegate task to NPC with review loop |
587
703
  | `/web_search` | Web search |
588
704
  | `/db_search` | Database search |
589
705
  | `/file_search` | File search |
590
706
  | `/vixynt` | Generate/edit images |
591
- | `/roll` | Generate videos |
707
+ | `/roll` | Video creation studio |
708
+ | `/crond` | System task manager (cron, daemons, processes) |
592
709
  | `/sample` | Context-free LLM prompt |
593
710
  | `/serve` | Serve NPC team as API with OpenAI-compatible endpoints |
594
711
  | `/compile` | Compile NPC profiles |
@@ -642,6 +759,44 @@ Browse all available models across providers (Ollama, OpenAI, Anthropic, etc.),
642
759
  <img src="gh_images/models.png" alt="Models browser", width=500>
643
760
  </p>
644
761
 
762
+ ### `/roll` — Video Creation Studio
763
+ Interactive TUI for generating videos with parameter controls. Edit prompt, model, provider, dimensions, and frame count, then generate. Includes a gallery browser for previously generated videos.
764
+
765
+ ```bash
766
+ /roll # Open interactive TUI
767
+ /roll "a sunset" # Generate video directly (one-shot mode)
768
+ ```
769
+
770
+ <p align="center">
771
+ <img src="gh_images/roll.png" alt="Roll Video Creation Studio" width=500>
772
+ </p>
773
+
774
+ ### `/config` — Configuration Editor
775
+ Interactive TUI for editing `~/.npcshrc` settings — models, providers, modes, and toggles. Navigate with j/k, edit text fields, toggle booleans, and cycle choices.
776
+
777
+ ```bash
778
+ /config
779
+ ```
780
+
781
+ <p align="center">
782
+ <img src="gh_images/config.png" alt="Config editor TUI" width=500>
783
+ </p>
784
+
785
+ ### `/crond` — System Task Manager
786
+ Multi-tab TUI for managing cron jobs, systemd user daemons, and system processes. Create new cron jobs and daemons using natural language, start/stop/restart services, kill processes, and monitor resource usage.
787
+
788
+ ```bash
789
+ /crond
790
+ ```
791
+
792
+ <p align="center">
793
+ <img src="gh_images/crond.png" alt="Crond Cron tab" width=500>
794
+ <img src="gh_images/crondaemon.png" alt="Crond Daemons tab" width=500>
795
+ </p>
796
+ <p align="center">
797
+ <img src="gh_images/cron_processes.png" alt="Crond Processes tab" width=500>
798
+ </p>
799
+
645
800
  # Memory & Knowledge Graph
646
801
 
647
802
  `npcsh` maintains a memory lifecycle system that allows agents to learn and grow from past interactions. Memories progress through stages and can be incorporated into a knowledge graph for advanced retrieval.
@@ -893,8 +1048,14 @@ export PERPLEXITY_API_KEY='your_perplexity_key'
893
1048
  npc_team/
894
1049
  ├── jinxs/
895
1050
  │ ├── modes/ # TUI modes (alicanto, corca, kg, yap, etc.)
1051
+ │ ├── skills/ # Skills — knowledge-content jinxs
1052
+ │ │ ├── code-review/ # SKILL.md folder format
1053
+ │ │ │ └── SKILL.md
1054
+ │ │ ├── debugging/
1055
+ │ │ │ └── SKILL.md
1056
+ │ │ └── git-workflow.jinx # .jinx format
896
1057
  │ ├── lib/
897
- │ │ ├── core/ # Core tools (python, sh, sql, edit_file, delegate, etc.)
1058
+ │ │ ├── core/ # Core tools (python, sh, sql, skill, edit_file, delegate, etc.)
898
1059
  │ │ │ └── search/ # Search tools (web_search, db_search, file_search)
899
1060
  │ │ ├── utils/ # Utility jinxs (set, compile, serve, teamviz, etc.)
900
1061
  │ │ ├── browser/ # Browser automation (browser_action, screenshot, etc.)
@@ -62,10 +62,11 @@ Once installed, run `npcsh` to enter the NPC shell. The pip installation also pr
62
62
  - **Computer Use**
63
63
 
64
64
  ```bash
65
- /plonk 'find out the latest news on cnn' gemma3:12b ollama
65
+ /plonk
66
66
  ```
67
67
  <p align="center">
68
- <img src="gh_images/plonk.png" alt="Plonk GUI automation TUI", width=500>
68
+ <img src="gh_images/plonk.png" alt="Plonk GUI automation TUI — task entry" width=500>
69
+ <img src="gh_images/plonk_task.png" alt="Plonk GUI automation — completed flight search task" width=500>
69
70
  </p>
70
71
 
71
72
  - **Generate Images with Vixynt**
@@ -84,11 +85,14 @@ Once installed, run `npcsh` to enter the NPC shell. The pip installation also pr
84
85
  <p align="center">
85
86
  <img src="https://raw.githubusercontent.com/npc-worldwide/npcsh/main/test_data/rabbit.PNG" alt="a rabbit eating ham in the bring of dawn", width=350>
86
87
  </p>
87
- - **Generate Videos**
88
+ - **Generate Videos with Roll**
88
89
 
89
90
  ```bash
90
91
  /roll
91
92
  ```
93
+ <p align="center">
94
+ <img src="gh_images/roll.png" alt="Roll Video Creation Studio" width=500>
95
+ </p>
92
96
 
93
97
  - Generate videos directly
94
98
 
@@ -100,6 +104,16 @@ Once installed, run `npcsh` to enter the NPC shell. The pip installation also pr
100
104
  <img src="https://raw.githubusercontent.com/NPC-Worldwide/npcsh/main/test_data/hatridingdog.gif" alt="video of a hat riding a dog", width=350>
101
105
  </p>
102
106
 
107
+ - **Multi-Agent Discussions**
108
+
109
+ ```bash
110
+ /convene "Is the universe a simulation?" npcs=alicanto,corca,guac rounds=3
111
+ ```
112
+ <p align="center">
113
+ <img src="gh_images/convene.png" alt="Convene — multi-NPC structured discussion" width=500>
114
+ <img src="gh_images/convene_convene.png" alt="Convene — live discussion view" width=500>
115
+ </p>
116
+
103
117
  - **Serve an NPC Team**
104
118
  ```bash
105
119
  /serve --port 5337 --cors='http://localhost:5137/'
@@ -183,6 +197,108 @@ When an NPC is invoked, they can only use the jinxs assigned to them. This creat
183
197
 
184
198
  The forenpc (orchestrator) can delegate to any team member based on their specialization.
185
199
 
200
+ ## Skills — Knowledge Content for Agents
201
+
202
+ Skills are jinxs that serve instructional content instead of executing code. They use the `skill.jinx` sub-jinx (just like code jinxs use `python.jinx` or `sh.jinx`) and return sections of methodology on demand.
203
+
204
+ Because skills are jinxs, they're assigned to agents the same way — through the `jinxs:` list in `.npc` files:
205
+
206
+ ```yaml
207
+ # reviewer.npc
208
+ name: reviewer
209
+ primary_directive: "You review code and provide feedback."
210
+ jinxs:
211
+ - lib/core/sh
212
+ - lib/core/python
213
+ - skills/code-review
214
+ - skills/debugging
215
+ ```
216
+
217
+ The agent sees `code-review` and `debugging` in its tool catalog alongside `sh` and `python`. When it encounters a review task, it calls the skill to get methodology, then uses `sh` or `python` to do the actual work.
218
+
219
+ ### Two Authoring Formats
220
+
221
+ **SKILL.md folder** — a folder with a `SKILL.md` file (folder name = skill name):
222
+
223
+ ```
224
+ jinxs/skills/debugging/
225
+ SKILL.md # YAML frontmatter + ## sections
226
+ scripts/ # Optional
227
+ references/ # Optional
228
+ ```
229
+
230
+ ```markdown
231
+ ---
232
+ description: Debugging methodology. Use when asked to debug or troubleshoot.
233
+ ---
234
+ # Debugging
235
+
236
+ ## reproduce
237
+ First, reproduce the bug consistently.
238
+ Find the minimal reproduction case.
239
+
240
+ ## isolate
241
+ Binary search through the codebase (git bisect).
242
+ Comment out components to isolate the cause.
243
+
244
+ ## fix
245
+ Fix the root cause, not the symptom.
246
+ Add a test that fails without the fix.
247
+ ```
248
+
249
+ **`.jinx` file** — a regular jinx with `engine: skill` steps:
250
+
251
+ ```yaml
252
+ jinx_name: git-workflow
253
+ description: "Git workflow best practices. [Sections: branching, commits, merging]"
254
+ inputs:
255
+ - section: all
256
+ steps:
257
+ - engine: skill
258
+ skill_name: git-workflow
259
+ skill_description: Git workflow best practices.
260
+ sections:
261
+ branching: |
262
+ Use feature branches off main/develop.
263
+ Name branches: feature/, fix/, chore/
264
+ commits: |
265
+ Imperative summary under 72 chars.
266
+ One logical change per commit.
267
+ merging: |
268
+ Prefer squash merges for feature branches.
269
+ Delete branches after merging.
270
+ scripts_json: '[]'
271
+ references_json: '[]'
272
+ assets_json: '[]'
273
+ section: '{{section}}'
274
+ ```
275
+
276
+ ### Using Skills
277
+
278
+ In npcsh, skills work as slash commands like any jinx:
279
+
280
+ ```bash
281
+ /debugging # All sections
282
+ /debugging -s reproduce # Just the reproduce section
283
+ /debugging -s list # Available section names
284
+ /code-review -s correctness # Just the correctness section
285
+ ```
286
+
287
+ In the agent loop, the agent calls skills automatically when relevant — requesting specific sections to minimize token usage (progressive disclosure).
288
+
289
+ ### Importing External Skills
290
+
291
+ Add `SKILLS_DIRECTORY` to your `.ctx` file to load skills from an external directory:
292
+
293
+ ```yaml
294
+ model: llama3.2
295
+ provider: ollama
296
+ forenpc: lead-dev
297
+ SKILLS_DIRECTORY: ~/shared-skills
298
+ ```
299
+
300
+ All `SKILL.md` folders and `.jinx` skill files in that directory are loaded alongside the team's own jinxs. This lets you maintain a single skills library shared across multiple teams.
301
+
186
302
  ## Delegation with Review Loop
187
303
 
188
304
  The `/delegate` jinx sends a task to another NPC with automatic review and feedback:
@@ -476,14 +592,15 @@ npc sample "a sunset over mountains"
476
592
  | `/git` | Git integration TUI |
477
593
  | `/build` | Build team to deployable format (flask, docker, cli, static) |
478
594
  | `/team` | Team config browser — context, NPCs, jinxs |
479
- | `/config_tui` | Interactive config editor |
595
+ | `/config` | Interactive config editor |
480
596
  | `/reattach` | Resume previous conversation sessions |
481
597
  | `/delegate` | Delegate task to NPC with review loop |
482
598
  | `/web_search` | Web search |
483
599
  | `/db_search` | Database search |
484
600
  | `/file_search` | File search |
485
601
  | `/vixynt` | Generate/edit images |
486
- | `/roll` | Generate videos |
602
+ | `/roll` | Video creation studio |
603
+ | `/crond` | System task manager (cron, daemons, processes) |
487
604
  | `/sample` | Context-free LLM prompt |
488
605
  | `/serve` | Serve NPC team as API with OpenAI-compatible endpoints |
489
606
  | `/compile` | Compile NPC profiles |
@@ -537,6 +654,44 @@ Browse all available models across providers (Ollama, OpenAI, Anthropic, etc.),
537
654
  <img src="gh_images/models.png" alt="Models browser", width=500>
538
655
  </p>
539
656
 
657
+ ### `/roll` — Video Creation Studio
658
+ Interactive TUI for generating videos with parameter controls. Edit prompt, model, provider, dimensions, and frame count, then generate. Includes a gallery browser for previously generated videos.
659
+
660
+ ```bash
661
+ /roll # Open interactive TUI
662
+ /roll "a sunset" # Generate video directly (one-shot mode)
663
+ ```
664
+
665
+ <p align="center">
666
+ <img src="gh_images/roll.png" alt="Roll Video Creation Studio" width=500>
667
+ </p>
668
+
669
+ ### `/config` — Configuration Editor
670
+ Interactive TUI for editing `~/.npcshrc` settings — models, providers, modes, and toggles. Navigate with j/k, edit text fields, toggle booleans, and cycle choices.
671
+
672
+ ```bash
673
+ /config
674
+ ```
675
+
676
+ <p align="center">
677
+ <img src="gh_images/config.png" alt="Config editor TUI" width=500>
678
+ </p>
679
+
680
+ ### `/crond` — System Task Manager
681
+ Multi-tab TUI for managing cron jobs, systemd user daemons, and system processes. Create new cron jobs and daemons using natural language, start/stop/restart services, kill processes, and monitor resource usage.
682
+
683
+ ```bash
684
+ /crond
685
+ ```
686
+
687
+ <p align="center">
688
+ <img src="gh_images/crond.png" alt="Crond Cron tab" width=500>
689
+ <img src="gh_images/crondaemon.png" alt="Crond Daemons tab" width=500>
690
+ </p>
691
+ <p align="center">
692
+ <img src="gh_images/cron_processes.png" alt="Crond Processes tab" width=500>
693
+ </p>
694
+
540
695
  # Memory & Knowledge Graph
541
696
 
542
697
  `npcsh` maintains a memory lifecycle system that allows agents to learn and grow from past interactions. Memories progress through stages and can be incorporated into a knowledge graph for advanced retrieval.
@@ -788,8 +943,14 @@ export PERPLEXITY_API_KEY='your_perplexity_key'
788
943
  npc_team/
789
944
  ├── jinxs/
790
945
  │ ├── modes/ # TUI modes (alicanto, corca, kg, yap, etc.)
946
+ │ ├── skills/ # Skills — knowledge-content jinxs
947
+ │ │ ├── code-review/ # SKILL.md folder format
948
+ │ │ │ └── SKILL.md
949
+ │ │ ├── debugging/
950
+ │ │ │ └── SKILL.md
951
+ │ │ └── git-workflow.jinx # .jinx format
791
952
  │ ├── lib/
792
- │ │ ├── core/ # Core tools (python, sh, sql, edit_file, delegate, etc.)
953
+ │ │ ├── core/ # Core tools (python, sh, sql, skill, edit_file, delegate, etc.)
793
954
  │ │ │ └── search/ # Search tools (web_search, db_search, file_search)
794
955
  │ │ ├── utils/ # Utility jinxs (set, compile, serve, teamviz, etc.)
795
956
  │ │ ├── browser/ # Browser automation (browser_action, screenshot, etc.)