Skip to content

Competences EN

martialzinsou edited this page Sep 21, 2026 · 3 revisions

Skills

🇫🇷 French version: Compétences

Principle

A skill is a reusable instruction, independent of the language model: whether you load Qwen, SmolLM, or Phi, the active skill applies the same way.

Each skill is made of three required fields:

Field Guiding question Example
Role « Who are you in this conversation? » « Senior software engineer specialized in code review »
Context « What you know about the user's need » « The user submits Swift code and wants it improved »
Required outcomes « What to produce, and in what form » « Provide each fix as complete code, explain each error in one sentence, suggest a test »

The smaller the model, the more precise these instructions must be: the outcomes are the most effective lever.

Interface

Skills tab

  1. List — all skills, with an icon and an Active badge on the current one.
  2. Detail — the three fields + a preview of the assembled final prompt.
  3. Editor — create / edit (name, icon, role, context, outcomes).
  4. Example templates — buttons that pre-fill ready-made skills:
    • Translator,
    • Code reviewer,
    • Coach,
    • Writer.

Assembled system prompt

When a skill is active, the system message sent to the model has exactly this form:

Role: <the role>

Context: <the context>

Required outcomes: <the outcomes>

Example for the « Code reviewer » skill:

Role: Senior software engineer specialized in code review

Context: The user submits Swift or other language code and wants it improved.

Required outcomes: Provide each fix as complete code,
explain each error in one sentence, and suggest a test.

End-to-end flow

Skills flow

  1. Skills tab → create/edit a Skill (name + icon).
  2. Enter the role, the context, the required outcomes.
  3. Assemble the system prompt (in this exact order).
  4. Persist into skills.json.
  5. SkillStore remembers the active skill (activeSkillID, also persisted).
  6. The « Skill » menu in the chat lets you activate one of them.
  7. When sending a message, the system prompt is placed at the top of the history.
  8. The POST /v1/chat/completions call is issued — regardless of the loaded model.

How it works, technically

  • Storage: array of Skill + activeSkillID in ~/Library/Application Support/KarenOS/skills.json.
  • Migration: an old instructions field (initial format) is automatically converted into a context field on read — your old skills remain valid.
  • Validation: at least one of the three fields must be filled to activate the skill.

Data model

Field Type Description
id UUID Unique identifier.
name String Displayed name (e.g. « Code reviewer »).
icon String SF Symbol icon (e.g. wrench.adjustable).
role String The role assigned to the model.
context String The context of the need.
obligation String The required outcomes.
createdAt Date Creation timestamp.

See also: Inference of a message, Persistence.

Clone this wiki locally