claudient 0.3.0 → 0.4.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/index.json +58 -2
- package/package.json +1 -1
- package/scripts/cli.js +134 -1
package/index.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
3
|
-
"generated": "2026-05-16T17:
|
|
2
|
+
"version": "0.4.0",
|
|
3
|
+
"generated": "2026-05-16T17:19:22.557Z",
|
|
4
4
|
"skills": [
|
|
5
5
|
{
|
|
6
6
|
"id": "backend/dotnet/csharp",
|
|
@@ -72,6 +72,34 @@
|
|
|
72
72
|
"title": "Go Skill",
|
|
73
73
|
"file": "skills/backend/go/nl/go.md"
|
|
74
74
|
},
|
|
75
|
+
{
|
|
76
|
+
"id": "backend/java/spring-boot",
|
|
77
|
+
"category": "backend",
|
|
78
|
+
"lang": "de",
|
|
79
|
+
"title": "Spring Boot Skill",
|
|
80
|
+
"file": "skills/backend/java/de/spring-boot.md"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "backend/java/spring-boot",
|
|
84
|
+
"category": "backend",
|
|
85
|
+
"lang": "es",
|
|
86
|
+
"title": "Skill Spring Boot",
|
|
87
|
+
"file": "skills/backend/java/es/spring-boot.md"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "backend/java/spring-boot",
|
|
91
|
+
"category": "backend",
|
|
92
|
+
"lang": "fr",
|
|
93
|
+
"title": "Skill Spring Boot",
|
|
94
|
+
"file": "skills/backend/java/fr/spring-boot.md"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "backend/java/spring-boot",
|
|
98
|
+
"category": "backend",
|
|
99
|
+
"lang": "nl",
|
|
100
|
+
"title": "Spring Boot Skill",
|
|
101
|
+
"file": "skills/backend/java/nl/spring-boot.md"
|
|
102
|
+
},
|
|
75
103
|
{
|
|
76
104
|
"id": "backend/java/spring-boot",
|
|
77
105
|
"category": "backend",
|
|
@@ -610,6 +638,34 @@
|
|
|
610
638
|
"lang": "en",
|
|
611
639
|
"title": "Caveman Mode Skill",
|
|
612
640
|
"file": "skills/productivity/caveman.md"
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
"id": "productivity/caveman",
|
|
644
|
+
"category": "productivity",
|
|
645
|
+
"lang": "de",
|
|
646
|
+
"title": "Caveman Mode Skill",
|
|
647
|
+
"file": "skills/productivity/de/caveman.md"
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
"id": "productivity/caveman",
|
|
651
|
+
"category": "productivity",
|
|
652
|
+
"lang": "es",
|
|
653
|
+
"title": "Skill Modo Caveman",
|
|
654
|
+
"file": "skills/productivity/es/caveman.md"
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"id": "productivity/caveman",
|
|
658
|
+
"category": "productivity",
|
|
659
|
+
"lang": "fr",
|
|
660
|
+
"title": "Skill Mode Caveman",
|
|
661
|
+
"file": "skills/productivity/fr/caveman.md"
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"id": "productivity/caveman",
|
|
665
|
+
"category": "productivity",
|
|
666
|
+
"lang": "nl",
|
|
667
|
+
"title": "Caveman Mode Skill",
|
|
668
|
+
"file": "skills/productivity/nl/caveman.md"
|
|
613
669
|
}
|
|
614
670
|
],
|
|
615
671
|
"agents": [
|
package/package.json
CHANGED
package/scripts/cli.js
CHANGED
|
@@ -28,9 +28,10 @@ function usage() {
|
|
|
28
28
|
claudient — Claude Code knowledge system
|
|
29
29
|
|
|
30
30
|
Usage:
|
|
31
|
+
npx claudient init Interactive first-run setup
|
|
31
32
|
npx claudient add skills [category] [--lang <lang>]
|
|
32
33
|
npx claudient add agents
|
|
33
|
-
npx claudient add rules
|
|
34
|
+
npx claudient add rules [--write]
|
|
34
35
|
npx claudient add hooks
|
|
35
36
|
npx claudient add all [--lang <lang>]
|
|
36
37
|
npx claudient remove skills [category]
|
|
@@ -393,6 +394,135 @@ function listCommand(type) {
|
|
|
393
394
|
}
|
|
394
395
|
}
|
|
395
396
|
|
|
397
|
+
// ── Init (interactive first-run setup) ───────────────────────────────────────
|
|
398
|
+
|
|
399
|
+
async function initCommand() {
|
|
400
|
+
const readline = require('readline')
|
|
401
|
+
|
|
402
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout })
|
|
403
|
+
const ask = (q) => new Promise(resolve => rl.question(q, resolve))
|
|
404
|
+
|
|
405
|
+
const BOLD = '\x1b[1m'
|
|
406
|
+
const ORANGE = '\x1b[33m'
|
|
407
|
+
const GREEN = '\x1b[32m'
|
|
408
|
+
const DIM = '\x1b[2m'
|
|
409
|
+
const RESET = '\x1b[0m'
|
|
410
|
+
|
|
411
|
+
console.log(`
|
|
412
|
+
${BOLD}╔══════════════════════════════════════════════╗
|
|
413
|
+
║ CLAUDIENT SETUP ║
|
|
414
|
+
║ The Claude Code Knowledge System ║
|
|
415
|
+
╚══════════════════════════════════════════════╝${RESET}
|
|
416
|
+
`)
|
|
417
|
+
|
|
418
|
+
// Check Claude Code installed
|
|
419
|
+
if (!fs.existsSync(CLAUDE_DIR)) {
|
|
420
|
+
console.error(`${ORANGE}⚠ ~/.claude not found.${RESET}`)
|
|
421
|
+
console.error(` Claude Code must be installed first: https://claude.ai/code\n`)
|
|
422
|
+
rl.close()
|
|
423
|
+
process.exit(1)
|
|
424
|
+
}
|
|
425
|
+
console.log(`${GREEN}✓ Claude Code detected at ${CLAUDE_DIR}${RESET}\n`)
|
|
426
|
+
|
|
427
|
+
const summary = { skills: [], agents: false, hooks: false, rules: false, lang: 'en' }
|
|
428
|
+
|
|
429
|
+
// 1. Language
|
|
430
|
+
console.log(`${BOLD}Step 1/5 — Language${RESET}`)
|
|
431
|
+
console.log(' Available: en, fr, de, nl, es')
|
|
432
|
+
const langInput = (await ask(' Which language? [en] ')).trim().toLowerCase() || 'en'
|
|
433
|
+
summary.lang = SUPPORTED_LANGS.includes(langInput) ? langInput : 'en'
|
|
434
|
+
console.log(` → ${summary.lang}\n`)
|
|
435
|
+
|
|
436
|
+
// 2. Skill categories
|
|
437
|
+
console.log(`${BOLD}Step 2/5 — Skills${RESET}`)
|
|
438
|
+
SKILL_CATEGORIES.forEach((cat, i) => console.log(` ${i + 1}. ${cat}`))
|
|
439
|
+
console.log(' a. All categories')
|
|
440
|
+
console.log(' 0. Skip skills')
|
|
441
|
+
const catInput = (await ask(' Select categories (comma-separated numbers, or a/0): ')).trim()
|
|
442
|
+
|
|
443
|
+
if (catInput === '0') {
|
|
444
|
+
console.log(' → Skipping skills\n')
|
|
445
|
+
} else if (catInput === 'a' || catInput === '') {
|
|
446
|
+
summary.skills = [...SKILL_CATEGORIES]
|
|
447
|
+
console.log(` → All categories selected\n`)
|
|
448
|
+
} else {
|
|
449
|
+
const nums = catInput.split(',').map(n => parseInt(n.trim(), 10)).filter(n => n >= 1 && n <= SKILL_CATEGORIES.length)
|
|
450
|
+
summary.skills = nums.map(n => SKILL_CATEGORIES[n - 1])
|
|
451
|
+
console.log(` → Selected: ${summary.skills.join(', ')}\n`)
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
// 3. Agents
|
|
455
|
+
console.log(`${BOLD}Step 3/5 — Agents${RESET}`)
|
|
456
|
+
console.log(' 6 subagent definitions: Planner, Architect, Code Reviewer, Security, Build Resolvers')
|
|
457
|
+
const agentsInput = (await ask(' Install agents? [Y/n] ')).trim().toLowerCase()
|
|
458
|
+
summary.agents = agentsInput !== 'n'
|
|
459
|
+
console.log(` → ${summary.agents ? 'Yes' : 'No'}\n`)
|
|
460
|
+
|
|
461
|
+
// 4. Hooks
|
|
462
|
+
console.log(`${BOLD}Step 4/5 — Hooks${RESET}`)
|
|
463
|
+
console.log(' 7 shell scripts: safety guards, auto-formatter, audit log, cost tracker, session helpers')
|
|
464
|
+
const hooksInput = (await ask(' Install hooks? [Y/n] ')).trim().toLowerCase()
|
|
465
|
+
summary.hooks = hooksInput !== 'n'
|
|
466
|
+
console.log(` → ${summary.hooks ? 'Yes' : 'No'}\n`)
|
|
467
|
+
|
|
468
|
+
// 5. Rules
|
|
469
|
+
console.log(`${BOLD}Step 5/5 — Rules${RESET}`)
|
|
470
|
+
console.log(' 8 rule sets: coding style, git, security, testing, performance, Python, TypeScript, Go')
|
|
471
|
+
const rulesInput = (await ask(' Add rules to ./CLAUDE.md? [Y/n] ')).trim().toLowerCase()
|
|
472
|
+
summary.rules = rulesInput !== 'n'
|
|
473
|
+
console.log(` → ${summary.rules ? 'Yes' : 'No'}\n`)
|
|
474
|
+
|
|
475
|
+
rl.close()
|
|
476
|
+
|
|
477
|
+
// Confirm
|
|
478
|
+
console.log(`${BOLD}Summary${RESET}`)
|
|
479
|
+
console.log(` Language : ${summary.lang}`)
|
|
480
|
+
console.log(` Skills : ${summary.skills.length ? summary.skills.join(', ') : 'none'}`)
|
|
481
|
+
console.log(` Agents : ${summary.agents ? 'yes' : 'no'}`)
|
|
482
|
+
console.log(` Hooks : ${summary.hooks ? 'yes' : 'no'}`)
|
|
483
|
+
console.log(` Rules : ${summary.rules ? 'append to ./CLAUDE.md' : 'no'}`)
|
|
484
|
+
console.log()
|
|
485
|
+
|
|
486
|
+
// Execute
|
|
487
|
+
if (summary.skills.length) {
|
|
488
|
+
for (const cat of summary.skills) {
|
|
489
|
+
console.log(`Installing ${cat} skills...`)
|
|
490
|
+
addSkills(cat, summary.lang === 'en' ? null : summary.lang)
|
|
491
|
+
}
|
|
492
|
+
console.log()
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
if (summary.agents) {
|
|
496
|
+
console.log('Installing agents...')
|
|
497
|
+
addAgents()
|
|
498
|
+
console.log()
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
if (summary.hooks) {
|
|
502
|
+
console.log('Installing hooks...')
|
|
503
|
+
addHooks()
|
|
504
|
+
console.log()
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
if (summary.rules) {
|
|
508
|
+
console.log('Adding rules to ./CLAUDE.md...')
|
|
509
|
+
addRulesWrite()
|
|
510
|
+
console.log()
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
console.log(`${GREEN}${BOLD}✓ Claudient setup complete!${RESET}`)
|
|
514
|
+
console.log()
|
|
515
|
+
console.log('Next steps:')
|
|
516
|
+
if (summary.hooks) {
|
|
517
|
+
console.log(` 1. Add hook entries to .claude/settings.json`)
|
|
518
|
+
console.log(` See: https://github.com/Claudient/Claudient/tree/main/hooks`)
|
|
519
|
+
}
|
|
520
|
+
console.log(` 2. Restart Claude Code to activate all installed content`)
|
|
521
|
+
console.log(` 3. Try a skill — type /fastapi or /kubernetes in Claude Code`)
|
|
522
|
+
console.log()
|
|
523
|
+
console.log(` Full docs: https://github.com/Claudient/Claudient`)
|
|
524
|
+
}
|
|
525
|
+
|
|
396
526
|
function getFiles(dir, prefix = '') {
|
|
397
527
|
const results = []
|
|
398
528
|
if (!fs.existsSync(dir)) return results
|
|
@@ -460,6 +590,9 @@ switch (command) {
|
|
|
460
590
|
case 'list':
|
|
461
591
|
listCommand(positional[0])
|
|
462
592
|
break
|
|
593
|
+
case 'init':
|
|
594
|
+
initCommand().catch(err => { console.error(err); process.exit(1) })
|
|
595
|
+
break
|
|
463
596
|
case 'help':
|
|
464
597
|
case '--help':
|
|
465
598
|
case '-h':
|