shell-plugin/README.md
A powerful ZSH plugin that provides intelligent command transformation, file tagging, and conversation management for the Forge AI assistant.
:command syntax into forge executions:agent_name@[filename] syntaxBefore using this plugin, ensure you have the following tools installed:
# macOS (using Homebrew)
brew install fzf fd
# Ubuntu/Debian
sudo apt install fzf fd-find
# Arch Linux
sudo pacman -S fzf fd
Begin any command with : followed by your prompt:
: Get the current time
This automatically starts a new conversation with the default Forge agent.
Specify an agent by name after the colon:
:sage How does caching work in this system?
:muse Create a deployment strategy for my app
Tab Completion: Type : followed by partial agent name and press TAB for interactive selection.
Tag files in your commands using the @[filename] syntax:
: Review this code @[src/main.rs]
: Explain the configuration in @[config.yaml]
Interactive Selection: Type @ and press TAB to search and select files interactively using fuzzy finder.
Commands within the same session maintain context:
# First command
: My project uses React and TypeScript
# Second command (remembers previous context)
: How can I optimize the build process?
The plugin automatically manages conversation IDs to maintain context across related commands.
Shell commands should follow the Object-Action format.
Examples:
:provider-login:sync-statusFor backward compatibility, :login remains available as an alias for :provider-login.
Clear the current conversation context and start fresh:
:new
# or use the alias
:n
This will:
View system and project information:
:info
# or use the alias
:i
This displays:
System information
Project details
Current configuration
Current configuration
Browse and switch between conversations interactively:
:conversation
# or use the alias
:c
This will display an interactive list of all conversations with preview, allowing you to select and switch.
Switch to a specific conversation by ID:
:conversation <conversation_id>
Toggle between current and previous conversation (like cd -):
:conversation -
# or
:c -
The plugin remembers your previous conversation, allowing you to quickly toggle back and forth. This works just like cd - in your shell, and also works with :new - when you start a new conversation, you can toggle back to your previous one.
If there's no previous conversation tracked (e.g., first time using the plugin), :c - will show the conversation list popup, allowing you to select a conversation.
This is useful when:
Create a copy of an existing conversation with interactive selection:
:clone
This will:
You can also clone a specific conversation by providing its ID:
:clone <conversation_id>
This is useful when you want to:
The plugin automatically displays session information including:
The plugin provides visual feedback through syntax highlighting:
@[filename]): Displayed in green bold:agent): Agent names in yellow boldCustomize the plugin behavior by setting these variables before loading the plugin:
# Custom forge binary location
export FORGE_BIN="/path/to/custom/forge"
FORGE_BIN: Path to the forge executable (default: forge)FORGE_EDITOR: Editor command to use for :edit command (default: $EDITOR or nano)FORGE_SYNC_ENABLED: Enable/disable automatic workspace sync (default: true)FORGE_MAX_COMMIT_DIFF: Maximum diff size for commit message generation in bytes (default: 100000)FORGE_SKIP_INTERACTIVE: Skip interactive prompts (internal use)FORGE_CURRENCY_SYMBOL: Currency symbol for cost display in ZSH theme (default: "$")FORGE_CURRENCY_CONVERSION_RATE: Conversion rate for currency display (default: 1.0)NERD_FONT: Enable Nerd Font icons in ZSH theme (default: auto-detected, set to "1" or "true" to enable, "0" or "false" to disable)USE_NERD_FONT: Alternative variable for enabling Nerd Font icons (same behavior as NERD_FONT):):new or :nSync your codebase for semantic search:
:sync
This will index the current directory for semantic code search.
Run comprehensive environment diagnostics to check your Forge setup:
:doctor
This will check:
The plugin creates a .forge directory in your current working directory (similar to .git) for temporary files:
FORGE_EDITMSG.md: Temporary file used when opening an external editor with :editAll transformed commands are properly saved to ZSH history, allowing you to:
Ctrl+R@) and agents (:):commands: What's the weather like?
:sage Explain the MVC pattern
:planner Help me structure this project
: Review this implementation @[src/auth.rs]
: Debug the issue in @[logs/error.log] @[config/app.yml]
: I'm working on a Rust web API
: What are the best practices for error handling?
: Show me an example with @[src/errors.rs]
:info
:new
: New conversation starts here
# Sync current directory for semantic search
:sync