bosskuai-customize-bosskuai · git:20260929.7a01f90 · 2026-09-29 · sha256 25d94667ef8d5178

bosskuai-customize-bosskuai git:20260929.7a01f90A

Immutable. This exact content never changes and is served at /api/v1/blob/25d94667ef8d5178.

---
name: bosskuai-customize-bosskuai
description: "Activates only when editing BosskuAI's own configuration - AGENTS.md, skills/skill-index.json, skills/*/SKILL.md, agents/*.md, or the host plugin manifests - and injects the real schemas, paths, and verification commands so the model doesn't guess."
license: MIT
metadata:
  author: bosskuai
  source: opencode-customize-opencode
---

# Customize BosskuAI Skill

Activates **only** when editing BosskuAI's own configuration. It carries the real
schemas so you don't invent structure the loader won't read.

## When to Load

- `AGENTS.md` — the shared contract for Claude Code, Cursor, Codex, OpenCode
- `skills/skill-index.json` — generated routing index (never hand-edit)
- `skills/*/SKILL.md` — skill definitions
- `skills/aliases.json`, `skills/vendored.json` — alias and upstream-pack registries
- `agents/*.md` — agent contracts (orchestrator, planner, executor, auditor, final-reviewer)
- `bossku/*.py` — the CLI (install, routing, validation)
- `.claude-plugin/`, `.cursor-plugin/`, `.codex-plugin/`, `.agents/`, `.opencode/` — host manifests

## Repo layout (authoritative)

BosskuAI is a **Python CLI plus a skill library**. There is no Laravel app, no
`ai-assistant/` tree. The `scripts/` directory holds host sync wrappers; older ADRs under `references/`
describe a previous layout and are history, not instructions.

```
AGENTS.md            CLAUDE.md (must contain a bare @AGENTS.md line)
agents/              five required contracts
bossku/              CLI: cli, install, skills, index, validate, memory, doctor
skills/<id>/SKILL.md one folder per skill
skills/skill-index.json
tests/               unittest suite
```

## SKILL.md frontmatter

Only `name` and `description` are read by every host on every session, so the
description is a **shared context budget** - keep it tight and specific.

```yaml
---
name: <must equal the folder name>
description: "Use when <trigger situations>. Aim for <=300 chars (validator max 1200)."
license: MIT              # optional
allowed-tools: Read, Edit # optional; never `tools:` in a skill
metadata:                 # optional
  author: ...
---
```

Rules:

- `name` must equal the directory name.
- Never use `tools:` in a SKILL.md - that key is for agent contracts. Skills use `allowed-tools:`.
- Keep block scalars simple (`>` or `>-`); both parse, but plain quoted strings are safest.
- Do **not** add `triggers:`/`keywords:` to frontmatter. Routing data lives in the
  index so it costs zero always-loaded context.

## Agent contract (agents/*.md)

```markdown
---
name: <agent-name>
description: <one line>
tools: ["Read", "Grep", "Glob"]
model: <inherit|sonnet|opus|haiku|fable|full model id>
---
# <Agent Name> Agent

<one-paragraph runtime behavior>

<!-- runtime-core:start --> ... <!-- runtime-core:end -->

## Contract
## Output
```

## skill-index.json

**Generated - never hand-edit.** Rebuild with `bossku skills index`. Entry shape:

```json
{
  "skills": {
    "skill-id": {
      "path": "skills/skill-id/SKILL.md",
      "name": "skill-id",
      "description": "...",
      "triggers": ["curated phrases"],
      "phrases": ["scraped from the description"],
      "keywords": ["idf-scored terms"],
      "model_role": "coder|planner|reviewer|researcher",
      "pack": "bossku|marketingskills|superpowers|..."
    }
  }
}
```

To improve routing for a skill, add wording to `CURATED_TRIGGERS` in
[`bossku/index.py`](../../bossku/index.py) and rebuild - curated triggers outrank
phrases scraped from descriptions. The index stores a `fingerprint` of every
skill's id + frontmatter; `bossku validate` fails when it drifts.

## Rules When Editing Config

1. **Never remove the `[BOSSKUAI]` indicator** from AGENTS.md.
2. **Every agent contract keeps its `runtime-core` block** — that is the injected behavior.
3. **`name` + `description` are mandatory** in every SKILL.md, and `name` matches the folder.
4. **Adding or renaming a skill requires `bossku skills index`**, or validation fails.
5. **Vendored skills belong to upstream.** Anything listed in `skills/vendored.json` should
   not be reworded locally - a re-vendor will overwrite it. Route around it with curated
   triggers instead.
6. **Adding an agent** requires updating `agents/`, the plugin manifests that list agents,
   and the orchestrator's flow table if it participates in a workflow.
7. **Version bumps must stay in lockstep** — `pyproject.toml` and all three plugin
   manifests are checked for equality.
8. **Never commit secrets** into skills, memory, or manifests.

## Verification

```bash
python -m bossku skills index --root .   # if any skill changed
python -m bossku validate --root .
python -m unittest discover -s tests
```

`validate` checks required files, agent contracts, frontmatter (name/description
present, length bounds, unknown keys), alias targets, index freshness, and that all
four host manifests agree on version and paths. If it fails, the change broke a
contract - fix before declaring done.