claudiao 1.0.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/README.md +387 -0
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.js +260 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +138 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.js +252 -0
- package/dist/commands/install-plugin.d.ts +1 -0
- package/dist/commands/install-plugin.js +35 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.js +123 -0
- package/dist/commands/remove.d.ts +6 -0
- package/dist/commands/remove.js +121 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.js +141 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +156 -0
- package/dist/lib/__tests__/frontmatter.test.d.ts +1 -0
- package/dist/lib/__tests__/frontmatter.test.js +180 -0
- package/dist/lib/__tests__/paths.test.d.ts +1 -0
- package/dist/lib/__tests__/paths.test.js +29 -0
- package/dist/lib/__tests__/symlinks.test.d.ts +1 -0
- package/dist/lib/__tests__/symlinks.test.js +142 -0
- package/dist/lib/format.d.ts +13 -0
- package/dist/lib/format.js +47 -0
- package/dist/lib/frontmatter.d.ts +9 -0
- package/dist/lib/frontmatter.js +45 -0
- package/dist/lib/paths.d.ts +33 -0
- package/dist/lib/paths.js +111 -0
- package/dist/lib/plugins.d.ts +3 -0
- package/dist/lib/plugins.js +24 -0
- package/dist/lib/symlinks.d.ts +8 -0
- package/dist/lib/symlinks.js +56 -0
- package/dist/lib/templates.d.ts +26 -0
- package/dist/lib/templates.js +75 -0
- package/dist/types.d.ts +25 -0
- package/dist/types.js +1 -0
- package/package.json +47 -0
- package/templates/CLAUDE-CODE-BEST-PRACTICES.md +508 -0
- package/templates/CLOUD-CLI-GUIDE.md +405 -0
- package/templates/agents/architect.md +128 -0
- package/templates/agents/aws-specialist.md +104 -0
- package/templates/agents/azure-specialist.md +117 -0
- package/templates/agents/database-specialist.md +104 -0
- package/templates/agents/dod-specialist.md +101 -0
- package/templates/agents/gcp-specialist.md +124 -0
- package/templates/agents/idea-refiner.md +146 -0
- package/templates/agents/implementation-planner.md +149 -0
- package/templates/agents/nodejs-specialist.md +105 -0
- package/templates/agents/pr-reviewer.md +132 -0
- package/templates/agents/product-owner.md +88 -0
- package/templates/agents/project-manager.md +95 -0
- package/templates/agents/prompt-engineer.md +115 -0
- package/templates/agents/python-specialist.md +103 -0
- package/templates/agents/react-specialist.md +94 -0
- package/templates/agents/security-specialist.md +145 -0
- package/templates/agents/test-specialist.md +157 -0
- package/templates/agents/uxui-specialist.md +102 -0
- package/templates/global-CLAUDE.md +100 -0
- package/templates/skills/architecture-decision/SKILL.md +102 -0
- package/templates/skills/meet-dod/SKILL.md +124 -0
- package/templates/skills/pm-templates/SKILL.md +125 -0
- package/templates/skills/pr-template/SKILL.md +87 -0
- package/templates/skills/product-templates/SKILL.md +97 -0
- package/templates/skills/python-patterns/SKILL.md +123 -0
- package/templates/skills/security-checklist/SKILL.md +80 -0
- package/templates/skills/sql-templates/SKILL.md +93 -0
- package/templates/skills/ui-review-checklist/SKILL.md +73 -0
package/README.md
ADDED
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
# claudião
|
|
2
|
+
|
|
3
|
+
CLI que instala e gerencia agentes, skills e plugins para o [Claude Code](https://docs.anthropic.com/en/docs/claude-code).
|
|
4
|
+
|
|
5
|
+
> Seu Claude Code no próximo nível. **18 agentes + 9 skills + 3 plugins + CLAUDE.md global + wizard de criação + doctor** — tudo em um comando.
|
|
6
|
+
|
|
7
|
+
## Pra quem é isso?
|
|
8
|
+
|
|
9
|
+
Pra devs que já usam o [Claude Code](https://docs.anthropic.com/en/docs/claude-code) e querem turbinar com agentes especializados, skills prontas e configuração global — sem montar tudo na mão.
|
|
10
|
+
|
|
11
|
+
Funciona com **qualquer stack**. Os agentes cobrem Node.js, Python, React, AWS, Azure, GCP, bancos de dados e mais.
|
|
12
|
+
|
|
13
|
+
> **Importante:** O CLAUDE.md global vem com um template **opinado** (pt-BR, TypeScript strict, nível sênior) como ponto de partida. Ele foi feito pra ser customizado — depois do `init`, edite `~/.claude/CLAUDE.md` pra refletir sua stack, idioma e estilo. Se você usa Go, Java, ou qualquer outra linguagem, basta ajustar.
|
|
14
|
+
|
|
15
|
+
## O que é isso?
|
|
16
|
+
|
|
17
|
+
O [Claude Code](https://docs.anthropic.com/en/docs/claude-code) é uma CLI da Anthropic que usa IA pra codar junto com você. O claudião é uma **ferramenta de setup** que configura o Claude Code com agentes, skills e regras globais. Você roda o claudião uma vez (ou quando quiser atualizar), e depois usa o Claude Code normalmente — o claudião não precisa ficar rodando.
|
|
18
|
+
|
|
19
|
+
### O que vem incluso
|
|
20
|
+
|
|
21
|
+
| O que | Quantidade | Descrição |
|
|
22
|
+
|-------|-----------|-----------|
|
|
23
|
+
| **Agentes** | 18 | Subagents que o Claude Code invoca automaticamente pelo contexto (ex: perguntou sobre AWS? o `aws-specialist` entra em ação) |
|
|
24
|
+
| **Skills** | 9 | Slash commands com templates e checklists prontos (ex: `/security-checklist` antes de deploy) |
|
|
25
|
+
| **CLAUDE.md global** | 1 | Regras universais de código, git workflow e referência a todos os agentes/skills — muda o comportamento do Claude Code em **todos** os seus projetos |
|
|
26
|
+
| **Wizard de criação** | — | Crie seus próprios agentes e skills com um wizard interativo |
|
|
27
|
+
| **Doctor** | — | Diagnóstico automático de problemas de instalação |
|
|
28
|
+
|
|
29
|
+
Além disso, o claudião facilita a instalação de **3 plugins de terceiros** (da comunidade, não mantidos por este projeto) pra TDD, planejamento e memória entre sessões.
|
|
30
|
+
|
|
31
|
+
Tudo instalado via symlinks — edite os templates e as mudanças refletem instantaneamente no Claude Code, sem reinstalar. Funciona solo ou em time (com [repo compartilhado](#repo-externo-avançado)).
|
|
32
|
+
|
|
33
|
+
## Pré-requisitos
|
|
34
|
+
|
|
35
|
+
- Node.js >= 18
|
|
36
|
+
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (`npm install -g @anthropic-ai/claude-code`)
|
|
37
|
+
|
|
38
|
+
## Instalação
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install -g claudiao
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Setup rápido
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
claudiao init
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Isso instala tudo interativamente:
|
|
51
|
+
|
|
52
|
+
1. **CLAUDE.md global** — regras universais em `~/.claude/CLAUDE.md`
|
|
53
|
+
2. **18 agentes** — symlinks em `~/.claude/agents/`
|
|
54
|
+
3. **9 skills** — symlinks em `~/.claude/skills/`
|
|
55
|
+
4. **Plugins** — pergunta se quer instalar extras
|
|
56
|
+
|
|
57
|
+
Depois, abra o Claude Code em qualquer projeto (`claude`) e os agentes já estão ativos. Não precisa fazer mais nada.
|
|
58
|
+
|
|
59
|
+
## Como funciona
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
claudiao init
|
|
63
|
+
|
|
|
64
|
+
v
|
|
65
|
+
~/.claude/
|
|
66
|
+
├── CLAUDE.md → Regras globais (conventional commits, TypeScript strict, etc.)
|
|
67
|
+
├── agents/
|
|
68
|
+
│ ├── aws-specialist.md → symlink pro template bundled
|
|
69
|
+
│ ├── react-specialist.md
|
|
70
|
+
│ └── ... (18 agentes)
|
|
71
|
+
└── skills/
|
|
72
|
+
├── security-checklist/ → symlink pro template bundled
|
|
73
|
+
├── pr-template/
|
|
74
|
+
└── ... (9 skills)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Symlinks** permitem live reload — se você editar um template (ou rodar `claudiao update`), a mudança reflete no Claude Code sem reinstalar.
|
|
78
|
+
|
|
79
|
+
## Usando agentes
|
|
80
|
+
|
|
81
|
+
Agentes são ativados **automaticamente** pelo Claude Code conforme o contexto da sua pergunta. Você não precisa fazer nada além de conversar normalmente:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
você: "essa query tá lenta, o que posso fazer?"
|
|
85
|
+
→ Claude Code invoca o database-specialist automaticamente
|
|
86
|
+
|
|
87
|
+
você: "preciso subir isso na AWS com Fargate"
|
|
88
|
+
→ aws-specialist entra em ação
|
|
89
|
+
|
|
90
|
+
você: "faz um code review desse PR"
|
|
91
|
+
→ pr-reviewer analisa com severidade (blocker/importante/sugestão)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Não existe comando pra "ativar" um agente — o Claude Code lê os arquivos `.md` em `~/.claude/agents/` e decide qual usar baseado na sua mensagem. Quanto mais específico você for, melhor a escolha do agente.
|
|
95
|
+
|
|
96
|
+
**Dica:** você pode forçar um agente mencionando ele no prompt: *"use o architect pra avaliar essa decisão"*.
|
|
97
|
+
|
|
98
|
+
## Usando skills
|
|
99
|
+
|
|
100
|
+
Skills são **slash commands** que você digita dentro do Claude Code. Diferente dos agentes, você invoca manualmente:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
você: /security-checklist
|
|
104
|
+
→ Claude Code gera um checklist OWASP completo pro seu projeto
|
|
105
|
+
|
|
106
|
+
você: /pr-template
|
|
107
|
+
→ Gera um PR formatado com título, descrição, checklist e labels
|
|
108
|
+
|
|
109
|
+
você: /architecture-decision
|
|
110
|
+
→ Template de ADR pronto pra você preencher
|
|
111
|
+
|
|
112
|
+
você: /sql-templates
|
|
113
|
+
→ Templates SQL pra diagnóstico de performance, migrations zero-downtime
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Skills podem receber contexto adicional:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
você: /meet-dod [cola o resumo da reunião aqui]
|
|
120
|
+
→ Transforma em Definition of Done estruturada
|
|
121
|
+
|
|
122
|
+
você: /python-patterns repository
|
|
123
|
+
→ Gera boilerplate do Repository Pattern pronto pra usar
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Usando o CLAUDE.md global
|
|
127
|
+
|
|
128
|
+
O CLAUDE.md global é o **maior diferencial** do claudião. Ele configura o comportamento do Claude Code em **todos** os seus projetos de uma vez, sem precisar copiar regras projeto a projeto.
|
|
129
|
+
|
|
130
|
+
O `claudiao init` instala um `~/.claude/CLAUDE.md` que define:
|
|
131
|
+
|
|
132
|
+
- **Idioma**: respostas em português brasileiro
|
|
133
|
+
- **Nível**: sênior — sem explicar o básico
|
|
134
|
+
- **Regras de código**: TypeScript strict, validação de inputs, logs estruturados, sem secrets hardcoded
|
|
135
|
+
- **Git workflow**: conventional commits em inglês, branch naming, PR format
|
|
136
|
+
- **Referência**: lista de todos os agentes e skills disponíveis
|
|
137
|
+
|
|
138
|
+
Na prática, isso significa que ao abrir `claude` em qualquer projeto, ele já sabe:
|
|
139
|
+
- Usar conventional commits (`feat(auth): add OAuth2 login`)
|
|
140
|
+
- Responder em pt-BR
|
|
141
|
+
- Seguir TypeScript strict mode
|
|
142
|
+
- Validar inputs públicos com Zod/class-validator
|
|
143
|
+
- Nunca engolir exceção silenciosamente
|
|
144
|
+
|
|
145
|
+
> **Importante:** O template vem opinado (pt-BR, nível sênior, TypeScript strict) como **ponto de partida**. Você **deve** customizá-lo depois do `init` pra refletir sua stack, idioma e estilo. Usa Python? Troque os exemplos de TypeScript. Prefere inglês? Mude a diretiva de idioma. Basta editar `~/.claude/CLAUDE.md`.
|
|
146
|
+
|
|
147
|
+
Se você já tem um `~/.claude/CLAUDE.md` próprio, o `claudiao init` pergunta antes de sobrescrever.
|
|
148
|
+
|
|
149
|
+
## Usando plugins
|
|
150
|
+
|
|
151
|
+
Plugins são extensões **de terceiros**, mantidas pela comunidade (não pelo claudião). O claudião apenas facilita a instalação executando o comando correto pra cada plugin. Depois de instalado, o plugin funciona direto no Claude Code — o claudião não precisa estar rodando.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Instala via claudião (ele resolve o mecanismo certo pra cada plugin)
|
|
155
|
+
claudiao install plugin superpowers # usa: claude /plugin install superpowers
|
|
156
|
+
claudiao install plugin get-shit-done # usa: npx get-shit-done-cc@latest
|
|
157
|
+
claudiao install plugin claude-mem # usa: claude /plugin install claude-mem
|
|
158
|
+
|
|
159
|
+
# Depois, no Claude Code (sem o claudião), o plugin já está ativo:
|
|
160
|
+
você: "vamos fazer TDD nessa feature"
|
|
161
|
+
→ superpowers entra em modo red-green-refactor automaticamente
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
| Plugin | Mecanismo de instalação | Como usar depois de instalar |
|
|
165
|
+
|--------|------------------------|------------------------------|
|
|
166
|
+
| **superpowers** | `claude /plugin install` | Pede TDD e ele força red-green-refactor. Pede debug e ele segue 4 fases sistemáticas. |
|
|
167
|
+
| **get-shit-done** | `npx` (standalone) | Pede pra planejar uma feature e ele cria spec, divide em fases (discuss → plan → execute → verify) |
|
|
168
|
+
| **claude-mem** | `claude /plugin install` | Memoriza decisões entre sessões automaticamente via SQLite + busca vetorial |
|
|
169
|
+
|
|
170
|
+
## Comandos
|
|
171
|
+
|
|
172
|
+
### Configuração
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
claudiao init # Setup completo interativo
|
|
176
|
+
claudiao update # Atualiza templates e recria symlinks (ver detalhes abaixo)
|
|
177
|
+
claudiao doctor # Diagnostica problemas de instalação
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**`claudiao update`** faz duas coisas:
|
|
181
|
+
1. Se você usa [repo externo](#repo-externo-avançado), roda `git pull` pra puxar as versões mais recentes dos seus agentes/skills
|
|
182
|
+
2. Recria os symlinks em `~/.claude/agents/` e `~/.claude/skills/`, garantindo que apontem pros templates atualizados (bundled ou do repo externo)
|
|
183
|
+
|
|
184
|
+
Útil depois de atualizar o claudião via `npm update -g claudiao` (novos agentes/skills bundled) ou quando o time atualizou o repo compartilhado.
|
|
185
|
+
|
|
186
|
+
**`claudiao doctor`** verifica: Claude Code instalado, diretório `~/.claude/` existe, CLAUDE.md global OK, integridade dos symlinks de agentes e skills, e config do repo externo. Se algo estiver quebrado, sugere o comando pra corrigir.
|
|
187
|
+
|
|
188
|
+
### Criar
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Wizard interativo — pergunta nome, descrição, tools, model, princípios, anti-patterns
|
|
192
|
+
claudiao create agent
|
|
193
|
+
claudiao create agent "Especialista em Go com foco em microservices e gRPC"
|
|
194
|
+
|
|
195
|
+
# Cria uma skill (slash command) com template/checklist
|
|
196
|
+
claudiao create skill
|
|
197
|
+
claudiao create skill "Checklist de deploy para produção"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
O wizard gera o arquivo `.md` com frontmatter YAML diretamente em `~/.claude/agents/` (ou `~/.claude/skills/{name}/SKILL.md`) e cria o symlink automaticamente. Se você usa [repo externo](#repo-externo-avançado), o arquivo é criado no repo e o symlink aponta pra lá. O agente/skill fica disponível na próxima vez que você abrir o Claude Code (ou na próxima mensagem, se já estiver aberto).
|
|
201
|
+
|
|
202
|
+
### Listar
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
claudiao list agents # Lista agentes instalados por categoria
|
|
206
|
+
claudiao list skills # Lista skills (slash commands)
|
|
207
|
+
claudiao list plugins # Lista plugins da comunidade disponíveis
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Instalar plugins
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
claudiao install plugin superpowers # TDD, debugging, code review
|
|
214
|
+
claudiao install plugin get-shit-done # Planejamento spec-driven
|
|
215
|
+
claudiao install plugin claude-mem # Memória entre sessões
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Remover
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
claudiao remove agent go-specialist
|
|
222
|
+
claudiao remove skill deploy-checklist
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Agentes incluídos (18)
|
|
226
|
+
|
|
227
|
+
| Categoria | Agente | O que faz |
|
|
228
|
+
|-----------|--------|-----------|
|
|
229
|
+
| **Desenvolvimento** | `react-specialist` | Componentes, hooks, performance, Server Components, Next.js |
|
|
230
|
+
| | `nodejs-specialist` | APIs NestJS, filas, autenticação, Prisma |
|
|
231
|
+
| | `python-specialist` | FastAPI, ETL, data pipelines, pandas, ML |
|
|
232
|
+
| | `database-specialist` | Queries, indexes, migrations, modelagem, performance |
|
|
233
|
+
| | `uxui-specialist` | Design system, acessibilidade, CSS/Tailwind, responsividade |
|
|
234
|
+
| **Cloud & Infra** | `aws-specialist` | Arquitetura AWS, Terraform, ECS/Fargate, custos |
|
|
235
|
+
| | `azure-specialist` | App Service, AKS, Functions, Bicep |
|
|
236
|
+
| | `gcp-specialist` | Cloud Run, GKE, BigQuery, Terraform GCP |
|
|
237
|
+
| **Qualidade** | `pr-reviewer` | Code review com severidade (blocker/importante/sugestão) |
|
|
238
|
+
| | `test-specialist` | Estratégia de testes, TDD, cobertura, mocks |
|
|
239
|
+
| | `security-specialist` | OWASP Top 10, SAST, secrets, auth, hardening |
|
|
240
|
+
| **Planejamento** | `architect` | Trade-offs, ADRs, diagramas, design de sistemas |
|
|
241
|
+
| | `implementation-planner` | Quebra features em tasks com dependências e riscos |
|
|
242
|
+
| | `idea-refiner` | Brainstorming socrático, MVP, viabilidade técnica |
|
|
243
|
+
| **Gestão** | `project-manager` | Sprints, estimativas, riscos, roadmaps |
|
|
244
|
+
| | `product-owner` | Priorização, user stories, métricas de produto |
|
|
245
|
+
| | `prompt-engineer` | Criar e otimizar prompts para LLMs |
|
|
246
|
+
| | `dod-specialist` | Definition of Done mensurável e progressiva |
|
|
247
|
+
|
|
248
|
+
## Skills incluídas (9)
|
|
249
|
+
|
|
250
|
+
| Comando | O que faz |
|
|
251
|
+
|---------|-----------|
|
|
252
|
+
| `/architecture-decision` | Template de ADR com contexto, opções, trade-offs e decisão |
|
|
253
|
+
| `/meet-dod` | Transforma resumo de reunião (Meet/Zoom) em Definition of Done estruturada |
|
|
254
|
+
| `/pm-templates` | Templates de User Story, Sprint Planning, Retrospectiva e ADR |
|
|
255
|
+
| `/pr-template` | Template padronizado de PR com checklist de review e labels |
|
|
256
|
+
| `/product-templates` | PRD, RICE scoring, product brief e go-to-market |
|
|
257
|
+
| `/python-patterns` | Boilerplates Python: Repository Pattern, Settings, FastAPI, pytest |
|
|
258
|
+
| `/security-checklist` | Checklist pré-deploy com OWASP Top 10, headers, secrets, dependências |
|
|
259
|
+
| `/sql-templates` | Templates SQL para diagnóstico de performance, migrations zero-downtime e indexes |
|
|
260
|
+
| `/ui-review-checklist` | 30+ items de revisão de UI: hierarquia visual, acessibilidade, responsividade |
|
|
261
|
+
|
|
262
|
+
## Plugins da comunidade
|
|
263
|
+
|
|
264
|
+
> **Nota:** Estes plugins são projetos independentes, mantidos por seus respectivos autores. O claudião apenas facilita a instalação.
|
|
265
|
+
|
|
266
|
+
| Plugin | O que faz |
|
|
267
|
+
|--------|-----------|
|
|
268
|
+
| [superpowers](https://github.com/obra/superpowers) | TDD enforced (red-green-refactor), debugging sistemático em 4 fases, code review, git worktrees |
|
|
269
|
+
| [get-shit-done](https://github.com/gsd-build/get-shit-done) | Planejamento spec-driven com fases (discuss, plan, execute, verify) e estado persistido |
|
|
270
|
+
| [claude-mem](https://github.com/thedotmack/claude-mem) | Memória persistente entre sessões via SQLite + busca vetorial |
|
|
271
|
+
|
|
272
|
+
## Repo externo (avançado)
|
|
273
|
+
|
|
274
|
+
Se você mantém seus agentes/skills num repo Git separado, configure em `~/.claude/.claudiao.json`:
|
|
275
|
+
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"repoPath": "/caminho/para/seu/repo"
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
O repo deve seguir a mesma estrutura do diretório `templates/`:
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
seu-repo/
|
|
286
|
+
├── agents/
|
|
287
|
+
│ ├── meu-agente.md
|
|
288
|
+
│ └── outro-agente.md
|
|
289
|
+
└── skills/
|
|
290
|
+
└── minha-skill/
|
|
291
|
+
└── SKILL.md
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
O claudião prioriza o repo externo sobre os templates bundled. `claudiao update` roda `git pull` + relink automaticamente. Isso é útil pra times que compartilham agentes/skills via Git.
|
|
295
|
+
|
|
296
|
+
## Fluxo completo: do zero ao uso
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
# 1. Instala a CLI
|
|
300
|
+
npm install -g claudiao
|
|
301
|
+
|
|
302
|
+
# 2. Setup (agentes + skills + CLAUDE.md + plugins)
|
|
303
|
+
claudiao init
|
|
304
|
+
|
|
305
|
+
# 3. Abre o Claude Code em qualquer projeto
|
|
306
|
+
cd meu-projeto
|
|
307
|
+
claude
|
|
308
|
+
|
|
309
|
+
# 4. Usa normalmente — agentes ativam pelo contexto
|
|
310
|
+
você: "essa API tá retornando 500 intermitente"
|
|
311
|
+
→ nodejs-specialist investiga
|
|
312
|
+
|
|
313
|
+
# 5. Usa skills quando precisar de templates
|
|
314
|
+
você: /pr-template
|
|
315
|
+
→ PR formatado pronto
|
|
316
|
+
|
|
317
|
+
# 6. Cria agente personalizado pro seu domínio
|
|
318
|
+
claudiao create agent "Especialista em GraphQL com Apollo Server"
|
|
319
|
+
|
|
320
|
+
# 7. Mantém atualizado
|
|
321
|
+
claudiao update
|
|
322
|
+
|
|
323
|
+
# 8. Algo quebrou?
|
|
324
|
+
claudiao doctor
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## Cloud Specialists + CLI direto
|
|
328
|
+
|
|
329
|
+
O toolkit inclui um **[guia completo de integração com CLIs de cloud](./templates/CLOUD-CLI-GUIDE.md)** — o caso de uso mais poderoso dos agents. Com a CLI da AWS, GCP ou Azure autenticada, o Claude Code investiga erros, valida arquitetura, analisa logs e custos, tudo via conversa natural:
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
você: "o ECS task tá reiniciando, investiga"
|
|
333
|
+
→ aws-specialist roda describe-tasks, tail de logs, métricas de memória
|
|
334
|
+
→ diagnóstico: "OOM kill — container com 480MB de 512MB de limit"
|
|
335
|
+
→ sugestão: "aumente memoryReservation pra 1024"
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
O guia cobre: setup de autenticação (SSO, OAuth), permissões recomendadas, 10+ cenários reais com exemplos, MCP servers, e checklist de segurança.
|
|
339
|
+
|
|
340
|
+
## Guia de best practices
|
|
341
|
+
|
|
342
|
+
O projeto inclui um **[guia completo de best practices](./templates/CLAUDE-CODE-BEST-PRACTICES.md)** com:
|
|
343
|
+
|
|
344
|
+
- Workflows reais (feature nova, bug fix, code review, onboarding, deploy)
|
|
345
|
+
- Como combinar agentes + skills + plugins num fluxo completo
|
|
346
|
+
- Níveis de raciocínio (think, megathink, ultrathink)
|
|
347
|
+
- Subagents: quando usar e quando não usar
|
|
348
|
+
- Dicas práticas (sessões paralelas, `/clear` entre tarefas, atalhos)
|
|
349
|
+
|
|
350
|
+
Exemplo — workflow de feature nova:
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
1. /architecture-decision → documenta a decisão técnica
|
|
354
|
+
2. Conversa com o Claude → architect + implementation-planner quebram em tasks
|
|
355
|
+
3. Implementa → react-specialist / nodejs-specialist ajudam no código
|
|
356
|
+
4. /security-checklist → verifica antes de subir
|
|
357
|
+
5. /pr-template → PR formatado e pronto pra review
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
## Desinstalar
|
|
361
|
+
|
|
362
|
+
> O claudião ainda não tem um comando `uninstall`. Por enquanto, a remoção é manual:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Remove todos os symlinks e o CLAUDE.md global
|
|
366
|
+
rm -rf ~/.claude/agents/ ~/.claude/skills/ ~/.claude/CLAUDE.md
|
|
367
|
+
|
|
368
|
+
# Remove a config do claudião
|
|
369
|
+
rm -f ~/.claude/.claudiao.json
|
|
370
|
+
|
|
371
|
+
# Remove a CLI
|
|
372
|
+
npm uninstall -g claudiao
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Plugins precisam ser removidos separadamente, cada um pelo seu mecanismo:
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
# Plugins instalados via claude /plugin install
|
|
379
|
+
claude /plugin remove superpowers
|
|
380
|
+
claude /plugin remove claude-mem
|
|
381
|
+
|
|
382
|
+
# get-shit-done (instalado via npx) não requer remoção manual
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
## Licença
|
|
386
|
+
|
|
387
|
+
MIT
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { writeFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
5
|
+
import slugify from '@sindresorhus/slugify';
|
|
6
|
+
import { CLAUDE_AGENTS_DIR, CLAUDE_SKILLS_DIR, getAgentsSavePath, getSkillsSavePath } from '../lib/paths.js';
|
|
7
|
+
import { createSymlink, ensureDir } from '../lib/symlinks.js';
|
|
8
|
+
import { renderAgentTemplate, renderSkillTemplate, DEFAULT_AGENT_TOOLS, DEFAULT_SKILL_TOOLS } from '../lib/templates.js';
|
|
9
|
+
import { banner, success, error, heading, info } from '../lib/format.js';
|
|
10
|
+
export async function createAgent(description) {
|
|
11
|
+
banner();
|
|
12
|
+
heading('Criar novo agente');
|
|
13
|
+
const answers = await inquirer.prompt([
|
|
14
|
+
{
|
|
15
|
+
type: 'input',
|
|
16
|
+
name: 'description',
|
|
17
|
+
message: 'Descreva o agente (o que ele faz, em que e especialista):',
|
|
18
|
+
default: description,
|
|
19
|
+
when: !description,
|
|
20
|
+
validate: (v) => v.length > 10 || 'Descreva com pelo menos 10 caracteres',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'input',
|
|
24
|
+
name: 'name',
|
|
25
|
+
message: 'Nome do agente (kebab-case):',
|
|
26
|
+
default: (ans) => {
|
|
27
|
+
const desc = description || ans.description || '';
|
|
28
|
+
// Extract a reasonable name from description
|
|
29
|
+
const words = desc.toLowerCase()
|
|
30
|
+
.replace(/[^a-z0-9\s]/g, '')
|
|
31
|
+
.split(/\s+/)
|
|
32
|
+
.filter((w) => w.length > 3 && !['que', 'para', 'como', 'com', 'uma', 'este', 'esse', 'especialista'].includes(w))
|
|
33
|
+
.slice(0, 2);
|
|
34
|
+
return slugify(words.join('-'), { lowercase: true }) || 'new-agent';
|
|
35
|
+
},
|
|
36
|
+
validate: (v) => /^[a-z][a-z0-9-]+$/.test(v) || 'Use kebab-case (ex: go-specialist)',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
type: 'input',
|
|
40
|
+
name: 'title',
|
|
41
|
+
message: 'Titulo do agente (ex: Go Specialist Agent):',
|
|
42
|
+
default: (ans) => {
|
|
43
|
+
return ans.name.split('-').map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(' ') + ' Agent';
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'input',
|
|
48
|
+
name: 'intro',
|
|
49
|
+
message: 'Frase de introducao (quem e o agente):',
|
|
50
|
+
default: (ans) => {
|
|
51
|
+
const desc = description || ans.description;
|
|
52
|
+
return `Voce e um engenheiro senior especializado. ${desc}`;
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: 'input',
|
|
57
|
+
name: 'scope',
|
|
58
|
+
message: 'Escopo (o que o agente responde e o que NAO responde):',
|
|
59
|
+
default: 'Responda APENAS sobre o dominio descrito acima. Para questoes fora do escopo, indique o agente apropriado.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'checkbox',
|
|
63
|
+
name: 'tools',
|
|
64
|
+
message: 'Ferramentas disponiveis:',
|
|
65
|
+
choices: [
|
|
66
|
+
{ name: 'Read', checked: true },
|
|
67
|
+
{ name: 'Write', checked: true },
|
|
68
|
+
{ name: 'Edit', checked: true },
|
|
69
|
+
{ name: 'Grep', checked: true },
|
|
70
|
+
{ name: 'Glob', checked: true },
|
|
71
|
+
{ name: 'Bash', checked: true },
|
|
72
|
+
{ name: 'WebFetch', checked: true },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'list',
|
|
77
|
+
name: 'category',
|
|
78
|
+
message: 'Categoria:',
|
|
79
|
+
choices: [
|
|
80
|
+
{ name: 'Desenvolvimento', value: 'dev' },
|
|
81
|
+
{ name: 'Cloud & Infra', value: 'cloud' },
|
|
82
|
+
{ name: 'Qualidade & Seguranca', value: 'quality' },
|
|
83
|
+
{ name: 'Planejamento & Gestao', value: 'planning' },
|
|
84
|
+
{ name: 'Outro', value: 'other' },
|
|
85
|
+
],
|
|
86
|
+
default: 'dev',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'list',
|
|
90
|
+
name: 'model',
|
|
91
|
+
message: 'Modelo:',
|
|
92
|
+
choices: [
|
|
93
|
+
{ name: 'opus (melhor raciocinio — recomendado pra agentes)', value: 'opus' },
|
|
94
|
+
{ name: 'sonnet (mais rapido e barato)', value: 'sonnet' },
|
|
95
|
+
],
|
|
96
|
+
default: 'opus',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'input',
|
|
100
|
+
name: 'whenToUse',
|
|
101
|
+
message: 'Quando usar (separe cenarios com ;):',
|
|
102
|
+
default: 'Quando o usuario perguntar sobre o dominio deste agente',
|
|
103
|
+
filter: (v) => v.split(';').map((s) => s.trim()).filter(Boolean),
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'input',
|
|
107
|
+
name: 'principles',
|
|
108
|
+
message: 'Principios do agente (separe com ;):',
|
|
109
|
+
default: 'Qualidade acima de velocidade; Respeitar padroes existentes do projeto; Sugerir testes pra toda mudanca',
|
|
110
|
+
filter: (v) => v.split(';').map((s) => s.trim()).filter(Boolean),
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'input',
|
|
114
|
+
name: 'antiPatterns',
|
|
115
|
+
message: 'Anti-patterns que sempre flagra (separe com ;):',
|
|
116
|
+
default: 'Codigo sem testes; Secrets hardcoded; Error handling generico',
|
|
117
|
+
filter: (v) => v.split(';').map((s) => s.trim()).filter(Boolean),
|
|
118
|
+
},
|
|
119
|
+
]);
|
|
120
|
+
const finalDesc = description || answers.description;
|
|
121
|
+
const agentContent = renderAgentTemplate({
|
|
122
|
+
name: answers.name,
|
|
123
|
+
description: finalDesc,
|
|
124
|
+
title: answers.title,
|
|
125
|
+
intro: answers.intro,
|
|
126
|
+
scope: answers.scope,
|
|
127
|
+
tools: answers.tools.length > 0 ? answers.tools : DEFAULT_AGENT_TOOLS,
|
|
128
|
+
model: answers.model,
|
|
129
|
+
category: answers.category,
|
|
130
|
+
whenToUse: answers.whenToUse,
|
|
131
|
+
principles: answers.principles,
|
|
132
|
+
antiPatterns: answers.antiPatterns,
|
|
133
|
+
});
|
|
134
|
+
// Save the file
|
|
135
|
+
const savePath = getAgentsSavePath();
|
|
136
|
+
ensureDir(savePath);
|
|
137
|
+
const agentFilePath = join(savePath, `${answers.name}.md`);
|
|
138
|
+
if (existsSync(agentFilePath)) {
|
|
139
|
+
const { overwrite } = await inquirer.prompt([{
|
|
140
|
+
type: 'confirm',
|
|
141
|
+
name: 'overwrite',
|
|
142
|
+
message: `Agente ${answers.name} ja existe. Sobrescrever?`,
|
|
143
|
+
default: false,
|
|
144
|
+
}]);
|
|
145
|
+
if (!overwrite) {
|
|
146
|
+
error('Cancelado.');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
writeFileSync(agentFilePath, agentContent);
|
|
151
|
+
success(`Agente salvo em ${chalk.dim(agentFilePath)}`);
|
|
152
|
+
// Create symlink
|
|
153
|
+
ensureDir(CLAUDE_AGENTS_DIR);
|
|
154
|
+
const target = join(CLAUDE_AGENTS_DIR, `${answers.name}.md`);
|
|
155
|
+
createSymlink(agentFilePath, target);
|
|
156
|
+
success(`Symlink criado em ~/.claude/agents/${answers.name}.md`);
|
|
157
|
+
console.log('');
|
|
158
|
+
info(`Agente ${chalk.bold(answers.name)} pronto! Abra o Claude Code e ele sera invocado automaticamente.`);
|
|
159
|
+
console.log('');
|
|
160
|
+
}
|
|
161
|
+
export async function createSkill(description) {
|
|
162
|
+
banner();
|
|
163
|
+
heading('Criar nova skill');
|
|
164
|
+
const answers = await inquirer.prompt([
|
|
165
|
+
{
|
|
166
|
+
type: 'input',
|
|
167
|
+
name: 'description',
|
|
168
|
+
message: 'Descreva a skill (o que ela faz, que template/checklist fornece):',
|
|
169
|
+
default: description,
|
|
170
|
+
when: !description,
|
|
171
|
+
validate: (v) => v.length > 10 || 'Descreva com pelo menos 10 caracteres',
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'input',
|
|
175
|
+
name: 'name',
|
|
176
|
+
message: 'Nome da skill (kebab-case, sera o slash command):',
|
|
177
|
+
default: (ans) => {
|
|
178
|
+
const desc = description || ans.description || '';
|
|
179
|
+
const words = desc.toLowerCase()
|
|
180
|
+
.replace(/[^a-z0-9\s]/g, '')
|
|
181
|
+
.split(/\s+/)
|
|
182
|
+
.filter((w) => w.length > 3 && !['que', 'para', 'como', 'com', 'uma'].includes(w))
|
|
183
|
+
.slice(0, 2);
|
|
184
|
+
return slugify(words.join('-'), { lowercase: true }) || 'new-skill';
|
|
185
|
+
},
|
|
186
|
+
validate: (v) => /^[a-z][a-z0-9-]+$/.test(v) || 'Use kebab-case (ex: deploy-checklist)',
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
type: 'input',
|
|
190
|
+
name: 'title',
|
|
191
|
+
message: 'Titulo da skill:',
|
|
192
|
+
default: (ans) => {
|
|
193
|
+
return ans.name.split('-').map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'checkbox',
|
|
198
|
+
name: 'tools',
|
|
199
|
+
message: 'Ferramentas disponiveis:',
|
|
200
|
+
choices: [
|
|
201
|
+
{ name: 'Read', checked: true },
|
|
202
|
+
{ name: 'Write', checked: true },
|
|
203
|
+
{ name: 'Edit', checked: true },
|
|
204
|
+
{ name: 'Grep', checked: true },
|
|
205
|
+
{ name: 'Glob', checked: true },
|
|
206
|
+
{ name: 'Bash', checked: true },
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
type: 'input',
|
|
211
|
+
name: 'whenToActivate',
|
|
212
|
+
message: 'Quando ativar (separe cenarios com ;):',
|
|
213
|
+
default: 'Quando o usuario pedir o template; Quando precisar do checklist',
|
|
214
|
+
filter: (v) => v.split(';').map((s) => s.trim()).filter(Boolean),
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
type: 'editor',
|
|
218
|
+
name: 'templateContent',
|
|
219
|
+
message: 'Conteudo do template/checklist (abre editor):',
|
|
220
|
+
default: '```markdown\n# Template\n\n- [ ] Item 1\n- [ ] Item 2\n- [ ] Item 3\n```',
|
|
221
|
+
},
|
|
222
|
+
]);
|
|
223
|
+
const finalDesc = description || answers.description;
|
|
224
|
+
const skillContent = renderSkillTemplate({
|
|
225
|
+
name: answers.name,
|
|
226
|
+
description: finalDesc,
|
|
227
|
+
title: answers.title,
|
|
228
|
+
tools: answers.tools.length > 0 ? answers.tools : DEFAULT_SKILL_TOOLS,
|
|
229
|
+
model: 'sonnet',
|
|
230
|
+
whenToActivate: answers.whenToActivate,
|
|
231
|
+
templateContent: answers.templateContent,
|
|
232
|
+
});
|
|
233
|
+
// Save the skill
|
|
234
|
+
const savePath = getSkillsSavePath();
|
|
235
|
+
const skillDir = join(savePath, answers.name);
|
|
236
|
+
ensureDir(skillDir);
|
|
237
|
+
const skillFilePath = join(skillDir, 'SKILL.md');
|
|
238
|
+
if (existsSync(skillFilePath)) {
|
|
239
|
+
const { overwrite } = await inquirer.prompt([{
|
|
240
|
+
type: 'confirm',
|
|
241
|
+
name: 'overwrite',
|
|
242
|
+
message: `Skill ${answers.name} ja existe. Sobrescrever?`,
|
|
243
|
+
default: false,
|
|
244
|
+
}]);
|
|
245
|
+
if (!overwrite) {
|
|
246
|
+
error('Cancelado.');
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
writeFileSync(skillFilePath, skillContent);
|
|
251
|
+
success(`Skill salva em ${chalk.dim(skillFilePath)}`);
|
|
252
|
+
// Create symlink
|
|
253
|
+
ensureDir(CLAUDE_SKILLS_DIR);
|
|
254
|
+
const skillTarget = join(CLAUDE_SKILLS_DIR, answers.name);
|
|
255
|
+
createSymlink(skillDir, skillTarget);
|
|
256
|
+
success(`Symlink criado em ~/.claude/skills/${answers.name}`);
|
|
257
|
+
console.log('');
|
|
258
|
+
info(`Skill pronta! Use ${chalk.yellow('/' + answers.name)} no Claude Code.`);
|
|
259
|
+
console.log('');
|
|
260
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function doctor(): void;
|