@ofelixdev/cc-kit 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 (4) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/bin/index.js +246 -0
  4. package/package.json +35 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ofelixdev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # cc-kit
2
+
3
+ CLI que instala uma knowledge base completa no Claude Code — agents, skills, workflows, scripts de validacao.
4
+
5
+ Um comando e seu Claude Code ganha **20 agents especialistas**, **37+ skills**, **11 workflows** e **scripts Python de validacao**. Tudo vai pra `.claude/` do seu projeto.
6
+
7
+ ---
8
+
9
+ ## O que e isso?
10
+
11
+ O Claude Code por padrao nao sabe nada sobre seu projeto. Ele e poderoso, mas generico.
12
+
13
+ O **cc-kit** resolve isso instalando uma base de conhecimento curada dentro do `.claude/` — agents que funcionam como especialistas (backend, frontend, seguranca, mobile, etc), skills com patterns e boas praticas, workflows pra tarefas estruturadas, e scripts Python pra validacao automatica.
14
+
15
+ Basicamente: **seu Claude Code vira um time de especialistas**.
16
+
17
+ ---
18
+
19
+ ## Instalacao
20
+
21
+ ```bash
22
+ npx @ofelixdev/cc-kit init
23
+ ```
24
+
25
+ Ou global:
26
+
27
+ ```bash
28
+ npm i -g @ofelixdev/cc-kit
29
+ cc-kit init
30
+ ```
31
+
32
+ ---
33
+
34
+ ## O que instala
35
+
36
+ ```
37
+ .claude/
38
+ ├── agents/ # 20 agents especialistas (.md)
39
+ ├── skills/ # 37+ skills com patterns e boas praticas
40
+ ├── workflows/ # 11 workflows estruturados
41
+ ├── scripts/ # Scripts Python de validacao (checklist, verify_all, etc)
42
+ ├── rules/CLAUDE.md # Regras estendidas de coding standards
43
+ ├── .shared/ # Dados compartilhados (UI/UX datasets, etc)
44
+ ├── ARCHITECTURE.md # Indice completo da knowledge base
45
+ └── mcp_config.json # Config MCP servers (com placeholder API key)
46
+
47
+ CLAUDE.md # Regras do projeto na raiz (criado se nao existir)
48
+ ```
49
+
50
+ ---
51
+
52
+ ## Comandos
53
+
54
+ ### `cc-kit init`
55
+
56
+ Baixa e instala a knowledge base no `.claude/`.
57
+
58
+ - **Merge inteligente**: se `.claude/` ja existe, faz merge — seu conteudo existente e preservado
59
+ - **Paths protegidos**: `settings.json`, `settings.local.json`, `plans/`, `memory/`, `projects/` **nunca** sao tocados
60
+ - `CLAUDE.md` da raiz so e criado se nao existir (use `--force` pra sobrescrever)
61
+
62
+ ```bash
63
+ cc-kit init # Instala no diretorio atual
64
+ cc-kit init --force # Sobrescreve tudo, incluindo CLAUDE.md da raiz
65
+ cc-kit init --path ./meu-projeto # Instala em outro diretorio
66
+ cc-kit init --dry-run # Mostra o que seria feito sem escrever nada
67
+ cc-kit init --quiet # Sem output
68
+ cc-kit init --branch dev # Baixa de uma branch especifica
69
+ ```
70
+
71
+ ### `cc-kit update`
72
+
73
+ Re-baixa e sobrescreve a knowledge base (equivalente a `init --force`).
74
+
75
+ ```bash
76
+ cc-kit update
77
+ ```
78
+
79
+ ### `cc-kit status`
80
+
81
+ Mostra info da instalacao e contagem de arquivos.
82
+
83
+ ```bash
84
+ cc-kit status
85
+ ```
86
+
87
+ ---
88
+
89
+ ## O que vem dentro
90
+
91
+ ### Agents (20)
92
+
93
+ Arquivos de conhecimento especialista que o Claude le on-demand:
94
+
95
+ `orchestrator` · `project-planner` · `security-auditor` · `backend-specialist` · `frontend-specialist` · `mobile-developer` · `debugger` · `game-developer` · `test-engineer` · `database-architect` · `devops-engineer` · `performance-optimizer` · `seo-specialist` · `penetration-tester` · `documentation-writer` · `qa-automation-engineer` · `code-archaeologist` · `explorer-agent` · `product-manager` · `product-owner`
96
+
97
+ ### Skills (37+)
98
+
99
+ Patterns, boas praticas e conhecimento por dominio:
100
+
101
+ `clean-code` · `api-patterns` · `database-design` · `frontend-design` · `mobile-design` · `testing-patterns` · `vulnerability-scanner` · `brainstorming` · `plan-writing` · `architecture` · `tailwind-patterns` · `nextjs-react-expert` · `nodejs-best-practices` · `python-patterns` · `rust-pro` · `bash-linux` · `game-development` · `seo-fundamentals` · `performance-profiling` · `webapp-testing` · `tdd-workflow` · `code-review-checklist` · `deployment-procedures` · `mcp-builder` · e mais...
102
+
103
+ ### Workflows (11)
104
+
105
+ Fluxos estruturados de execucao de tarefas:
106
+
107
+ `brainstorm` · `create` · `debug` · `deploy` · `enhance` · `orchestrate` · `plan` · `preview` · `status` · `test` · `ui-ux-pro-max`
108
+
109
+ ### Scripts de Validacao
110
+
111
+ Scripts Python pra rodar checks no seu projeto:
112
+
113
+ ```bash
114
+ python .claude/scripts/checklist.py . # Validacao por prioridade
115
+ python .claude/scripts/verify_all.py . --url <URL> # Suite completa pre-deploy
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Como funciona
121
+
122
+ 1. Baixa o template do GitHub via [giget](https://github.com/unjs/giget)
123
+ 2. Faz merge dos agents, skills, workflows e scripts no `.claude/`
124
+ 3. Cria um `CLAUDE.md` generico na raiz do projeto (se nao existir)
125
+ 4. Nunca toca em configs do usuario (settings, memory, plans)
126
+
127
+ ---
128
+
129
+ ## Pre-requisitos
130
+
131
+ - **Node.js** 18+ (pra rodar o CLI)
132
+ - **Python** 3.10+ (pra rodar os scripts de validacao — opcional)
133
+ - **Claude Code** CLI instalado (o que vai consumir a knowledge base)
134
+
135
+ ---
136
+
137
+ ## Creditos
138
+
139
+ Este projeto foi inspirado no [`@vudovn/ag-kit`](https://www.npmjs.com/package/@vudovn/ag-kit) (Antigravity Kit), que instala agents/skills/workflows pro Gemini CLI no diretorio `.agent/`.
140
+
141
+ O **cc-kit** adapta esse mesmo conceito pro ecossistema **Claude Code** — todo o conteudo foi reescrito e adaptado pra funcionar com a estrutura `.claude/`, sem nenhuma referencia ao Gemini ou Antigravity.
142
+
143
+ Obrigado ao [@vudovn](https://github.com/vudovn) pela ideia original e pelo trabalho no ag-kit.
144
+
145
+ ---
146
+
147
+ ## Licenca
148
+
149
+ MIT
package/bin/index.js ADDED
@@ -0,0 +1,246 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Command } from 'commander';
4
+ import chalk from 'chalk';
5
+ import ora from 'ora';
6
+ import fs from 'fs-extra';
7
+ import path from 'path';
8
+ import { downloadTemplate } from 'giget';
9
+ import { fileURLToPath } from 'url';
10
+
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = path.dirname(__filename);
13
+
14
+ const VERSION = '1.0.0';
15
+ const REPO = 'github:ofelixdev/cc-kit/template';
16
+ const TARGET_DIR = '.claude';
17
+ const ROOT_CLAUDE_MD = 'CLAUDE.md';
18
+
19
+ const PROTECTED_PATHS = [
20
+ 'settings.json',
21
+ 'settings.local.json',
22
+ 'plans',
23
+ 'memory',
24
+ 'projects',
25
+ ];
26
+
27
+ const MERGE_DIRS = [
28
+ 'agents',
29
+ 'skills',
30
+ 'workflows',
31
+ 'scripts',
32
+ 'rules',
33
+ '.shared',
34
+ ];
35
+
36
+ const MERGE_FILES = [
37
+ 'ARCHITECTURE.md',
38
+ 'mcp_config.json',
39
+ ];
40
+
41
+ function resolveTarget(optPath) {
42
+ const base = optPath || process.cwd();
43
+ return {
44
+ root: path.resolve(base),
45
+ claude: path.resolve(base, TARGET_DIR),
46
+ };
47
+ }
48
+
49
+ function isProtected(relativePath) {
50
+ return PROTECTED_PATHS.some(
51
+ (p) => relativePath === p || relativePath.startsWith(p + '/')
52
+ );
53
+ }
54
+
55
+ async function mergeDir(src, dest) {
56
+ let copied = 0;
57
+ const entries = await fs.readdir(src, { withFileTypes: true });
58
+
59
+ for (const entry of entries) {
60
+ const srcPath = path.join(src, entry.name);
61
+ const destPath = path.join(dest, entry.name);
62
+
63
+ if (entry.isDirectory()) {
64
+ await fs.ensureDir(destPath);
65
+ copied += await mergeDir(srcPath, destPath);
66
+ } else {
67
+ await fs.copy(srcPath, destPath, { overwrite: true });
68
+ copied++;
69
+ }
70
+ }
71
+
72
+ return copied;
73
+ }
74
+
75
+ async function installTemplate({ force, targetPath, branch, quiet, dryRun }) {
76
+ const { root, claude } = resolveTarget(targetPath);
77
+ const claudeExists = await fs.pathExists(claude);
78
+ const rootMdExists = await fs.pathExists(path.join(root, ROOT_CLAUDE_MD));
79
+
80
+ if (!quiet) {
81
+ console.log(chalk.bold('\n cc-kit') + chalk.dim(' — Claude Code Knowledge Base\n'));
82
+ }
83
+
84
+ if (claudeExists && !force) {
85
+ if (!quiet) {
86
+ console.log(chalk.yellow(' .claude/ already exists — merging (protected files untouched)'));
87
+ }
88
+ }
89
+
90
+ if (dryRun) {
91
+ console.log(chalk.cyan('\n Dry run — no files will be written.\n'));
92
+ console.log(chalk.dim(' Would download template from: ') + REPO);
93
+ console.log(chalk.dim(' Would install to: ') + claude);
94
+ if (!rootMdExists || force) {
95
+ console.log(chalk.dim(' Would create: ') + path.join(root, ROOT_CLAUDE_MD));
96
+ }
97
+ return;
98
+ }
99
+
100
+ const spinner = quiet ? null : ora('Downloading template...').start();
101
+ let tempDir;
102
+
103
+ try {
104
+ const source = branch ? `${REPO}#${branch}` : REPO;
105
+ const result = await downloadTemplate(source, { force: true });
106
+ tempDir = result.dir;
107
+
108
+ if (spinner) spinner.text = 'Installing knowledge base...';
109
+
110
+ await fs.ensureDir(claude);
111
+
112
+ let totalCopied = 0;
113
+
114
+ for (const dir of MERGE_DIRS) {
115
+ const src = path.join(tempDir, dir);
116
+ if (await fs.pathExists(src)) {
117
+ const dest = path.join(claude, dir);
118
+ await fs.ensureDir(dest);
119
+ totalCopied += await mergeDir(src, dest);
120
+ }
121
+ }
122
+
123
+ for (const file of MERGE_FILES) {
124
+ const src = path.join(tempDir, file);
125
+ if (await fs.pathExists(src)) {
126
+ await fs.copy(src, path.join(claude, file), { overwrite: true });
127
+ totalCopied++;
128
+ }
129
+ }
130
+
131
+ if (!rootMdExists || force) {
132
+ const templateMd = path.join(tempDir, ROOT_CLAUDE_MD);
133
+ if (await fs.pathExists(templateMd)) {
134
+ await fs.copy(templateMd, path.join(root, ROOT_CLAUDE_MD), { overwrite: force });
135
+ if (!quiet) {
136
+ console.log(chalk.dim(` ${force ? 'Overwrote' : 'Created'} ${ROOT_CLAUDE_MD} in project root`));
137
+ }
138
+ }
139
+ } else if (!quiet) {
140
+ console.log(chalk.dim(` ${ROOT_CLAUDE_MD} already exists — skipped (use --force to overwrite)`));
141
+ }
142
+
143
+ if (spinner) spinner.succeed(chalk.green(`Installed ${totalCopied} files into ${TARGET_DIR}/`));
144
+
145
+ if (!quiet) {
146
+ console.log('');
147
+ console.log(chalk.dim(' Agents: ') + await countItems(path.join(claude, 'agents')));
148
+ console.log(chalk.dim(' Skills: ') + await countItems(path.join(claude, 'skills')));
149
+ console.log(chalk.dim(' Workflows: ') + await countItems(path.join(claude, 'workflows')));
150
+ console.log(chalk.dim(' Scripts: ') + await countItems(path.join(claude, 'scripts')));
151
+ console.log('');
152
+ console.log(chalk.green(' Done!') + chalk.dim(' Run ') + chalk.cyan('cc-kit status') + chalk.dim(' to verify.'));
153
+ console.log('');
154
+ }
155
+ } catch (err) {
156
+ if (spinner) spinner.fail(chalk.red('Installation failed'));
157
+ console.error(chalk.red(`\n Error: ${err.message}\n`));
158
+ process.exit(1);
159
+ } finally {
160
+ if (tempDir) {
161
+ await fs.remove(tempDir).catch(() => {});
162
+ }
163
+ }
164
+ }
165
+
166
+ async function countItems(dir) {
167
+ try {
168
+ const entries = await fs.readdir(dir);
169
+ return String(entries.length);
170
+ } catch {
171
+ return '0';
172
+ }
173
+ }
174
+
175
+ async function showStatus(targetPath) {
176
+ const { claude } = resolveTarget(targetPath);
177
+
178
+ console.log(chalk.bold('\n cc-kit status\n'));
179
+
180
+ const exists = await fs.pathExists(path.join(claude, 'agents'));
181
+
182
+ if (!exists) {
183
+ console.log(chalk.yellow(' Not installed.') + chalk.dim(' Run ') + chalk.cyan('cc-kit init') + chalk.dim(' to install.\n'));
184
+ return;
185
+ }
186
+
187
+ console.log(chalk.dim(' Path: ') + claude);
188
+
189
+ try {
190
+ const stat = await fs.stat(path.join(claude, 'agents'));
191
+ console.log(chalk.dim(' Modified: ') + stat.mtime.toISOString().slice(0, 19).replace('T', ' '));
192
+ } catch {}
193
+
194
+ console.log('');
195
+ console.log(chalk.dim(' Agents: ') + await countItems(path.join(claude, 'agents')));
196
+ console.log(chalk.dim(' Skills: ') + await countItems(path.join(claude, 'skills')));
197
+ console.log(chalk.dim(' Workflows: ') + await countItems(path.join(claude, 'workflows')));
198
+ console.log(chalk.dim(' Scripts: ') + await countItems(path.join(claude, 'scripts')));
199
+ console.log(chalk.dim(' Rules: ') + await countItems(path.join(claude, 'rules')));
200
+ console.log('');
201
+ }
202
+
203
+ const program = new Command();
204
+
205
+ program
206
+ .name('cc-kit')
207
+ .description('Claude Code knowledge base installer — agents, skills, workflows')
208
+ .version(VERSION);
209
+
210
+ program
211
+ .command('init')
212
+ .description('Install or merge the Claude Code knowledge base into .claude/')
213
+ .option('-f, --force', 'Overwrite existing files including root CLAUDE.md')
214
+ .option('-p, --path <dir>', 'Target project directory (default: cwd)')
215
+ .option('-b, --branch <name>', 'GitHub branch to download from')
216
+ .option('-q, --quiet', 'Suppress output')
217
+ .option('--dry-run', 'Show what would be done without writing files')
218
+ .action((opts) => installTemplate({
219
+ force: opts.force,
220
+ targetPath: opts.path,
221
+ branch: opts.branch,
222
+ quiet: opts.quiet,
223
+ dryRun: opts.dryRun,
224
+ }));
225
+
226
+ program
227
+ .command('update')
228
+ .description('Re-download and overwrite the knowledge base (force merge)')
229
+ .option('-p, --path <dir>', 'Target project directory (default: cwd)')
230
+ .option('-b, --branch <name>', 'GitHub branch to download from')
231
+ .option('-q, --quiet', 'Suppress output')
232
+ .action((opts) => installTemplate({
233
+ force: true,
234
+ targetPath: opts.path,
235
+ branch: opts.branch,
236
+ quiet: opts.quiet,
237
+ dryRun: false,
238
+ }));
239
+
240
+ program
241
+ .command('status')
242
+ .description('Show installation status and counts')
243
+ .option('-p, --path <dir>', 'Target project directory (default: cwd)')
244
+ .action((opts) => showStatus(opts.path));
245
+
246
+ program.parse();
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@ofelixdev/cc-kit",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Claude Code knowledge base installer - agents, skills, workflows",
6
+ "main": "bin/index.js",
7
+ "bin": {
8
+ "cc-kit": "bin/index.js"
9
+ },
10
+ "files": [
11
+ "bin"
12
+ ],
13
+ "keywords": [
14
+ "claude",
15
+ "claude-code",
16
+ "ai",
17
+ "agents",
18
+ "skills",
19
+ "knowledge-base",
20
+ "cli"
21
+ ],
22
+ "author": "ofelixdev",
23
+ "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/ofelixdev/cc-kit.git"
27
+ },
28
+ "dependencies": {
29
+ "chalk": "^5.4.1",
30
+ "commander": "^12.1.0",
31
+ "fs-extra": "^11.3.0",
32
+ "giget": "^2.0.0",
33
+ "ora": "^8.2.0"
34
+ }
35
+ }