dd-harness 0.29.0 → 0.30.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.
@@ -126,4 +126,8 @@ de ler código, responder ou planejar.
126
126
 
127
127
  Depois, \`ler_roadmap\`: se houver uma fase **Agora**, é dela que saem os passos
128
128
  desta sessão. Lista vazia significa que este projeto não usa roadmap, e isso é
129
- válido — não crie fase sem o usuário pedir.`;
129
+ válido — não crie fase sem o usuário pedir.
130
+
131
+ E \`listar_skills\`: são os procedimentos deste projeto. **Invoque a que couber
132
+ ANTES de fazer o trabalho, não depois** — skill lida no fim vira revisão do que
133
+ já saiu errado. A política diz quais são obrigatórias e quando.`;
package/dist/index.js CHANGED
@@ -922,6 +922,31 @@ async function comandoPolitica(argv) {
922
922
  * so faria o Claude Code registrar falha no transcript — que ninguem le — enquanto a
923
923
  * sessao seguiria sem saber que esta sem protocolo.
924
924
  */
925
+ /**
926
+ * Lembra que ha skills — so quando a POLITICA nao lembra.
927
+ *
928
+ * Medido em uso real: a skill aparecia na listagem do host, a descricao estava no
929
+ * contexto, e mesmo assim nao era invocada. Estar disponivel nao e ser usada.
930
+ *
931
+ * O conserto de verdade e a politica dizer quando cada skill e obrigatoria — e o passo 5
932
+ * do briefing agora manda escrever isso. Mas projeto ja briefado nao passa mais por la, e
933
+ * a politica dele continua sem a regra. Esta linha cobre esse intervalo.
934
+ *
935
+ * CALA quando a politica ja fala de skill: repetir o que ela diz treina a ler a politica
936
+ * como se fosse opcional, e a politica e a unica coisa aqui que o agente trata como
937
+ * regra. A deteccao e grosseira de proposito — qualquer mencao basta, porque o custo de
938
+ * calar a mais e zero e o de repetir e corroer a autoridade do texto principal.
939
+ */
940
+ function lembreteDeSkills(politica) {
941
+ if (/skill/i.test(politica))
942
+ return "";
943
+ return ("\n\n---\n\n" +
944
+ "Este projeto pode ter **skills** — procedimentos escritos para o trabalho que se " +
945
+ "repete. `listar_skills` mostra quais, e `ler_skill` traz o passo a passo.\n\n" +
946
+ "Invoque a que couber **antes** de fazer o trabalho, não depois: skill lida no fim " +
947
+ "vira revisão do que já saiu errado. Se a política não disser quais são " +
948
+ "obrigatórias, vale propor ao usuário que ela passe a dizer.");
949
+ }
925
950
  function contextoDaSessao(r, worker) {
926
951
  const base = { hookEventName: "SessionStart" };
927
952
  const fila = avisoDaFila(r.esperandoIndexacao ?? 0, worker);
@@ -934,6 +959,7 @@ function contextoDaSessao(r, worker) {
934
959
  // Depois da politica, antes dos avisos operacionais: o roadmap e contexto de
935
960
  // trabalho, a fila e ruido de infraestrutura. Vazio quando nao ha fase aberta.
936
961
  blocoDeSessao(r.roadmap) +
962
+ lembreteDeSkills(r.conteudo) +
937
963
  fila,
938
964
  };
939
965
  }
@@ -980,6 +1006,15 @@ function contextoDaSessao(r, worker) {
980
1006
  "sessão, e ao terminá-la o agente **propõe** concluí-la (`editar_fase` com " +
981
1007
  "`status: \"concluida\"`) — nunca conclui por conta própria, porque quem decide " +
982
1008
  "que uma fase acabou é o usuário.\n" +
1009
+ // Medido em uso real: a skill aparecia na listagem, a descricao estava no
1010
+ // contexto, e mesmo assim nao era invocada. Estar disponivel nao e ser usada — o
1011
+ // que faz o agente parar e invocar e a POLITICA dizer que e obrigatorio, porque
1012
+ // ela e o unico texto que ele trata como regra em vez de catalogo.
1013
+ " Inclua também QUANDO cada skill é obrigatória — o gatilho, não a lista. " +
1014
+ "Chame `listar_skills` para ver o que o projeto tem e escreva uma linha por " +
1015
+ "skill que não pode ser pulada. Exemplo: \"ao escrever ou editar código, " +
1016
+ "invoque `como-desenvolver` ANTES de começar\". Sem isso a skill existe, " +
1017
+ "aparece na listagem e mesmo assim não é usada — foi medido.\n" +
983
1018
  "6. Depois de escrever os dois, sobrescreva o `CLAUDE.md` da raiz com um " +
984
1019
  "ponteiro curto para a política deste serviço — a verdade passa a morar " +
985
1020
  "aqui, e o `CLAUDE.md` local nunca mais precisa ser editado à mão. O ponteiro " +
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dd-harness",
3
- "version": "0.29.0",
3
+ "version": "0.30.0",
4
4
  "type": "module",
5
5
  "description": "Cliente do dd-harness: politica no inicio da sessao, e memoria por busca — nada em disco. Sem dependencia: fetch, crypto e fs sao do Node.",
6
6
  "license": "UNLICENSED",