Skills are reusable packages of instructions and reference files that help an Agent perform a specific kind of work.
A Skill can explain how to use a provider, define a repeatable process, supply domain knowledge, or give the Agent structured guidance for a particular tool.
Before you begin
Depending on the action, you need:
skill.readpermission to view Skills and their published versionsskill.managepermission to create, edit, publish, fork, or delete Custom Skill versions- Access to an Agent to view its assigned Skills
agent.updatepermission to add, remove, or repin an Agent’s Skills- Required provider credentials for Skills that integrate with external services
How Skills work
A Skill has a stable lineage and one or more published versions.
- Skill lineage
- Published version
- Agent pin
- Mounted workspace files
Skill lineage
Incident Triage
ID: 6fd2f967-0d12-477a-8af1-a90dbfca87a3
│
├── v1
├── v2
└── v3 · latest
│
├── Agent A pins v3
└── Agent B pins v2Each published version contains a complete immutable file snapshot. An Agent assignment references the Skill lineage and an exact published version.
What a Skill provides
A Skill can contain:
- Usage instructions
- Tool-specific workflows
- Domain terminology
- Reference material
- Troubleshooting procedures
- Examples and conventions
- Links or pointers to available tools
- Guidance for working with an external provider
A Skill does not store the Agent’s provider credentials. Credentials remain in the Agent’s Secrets and integration configuration.
Built-in and Custom Skills
Built-in Skills
Global Platform Resources containing the established instructions used by aai-cli integrations.
- Source label
aai_cli - Read-only to organizations
- Platform-managed versions
- Can be assigned or forked
Custom Skills
Owned by one organization and edited through the standard draft-and-publish workflow.
- Source label
custom - Editable by Skill managers
- Organization-managed versions
- Versions can be deleted, with protections
| Capability | Built-in Skill | Custom Skill |
|---|---|---|
| Source label | aai_cli | custom |
| Ownership | Global Platform Resource | One organization |
| View files | Yes | Yes |
| Assign to Agents | Yes | Yes |
| Edit directly | No | Yes |
| Publish versions | Platform-managed | Organization-managed |
| Fork | Yes | Not required |
| Delete versions | No | Yes, with protections |
| Tracks source updates after fork | No | Not applicable |
Understand the Skill file structure
Every Custom Skill must include a SKILL.md entry point. A small Skill might look like this:
incident-triage/
├── SKILL.md entry point
├── references/
│ ├── severity-levels.md
│ └── escalation-policy.md
└── examples/
└── sample-incident.md Directories are implied by file paths. Agent Barn stores a flat collection of relative paths and file contents, rather than separate directory records.
Example SKILL.md
# Incident triage
Use this Skill when an incoming report may describe a production incident.
## Workflow
1. Confirm the affected service and environment.
2. Determine the severity using `references/severity-levels.md`.
3. Collect timestamps, request IDs, and recent changes.
4. Follow `references/escalation-policy.md` when escalation is required.
5. Record the investigation outcome.
## Safety
- Do not claim that an incident is resolved without verification.
- Do not expose credentials or private customer information.
- Escalate when the severity is unclear.Keep SKILL.md focused on when and how the Agent should use the Skill. Put longer reference material in separate files.
Create a Custom Skill
Creating a Custom Skill immediately publishes version 1. Later content changes use a draft.
- Open your organization.
- Go to Settings.
- Select Skills.
- Select New skill.
- Enter a descriptive name.
- Add a short description.
- Select any required providers.
- Edit the default
SKILL.md. - Add optional reference files.
- Select Create skill.
The Skill becomes available for assignment as soon as version 1 is created.
Skill identity and mount paths
When a Custom Skill is created, Agent Barn generates a slug from its name.
Name: Incident Triage
Slug: incident-triage
Root: incident-triage
Entry: SKILL.md
Mount: ./skills/incident-triage/SKILL.mdThe slug and root directory remain stable. Renaming the Skill changes its display name but does not move its files:
Original name: Incident Triage
New name: Production Incident Triage
Mount remains:
./skills/incident-triage/SKILL.mdThis prevents existing file references from breaking after a rename.
If another Custom Skill already uses the generated slug, Agent Barn adds a numeric suffix such as incident-triage-2.
Write effective Skill content
A useful Skill should answer four questions:
- When should the Agent use it?
- What information does the Agent need?
- What sequence should the Agent follow?
- What constraints or safety rules apply?
A recommended structure is:
# Skill name
A short explanation of the Skill.
## When to use
- Use it when...
- Do not use it when...
## Inputs
- Information or access the Agent needs
## Workflow
1. First action
2. Verification
3. Final action
## Safety
- Actions the Agent must not take
- Conditions that require escalation
## References
- `references/example.md`Use direct instructions and observable completion criteria. Avoid relying on unstated organizational knowledge.
Add supporting files
Supporting files can hold material that would make SKILL.md too long, such as policies, runbooks, field definitions, query examples, output templates, troubleshooting matrices, and provider-specific notes.
Reference supporting files using paths relative to the Skill root:
Review `references/escalation-policy.md` before escalating an incident.Do not include the root directory in an internal relative reference, unless the tool consuming the file specifically requires it.
File requirements
| Constraint | Limit |
|---|---|
| Files per version | 200 |
| Maximum file size | 1 MB |
| Total content per version | 5 MB |
| Maximum path length | 512 characters |
| Required Custom Skill entry point | SKILL.md |
Paths must:
- Be relative
- Use forward slashes
- Name a file rather than a directory
- Avoid
.and..path segments - Avoid absolute paths
- Avoid archive metadata such as
__MACOSX - Use letters, digits, dots, dashes, and underscores in each segment
- Be unique without relying on letter case
These paths conflict, because Agent Barn treats paths as case-insensitive during validation:
references/Policy.md
references/policy.mdConfigure required providers
A Skill can declare external providers that must be configured before the Skill is assigned or used. Examples include GitHub, Jira, Confluence, Bitbucket, Google Workspace, Zoho Mail, Zoho Calendar, Slack, Pipedrive, and Firecrawl.
The relationship is:
- Skill requires Jira The Skill declares its required providers
- Agent must have a Jira credential Configured as an Agent Secret or platform integration
- Skill can be assigned and mounted The runtime loads the pinned version at Agent start
Provider requirements do not contain credentials. They declare which Agent Secrets or platform integrations must exist. When adding a Skill to an Agent, Agent Barn can prompt for the required provider configuration.
Assign a Skill to an Agent
- Stop the Agent if it is running.
- Open the Agent.
- Go to Configuration.
- Open Skills.
- Search the available Skills.
- Select Add for the required Skill.
- Configure any required provider credentials.
- Save the Agent configuration.
- Start the Agent.
- Verify the Agent’s health and logs.
When no version is specified, a new assignment pins the latest published version available at apply time. The Agent continues using that exact version until someone changes the pin.
Choose a Skill version
For an assigned Skill:
- Stop the Agent.
- Open its Skills configuration.
- Find the assigned Skill.
- Open its version selector.
- Select the required published version.
- Save the configuration.
- Start the Agent.
- Verify that the Skill mounted correctly.
A version change affects only the selected Agent.
Before
Agent A ── Incident Triage v2
Agent B ── Incident Triage v2
Repin Agent A
Agent A ── Incident Triage v3
Agent B ── Incident Triage v2Publishing a newer version and repinning an Agent are separate actions.
Remove a Skill from an Agent
To remove an optional Skill:
- Stop the Agent.
- Open its Skills configuration.
- Select Remove.
- Save the configuration.
- Start the Agent again.
A Skill cannot be removed when it is required by the Agent’s active Template configuration. For required Skill groups, an Agent must retain at least one assigned member of each group.
Required group:
At least one of Jira or Linear
Allowed:
Jira → Linear
Not allowed:
Jira → no assigned group memberChange the Template configuration or assign a replacement group member before removing the last required Skill.
Understand Template Skill requirements
Templates reference a Skill lineage, not one specific Skill version. The Agent still pins an exact version when that Skill is assigned.
Template requires:
Incident Triage Skill lineage
Agent A assignment:
Incident Triage v2
Agent B assignment:
Incident Triage v4Both Agents satisfy the Template requirement, because both explicitly assign the required lineage.
Template requirements can be:
- Standalone: every listed Skill must be assigned
- Grouped: at least one Skill in the group must be assigned
A Template requirement does not silently assign the Skill. The Agent must have an explicit assignment.
Built-in provider Skills and implicit mounting
At startup, Agent Barn may mount eligible built-in provider Skills when the matching provider credential exists.
This implicit mount:
- Uses the appropriate built-in
aai-clicontent - Does not create an explicit Agent Skill assignment
- Does not replace explicit Template requirement validation
- Does not create a visible version pin in the Agent’s assignments
When a Template explicitly requires a Skill, assign that Skill to the Agent rather than relying on implicit mounting.
Fork a Built-in Skill
Built-in Skills cannot be edited directly. Fork one when your organization needs customized content.
- Open Settings.
- Select Skills.
- Open a Skill marked Built-in.
- Review its files and provider requirements.
- Select Fork.
- Confirm Fork skill.
- Edit the new Custom Skill draft.
- Save the draft.
- Publish the customized version.
- Assign the Custom Skill to the intended Agents.
Forking copies the latest Built-in Skill files, its description, its entry path, and its required providers. It creates a new Organization-owned Custom Skill, publishes Custom version 1, opens a draft seeded from version 1, and leaves the Built-in Skill unchanged.
If the organization already has a Custom Skill with the same name, Agent Barn uses a name such as Jira (fork). The fork receives its own slug and mount directory.
Built-in Skill forks do not track updates
A Skill fork is a one-time snapshot.
Built-in Jira Skill v3
│
└── Fork
Custom Jira Skill v1
│
├── Custom v2
└── Custom v3
Built-in Jira Skill v4
│
└── No automatic update relationshipFuture Built-in Skill changes are not copied into the Custom Skill, and do not produce an update badge. Compare newer Built-in content manually, and publish the desired changes into the Custom Skill.
Edit a Custom Skill
Custom Skill content changes use a draft:
- Open the Custom Skill.
- Select Edit.
- Update its files.
- Update the staged description or required providers.
- Select Save draft.
- Review the draft.
- Select Publish.
- Confirm publication.
Publishing creates the next immutable version. Editing and publication do not move existing Agent version pins.
The Skill name is lineage metadata and can be renamed directly. File content, file paths, the description, and required providers all go through the draft.
Discard a Skill Draft
If unpublished changes should not be kept:
- Open the Custom Skill.
- Switch to Draft.
- Select Discard.
- Confirm Discard draft.
Discarding removes the in-progress draft and leaves the latest published version unchanged. Built-in Skills cannot have Organization-managed drafts.
Runtime mounting
At Agent start, assigned Skills are mounted under ./skills/{root_dir}/.
A Custom Skill normally mounts under its immutable slug:
./skills/incident-triage/SKILL.mdBuilt-in provider Skills deliberately share the aai-cli root:
./skills/aai-cli/jira_skill.md
./skills/aai-cli/github_skill.mdAgent Barn adds a pointer to each Skill’s entry file in the rendered tool context. For a Custom Skill, the pointer is derived from its current name, description, root directory, and entry path.
Handle workspace collisions
Two assigned Skills can claim the same workspace path. Agent Barn applies Skills in a stable name order:
- The first Skill claims the path.
- The later conflicting file is skipped.
- The collision is recorded in the Agent’s startup logs.
Skill A claims:
./skills/shared/reference.md
Skill B also claims:
./skills/shared/reference.mdThe first claim wins.
Custom Skills normally have separate root directories, so collisions are uncommon. They are more likely among Skills that intentionally share a root, or contain incompatible legacy paths.
API reference
Create a Skill
POST /api/v1/organizations/{organization_id}/skills
Content-Type: application/json{
"name": "Incident Triage",
"description": "Guidance for investigating and escalating production incidents.",
"required_providers": [
"jira"
],
"files": [
{
"path": "SKILL.md",
"content": "# Incident triage\n\nUse this Skill for production incidents."
},
{
"path": "references/severity-levels.md",
"content": "# Severity levels\n\n## SEV-1\n\nCritical production outage."
}
]
}A successful request returns 201 Created and publishes version 1.
List Skills
GET /api/v1/organizations/{organization_id}/skillsOptional filters include search and source:
GET /api/v1/organizations/{organization_id}/skills?search=incident&source=custom&page=1&page_size=15Read the latest published files
GET /api/v1/organizations/{organization_id}/skills/{skill_id}/filesThe response includes the Skill identity and source, the latest published version, the description, the root directory and entry path, required providers, the latest published files, whether the Skill is assigned to an Agent, and whether a draft exists.
Rename a Custom Skill
PATCH /api/v1/organizations/{organization_id}/skills/{skill_id}
Content-Type: application/json{
"name": "Production Incident Triage"
}Only the name can be changed directly. The slug, root directory, and entry path remain unchanged.
Fork a Built-in Skill
POST /api/v1/organizations/{organization_id}/skills/{skill_id}/forkNo request body is required. A successful request returns 201 Created with the new Custom Skill at version 1 and an open draft.
Start or retrieve a draft
POST /api/v1/organizations/{organization_id}/skills/{skill_id}/draftThis is a get-or-create operation. If a draft exists, Agent Barn returns it. Otherwise, it creates one from the latest published version.
Save a draft
PATCH /api/v1/organizations/{organization_id}/skills/{skill_id}/draft
Content-Type: application/json{
"description": "Updated incident investigation workflow.",
"required_providers": [
"jira"
],
"files": [
{
"path": "SKILL.md",
"content": "# Incident triage\n\nFollow the updated workflow."
},
{
"path": "references/severity-levels.md",
"content": "# Severity levels\n\n..."
}
]
}Publish or discard a draft
POST /api/v1/organizations/{organization_id}/skills/{skill_id}/draft/publishDELETE /api/v1/organizations/{organization_id}/skills/{skill_id}/draftPublishing creates the next immutable version and clears the draft. Discarding clears the draft without changing the published version.
Troubleshooting
The Agent cannot see a new Skill
Organization, publication, or access
Check that:
- The Skill belongs to the Agent’s organization, or is Built-in
- Version
1was published successfully - You have permission to view the Skill
- The Skills catalog has been refreshed
The Agent still uses an older Skill version
Publishing never moves a pin
Publishing does not move existing pins. Stop the Agent, select the new Skill version in its configuration, save, and start it again.
The Agent cannot add a Skill while running
Assignments are edited while stopped
Skill assignments and version pins are edited while the Agent is stopped. Stop the Agent and retry.
The Skill requires a provider
Configure the credential first
Configure the corresponding Agent credential before saving the assignment.
For a Slack-required Skill, the Agent must use the Slack platform configuration expected by Agent Barn.
I cannot remove an assigned Skill
A Template requirement is holding it
The active Template or Override may require it.
For a required group, assign another group member before removing the current final member.
My Custom Skill is missing SKILL.md
The entry point is required
Every Custom Skill version requires its entry-point file. Add SKILL.md to the complete draft file set and save again.
A file path is rejected
Validation covers shape and size
Check for:
- Absolute paths
.or..segments- Spaces or unsupported characters
- Case-insensitive duplicates
- Archive metadata
- A path longer than 512 characters
- More than 200 files
- File or total-size limits
Renaming the Skill did not rename its folder
Expected: the slug is immutable
This is expected. The slug and root directory are immutable, so published pointers and internal file references remain valid.
A forked Skill does not show Built-in updates
Forks are one-time snapshots
Built-in Skill forks are one-time snapshots with no update tracking. Review and copy future changes manually.
The Skill mounted, but one file is missing
A workspace collision
Check the Agent’s startup logs for a workspace collision. When two Skills claim the same path, the first claim wins and the later file is skipped.
A Custom Skill fork does not satisfy the Template requirement
The fork has a new identity
The fork has a new Skill identity. Update the Template to require the fork, or explicitly assign the original required Built-in Skill.
Recommended practices
- Give each Skill one clear responsibility
- Keep the entry-point instructions concise
- Put long reference material in supporting files
- Declare every required provider
- Use relative, stable file paths
- Avoid references that depend on the display name
- Test a Skill with a stopped non-production Agent
- Pin exact versions for controlled rollouts
- Review startup logs after changing assignments
- Use Organization Templates to standardize required Skills
- Fork Built-in Skills only when customization is necessary
- Treat a fork as independent after creation
- Publish a new version instead of mutating history
Next steps
Continue to Manage Skill versions to learn how drafts, immutable versions, Agent pins, rollback, and protected version deletion work.