Skills, contratos e gosto
O harness sabe usar skills, não só tools. Skills forçadas por contrato são injetadas inteiras e viram gate; as demais aparecem como catálogo leve e são carregadas s…
Formato e seleção
Skills seguem o formato agentskills.io (SKILL.md), instaladas via skill.sh (okami learn <fonte>). Há dois caminhos: forçadas por contrato/keywords (injetadas inteiras, viram gate) e progressive disclosure estilo Claude Code (catálogo leve sempre no prompt; a relevante é carregada sob demanda).
Skills empacotadas
14 skills customizadas vêm no skills/, todas passando pelo scan:
frontend-shadcn·frontend-heroui·claude-design(HTML one-off)humanizer·proactive-agent·tdd·writing-plans·communication-131code-wiki·page-agent·kanban-orchestrator·honcho-memorydelegate-claude·delegate-codex(quando escalar pro modelo forte)
Contratos de projeto
okami.yaml → contracts.ui declara regras duras e verificáveis. O contrato é injetado no contexto e vira exitCriteria — design system deixa de ser sugestão.
contracts:
ui:
library: shadcn
component_source: '@/components/ui'
forbid_inline_hex: true
forbid_raw_css: true
require_component_source: trueVerification gates
Antes de aceitar conclusão de UI, okami gate roda, em ordem:
- AST de imports — vêm de
component_source? exige o import da lib declarada? - Anti-CSS-ad-hoc — sem
<style>cru / hex inline fora dos tokens. - Lint de design tokens.
- Build + typecheck.
- Self-check visual — render headless → screenshot → critic.
Gosto de design (taste)
Aprovado atrai, recusado repele, “diferente” explora. Atratores e repulsores com peso ficam em .okami/taste.json por workspace. A escolha entre candidatos usa score(c) = w1·sim(atratores) − w2·sim(repulsores) − w3·sim(atual). CLI: okami taste like/dislike/different.
Segurança de skills
Skills são código + instruções que entram direto no contexto — vetor de prompt injection, exfiltração e RCE. Nada entra em skills/ sem passar por scan, que detecta:
- prompt injection / prompt-leak / stealth
- shell destrutivo (rm -rf, fork bomb, pipe-to-shell)
- exfiltração (webhooks Discord/Slack, requestbin/ngrok/pastebin)
- acesso a segredos (~/.ssh, .aws, .codex/auth) e RCE/ofuscação (eval/exec/base64)
- unicode oculto / Trojan Source (zero-width, bidi) e binários empacotados
okami learn owner/repo # baixa p/ quarentena, escaneia, promove se passar
okami scan ./skills/x # valida uma skill sob demanda
