feat: adiciona suporte ao Kimi CLI como engine#2
Open
Wellbrito29 wants to merge 3 commits intosandeco:mainfrom
Open
feat: adiciona suporte ao Kimi CLI como engine#2Wellbrito29 wants to merge 3 commits intosandeco:mainfrom
Wellbrito29 wants to merge 3 commits intosandeco:mainfrom
Conversation
Registra o Kimi CLI (Moonshot AI) como nova engine no installer.
Por que
-------
Kimi CLI é um agente de codificação para terminal que lê AGENTS.md
nativamente (mesclando da raiz até o working directory) e auto-descobre
skills em .agents/skills/ — exatamente os mesmos paths que o Reversa já
popula. Falta apenas registrar a engine para que o usuário possa
selecioná-la no installer.
Como funciona
-------------
- Skills: instaladas em .agents/skills/ (auto-discovery nativa do Kimi,
sem duplicar arquivos)
- Entry file: AGENTS.md na raiz (mesma convenção de Codex / Antigravity
/ Opencode). Se já existir, o Writer reaproveita via merge prompt.
- Detecção: via diretório .kimi/ no projeto OU binário kimi no PATH
- Ativação: pelo nome do agente (`reversa`), igual Codex / Opencode
Mudanças
--------
- lib/installer/detector.js: nova entrada no array ENGINES + detector
- README.md: linha na tabela de engines suportadas
- docs/engines.{md,pt.md,es.md}: linha na tabela + seção descritiva
- package.json: bump 1.2.14 -> 1.3.0
* feat(chronicler): add agent skill with before/after modes
Reintroduz o agente Chronicler (removido em v1.2.9) com escopo expandido
para fechar o ciclo de drift entre specs e código.
Modo "before <descrição-ou-arquivos>": surfacea contratos, invariantes
e regras de negócio das specs impactadas antes da mudança. Read-only.
Modo "after": detecta drift via git diff + queue de hooks (preenchida
em fases posteriores), faz 3 perguntas (por quê / breaking / contexto),
atualiza specs in-place, reclassifica confiança 🟢🟡🔴, append em
changelog do dia, mantém dashboard _reversa_sdd/drift.md.
Arquivos:
- agents/reversa-chronicler/SKILL.md (skill principal)
- references/changelog-template.md (formato das entradas)
- references/drift-rules.md (5 categorias de drift + reclassificação)
- references/drift-dashboard-schema.md (schema do drift.md + transições)
- references/queue-schema.md (protocolo hook→agente)
Regras absolutas herdadas: nunca toca código do legado, escreve apenas
em _reversa_sdd/ e .reversa/.
* feat(chronicler): register in installer and add-agent
- prompts.js: adiciona chronicler em OPTIONAL_AGENTS (checked: true)
- add-agent.js: adiciona label + completa labels de reconstructor e
agents-help que estavam faltando no AGENT_LABELS
* chore: bump to 1.4.0-alpha.1
* feat(hooks): add engine-agnostic runner + queue protocol
Runner script invocado pelos hooks de qualquer engine (Claude, Cursor,
Kimi, Codex, Opencode). Sem deps externas — Node 18+ puro.
Responsabilidades:
- Append entrada em .reversa/chronicler-queue.json (com lockfile)
- Phase post: append stub em _reversa_sdd/changelog/YYYY-MM-DD.md
- Phase post: marca specs afetadas como pending em _reversa_sdd/drift.md
- Imprime warning no stderr quando spec de alta confiança é impactada
- SEMPRE exit 0 — nunca bloqueia a engine. Erros logados em
.reversa/chronicler-errors.log
Lookup de specs: parseia _reversa_sdd/traceability/code-spec-matrix.md
e extrai a coluna "Spec correspondente" para cada arquivo alterado.
Detecção de payload: aceita o shape do Claude (tool_input.file_path /
tool_input.edits[].file_path), Cursor (file_path / files[]) e formatos
genéricos. Stdin ausente é tolerado (timeout 200ms).
Lock simples: cria <queue>.lock com flag wx exclusiva. Considera lock
órfão após 5s.
index.js: registry de geradores por engine — começa com Claude apenas,
demais engines vêm em fases seguintes.
* feat(hooks): claude code generator
Escreve hooks PreToolUse + PostToolUse em .claude/settings.json
(project-level, committado com o time). Matcher: Edit|Write|MultiEdit.
Identificação de hooks Reversa para remoção idempotente: command string
contém o marcador "reversa/_hooks/runner.js". Outros hooks que o
usuário tenha configurado manualmente são preservados intactos.
A ação remove() limpa tanto entries individuais quanto a chave hooks.*
inteira se não sobrar mais nada.
* feat(cli): add-hooks and remove-hooks commands
- add-hooks [--engine <id>] [--yes]: copia o runner para
.reversa/_hooks/runner.js (project-local, sem estado global),
chama o gerador da engine, mostra preview do que vai escrever,
pede confirmação explícita, escreve, registra em
state.created_files para uninstall limpo.
- remove-hooks [--engine <id>] [--all] [--yes]: chama o remove()
do gerador (preserva hooks não-Reversa via marcador no command).
Se nenhum engine ainda usa hooks, remove o runner também.
- uninstall.js: integra HOOK_GENERATORS — antes de deletar arquivos
rastreados, chama gen.remove() em cada engine para strippar hooks
Reversa de configs compartilhadas (.claude/settings.json) sem
deletar o arquivo inteiro do usuário.
- bin/reversa.js: registra os 2 comandos novos + atualiza --help
* chore: bump to 1.4.0-alpha.2
* feat(hooks): cursor, kimi cli, codex and opencode generators
Adiciona 4 geradores ao registry, totalizando 5 engines com hooks
automáticos do Chronicler.
- cursor.js: .cursor/hooks.json com afterFileEdit (matcher **/*).
Filter por marcador no command — preserva hooks do usuário.
- kimi.js: .kimi/config.toml (project) ou ~/.kimi/config.toml (global)
com [[hooks]] PreToolUse + PostToolUse. Seção bracketada por marcadores
>>> reversa-chronicler hooks >>>. Backup obrigatório antes de editar
config global. Tooling do Kimi suporta múltiplos [[hooks]] empilhados.
- codex.js: .codex/hooks.toml com [[hook]] PreToolUse + PostToolUse
matcher apply_patch (formato esperado da release GA). Mesma estratégia
de marcador que kimi.
- opencode.js: plugin JS em .opencode/plugins/reversa-chronicler.js.
Plugin spawna o runner via child_process nos eventos
tool.execute.before/after. Arquivo inteiro é owned by Reversa
(criado/deletado, sem merge).
Bump alpha.2 → alpha.3.
* feat(cli): drift-check command for CI gating
CLI standalone para integração com pipelines de CI. Engine-agnostic e
sem dependências externas (não carrega chalk, inquirer ou agent code).
Lê _reversa_sdd/drift.md, conta status na coluna Status, exit code útil:
- 0: clean (zero pending no severity escolhido)
- 1: drift detectado
- 2: drift.md ausente (projeto não inicializado)
Severity:
- high (default): só pending bloqueia
- medium: pending + stale bloqueiam
- low: nunca bloqueia, só reporta
Format:
- text (default): legível por humano, dica de fix
- json: parseável por CI tooling
Detecta output_folder via .reversa/state.json se existir; fallback para
_reversa_sdd. Override via --folder.
Bump alpha.3 → alpha.4.
* docs: add chronicler agent documentation (3 langs)
- docs/agentes/cronista.{md,pt.md,es.md}: doc completa do agente
(modos before/after, regras de drift, reclassificação de confiança,
outputs, integração com outros agentes, trigger manual vs auto)
- docs/agentes/index.{md,pt.md,es.md}: linha do Chronicler na tabela
de agentes opcionais
* docs: add hooks and drift-check guides + cli/nav updates
- docs/hooks.{md,pt.md,es.md}: guia de add-hooks/remove-hooks por
engine, garantias de segurança, integração CI, diagrama de fluxo
- docs/drift-check.{md,pt.md,es.md}: referência completa do CI gate
(severity, format, exit codes, exemplos GitHub Actions/GitLab/git hook,
schema JSON)
- docs/cli.{md,pt.md,es.md}: adiciona seções dos 3 comandos novos
- mkdocs.yml: nav nova "Drift loop" com hooks + drift-check, listagem
do Chronicler na seção Agents (3 idiomas via nav_translations)
* docs(readme): cleanup obsolete refs + drift loop section
- Remove menções a "Tracer" — agente removido em v1.2.9
- Substitui linha do antigo "Chronicler v1.0" pelo escopo expandido v2.0
- Adiciona Reconstructor na tabela de Optional agents (faltava)
- Substitui dynamic.md (output do Tracer) por changelog/ + drift.md no
diagrama de _reversa_sdd/
- Nova seção "## Drift loop" explicando o ciclo completo (manual /
automático / enforced) com diagrama
- CLI commands inclui add-hooks, remove-hooks, drift-check
* chore: bump to 1.4.0
Resolve conflito de versão: bump para 1.5.0 (Chronicler 1.4.0 + Kimi CLI engine).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
Registra o Kimi CLI (kimi-cli — Moonshot AI) como nova engine no installer do reversa, permitindo que projetos que usam o
kimirecebam todas as skills do reversa vianpx reversa install.Por que
O Kimi CLI é um agente de codificação para terminal (Moonshot AI) que segue convenções compatíveis com o ecossistema do reversa:
AGENTS.mdnativamente, mesclando o conteúdo da raiz do projeto até o working directory (mesma convenção de Codex / Antigravity / Opencode).agents/skills/e.kimi/skills/(paths que o reversa já popula para outros engines)Falta apenas registrar a engine no array
ENGINESpara que o usuário possa selecioná-la no installer — toda a infraestrutura de cópia de skills e merge de entry file já funciona sem modificação.Como funciona
.agents/skills/(mesma estratégia do Codex / Opencode — auto-descoberta nativa pelo Kimi, sem duplicar arquivos)AGENTS.mdna raiz. Se Codex / Antigravity / Opencode já estiverem instalados no projeto, oAGENTS.mdexistente é reaproveitado viaaskMergeStrategydoWriter.installEntryFile()— comportamento idêntico ao já praticado entre Codex e Antigravity.kimi/no projeto OU bináriokiminoPATHreversa), igual Codex / Opencode (Kimi não tem slash commands nativos para skills project-level)Mudanças
lib/installer/detector.jsENGINES+ detectorREADME.mddocs/engines.mddocs/engines.pt.mddocs/engines.es.mdpackage.json1.2.14→1.3.0(minor — feature nova)Nenhum template novo foi adicionado: o
templates/engines/AGENTS.mdexistente é reutilizado, mantendo o repo enxuto.Referências da documentação oficial do Kimi
.agents/skills/e.kimi/skills/entre os paths auto-descobertos no nível do projetodefaultinjetaAGENTS.mdmesclado da raiz até o working directory como variável built-in do system prompt~/.kimi/config.tomlé configuração global (não afetada por este PR)Test plan
detectEngines()retornakimi-clicomdetected: truequando.kimi/existe ou bináriokimiestá noPATHWriter.installSkill()copia agentes do reversa para.agents/skills/<agent-id>/corretamente (sem alteração — caminho já testado para Codex)Writer.installEntryFile()criaAGENTS.mdna raiz, ou acionaaskMergeStrategyse já existir (sem alteração — caminho já testado para Codex / Antigravity / Opencode)kimiinstalado:kimi→ digitarreversadeve carregar a skill principal a partir de.agents/skills/reversa/SKILL.mdUX final no Kimi
Após
npx reversa installselecionando "Kimi CLI":