Skills Configuration

Overview

Skills let a Digital Employee follow a reusable operating guide for a specific task or domain.

This repository follows the AIP skills configuration model. For the canonical guide, see the AIP Skills Guidearrow-up-right.

There are two supported usage patterns demonstrated by the examples:

  • Remote GitHub-based skills

  • Local path-based skills

Use remote skills when you want a deployable Digital Employee that references skills stored in GitHub. Use local skills when you want to develop and test skill behavior locally without deploying.

Key Concepts

What is a skill?

A skill is an instruction package that gives the Digital Employee a narrowly scoped behavior. In practice, the examples in this repository show two ways to provide a skill:

  • A GitHub URL pointing to a skill directory

  • A local filesystem path loaded with Skill.from_path(...)

How skills are attached

You attach skills when constructing DigitalEmployee:

from digital_employee_core import DigitalEmployee

DigitalEmployee(
    identity=identity,
    skills=skills,
)

You can also add skills later using digital_employee.add_skills(...) before deployment or execution.

Skill source types

Remote GitHub skills

In examples/skills_example.pyarrow-up-right, the skill source is a GitHub URL:

This is the right choice when:

  • You want skills stored in a versioned repository

  • You want the Digital Employee to be deployed and run remotely

  • You want to share the same skill source across environments

Local path-based skills

In examples/local_skills/local_skills_example.pyarrow-up-right, the skill source is loaded from disk:

This is the right choice when:

  • You are developing a skill locally

  • You want deterministic testing during development

  • You do not want to deploy the skill first

Remote GitHub Skills Example

The file examples/skills_example.pyarrow-up-right demonstrates the remote workflow.

1) Create the Digital Employee identity

2) Attach a GitHub-hosted skill

3) Deploy before running

What this example shows

  • The Digital Employee accepts a GitHub URL as a skill source

  • Remote skills are used in the normal deployed workflow

  • deploy() is called before run(...)

Private GitHub repositories

The example notes that public repositories work directly. For private repositories, you must provide one of these environment variables:

  • GITHUB_PERSONAL_ACCESS_TOKEN

  • GITHUB_TOKEN

  • GH_TOKEN

Local Skills Example

The directory examples/local_skills/arrow-up-right demonstrates the local workflow.

1) Define the skill directory

Make a file in ./.agents/skills/haiku-standup/SKILL.mdarrow-up-right with the following content:

2) Load the local skill

3) Load the local skill

4) Attach the skill to a Digital Employee

5) Run locally without deployment

What this example shows

  • A local skill is loaded from a filesystem path

  • The skill folder is expected to exist before execution

  • Path-based skills are intended for local execution only

  • Local skills should be run with run(..., local=True)

  • The example does not call deploy()

When to Use Which Approach

Use remote GitHub skills when

  • You want a deployable Digital Employee

  • Your skill definitions are stored in GitHub

  • You want centralized version control for skill content

  • You are building a remotely hosted assistant workflow

Use local skills when

  • You are iterating on skill content locally

  • You want quick testing without deployment

  • You need local-only experimentation or deterministic development loops

  • You already have a local skill folder with a valid SKILL.md

Best Practices

1. Keep skills narrowly scoped

Write each skill for a specific job, such as copywriting or standup formatting, rather than combining many unrelated behaviors into one skill.

2. Use deploy() only for remote workflows

Follow the examples:

  • Remote GitHub skill example: call deploy() before run(...)

  • Local path-based skill example: skip deploy and call run(..., local=True)

3. Validate the local path before running

The local example checks that the path exists before creating the employee. This is a good pattern when developing local skills.

4. Keep SKILL.md explicit

A strong skill file should clearly define:

  • When the skill applies

  • The expected output structure

  • Rules and constraints

  • What the model must infer versus what it must ask about

Troubleshooting

Local skill is not being found

Problem: The local skill does not load.

Solution:

  • Verify the directory path is correct

  • Verify SKILL.md exists at the root of the skill directory

  • Verify you are calling Skill.from_path(str(skill_path))

Local skill does not behave as expected

Problem: The output ignores the intended format.

Solution:

  • Make the instructions in SKILL.md more explicit

  • Add stricter output templates and rules

  • Ensure the employee instruction does not conflict with the skill behavior

Remote GitHub skill cannot be accessed

Problem: The Digital Employee cannot use the GitHub-based skill.

Solution:

  • Verify the GitHub URL points to the correct skill directory

  • If the repository is private, set GITHUB_PERSONAL_ACCESS_TOKEN, GITHUB_TOKEN, or GH_TOKEN

  • Ensure you call deploy() before run(...)

Last updated