Skip to content

AI · Building blocks

Skills

5 min read

A skill is a focused, reusable playbook. It says what it does, when to use it, and the method to follow: "Add idempotency keys to mutating endpoints", "Define least-privilege RBAC for a workload", "Instrument API endpoints for observability". The engine adds a skill's instructions to a turn so the model works the way the skill describes. Skills come from the public catalog at skills.openeng.app, and you adopt the ones you want on the Console's Skills page (Building blocks → Skills).

Status on September 25, 2026: OpenEng AI isn't live yet

The Console and Web Console interfaces load, but the OpenEng AI API routes and the Broker aren't deployed. Nothing can be saved or published, and no AI engine can register or connect. Pro, Enterprise and pay-as-you-go launch in Q4 2026 and can't be purchased yet. This page describes OpenEng AI as it works once those services are live (status).

Building blocks → Skills — the Mine and Catalog tabs. Catalog rows carry an Adopt button; rows you already adopted wear an Adopted badge.

Agents, templates and skills

All three shape what the model is told, at different sizes:

KindWhat it isHow it's applied
AgentA persona: a system prompt, optionally its own modelReplaces the base system prompt for the turn
TemplateA blueprint for a big, structured deliverableAdded as the turn's authoritative blueprint
SkillA focused method for one kind of taskAdded under the turn's "Active skills"

They combine: a message can run as an agent, follow a template and carry several skills at once.

The catalog

As of September 25, 2026, the catalog holds 885 skills in 18 categories: APIs & Integration, CI/CD & Release, Cloud & Kubernetes, Coding & Refactoring, Data & Analytics, Databases & SQL, Debugging & Diagnostics, DevOps & Infrastructure, Documentation & Writing, Frontend & UI, Git & Version Control, Memory & Knowledge, Observability & Monitoring, Performance & Profiling, Project & Planning, Self-Improvement & Curation, Testing & QA, and Web Research & Scraping.

Every skill has an id skill_def_<slug>, a name, a one-line description, a version, a category and tags. Its full text is a Markdown file at https://skills.openeng.app/<slug>.md, which is exactly what the engine reads. The site's catalog file is skills.openeng.app/catalog.json.

The Skills page: Mine and Catalog

  • Catalog lists the shipped skills with their category and version, and a filter box. Adopt creates your own copy: a new id (skill_usr_…) that remembers the catalog id it came from, under a unique name (adopting a second skill with a name you already use adds a number, such as "Docs writer 2"). Skills you've already adopted show an Adopted badge instead of the button.
  • Mine lists the skills you've adopted, with their catalog reference and id. Delete removes your copy; config versions you already published keep the reference they froze.

The page is adopt-only: there is no New skill button, because the Console can't author a skill from scratch yet. To write your own, use a local SKILL.md file (see Local skills).

The Library adopts skills too: importing a bundle adopts each skill it names.

Use skills in a config

  1. Adopt the skills on the Skills page.
  2. Open the config and go to its Skills step ("Adopted skills"), then pick the ones this config should carry. The step lists only skills you've adopted.
  3. Publish the config. For each selected skill, the published config records the catalog id it came from.

On every turn served on that config, the engine adds the selected skills to the instructions, under an "Active skills" heading. For a catalog skill it reads the text from skills.openeng.app, unless the machine has a local skill with the same id (a local copy always wins). A skill that can't be found is skipped with a notice, and the turn carries on without it.

Scope one message

In the Web Console at app.openeng.app, you can add a skill to a single message: type /skill <id> before the message (the composer suggests the skills in the running config), or tick it in the component selector beside the composer. Scopes combine, so one message can carry /agent, /template and several /skill prefixes. You type it as one line; here it's broken at each prefix so it fits:

text
/template tpl_def_kubernetes-deployment-manifests
/skill skill_def_cloud-apply-rbac-least-privilege
write the manifests for the payments service

The skill's text is added to that message's instructions only.

Local skills: SKILL.md

The engine also reads skills from files on the machine it runs on:

WhereScope
~/.openeng/skills/<name>/SKILL.mdYour skills on this machine
<workdir>/.openeng/skills/<name>/SKILL.mdOne project; wins over a user skill with the same name

The user directory moves if you set OPENENG_SKILLS_DIR, or if the config's Global paths step sets a skills path. A SKILL.md starts with front matter (name, description, and an optional allowed-tools list, which is advisory), followed by the instructions:

markdown
---
name: rustfix
description: Fix Rust build errors
allowed-tools: read_file, edit, check
---
Run cargo, read the error, edit the file, re-run.

You use a local skill by scoping a message to it with /skill <name>. A local skill whose name matches a skill id the config selects is used in place of the catalog text on that machine.

Self-improving skills

Self-improving skills is a separate switch in the config's Settings step: "The agent learns from runs to refine its skills, on-device." It's one of the engine's shipped on-device cores, so it adds no role slot and downloads no model. A Library bundle can ask for it to be turned on when you import it.

Plan & tier notes

Adopting skills and selecting them into configs is open on every plan. Running a config needs the openeng engine, which starts only on an active Pro plan (Plans & billing).

Troubleshooting

"skill '…' not found locally — skipped". The engine couldn't find a local SKILL.md with that id, and couldn't fetch a catalog skill's text from skills.openeng.app. Check the machine's network, and that the id is right (Skills → Mine shows each skill's catalog reference).

I can't create a new skill in the Console. The Skills page is adopt-only for now. Write a local SKILL.md instead.

The config's Skills step is empty. It lists only skills you've adopted. Adopt some on the Skills page first.

"Catalog may be stale." The Console couldn't reach skills.openeng.app and is showing the last copy it loaded.