Uma correção na origem
chega a todo projeto.
Um defeito num template, numa norma ou num hook aparece primeiro num projeto gerado. Corrigir lá conserta um projeto; corrigir o dono no Nerviz conserta todo projeto gerado dali em diante. Por isso o relato mais útil é aquele que o mantenedor consegue verificar.
1 aberta·37 fechadas·10 estrelasissues em nerviz-ai/nerviz, contadas em 2026-10-27 →O /report-issue abre a issue por você
Digite no projeto gerado, com uma descrição ou um arquivo de lições aprendidas. Ele escolhe o formulário de issue do próprio repositório, pede uma vez a evidência que falta, remove tudo que identifica o seu projeto, procura duplicatas abertas e só publica depois do seu sim.
# dentro do projeto gerado › /report-issue <descrição do problema> › /report-issue docs/lessons-learned/sonar-001.md
- Só você abreNada encadeia o
/report-issue. Ele é só manual, então o modelo não publica por conta própria. - Sem evidência, sem issueCada afirmação é conferida contra o código no
HEADantes de qualquer mudança. Uma afirmação sem arquivo, sem saída e sem como reproduzir só poderia ser fechada como needs evidence, então nem é escrita. - O rastro, nunca o projetoO repositório é público e o seu projeto pode não ser. A issue cita chaves de regra do Sonar, contagens, caminhos dentro de
.claude/, comandos e saída de hook. Nunca um caminho emsrc/, um pacote, uma classe, um trecho de código, a chave do projeto ou a URL do servidor.
| Passo | O que acontece | Para quando |
|---|---|---|
| 1 · Entrada | Uma descrição livre, ou um arquivo em docs/lessons-learned/ | Nada informado depois de uma pergunta |
| 2 · Versão | ref, commit e blueprint de .claude/.arch-provenance.json, comparados à tag mais recente | Sem carimbo: não é um projeto do Nerviz |
| 3 · Formulário | Bug, feature ou Sonar lessons, buscado no HEAD do repositório. Prefixo do título, labels e campos vêm do formulário | O formulário não responde |
| 4 · Evidência | Bug: ponto de entrada, o arquivo de .claude/ que promete o comportamento, a saída literal, os passos. Feature: uma ocorrência concreta | Continua faltando depois da pergunta: nada é escrito |
| 5 · Corpo | docs/lessons-learned/<name>.issue.md, uma seção por campo do formulário, depois a passada de privacidade | — |
| 6 · Pergunta | Duplicatas encontradas, o aviso de versão, as reescritas de privacidade: criar, editar antes ou não publicar | gh sem autenticação: o arquivo do corpo é a entrega |
| 7 · Criação | gh issue create --body-file …; o resultado vai para a linha ## Issue do arquivo de entrada | — |
Estar atrás da última release gera um aviso, não uma parada: a release nova pode já trazer a correção, e o /arch-adopt a traz para o projeto.
Quatro formulários, um por tipo de relato
Issues em branco estão desativadas. O /report-issue lê os mesmos arquivos de formulário que a web usa, então os dois produzem a mesma issue.
- bug_report.yml
Bug report
Título
bug:LabelbugAlgo em
O que pede.claude/se comporta diferente do que o próprio arquivo diz.- Onde aconteceu: no Nerviz, num projeto gerado, ou nos dois
- O componente e o ponto de entrada exato
- O arquivo e a linha que prometem o comportamento, citados
- A saída literal, os passos para reproduzir e a saída do
/arch-doctor - Versões de
java,giteclaude, e o sistema operacional
Aberto por
/report-issueou o formulário web - feature_request.yml
Feature request
Título
feat:LabelenhancementAlgo hoje é difícil, repetitivo ou errado em silêncio, e nenhum arquivo promete o contrário.
O que pede- O problema, não a solução
- Que tipo de arquivo deve carregar: norma, skill, agente, hook, seção do
CLAUDE.md, servidor MCP ou docs - Como seria verificado
- Os invariantes que respeita, e se os projetos gerados também precisam
- Alternativas consideradas
Aberto por
/report-issueou o formulário web - new_blueprint.yml
New blueprint
Título
blueprint:LabelblueprintUma arquitetura declarada como dado em
O que pede.claude/blueprints/, sem mudar nenhuma skill, agente ou comando.- Id, nome legível e uma descrição de uma frase
when_to_chooseetrade_offshonestosbuild.layout, módulos e direção das dependênciaspackages.mapearchitecture_paths- O checklist de 6 regras do
_schema.md
Aberto por O formulário web
- sonar-lessons.yml
Sonar lessons
Título
sonar-lessons:Labelsonar-lessonsAchados do SonarQube num projeto gerado, rastreados até a peça de
O que pede.claude/que os produziu.- A versão de origem, de
.arch-provenance.json - Um retrato: o quality gate e só contagens
- Achados por dono: chave da regra, contagem, dono em
.claude/, origem - As mudanças propostas e a lição estrutural
- Uma checagem de privacidade: nada que identifique o projeto analisado
Aberto por
/sonar-lessons, depois/report-issue - A versão de origem, de
Abrir os formulários no GitHub →
Não é issue
- Uma vulnerabilidadeRelate em privado, como security advisory. Nunca como issue e nunca com
/report-issue: os dois publicam. - Uma dúvidaPergunte nas Discussions como algo funciona antes de abrir uma issue.
- Um design de que você discordaLeia
.claude/decisions/primeiro. O formulário de bug pede que você confirme que é um defeito, não uma decisão.
Código gerado não deve virar débito técnico
Tudo que o harness gera mira em código que funciona e tem qualidade, não em código que alguém paga depois. Quando o SonarQube acha uma issue, quase nunca é caso isolado: o código veio de um template, uma norma permitiu, ou nada em .claude/ dizia nada e o modelo decidiu sozinho. O /sonar-lessons acha esse dono, para a correção cair onde todo próximo projeto a recebe.
/sonarqube-setupColoca o scanner no build file da raiz, e um container local do SonarQube quando ainda não há servidor. Roda uma vez./sonar-lessonsRoda a análise e lê quality gate, bugs, vulnerabilidades, code smells, duplicação e cobertura pela Web API. Precisa de um servidor respondendo e deSONAR_TOKEN; nunca os configura.sonar-NNN.mdA lição completa emdocs/lessons-learned/, guardada no seu projeto: caminhos, linhas e trechos, e a correção no dono de cada grupo./report-issueVocê digita. Ele abre a lição no formulário Sonar lessons, sem nada do projeto.
# uma vez: scanner no build, um servidor, um token › /sonarqube-setup # depois de uma feature: analisar, rastrear, escrever a lição › /sonar-lessons # depois abrir onde a correção pertence › /report-issue docs/lessons-learned/sonar-001.md
Todo grupo de achados ganha um dono
| Origem | Como se encontra |
|---|---|
| Template copiado literalmente | A construção apontada está num templates/*.example: todo projeto recebe a issue |
| Norma que permite ou exige | Uma norma prescreve a forma apontada, ou a permite explicitamente |
| Checkstyle ou configuração do build | Falta uma checagem, ou ela está desligada, onde o Sonar tem a regra equivalente |
| Template de teste ensina o padrão | A mesma busca, nos templates de teste |
| Código gerado pelo bootstrap | Não há template no projeto: project-bootstrap, mais o papel do arquivo |
| Nada: o modelo decidiu sozinho | Nenhuma norma e nenhum template cobrem a construção. A correção é uma norma |
Cada execução se compara com a anterior: o retrato ganha as colunas Previous e Δ, e cada grupo é marcado como novo, recorrente ou sumido. O objetivo é ter menos issues a cada rodada, e é aqui que se vê se isso está acontecendo.
Cada afirmação é conferida antes de qualquer mudança
O mantenedor roda /triage-issue na sua issue. Um agente sem ferramentas de escrita confere cada afirmação contra o código no HEAD e julga a correção proposta à parte. O veredito volta como comentário e label.
| Veredito | Significado |
|---|---|
duplicate | Outra issue cobre o mesmo sintoma confirmado |
already-fixed | Verdadeiro na sua versão, falso no HEAD: o commit é citado |
by-design | Um registro de decisão escolheu isso, e a issue não traz fato que o registro não tenha pesado |
confirmed | O sintoma central se reproduziu, por arquivo, modo do hook ou build |
not-reproduced | O sintoma central foi conferido e é falso no HEAD |
needs-evidence | Nada decisivo pôde ser conferido; o item que decidiria é citado |
O fluxo inteiro, na documentação →
Mudando o próprio harness
Blueprints e normas são as contribuições mais úteis. O repositório não é uma aplicação Java: o que se edita são arquivos de instrução, dados e um hook. Leia o CLAUDE.md antes do primeiro PR; os Invariants dele são o que o review confere.
# JDK 21+, git e curl. Nada mais git clone https://github.com/nerviz-ai/nerviz.git cd nerviz java .claude/hooks/ArchHook.java doctor # antes de abrir um PR java .claude/hooks/ArchHook.java schema claude plugin validate .claude/skills
Na dúvida se é norma, skill, agente ou hook? Escolher o tipo errado é o apontamento mais comum de review, e o /claude-code-architect-designer existe para essa pergunta.