grahama1970/ecossistema-de-agentes

Mapa canônico e contratos compartilhados para o ecossistema de governança de agentes: o envelope de limite pi.receipt_envelope.v1, o grafo de componentes e as regras de qual componente é dono de qual esquema. Use ao conectar uma skill ou extensão ao mundo compartilhado de recibos, ao perguntar como shame, triage-error, tau, ask, project-watchdog, ops-herdr, ponytail e Memory se encaixam, ou ao validar um envelope.

O que é ecossistema-de-agentes?

Este ecossistema define um loop de governança em camadas para agentes de IA, onde cada componente possui exatamente uma preocupação e se acopla apenas por meio de contratos JSON tipados, nunca importando as máquinas de estado uns dos outros. O objetivo imutável `$shame` é garantir que agentes de projeto não ignorem instruções explícitas, convertendo obediência a instruções e relatórios de conclusão em contratos validados por pydantic, gates de extensão determinísticos e avaliações agentivas retidas. O ecossistema é composto por componentes como shame (status de turno), triage-error (vocabulário de falhas), tau (execução de DAGs), ask (compilação de intenção para DAG), project-watchdog (despacho agendado), ops-herdr (transporte entre sessões), ponytail (minimalismo de geração) e Memory (armazenamento), todos interconectados por um envelope de limite `pi.receipt_envelope.v1` que valida a troca de mensagens em fronteiras que alteram autoridade. A topologia normativa é definida por uma tabela de propriedade e seções `## Ecosystem` em cada SKILL.md, garantindo que decisões sejam estritas e observações sejam permissivas, com mudanças de esquema sempre aditivas.

Funciona com✓Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/grahama1970/agent-skills/tree/main/skills/agent-ecosystem

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Prévia

Do README da skill

Ecossistema de governança de agentes

Documentação

Ecossistema de Agentes

Um loop de governança em camadas. Cada componente possui exatamente uma preocupação; eles se acoplam apenas por meio de contratos JSON tipados, nunca importando as máquinas de estado uns dos outros.

O objetivo imutável $shame é shame-deterministic-instruction-obedience-v1 (skills/shame/immutable_goal.json): tornar impossível para agentes de projeto ignorar instruções explícitas, convertendo obediência a instruções e relatórios de conclusão em contratos tipados validados por pydantic, gates de extensão determinísticos e avaliações agentivas retidas. Prosa é apenas exibição e não pode decidir sucesso. Cada membro do ecossistema nomeado abaixo DEVE preservar esse objetivo em seu limite.

O grafo

Ecossistema de governança de agentes

Renderizado com $create-svg (scene.yml é a fonte;regenerar com skills/create-svg/run.sh render skills/agent-ecosystem/scene.yml skills/agent-ecosystem/ecosystem.svg). O manifesto de associação legível por máquina é members.json (validado por scripts/membership.py validate; avaliação retida o mantém atualizado). Os gera, o SVG acima e o bloco mermaid abaixo são ilustrações NÃO NORMATIVAS; a tabela de propriedade e as seções ## Ecosystem dos membros são a topologia normativa.

flowchart TB
    subgraph SHAPE[Modelagem da geração]
        PONY[ponytail\nEscada YAGNI, sem recibos]
    end
    subgraph TURN[Camada de turno - Sessão Pi]
        SHAME[extensão shame\npi.agent_status.v1\nvalidar, compilar, engolir]
        TRIAGE[triage-error\nvocabulário de falhas\ncódigo, causa, próximo_comando]
    end
    subgraph WORK[Camada de fluxo de trabalho]
        ASK[ask\ncompila intenção para contratos DAG]
        TAU[tau\nexecuta DAGs, é dono da aceitação\nrecibos de nó tipados, goal_hash]
    end
    subgraph OPS[Camada de operações]
        WD[project-watchdog\ndespacho cron, leases,
gates de prova, recibos de tick]
        HERDR[ponte ops-herdr\ncaixa de entrada, quiescência,
cartas mortas TTL]
    end
    MEM[(Memory\nexemplos de treinamento,
resoluções de triagem,
conhecimento do projeto)]

    PONY -.-> SHAME
    SHAME -->|failed.triage.code| TRIAGE
    SHAME -->|comandos compilados needs_*| ASK
    ASK -->|tau.dag_contract.v1| TAU
    TAU -->|recibos de nó / handoff v2 carrega status| SHAME
    WD -->|ticket_repair via ask| ASK
    WD -->|lê vereditos| TAU
    HERDR -->|códigos de triagem de cartas mortas| TRIAGE
    SHAME -->|exemplos rotulados| MEM
    TRIAGE -->|códigos cunhados| MEM
    TAU -->|exportação pós-execução de recibos de nó ruins| MEM

Tabela de propriedade

ComponentePossuiEmiteConsomeDEVE para o objetivo imutável $shame
agentes de projetoobediência a instruções no limite do turnorelatórios pi.agent_status.v1instruções do operador, resultados de ferramentas, recibosDEVE reportar trabalho protegido como dados de status tipados, usar continuing.not_done[].next_command para trabalho inacabado executável por agente, e nunca tratar prosa/commits/opinião de revisor como prova de conclusão.
triage-errorvocabulário de falhas (failure_codes.json){código, causa, próximo_comando}texto de erro bruto de qualquer camadaDEVE fazer um sinal bruto mapear para um código de catálogo ou cunhado; rótulos terminais vagos não podem se tornar decisões válidas.
shamestatus do turno (pi.agent_status.v1) e shame.immutable_goal.v1objetos de status, objetivo imutável, exemplos de treinamentocódigos de triagem, rótulos humanosDEVE manter a verdade do status validada por pydantic, prosa-apenas-exibição e com gate de avaliação.
extensão lazy-report-shame-shame-shameaplicação de message_end do Pipacotes de rejeição, status renderizado, comandos de acompanhamentoJSON de status final, ledgers de continuaçãoDEVE rejeitar JSON de status ausente/inválido, remover prosa de status escrita pelo modelo, renderizar a partir de dados validados e enfileirar comandos de continuação/escalonamento compilados.
status-json-check.mjsextração de status final e invocação de validadorresultado do verificador com objeto de status validadotexto do assistenteDEVE não decidir validade de status com regex, cabeçalhos de prosa, markdown, HTML ou julgamento de LLM.
agent_status_schema.pylegalidade de status pydanticpassagem/falha de análiseJSON de status finalDEVE tornar estados de status inválidos irrepresentáveis com extra=forbid, cargas de estado tipadas, códigos de triagem canônicos, e not_done apenas em continuing.
compile-status-command.mjscompilação tipada de status para comandocomando de acompanhamento exato ou nenhum comandoobjeto de status validado por pydanticDEVE compilar cargas continuing/needs_* mecanicamente e compilar estados terminais/humanos para nenhum comando automático.
agentic-evalsprova de regressão retidarelatórios de prontidãofixtures e comandosDEVE falhar se a política de status por regex/prosa retornar ou se invariantes de status pydantic forem enfraquecidas.
askcompilação de intenção para DAGtau.dag_contract.v1, pacotes de recuperaçãocargas de escalonamento de statusDEVE consumir cargas tipadas needs_* em vez de prosa de escalonamento informal.
tauexecução de DAG e aceitaçãorecibos de nó, tau.agent_handoff.v1/v2, hashes de objetivocontratos DAG, objetos de status embutidosDEVE possuir hashes de objetivo imutáveis e recibos de aceitação tipados; prosa de revisor não pode substituir aceitação.
project-watchdogdespacho agendadorecibos de tick, gates de prova, locks, ledgers de continuaçãotickets do GitHub, vereditos do tauDEVE expor trabalho aberto legível por máquina para que done possa falhar enquanto tickets/gates/próximos passos permanecem não resolvidos.
ops-herdrtransporte entre sessõesregistros de caixa de entrada, cartas mortascódigos de triagemDEVE carregar falha/estado entre sessões como registros de caixa de entrada ou cartas mortas com códigos de triagem.
ponytailminimalismo de geraçãocomentários de dívida ponytail: (não recibos)nada do mundo de recibosDEVE não substituir requisitos de status, recibo, prova ou avaliação.
Memoryrecallrespostas de leitura de volta de armazenamento/recall (não recibos de envelope; recalls são observações, nunca embrulhadas)tudo durávelDEVE armazenar exemplos do shame, resoluções de triagem e conhecimento do projeto com leitura de volta; recalls são observações, não recibos de conclusão.
agent-ecosystempropriedade de componentes e limites de recibosvalidação pi.receipt_envelope.v1cargas de limiteDEVE publicar o mapa de propriedade e exigir embrulho de envelope em fronteiras que alteram autoridade.
goal-helperforma de objetivo centrada em provaprompt/checklist de objetivo imutáveltexto de objetivo humanoDEVE manter o sucesso vinculado à prova primária, critérios de conclusão, escopo permitido, deriva proibida, orçamento de repetição e condição de parada.

pi.receipt_envelope.v1 - o envelope de limite

Embrulhe uma carga no envelope APENAS em fronteiras que alteram autoridade: despacho, handoff, aceitação, escalonamento, fechamento, falha durável. Objetos internos permanecem desembrulhados (decisão YAGNI revisada: sem barramento de eventos universal, sem envelope em todo artefato).

{
  "schema": "pi.receipt_envelope.v1",
  "receipt_id": "id-estável",
  "payload_schema": "pi.agent_status.v1",
  "producer": "shame",
  "emitted_at": "RFC3339",
  "goal_hash": "sha256:<64hex> (opcional)",
  "parent_refs": [
    {"receipt_id": "id", "expected_schema": "s", "expected_producer": "p", "digest": "sha256:<64hex> (opcional)"}
  ],
  "triage_code": "código de catálogo ou cunhado (opcional)",
  "payload": {}
}

Validar com:

skills/agent-ecosystem/run.sh validate <envelope.json>
echo '{...}' | skills/agent-ecosystem/run.sh validate -

Regras aplicadas por scripts/receipt_envelope.py (pydantic, extra=forbid):

  • triage_code, quando presente, deve ser um código de catálogo do triage-error ou um código cunhado *_unclassified_<8hex> - mesma regra que pi.agent_status.v1.failure.
  • goal_hash e parent_refs[].digest devem ser sha256: + 64 hex minúsculos.
  • parent_refs exigem goal_hash: uma aresta de evidência sem um objetivo compartilhado não é confiável e falha na validação.
  • Pydantic prova ESTRUTURA apenas. RESOLUÇÃO de referência é uma etapa separada do lado do consumidor com quatro verificações obrigatórias: o recibo referenciado existe; seu schema é igual a expected_schema; seu produtor é igual a expected_producer; e resolved_parent.goal_hash == envelope.goal_hash (um hash presente não é um objetivo compartilhado até ser comparado). A verificação de digest é aplicada quando digest está definido. Um envelope estruturalmente válido ainda não é um confiável.
  • payload.schema é OBRIGATÓRIO em toda carga embrulhada e deve ser igual ao payload_schema do envelope; uma carga anônima falha na validação.
  • Mudanças no conjunto de campos de qualquer schema extra=forbid são quebras por construção; elas exigem uma nova versão de schema, nunca uma edição no local.

Convenções de campo JSON compartilhadas

Os campos abaixo são a superfície compartilhada real. Um componente "compartilha" um campo quando emite ou valida o mesmo nome, forma e semântica que o proprietário.

CampoFormaProprietárioCompartilhado por
schemaid versionado, ex. pi.agent_status.v1cada proprietário de schematodo objeto de contrato; bumps de versão são aditivos-ou-novo-nome
code (triagem)entrada de catálogo ou <prefixo>_unclassified_<8hex>triage-errorshame failure.triage.code, envelope triage_code, cartas mortas do herdr, pacotes de recuperação do ask
cause / next_commandstring simples / comando executável exatotriage-errortodo consumidor de uma classificação de triagem; next_command também é o campo continuing keep-going do shame
goal_hashsha256: + 64 hex minúsculostau (pacote de objetivo imutável)status do shame (opcional), envelope (opcional), todo recibo de nó do tau
verified[]pares {command, result}shameprova de estado done em todo lugar que um objeto de status é embutido
proof[]caminhos/URLs/ids concretos; caminhos locais em pi.agent_status.v1 devem existir antes de done passarshameobjetos de status; gates de prova do watchdog nomeiam os mesmos artefatos
parent_refs[]{receipt_id, expected_schema, expected_producer, digest?}envelope agent-ecosystemevidência de escalonamento (substitui caminhos ad hoc em needs_webgpt)
producer / receipt_id / emitted_atstring / id estável / RFC3339envelope agent-ecosystemqualquer recibo embrulhado em limite
payload_schemaid versionado; deve ser igual a payload.schema quando a carga declara umenvelope agent-ecosystemqualquer recibo embrulhado em limite
vereditos terminaisPASS FAIL BLOCKED NEEDS_ATTENTIONtauask se junta, gates de prova do watchdog, monitores de fluxo
recoverable / not_thisbool / lista de exclusãocatálogo do triage-errorconsumidores decidindo repetir vs escalonar

Convenções do triage-error (normativas aqui, implementadas lá)

  1. Um sinal bruto mapeia para UM {código, causa, próximo_comando}; um código genérico em um limite de camada é um bug, não uma classificação.
  2. Entradas de catálogo vivem em skills/triage-error/failure_codes.json com {código, camada, match[], causa, próximo_comando, recuperável, not_this[]}. A correspondência é determinística: a normalização é exatamente " ".join(texto.lower().split()) (minúsculas, todas as sequências de whitespace colapsadas para espaços simples, pontas cortadas); uma entrada corresponde quando QUALQUER um de seus tokens match[] (também em minúsculas) é uma substring do sinal normalizado; quando --layer é fornecido, entradas com uma layer diferente são puladas; a PRIMEIRA entrada correspondente na ordem do arquivo vence. Nunca regex, nunca julgamento de LLM. Proibido como classificações terminais (são sintomas, não causas, e devem ser re-tiradas do sinal subjacente): NEEDS_ATTENTION, BLOCKED, browser_handler_timeout, unknown_error, generic_failure, e qualquer palavra de veredito terminal simples.
  3. Sinais não correspondentes cunham <camada-ou-desconhecido>_unclassified_<8hex> onde os 8 caracteres hex são os primeiros 8 de sha256 sobre o texto do sinal normalizado, então o mesmo sinal sempre cunha o mesmo código. Cunhar abre o ticket + loop de agente-avaliação + memória. Limiar de recorrência: a SEGUNDA observação do mesmo código cunhado aciona promoção ou aliasing. Representação de alias: um mapa aliases de nível superior no arquivo de catálogo mapeia código cunhado -> código canônico; porque cunhar é determinístico sobre o sinal normalizado, um sinal recorrente cunha novamente o mesmo código e o classificador o resolve através do mapa para a entrada canônica (registrada como aliased_from); o código cunhado nunca é uma segunda identidade canônica. Os efeitos colaterais de ticket/avaliação/memória são idempotentes por código cunhado (chaveados pela string do código).
  4. Todo componente do ecossistema que nomeia uma falha usa um código de catálogo ou cunhado. Tanto validadores pydantic (schema de status, envelope) aplicam isso em tempo de análise, então um rótulo ambíguo não pode existir em um objeto válido.

Decisões de design (da revisão externa)

  1. Rigor se aplica a DECISÕES, não a observações. Mantenha evidência bruta permissiva; mantenha resultados aceitos rigorosos. Uma observação tipada unknown é legal; uma decisão ambígua não é.
  2. Códigos cunhados *_unclassified_* têm um ciclo de vida provisório: promova para o catálogo ou crie alias para um código existente quando recorrerem; nunca os deixe proliferar.
  3. Mudanças de schema são aditivas; mudanças de forma que quebram recebem uma nova versão (padrão tau.agent_handoff.v2), nunca edições no local.
  4. Não construir: um barramento de eventos de governança universal; recibos para comentários do ponytail, recalls do Memory ou repetições internas.

Associação

Uma skill ou extensão se junta ao ecossistema adicionando uma seção ## Ecosystem ao seu SKILL.md nomeando: quais schemas produz, quais consome e quais eventos de limite embrulha no envelope. Membros atuais: shame, triage-error, tau, ask, project-watchdog, ops-herdr. Ponytail é adjacente por design.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

grahama1970/acceptance-contract

Turn a client brief, zip bundle, directory, or single requirements file into a typed acceptance-contract bundle with extracted requirements, acceptance checks, open questions, an immutable-goal draft, and a create-report-backed decision report. Use when users say acceptance contract, brief to requirements, freeze the goal, create immutable goal, amend immutable goal, build a Battle requirements bundle, or extract requirements from this bundle.

grahama1970/agentic-evals

Agentic evaluation of skills using multi-trial fixtures, deterministic command assertions, trajectory checks, safety constraints, and evidence-backed readiness scoring. Use when users ask for agentic evals, multi-trial skill evaluation, skill trajectory validation, or readiness scoring for a skill workflow.

grahama1970/agent-inbox

File-based inter-agent messaging with headless dispatch. Check inbox, send bugs/requests to other projects, automatically spawn headless agents to fix bugs, and track progress via task-monitor.

grahama1970/agents-registry

Generate and query the centralized agent identity registry. Scans .pi/agents/*/AGENTS.md, parses frontmatter, outputs agents-registry.json and optionally syncs to /memory for semantic search.

grahama1970/agent-status

Artifact-driven status surfaces for long-running project-agent work. Maintains status.json, events.jsonl, proof manifests, and a stale-aware STATUS.html so humans can tell where the agent is, what passed, what is still unproven, and what decision or action is next — without dashboard theater.

grahama1970/align

Round-based context alignment before execution. Use when the human, project agent, WebGPT, scillm, ask, dogpile, memory, or project-knowledge may each hold different facts about a task; especially before ambiguous design, infographic, product workflow, high-stakes implementation, plan-iterate, project-infographic, or multi-review work.

grahama1970/analytics

Flexible data science analytics for any dataset. Auto-discovers schema, recommends charts, exports to create-figure. Works with JSONL, JSON, CSV from any source.

grahama1970/analyze-chatterbox-emotions

Evaluate generated Chatterbox voice files as voice-quality artifacts: affect match, arousal/valence proxies, pause placement, intelligibility inputs, clipping, loudness, and discontinuity flags. Use when reviewing Chatterbox emotional tags, pauses, Turbo/base affect delivery, Persona Dream utterance renders, or whether generated speech matches an intended product-facing affect.

grahama1970/analyze-elf

Reverse-engineer features from ELF binaries. Extracts CLI commands, state machines, protocols, Zod schemas, and data models. Automatically generates a /create-walkthrough prosecution brief with Mermaid diagrams. Uses /treesitter for AST analysis of bundled JS/TS source.

grahama1970/animation-vocabulary

Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.

grahama1970/anonymize-data

Anonymize supported CSV, JSON, UTF-8 text, and SQLite files using an explicit policy through the oai-trial project. Use for anonymize data, pseudonymize exports, redact policy literals, or discover and explicitly approve fuzzy name aliases. The skill is a thin CLI/Docker interface, not another engine.

grahama1970/anvil

Heavy-duty "No-Vibes" debugging and hardening orchestrator. Use this for complex, stubborn bugs where `review-code` has failed, or for "Red Teaming" (hardening) a codebase. Runs multiple agents in parallel (Thunderdome) using git worktree isolation.

grahama1970/apple-design

Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.

grahama1970/argue

Multi-persona structured debate orchestrator. Personas research via /dogpile, consult colleagues via /ask, and argue toward nuanced synthesis on complex questions.

grahama1970/arxiv

Search arXiv for papers and extract knowledge into memory. Use `search` to find papers, `learn` to extract knowledge.

grahama1970/ask

Use when the user asks to query project memory, ask an oracle, use supported browser-backed reviewers, run Tau roundtable/single-handler workflows, ask Pi-native subagents from within Pi, run persona/deep-review workflows, generate image prompts, check OS/project health through composed skills, or run an ask DAG. This skill is the executable /ask runtime; do not replace it with an informal subagent, plain web search, or hand-written review; inside Pi, explicit Pi-native subagent targets are routed through the pi-subagents tool as an Ask target type.

grahama1970/assess

Step back and critically reassess project state. Use when asked to "assess", "step back", "fresh eyes", "check alignment", "sanity check", "health check", "prune documentation", or "evaluate what's working". Offers documentation pruning and doc-code alignment analysis. Offer to run after major changes (don't auto-run).

grahama1970/assistant

Shared GPT + classifier inference gateway for persona monitor tasks. Routes validation and classification through a 4-tier cascade: heuristic → classifier → local GPT → scillm.

grahama1970/assistant-lab

Self-improvement workbench for /assistant. All the tools needed to diagnose, train, evaluate, and promote models in a continuous loop. The "warm pond" where /assistant evolves its own inference stack.

grahama1970/batch-quality

Pre-flight validation and quality gates for batch LLM operations. ACTUALLY tests samples through LLM before burning tokens. Uses SPARTA contracts for DuckDB validation queries. Integrates with task-monitor for enforced quality gates.

Habilidades Relacionadas