Skip to content

Knowledge Packs Overview

Knowledge packs are installable bundles of workflows, roles, and targets for a specific domain — like a plugin that teaches SideButton how to automate a web application.

What is a Knowledge Pack?

A knowledge pack packages everything SideButton needs to work with a particular platform:

ComponentFilePurpose
Manifestskill-pack.jsonPack metadata (name, version, domain)
Target_skill.mdDomain knowledge — navigation, selectors, auth
Roles_roles/*.mdAgent behavior rules for this domain
Workflows*.yamlAutomation recipes

A single pack can contain multiple modules (subfolders), each with their own targets, roles, and workflows.

Pack Structure

acme.example.com/
├── skill-pack.json          # Manifest
├── _skill.md                # Root domain target
├── _roles/
│   └── qa.md                # Domain-level role
├── tasks/                   # Module
│   ├── _skill.md            # Module target
│   ├── _roles/
│   │   └── qa.md            # Module-specific role
│   ├── create.yaml          # Workflows
│   └── change_status.yaml
└── issues/                  # Another module
    ├── _skill.md
    └── create_issue.yaml

Why Knowledge Packs?

Without Knowledge PacksWith Knowledge Packs
Copy YAML files manuallysidebutton install
No domain context for AITargets describe the platform
No agent guidanceRoles teach when/how to automate
Hard to sharePublish a registry, others install
No versioningSemver in manifest

How They Load at Runtime

When SideButton starts, it loads content from three sources:

SourcePathWhat Loads
DefaultsBuilt-in defaults/Base roles and targets
User~/.sidebutton/roles/, targets/Your custom context
Skills~/.sidebutton/skills/<domain>/Installed knowledge packs

Knowledge pack content merges with defaults and user content:

  • Workflows — loaded recursively from skills/<domain>/**/*.yaml (skips _ and . directories)
  • Roles — loaded from skills/<domain>/_roles/*.md and skills/<domain>/<module>/_roles/*.md
  • Targets — loaded from _skill.md files; if no match pattern is specified, auto-matches on domain

Manifest Schema

Every knowledge pack requires a skill-pack.json at its root:

json
{
  "name": "acme/support",
  "version": "1.0.0",
  "title": "Acme Support Automation",
  "description": "Workflows for acme.example.com support portal",
  "domain": "acme.example.com",
  "requires": {
    "browser": true,
    "llm": false
  }
}
FieldTypeRequiredDescription
namestringYesPackage identifier (e.g., org/pack-name)
versionstringYesSemver version
titlestringYesHuman-readable name
descriptionstringYesWhat this pack automates
domainstringYesTarget domain (becomes install directory)
requires.browserbooleanNoNeeds browser extension
requires.llmbooleanNoNeeds LLM provider configured
privatebooleanNoMark as private/internal

Registry Schema

A registry is a directory (local or git) containing an index.json and one or more knowledge packs:

json
{
  "version": 1,
  "name": "My Knowledge Packs",
  "packs": [
    {
      "name": "acme/support",
      "domain": "acme.example.com",
      "version": "1.0.0",
      "title": "Acme Support Automation",
      "description": "Workflows for acme.example.com",
      "path": "acme.example.com",
      "requires": { "browser": true },
      "private": false
    }
  ]
}
FieldTypeDescription
versionnumberRegistry format version (currently 1)
namestringRegistry name
packsarrayAvailable knowledge packs
packs[].pathstringRelative path from registry root to pack directory

How Knowledge Packs Improve Over Time

Knowledge packs aren't write-once artifacts. They grow through use:

  • Exploration: Your agent documents new pages, selectors, and states as it discovers them
  • Testing: Broken selectors and missing states get fixed when encountered
  • Development: New API endpoints and changed UI get documented as part of dev work
  • Workflows: Common operations get encoded as YAML workflows, speeding up future tasks

Each time your agent works with a domain, the knowledge pack for that domain gets more complete. The confidence field in _skill.md frontmatter tracks documentation maturity (0.0–1.0).

See Creating Packs > Learning Loop for the full cycle.

Free Publishing

Create, validate, and publish knowledge packs from the CLI. Free for everyone — like npm for domain knowledge.

bash
sidebutton init example.com     # Scaffold a new knowledge pack
sidebutton validate             # Check structure and required files
sidebutton publish              # Publish to the registry

See Contributing Knowledge Packs for guidelines and best practices.

Knowledge Packs vs Plugins

Knowledge packs and plugins are both ways to extend SideButton, but they serve different purposes:

Knowledge PacksPlugins
PurposeTeach agents about a web appAdd new tool capabilities
ContentsMarkdown targets, YAML workflows, role playbooksCode handlers (bash/Node.js/Python)
Requires codeNoYes
Example"How to navigate Jira, what selectors to use""Record the screen as an MP4 video"

If you want to teach an agent what to do on a domain, create a knowledge pack. If you want to give an agent a new ability, create a plugin.

Next Steps

Released under the Apache-2.0 License.