CLIco copy
DocsCLIco copy

co copy

Copy built-in tools, plugins, and prompt templates into your project so you can customize them, learn from them, or debug their behavior.

Quick Start: co copy --list to see what's available, then co copy Gmail to drop a tool into your project.

Quick Start

Terminalbash
$# See what is available
$co copy --list
$# Copy a tool
$co copy Gmail
$# Copy a plugin
$co copy re_act
$# Copy a prompt template
$co copy coding_agent

Why Copy?

Built-in tools work great out of the box. But sometimes you need to:

Add features

Extend functionality for your specific use case.

Modify behavior

Change how a tool works without forking the whole package.

Learn

Study the implementation patterns of well-tested tools.

Debug

Trace issues by stepping into source you control.

Copying gives you full control over the source code.

Usage

List Available Items

code
co copy --list
output
Available Items to Copy
┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ Type ┃ Path ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ gmail │ tool │ gmail.py │
│ memory │ tool │ memory.py │
│ shell │ tool │ shell.py │
│ ... │ │ │
│ re_act │ plugin │ re_act.py │
│ shell_approval │ plugin │ shell_approval.py │
│ coding_agent │ prompt │ coding_agent/ │
└────────────────────────┴────────┴───────────────────────────┘

Copy a Tool

code
co copy Gmail
output
Creates ./tools/gmail.py in your project.

Copy a Plugin

code
co copy re_act
output
Creates ./plugins/re_act.py in your project.

Copy a Prompt Template

code
co copy coding_agent
output
prompts/coding_agent/
├── prompts/
│ ├── main.md # Core agent behavior
│ └── tools/ # Per-tool guidance
│ ├── shell.md
│ ├── read.md
│ ├── write.md
│ └── todo.md
├── assembler.py # Prompt assembly utility
└── README.md

Copy Multiple Items

Terminalbash
$co copy Gmail Shell memory re_act

Custom Destination

Terminalbash
$co copy Gmail --path ./my_tools/

Force Overwrite

Terminalbash
$co copy Gmail --force

Available Tools

NameFileDescription
ask_userask_user.pyAsk user for input during agent execution
bashbash.pyBash command execution (Unix/Mac)
diff_writerdiff_writer.pyFile editing with diffs
get_emailsget_emails.pyFetch emails from inbox
gmailgmail.pyGmail integration (OAuth, send/receive)
google_calendargoogle_calendar.pyGoogle Calendar events
memorymemory.pyPersistent agent memory
microsoft_calendarmicrosoft_calendar.pyMicrosoft Calendar
outlookoutlook.pyOutlook/Microsoft email
send_emailsend_email.pySend emails
shellshell.pyShell command execution (cross-platform)
slash_commandslash_command.pyCustom command extension
terminalterminal.pyInteractive terminal sessions
todo_listtodo_list.pyTask list management
web_fetchweb_fetch.pyWeb scraping tool

Available Plugins

NameFileDescription
auto_compactauto_compact.pyAuto-compress context when nearing limit
calendar_plugincalendar_plugin.pyGoogle Calendar integration
evaleval.pyTask completion evaluation
gmail_plugingmail_plugin.pyGmail OAuth flow
image_result_formatterimage_result_formatter.pyBase64 image handling
prefer_write_toolprefer_write_tool.pyGuide agent to prefer write tool over shell
re_actre_act.pyReAct prompting pattern
shell_approvalshell_approval.pyUser confirmation for shell commands
skillsskills.pyAuto-discover and load skills (.co/skills/, .claude/skills/)
subagentssubagents.pySub-agent task delegation
system_remindersystem_reminder.pyInject contextual reminders into tool results
ui_streamui_stream.pyStream agent output to UI
ulwulw.pyUltra Light Work — autonomous continuous execution

Plugins with Prompts

Some plugins include prompt files. These are automatically copied together:

code
co copy system_reminder
output
./plugins/system_reminder.py
./prompts/system-reminders/
├── test-reminder.md
└── security-warning.md

After Copying

Update Your Imports

main.py
# Before (from package) from connectonion import Gmail # After (from your copy) from tools.gmail import Gmail

Customize the Code

Now you have full control:

main.py
# tools/gmail.py — your copy, modify freely! class Gmail: def send(self, to, subject, body): # Add your custom logic here self.log_to_my_system(to, subject) # Your addition # ... rest of original code

Options

OptionShortDescription
--list-lList available tools and plugins
--path-pCustom destination path
--force-fOverwrite existing files

Examples

Customize Gmail Tool

code
# Copy Gmail tool co copy gmail # Edit your copy at tools/gmail.py
main.py
# agent.py from tools.gmail import Gmail # Use your customized version agent = Agent("emailer", tools=[Gmail()])

Create Custom Plugin

code
# Copy re_act as a starting point co copy re_act # Modify plugins/re_act.py for your needs

Copy All Email Tools

Terminalbash
$co copy gmail outlook

Available TUI Components

NameFileDescription
chatchat.pyChat interface component
dividerdivider.pyVisual divider component
dropdowndropdown.pyDropdown selector
footerfooter.pyFooter bar component
fuzzyfuzzy.pyFuzzy search component
inputinput.pyText input component
keyskeys.pyKey binding handler
pickpick.pyItem picker component
providersproviders.pyModel provider selector
status_barstatus_bar.pyStatus bar component

Available Prompts

NameDirectoryDescription
coding_agentcoding_agent/Modular prompt template for coding assistants
cc_promptcc_prompt/Claude Code system prompt — 250 prompt pieces organized by category

Available Trust Policies

NameFileDescription
trust/openopen.mdDevelopment — allow all requests
trust/carefulcareful.mdTesting — whitelist + LLM for unknowns
trust/strictstrict.mdProduction — whitelist only

Star us on GitHub

If ConnectOnion saves you time, a ⭐ goes a long way — and earns you a coffee chat with our founder.