skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
aws-samples/sample-strands-agent-with-agentcore157 installs

code-interpreter

Test and prototype code in a sandboxed environment. Use for debugging, verifying logic, or installing packages.

How do I install this agent skill?

npx skills add https://github.com/aws-samples/sample-strands-agent-with-agentcore --skill code-interpreter
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubwarn

    This skill provides a comprehensive environment for executing code and shell commands. While designed as a sandboxed code interpreter, the combination of arbitrary execution, file system access, and network connectivity presents significant security risks, including potential data exfiltration and indirect prompt injection.

  • Socketpass

    No alerts

  • Snykwarn

    Risk: MEDIUM · No issues

  • Runlayerpass

    1 file scanned · No issues

  • ZeroLeakspass

    1 finding · Score: 86/100

What does this agent skill do?

Code Interpreter

A general-purpose code execution environment powered by AWS Bedrock AgentCore Code Interpreter. Run code, execute shell commands, and manage files in a secure sandbox.

Available Tools

  • execute_code(code, language, output_filename): Execute Python, JavaScript, or TypeScript code.
  • execute_command(command): Execute shell commands.
  • file_operations(operation, paths, content): Read, write, list, or remove files in the mounted session workspace.

Tool Parameters

execute_code

ParameterTypeRequiredDefaultDescription
codestringYesCode to execute. Use print() for text output.
languagestringNo"python""python", "javascript", or "typescript"
output_filenamestringNo""File to publish as a durable session file. Code must save a file with this exact name.

execute_command

ParameterTypeRequiredDescription
commandstringYesShell command to execute (e.g., "ls -la", "pip install requests").

file_operations

ParameterTypeRequiredDescription
operationstringYes"read", "write", "list", or "remove"
pathslistFor read/list/removeFile paths. read: ["file.txt"], list: ["."], remove: ["old.txt"]
contentlistFor writeEntries with path and text: [{"path": "out.txt", "text": "hello"}]

tool_input Examples

execute_code — text output

{
  "code": "import pandas as pd\ndf = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})\nprint(df.describe())",
  "language": "python"
}

execute_code — generate chart

{
  "code": "import matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\nimport numpy as np\nx = np.linspace(0, 10, 100)\nplt.figure(figsize=(10,6))\nplt.plot(x, np.sin(x))\nplt.title('Sine Wave')\nplt.savefig('sine.png', dpi=300, bbox_inches='tight')\nprint('Done')",
  "language": "python",
  "output_filename": "sine.png"
}

execute_command — install a package

{
  "command": "pip install yfinance"
}

execute_command — check environment

{
  "command": "python --version && pip list | head -20"
}

file_operations — write a file

{
  "operation": "write",
  "content": [{"path": "config.json", "text": "{\"key\": \"value\"}"}]
}

file_operations — list files

{
  "operation": "list",
  "paths": ["."]
}

file_operations — read a file

{
  "operation": "read",
  "paths": ["output.csv"]
}

When to Use This Skill

Use code-interpreter as a sandbox for testing and prototyping code. For production tasks (creating documents, charts, presentations), prefer specialized skills.

Do NOT use for:

  • Formatting or displaying code examples (respond directly with markdown code blocks)
  • Explaining code or algorithms (respond directly with text)
  • Simple calculations you can do mentally (just provide the answer)
  • Any task that doesn't require actual code execution
TaskRecommended SkillNotes
Create charts/diagramsvisual-designUse this first for production charts
Create Word documentsword-documentsHas template support and styling
Create Excel spreadsheetsexcel-spreadsheetsHas formatting pipeline and validation
Create PowerPointpowerpoint-presentationsHas layout system and design patterns
Test code snippetscode-interpreterDebug, verify logic, check output
Prototype algorithmscode-interpreterExperiment before implementing
Install/test packagescode-interpreterCheck compatibility, test APIs
Debug code logiccode-interpreterIsolate and test specific functions
Verify calculationscode-interpreterQuick math or data checks

Code Interpreter vs Code Agent

Code InterpreterCode Agent
NatureSandboxed execution environmentAutonomous agent (Claude Code)
Best forQuick scripts, data analysis, prototypingMulti-file projects, refactoring, test suites
File persistenceFiles in /mnt/workspace persist across interpreter restartsAll files auto-synced to S3
Session stateVariables persist within one interpreter session; workspace files persist for the chat sessionFiles + conversation persist across sessions
AutonomyYou write the codeAgent plans, writes, runs, and iterates
Use whenYou need to run a specific piece of codeYou need an engineer to solve a problem end-to-end

Workspace Integration

The chat session has a persistent filesystem mounted at /mnt/workspace. Relative file paths used by Code Interpreter tools resolve inside this directory. Files written there are scratch files and remain available when the interpreter session is restarted. They are not user-downloadable artifacts unless output_filename is supplied.

The mount is required. If it cannot be configured or attached, Code Interpreter returns an error instead of starting an isolated non-persistent session.

Create persistent files directly:

{
  "tool": "execute_code",
  "code": "from pathlib import Path\nPath('/mnt/workspace/results.json').write_text('{\"ok\": true}')"
}

Use output_filename whenever a generated file must appear in Generated Files or be downloadable by the user. The tool publishes and verifies that file before returning success. Do not create Markdown links to /mnt/workspace or describe raw workspace paths as download links; the application renders the file action.

Uploaded files:

Files uploaded by the user are available in the mounted workspace without manual loading or base64 transfer under /mnt/workspace/inputs. JSON, JSONL, and NDJSON attachments may be represented by a bounded text excerpt in the conversation; use the mounted file when the full dataset is needed.

Use file_operations for scratch-file inspection. Published files are surfaced by the application and should be referenced by their displayed filename.

Environment

  • Languages: Python (recommended, 200+ libraries), JavaScript, TypeScript
  • Shell: Full shell access via execute_command
  • File system: /mnt/workspace persists across Code Interpreter restarts for the chat session
  • Session state: Variables persist within one interpreter session; files persist in the mounted workspace
  • Network: Internet access available (can use requests, urllib, curl)

Supported Languages

  • Python (recommended) — 200+ pre-installed libraries covering data science, ML, visualization, file processing
  • JavaScript — Node.js runtime, useful for JSON manipulation, async operations
  • TypeScript — TypeScript runtime with type checking

Pre-installed Python Libraries

Data Analysis & Visualization

LibraryCommon Use
pandasDataFrames, CSV/Excel I/O, groupby, pivot
numpyArrays, linear algebra, random, statistics
matplotlibLine, bar, scatter, histogram, subplots
plotlyInteractive charts, 3D plots
bokehInteractive visualization
scipyOptimization, interpolation, signal processing
statsmodelsRegression, time series, hypothesis tests
sympyAlgebra, calculus, equation solving

Machine Learning & AI

LibraryCommon Use
scikit-learnClassification, regression, clustering, pipelines
torch / torchvision / torchaudioDeep learning, computer vision, audio
xgboostHigh-performance gradient boosting
spacy / nltk / textblobNLP, tokenization, NER, sentiment
scikit-imageImage processing, filters, segmentation

Mathematical & Optimization

LibraryCommon Use
cvxpyConvex optimization, portfolio optimization
ortoolsScheduling, routing, constraint programming
pulpLinear programming
z3-solverSAT solving, formal verification
networkx / igraphGraph algorithms, network analysis

File Processing & Documents

LibraryCommon Use
openpyxl / xlrd / XlsxWriterExcel read/write with formatting
python-docxWord document creation/modification
python-pptxPowerPoint creation/modification
PyPDF2 / pdfplumber / reportlabPDF read/write/generate
lxml / beautifulsoup4XML/HTML parsing
markitdownConvert various formats to Markdown

Image & Media

LibraryCommon Use
pillow (PIL)Image resize, crop, filter, conversion
opencv-python (cv2)Computer vision, feature detection
imageio / moviepyImage/video I/O and editing
pydubAudio manipulation
svgwrite / WandSVG creation, ImageMagick

Data Storage & Formats

LibraryCommon Use
duckdbSQL queries on DataFrames and files
SQLAlchemySQL ORM and database abstraction
pyarrowParquet and Arrow format processing
orjson / ujson / PyYAMLFast JSON/YAML parsing

Web & API

LibraryCommon Use
requests / httpxHTTP requests, API calls
beautifulsoup4Web scraping
fastapi / Flask / DjangoWeb frameworks

Utilities

LibraryCommon Use
pydanticData validation, schema definition
FakerTest data generation
richPretty printing, tables
cryptographyEncryption, hashing
qrcodeQR code generation
boto3AWS SDK

For the full list of 200+ libraries with versions, run: execute_command(command="pip list")

Usage Patterns

Pattern 1: Data Analysis

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'date': pd.date_range('2024-01-01', periods=100),
    'revenue': np.random.normal(1000, 200, 100),
    'costs': np.random.normal(700, 150, 100),
})
df['profit'] = df['revenue'] - df['costs']

print("=== Summary Statistics ===")
print(df.describe())
print(f"\nTotal Profit: ${df['profit'].sum():,.2f}")
print(f"Profit Margin: {df['profit'].mean() / df['revenue'].mean() * 100:.1f}%")

Pattern 2: Visualization (with output_filename)

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(2, 2, figsize=(14, 10))

categories = ['Q1', 'Q2', 'Q3', 'Q4']
values = [120, 150, 180, 210]
axes[0,0].bar(categories, values, color='#2196F3')
axes[0,0].set_title('Quarterly Revenue')

x = np.linspace(0, 10, 50)
axes[0,1].plot(x, np.sin(x), 'b-', linewidth=2)
axes[0,1].set_title('Trend')

sizes = [35, 30, 20, 15]
axes[1,0].pie(sizes, labels=['A','B','C','D'], autopct='%1.1f%%')
axes[1,0].set_title('Market Share')

x = np.random.normal(50, 10, 200)
y = x * 1.5 + np.random.normal(0, 15, 200)
axes[1,1].scatter(x, y, alpha=0.5, c='#FF5722')
axes[1,1].set_title('Correlation')

plt.tight_layout()
plt.savefig('dashboard.png', dpi=300, bbox_inches='tight')
print('Dashboard saved')

Pattern 3: Machine Learning

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from sklearn.datasets import load_iris

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.3, random_state=42
)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

print(classification_report(y_test, y_pred, target_names=iris.target_names))

Pattern 4: SQL with DuckDB

import duckdb
import pandas as pd

orders = pd.DataFrame({
    'order_id': range(1, 101),
    'customer': [f'Customer_{i%20}' for i in range(100)],
    'amount': [round(50 + i * 3.5, 2) for i in range(100)],
})

result = duckdb.sql("""
    SELECT customer, COUNT(*) as cnt, ROUND(SUM(amount), 2) as total
    FROM orders GROUP BY customer
    HAVING COUNT(*) >= 3 ORDER BY total DESC LIMIT 10
""").df()
print(result.to_string(index=False))

Pattern 5: Fetch Data from Web

import requests
import pandas as pd

response = requests.get("https://api.example.com/data")
data = response.json()
df = pd.DataFrame(data)
print(df.head())

Pattern 6: Multi-step Workflow (session state persists)

Call 1: execute_code → load and clean data, store in variable `df`
Call 2: execute_code → analyze `df`, generate chart, save as PNG
Call 3: execute_code → export results to CSV
Call 4: file_operations(operation="read") → download the CSV

Variables (df) and files persist across calls in the same session.

Important Rules

  1. matplotlib.use('Agg') before import matplotlib.pyplot — sandbox has no display.
  2. Use print() for text output — stdout is how results are returned.
  3. output_filename must match exactly — the filename in plt.savefig() or wb.save() must match the output_filename parameter.
  4. Use execute_command for shell tasks — ls, pip install, curl, etc.
  5. Use file_operations for file management — read/write/list/remove files explicitly.
  6. Session state persists — variables and files remain across calls. Use this for multi-step workflows.

Common Mistakes to Avoid

  • Forgetting matplotlib.use('Agg') before import matplotlib.pyplot as plt
  • Using plt.show() instead of plt.savefig() — there is no display
  • Typo in output_filename — must match the file saved by the code exactly
  • Using execute_code for shell tasks — use execute_command instead
  • Writing binary files via file_operations — use execute_code to generate binary files, then download with output_filename

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/aws-samples/sample-strands-agent-with-agentcore/code-interpreter">View code-interpreter on skillZs</a>