agent-cli 0.62.0__tar.gz → 0.64.0__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.
- {agent_cli-0.62.0/agent_cli/dev/skill → agent_cli-0.64.0/.claude/skills/agent-cli-dev}/SKILL.md +3 -2
- agent_cli-0.64.0/.claude-plugin/README.md +63 -0
- agent_cli-0.64.0/.claude-plugin/marketplace.json +8 -0
- agent_cli-0.64.0/.claude-plugin/plugin.json +7 -0
- {agent_cli-0.62.0/.claude → agent_cli-0.64.0/.claude-plugin}/skills/agent-cli-dev/SKILL.md +3 -2
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.pre-commit-config.yaml +6 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/PKG-INFO +1 -1
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/cli.py +23 -0
- agent_cli-0.64.0/agent_cli/dev/skill/SKILL.md +136 -0
- agent_cli-0.64.0/agent_cli/dev/skill/examples.md +510 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_retrieval.py +18 -8
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/api.py +1 -1
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/client.py +1 -1
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/engine.py +1 -1
- agent_cli-0.64.0/agent_cli/scripts/check_plugin_skill_sync.py +50 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/wyoming_handler.py +22 -27
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/architecture/memory.md +3 -3
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/dev.md +4 -4
- {agent_cli-0.62.0/agent_cli/dev/skill → agent_cli-0.64.0/.claude/skills/agent-cli-dev}/examples.md +0 -0
- {agent_cli-0.62.0/.claude → agent_cli-0.64.0/.claude-plugin}/skills/agent-cli-dev/examples.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.cursorrules +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.env.example +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/logo.svg +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/release-drafter.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/renovate.json +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/automerge.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/docker-tts.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/docker-whisper.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/docs.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/markdown-code-runner.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/pytest.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/release-drafter.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/release.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.github/workflows/toc.yaml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.gitignore +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.jscpd.json +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.prompts/docs-review.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/.prompts/pr-review.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/CLAUDE.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/LICENSE +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/README.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/__main__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/_tools.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/_voice_agent_common.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/assistant.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/autocorrect.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/chat.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/memory/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/memory/add.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/memory/proxy.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/rag_proxy.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/speak.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/transcribe.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/transcribe_daemon.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/agents/voice_edit.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/api.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/cli.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/config.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/config_cmd.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/constants.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/audio.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/audio_format.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/chroma.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/deps.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/openai_proxy.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/process.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/reranker.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/sse.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/transcription_logger.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/utils.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/vad.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/core/watch.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/aider.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/base.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/claude.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/codex.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/continue_dev.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/copilot.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/cursor_agent.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/gemini.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/opencode.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/coding_agents/registry.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/base.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/cursor.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/emacs.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/jetbrains.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/nano.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/neovim.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/registry.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/sublime.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/vim.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/vscode.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/editors/zed.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/project.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/registry.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/apple_terminal.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/base.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/gnome.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/iterm2.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/kitty.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/registry.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/tmux.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/warp.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/terminals/zellij.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/dev/worktree.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/docs_gen.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/example-config.toml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/install/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/install/common.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/install/hotkeys.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/install/services.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_files.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_filters.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_git.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_indexer.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_ingest.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_persistence.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_prompt.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_store.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_streaming.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/_tasks.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/entities.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/memory/models.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/opts.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/py.typed +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/_indexer.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/_indexing.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/_prompt.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/_retriever.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/_store.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/_utils.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/api.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/client.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/engine.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/rag/models.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/.runtime/.gitkeep +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/linux-hotkeys/README.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/linux-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/linux-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/linux-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/macos-hotkeys/README.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/macos-hotkeys/skhd-config-example +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/macos-hotkeys/toggle-autocorrect.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/macos-hotkeys/toggle-transcription.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/macos-hotkeys/toggle-voice-edit.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/nvidia-asr-server/README.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/nvidia-asr-server/pyproject.toml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/nvidia-asr-server/server.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/nvidia-asr-server/shell.nix +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/nvidia-asr-server/uv.lock +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run-openwakeword.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run-piper-windows.ps1 +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run-piper.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run-whisper-linux.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run-whisper-macos.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run-whisper-windows.ps1 +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run-whisper.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/run_faster_whisper_server.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/setup-linux-hotkeys.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/setup-linux.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/setup-macos-hotkeys.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/setup-macos.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/setup-windows.ps1 +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/start-all-services-windows.ps1 +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/scripts/start-all-services.sh +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/cli.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/common.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/model_manager.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/model_registry.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/proxy/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/proxy/api.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/streaming.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/api.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/backends/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/backends/base.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/backends/kokoro.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/backends/piper.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/model_manager.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/model_registry.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/tts/wyoming_handler.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/api.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/backends/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/backends/base.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/backends/faster_whisper.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/backends/mlx.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/languages.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/model_manager.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/server/whisper/model_registry.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/services/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/services/_wyoming_utils.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/services/asr.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/services/llm.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/services/tts.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/agent_cli/services/wake_word.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docker/docker-compose.yml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docker/tts.Dockerfile +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docker/whisper.Dockerfile +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/CNAME +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/architecture/index.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/architecture/rag.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/assistant.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/autocorrect.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/chat.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/config.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/index.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/install-hotkeys.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/install-services.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/memory.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/rag-proxy.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/server/index.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/server/transcription-proxy.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/server/tts.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/server/whisper.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/speak.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/start-services.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/transcribe-daemon.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/transcribe.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/commands/voice-edit.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/configuration.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/getting-started.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/iOS_Shortcut_Guide.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/index.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/installation/docker.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/installation/index.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/installation/linux.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/installation/macos.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/installation/nixos.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/installation/windows.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/logo-clean.svg +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/overrides/partials/integrations/analytics/custom.html +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/run_markdown_code_runner.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/docs/system-integration.md +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/example.agent-cli-config.toml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/justfile +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/pyproject.toml +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/shell.nix +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_fix_my_text.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_interactive.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_interactive_extra.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_memory_add.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_speak.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_speak_e2e.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_transcribe.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_transcribe_agent.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_transcribe_daemon.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_transcribe_e2e.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_transcribe_recovery.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_tts_common.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_tts_common_extra.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_voice_agent_common.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_voice_edit.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_voice_edit_e2e.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/agents/test_wake_word_assistant.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/conftest.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/core/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/core/test_audio_format.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/core/test_chroma.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/core/test_sse.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/core/test_vad.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/core/test_watch.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/test_cli.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/test_coding_agents.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/test_editors.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/test_project.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/test_terminals.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/test_verification.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/dev/test_worktree.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_api_health.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_api_integration_liveish.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_client.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_engine.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_files.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_filters.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_git_integration.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_indexer.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_memory_integration.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_proxy_passthrough.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_store.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/memory/test_utils.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/mocks/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/mocks/audio.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/mocks/llm.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/mocks/wyoming.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/__init__.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_api.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_engine.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_history.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_indexer.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_indexing.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_rag_client.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_rag_integration_liveish.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_rag_proxy_passthrough.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_retriever.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_store.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/rag/test_utils.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_api.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_api_integration.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_asr.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_asr_recovery.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_audio_e2e.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_cli.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_config.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_config_cmd.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_docs_gen.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_env_vars.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_json_output.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_llm.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_llm_gemini.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_memory_tools.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_mlx_backend.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_process_manager.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_server_streaming.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_server_tts.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_server_whisper.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_services.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_tools.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_tts.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_utils.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_wake_word.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/tests/test_wyoming_utils.py +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/uv.lock +0 -0
- {agent_cli-0.62.0 → agent_cli-0.64.0}/zensical.toml +0 -0
{agent_cli-0.62.0/agent_cli/dev/skill → agent_cli-0.64.0/.claude/skills/agent-cli-dev}/SKILL.md
RENAMED
|
@@ -47,8 +47,9 @@ agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
|
|
|
47
47
|
This creates:
|
|
48
48
|
1. A new git worktree with its own branch
|
|
49
49
|
2. Runs project setup (installs dependencies)
|
|
50
|
-
3.
|
|
51
|
-
4.
|
|
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
|
|
52
53
|
|
|
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.
|
|
54
55
|
|
|
@@ -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
|
|
21
|
+
|
|
22
|
+
# Or run directly without installing
|
|
23
|
+
uvx 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)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "./.claude-plugin",
|
|
3
|
+
"repository": "https://github.com/basnijholt/agent-cli",
|
|
4
|
+
"homepage": "https://github.com/basnijholt/agent-cli",
|
|
5
|
+
"documentation": "https://github.com/basnijholt/agent-cli/blob/main/docs/commands/dev.md",
|
|
6
|
+
"keywords": ["git", "worktree", "parallel", "agents", "development", "claude", "ai"],
|
|
7
|
+
"license": "MIT"
|
|
8
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agent-cli-dev",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"author": "basnijholt",
|
|
5
|
+
"description": "Spawn parallel AI coding agents in isolated git worktrees. Creates isolated development environments with automatic project setup, letting you work on multiple features simultaneously with different AI agents (Claude, Codex, Gemini, Aider).",
|
|
6
|
+
"skills": ["./skills/agent-cli-dev"]
|
|
7
|
+
}
|
|
@@ -47,8 +47,9 @@ agent-cli dev new <branch-name> --agent --prompt-file path/to/prompt.md
|
|
|
47
47
|
This creates:
|
|
48
48
|
1. A new git worktree with its own branch
|
|
49
49
|
2. Runs project setup (installs dependencies)
|
|
50
|
-
3.
|
|
51
|
-
4.
|
|
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
|
|
52
53
|
|
|
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.
|
|
54
55
|
|
|
@@ -35,3 +35,9 @@ repos:
|
|
|
35
35
|
types: [python]
|
|
36
36
|
pass_filenames: false
|
|
37
37
|
always_run: true
|
|
38
|
+
- id: check-plugin-skill-sync
|
|
39
|
+
name: check plugin skill files in sync
|
|
40
|
+
entry: python scripts/check_plugin_skill_sync.py
|
|
41
|
+
language: python
|
|
42
|
+
pass_filenames: false
|
|
43
|
+
files: (agent_cli/dev/skill/|\.claude-plugin/skills/|\.claude/skills/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.64.0
|
|
4
4
|
Summary: A suite of AI-powered command-line tools for text correction, audio transcription, and voice assistance.
|
|
5
5
|
Project-URL: Homepage, https://github.com/basnijholt/agent-cli
|
|
6
6
|
Author-email: Bas Nijholt <bas@nijho.lt>
|
|
@@ -344,6 +344,19 @@ def _launch_editor(path: Path, editor: Editor) -> None:
|
|
|
344
344
|
_warn(f"Could not open editor: {e}")
|
|
345
345
|
|
|
346
346
|
|
|
347
|
+
def _write_prompt_to_worktree(worktree_path: Path, prompt: str) -> Path:
|
|
348
|
+
"""Write the prompt to .claude/TASK.md in the worktree.
|
|
349
|
+
|
|
350
|
+
This makes the task description available to the spawned agent
|
|
351
|
+
and provides a record of what was requested.
|
|
352
|
+
"""
|
|
353
|
+
claude_dir = worktree_path / ".claude"
|
|
354
|
+
claude_dir.mkdir(parents=True, exist_ok=True)
|
|
355
|
+
task_file = claude_dir / "TASK.md"
|
|
356
|
+
task_file.write_text(prompt + "\n")
|
|
357
|
+
return task_file
|
|
358
|
+
|
|
359
|
+
|
|
347
360
|
def _format_env_prefix(env: dict[str, str]) -> str:
|
|
348
361
|
"""Format environment variables as shell prefix.
|
|
349
362
|
|
|
@@ -627,6 +640,11 @@ def new( # noqa: PLR0912, PLR0915
|
|
|
627
640
|
# Only warn if user explicitly requested direnv
|
|
628
641
|
_warn("direnv not installed, skipping .envrc setup")
|
|
629
642
|
|
|
643
|
+
# Write prompt to worktree (makes task available to the spawned agent)
|
|
644
|
+
if prompt:
|
|
645
|
+
task_file = _write_prompt_to_worktree(result.path, prompt)
|
|
646
|
+
_success(f"Wrote task to {task_file.relative_to(result.path)}")
|
|
647
|
+
|
|
630
648
|
# Resolve editor and agent
|
|
631
649
|
resolved_editor = _resolve_editor(editor, editor_name, default_editor)
|
|
632
650
|
resolved_agent = _resolve_agent(agent, agent_name, default_agent)
|
|
@@ -1039,6 +1057,11 @@ def start_agent(
|
|
|
1039
1057
|
if not agent.is_available():
|
|
1040
1058
|
_error(f"{agent.name} is not installed. Install from: {agent.install_url}")
|
|
1041
1059
|
|
|
1060
|
+
# Write prompt to worktree (makes task available to the agent)
|
|
1061
|
+
if prompt:
|
|
1062
|
+
task_file = _write_prompt_to_worktree(wt.path, prompt)
|
|
1063
|
+
_success(f"Wrote task to {task_file.relative_to(wt.path)}")
|
|
1064
|
+
|
|
1042
1065
|
merged_args = _merge_agent_args(agent, agent_args)
|
|
1043
1066
|
agent_env = _get_agent_env(agent)
|
|
1044
1067
|
_info(f"Starting {agent.name} in {wt.path}...")
|
|
@@ -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
|
|
17
|
+
|
|
18
|
+
# Or run directly without installing
|
|
19
|
+
uvx 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
|