Skip to main content

add-code-execution

Add code execution capability to AG2 agents using LocalCommandLineCodeExecutor or Docker. Use when the user wants agents that can write and run Python code.

Source facts

Repository
ag2ai/cursor-plugin
Last source activity
March 12, 2026 at 03:00
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
add-code-execution
description
Add code execution capability to AG2 agents using LocalCommandLineCodeExecutor or Docker. Use when the user wants agents that can write and run Python code.
# Add Code Execution to AG2 Agents You are an expert at setting up code execution in AG2 agent workflows. When the user wants agents that can write and run code: ## 1. Understand the Requirements Ask the user: - What language should the code be in? (Python is best supported) - Should execution be sandboxed? (Docker for production, local for development) - What packages/libraries does the code need access to? - Should there be a human approval step before execution? ## 2. Two-Agent Code Execution (Recommended) ```python import os from autogen import ConversableAgent, LLMConfig from autogen.coding import LocalCommandLineCodeExecutor llm_config = LLMConfig( {"model": "gpt-4o-mini", "api_key": os.environ["OPENAI_API_KEY"]} ) # Coder writes code coder = ConversableAgent( name="coder", system_message="""You are an expert Python developer. Write code to solve the user's task. Always put code in ```python blocks. When the task is complete, reply with TERMINATE.""", llm_config=llm_config, human_input_mode="NEVER", ) # Executor runs code and returns output executor = ConversableAgent( name="executor", llm_config=False, human_input_mode="NEVER", code_execution_config={ "executor": LocalCommandLineCodeExecutor( work_dir="./coding_output", timeout=60, ), }, is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", ""), max_consecutive_auto_reply=10, ) result = await executor.a_run( coder, message="Create a script that fetches the top 10 Python packages from PyPI and saves them to a CSV.", ) await result.process() ``` ## 3. Docker Execution (Production) ```python from autogen.coding import DockerCommandLineCodeExecutor executor = ConversableAgent( name="executor", llm_config=False, human_input_mode="NEVER", code_execution_config={ "executor": DockerCommandLineCodeExecutor( image="python:3.11-slim", work_dir="./coding_output", timeout=120, ), }, ) ``` ## 4. Human-Approved Execution For workflows where a human should review code before running: ```python executor = ConversableAgent( name="executor", llm_config=False, human_input_mode="ALWAYS", # Asks for approval before each execution code_execution_config={ "executor": LocalCommandLineCodeExecutor(work_dir="./output"), }, ) ``` ## 5. Code Execution in Group Chat ```python from autogen.agentchat import run_group_chat from autogen.agentchat.group.patterns import RoundRobinPattern planner = ConversableAgent( name="planner", system_message="You break tasks into coding steps.", llm_config=llm_config, human_input_mode="NEVER", description="Plans the coding approach.", ) coder = ConversableAgent( name="coder", system_message="You write Python code based on the plan. Put code in ```python blocks.", llm_config=llm_config, human_input_mode="NEVER", description="Writes Python code.", ) executor = ConversableAgent( name="executor", llm_config=False, human_input_mode="NEVER", code_execution_config={ "executor": LocalCommandLineCodeExecutor(work_dir="./output", timeout=60), }, description="Runs Python code and returns results.", ) user = ConversableAgent(name="user", llm_config=False, human_input_mode="NEVER") result = run_group_chat( pattern=RoundRobinPattern( initial_agent=planner, agents=[planner, coder, executor], user_agent=user, ), messages="Analyze the iris dataset and create a classification model.", max_rounds=12, ) ``` ## 6. Rules - Separate coder (LLM) from executor (no LLM) — don't give one agent both roles - Use `DockerCommandLineCodeExecutor` for untrusted code or production - Always set `timeout` to prevent infinite execution - Always set `max_consecutive_auto_reply` to limit retry loops - Set `work_dir` to isolate output files - Use `human_input_mode="ALWAYS"` during development for safety - The executor extracts code from ```python blocks automatically - Capital L in `LocalCommandLineCodeExecutor` (not `Commandline`)
View on GitHub