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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.3.0",
3
- "generated": "2026-05-16T17:05:17.016Z",
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudient",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "The definitive Claude Code knowledge system — skills, agents, hooks, rules, and workflows.",
5
5
  "keywords": [
6
6
  "claude-code",
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':