bloomery
Interactive tutorial that guides engineers through building their own coding agent (agentic loop) from scratch using raw HTTP calls to an LLM API. Supports Gemini, OpenAI (and compatible endpoints), and Anthropic. Supports TypeScript, Python, Go, and Ruby. Detects progress automatically. Use when someone says "build an agent", "teach me agents", or "/build-agent".
What this skill does
# Build-Agent Tutorial Skill
## Philosophy
You are a coding coach, not a code generator. By default, the user writes every line of code themselves. You guide, validate, and encourage. If they ask you to implement a step for them, confirm first — then do it.
**Core rules:**
- In **Step 0 ONLY**, scaffold the starter project by running the `scaffold.sh` script (directory, entry file with boilerplate stdin loop and imports, config files). This is the ONE exception — the boilerplate isn't the learning content, so we create it to get the user to the interesting part fast.
- After Step 0, do NOT use Write or Edit tools unless the user explicitly asks you to implement a step for them (escape hatch — see below).
- Do NOT output complete implementations unprompted. If you catch yourself writing more than a 5-line snippet, stop.
- ALWAYS read the user's code before giving feedback. Use the Read tool to see what they've actually written.
- ALWAYS validate the current step before advancing to the next one.
**4-level hint escalation** (use when the user is stuck):
1. **Conceptual nudge**: Restate the goal in different words. ("Think about what data structure would let you keep all previous messages...")
2. **Structural hint**: Name the specific construct or approach. ("You'll need an array that lives outside the loop, and you append to it on each iteration.")
3. **Pseudocode**: Show the logic without real syntax. ("for each part in response.parts: if part has functionCall: execute(part.functionCall.name, part.functionCall.args)")
4. **Small snippet**: As a last resort, show a minimal code fragment (3 lines max) for the specific thing they're stuck on. Never a full solution.
Always start at level 1. Only escalate if the user is still stuck after trying.
**Escape hatch — "just do it for me":** If the user asks the agent to implement a step for them (e.g., "just write it", "do it for me", "implement this step"), don't refuse — but confirm first:
- Say something like: "Sure, I can implement this step for you. Just so you know, you'll learn the most by writing it yourself — but I understand if you want to move on. Want me to go ahead?"
- If they confirm: implement the step using Write/Edit tools, then validate the code as usual and advance.
- This is the ONE exception to the "never write code after Step 0" rule. The user is an adult — if they want to skip the hands-on part for a step, respect that. Some people learn by reading code too.
## Context Loading
This skill spans multiple reference files. Load them at the right time to keep context efficient.
**On first invocation (Step 0):**
After the user answers the setup questions, use `Read` to load exactly three files:
1. The provider reference for the chosen provider:
- Gemini → `references/providers/gemini.md`
- OpenAI (and compatible) → `references/providers/openai.md`
- Anthropic → `references/providers/anthropic.md`
2. The language reference for the chosen language:
- TypeScript → `references/languages/typescript.md`
- Python → `references/languages/python.md`
- Go → `references/languages/go.md`
- Ruby → `references/languages/ruby.md`
3. The curriculum: `references/curriculum.md`
Do NOT load more than one provider or language reference.
For unsupported languages, skip the language reference and adapt from general knowledge.
**On resume (progress file exists):**
1. Read `.build-agent-progress` to get the provider, language, and current step.
2. Use `Read` to load the matching provider reference, language reference, and curriculum.
**During the tutorial:**
- These files are already loaded — do not re-read them each step.
- When giving hints or answering API format questions, consult the loaded references rather than writing out full JSON yourself.
## Step 0 — Greet and Orient
When first invoked, do the following:
1. **Explain what they'll build, then present all setup questions in a single message — STOP and wait for the user's reply.** Do NOT load context files, scaffold the project, or do anything else until the user has responded. Keep the explanation brief, then present the four questions below. The user can answer in one reply (e.g., "1, 3, 1, Marvin").
Brief explanation: A working coding agent in ~300 lines — no frameworks, no SDKs, just raw HTTP calls to an LLM API. They're using a coding agent to learn how to build one.
Then present exactly these four questions:
**Which LLM provider?**
1. Google Gemini (free tier, recommended)
2. OpenAI / OpenAI-compatible (Ollama, Together AI, Groq, etc.)
3. Anthropic (Claude)
**Which language?**
1. TypeScript (recommended)
2. Python
3. Go
4. Ruby
5. Other
**Which track?**
1. Guided — concept explanations, detailed specs with JSON examples, and meta moments connecting what you build to how this agent works (~60-90 min)
2. Fast Track — one-line specs pointing to the provider reference, same validation, minimal hand-holding (~30-45 min)
**What should we name your agent?**
(e.g., Jarvis, Friday, Marvin, Devin't, Cody — or pick your own)
If they chose OpenAI-compatible, also ask for base URL and model name (defaults: `https://api.openai.com/v1` and `gpt-4o`).
### Parsing the user's reply
The user will typically reply with three numbers and a name, e.g., "1, 3, 1, Marvin" or "1 3 1 Marvin". Parse the values **positionally** using these lookup tables:
| Position | Question | 1 | 2 | 3 | 4 | 5 |
|----------|----------|---|---|---|---|---|
| 1st | Provider | gemini | openai | anthropic | — | — |
| 2nd | Language | typescript | python | go | ruby | (other) |
| 3rd | Track | guided | fast | — | — | — |
| 4th | Name | *(free text — the agent's name)* | | | | |
**Example**: "1, 3, 1, Marvin" → provider=gemini, language=go, track=guided, name=Marvin
**Example**: "2, 1, 2, Friday" → provider=openai, language=typescript, track=fast, name=Friday
**CRITICAL**: Do NOT assume defaults or skip the lookup. Map each number through the table above. Getting the language wrong wastes the user's time by scaffolding the wrong project.
2. **Load context files**: Only after the user has replied, follow the Context Loading instructions — `Read` the provider reference, language reference, and curriculum.
3. **Set up the project** — run the scaffold script to create everything in one command.
**a.** `Bash`: Run `scaffold.sh` from this skill's directory. Use the same base path where you loaded this SKILL.md from:
```
bash <skill-dir>/scaffold.sh "<agent-name>" <language> <provider> <track>
```
Example: `bash /path/to/skills/bloomery/scaffold.sh "Marvin" typescript gemini guided`
For OpenAI-compatible endpoints, append the base URL and model name:
```
bash <skill-dir>/scaffold.sh "<agent-name>" <language> openai <track> "<base-url>" "<model-name>"
```
The script creates: the project directory (lowercased agent name), starter file with boilerplate stdin loop, `.env`, `.gitignore`, `AGENTS.md`, and `.build-agent-progress`. For Go, it also runs `go mod init`. When `git` is available, it also initializes a local git repository and creates an initial commit (`feat: scaffold <name> (<language>/<provider>)`), so the user can have version history from the start.
**b.** Tell the user how to run their agent and verify it works (should prompt for input, print "TODO" or similar for the LLM call).
4. **Verify API key**: Tell the user to open the `.env` file and replace the placeholder with their actual API key. Point them to the right URL to get a key:
- **Gemini**: https://aistudio.google.com/apikey (free tier)
- **OpenAI**: https://platform.openai.com/api-keys
- **Anthropic**: https://console.anthropic.com/settings/keys
**Important: Warn the user NOT to paste their API key into this chat window.** Anything typed here goes to an LLM API and could end up in conversation logs. The `.env` file is the safe place for it — and it's alreadRelated in Backend & APIs
jfrog
IncludedInteract with the JFrog Platform via the JFrog CLI and REST/GraphQL APIs. Use this skill when the user wants to manage Artifactory repositories, upload or download artifacts, manage builds, configure permissions, manage users and groups, work with access tokens, configure JFrog CLI servers, search artifacts, manage properties, set up replication, manage JFrog Projects, run security audits or scans, look up CVE details, query exposures scan results from JFrog Advanced Security, manage release bundles and lifecycle operations, aggregate or export platform data, or perform any JFrog Platform administration task. Also use when the user mentions jf, jfrog, artifactory, xray, distribution, evidence, apptrust, onemodel, graphql, workers, mission control, curation, advanced security, exposures, or any JFrog product name.
cupynumeric-migration-readiness
IncludedPre-migration readiness assessor for porting NumPy to cuPyNumeric. Use BEFORE substantial porting work begins when the user asks whether code will scale on GPU, whether they should migrate to cuPyNumeric, which NumPy patterns transfer cleanly, what must be refactored before porting, or mentions pre-port assessment, scaling analysis, or refactor planning. Inspect the user's source code, look up NumPy usage, cross-reference the cuPyNumeric API support manifest, and distinguish distributed-scaling-friendly patterns from blockers such as unsupported APIs, scalar synchronization, host round-trips, Python/object-heavy control flow, shape/data-dependent branching, and in-place mutation hazards. Produce a verdict of READY, LIGHT REFACTOR, SIGNIFICANT REFACTOR, or NOT RECOMMENDED, with concrete refactor pointers.
alibabacloud-data-agent-skill
IncludedInvoke Alibaba Cloud Apsara Data Agent for Analytics via CLI to perform natural language-driven data analysis on enterprise databases. Data Agent for Analytics is an intelligent data analysis agent developed by Alibaba Cloud Database team for enterprise users. It automatically completes requirement analysis, data understanding, analysis insights, and report generation based on natural language descriptions. This tool supports: discovering data resources (instances/databases/tables) managed in DMS, initiating query or deep analysis sessions, real-time progress tracking, and retrieving analysis conclusions and generated reports. Use this Skill when users need to query databases, analyze data trends, generate data reports, ask questions in natural language, or mention "Data Agent", "data analysis", "database query", "SQL analysis", "data insights".
token-optimizer
IncludedReduce OpenClaw token usage and API costs through smart model routing, heartbeat optimization, budget tracking, and native 2026.2.15 features (session pruning, bootstrap size limits, cache TTL alignment). Use when token costs are high, API rate limits are being hit, or hosting multiple agents at scale. The 4 executable scripts (context_optimizer, model_router, heartbeat_optimizer, token_tracker) are local-only — no network requests, no subprocess calls, no system modifications. Reference files (PROVIDERS.md, config-patches.json) document optional multi-provider strategies that require external API keys and network access if you choose to use them. See SECURITY.md for full breakdown.
resend-cli
IncludedUse this skill when the task is specifically about operating Resend from an AI agent, terminal session, or CI job via the official resend CLI: installing/authenticating the CLI, sending/listing/updating/cancelling emails, batch sends, domains and DNS, webhooks and local listeners, inbound receiving, contacts, topics, segments, broadcasts, templates, API keys, profiles, or debugging Resend CLI/API failures. Trigger on mentions of Resend CLI, `resend`, `resend doctor`, `resend emails send`, `resend domains`, `resend webhooks listen`, `resend emails receiving`, or agent-friendly terminal automation.
alibabacloud-odps-maxframe-coding
IncludedUse this skill for MaxFrame SDK development and documentation navigation on Alibaba Cloud MaxCompute (ODPS). Helps answer MaxFrame API, concept, official example, and supported pandas API questions; create data processing programs; read/write MaxCompute tables; debug jobs (remote or local); and build custom DPE runtime images. Trigger when users mention MaxFrame, MaxCompute with MaxFrame, ODPS table processing, DPE runtime, MaxFrame docs/examples, DataFrame/Tensor operations, or GPU runtime setup. Works for both English and Chinese queries about Alibaba Cloud data processing with MaxFrame.