Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "keepwright",
"owner": {
"name": "Leonardo Candiani"
},
"metadata": {
"description": "keepwright — set up and continuously keep engineering quality and architecture true in any git repo.",
"version": "2.0.0"
},
"plugins": [
{
"name": "keepwright",
"description": "Interactive wizard that scaffolds a quality architecture (CLAUDE.md, rules, GitHub Actions with AI review, validators, hooks) and keeps it audited and enforced over time.",
"version": "2.0.0",
"author": {
"name": "Leonardo Candiani"
},
"source": "."
}
]
}
18 changes: 18 additions & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "keepwright",
"version": "2.0.0",
"description": "Set up and continuously keep engineering quality and architecture true in any git repo. Interactive wizard, deterministic scaffolding, multi-agent audits, and AI PR review wired to OAuth.",
"author": {
"name": "Leonardo Candiani"
},
"homepage": "https://github.com/leonardocandiani/keepwright",
"keywords": [
"quality",
"architecture",
"scaffolding",
"code-review",
"github-actions",
"ci",
"audit"
]
}
38 changes: 19 additions & 19 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
---
name: Bug report
about: Reportar um comportamento incorreto da skill
about: Report incorrect behavior in keepwright
title: "[bug] "
labels: bug
assignees: leonardocandiani
---

## Descrição
## Description

<!-- Descreve o bug em 1-3 frases -->
<!-- Describe the bug in 1-3 sentences -->

## Como reproduzir
## How to reproduce

1. Stack do projeto-alvo (Node/Python/etc):
2. Estado inicial (git, CLAUDE.md, .claude/ existiam?):
3. Comando exato disparado:
1. Target project stack (Node/Python/etc):
2. Initial state (did git, CLAUDE.md, .claude/ already exist?):
3. Exact command run:
```
/setup-projeto-qualidade
/keepwright:setup
```
4. Fase em que falhou:
5. Output do erro:
4. Step where it failed:
5. Error output:
```
<cola aqui>
<paste here>
```

## Comportamento esperado
## Expected behavior

<!-- O que você esperava que acontecesse -->
<!-- What you expected to happen -->

## Comportamento observado
## Observed behavior

<!-- O que efetivamente aconteceu -->
<!-- What actually happened -->

## Ambiente
## Environment

- Versão da skill: <!-- v1.0.0, ou commit hash -->
- keepwright version: <!-- v2.0.0, or commit hash -->
- Claude Code: <!-- claude --version -->
- OS: <!-- macOS 14, Ubuntu 22, etc -->
- Shell: <!-- bash, zsh, fish -->
- gh CLI: <!-- gh --version -->

## Contexto adicional
## Additional context

<!-- Screenshots, logs, qualquer coisa que ajude -->
<!-- Screenshots, logs, anything that helps -->
10 changes: 5 additions & 5 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Discussão geral
url: https://github.com/leonardocandiani/setup-projeto-qualidade/discussions
about: Para dúvidas, ideias ou conversa aberta sobre a skill
- name: Site do autor
- name: General discussion
url: https://github.com/leonardocandiani/keepwright/discussions
about: For questions, ideas, or open conversation about keepwright
- name: Author's site
url: https://leonardocandiani.com.br
about: Contato direto e outros projetos
about: Direct contact and other projects
44 changes: 22 additions & 22 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,40 @@
---
name: Feature request
about: Sugerir uma nova capacidade ou melhoria
about: Suggest a new capability or improvement
title: "[feat] "
labels: enhancement
assignees: leonardocandiani
---

## Problema que resolve
## Problem it solves

<!-- Qual dor essa feature resolve? Por que ela importa? -->
<!-- What pain does this feature address? Why does it matter? -->

## Solução proposta
## Proposed solution

<!-- Como você imagina a solução? Pode ser pseudo-código, exemplo de uso, etc -->
<!-- How do you picture it? Pseudo-code, usage example, etc. -->

## Alternativas consideradas
## Alternatives considered

<!-- Que outras abordagens você pensou? Por que essa é a melhor? -->
<!-- What other approaches did you weigh? Why is this the best one? -->

## Categoria
## Category

- [ ] Nova rule em `templates/rules/`
- [ ] Nova variante de deploy em `templates/workflows/deploy/`
- [ ] Novo validator em `templates/validators/`
- [ ] Novo workflow em `templates/workflows/`
- [ ] Mudança no fluxo das fases (SKILL.md)
- [ ] Suporte a nova stack/runtime
- [ ] Documentação
- [ ] Outro: <!-- descreve -->
- [ ] New rule in `templates/rules/`
- [ ] New deploy variant in `templates/workflows/deploy/`
- [ ] New validator in `templates/validators/`
- [ ] New workflow in `templates/workflows/`
- [ ] Change to the setup wizard flow (`commands/`)
- [ ] Support for a new stack/runtime
- [ ] Documentation
- [ ] Other: <!-- describe -->

## Stack/contexto relacionado
## Related stack/context

<!-- Se for específico a alguma stack (Python, Rust, Deno), menciona aqui -->
<!-- If specific to a stack (Python, Rust, Deno), mention it here -->

## Disposição pra contribuir
## Willingness to contribute

- [ ] Posso abrir o PR
- [ ] Posso ajudar a testar
- [ ] Só sugerindo, sem disponibilidade pra implementar
- [ ] I can open the PR
- [ ] I can help test
- [ ] Just suggesting, no availability to implement
48 changes: 24 additions & 24 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@
## O que muda
## What changes

<!-- 1-3 bullets sobre o que esse PR entrega -->
<!-- 1-3 bullets on what this PR delivers -->

-
-

## Por que
## Why

<!-- Motivação. Issue relacionada (se houver): closes #N -->
<!-- Motivation. Related issue (if any): closes #N -->

## Tipo
## Type

- [ ] feat — nova funcionalidade
- [ ] fix — correção de bug
- [ ] refactor — refatoração sem mudança de comportamento
- [ ] docs — apenas documentação
- [ ] chore — manutenção, configs, deps
- [ ] template — mudança em algum `templates/*`
- [ ] feat — new capability
- [ ] fix — bug fix
- [ ] refactor — behavior-preserving change
- [ ] docs — documentation only
- [ ] chore — maintenance, config, deps
- [ ] template — change under `templates/*`

## Checklist

- [ ] Mudança em rule? Atualizei o ponteiro no CLAUDE.md.template
- [ ] Mudança em template? Renderei mentalmente com placeholders preenchidos e confere
- [ ] Mudança em workflow? Testei o YAML com `actionlint` (ou `gh workflow view`)
- [ ] Sem secrets no diff
- [ ] CHANGELOG.md atualizado em `[Unreleased]`
- [ ] Commit segue conventional commits e não menciona IA
- [ ] Changed a rule? Updated its pointer in `templates/CLAUDE.md.template`
- [ ] Changed a template? Rendered it mentally with placeholders filled and it holds
- [ ] Changed a workflow? Checked the YAML with `actionlint` (or `gh workflow view`)
- [ ] No secrets in the diff
- [ ] CHANGELOG.md updated under `[Unreleased]`
- [ ] Commit follows Conventional Commits and does not mention AI

## Smoke test

<!-- Como testar essa mudança em um projeto-cobaia: -->
<!-- How to test this change on a throwaway project: -->

```bash
# exemplo:
cd projeto-teste/
# example:
cd test-project/
claude
> /setup-projeto-qualidade
# esperar: ...
> /keepwright:setup
# expect: ...
```

## Observações
## Notes

<!-- Decisões de design, alternativas consideradas, ou qualquer contexto extra -->
<!-- Design decisions, alternatives considered, or any extra context -->
51 changes: 38 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,36 @@ permissions:

jobs:
validate:
name: Validate skill structure
name: Validate plugin structure
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Check SKILL.md exists with frontmatter
- name: Check plugin manifest
run: |
test -f SKILL.md || { echo "SKILL.md missing"; exit 1; }
head -1 SKILL.md | grep -q "^---$" || { echo "SKILL.md missing frontmatter"; exit 1; }
grep -q "^name: setup-projeto-qualidade$" SKILL.md || { echo "SKILL.md frontmatter name missing"; exit 1; }
grep -q "^description:" SKILL.md || { echo "SKILL.md frontmatter description missing"; exit 1; }
test -f .claude-plugin/plugin.json || { echo ".claude-plugin/plugin.json missing"; exit 1; }
test -f .claude-plugin/marketplace.json || { echo ".claude-plugin/marketplace.json missing"; exit 1; }
node -e "const p=JSON.parse(require('fs').readFileSync('.claude-plugin/plugin.json','utf8')); if(p.name!=='keepwright'){console.error('plugin.json name is not keepwright');process.exit(1)}"
node -e "JSON.parse(require('fs').readFileSync('.claude-plugin/marketplace.json','utf8'))" || { echo "marketplace.json is not valid JSON"; exit 1; }

- name: Check commands exist
run: |
for c in setup audit review; do
test -f "commands/$c.md" || { echo "commands/$c.md missing"; exit 1; }
done

- name: Check skill exists with frontmatter
run: |
test -f skills/keepwright/SKILL.md || { echo "skills/keepwright/SKILL.md missing"; exit 1; }
head -1 skills/keepwright/SKILL.md | grep -q "^---$" || { echo "SKILL.md missing frontmatter"; exit 1; }
grep -q "^name: keepwright$" skills/keepwright/SKILL.md || { echo "SKILL.md frontmatter name missing"; exit 1; }
grep -q "^description:" skills/keepwright/SKILL.md || { echo "SKILL.md frontmatter description missing"; exit 1; }

- name: Check orchestration workflows exist
run: |
for w in map-brownfield derive-patterns verify-setup; do
test -f "workflows/$w.js" || { echo "workflows/$w.js missing"; exit 1; }
done

- name: Check README.md exists
run: test -f README.md
Expand All @@ -40,14 +59,15 @@ jobs:
"templates/settings.json.template"
"templates/lefthook.yml.template"
"templates/PULL_REQUEST_TEMPLATE.md.template"
"templates/rules/01-invariantes.md.template"
"templates/rules/02-equalizacao-pipeline.md.template"
"templates/rules/03-hierarquia-epistemica.md.template"
"templates/REVIEW.md.template"
"templates/rules/01-invariants.md.template"
"templates/rules/02-pipeline-equalization.md.template"
"templates/rules/03-epistemic-hierarchy.md.template"
"templates/rules/04-pr-flow.md.template"
"templates/rules/05-catalisacao-licoes.md.template"
"templates/rules/06-frentes-paralelas.md.template"
"templates/rules/07-merge-seguro.md.template"
"templates/rules/08-prova-empirica-pre-merge.md.template"
"templates/rules/05-lesson-cataloging.md.template"
"templates/rules/06-parallel-workstreams.md.template"
"templates/rules/07-safe-merge.md.template"
"templates/rules/08-empirical-proof.md.template"
"templates/agents/worker.md.template"
"templates/workflows/ci.yml.template"
"templates/workflows/pr-auto-review.yml.template"
Expand All @@ -60,9 +80,14 @@ jobs:
"templates/workflows/deploy/static-pages.yml.template"
"templates/validators/validate-no-secrets.ts.template"
"templates/validators/validate-claude-md-sync.ts.template"
"templates/validators/validate-epistemic-hierarchy.ts.template"
"templates/validators/validate-empirical-proof.ts.template"
"templates/validators/validate-webhook-active.ts.template"
"templates/hooks/gen-project-structure.ts.template"
"templates/hooks/gen-todos-report.ts.template"
"templates/scripts/gh-pr-merge-safe.sh.template"
"templates/scripts/setup-oauth-secret.sh.template"
"templates/scripts/setup-self-hosted-runner.sh.template"
)
MISSING=0
for f in "${REQUIRED[@]}"; do
Expand Down
26 changes: 15 additions & 11 deletions AUTHORS.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@
# Autores
# Authors

Esta skill é coautorada por:
keepwright is co-authored by:

## Leonardo Candiani

- GitHub: [@leonardocandiani](https://github.com/leonardocandiani)
- Site: [leonardocandiani.com.br](https://leonardocandiani.com.br)
- Papel: idealização, arquitetura, implementação inicial das 10 fases, rules e templates
- Role: concept, architecture, initial implementation of the phases, rules, and templates

## SixQuasar

Empresa de tecnologia. Fundada por Leonardo Candiani, Ricardo e Rodrigo. Atuação em Paraná, Rio de Janeiro e Maranhão.
A tech company. Founded by Leonardo Candiani, Ricardo, and Rodrigo. Operating in
Paraná, Rio de Janeiro, and Maranhão.

- GitHub: [@sixquasar](https://github.com/sixquasar)
- Site: [sixquasar.pro](https://sixquasar.pro)
- Papel: refinamento da metodologia em produção real (SixClaw, SixClaw CEO, Cote.Zap, Ofertix, Sixosteria, Vox, Lupe, EasyQuote), validação das 7 rules em projetos com cliente, contribuições contínuas
- Role: refining the methodology in real production (SixClaw, SixClaw CEO,
Cote.Zap, Ofertix, Sixosteria, Vox, Lupe, EasyQuote), validating the rules on
client projects, ongoing contributions

<br>

## Contribuidores
## Contributors

Esta seção lista pessoas que contribuíram com PRs aceitos. Adicionada via PR após primeira contribuição.
This section lists people who contributed accepted PRs. Added via PR after a
first contribution.

<!-- ALL-CONTRIBUTORS-LIST:START -->
<!-- ALL-CONTRIBUTORS-LIST:END -->

<br>

## Como entrar pra essa lista
## How to get on this list

1. Abrir PR que seja aceito (qualquer tipo: feat, fix, docs, template)
2. Mantenedor adiciona seu nome aqui no merge
1. Open a PR that gets accepted (any type: feat, fix, docs, template).
2. The maintainer adds your name here on merge.

Veja [CONTRIBUTING.md](CONTRIBUTING.md) pra orientações.
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidance.
Loading
Loading