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.
Files changed (68) hide show
  1. package/README.md +387 -0
  2. package/dist/commands/create.d.ts +2 -0
  3. package/dist/commands/create.js +260 -0
  4. package/dist/commands/doctor.d.ts +1 -0
  5. package/dist/commands/doctor.js +138 -0
  6. package/dist/commands/init.d.ts +3 -0
  7. package/dist/commands/init.js +252 -0
  8. package/dist/commands/install-plugin.d.ts +1 -0
  9. package/dist/commands/install-plugin.js +35 -0
  10. package/dist/commands/list.d.ts +3 -0
  11. package/dist/commands/list.js +123 -0
  12. package/dist/commands/remove.d.ts +6 -0
  13. package/dist/commands/remove.js +121 -0
  14. package/dist/commands/update.d.ts +4 -0
  15. package/dist/commands/update.js +141 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.js +156 -0
  18. package/dist/lib/__tests__/frontmatter.test.d.ts +1 -0
  19. package/dist/lib/__tests__/frontmatter.test.js +180 -0
  20. package/dist/lib/__tests__/paths.test.d.ts +1 -0
  21. package/dist/lib/__tests__/paths.test.js +29 -0
  22. package/dist/lib/__tests__/symlinks.test.d.ts +1 -0
  23. package/dist/lib/__tests__/symlinks.test.js +142 -0
  24. package/dist/lib/format.d.ts +13 -0
  25. package/dist/lib/format.js +47 -0
  26. package/dist/lib/frontmatter.d.ts +9 -0
  27. package/dist/lib/frontmatter.js +45 -0
  28. package/dist/lib/paths.d.ts +33 -0
  29. package/dist/lib/paths.js +111 -0
  30. package/dist/lib/plugins.d.ts +3 -0
  31. package/dist/lib/plugins.js +24 -0
  32. package/dist/lib/symlinks.d.ts +8 -0
  33. package/dist/lib/symlinks.js +56 -0
  34. package/dist/lib/templates.d.ts +26 -0
  35. package/dist/lib/templates.js +75 -0
  36. package/dist/types.d.ts +25 -0
  37. package/dist/types.js +1 -0
  38. package/package.json +47 -0
  39. package/templates/CLAUDE-CODE-BEST-PRACTICES.md +508 -0
  40. package/templates/CLOUD-CLI-GUIDE.md +405 -0
  41. package/templates/agents/architect.md +128 -0
  42. package/templates/agents/aws-specialist.md +104 -0
  43. package/templates/agents/azure-specialist.md +117 -0
  44. package/templates/agents/database-specialist.md +104 -0
  45. package/templates/agents/dod-specialist.md +101 -0
  46. package/templates/agents/gcp-specialist.md +124 -0
  47. package/templates/agents/idea-refiner.md +146 -0
  48. package/templates/agents/implementation-planner.md +149 -0
  49. package/templates/agents/nodejs-specialist.md +105 -0
  50. package/templates/agents/pr-reviewer.md +132 -0
  51. package/templates/agents/product-owner.md +88 -0
  52. package/templates/agents/project-manager.md +95 -0
  53. package/templates/agents/prompt-engineer.md +115 -0
  54. package/templates/agents/python-specialist.md +103 -0
  55. package/templates/agents/react-specialist.md +94 -0
  56. package/templates/agents/security-specialist.md +145 -0
  57. package/templates/agents/test-specialist.md +157 -0
  58. package/templates/agents/uxui-specialist.md +102 -0
  59. package/templates/global-CLAUDE.md +100 -0
  60. package/templates/skills/architecture-decision/SKILL.md +102 -0
  61. package/templates/skills/meet-dod/SKILL.md +124 -0
  62. package/templates/skills/pm-templates/SKILL.md +125 -0
  63. package/templates/skills/pr-template/SKILL.md +87 -0
  64. package/templates/skills/product-templates/SKILL.md +97 -0
  65. package/templates/skills/python-patterns/SKILL.md +123 -0
  66. package/templates/skills/security-checklist/SKILL.md +80 -0
  67. package/templates/skills/sql-templates/SKILL.md +93 -0
  68. 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,2 @@
1
+ export declare function createAgent(description?: string): Promise<void>;
2
+ export declare function createSkill(description?: string): Promise<void>;
@@ -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;