Skills.
Skills are reusable task playbooks. Kuzy auto-generates them from work it sees you repeat — and lets you write your own.
Every time Kuzy completes a task, it considers whether the same pattern has come up before. After 3 occurrences within a workspace, it auto-generates a skill: a YAML playbook that tells the agent how to handle that pattern next time, faster and with less context.
You can also write skills by hand. They're plain YAML, version-controlled with your repo if you want.
name: refactor-credit-flow # required, kebab-case
description: | # required, what it does in one sentence
Extract credit-debit logic into a typed Ledger protocol and update tests.
# When to fire
when:
- prompt.matches(/refactor.*credit/)
- file.changed("src/billing/**.py")
# Where to look
context:
read:
- src/billing/**/*.py
- tests/billing/**/*.py
recall:
- "credit ledger"
- "atomic deduct"
# What to do, in order
steps:
- tool: filesystem.read
args: { path: src/billing/bridge_server.py }
- tool: filesystem.write
args: { path: src/billing/credit.py, template: ledger-protocol }
- tool: terminal
args: { cmd: "pytest tests/billing -q" }
- tool: git
args: { commit: "refactor(credit): atomic ledger" }
# How to know it worked
gates:
- tests.passing
- lint.clean
- types.clean
# Cost ceiling
budget:
tokens: 50000
credits: 0.5After Kuzy finishes a task, the post-task summariser looks at:
- The prompt shape (verbs, nouns, file paths touched).
- The tool sequence that worked.
- How long it took and how many tokens it spent.
If three task completions cluster on the same pattern, Kuzy proposes a skill in the sidebar with a one-click Save. You can edit before saving, or reject and tell Kuzy not to ask again about that pattern.
Skills are portable. Export them, ship them with your repo, drop them into a teammate's workspace.
kuzy skill export refactor-credit-flow > .kuzy/skills/refactor-credit-flow.yamlkuzy skill install ./teammate-shared/weekly-digest.yamlweekly-digest
Crawls 47 repos, 11 PRs, 3 incidents, posts a digest in Slack.
name: weekly-digest
when: cron("MON 09:00")
steps:
- tool: git.scan
- tool: linear.query
- tool: pagerduty.summary
- tool: slack.send
args: { channel: "#standup", template: "digest" }canary-watch
Promotes a canary deploy if p99 stays under threshold for 10 minutes.
name: canary-watch
when:
- prompt.matches(/promote.*canary/)
steps:
- tool: terminal
args: { cmd: "kubectl get pods -l canary=true" }
- tool: web.fetch
args: { url: "grafana.kapakgpt.com/d/api-latency", window: "10m" }
- tool: deploy.promote
args: { service: "$1", from: 25, to: 100 }
gates:
- latency.p99 < 80ms
- error_rate < 0.1%refactor-credit-flow
The example from the schema above — extracted and runnable.