What are agent skills?
Agent skills are documentation files that describe how to interact with your deployed workflows. Each skill is a directory containing aSKILL.md file that follows the Claude Agent Skills format.
When you deploy a use case with skills, agents can download them via codika get skills and immediately understand how to trigger your workflows — input schemas, output schemas, example payloads, and all.
Why skills matter
Without skills, an agent has no way to know what endpoints your use case exposes or how to use them. Skills bridge the gap between deployed workflows and agent consumption.How agents use skills
Skills are documentation — they explain what’s available. The actual execution always goes through the Codika platform:What agents need
| Requirement | Why | How |
|---|---|---|
codika CLI installed | To trigger workflows and fetch skills | npm install -g codika |
| Codika API key | Authentication for all platform calls | codika login or CODIKA_API_KEY env var. Use --profile <name> on any command to target a specific profile without switching the global active one. Discover profiles and their org IDs via codika use --json. |
| Process instance ID | Identifies which deployed use case to interact with | From project.json or provided explicitly |
What the agent never touches
All integration credentials (OAuth tokens, API keys, database passwords) are managed by the platform and injected into workflows at runtime via the placeholder system. The Codika API key only grants permission to trigger workflows and read skills — it cannot access the underlying integration credentials. This is the core of Codika’s credential decoupling: agents get actions, not keys.Which workflows get skills?
| Workflow type | Gets a skill? | Why |
|---|---|---|
| HTTP-triggered | Yes | User/agent-facing endpoint with input/output |
| Scheduled (with manual trigger URL) | Yes | Auto-runs but can be manually triggered for testing |
| Sub-workflow | No | Internal helper, called by other workflows |
| Data ingestion | No | Internal, triggered by document uploads |
| Service event (webhook receiver) | Usually no | Triggered by external services, not by agents |
Folder structure
Skills live in askills/ folder alongside workflows/:
SKILL.md file. This matches Claude’s expected format — downloaded skills can be placed directly in .claude/skills/ for Claude Code auto-discovery or uploaded to the Claude API.
SKILL.md format
Frontmatter (required)
| Field | Required | Constraints |
|---|---|---|
name | Yes | Max 64 chars, lowercase letters/numbers/hyphens only, no “anthropic” or “claude” |
description | Yes | Max 1024 chars, non-empty, third person (“Submits text for…” not “Use this to…”) |
workflowTemplateId | Yes | Must match a workflowTemplateId from the workflows array in config.ts |
Body
The body should be concise (under 500 lines) and include:- Title — H1 with the workflow name
- One-line overview — What the endpoint does, which integrations it uses
- How to trigger — Exact
codika triggercommand with example payload - Input — Table of input parameters
- Output — Example JSON response
- Notes — Cost, limitations, edge cases
HTTP workflow skill example
Scheduled workflow skill example
Deployment lifecycle
1. Create skills alongside workflows
2. Validate
- Every subdirectory in
skills/contains aSKILL.mdfile - Frontmatter has valid
name,description, andworkflowTemplateId namefollows Claude naming rules (lowercase, hyphens, max 64 chars)workflowTemplateIdmatches an existing workflow
3. Deploy
skills/*/SKILL.md and sent with the deployment. No changes to config.ts needed.
4. Download skills (agents)
Installing skills for agents
Claude Code (one command)
Download skills directly into Claude Code’s auto-discovery directory:.claude/skills/ at startup. Each skill’s name and description are loaded into the system prompt (~100 tokens each). When a user request matches a skill’s description, Claude reads the full SKILL.md body and follows the instructions.
Where .claude/skills/ lives:
- Project-level (recommended):
.claude/skills/in your project root — skills are available in that project - Personal:
~/.claude/skills/— skills are available in all your projects
Claude API
Upload skills programmatically for use in API-based agents:Claude Agent SDK
Place skills in.claude/skills/ and include "Skill" in your allowed_tools:
.claude/skills/ when it runs.
Triggering from a skill
After reading a skill, the agent generates the appropriate CLI command:Best practices
- One skill per triggerable workflow — don’t combine multiple endpoints into one skill
- Be concise — under 500 lines. Claude is smart; only explain what it can’t infer
- Show exact payloads — include real
codika triggercommands with copy-pasteable JSON - Third-person descriptions — “Sends a message…” not “Use this to send…”
- Prefix names with use case slug —
wat-direct-messaging,propale-generate-proposal - Mention integrations and cost — helps agents understand dependencies and expense
- For scheduled workflows — always explain the automatic schedule AND the manual trigger