Skip to content
Back to skills

Agent Builder

ASecurity

How to scaffold a Python agent from the base-class catalog, or create a simple YAML-defined agent

  • 33 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 1, 2026
ai-agentspythongo

Security analysis

A100/100

Scanned September 1, 2026

npx -y skills add phenobarbital/ai-parrot --skill agent-builder --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Agent Builder?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Agent Builder
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/phenobarbital-agent-builder/badge)](https://www.skillsdirectory.com/skills/phenobarbital-agent-builder)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: agent-builder
description: How to scaffold a Python agent from the base-class catalog, or create a simple YAML-defined agent
triggers:
  - build an agent
  - create an agent
  - scaffold an agent
  - new agent
category: agent-development
---

# Agent Builder

Two paths to a new agent — pick the simpler one whenever it satisfies the
request.

## Path A — Simple agent (no custom code)

Use `list_agent_base_classes` to see the available base classes
(`BasicBot`, `Chatbot`, `Agent`, `WebAgent`, `WebSearchAgent`, ...) and
their configurable constructor parameters. Then call `create_yaml_agent`
with:

- `name` — a slug (`^[a-z0-9_-]+$`).
- `bot_class` — the base class name.
- `llm` — optional `"provider:model"` override.
- `description` — what the agent does.
- `category` — a grouping folder under `AGENTS_DIR/agents/` (default
  `"general"`).

This writes a lossless YAML definition and registers the agent
immediately — no draft/activate step needed.

## Path B — Code-generated agent (custom tools/behavior)

When the user needs custom Python logic (a bespoke tool, custom prompt
building, non-trivial control flow), write a full agent module and call
`save_agent_draft(name, source)`. Rules for the generated source:

1. Subclass one of the catalog base classes (`from parrot.bots.agent
   import Agent`, etc.) — check `list_agent_base_classes` for the exact
   import path.
2. Decorate the class with `@register_agent("<name>")` (`from
   parrot.registry import register_agent`) so activation actually
   registers it.
3. Keep imports to the standard library, `parrot.*`, and already-listed
   tools (`list_available_tools`) — the draft validator statically
   rejects unknown/unsafe imports (AST allowlist) before it is ever
   imported.
4. A draft is NEVER live code. Explain to the user that they (or an
   admin) must call `POST /astudio/drafts/{name}/activate` — you cannot
   activate a draft yourself.

Always show the user the full generated source and the validation report
returned by `save_agent_draft` before suggesting they activate it.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.