agent-cli 0.52.1__tar.gz → 0.68.3__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 (374) hide show
  1. agent_cli-0.68.3/.claude/skills/agent-cli-dev/SKILL.md +136 -0
  2. agent_cli-0.68.3/.claude/skills/agent-cli-dev/examples.md +510 -0
  3. agent_cli-0.68.3/.claude-plugin/README.md +63 -0
  4. agent_cli-0.68.3/.claude-plugin/marketplace.json +21 -0
  5. agent_cli-0.68.3/.claude-plugin/plugin.json +10 -0
  6. agent_cli-0.68.3/.claude-plugin/skills/agent-cli-dev/SKILL.md +136 -0
  7. agent_cli-0.68.3/.claude-plugin/skills/agent-cli-dev/examples.md +510 -0
  8. agent_cli-0.68.3/.cursorrules +16 -0
  9. agent_cli-0.68.3/.github/logo.svg +798 -0
  10. agent_cli-0.68.3/.github/release-drafter.yml +4 -0
  11. agent_cli-0.68.3/.github/renovate.json +35 -0
  12. agent_cli-0.68.3/.github/scripts/check_extras_sync.py +75 -0
  13. agent_cli-0.68.3/.github/scripts/sync_requirements.py +75 -0
  14. agent_cli-0.68.3/.github/workflows/automerge.yml +22 -0
  15. agent_cli-0.68.3/.github/workflows/docker.yml +142 -0
  16. agent_cli-0.68.3/.github/workflows/docs.yml +66 -0
  17. agent_cli-0.68.3/.github/workflows/markdown-code-runner.yml +54 -0
  18. agent_cli-0.68.3/.github/workflows/pytest.yml +41 -0
  19. agent_cli-0.68.3/.github/workflows/release-drafter.yml +14 -0
  20. agent_cli-0.68.3/.github/workflows/release.yml +22 -0
  21. agent_cli-0.68.3/.github/workflows/toc.yaml +10 -0
  22. agent_cli-0.68.3/.gitignore +75 -0
  23. agent_cli-0.68.3/.jscpd.json +25 -0
  24. agent_cli-0.68.3/.pre-commit-config.yaml +63 -0
  25. agent_cli-0.68.3/.prompts/docs-review.md +222 -0
  26. agent_cli-0.68.3/.prompts/pr-review.md +16 -0
  27. agent_cli-0.68.3/CLAUDE.md +122 -0
  28. {agent_cli-0.52.1/agent_cli.egg-info → agent_cli-0.68.3}/PKG-INFO +1020 -1030
  29. agent_cli-0.52.1/PKG-INFO → agent_cli-0.68.3/README.md +948 -1040
  30. agent_cli-0.68.3/agent_cli/_extras.json +13 -0
  31. agent_cli-0.68.3/agent_cli/_requirements/.gitkeep +0 -0
  32. agent_cli-0.68.3/agent_cli/_requirements/audio.txt +71 -0
  33. agent_cli-0.68.3/agent_cli/_requirements/faster-whisper.txt +208 -0
  34. agent_cli-0.68.3/agent_cli/_requirements/kokoro.txt +421 -0
  35. agent_cli-0.68.3/agent_cli/_requirements/llm.txt +176 -0
  36. agent_cli-0.68.3/agent_cli/_requirements/memory.txt +348 -0
  37. agent_cli-0.68.3/agent_cli/_requirements/mlx-whisper.txt +215 -0
  38. agent_cli-0.68.3/agent_cli/_requirements/piper.txt +169 -0
  39. agent_cli-0.68.3/agent_cli/_requirements/rag.txt +395 -0
  40. agent_cli-0.68.3/agent_cli/_requirements/server.txt +147 -0
  41. agent_cli-0.68.3/agent_cli/_requirements/speed.txt +69 -0
  42. agent_cli-0.68.3/agent_cli/_requirements/vad.txt +147 -0
  43. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/__init__.py +0 -2
  44. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/_voice_agent_common.py +26 -24
  45. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/assistant.py +18 -78
  46. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/autocorrect.py +33 -10
  47. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/chat.py +18 -79
  48. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/memory/__init__.py +10 -1
  49. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/memory/add.py +2 -0
  50. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/memory/proxy.py +2 -0
  51. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/rag_proxy.py +3 -1
  52. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/speak.py +24 -7
  53. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/transcribe.py +52 -10
  54. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/transcribe_daemon.py +3 -1
  55. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/agents/voice_edit.py +36 -87
  56. agent_cli-0.68.3/agent_cli/api.py +22 -0
  57. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/cli.py +6 -3
  58. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/config.py +200 -0
  59. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/config_cmd.py +50 -0
  60. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/constants.py +5 -0
  61. agent_cli-0.68.3/agent_cli/core/audio_format.py +299 -0
  62. agent_cli-0.68.3/agent_cli/core/deps.py +191 -0
  63. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/process.py +34 -0
  64. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/utils.py +11 -2
  65. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/__init__.py +1 -1
  66. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/cli.py +665 -29
  67. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/aider.py +10 -0
  68. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/base.py +20 -0
  69. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/claude.py +10 -0
  70. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/codex.py +10 -0
  71. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/copilot.py +10 -0
  72. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/cursor_agent.py +3 -0
  73. agent_cli-0.68.3/agent_cli/dev/coding_agents/gemini.py +28 -0
  74. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/project.py +14 -0
  75. agent_cli-0.68.3/agent_cli/dev/skill/SKILL.md +136 -0
  76. agent_cli-0.68.3/agent_cli/dev/skill/examples.md +510 -0
  77. agent_cli-0.68.3/agent_cli/dev/terminals/apple_terminal.py +82 -0
  78. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/iterm2.py +16 -2
  79. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/registry.py +2 -0
  80. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/warp.py +6 -3
  81. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/zellij.py +8 -1
  82. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/worktree.py +178 -6
  83. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/docs_gen.py +12 -42
  84. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/install/__init__.py +1 -1
  85. agent_cli-0.68.3/agent_cli/install/extras.py +172 -0
  86. agent_cli-0.68.3/agent_cli/memory/__init__.py +7 -0
  87. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_retrieval.py +18 -8
  88. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/api.py +1 -1
  89. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/client.py +1 -1
  90. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/engine.py +1 -1
  91. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/opts.py +6 -0
  92. agent_cli-0.68.3/agent_cli/py.typed +0 -0
  93. agent_cli-0.68.3/agent_cli/rag/__init__.py +3 -0
  94. agent_cli-0.68.3/agent_cli/scripts/.runtime/.gitkeep +0 -0
  95. agent_cli-0.68.3/agent_cli/scripts/check_plugin_skill_sync.py +50 -0
  96. agent_cli-0.68.3/agent_cli/scripts/sync_extras.py +138 -0
  97. agent_cli-0.68.3/agent_cli/server/__init__.py +3 -0
  98. agent_cli-0.68.3/agent_cli/server/cli.py +731 -0
  99. agent_cli-0.68.3/agent_cli/server/common.py +223 -0
  100. agent_cli-0.68.3/agent_cli/server/model_manager.py +288 -0
  101. agent_cli-0.68.3/agent_cli/server/model_registry.py +225 -0
  102. agent_cli-0.68.3/agent_cli/server/proxy/__init__.py +3 -0
  103. {agent_cli-0.52.1/agent_cli → agent_cli-0.68.3/agent_cli/server/proxy}/api.py +10 -30
  104. agent_cli-0.68.3/agent_cli/server/streaming.py +67 -0
  105. agent_cli-0.68.3/agent_cli/server/tts/__init__.py +3 -0
  106. agent_cli-0.68.3/agent_cli/server/tts/api.py +335 -0
  107. agent_cli-0.68.3/agent_cli/server/tts/backends/__init__.py +82 -0
  108. agent_cli-0.68.3/agent_cli/server/tts/backends/base.py +139 -0
  109. agent_cli-0.68.3/agent_cli/server/tts/backends/kokoro.py +403 -0
  110. agent_cli-0.68.3/agent_cli/server/tts/backends/piper.py +253 -0
  111. agent_cli-0.68.3/agent_cli/server/tts/model_manager.py +201 -0
  112. agent_cli-0.68.3/agent_cli/server/tts/model_registry.py +28 -0
  113. agent_cli-0.68.3/agent_cli/server/tts/wyoming_handler.py +249 -0
  114. agent_cli-0.68.3/agent_cli/server/whisper/__init__.py +3 -0
  115. agent_cli-0.68.3/agent_cli/server/whisper/api.py +413 -0
  116. agent_cli-0.68.3/agent_cli/server/whisper/backends/__init__.py +89 -0
  117. agent_cli-0.68.3/agent_cli/server/whisper/backends/base.py +97 -0
  118. agent_cli-0.68.3/agent_cli/server/whisper/backends/faster_whisper.py +218 -0
  119. agent_cli-0.68.3/agent_cli/server/whisper/backends/mlx.py +270 -0
  120. agent_cli-0.68.3/agent_cli/server/whisper/languages.py +116 -0
  121. agent_cli-0.68.3/agent_cli/server/whisper/model_manager.py +157 -0
  122. agent_cli-0.68.3/agent_cli/server/whisper/model_registry.py +28 -0
  123. agent_cli-0.68.3/agent_cli/server/whisper/wyoming_handler.py +203 -0
  124. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/services/__init__.py +41 -7
  125. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/services/_wyoming_utils.py +4 -2
  126. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/services/asr.py +36 -6
  127. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/services/tts.py +15 -17
  128. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/services/wake_word.py +6 -3
  129. agent_cli-0.68.3/docker/docker-compose.yml +207 -0
  130. agent_cli-0.68.3/docker/transcription-proxy.Dockerfile +51 -0
  131. agent_cli-0.68.3/docker/tts.Dockerfile +137 -0
  132. agent_cli-0.68.3/docker/whisper.Dockerfile +127 -0
  133. agent_cli-0.68.3/docs/CNAME +1 -0
  134. agent_cli-0.68.3/docs/architecture/index.md +187 -0
  135. agent_cli-0.68.3/docs/architecture/memory.md +316 -0
  136. agent_cli-0.68.3/docs/architecture/rag.md +391 -0
  137. agent_cli-0.68.3/docs/commands/assistant.md +220 -0
  138. agent_cli-0.68.3/docs/commands/autocorrect.md +107 -0
  139. agent_cli-0.68.3/docs/commands/chat.md +226 -0
  140. agent_cli-0.68.3/docs/commands/config.md +98 -0
  141. agent_cli-0.68.3/docs/commands/dev.md +566 -0
  142. agent_cli-0.68.3/docs/commands/index.md +128 -0
  143. agent_cli-0.68.3/docs/commands/install-extras.md +70 -0
  144. agent_cli-0.68.3/docs/commands/install-hotkeys.md +43 -0
  145. agent_cli-0.68.3/docs/commands/install-services.md +34 -0
  146. agent_cli-0.68.3/docs/commands/memory.md +231 -0
  147. agent_cli-0.68.3/docs/commands/rag-proxy.md +161 -0
  148. agent_cli-0.68.3/docs/commands/server/index.md +110 -0
  149. agent_cli-0.68.3/docs/commands/server/transcription-proxy.md +115 -0
  150. agent_cli-0.68.3/docs/commands/server/tts.md +246 -0
  151. agent_cli-0.68.3/docs/commands/server/whisper.md +267 -0
  152. agent_cli-0.68.3/docs/commands/speak.md +176 -0
  153. agent_cli-0.68.3/docs/commands/start-services.md +51 -0
  154. agent_cli-0.68.3/docs/commands/transcribe-daemon.md +195 -0
  155. agent_cli-0.68.3/docs/commands/transcribe.md +200 -0
  156. agent_cli-0.68.3/docs/commands/voice-edit.md +222 -0
  157. agent_cli-0.68.3/docs/configuration.md +292 -0
  158. agent_cli-0.68.3/docs/getting-started.md +158 -0
  159. agent_cli-0.68.3/docs/iOS_Shortcut_Guide.md +256 -0
  160. agent_cli-0.68.3/docs/index.md +135 -0
  161. agent_cli-0.68.3/docs/installation/docker.md +130 -0
  162. agent_cli-0.68.3/docs/installation/index.md +107 -0
  163. agent_cli-0.68.3/docs/installation/linux.md +193 -0
  164. agent_cli-0.68.3/docs/installation/macos.md +180 -0
  165. agent_cli-0.68.3/docs/installation/nixos.md +225 -0
  166. agent_cli-0.68.3/docs/installation/windows.md +213 -0
  167. agent_cli-0.68.3/docs/logo-clean.svg +107 -0
  168. agent_cli-0.68.3/docs/overrides/partials/integrations/analytics/custom.html +6 -0
  169. agent_cli-0.68.3/docs/run_markdown_code_runner.py +83 -0
  170. agent_cli-0.68.3/docs/system-integration.md +221 -0
  171. agent_cli-0.68.3/example.agent-cli-config.toml +1 -0
  172. agent_cli-0.68.3/justfile +41 -0
  173. {agent_cli-0.52.1 → agent_cli-0.68.3}/pyproject.toml +61 -22
  174. agent_cli-0.68.3/shell.nix +16 -0
  175. agent_cli-0.68.3/tests/__init__.py +1 -0
  176. agent_cli-0.68.3/tests/agents/__init__.py +1 -0
  177. agent_cli-0.68.3/tests/agents/test_fix_my_text.py +361 -0
  178. agent_cli-0.68.3/tests/agents/test_interactive.py +338 -0
  179. agent_cli-0.68.3/tests/agents/test_interactive_extra.py +264 -0
  180. agent_cli-0.68.3/tests/agents/test_memory_add.py +294 -0
  181. agent_cli-0.68.3/tests/agents/test_speak.py +141 -0
  182. agent_cli-0.68.3/tests/agents/test_speak_e2e.py +77 -0
  183. agent_cli-0.68.3/tests/agents/test_transcribe.py +523 -0
  184. agent_cli-0.68.3/tests/agents/test_transcribe_agent.py +79 -0
  185. agent_cli-0.68.3/tests/agents/test_transcribe_daemon.py +460 -0
  186. agent_cli-0.68.3/tests/agents/test_transcribe_e2e.py +96 -0
  187. agent_cli-0.68.3/tests/agents/test_transcribe_recovery.py +721 -0
  188. agent_cli-0.68.3/tests/agents/test_tts_common.py +157 -0
  189. agent_cli-0.68.3/tests/agents/test_tts_common_extra.py +64 -0
  190. agent_cli-0.68.3/tests/agents/test_voice_agent_common.py +149 -0
  191. agent_cli-0.68.3/tests/agents/test_voice_edit.py +87 -0
  192. agent_cli-0.68.3/tests/agents/test_voice_edit_e2e.py +184 -0
  193. agent_cli-0.68.3/tests/agents/test_wake_word_assistant.py +71 -0
  194. agent_cli-0.68.3/tests/conftest.py +114 -0
  195. agent_cli-0.68.3/tests/core/__init__.py +1 -0
  196. agent_cli-0.68.3/tests/core/test_audio_format.py +100 -0
  197. agent_cli-0.68.3/tests/core/test_chroma.py +37 -0
  198. agent_cli-0.68.3/tests/core/test_sse.py +81 -0
  199. agent_cli-0.68.3/tests/core/test_vad.py +296 -0
  200. agent_cli-0.68.3/tests/core/test_watch.py +49 -0
  201. agent_cli-0.68.3/tests/dev/__init__.py +1 -0
  202. agent_cli-0.68.3/tests/dev/test_cli.py +496 -0
  203. agent_cli-0.68.3/tests/dev/test_coding_agents.py +226 -0
  204. agent_cli-0.68.3/tests/dev/test_editors.py +208 -0
  205. agent_cli-0.68.3/tests/dev/test_project.py +621 -0
  206. agent_cli-0.68.3/tests/dev/test_terminals.py +148 -0
  207. agent_cli-0.68.3/tests/dev/test_verification.py +1062 -0
  208. agent_cli-0.68.3/tests/dev/test_worktree.py +763 -0
  209. agent_cli-0.68.3/tests/install/__init__.py +1 -0
  210. agent_cli-0.68.3/tests/install/test_extras.py +42 -0
  211. agent_cli-0.68.3/tests/memory/__init__.py +1 -0
  212. agent_cli-0.68.3/tests/memory/test_api_health.py +50 -0
  213. agent_cli-0.68.3/tests/memory/test_api_integration_liveish.py +328 -0
  214. agent_cli-0.68.3/tests/memory/test_client.py +222 -0
  215. agent_cli-0.68.3/tests/memory/test_engine.py +620 -0
  216. agent_cli-0.68.3/tests/memory/test_files.py +56 -0
  217. agent_cli-0.68.3/tests/memory/test_filters.py +147 -0
  218. agent_cli-0.68.3/tests/memory/test_git_integration.py +164 -0
  219. agent_cli-0.68.3/tests/memory/test_indexer.py +71 -0
  220. agent_cli-0.68.3/tests/memory/test_memory_integration.py +147 -0
  221. agent_cli-0.68.3/tests/memory/test_proxy_passthrough.py +104 -0
  222. agent_cli-0.68.3/tests/memory/test_store.py +150 -0
  223. agent_cli-0.68.3/tests/memory/test_utils.py +78 -0
  224. agent_cli-0.68.3/tests/mocks/__init__.py +3 -0
  225. agent_cli-0.68.3/tests/mocks/audio.py +79 -0
  226. agent_cli-0.68.3/tests/mocks/llm.py +49 -0
  227. agent_cli-0.68.3/tests/mocks/wyoming.py +100 -0
  228. agent_cli-0.68.3/tests/rag/__init__.py +1 -0
  229. agent_cli-0.68.3/tests/rag/test_api.py +159 -0
  230. agent_cli-0.68.3/tests/rag/test_engine.py +205 -0
  231. agent_cli-0.68.3/tests/rag/test_history.py +70 -0
  232. agent_cli-0.68.3/tests/rag/test_indexer.py +100 -0
  233. agent_cli-0.68.3/tests/rag/test_indexing.py +148 -0
  234. agent_cli-0.68.3/tests/rag/test_rag_client.py +263 -0
  235. agent_cli-0.68.3/tests/rag/test_rag_integration_liveish.py +259 -0
  236. agent_cli-0.68.3/tests/rag/test_rag_proxy_passthrough.py +99 -0
  237. agent_cli-0.68.3/tests/rag/test_retriever.py +54 -0
  238. agent_cli-0.68.3/tests/rag/test_store.py +32 -0
  239. agent_cli-0.68.3/tests/rag/test_utils.py +504 -0
  240. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_api.py +32 -32
  241. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_api_integration.py +43 -19
  242. agent_cli-0.68.3/tests/test_cli.py +63 -0
  243. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_config.py +85 -8
  244. agent_cli-0.68.3/tests/test_json_output.py +493 -0
  245. agent_cli-0.68.3/tests/test_mlx_backend.py +80 -0
  246. agent_cli-0.68.3/tests/test_requires_extras.py +285 -0
  247. agent_cli-0.68.3/tests/test_server_streaming.py +144 -0
  248. agent_cli-0.68.3/tests/test_server_tts.py +1062 -0
  249. agent_cli-0.68.3/tests/test_server_whisper.py +668 -0
  250. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_wake_word.py +6 -6
  251. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_wyoming_utils.py +3 -3
  252. agent_cli-0.68.3/uv.lock +5815 -0
  253. agent_cli-0.68.3/zensical.toml +157 -0
  254. agent_cli-0.52.1/README.md +0 -1954
  255. agent_cli-0.52.1/agent_cli/agents/server.py +0 -58
  256. agent_cli-0.52.1/agent_cli/core/audio_format.py +0 -207
  257. agent_cli-0.52.1/agent_cli/core/deps.py +0 -39
  258. agent_cli-0.52.1/agent_cli/dev/coding_agents/gemini.py +0 -14
  259. agent_cli-0.52.1/agent_cli/memory/__init__.py +0 -24
  260. agent_cli-0.52.1/agent_cli/rag/__init__.py +0 -22
  261. agent_cli-0.52.1/agent_cli.egg-info/SOURCES.txt +0 -173
  262. agent_cli-0.52.1/agent_cli.egg-info/dependency_links.txt +0 -1
  263. agent_cli-0.52.1/agent_cli.egg-info/entry_points.txt +0 -4
  264. agent_cli-0.52.1/agent_cli.egg-info/requires.txt +0 -61
  265. agent_cli-0.52.1/agent_cli.egg-info/top_level.txt +0 -1
  266. agent_cli-0.52.1/setup.cfg +0 -4
  267. agent_cli-0.52.1/tests/test_cli.py +0 -50
  268. /agent_cli-0.52.1/agent_cli/py.typed → /agent_cli-0.68.3/.env.example +0 -0
  269. {agent_cli-0.52.1 → agent_cli-0.68.3}/LICENSE +0 -0
  270. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/__init__.py +0 -0
  271. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/__main__.py +0 -0
  272. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/_tools.py +0 -0
  273. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/__init__.py +0 -0
  274. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/audio.py +0 -0
  275. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/chroma.py +0 -0
  276. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/openai_proxy.py +0 -0
  277. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/reranker.py +0 -0
  278. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/sse.py +0 -0
  279. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/transcription_logger.py +0 -0
  280. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/vad.py +0 -0
  281. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/core/watch.py +0 -0
  282. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/__init__.py +0 -0
  283. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
  284. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/opencode.py +0 -0
  285. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/coding_agents/registry.py +0 -0
  286. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/__init__.py +0 -0
  287. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/base.py +0 -0
  288. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/cursor.py +0 -0
  289. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/emacs.py +0 -0
  290. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/jetbrains.py +0 -0
  291. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/nano.py +0 -0
  292. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/neovim.py +0 -0
  293. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/registry.py +0 -0
  294. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/sublime.py +0 -0
  295. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/vim.py +0 -0
  296. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/vscode.py +0 -0
  297. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/editors/zed.py +0 -0
  298. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/registry.py +0 -0
  299. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/__init__.py +0 -0
  300. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/base.py +0 -0
  301. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/gnome.py +0 -0
  302. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/kitty.py +0 -0
  303. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/dev/terminals/tmux.py +0 -0
  304. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/example-config.toml +0 -0
  305. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/install/common.py +0 -0
  306. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/install/hotkeys.py +0 -0
  307. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/install/services.py +0 -0
  308. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_files.py +0 -0
  309. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_filters.py +0 -0
  310. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_git.py +0 -0
  311. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_indexer.py +0 -0
  312. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_ingest.py +0 -0
  313. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_persistence.py +0 -0
  314. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_prompt.py +0 -0
  315. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_store.py +0 -0
  316. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_streaming.py +0 -0
  317. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/_tasks.py +0 -0
  318. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/entities.py +0 -0
  319. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/memory/models.py +0 -0
  320. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/_indexer.py +0 -0
  321. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/_indexing.py +0 -0
  322. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/_prompt.py +0 -0
  323. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/_retriever.py +0 -0
  324. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/_store.py +0 -0
  325. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/_utils.py +0 -0
  326. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/api.py +0 -0
  327. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/client.py +0 -0
  328. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/engine.py +0 -0
  329. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/rag/models.py +0 -0
  330. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/__init__.py +0 -0
  331. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
  332. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
  333. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
  334. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
  335. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
  336. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
  337. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
  338. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
  339. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
  340. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
  341. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
  342. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
  343. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
  344. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
  345. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run-openwakeword.sh +0 -0
  346. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
  347. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run-piper.sh +0 -0
  348. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run-whisper-linux.sh +0 -0
  349. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run-whisper-macos.sh +0 -0
  350. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
  351. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run-whisper.sh +0 -0
  352. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
  353. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
  354. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/setup-linux.sh +0 -0
  355. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
  356. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/setup-macos.sh +0 -0
  357. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/setup-windows.ps1 +0 -0
  358. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
  359. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/scripts/start-all-services.sh +0 -0
  360. {agent_cli-0.52.1 → agent_cli-0.68.3}/agent_cli/services/llm.py +0 -0
  361. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_asr.py +0 -0
  362. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_asr_recovery.py +0 -0
  363. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_audio_e2e.py +0 -0
  364. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_config_cmd.py +0 -0
  365. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_docs_gen.py +0 -0
  366. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_env_vars.py +0 -0
  367. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_llm.py +0 -0
  368. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_llm_gemini.py +0 -0
  369. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_memory_tools.py +0 -0
  370. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_process_manager.py +0 -0
  371. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_services.py +0 -0
  372. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_tools.py +0 -0
  373. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_tts.py +0 -0
  374. {agent_cli-0.52.1 → agent_cli-0.68.3}/tests/test_utils.py +0 -0
@@ -0,0 +1,136 @@
1
+ ---
2
+ name: agent-cli-dev
3
+ description: Spawns AI coding agents in isolated git worktrees. Use when the user asks to spawn or launch an agent, delegate a task to a separate agent, work in a separate worktree, or parallelize development across features.
4
+ ---
5
+
6
+ # Parallel Development with agent-cli dev
7
+
8
+ This skill teaches you how to spawn parallel AI coding agents in isolated git worktrees using the `agent-cli dev` command.
9
+
10
+ ## Installation
11
+
12
+ If `agent-cli` is not available, install it first:
13
+
14
+ ```bash
15
+ # Install globally
16
+ uv tool install agent-cli -p 3.13
17
+
18
+ # Or run directly without installing
19
+ uvx --python 3.13 agent-cli dev new <branch-name> --agent --prompt "..."
20
+ ```
21
+
22
+ ## When to spawn parallel agents
23
+
24
+ Spawn separate agents when:
25
+ - Multiple independent features/tasks can be worked on in parallel
26
+ - Tasks benefit from isolation (separate branches, no conflicts)
27
+ - Large refactoring that can be split by module/component
28
+ - Test-driven development (one agent for tests, one for implementation)
29
+
30
+ Do NOT spawn when:
31
+ - Tasks are small and sequential
32
+ - Tasks have tight dependencies requiring constant coordination
33
+ - The overhead of context switching exceeds the benefit
34
+
35
+ ## Core command
36
+
37
+ For short prompts:
38
+ ```bash
39
+ agent-cli dev new <branch-name> --agent --prompt "Fix the login bug"
40
+ ```
41
+
42
+ For longer prompts (recommended for multi-line or complex instructions):
43
+ ```bash
44
+ agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
45
+ ```
46
+
47
+ This creates:
48
+ 1. A new git worktree with its own branch
49
+ 2. Runs project setup (installs dependencies)
50
+ 3. Saves your prompt to `.claude/TASK.md` in the worktree (for reference)
51
+ 4. Opens a new terminal tab with an AI coding agent
52
+ 5. Passes your prompt to the agent
53
+
54
+ **Important**: Use `--prompt-file` for prompts longer than a single line. The `--prompt` option passes text through the shell, which can cause issues with special characters (exclamation marks, dollar signs, backticks, quotes) in ZSH and other shells. Using `--prompt-file` avoids all shell quoting issues.
55
+
56
+ ## Writing effective prompts for spawned agents
57
+
58
+ Spawned agents work in isolation, so prompts must be **self-contained**. Include:
59
+
60
+ 1. **Clear task description**: What to implement/fix/refactor
61
+ 2. **Relevant context**: File locations, patterns to follow, constraints
62
+ 3. **Report request**: Ask the agent to write conclusions to `.claude/REPORT.md`
63
+
64
+ ### Using --prompt-file (recommended)
65
+
66
+ For any prompt longer than a single sentence:
67
+
68
+ 1. Write the prompt to a temporary file (e.g., `.claude/spawn-prompt.md`)
69
+ 2. Use `--prompt-file` to pass it to the agent
70
+ 3. The file can be deleted after spawning
71
+
72
+ Example workflow:
73
+ ```bash
74
+ # 1. Write prompt to file (Claude does this with the Write tool)
75
+ # 2. Spawn agent with the file
76
+ agent-cli dev new my-feature --agent --prompt-file .claude/spawn-prompt.md
77
+ # 3. Optionally clean up
78
+ rm .claude/spawn-prompt.md
79
+ ```
80
+
81
+ ### Prompt template
82
+
83
+ ```
84
+ <Task description>
85
+
86
+ Context:
87
+ - <Key file locations>
88
+ - <Patterns to follow>
89
+ - <Constraints or requirements>
90
+
91
+ When complete, write a summary to .claude/REPORT.md including:
92
+ - What you implemented/changed
93
+ - Key decisions you made
94
+ - Any questions or concerns for review
95
+ ```
96
+
97
+ ## Checking spawned agent results
98
+
99
+ After spawning, you can check progress:
100
+
101
+ ```bash
102
+ # List all worktrees and their status
103
+ agent-cli dev status
104
+
105
+ # Read an agent's report
106
+ agent-cli dev run <branch-name> cat .claude/REPORT.md
107
+
108
+ # Open the worktree in your editor
109
+ agent-cli dev editor <branch-name>
110
+ ```
111
+
112
+ ## Example: Multi-feature implementation
113
+
114
+ If asked to implement auth, payments, and notifications:
115
+
116
+ ```bash
117
+ # Spawn three parallel agents
118
+ agent-cli dev new auth-feature --agent --prompt "Implement JWT authentication..."
119
+ agent-cli dev new payment-integration --agent --prompt "Add Stripe payment processing..."
120
+ agent-cli dev new email-notifications --agent --prompt "Implement email notification system..."
121
+ ```
122
+
123
+ Each agent works independently in its own branch. Results can be reviewed and merged separately.
124
+
125
+ ## Key options
126
+
127
+ | Option | Description |
128
+ |--------|-------------|
129
+ | `--agent` / `-a` | Start AI coding agent after creation |
130
+ | `--prompt` / `-p` | Initial prompt for the agent (short prompts only) |
131
+ | `--prompt-file` / `-P` | Read prompt from file (recommended for longer prompts) |
132
+ | `--from` / `-f` | Base branch (default: origin/main) |
133
+ | `--with-agent` | Specific agent: claude, aider, codex, gemini |
134
+ | `--agent-args` | Extra arguments for the agent |
135
+
136
+ @examples.md
@@ -0,0 +1,510 @@
1
+ # Examples: Parallel Agent Workflows
2
+
3
+ Real-world scenarios for spawning parallel AI coding agents, optimized for Claude 4.5 models.
4
+
5
+ > **Note on prompts**: The examples below show prompt content inline for readability. In practice, **always use `--prompt-file`** for these multi-line prompts to avoid shell quoting issues:
6
+ >
7
+ > ```bash
8
+ > # Write prompt to file, then spawn
9
+ > agent-cli dev new my-feature --agent --prompt-file .claude/spawn-prompt.md
10
+ > ```
11
+
12
+ ## Prompt structure guidelines
13
+
14
+ Each prompt for a spawned agent should follow this structure:
15
+
16
+ 1. **Explicit task description** - Be specific about what to implement
17
+ 2. **Workflow directive** - Read files in parallel, commit incrementally, verify before completing
18
+ 3. **Code exploration** - Read and understand existing code before writing
19
+ 4. **Context with motivation** - Explain why patterns matter
20
+ 5. **Focused scope** - Keep solutions minimal, implement only what's requested
21
+ 6. **Structured report** - Write conclusions to `.claude/REPORT.md`
22
+
23
+ ## Scenario 1: Multi-feature implementation
24
+
25
+ **User request**: "Implement user auth, payment processing, and email notifications"
26
+
27
+ **Strategy**: Three independent features → spawn three agents.
28
+
29
+ ```bash
30
+ agent-cli dev new auth-feature --agent --prompt "Implement JWT-based user authentication.
31
+
32
+ <workflow>
33
+ - Read multiple files in parallel when exploring the codebase
34
+ - Make incremental git commits as you complete each component
35
+ - Run tests and linting before writing your final report
36
+ </workflow>
37
+
38
+ <code_exploration>
39
+ Start by reading these files (in parallel if independent):
40
+ - src/api/routes/ to understand existing endpoint patterns
41
+ - src/models/ to see how models are structured
42
+ - Any existing auth-related code to avoid duplication
43
+
44
+ Think carefully about the existing patterns before designing your implementation.
45
+ </code_exploration>
46
+
47
+ <context>
48
+ Backend is FastAPI in src/api/. This authentication system protects all user-facing endpoints, so reliability and security are critical. Follow the exact patterns in existing endpoints to maintain codebase consistency.
49
+ </context>
50
+
51
+ <requirements>
52
+ Implement these endpoints following existing route patterns:
53
+ - POST /auth/register - create new user with password hashing
54
+ - POST /auth/login - validate credentials and return JWT token
55
+ - GET /auth/me - return current user (requires valid JWT)
56
+ - Create an auth dependency for protecting other routes
57
+ - Store JWT_SECRET in environment variable
58
+ </requirements>
59
+
60
+ <scope>
61
+ Keep the implementation simple and focused. Implement only what is requested. A working, minimal implementation is better than an over-designed one. Reuse existing abstractions where possible.
62
+ </scope>
63
+
64
+ <report>
65
+ After verifying tests pass and linting is clean, write to .claude/REPORT.md:
66
+
67
+ ## Summary
68
+ [2-3 sentences on what was implemented]
69
+
70
+ ## Files Changed
71
+ - path/to/file.py - description of change
72
+
73
+ ## Key Decisions
74
+ - Decision 1: rationale
75
+
76
+ ## Testing
77
+ How to verify the implementation works
78
+
79
+ ## Questions/Concerns
80
+ Any items needing review
81
+ </report>"
82
+
83
+ agent-cli dev new payment-integration --agent --prompt "Integrate Stripe payment processing.
84
+
85
+ <workflow>
86
+ - Read multiple files in parallel when exploring the codebase
87
+ - Make incremental git commits as you complete each component
88
+ - Run tests and linting before writing your final report
89
+ </workflow>
90
+
91
+ <code_exploration>
92
+ Read these files to understand the codebase (parallelize independent reads):
93
+ - src/api/routes/ for endpoint patterns and error handling
94
+ - src/models/ for existing model patterns
95
+ - Any existing payment or billing code
96
+
97
+ Only make claims about code you have actually read.
98
+ </code_exploration>
99
+
100
+ <context>
101
+ This payment integration handles real money transactions and must be implemented correctly. Stripe webhooks are essential for tracking payment status - the system cannot rely solely on client-side confirmation. Use the stripe Python package and store STRIPE_SECRET_KEY in environment.
102
+ </context>
103
+
104
+ <requirements>
105
+ - POST /payments/create-intent - create Stripe PaymentIntent, return client_secret
106
+ - POST /payments/webhook - handle Stripe webhook events (payment_intent.succeeded, payment_intent.failed)
107
+ - Add Payment model to track transaction status
108
+ - Include proper webhook signature verification for security
109
+ </requirements>
110
+
111
+ <scope>
112
+ Implement only what is specified. Focus on a working, secure implementation. Skip subscription handling, multiple payment methods, or other features unless explicitly requested.
113
+ </scope>
114
+
115
+ <report>
116
+ After verifying tests pass, write to .claude/REPORT.md:
117
+
118
+ ## Summary
119
+ [What was implemented]
120
+
121
+ ## Files Changed
122
+ [List with descriptions]
123
+
124
+ ## Security Considerations
125
+ [How webhook verification works, secret handling]
126
+
127
+ ## Testing
128
+ [How to test with Stripe test mode]
129
+
130
+ ## Questions/Concerns
131
+ [Any items for review]
132
+ </report>"
133
+
134
+ agent-cli dev new email-notifications --agent --prompt "Implement email notification system.
135
+
136
+ <workflow>
137
+ - Read multiple files in parallel when exploring the codebase
138
+ - Make incremental git commits as you complete each component
139
+ - Run tests and linting before writing your final report
140
+ </workflow>
141
+
142
+ <code_exploration>
143
+ Start by reading the codebase to understand patterns:
144
+ - Examine src/api/ for how background tasks are handled
145
+ - Check existing configuration patterns for external services
146
+ - Look for template handling patterns
147
+
148
+ Understand the existing architecture before implementing.
149
+ </code_exploration>
150
+
151
+ <context>
152
+ Email notifications are user-facing and must be reliable. Background processing prevents blocking API responses. Template-based emails allow content changes without code changes.
153
+ </context>
154
+
155
+ <requirements>
156
+ - Use an appropriate email library for the stack (e.g., fastapi-mail or aiosmtplib)
157
+ - Implement as background tasks to avoid blocking API responses
158
+ - Create templates for: welcome, password_reset, order_confirmation
159
+ - POST /notifications/send-test - endpoint for testing email delivery
160
+ - Store SMTP settings (host, port, user, password) in environment
161
+ </requirements>
162
+
163
+ <scope>
164
+ Implement the minimum required for reliable email delivery. Skip notification preferences, SMS, or push notifications unless requested.
165
+ </scope>
166
+
167
+ <report>
168
+ After verifying tests pass, write to .claude/REPORT.md with summary, files changed, library choice rationale, testing instructions, and any concerns.
169
+ </report>"
170
+ ```
171
+
172
+ ## Scenario 2: Test-driven development
173
+
174
+ **User request**: "Add a caching layer with comprehensive tests"
175
+
176
+ **Strategy**: One agent writes tests first, another implements.
177
+
178
+ ```bash
179
+ agent-cli dev new cache-tests --agent --prompt "Write comprehensive tests for a caching layer.
180
+
181
+ <task>
182
+ Create a complete test suite that drives the implementation of a caching system. The tests define the interface - write them as if the implementation already exists.
183
+ </task>
184
+
185
+ <workflow>
186
+ - Read test files in parallel to understand existing patterns
187
+ - Commit tests incrementally as you complete each test category
188
+ - Verify tests are syntactically valid before finishing
189
+ </workflow>
190
+
191
+ <code_exploration>
192
+ First, explore the codebase (parallelize these reads):
193
+ - tests/ for existing test patterns and fixtures
194
+ - conftest.py for shared fixtures
195
+ - Project testing conventions
196
+
197
+ Follow the exact testing patterns you find.
198
+ </code_exploration>
199
+
200
+ <interface_spec>
201
+ The cache system should support:
202
+ - get(key: str) -> Any | None
203
+ - set(key: str, value: Any, ttl_seconds: int | None = None) -> None
204
+ - delete(key: str) -> bool
205
+ - clear() -> None
206
+ - Support for Redis backend and in-memory fallback
207
+ </interface_spec>
208
+
209
+ <test_requirements>
210
+ Write tests in tests/test_cache.py using pytest:
211
+ - Basic get/set/delete operations
212
+ - TTL expiration (use time mocking)
213
+ - Cache miss returns None
214
+ - Backend switching/fallback behavior
215
+ - Concurrent access patterns
216
+ - Edge cases: empty keys, None values, large values
217
+ </test_requirements>
218
+
219
+ <scope>
220
+ Write only tests, not the implementation. The tests should fail initially and pass once implementation is complete. Write tests that verify behavior, not implementation details.
221
+ </scope>
222
+
223
+ <report>
224
+ When complete, write to .claude/REPORT.md:
225
+
226
+ ## Test Cases
227
+ | Test Name | What It Verifies |
228
+ |-----------|------------------|
229
+ | test_xxx | description |
230
+
231
+ ## Interface Decisions
232
+ - Why the interface is designed this way
233
+
234
+ ## Edge Cases Covered
235
+ - List of edge cases and why they matter
236
+
237
+ ## Implementation Suggestions
238
+ - Hints for the implementer
239
+ </report>"
240
+ ```
241
+
242
+ After reviewing the tests:
243
+
244
+ ```bash
245
+ agent-cli dev new cache-impl --from cache-tests --agent --prompt "Implement the caching layer to pass existing tests.
246
+
247
+ <workflow>
248
+ - Read all test files first to understand the complete interface
249
+ - Run tests frequently as you implement: pytest tests/test_cache.py -v
250
+ - Make incremental git commits after each passing test group
251
+ - Verify all tests pass before writing your report
252
+ </workflow>
253
+
254
+ <code_exploration>
255
+ CRITICAL: Read the tests completely before writing any implementation.
256
+ - Read tests/test_cache.py to understand expected behavior
257
+ - Note the exact interface the tests expect
258
+ - Identify edge cases the tests check for
259
+
260
+ The tests define the contract - implement to match them exactly.
261
+ </code_exploration>
262
+
263
+ <requirements>
264
+ Implement in src/cache.py:
265
+ - CacheBackend abstract base class
266
+ - RedisBackend implementation (use redis-py)
267
+ - MemoryBackend implementation (dict-based with TTL support)
268
+ - Cache facade that selects backend based on configuration
269
+ </requirements>
270
+
271
+ <scope>
272
+ Implement exactly what the tests require. Skip features the tests don't verify. Skip distributed caching, cache warming, or advanced features unless tests require them.
273
+ </scope>
274
+
275
+ <report>
276
+ After ALL tests pass, write to .claude/REPORT.md:
277
+
278
+ ## Implementation Approach
279
+ [How the cache system works]
280
+
281
+ ## Test Results
282
+ [Output of pytest run showing all tests pass]
283
+
284
+ ## Deviations
285
+ [Any places where tests seemed incorrect or ambiguous]
286
+
287
+ ## Performance Notes
288
+ [Any performance considerations]
289
+ </report>"
290
+ ```
291
+
292
+ ## Scenario 3: Large refactoring by module
293
+
294
+ **User request**: "Refactor the API to use consistent error handling"
295
+
296
+ **Strategy**: Split by module, each agent handles one area.
297
+
298
+ ```bash
299
+ agent-cli dev new refactor-users-errors --agent --prompt "Refactor error handling in the users module.
300
+
301
+ <workflow>
302
+ - Read all relevant files in parallel before making any changes
303
+ - Make incremental git commits as you refactor each endpoint
304
+ - Run tests after each change to catch regressions early
305
+ - Run linting before writing your final report
306
+ </workflow>
307
+
308
+ <code_exploration>
309
+ Think carefully about the current state before making changes:
310
+ - Read ALL files in src/api/routes/users.py and related user logic
311
+ - Document the current error handling patterns you find
312
+ - Check how errors are handled in other modules for comparison
313
+ - Look for any error handling utilities that already exist
314
+
315
+ Only modify code you have read and understood.
316
+ </code_exploration>
317
+
318
+ <context>
319
+ Inconsistent error responses make API clients fragile and debugging difficult. A standard error format allows clients to handle errors programmatically and provides clear information for debugging. Logging errors with context is essential for production troubleshooting.
320
+ </context>
321
+
322
+ <target_pattern>
323
+ Use HTTPException with structured detail:
324
+ {
325
+ \"error\": \"ERROR_CODE\",
326
+ \"message\": \"Human readable description\",
327
+ \"details\": {} // optional additional context
328
+ }
329
+
330
+ Error codes for users: USER_NOT_FOUND, USER_ALREADY_EXISTS, INVALID_CREDENTIALS, EMAIL_NOT_VERIFIED, etc.
331
+
332
+ Before raising, log with context:
333
+ logger.warning(f\"User not found: {user_id}\", extra={\"user_id\": user_id})
334
+ </target_pattern>
335
+
336
+ <scope>
337
+ ONLY modify files in src/api/routes/users.py and directly related user logic. Other agents are handling other modules.
338
+ </scope>
339
+
340
+ <report>
341
+ After tests pass and linting is clean, write to .claude/REPORT.md:
342
+
343
+ ## Changes Made
344
+ | File | Change Description |
345
+ |------|-------------------|
346
+ | path | what changed |
347
+
348
+ ## Error Codes Introduced
349
+ | Code | When Used | HTTP Status |
350
+ |------|-----------|-------------|
351
+
352
+ ## Breaking Changes
353
+ [Any API response changes that could affect clients]
354
+
355
+ ## Testing
356
+ [How to verify the changes work]
357
+ </report>"
358
+ ```
359
+
360
+ ## Scenario 4: Documentation and implementation in parallel
361
+
362
+ **User request**: "Add a plugin system with documentation"
363
+
364
+ **Strategy**: One agent implements, another writes docs simultaneously.
365
+
366
+ ```bash
367
+ agent-cli dev new plugin-system --agent --prompt "Implement a plugin system.
368
+
369
+ <workflow>
370
+ - Read existing codebase structure in parallel before designing
371
+ - Make incremental git commits as you complete each component
372
+ - Run tests and linting before writing your final report
373
+ </workflow>
374
+
375
+ <code_exploration>
376
+ Think carefully about the architecture before implementing:
377
+ - Read the existing codebase structure to understand where plugins fit
378
+ - Check for any existing extension points or hooks
379
+ - Look at how configuration is handled
380
+ - Understand the application lifecycle
381
+
382
+ Design the plugin system to integrate naturally with existing patterns.
383
+ </code_exploration>
384
+
385
+ <requirements>
386
+ - Plugin base class with lifecycle hooks: on_load(), on_unload(), on_event(event_name, data)
387
+ - Plugin registry for discovery and management
388
+ - Auto-load plugins from plugins/ directory
389
+ - Create one example plugin demonstrating the interface
390
+ - Plugins should be able to register event handlers
391
+ </requirements>
392
+
393
+ <scope>
394
+ Implement the minimal system that allows extending functionality through plugins. Skip: plugin dependencies, versioning, hot-reloading, sandboxing, or a plugin marketplace.
395
+ </scope>
396
+
397
+ <implementation_notes>
398
+ - Use importlib for dynamic loading
399
+ - Simple dict-based event system is sufficient
400
+ - Plugins should fail gracefully without crashing the app
401
+ </implementation_notes>
402
+
403
+ <report>
404
+ After tests pass, write to .claude/REPORT.md:
405
+
406
+ ## Architecture
407
+ [Diagram or description of how plugins integrate]
408
+
409
+ ## Plugin Interface
410
+ \`\`\`python
411
+ class Plugin:
412
+ # document the interface
413
+ \`\`\`
414
+
415
+ ## Example Plugin
416
+ [Show the example plugin code]
417
+
418
+ ## Usage
419
+ [How to create and register a plugin]
420
+ </report>"
421
+
422
+ agent-cli dev new plugin-docs --agent --prompt "Write documentation for the plugin system.
423
+
424
+ <context>
425
+ Implementation is happening in parallel in another branch. Write documentation based on a standard plugin system design. The implementation agent will adapt if needed, or you can update docs after reviewing their work.
426
+ </context>
427
+
428
+ <assumptions>
429
+ - Plugin base class with on_load, on_unload, on_event hooks
430
+ - Plugin registry pattern with auto-discovery
431
+ - Plugins loaded from plugins/ directory
432
+ - Event-based communication
433
+ </assumptions>
434
+
435
+ <deliverables>
436
+ Create these documentation files:
437
+ - docs/plugins/overview.md - What plugins are, why use them, architecture diagram
438
+ - docs/plugins/creating-plugins.md - Step-by-step tutorial with complete example
439
+ - docs/plugins/api-reference.md - Complete API documentation for Plugin class and registry
440
+
441
+ Use clear examples and explain the \"why\" not just the \"how\".
442
+ </deliverables>
443
+
444
+ <workflow>
445
+ - Commit each documentation file as you complete it
446
+ - Ensure markdown renders correctly
447
+ </workflow>
448
+
449
+ <report>
450
+ When complete, write to .claude/REPORT.md:
451
+
452
+ ## Documentation Structure
453
+ [Outline of what was created]
454
+
455
+ ## Assumptions Made
456
+ [What you assumed about the implementation]
457
+
458
+ ## Suggestions for Implementation
459
+ [Any insights from writing docs that could improve the design]
460
+
461
+ ## Open Questions
462
+ [Things that need clarification from the implementation]
463
+ </report>"
464
+ ```
465
+
466
+ ## Reviewing results
467
+
468
+ After agents complete their work:
469
+
470
+ ```bash
471
+ # Check status of all worktrees
472
+ agent-cli dev status
473
+
474
+ # Read reports from each agent
475
+ agent-cli dev run auth-feature cat .claude/REPORT.md
476
+ agent-cli dev run payment-integration cat .claude/REPORT.md
477
+ agent-cli dev run email-notifications cat .claude/REPORT.md
478
+
479
+ # Open a worktree to review code
480
+ agent-cli dev editor auth-feature
481
+
482
+ # Run tests in a worktree
483
+ agent-cli dev run cache-impl pytest tests/test_cache.py -v
484
+
485
+ # Clean up after merging
486
+ agent-cli dev clean --merged
487
+ ```
488
+
489
+ ## Report format reference
490
+
491
+ All spawned agents should write to `.claude/REPORT.md` with at minimum:
492
+
493
+ ```markdown
494
+ ## Summary
495
+ [2-3 sentences describing what was done]
496
+
497
+ ## Files Changed
498
+ - path/to/file.py - what changed and why
499
+
500
+ ## Key Decisions
501
+ - Decision: rationale for the choice made
502
+
503
+ ## Testing
504
+ How to verify the implementation works correctly
505
+
506
+ ## Questions/Concerns
507
+ Any items that need human review or clarification
508
+ ```
509
+
510
+ This consistent format makes it easy to review work from multiple agents.
@@ -0,0 +1,63 @@
1
+ # agent-cli-dev Plugin for Claude Code
2
+
3
+ This plugin teaches Claude Code how to spawn parallel AI coding agents in isolated git worktrees using `agent-cli dev`.
4
+
5
+ ## What It Does
6
+
7
+ The plugin provides a skill that enables Claude Code to:
8
+
9
+ - Create isolated git worktrees for parallel development
10
+ - Spawn AI coding agents (Claude, Codex, Gemini, Aider) in separate terminal tabs
11
+ - Manage multiple features/tasks simultaneously without branch conflicts
12
+ - Automatically set up project dependencies in new worktrees
13
+
14
+ ## Installation
15
+
16
+ ### Install agent-cli
17
+
18
+ ```bash
19
+ # Using uv (recommended)
20
+ uv tool install agent-cli -p 3.13
21
+
22
+ # Or run directly without installing
23
+ uvx --python 3.13 agent-cli dev new my-feature --agent --prompt "..."
24
+ ```
25
+
26
+ ### Install the Claude Code plugin
27
+
28
+ ```bash
29
+ # From the marketplace
30
+ claude plugin marketplace add basnijholt/agent-cli
31
+
32
+ # Then install
33
+ claude plugin install agent-cli@agent-cli-dev
34
+ ```
35
+
36
+ ## Usage
37
+
38
+ Once installed, Claude Code can automatically use this skill when you ask to:
39
+
40
+ - "Work on multiple features in parallel"
41
+ - "Spawn agents for auth, payments, and notifications"
42
+ - "Create a worktree for this bug fix"
43
+ - "Delegate this task to a separate agent"
44
+
45
+ ## Key Commands
46
+
47
+ ```bash
48
+ # Create worktree with AI agent
49
+ agent-cli dev new my-feature --agent --prompt "Implement the login page"
50
+
51
+ # Use prompt file for longer tasks
52
+ agent-cli dev new my-feature --agent --prompt-file task.md
53
+
54
+ # Check status of all worktrees
55
+ agent-cli dev status
56
+
57
+ # Clean up merged worktrees
58
+ agent-cli dev clean --merged
59
+ ```
60
+
61
+ ## Documentation
62
+
63
+ Full documentation: [docs/commands/dev.md](https://github.com/basnijholt/agent-cli/blob/main/docs/commands/dev.md)