Pular para o conteúdo

Grimoire

Catálogo open source de skills e workflows reutilizáveis para agentes de IA, instalável em Claude Code e Codex.

Problema

Skills e workflows de agentes de IA costumam ficar presos a uma única ferramenta e são copiados à mão de uma para outra.

Decisões

  • Arquitetura agnóstica de plataforma: uma implementação canônica por skill e empacotamento documentado por ferramenta.
  • Contratos de repositório verificados por testes em Python e avaliações comportamentais com cenários e resultados registrados.
  • Separar implementação, documentação, testes e integração por plataforma.

Stack

  • Python
  • Markdown
  • Claude Code
  • Codex

Resultado

Catálogo open source com 15 skills, uma delas orquestrando um workflow composto (chain), empacotado para Claude Code, Codex, Pi e Hermes Agent, com suíte de 41 testes em Python.

Aprendizado

Definir contratos estáveis entre ferramentas diferentes e testar o comportamento de agentes, não só o código.

Como usei IA

O produto são instruções para agentes de IA, então as mudanças nas skills são avaliadas com agentes: cada cenário tem critérios observáveis, roda contra as skills atuais para registrar o resultado RED e roda de novo depois da menor correção para registrar o GREEN, em contexto novo e sandbox isolado. Nenhum cenário é dado como aprovado só pela leitura do SKILL.md. Os contratos estruturais do repositório são verificados por testes em Python.

Evidências

  • Código-fonte e guias de instalação no GitHub
  • $ python -m unittest discover -s tests
    ...
    Ran 41 tests in 0.035s
    
    OK
    Suíte com 41 testes em Python (tests/test_repository.py): todos passam em execução local no commit d15acbb
  • ILUSTRAÇÃO · ILLUSTRATION skills/<nome>/SKILL.md (15) chains/business-direction.md manifesto · manifest: entrypoint + 8 skills business-direction entrypoint business-research product-scope market-positioning sales-pipeline financial-planning operations-planning strategy-synthesis skills avulsas · standalone skills (7) fora da chain · outside the chain route-context evolve-skills model-routing-policy project-design web-design-psychology github-issues gamification-psychology Fonte · Source: README.md, chains/business-direction.md, skills/
    IlustraçãoEstrutura do catálogo: 15 skills em skills/, 8 delas compostas pelo manifesto da chain business-direction e 7 avulsas
  • ILUSTRAÇÃO · ILLUSTRATION README.md skills/ <name>/SKILL.md Claude Code .claude-plugin/plugin.json marketplace.json: grimoire@migliatti Codex .codex-plugin/plugin.json skills: ./skills/ Pi .pi/settings.json skills: ../skills + extensions/ Hermes Agent docs/installation/hermes-agent.md external_dirs · GitHub tap ──▶ exposta a · exposed to skills/ = implementação canônica · canonical implementation Fonte · Source: README.md, docs/installation/
    IlustraçãoEmpacotamento por plataforma: a mesma implementação canônica em skills/ é exposta a Claude Code, Codex, Pi e Hermes Agent
  •     def test_packaged_version_is_consistent(self) -> None:
            claude = self.load(".claude-plugin/plugin.json")
            codex = self.load(".codex-plugin/plugin.json")
            marketplace = self.load(".claude-plugin/marketplace.json")
            entry = next(
                item for item in marketplace["plugins"] if item["name"] == PLUGIN_NAME
            )
            self.assertEqual(claude["version"], codex["version"])
            self.assertEqual(claude["version"], entry["version"])

    Teste que garante a mesma versão nos manifestos de Claude Code, Codex e marketplace (tests/test_repository.py) Ver no repositório

  •     def test_canonical_skills_are_vendor_neutral(self) -> None:
            banned = ("~/.claude", ".codex/skills", "AskUserQuestion")
            for path in (ROOT / "skills").glob("*/SKILL.md"):
                text = path.read_text(encoding="utf-8")
                for token in banned:
                    self.assertNotIn(token, text, f"{token} in {path}")

    Teste que impede referências a uma plataforma específica nas skills canônicas (tests/test_repository.py) Ver no repositório