new-role · git:20261023.9f9eaf2 · 2026-10-23 · sha256 4166a0fcff98a259

new-role git:20261023.9f9eaf2A

Immutable. This exact content never changes and is served at /api/v1/blob/4166a0fcff98a259.

---
# GENERATED by scripts/kernel/sync.py from skills/new-role/SKILL.md - do not edit
name: new-role
description: Use when the owner wants to hire a new agent role (agency-wide or project-owned) or asks whether something should be a role at all. Interview, role card from template, evals folder, probation entry, then sync and lint.
disable-model-invocation: true
---

# New role (the hire workflow)

Today is !`date +%F`. Request: `$ARGUMENTS`

## Procedure
1. **Interview** (one question at a time, stop when answered): which recurring ticket type or
   distinct tool/auth justifies a role rather than a skill? Dependency test: if this role
   disappeared tomorrow, what breaks? Who does it report to? What must it never do?
2. **Classify**: agency-wide roles live in `agents/<name>.md`. Check the existing cards and
   `grep -ril "<name>" agents skills` so no duplicate exists.
3. **Scaffold** from `templates/role-card.md`: fill every frontmatter key,
   `status: probation`, `version: 0.1.0`, `created`/`updated` = today, `tier_max` no higher
   than the handbook allows for its tools; body sections Charter · Inputs · Outputs · How I work
   · Boundaries · Stop conditions · KPIs, at most 80 lines.
4. **Wire**: create `evals/<name>/cases.yaml` with at least three cases in the format of
   `scripts/kernel/evals.py` (see `evals/README.md`); append a probation entry to the runtime's
   role-review log; run `python3 scripts/kernel/sync.py` so the engine adapters exist.
5. **Lint**: `python3 scripts/kernel/lint.py` must report 0 findings for the new card.
6. **Dry run**: `python3 scripts/kernel/evals.py prepare --role <name> --out <dir>`,
   run the role on each case as a subagent, grade with `evals.py grade`; every case at its threshold.
7. Report the paths created and the tier the role starts at.