dd-harness 0.33.2 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +15 -3
- package/dist/skills-iniciais.js +125 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -56,7 +56,12 @@ const AJUDA = `dd-harness — a política e o Brain do projeto, no serviço
|
|
|
56
56
|
dd-harness sessao --host <host> hook de boot (stdin JSON)
|
|
57
57
|
dd-harness guarda --host <host> hook antes de ferramentas (stdin JSON)
|
|
58
58
|
dd-harness start [--host <host>] numa pasta vazia: conduz tudo (login,
|
|
59
|
-
espaço, projeto, config) numa tacada
|
|
59
|
+
espaço, projeto, config) numa tacada.
|
|
60
|
+
Instala os TRÊS hosts por padrão (claude,
|
|
61
|
+
codex, antigravity) — cada um escreve no
|
|
62
|
+
arquivo que a sua ferramenta lê, sem
|
|
63
|
+
conflito. Use --host claude,codex para
|
|
64
|
+
limitar
|
|
60
65
|
dd-harness login --token <token> [--api <url>]
|
|
61
66
|
guarda a credencial desta máquina
|
|
62
67
|
dd-harness projeto <slug> --nome "<nome>" [--tenant <t>] [--api <url>]
|
|
@@ -354,7 +359,13 @@ function mascara(token) {
|
|
|
354
359
|
* o merge cuidadoso em `escreve-config.ts`: nunca perder o que a pessoa ja tinha.
|
|
355
360
|
*/
|
|
356
361
|
async function comandoStart(argv) {
|
|
357
|
-
|
|
362
|
+
// Todos os hosts por padrao, como o `integrar` ja fazia. Instalar so o Claude obrigava
|
|
363
|
+
// quem abrisse o mesmo repositorio no Codex a descobrir sozinho que faltava um comando —
|
|
364
|
+
// e o projeto so descobre isso quando o outro host ja esta aberto e sem protocolo.
|
|
365
|
+
// Configuracao de host nao e escolha do dia da criacao: e a porta que CADA ferramenta
|
|
366
|
+
// usa, e as tres escrevem em arquivos diferentes, sem conflito. `--host` continua
|
|
367
|
+
// aceitando a lista explicita para quem quiser menos.
|
|
368
|
+
const hosts = selecionaHosts(argumento(argv, "host") ?? "todos");
|
|
358
369
|
const caminhoConfig = join(process.cwd(), CAMINHO_CONFIG);
|
|
359
370
|
try {
|
|
360
371
|
await access(caminhoConfig);
|
|
@@ -496,8 +507,9 @@ async function comandoStart(argv) {
|
|
|
496
507
|
const { escritos, conflitos } = await escrevePonteirosDeSkills(process.cwd(), skills, hosts.map(h => h === "claude" ? ".claude" : ".agents"));
|
|
497
508
|
if (conflitos.length)
|
|
498
509
|
console.log("Ponteiros preservados por conflito: " + conflitos.join(", "));
|
|
510
|
+
const destinos = [...new Set(hosts.map(h => h === "claude" ? ".claude" : ".agents"))];
|
|
499
511
|
console.log(escritos > 0
|
|
500
|
-
? `escritos ${escritos} ponteiro(s) de skill em .
|
|
512
|
+
? `escritos ${escritos} ponteiro(s) de skill em ${destinos.map(d => d + "/skills/").join(" e ")}`
|
|
501
513
|
: `${skills.length} skill(s) — ponteiros já estavam em dia`);
|
|
502
514
|
}
|
|
503
515
|
}
|
package/dist/skills-iniciais.js
CHANGED
|
@@ -575,4 +575,129 @@ que estava fora do bloco continua intacto** — é a garantia que o usuário que
|
|
|
575
575
|
Se o projeto tem git, sugira conferir o diff antes de commitar. Não commite: o projeto é
|
|
576
576
|
do usuário e as regras de commit dele são dele.`,
|
|
577
577
|
},
|
|
578
|
+
{
|
|
579
|
+
slug: "revisar-memoria",
|
|
580
|
+
descricao: `Investiga se memórias antigas do Brain ainda são verdadeiras e traz um parecer com evidência, para você decidir. Invoque quando quiser fazer uma faxina do Brain, quando o status mostrar revisão vencida, ou quando desconfiar que alguma decisão registrada envelheceu. Só investiga e relata — nunca edita, arquiva ou apaga nada.`,
|
|
581
|
+
ferramentas: ["mcp__dd-harness__ler_memoria", "mcp__dd-harness__buscar_memoria", "Read", "Grep", "Glob", "WebSearch", "WebFetch", "Bash(dd-harness status:*)", "Bash(dd-harness check:*)", "Bash(dd-harness ler:*)", "Bash(git log:*)", "Bash(git diff:*)"],
|
|
582
|
+
so_por_comando: true,
|
|
583
|
+
dica_de_argumento: "[pasta/slug para revisar uma só, ou vazio para varrer o acervo]",
|
|
584
|
+
conteudo: `# Revisar memória
|
|
585
|
+
|
|
586
|
+
A deriva pega a memória cujo **código** mudou. Esta skill existe para a outra — a que
|
|
587
|
+
ninguém olha há muito tempo e cuja **razão** pode ter morrido sem deixar rastro no
|
|
588
|
+
repositório: o fornecedor mudou o limite, o bug de terceiro foi corrigido, a exigência de
|
|
589
|
+
compliance caiu, a lib passou a fazer nativamente o que a memória ensina a contornar.
|
|
590
|
+
|
|
591
|
+
Nenhum \`check\` acusa isso. O alvo está intacto; é o mundo que mudou.
|
|
592
|
+
|
|
593
|
+
## A regra que não se quebra
|
|
594
|
+
|
|
595
|
+
**Você não edita, não arquiva e não apaga. Nada.** Esta skill investiga e apresenta o
|
|
596
|
+
caso; quem decide é o usuário, na conversa.
|
|
597
|
+
|
|
598
|
+
Isso não é cautela decorativa: arquivar tira a memória de circulação, e quem vier depois
|
|
599
|
+
não saberá que ela existiu se você errar. O custo dos dois erros é assimétrico — manter
|
|
600
|
+
uma memória morta custa uma linha de índice; apagar uma viva custa o incidente que ela
|
|
601
|
+
evitava, e ninguém vai ligar uma coisa à outra.
|
|
602
|
+
|
|
603
|
+
## Idade não é veredito
|
|
604
|
+
|
|
605
|
+
O critério tentador é "ninguém revisitou há muito tempo, logo não serve". **Está errado, e
|
|
606
|
+
o ROADMAP deste projeto já registra por quê:** contagem baixa correlaciona com *raridade*,
|
|
607
|
+
não com inutilidade — a memória que protege contra o erro raro e catastrófico é a que tem
|
|
608
|
+
a contagem mais baixa de todas.
|
|
609
|
+
|
|
610
|
+
Então idade é **motivo para olhar**, nunca argumento no parecer. Se o único fundamento que
|
|
611
|
+
você tiver para propor a saída de uma memória for "é antiga", **você não tem fundamento**:
|
|
612
|
+
relate como "continua valendo" e siga.
|
|
613
|
+
|
|
614
|
+
## 1. Escolha as candidatas
|
|
615
|
+
|
|
616
|
+
Com \`pasta/slug\` no argumento, é aquela — pule para o passo 2.
|
|
617
|
+
|
|
618
|
+
Sem argumento, monte a lista nesta ordem:
|
|
619
|
+
|
|
620
|
+
1. \`dd-harness status\` — as que ele já aponta como **revisão vencida** entram primeiro
|
|
621
|
+
2. Memórias antigas que **nunca** tiveram deriva (código estável ao redor: é exatamente
|
|
622
|
+
onde esta skill enxerga o que o \`check\` não vê)
|
|
623
|
+
3. As que citam **coisa de fora** — versão, fornecedor, limite, prazo, bug de terceiro:
|
|
624
|
+
são as que envelhecem sem avisar
|
|
625
|
+
|
|
626
|
+
**Teto de cinco por rodada.** Cada memória é uma investigação de verdade; trazer quinze
|
|
627
|
+
pareceres rasos é pior que trazer três com evidência, e o usuário não consegue decidir
|
|
628
|
+
sobre quinze de uma vez.
|
|
629
|
+
|
|
630
|
+
## 2. Leia a memória inteira — o porquê, não o título
|
|
631
|
+
|
|
632
|
+
\`ler_memoria\`. A pergunta que governa tudo:
|
|
633
|
+
|
|
634
|
+
> A razão que fez esta memória existir continua verdadeira **hoje**?
|
|
635
|
+
|
|
636
|
+
Identifique de que tipo é a afirmação, porque cada uma se verifica num lugar diferente:
|
|
637
|
+
|
|
638
|
+
| Tipo | Onde se confere |
|
|
639
|
+
|---|---|
|
|
640
|
+
| Sobre o código deste projeto | o próprio repositório |
|
|
641
|
+
| Sobre lib, versão ou API | changelog, release notes, a doc atual |
|
|
642
|
+
| Sobre fornecedor, limite ou contrato | a doc do fornecedor |
|
|
643
|
+
| Sobre bug de terceiro | o issue: foi corrigido? |
|
|
644
|
+
| Sobre decisão interna | o projeto ainda funciona assim? |
|
|
645
|
+
|
|
646
|
+
## 3. Vá conferir — não opine
|
|
647
|
+
|
|
648
|
+
Este é o passo que separa esta skill de um chute fundamentado.
|
|
649
|
+
|
|
650
|
+
- **No repositório:** a âncora existe? O código ainda faz o que a memória descreve?
|
|
651
|
+
\`git log\` no alvo mostra que alguém mexeu naquilo?
|
|
652
|
+
- **Fora:** quando a razão é externa, **procure a fonte**. Um \`WebSearch\` pela versão atual
|
|
653
|
+
da lib, pelo limite atual da API, pelo issue citado. Se a memória diz "a v3 não suporta
|
|
654
|
+
X" e a v5 suporta, isso é achado — e sem ir olhar você nunca saberia.
|
|
655
|
+
|
|
656
|
+
Se não conseguir verificar, **diga que não conseguiu.** "Não achei fonte para confirmar o
|
|
657
|
+
limite atual" é um parecer honesto e útil. Inventar uma conclusão para parecer produtivo é
|
|
658
|
+
o pior resultado possível desta skill.
|
|
659
|
+
|
|
660
|
+
## 4. Traga o parecer
|
|
661
|
+
|
|
662
|
+
Um bloco por memória, na conversa. Curto, com a evidência à mostra:
|
|
663
|
+
|
|
664
|
+
\`\`\`
|
|
665
|
+
pasta/slug — Título
|
|
666
|
+
|
|
667
|
+
Diz: [a afirmação, em uma linha]
|
|
668
|
+
Verifiquei: [o que você foi olhar, com link/caminho/commit]
|
|
669
|
+
Achei: [o que encontrou de fato]
|
|
670
|
+
Parecer: continua valendo | envelheceu no texto | a razão pode ter morrido
|
|
671
|
+
Por quê: [o fundamento — nunca "é antiga"]
|
|
672
|
+
\`\`\`
|
|
673
|
+
|
|
674
|
+
Três pareceres possíveis, e nenhum é uma ação:
|
|
675
|
+
|
|
676
|
+
**Continua valendo** — a razão está de pé. Diga isso e siga; não há trabalho a fazer.
|
|
677
|
+
|
|
678
|
+
**Envelheceu no texto** — a razão continua, a descrição não bate mais. Mostre o trecho
|
|
679
|
+
que está errado e o que seria o texto certo. O usuário decide se manda editar.
|
|
680
|
+
|
|
681
|
+
**A razão pode ter morrido** — você encontrou evidência de que o motivo acabou. Mostre a
|
|
682
|
+
evidência. Use "pode": você investigou, não sentenciou; pode haver contexto que a memória
|
|
683
|
+
não registrou e o usuário conhece.
|
|
684
|
+
|
|
685
|
+
Ao fim, uma linha só: quantas revisou, quantas continuam valendo, quantas merecem a
|
|
686
|
+
atenção dele. Se nenhuma mereceu, **diga exatamente isso** — "revisei cinco, todas
|
|
687
|
+
continuam valendo" é um resultado bom, não uma rodada perdida.
|
|
688
|
+
|
|
689
|
+
## Nunca faça
|
|
690
|
+
|
|
691
|
+
**Não proponha saída em lote.** Cinco memórias são cinco perguntas; um "essas cinco podem
|
|
692
|
+
sair" é o mesmo que não ter investigado nenhuma.
|
|
693
|
+
|
|
694
|
+
**Não use a data de revisão como argumento.** Ela é agenda, não julgamento. Uma memória
|
|
695
|
+
vencida que você verificou e continua verdadeira é "continua valendo" — não "vencida".
|
|
696
|
+
|
|
697
|
+
**Não confunda com deriva.** Se o achado é "o arquivo ancorado sumiu", isso é trabalho da
|
|
698
|
+
\`resolver-deriva\`; diga ao usuário e aponte para lá em vez de resolver aqui.
|
|
699
|
+
|
|
700
|
+
**Não vá pelo acervo inteiro.** O teto de cinco é o que mantém cada parecer com evidência.
|
|
701
|
+
Fila é para ser processada aos poucos, e ela não vai a lugar nenhum.`,
|
|
702
|
+
},
|
|
578
703
|
];
|
package/package.json
CHANGED