Teach Ona Agent to follow your workflows automatically.
Skills teach Ona Agent to follow specific workflows automatically. When a task matches a skill’s description, Ona Agent reads and follows those instructions.
Skills are SKILL.md files containing step-by-step workflow instructions. They enable you to teach Ona Agent best practices for specific workflows that matter to you—creating PRs, deploying to staging, writing tests in a particular style.
---name: skill-namedescription: What this skill does and when to use it---# Skill Title## Steps1. **Step one** - Clear instruction2. **Step two** - Include commands where helpful## Anti-patterns- What NOT to do
Here are some skills the Ona engineering team uses:
create-pr
Report incorrect code
Copy
Ask AI
---name: create-prdescription: Create pull requests following repository conventions. Use when asked to create a PR, open a PR, or land changes.---# Create PR## Steps1. **Clean up code** - remove obvious comments from new/changed code2. **Format** - run `gofmt` (Go) or `prettier` (JS/TS)3. **Lint** - run `golangci-lint run ./...` (Go) or `eslint` (JS/TS)4. **Create branch** - `<initials>/<short-description>` (max 24 chars)5. **Commit** - use Conventional Commits6. **Push** - `git push -u origin <branch-name>`7. **Open draft PR** - use `.github/pull_request_template.md`## Anti-patterns- Don't use superlatives in commits or PR descriptions- Don't commit unrelated changes- Don't push to main directly
go-tests
Report incorrect code
Copy
Ask AI
---name: go-testsdescription: Generates Go unit tests using the Expectation pattern with cmp.Diff. Use when writing or fixing Go tests.---# Go TestsTable-driven tests using the Expectation pattern with `cmp.Diff`.## Rules1. **Always use `t.Parallel()`** at test function and subtest level2. **Never use `t.Parallel()` with `t.Setenv()`** - they panic together3. **Single `cmp.Diff` assertion** comparing entire Expectation struct4. **Capture errors as strings** in `Expectation.Err`, not with `t.Fatal`5. **Never use testify** - use `cmp.Diff` only## Anti-Patterns- `t.Fatal` for action errors → use `Expectation.Err`- `context.Background()` → use `t.Context()`- `testify/assert` → use `cmp.Diff`
---name: linear-ticketdescription: Create Linear tickets from code analysis. Use when asked to create a ticket, file an issue, or track work in Linear.---# Create Linear TicketCreate a well-structured Linear ticket from the current context.## Steps1. **Gather context** - Understand what needs to be tracked (bug, feature, task)2. **Check for duplicates** - Search Linear for existing tickets on the same topic3. **Create ticket** - Use appropriate team, labels, and priority4. **Link resources** - Attach relevant PRs, files, or documentation## Ticket format- **Title**: Clear, actionable (`Fix auth timeout on slow connections`)- **Description**: Include reproduction steps for bugs, acceptance criteria for features- **Labels**: Add relevant labels (bug, feature, tech-debt)## Anti-patterns- Don't create duplicate tickets- Don't leave description empty- Don't assign without checking availability
At conversation start, Ona Agent scans .ona/skills/ in your repository and lists available skills by description. Full content is loaded on-demand via read_skill when a task matches.