Write agent
The Orchestrator for AI Agents — Connect OpenClaw, Hermes Agent, Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Pi, and Qwen Code. Pool their knowledge, delegate tasks, and build your swarm of agents.
npx -y skills add tale-project/tale --skill write-agentAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use this skill whenever you create or update an agent in a Tale organization — a chat assistant, an image generator, or an external coding agent (Claude Code / Cursor). Triggers include: "create an agent", "change an agent's instructions, model, or tools", "give an agent a skill or integration", or an automation that needs its own agent. Never author an agent definition without it — and never create one before listing the existing agents and ruling out reuse. For the trigger→steps definitions an agent participates in, use write-workflow; for the installable bundle that groups agents, use write-automation.
SKILL.md
4.9 KB, as published. Nobody here has run it
write-agent
An agent is one JSON definition. Org-global agents live in the org config at
agents/[folder/]<name>.json — the folder is organizational only, never identity. An automation's
own agents live inside its bundle under apps/<automation>/agents/ (see write-automation) and are
addressed as <automation-slug>/<agent-slug>. The definition must parse against the platform's
agent schema; an invalid file is rejected at save with the failing field named.
Reuse before you create — tick every box
- List the existing agents of the org (roster + catalog) first.
- One already solves the request fully → use it; create nothing.
- One solves it partially → update it, or use it as the base and extend.
- Nothing fits → only then author a new definition.
A divergent near-duplicate of an existing agent is a defect, not a feature.
Identity and naming
slugis the canonical identity, stored in the file — flat lowercasea-z0-9_-, must start alphanumeric, ≤64 chars, no/(^[a-z0-9][a-z0-9_-]*$). Moving or renaming the file never changes identity.- An automation-owned agent's effective name is the composite
<automation-slug>/<slug>— at most one/, and only for automation-owned agents. - Never reuse a reserved slug (
auto,organigram) or overwrite a protected system agent (assistant,workflow-assistant).
Required fields
displayName(1–200 chars) — top level or in at least onei18nlocale.systemInstructions(≤20 000 chars) — required for chat agents (the default kind), top level or in at least one locale.supportedModels— at least one model ref in[provider:]model-idform. Only a BYO external agent may leave it empty.
The fields that matter
description(≤1000) andconversationStarters(≤4 entries, ≤200 chars each).skillBindings— kebab-case skill slugs, max 10. This is the agent's whole skill set: empty or absent means the agent has NO skills; there is no implicit "all org skills".toolNames— platform tools the agent may call;integrationBindings— integration slugs it may operate;workflows— workflow slugs it may run.primaryBehavior—chat(default) |image-generation|external-agent. The non-chat kinds bypass the platform tool loop, so they rejecttoolNames/workflows(external-agent keepsintegrationBindingsas its sandbox grant set).agentKind(claude-code|cursor) andauthMode(managed|byo) are external-agent-only; Cursor must bebyo.knowledgeMode/webSearchMode—off|tool|context|both.- Limits:
maxSteps(1–100),timeoutMs(≥1000),maxConcurrentTasks(1–50),budget(monthlyCentspluswarnPct≤pausePct). roleRestriction: "admin_developer"gates the agent to admins/developers;visibleInChatshows it in the chat picker;routing.modelSelectionconfig|autopicks the model per turn.i18n— per-locale overrides ofdisplayName,description,conversationStarters,systemInstructions, keyed by locale (en,de,fr-FR, …).metadata—autoInstall(seed enabled into every org),templateCatalog,labels(≤12; the first is the catalog section),requires.integrations(hard dependency — the agent is disabled while any listed integration is unconnected),requires.env(keys the install wizard collects).
Minimal valid example
{
"slug": "faq-helper",
"displayName": "FAQ Helper",
"systemInstructions": "You answer questions about the company FAQ, concisely.",
"supportedModels": ["openrouter:anthropic/claude-sonnet-4.6"],
"skillBindings": ["web-research"],
"visibleInChat": true
}
Validation
Every save parses the file against the shared agent schema — a violation is rejected with the exact
field path and message (e.g. supportedModels: At least one model is required.). Keep the
definition minimal: omit optional fields instead of guessing values.
Siblings: write-workflow (the processes agents act in), write-skill (what skillBindings
points at), write-integration (what integrationBindings points at), write-automation
(bundling agents into an installable automation).