Install
$ agentstack add skill-jesamkim-oh-my-skills-strandsagents ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Strands Agents — Live-Documentation Development Skill
> READ THIS FIRST. Every code snippet in this skill and its references is > illustrative of the mental model only. The Strands Agents SDK changes > frequently — import paths, class and parameter signatures, model IDs, and > install commands all drift between versions. Never write Strands code from > memory or from a snippet in this skill. Always run the Delegation Workflow > below first and write code against the docs you just fetched. When this skill > and the official docs disagree, the docs win.
What Strands Agents Is (invariant)
Strands Agents is an open-source AWS SDK for building AI agents with a model-driven approach: the model decides which tools to call and how to sequence work, instead of you hand-coding the control flow. It is available for Python and TypeScript, integrates natively with Amazon Bedrock (and other model providers), and aims for minimal boilerplate.
The mental model is stable even as the API changes:
define tools -> configure a model -> create an agent -> run the agent
|
(the agent loop: model reasons,
calls tools, reads results,
repeats until it answers)
This much is safe to rely on. The exact code for each box is not — fetch it.
Trusted Sources (the registry)
Use these in priority order. URLs are stable enough to hardcode; if one 404s, re-fetch the index to rediscover the current path.
| Purpose | Source | |---|---| | Latest published version | https://pypi.org/pypi/strands-agents/json (field info.version) | | Doc index (LLM-friendly) | https://strandsagents.com/latest/llms.txt (structured list of index.md pages) | | Full doc corpus | https://strandsagents.com/latest/llms-full.txt (~2.4MB — fetch specific pages instead) | | Source / releases | https://github.com/strands-agents/sdk-python (release notes, breaking changes) | | Per-task pages | See the Task → Doc table below |
The Delegation Workflow
Follow these steps before writing any Strands code.
Step 0 — Version & freshness check (always first)
- If Strands is installed locally, run
pip show strands-agentsto read the
installed version.
- Otherwise (or to compare against latest), fetch the PyPI JSON API and read
info.version: ``bash python3 -c "import urllib.request,json; print(json.load(urllib.request.urlopen('https://pypi.org/pypi/strands-agents/json'))['info']['version'])" ``
- Skip this **only if you ran
pip show/ the PyPI check yourself earlier in
this same session AND no environment change has happened since** (no venv switch, no upgrade). A version the user merely mentioned, or one you assumed, does not count — verify it.
- If you cannot determine the version, tell the user and proceed cautiously —
never silently guess at version-specific API.
Step 1 — Fetch the authoritative doc for the task
- Map the user's intent to a page in the Task → Doc table below and read it with
WebFetch.
- If the URL 404s or the table has no entry, fetch
https://strandsagents.com/latest/llms.txt and locate the right index.md link from the structured index, then fetch that.
- Fetch the specific page(s) you need — do not pull
llms-full.txtwholesale,
to keep context focused.
Step 2 — Fallback to web search (only after Step 1)
- Enter this step **only after a Step 1 WebFetch returned insufficient or missing
content. Even for migration / brand-new feature / breaking-change tasks, fetch the official page first — then use WebSearch** to supplement, never to replace, the official doc.
- Prefer
github.com/strands-agentsreleases and issues over third-party articles
(blogs, StackOverflow). Never copy code from a non-official source without confirming it against an official page you fetched.
Step 3 — Synthesize & implement against fetched facts
- Write code using the import paths, class names, parameter signatures, and model
IDs from the doc you fetched in Step 1 — not from this skill's snippets.
- If a snippet here conflicts with the doc, the doc is correct.
Step 4 — Verify (default-on when you implement)
- Before claiming any code works, run a smoke test: confirm the **exact import
lines from the doc you fetched** resolve, then run the script. Build the check from the fetched imports — do not assume specific symbol names. The version probe python3 -c "import strands; print(strands.__version__)" is safe and useful as part of this.
- If you genuinely cannot execute (no environment), say so explicitly to the user
and label the code UNVERIFIED — do not imply it was tested.
- On failure, re-fetch the relevant page, correct the code, and **re-run until it
passes**.
Task → Doc table (core)
Base URL: https://strandsagents.com/docs/user-guide/ Append each path below. (All verified reachable; if one changes, use llms.txt.)
| Task / intent | Page (append to base) | |---|---| | Quickstart / first agent | quickstart/python/index.md | | TypeScript quickstart | quickstart/typescript/index.md | | Add tools (overview) | concepts/tools/index.md | | Write a custom @tool | concepts/tools/custom-tools/index.md | | Use MCP tools | concepts/tools/mcp-tools/index.md | | Multi-agent overview | concepts/multi-agent/multi-agent-patterns/index.md | | Agents as Tools (hierarchical) | concepts/multi-agent/agents-as-tools/index.md | | Swarm (autonomous collaboration) | concepts/multi-agent/swarm/index.md | | Graph (explicit workflow) | concepts/multi-agent/graph/index.md | | Agent loop (mental model) | concepts/agents/agent-loop/index.md | | Structured output | concepts/agents/structured-output/index.md | | Streaming responses | concepts/streaming/index.md | | Conversation management | concepts/agents/conversation-management/index.md | | Session management | concepts/agents/session-management/index.md | | Hooks | concepts/agents/hooks/index.md | | Bedrock model provider | concepts/model-providers/amazon-bedrock/index.md | | Deploy to Bedrock AgentCore | deploy/deploy_to_bedrock_agentcore/index.md | | Operating agents in production | deploy/operating-agents-in-production/index.md |
For anything not listed (e.g. sandbox, plugins/skills, interrupts, voice/realtime, other model providers), start from llms.txt and follow the matching link.
Choosing a Multi-Agent Pattern (concept, not code)
These concepts are stable; fetch the linked doc for current code.
| Pattern | Use when | Doc | |---|---|---| | Agents as Tools | Clear manager → specialist hierarchy; sequential delegation | agents-as-tools | | Swarm | Workflow not predetermined; agents hand off flexibly by capability | swarm | | Graph | Fixed workflow with explicit steps and branching you want visible | graph |
Decision shortcut: simple delegation → Agents as Tools; flexible collaboration → Swarm; fixed, inspectable workflow → Graph.
Best-Practice Principles (direction, not API)
Apply these as goals; fetch the docs for the current API that achieves them.
- Cost control — cap response length, prefer cheaper models for simple steps,
keep tool outputs concise, and limit retained context. (See conversation / context management docs for the current classes and parameters.)
- Context management — return summaries, not raw dumps, from tools; trim or
window history for long conversations.
- Tool design — specific names, clear docstrings, full type hints, structured
returns, graceful error handling; one responsibility per tool.
- Security — least privilege (give an agent only the tools it needs), validate
tool inputs, and filter sensitive data out of tool outputs.
Troubleshooting (approach, not fixed answers)
When something breaks, re-fetch the relevant doc first — the fix may be a changed API. General directions:
- Tool not called → improve docstring/name/type hints; simplify the signature.
- Infinite tool loops → limit conversation history; make tool outputs complete
and actionable; tighten the system prompt.
- Context window exceeded → reduce tool verbosity; window/summarize history.
- Bedrock errors → check model ID availability in the region, AWS credentials,
IAM permissions, and quotas (fetch the Bedrock model-provider doc for current model IDs and config).
- Import / syntax errors → you are likely using an outdated API; re-fetch the
page and match it exactly. Confirm with pip show strands-agents.
References
references/core_concepts.md— version-agnostic mental model and pattern
concepts (no code).
references/doc_navigation_guide.md— how to usellms.txtand pick the right
page; what to fetch for less-common tasks.
assets/templates/agent_scaffold.md— a fill-in-after-fetching checklist for
scaffolding an agent project.
Version: 2.0.0 Author: jesamkim License: MIT License
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jesamkim
- Source: jesamkim/oh-my-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.