Write agent
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.From its SKILL.md
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.
SKILL.md
4.9 KB, ~1.1k tokens by cl100k_base, 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).
Gives 0 of the 12 instructions most docs writing skills give in ~1.1k tokens
Counted across 1,637 of the 3,044 authors here whose files we hold, read 2026-08-07
- Announce the skill at startin 54 of 1637, across 26 files
- Convert legacy doc files before editingin 45 of 1637, across 7 files
- Predict questions readers might askin 42 of 1637, across 4 files
- Generate clarifying questions for initial contextin 42 of 1637, across 3 files
- Create document scaffold with placeholder textin 42 of 1637, across 3 files
- Brainstorm content options for each sectionin 42 of 1637, across 3 files
- Test the document with a fresh context-less instancein 42 of 1637, across 3 files
- Include exact file paths in every taskin 42 of 1637, across 15 files
- Ask interview questions one at a timein 42 of 1637, across 27 files
- Apply surgical edits during refinementin 41 of 1637, across 2 files
- Offer structured workflow or freeformin 40 of 1637, across 1 file
- Ask for document meta-contextin 40 of 1637, across 2 files
Said here and by no other author read
- author agent definitions as JSON files
- ensure definitions parse against the agent schema
- use lowercase slug as canonical identity
- include required displayName and systemInstructions fields
- include at least one supported model reference
- omit optional fields instead of guessing values
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.