Skip to main content

Extensions Gallery

This page provides an overview of all available extensions in the AiderDesk repository. Each extension demonstrates different capabilities and patterns you can use as reference when building your own extensions.

Production Extensions

Ready-to-use extensions that add functionality to AiderDesk.

ExtensionDescriptionAPI Usage
bmadBMAD Method workflows for planning, designing, and implementing software projectsonLoad, getModes, getUIComponents, onTaskUpdated, onAgentStarted, onToolApproval, triggerUIComponentsReload
questionsExtracts questions from messages and displays as interactive questionnaireonLoad, onUnload, getCommands, getUIComponents, getUIExtensionData, TaskContext.getContextMessages, TaskContext.generateText
wakatime.tsTracks coding activity by sending heartbeats to WakaTimeonLoad, onPromptStarted, onPromptFinished, onToolFinished, onFilesAdded
protected-paths.tsBlocks file operations on protected paths (.env, .git/, node_modules/)onLoad, onToolCalled
permission-gate.tsPrompts for confirmation before running dangerous bash commandsonLoad, onToolCalled, TaskContext.askQuestion
ultrathink.tsDetects "ultrathink" / "think hard" and increases reasoning effortonLoad, onAgentStarted
external-rules.tsIncludes rule files from Cursor, Claude Code, and Roo CodeonLoad, onRuleFilesRetrieved
sound-notification.tsPlays a "Jobs Done" sound when a prompt finishesonLoad, onPromptFinished
sandboxOS-level sandboxing for bash commands using @anthropic-ai/sandbox-runtimeonLoad, onToolCalled
rtkRewrites shell commands to RTK equivalents, reducing token usage by 60-90%onLoad, getCommands, onToolCalled
redact-secretsRedacts secret values from .env* files in file read resultsonToolFinished
chunkhound-searchProvides chunkhound-search tool for semantic code searchgetTools, onProjectStarted, onToolFinished
fffFast file content search using FFF (Freakin Fast File Finder) — replaces the internal grep toolonLoad, onUnload, onProjectStarted, getTools
seekFast ranked code search using seek (zoekt) — replaces the internal grep toolonLoad, onUnload, getTools, onProjectStarted
tree-sitter-repo-mapEnhanced repository map using tree-sitter parsing with PageRank-based symbol rankingonLoad, getCommands, onAgentStarted
tps-counterDisplays tokens per second for agent responses with UI components in usage info and message baronLoad, onUnload, onResponseChunk, onResponseCompleted, getUIComponents, getUIExtensionData, getCommands, triggerUIDataRefresh
programmatic-tool-callsExecute JavaScript code in a sandbox with access to all tools as async functionsgetTools
lspLanguage Server Protocol integration for code intelligenceonLoad, onUnload, getTools, onToolFinished, onProjectStarted, onProjectStopped
context-autocompletion-wordsAdds custom words to context file autocompletiononLoad, onFilesAdded, onFilesDropped, TaskContext.getContextFiles, TaskContext.updateAutocompletionWords
plannotatorComprehensive planning assistant with structured plan filesonLoad, onUnload, getModes, getTools, getCommands, onToolCalled, onToolApproval, onAgentStarted, onAgentFinished, onTaskInitialized, onTaskClosed, onImportantReminders
multi-model-runRun the same prompt across multiple models simultaneouslyonLoad, getUIComponents, getUIExtensionData, executeUIExtensionAction, onPromptStarted, ProjectContext.duplicateTask, ProjectContext.getTask, TaskContext.runPrompt

Learning Examples

Simple extensions designed for learning the extension API patterns.

ExtensionDescriptionAPI Usage
pirate.tsAdds a Pirate agent that speaks like a swashbuckling sea dogonLoad, getAgents, onAgentProfileUpdated
ui-placement-demo.tsDemonstrates all available UI component placement locationsonLoad, getUIComponents
chunkhound-on-semantic-search-toolOverrides power---semantic_search to use ChunkHoundonToolCalled, onToolFinished, onProjectStarted
theme.tsAdds /theme command to switch AiderDesk themesonLoad, getCommands, ExtensionContext.updateSettings
generate-tests.tsAdds /generate-tests command to generate unit tests for filesonLoad, getCommands, TaskContext.runPrompt
plan-mode.tsAdds a Plan mode that enforces planning before codingonLoad, getModes, onAgentStarted

UI Components

Extensions can render custom React components in various locations throughout the AiderDesk interface.

Finding the Right Placement

To determine the best placement for your UI component:

  1. Install the ui-placement-demo extension to see all available placements in action
  2. Each placement is shown with a chip indicating its location name
  3. Choose the placement that best fits your component's purpose
UI Placement Demo Extension
# Install the placement demo extension
npx @aiderdesk/extensions install ui-placement-demo

UI Component Examples

  • ui-placement-demo.ts - Simple demo showing all placements with static chips (getUIComponents)
  • active-files-counter.ts - Simple UI component with data loading and tooltip (getUIComponents, getUIExtensionData)
  • tps-counter - UI with event tracking and data refresh (getUIComponents, getUIExtensionData, onResponseChunk, onResponseCompleted, triggerUIDataRefresh)
  • multi-model-run - Complex example with state management, data loading, and action handling (getUIComponents, getUIExtensionData, executeUIExtensionAction)

Installing Extensions

The easiest way to install extensions is using the CLI tool:

# Interactive selection - choose from all available extensions
npx @aiderdesk/extensions install

# Install a specific extension by ID
npx @aiderdesk/extensions install sound-notification
npx @aiderdesk/extensions install pirate --global

# Install to global extensions (available to all projects)
npx @aiderdesk/extensions install --global

# List all available extensions
npx @aiderdesk/extensions list

The CLI automatically handles:

  • Downloading single-file extensions
  • Cloning and setting up folder-based extensions
  • Installing dependencies for folder extensions
  • Both global and project-level installation

Manual Download

Alternatively, you can manually download extensions:

Single-File Extension

# Download to global extensions
curl -o ~/.aider-desk/extensions/sound-notification.ts \
https://raw.githubusercontent.com/hotovo/aider-desk/main/packages/extensions/extensions/sound-notification.ts

Folder-Based Extension

# Clone and copy
git clone --depth 1 https://github.com/hotovo/aider-desk temp-aider
cp -r temp-aider/packages/extensions/extensions/sandbox ~/.aider-desk/extensions/
cd ~/.aider-desk/extensions/sandbox
npm install
rm -rf temp-aider

Use as Template

Copy an extension that matches your needs and modify it:

  1. Choose an extension with similar capabilities
  2. Copy it to your extensions directory
  3. Modify the class name and implementation
  4. Update the metadata
  5. Save and test (hot reload applies changes automatically)