@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.
- package/LICENSE +21 -0
- package/README.md +149 -0
- package/bin/index.js +246 -0
- 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
|
+
}
|