Helpdesk
Triage inbound support: answer what it can, escalate what it cannot, and never promise a refund. It is also the reference product — the smallest complete example of every file kind a product can ship.
The rules in CLAUDE.md make the agent escalate billing
A message arrives on the channel that you connected. The triage skill puts it in one class: billing, technical or account. The CLAUDE.md rules tell the agent to quote the ticket ID in every reply, to escalate billing and account-deletion questions, and never to promise a refund. The agent answers the other questions from facts/.
An escalation to a person is a message. An escalation to another agent is a delegation, and the agent needs a grant for it. Setup shows both.
A sample exchange
user I was charged twice for March, ticket 4417.
agent Ticket 4417 — that's a billing question, so I'm escalating it
rather than guessing at your account state. Flagged for
billing now.
user how long until someone looks at it?
agent Ticket 4417 — first response target is 2 hours during business
hours.
The second answer comes from facts/sla.md, a file with one line.
Helpdesk ships one file of each kind
The other products ship a persona and knowledge. Helpdesk ships one file of every payload kind that has a consumer. Copy it when you want to see the whole shape:
| File | What it is |
|---|---|
arizuko.yml | the YAML manifest: name, brand, tagline and env hints |
group/PERSONA.md | who the agent is |
CLAUDE.md | package operating rules, mounted with the other package manuals |
facts/sla.md | knowledge that the agent answers from |
skills/triage/ | a skill that only this product ships; mounted read-only under .claude/ |
group/.claude/settings.json | agent settings, merged key by key |
group/BRANDING.md | an unnamed file: copied whole |
eval/helpdesk.toml | the tests of the product |
Build a product takes this tree from an empty directory to an applied group. tests/lab/product-lab.sh applies it on a temporary instance, so you can see where each file goes.