Agents Build
AWSOfficialCreated by aws-agentcore
- Skill
- Workflow
- Cloud and DevOps
- Apache-2.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The agents-build skill provides a structured workflow for adding advanced features to existing AgentCore projects. It acts as a central hub for configuring infrastructure and functional capabilities, such as cross-session memory, VPC connectivity, multi-agent delegation, and sandboxed code execution. The skill ensures project integrity by verifying the environment, checking for existing project configurations, and guiding the user through the appropriate implementation path based on their specific requirements.
What it does
- Adds cross-session memory to maintain user context.
- Configures VPC networking for secure access to private resources.
- Enables multi-agent systems with orchestrator-specialist patterns.
- Integrates browser and code interpreter tools for enhanced agent capabilities.
- Facilitates the migration of existing Bedrock Agents to AgentCore.
- Handles resource removal and project teardown.
When to use it
- When you need to expand an existing agent's functionality.
- When setting up private network connectivity for your agent.
- When transitioning from a single-agent to a multi-agent architecture.
- When you need to add sandboxed code execution or web browsing capabilities.
- When you need to clean up or remove specific agent resources.
Advantages
- Provides a consistent, guided workflow for complex configuration tasks.
- Prevents common errors by validating project context and naming conventions.
- Reduces manual setup time for infrastructure-heavy features like VPCs.
- Centralizes documentation and implementation steps for diverse agent capabilities.
Usage examples
- “add memory to my agent”
- The skill reads the project configuration and provides the necessary steps to implement cross-session memory storage.
- “I need to add a code interpreter to my agent”
- The skill guides you through the integration of the AgentCore Code Interpreter tool for sandboxed Python or JS execution.
- “how do I set up VPC connectivity?”
- The skill loads the VPC reference documentation and walks you through configuring subnets and security groups for your agent.
- “tear down my agent”
- The skill initiates the resource removal workflow to safely destroy the specified agent deployment.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/aws/agents-build/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip agents-build.zip -d .agents/skills
Documentation by aws-agentcore
build
Add capabilities to your AgentCore agent project.
When to use
Adding cross-session memory to your agent
Calling your deployed agent from a web app, mobile app, or backend service
Configuring VPC networking for private resources (RDS, internal APIs)
Building multi-agent systems with orchestrator/specialist patterns
Migrating an existing Bedrock Agent to AgentCore
Adding the Browser tool so the agent can navigate websites
Adding the Code Interpreter so the agent can execute code in a sandbox
Adding AgentCore Payments so the agent can pay for x402- or MPP-protected APIs, tools, or content
Removing resources from your project or tearing down a deployment
Do NOT use for:
Connecting to external tools/APIs via Gateway (OpenAPI specs, Lambda, MCP servers, credentials, policies) → use
agents-connectScaffolding a new project → use
agents-get-startedDeploying → use
agents-deploy
Input
$ARGUMENTS can be:
A capability: "memory", "integrate", "vpc", "multi-agent", "migrate", "browser", "code-interpreter", "payments", "teardown"
A description of what they want: "remember user preferences", "call from React app", "scrape a website", "run pandas in the agent", "delete my agent", "clean up resources"
Empty — the skill will determine the workflow from context
Process
Step 0: Verify CLI version
Run agentcore --version. This skill requires v0.9.0 or later.
If older: "Run agentcore update to get the latest version."
Step 1: Read project context
Read agentcore/agentcore.json to understand the current project — framework, existing resources, agent configuration.
If agentcore/agentcore.json is not found:
Check if the developer is in the wrong directory. Look for
agentcore/agentcore.jsonin parent directories (up to 3 levels). If found, tell them: "Found an AgentCore project at<path>. Are you working in that project?"If no project exists anywhere nearby, ask what capability they wanted to add. Then offer two paths:
"I can walk you through creating a project first and then adding CAPABILITY — want to do that?" (run the get-started flow inline, then continue with the build workflow)
"If you already have a project elsewhere,
cdinto it and try again."
Do not just say "go use agents-get-started" and stop — that loses the developer's context about what they actually wanted to do.
Step 2: Determine the workflow
Important disambiguation — before routing to a build reference, check if the prompt is actually a connect or debug concern:
If the phrase mentions external APIs, Lambda functions, OpenAPI specs, gateways, credentials, MCP servers, or policies → this is
agents-connect, not buildIf the developer says something is broken (wrong answers, errors, tool failures) → this is
agents-debug, not buildBuild is for adding new capabilities to a working project, not fixing broken ones
Based on the developer's prompt and $ARGUMENTS, load the appropriate reference:
| Developer intent | Reference to load |
|---|---|
| Add memory, remember things, user preferences, cross-session | references/memory.md |
| Call agent from app, invoke from code, streaming, SDK client, agent URL, execute shell in session | references/integrate.md |
| VPC, private network, RDS, internal API, subnet, security group | references/vpc.md |
| Multi-agent, orchestrator, specialist, A2A, delegation, agent handoff | references/multi-agent.md |
| Custom headers from caller to agent, header allowlist, tenant ID/correlation ID/trace propagation | references/request-headers.md |
| Migrate Bedrock Agent, import agent, move to AgentCore | references/migrate.md |
| Browser tool, web navigation, form filling, scraping, Nova Act, Playwright, live view | references/browser.md |
| Code Interpreter, execute code, sandbox, run Python/JS/TS, data analysis in agent, pandas | references/code-interpreter.md |
| Payments, pay for x402 or MPP content, 402 Payment Required, Machine Payments Protocol, WWW-Authenticate: Payment, microtransactions, paid API/tool, payment manager/connector | references/payments.md |
| Delete agent, remove resource, tear down, clean up, destroy, start fresh | references/teardown.md |
| Change model, switch model, use Haiku/Sonnet/Nova, different model | Inline — see "Changing the model" below |
If the developer asks about the difference between local dev and deployed (e.g., "why does my memory work after deploy but not locally?"), load references/local-vs-deployed.md alongside the specific workflow reference.
Read the matching file into context and follow its Process section step by step — do not summarize.
If the intent is ambiguous, ask the developer which capability they want to add.
Changing the model
The model is configured in app/<AgentName>/model/load.py (scaffolded by agentcore create). To change it:
Open
app/<AgentName>/model/load.pyChange the
model_idparameter in theBedrockModel()constructor
# Default (scaffolded by CLI)
return BedrockModel(model_id="global.anthropic.claude-sonnet-4-5-20250929-v1:0")
# Switch to Haiku for cost savings
return BedrockModel(model_id="us.anthropic.claude-3-5-haiku-20241022-v1:0")
# Switch to Nova Lite
return BedrockModel(model_id="amazon.nova-lite-v1:0")Cross-region inference profile prefixes (us., eu., apac., global.) control where inference runs. Use global. for maximum throughput, or a geographic prefix for data residency. Not all models support all prefixes — check the Bedrock inference profiles docs.
After changing the model:
Verify the model is enabled in your region: AWS Console → Amazon Bedrock → Model access
For cross-region profiles, enable in all destination regions
If using
agents-harden, update the IAM policy to scope to the new model ARNRun
agentcore devto test locally, thenagentcore deployto update the deployed agent
No agentcore.json change is needed — the model is configured in code, not in the project config.
Pre-flight: validate any --name before generating the CLI command
Whichever reference you load, most end up producing an agentcore add <resource> --name <something> command. The CLI fails late on invalid names — you'll see the error after walking through prompts, not before running the command. Validate up front:
| Resource | Max chars | Allowed | Starts with |
|---|---|---|---|
Agent (add agent) | 48 | alphanumeric + _ | letter |
| Memory, gateway, gateway-target, credential, evaluator, online-eval, policy, policy-engine, payment-manager, payment-connector | 48 | alphanumeric + _ | letter |
Count the characters before constructing the command. If the name is over the limit or contains hyphens, dots, or spaces, push back: "<name> is N characters / uses -, which the CLI rejects. How about <suggestion>?" Never run the command with an invalid name hoping the CLI message will be clear.
Note: agentcore create --name (the project name) has a stricter 23-char limit and does not allow underscores. That's covered in agents-get-started; if you see the developer re-running create, flag the 23-char limit specifically.
Output
Depends on the workflow — see the loaded reference for specific outputs.
Quality criteria
The correct reference was loaded based on the developer's intent
All output follows the loaded reference's quality criteria
Cross-references to other skills (agents-connect, agents-deploy) are included where relevant
Files
- ATTRIBUTION.mdAdded by AutoGineer1011 B
- LICENSELicence file added by AutoGineer9.9 KiB
- NOTICELicence file added by AutoGineer67 B
- SKILL.md8.9 KiB
- references/browser.md10.0 KiB
- references/code-interpreter.md8.9 KiB
- references/integrate.md19.1 KiB
- references/local-vs-deployed.md4.2 KiB
- references/memory.md27.7 KiB
- references/migrate.md5.5 KiB
- references/multi-agent.md16.2 KiB
- references/payments.md71.4 KiB
- references/request-headers.md6.8 KiB
- references/teardown.md5.3 KiB
- references/vpc.md12.5 KiB
- scripts/process_payment_tool.pyScript7.0 KiB
- scripts/setup_payment_user.pyScript5.3 KiB
references/code-interpreter.md
code-interpreter
Add the AgentCore Code Interpreter tool so your agent can execute code in a sandboxed environment — Python, JavaScript, or TypeScript.
When to use
Your agent needs to run math, data analysis, or transform data where a calculation is more reliable than an LLM answer
Your agent generates code as an answer and you want it executed (and its output verified) before returning
Your agent needs to read/write files (CSV, JSON, plots) that should persist to S3
You need an isolated, session-scoped code sandbox
Do NOT use this reference for:
Interacting with web pages — see
browser.mdRunning arbitrary long-lived services — Code Interpreter is for short-lived code execution, not hosting servers
Shell commands inside your live agent session's own microVM — that's
InvokeAgentRuntimeCommand, covered inintegrate.md
Mental model
Code Interpreter is a managed sandbox, one per session, running in an isolated microVM. Your code can:
Execute Python, JavaScript, or TypeScript
Read/write files on a local filesystem (up to 100 MB inline upload, up to 5 GB via S3)
Make network calls (if internet access is enabled on the resource)
Use pre-installed libraries (pandas, numpy, scikit-learn, torch, etc. — see docs for the current list)
Sessions are stateful within a session (variables and files persist across execute_code calls in the same session) and ephemeral across sessions (start a new session and the filesystem is clean).
Prerequisites
Python 3.10+ in your agent environment
bedrock-agentcoreSDKIAM permissions for
bedrock-agentcore:*CodeInterpreter*actions, scoped to the resource ARNModel access if calling via an agent framework (the framework calls a model to decide when to execute code)
IAM policy skeleton:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "CodeInterpreterAccess",
"Effect": "Allow",
"Action": [
"bedrock-agentcore:CreateCodeInterpreter",
"bedrock-agentcore:GetCodeInterpreter",
"bedrock-agentcore:ListCodeInterpreters",
"bedrock-agentcore:StartCodeInterpreterSession",
"bedrock-agentcore:StopCodeInterpreterSession",
"bedrock-agentcore:InvokeCodeInterpreter",
"bedrock-agentcore:GetCodeInterpreterSession",
"bedrock-agentcore:ListCodeInterpreterSessions"
],
"Resource": "arn:aws:bedrock-agentcore:<REGION>:<ACCOUNT_ID>:code-interpreter/*"
}]
}Check current action names against the docs — the list evolves.
Path A — Strands agent with Code Interpreter (recommended for most)
from strands import Agent
from strands_tools.code_interpreter import AgentCoreCodeInterpreter
tool = AgentCoreCodeInterpreter(region="<REGION>")
agent = Agent(
tools=[tool.code_interpreter],
system_prompt=(
"You are an assistant that validates claims with code. "
"When asked to compute, calculate, or analyze, write Python and run it."
),
)
result = agent("What are the first 10 Fibonacci numbers?")
print(result.message["content"][0]["text"])Install: pip install bedrock-agentcore strands-agents strands-agents-tools
The agent decides when to execute code, starts sessions on demand, and stops them. Under the hood, the tool uses the AWS-managed aws.codeinterpreter.v1 resource — no resource creation needed.
Dropping into an AgentCore Runtime entrypoint:
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands_tools.code_interpreter import AgentCoreCodeInterpreter
from model.load import load_model
import os
app = BedrockAgentCoreApp()
REGION = os.getenv("AWS_REGION", "us-east-1")
@app.entrypoint
def invoke(payload, context):
tool = AgentCoreCodeInterpreter(region=REGION)
agent = Agent(
model=load_model(),
tools=[tool.code_interpreter],
system_prompt="Validate computations with code.",
)
return {"response": str(agent(payload.get("prompt", "")))}
if __name__ == "__main__":
app.run()Path B — Direct SDK for programmatic execution
Use when your code — not an agent — decides what to run. Good for ETL, data transformation, and agent-internal validation.
from bedrock_agentcore.tools.code_interpreter_client import code_interpreter_session
REGION = "us-east-1"
with code_interpreter_session(REGION) as session:
# Stateful: variables persist across calls within the session
session.execute_code("import pandas as pd")
session.execute_code("df = pd.DataFrame({'x': [1, 2, 3]})")
result = session.execute_code("df.describe().to_string()")
print(result.stdout)The context manager handles start/stop. Do not leak sessions.
Language selection — default is Python. For JavaScript/TypeScript, pass language="javascript" or language="typescript" to execute_code (or the runtime setting at session start). See the runtime selection doc for the current supported runtimes.
Path C — Custom Code Interpreter with S3 access
The managed aws.codeinterpreter.v1 resource has no S3 write permissions. For agents that produce artifacts (plots, reports, processed datasets) you want to persist, create a custom Code Interpreter with an execution role that has S3 access.
This is a CreateCodeInterpreter call (SDK/API, not exposed via agentcore CLI at time of writing). The execution role's trust policy grants bedrock-agentcore.amazonaws.com the ability to assume it, and its permissions policy grants s3:PutObject and related actions on your artifact bucket. Check the docs for the current CreateCodeInterpreter shape and the exact trust policy format.
Same-account S3 rule. The S3 bucket must be in the same AWS account as the Code Interpreter resource. Cross-account buckets are not supported as targets even with the right bucket policy — CreateCodeInterpreter fails with a validation error. If you need the artifacts in another account, replicate from the same-account bucket afterward.
Observability
CloudWatch logs — stdout/stderr from executed code, plus session lifecycle events
CloudTrail — every
StartCodeInterpreterSession,InvokeCodeInterpreter,StopCodeInterpreterSessioncallMetrics — in
AWS/BedrockAgentCorenamespace
Pre-installed libraries
The managed Python runtime includes: pandas, numpy, scipy, matplotlib, plotly, scikit-learn, torch, torchvision, statsmodels, and dozens more for data analysis / ML. Check the current list in the docs before telling a user "library X is preinstalled" — the list changes with platform updates.
For libraries not preinstalled, call install_packages(["your-lib==1.2"]) in your session (or !pip install ... via execute_command). Installed packages last only for the session.
Session lifecycle — always close
# Right — context manager
with code_interpreter_session(region) as session:
session.execute_code("...")
# Right — try/finally with explicit client
client = CodeInterpreterClient(region=region)
client.start()
try:
client.execute_code("...")
finally:
client.stop()
# Wrong — leaked session sits until timeoutDefault session timeout is 900 seconds (15 min), max 28800 seconds (8 hours). Leaked sessions cost money.
VPC mode
Code Interpreter supports VPC — same pattern as Runtime and Browser (service-linked role, your subnets, your security group). See vpc.md.
Public internet from the sandbox requires a NAT gateway on a private subnet, same as Runtime. Public subnets don't give Code Interpreter ENIs internet access. If the code needs pip install to reach PyPI, plan for NAT.
Common failures
"Access denied" on StartCodeInterpreterSession: IAM missing the action on the resource ARN. Use aws sts get-caller-identity to confirm which identity you attached the policy to.
"ValidationException: Role does not have access to required S3 buckets": S3 bucket is in a different account. Move the bucket or replicate from an in-account staging bucket.
Code times out: Default execute timeout is short. Split long jobs into chunks, or use a custom Code Interpreter with extended timeouts. Don't try to run 30-minute training jobs in Code Interpreter — that's a SageMaker / Batch job.
"Module not found" despite being listed as preinstalled: The preinstalled list may differ between python and nodejs runtimes. Verify runtime selection and list matches.
Output
Which path fits (Strands tool vs direct SDK vs custom with S3)
Working code with session lifecycle handled
IAM policy scoped to the code-interpreter resource
Quality criteria
Sessions are always wrapped in a context manager or try/finally — never leaked
IAM is scoped to
code-interpreter/*in the account, notResource: "*"S3 destination buckets are in the same account as the Code Interpreter resource
Language / runtime selection is explicit when the code isn't Python
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Needs an MCP server, Needs Python
Security
What our scanner noticed· Low risk
- Instructions that use the network
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- aws-agentcore
- Publisher
- AWS (Official)
- Source
- aws/agent-toolkit-for-aws · plugins/aws-agents/skills/agents-build · commit 0a218f8
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- NOTICE (added by AutoGineer from NOTICE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by aws-agentcore or AWS.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download agents-build.zip