# Persona Shared Skills

This package-internal bundle is the portable Persona Harness skill core. Its
authoritative index is [`catalog.json`](./catalog.json).

Core sequence: `deep-interview` -> `technical-intake` -> `plan` -> optional
`ralplan` -> `tdd` -> `implementation` -> `review`. `programming`, `debug`,
`refactor`, and `git` provide bounded supporting guidance. `frontend`,
`visual-qa`, `ast-grep`, and `lsp-setup` are explicit optional overlays.
`philosophy-refinement` is a separate explicit-only core procedure; it never
starts from ordinary chat, code inspection, a direct implementation request, or
one-off code preference.
`grill-me` is a separate conversation-only decision stress test. It can start
automatically only when a concrete decision, design, or plan is paired with a
pressure-test signal such as assumptions, alternatives, risks, or trade-offs.

An explicit `/persona <skill-id>` command wins routing. Otherwise clear direct
work uses its matching supporting skill, while ambiguous product requests start
`deep-interview` with one safe action. `grill-me` does not replace
`deep-interview`, `ralplan`, code review, debugging, or direct implementation.
Hosts activate one compact catalog reference only; they do not load full bodies
or the catalog, or advance workflow state automatically. The only bundled
language reference is Java. Anything outside the catalog is nonoperative source
history, not a shipped Persona capability.

When loaded as an OpenCode plugin, Persona Harness registers this packaged
skills directory with OpenCode's native skill loader. The host can therefore
discover the catalog without a consumer-specific absolute path. Registration is
not activation: it does not inject every skill body, run a command, or advance
workflow state.

## Portable Contract

The root package exposes `persona-portable-skill-contract.1` through its
`./portable-skill` subpath. It turns the existing selected catalog entry into a
metadata-only capsule with versioned input/output schemas and required host
capabilities. Capsules contain no prompt, model output, credential, source
content, or absolute path.

Codex, OpenCode, Claude Code, and Antigravity adapters consume the same capsule.
If a host lacks a required capability, the adapter returns the bounded
`unsupported-capability` result and never falls back to another host's
semantics. The capability list must be an explicit valid array; absent,
malformed, or unknown entries are unsupported. The existing selector and
`runtimeInjection` default remain unchanged.
