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
- 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-connect
- Scaffolding a new project → use
agents-get-started
- Deploying → use
agents-deploy
Input
$ARGUMENTS can be:
- A capability: "memory", "integrate", "vpc", "multi-agent", "migrate", "browser", "code-interpreter", "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.json in 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,
cd into 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 build
- If the developer says something is broken (wrong answers, errors, tool failures) → this is
agents-debug, not build
- Build 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 |
| 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.py
- Change the
model_id parameter in the BedrockModel() 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 ARN
- Run
agentcore dev to test locally, then agentcore deploy to 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 |
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
1---2name: agents-build3description: Use when adding capabilities to an existing agent project — memory, app integration, VPC, multi-agent, migration, model changes, browser, code interpreter, or resource removal. Triggers on: "add memory", "remember across sessions", "call agent from app", "invoke agent from code", "auth to call agent", "streaming responses", "VPC", "VPC connectivity", "VPC error", "can't reach from VPC", "multi-agent", "A2A", "A2A auth", "orchestrator not delegating", "specialist not called", "migrate Bedrock Agent", "after import", "migration issue", "framework for migration", "change model", "browser tool", "code interpreter", "delete agent", "tear down", "agentcore remove", "cross-account memory", "resource-based policy on memory". Not for connecting to external APIs via Gateway — use agents-connect. Not for scaffolding a new project — use agents-get-started. Not for CLI/dev server errors — use agents-debug. Strands vs LangGraph in a migration context routes here.4---56# build78Add capabilities to your AgentCore agent project.910## When to use1112- Adding cross-session memory to your agent13- Calling your deployed agent from a web app, mobile app, or backend service14- Configuring VPC networking for private resources (RDS, internal APIs)15- Building multi-agent systems with orchestrator/specialist patterns16- Migrating an existing Bedrock Agent to AgentCore17- Adding the Browser tool so the agent can navigate websites18- Adding the Code Interpreter so the agent can execute code in a sandbox19- Removing resources from your project or tearing down a deployment2021Do NOT use for:2223- Connecting to external tools/APIs via Gateway (OpenAPI specs, Lambda, MCP servers, credentials, policies) → use `agents-connect`24- Scaffolding a new project → use `agents-get-started`25- Deploying → use `agents-deploy`2627## Input2829`$ARGUMENTS` can be:3031- A capability: "memory", "integrate", "vpc", "multi-agent", "migrate", "browser", "code-interpreter", "teardown"32- 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"33- Empty — the skill will determine the workflow from context3435## Process3637### Step 0: Verify CLI version3839Run `agentcore --version`. This skill requires v0.9.0 or later.4041If older: "Run `agentcore update` to get the latest version."4243### Step 1: Read project context4445Read `agentcore/agentcore.json` to understand the current project — framework, existing resources, agent configuration.4647If `agentcore/agentcore.json` is not found:48491. **Check if the developer is in the wrong directory.** Look for `agentcore/agentcore.json` in parent directories (up to 3 levels). If found, tell them: "Found an AgentCore project at `<path>`. Are you working in that project?"502. **If no project exists anywhere nearby**, ask what capability they wanted to add. Then offer two paths:51 - "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)52 - "If you already have a project elsewhere, `cd` into it and try again."5354Do not just say "go use agents-get-started" and stop — that loses the developer's context about what they actually wanted to do.5556### Step 2: Determine the workflow5758**Important disambiguation** — before routing to a build reference, check if the prompt is actually a connect or debug concern:5960- If the phrase mentions external APIs, Lambda functions, OpenAPI specs, gateways, credentials, MCP servers, or policies → this is `agents-connect`, not build61- If the developer says something is broken (wrong answers, errors, tool failures) → this is `agents-debug`, not build62- Build is for **adding new capabilities** to a working project, not fixing broken ones6364Based on the developer's prompt and `$ARGUMENTS`, load the appropriate reference:6566| Developer intent | Reference to load |67|---|---|68| Add memory, remember things, user preferences, cross-session | [`references/memory.md`](references/memory.md) |69| Call agent from app, invoke from code, streaming, SDK client, agent URL, execute shell in session | [`references/integrate.md`](references/integrate.md) |70| VPC, private network, RDS, internal API, subnet, security group | [`references/vpc.md`](references/vpc.md) |71| Multi-agent, orchestrator, specialist, A2A, delegation, agent handoff | [`references/multi-agent.md`](references/multi-agent.md) |72| Custom headers from caller to agent, header allowlist, tenant ID/correlation ID/trace propagation | [`references/request-headers.md`](references/request-headers.md) |73| Migrate Bedrock Agent, import agent, move to AgentCore | [`references/migrate.md`](references/migrate.md) |74| Browser tool, web navigation, form filling, scraping, Nova Act, Playwright, live view | [`references/browser.md`](references/browser.md) |75| Code Interpreter, execute code, sandbox, run Python/JS/TS, data analysis in agent, pandas | [`references/code-interpreter.md`](references/code-interpreter.md) |76| Delete agent, remove resource, tear down, clean up, destroy, start fresh | [`references/teardown.md`](references/teardown.md) |77| Change model, switch model, use Haiku/Sonnet/Nova, different model | Inline — see "Changing the model" below |7879If 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`](references/local-vs-deployed.md) alongside the specific workflow reference.8081Read the matching file into context and follow its Process section step by step — do not summarize.8283If the intent is ambiguous, ask the developer which capability they want to add.8485### Changing the model8687The model is configured in `app/<AgentName>/model/load.py` (scaffolded by `agentcore create`). To change it:88891. Open `app/<AgentName>/model/load.py`902. Change the `model_id` parameter in the `BedrockModel()` constructor9192```python93# Default (scaffolded by CLI)94return BedrockModel(model_id="global.anthropic.claude-sonnet-4-5-20250929-v1:0")9596# Switch to Haiku for cost savings97return BedrockModel(model_id="us.anthropic.claude-3-5-haiku-20241022-v1:0")9899# Switch to Nova Lite100return BedrockModel(model_id="amazon.nova-lite-v1:0")101```102103Cross-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.104105After changing the model:106107- Verify the model is enabled in your region: AWS Console → Amazon Bedrock → Model access108- For cross-region profiles, enable in all destination regions109- If using `agents-harden`, update the IAM policy to scope to the new model ARN110- Run `agentcore dev` to test locally, then `agentcore deploy` to update the deployed agent111112No `agentcore.json` change is needed — the model is configured in code, not in the project config.113114### Pre-flight: validate any `--name` before generating the CLI command115116Whichever 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:117118| Resource | Max chars | Allowed | Starts with |119|---|---|---|---|120| Agent (`add agent`) | 48 | alphanumeric + `_` | letter |121| Memory, gateway, gateway-target, credential, evaluator, online-eval, policy, policy-engine | 48 | alphanumeric + `_` | letter |122123Count 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.124125Note: `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.126127## Output128129Depends on the workflow — see the loaded reference for specific outputs.130131## Quality criteria132133- The correct reference was loaded based on the developer's intent134- All output follows the loaded reference's quality criteria135- Cross-references to other skills (agents-connect, agents-deploy) are included where relevant