@the-bearded-bear/claude-craft 8.1.0 → 8.2.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 (45) hide show
  1. package/Dev/i18n/base/Common/hooks/templates/settings-hooks.json +1 -1
  2. package/Dev/i18n/de/Common/commands/getting-started.md +348 -0
  3. package/Dev/i18n/de/Common/templates/settings.json.template +32 -39
  4. package/Dev/i18n/en/Common/commands/getting-started.md +348 -0
  5. package/Dev/i18n/en/Common/templates/settings.json.template +10 -80
  6. package/Dev/i18n/es/Common/commands/getting-started.md +348 -0
  7. package/Dev/i18n/es/Common/templates/settings.json.template +32 -39
  8. package/Dev/i18n/fr/Common/commands/getting-started.md +348 -0
  9. package/Dev/i18n/fr/Common/templates/settings.json.template +32 -39
  10. package/Dev/i18n/pt/Common/commands/getting-started.md +348 -0
  11. package/Dev/i18n/pt/Common/templates/settings.json.template +32 -39
  12. package/Dev/scripts/check-prerequisites.sh +4 -3
  13. package/Dev/scripts/install-common-rules.sh +10 -2
  14. package/Dev/scripts/lib/install-tech-common.sh +3 -0
  15. package/Dev/scripts/lib/shell-ui.sh +2 -0
  16. package/Dev/scripts/tcl-common.sh +2 -0
  17. package/Infra/install-ansible-rules.sh +2 -0
  18. package/Infra/install-coolify-rules.sh +2 -0
  19. package/Infra/install-docker-rules.sh +2 -0
  20. package/Infra/install-frankenphp-rules.sh +2 -0
  21. package/Infra/install-hcloud-rules.sh +2 -0
  22. package/Infra/install-kubernetes-rules.sh +2 -0
  23. package/Infra/install-opentofu-rules.sh +2 -0
  24. package/Infra/install-pgbouncer-rules.sh +2 -0
  25. package/README.md +12 -3
  26. package/Tools/AgentTeams/lib/ralph-teams-adapter.sh +45 -8
  27. package/Tools/MultiAccount/claude-accounts.sh +7 -5
  28. package/Tools/PluginExport/export-plugin.sh +2 -0
  29. package/Tools/ProjectConfig/claude-projects.sh +2 -0
  30. package/Tools/RTK/install-rtk.sh +55 -2
  31. package/Tools/Ralph/lib/parallel-manager.sh +21 -3
  32. package/Tools/Recette/lib/browser-executor.sh +2 -0
  33. package/Tools/Recette/lib/chrome-check.sh +2 -0
  34. package/Tools/Recette/lib/plan-generator.sh +2 -0
  35. package/Tools/Recette/lib/regression-detector.sh +2 -0
  36. package/Tools/Recette/lib/report-generator.sh +2 -0
  37. package/Tools/Recette/lib/session.sh +2 -0
  38. package/Tools/Recette/lib/test-generator.sh +2 -0
  39. package/Tools/StatusLine/statusline.sh +3 -1
  40. package/Tools/lib/tools-ui.sh +2 -0
  41. package/cli/kanban/client/src/views/KanbanView.svelte +229 -1
  42. package/cli/lib/banner.js +2 -1
  43. package/cli/lib/check.js +10 -9
  44. package/cli/lib/symbols.js +88 -0
  45. package/package.json +11 -8
package/cli/lib/check.js CHANGED
@@ -6,6 +6,7 @@
6
6
  import fs from 'fs';
7
7
  import path from 'path';
8
8
  import c from './colors.js';
9
+ import { success, warning, error } from './symbols.js';
9
10
  import { detectProject } from './detect-project.js';
10
11
  import { countFiles, listDirs } from './fs-utils.js';
11
12
 
@@ -22,10 +23,10 @@ function runCheck(targetPath) {
22
23
 
23
24
  // 1. .claude/ directory
24
25
  if (fs.existsSync(claudeDir)) {
25
- console.log(` ${c.green}[OK]${c.reset} .claude/ directory exists`);
26
+ console.log(` ${success('.claude/ directory exists')}`);
26
27
  } else {
27
- console.log(` ${c.red}[MISSING]${c.reset} .claude/ directory not found`);
28
- console.log(`\n${c.red}No claude-craft installation detected.${c.reset}`);
28
+ console.log(` ${error('.claude/ directory not found')}`);
29
+ console.log(`\n${error('No claude-craft installation detected.')}`);
29
30
  console.log(`Run: npx @the-bearded-bear/claude-craft install ${targetPath}\n`);
30
31
  process.exitCode = 1;
31
32
  return;
@@ -34,9 +35,9 @@ function runCheck(targetPath) {
34
35
  // 2. CLAUDE.md
35
36
  const claudeMd = path.join(claudeDir, 'CLAUDE.md');
36
37
  if (fs.existsSync(claudeMd)) {
37
- console.log(` ${c.green}[OK]${c.reset} .claude/CLAUDE.md exists`);
38
+ console.log(` ${success('.claude/CLAUDE.md exists')}`);
38
39
  } else {
39
- console.log(` ${c.yellow}[WARN]${c.reset} .claude/CLAUDE.md not found`);
40
+ console.log(` ${warning('.claude/CLAUDE.md not found')}`);
40
41
  warnings++;
41
42
  }
42
43
 
@@ -49,10 +50,10 @@ function runCheck(targetPath) {
49
50
  totalCommands += countFiles(path.join(commandsDir, ns), '.md');
50
51
  }
51
52
  console.log(
52
- ` ${c.green}[OK]${c.reset} commands/ — ${totalCommands} commands in ${namespaces.length} namespace(s): ${c.cyan}${namespaces.join(', ')}${c.reset}`
53
+ ` ${success(`commands/ — ${totalCommands} commands in ${namespaces.length} namespace(s): ${c.cyan}${namespaces.join(', ')}${c.reset}`)}`
53
54
  );
54
55
  } else {
55
- console.log(` ${c.yellow}[WARN]${c.reset} commands/ — no namespaces found`);
56
+ console.log(` ${warning('commands/ — no namespaces found')}`);
56
57
  warnings++;
57
58
  }
58
59
 
@@ -105,9 +106,9 @@ function runCheck(targetPath) {
105
106
  // Summary
106
107
  console.log('');
107
108
  if (warnings === 0) {
108
- console.log(`${c.green}Installation looks good!${c.reset}\n`);
109
+ console.log(`${success('Installation looks good!')}\n`);
109
110
  } else {
110
- console.log(`${c.yellow}${warnings} warning(s) — some components may be missing.${c.reset}\n`);
111
+ console.log(`${warning(`${warnings} warning(s) — some components may be missing.`)}\n`);
111
112
  }
112
113
  }
113
114
 
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Accessible CLI symbols and color utilities.
3
+ * Provides standard symbols for success/error/warning/info with NO_COLOR support.
4
+ *
5
+ * Follows no-color.org standard: respects NO_COLOR env var and TTY detection.
6
+ * Symbols are ALWAYS shown even when colors are disabled, ensuring accessibility.
7
+ *
8
+ * @module cli/lib/symbols
9
+ * @see https://no-color.org/
10
+ */
11
+
12
+ import c from './colors.js';
13
+
14
+ /**
15
+ * Standard symbols for CLI output.
16
+ * These are ALWAYS visible, regardless of color support.
17
+ * @type {Object<string, string>}
18
+ */
19
+ export const symbols = {
20
+ success: '✓',
21
+ error: '✗',
22
+ warning: '⚠',
23
+ info: 'ℹ',
24
+ };
25
+
26
+ /**
27
+ * Determine if color output should be used.
28
+ * Respects NO_COLOR environment variable and TTY detection.
29
+ *
30
+ * @returns {boolean} True if colors should be used
31
+ */
32
+ export function useColor() {
33
+ // NO_COLOR takes precedence (no-color.org standard)
34
+ if (process.env.NO_COLOR !== undefined) {
35
+ return false;
36
+ }
37
+
38
+ // Check if output is a TTY
39
+ if (!process.stdout.isTTY) {
40
+ return false;
41
+ }
42
+
43
+ return true;
44
+ }
45
+
46
+ /**
47
+ * Format a success message with symbol and optional color.
48
+ * @param {string} message - Message to format
49
+ * @returns {string} Formatted message
50
+ */
51
+ export function success(message) {
52
+ const color = useColor();
53
+ const prefix = color ? `${c.green}${symbols.success}${c.reset}` : symbols.success;
54
+ return `${prefix} ${message}`;
55
+ }
56
+
57
+ /**
58
+ * Format an error message with symbol and optional color.
59
+ * @param {string} message - Message to format
60
+ * @returns {string} Formatted message
61
+ */
62
+ export function error(message) {
63
+ const color = useColor();
64
+ const prefix = color ? `${c.red}${symbols.error}${c.reset}` : symbols.error;
65
+ return `${prefix} ${message}`;
66
+ }
67
+
68
+ /**
69
+ * Format a warning message with symbol and optional color.
70
+ * @param {string} message - Message to format
71
+ * @returns {string} Formatted message
72
+ */
73
+ export function warning(message) {
74
+ const color = useColor();
75
+ const prefix = color ? `${c.yellow}${symbols.warning}${c.reset}` : symbols.warning;
76
+ return `${prefix} ${message}`;
77
+ }
78
+
79
+ /**
80
+ * Format an info message with symbol and optional color.
81
+ * @param {string} message - Message to format
82
+ * @returns {string} Formatted message
83
+ */
84
+ export function info(message) {
85
+ const color = useColor();
86
+ const prefix = color ? `${c.cyan}${symbols.info}${c.reset}` : symbols.info;
87
+ return `${prefix} ${message}`;
88
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-bearded-bear/claude-craft",
3
- "version": "8.1.0",
3
+ "version": "8.2.0",
4
4
  "description": "A comprehensive framework for AI-assisted development with Claude Code. Install standardized rules, agents, and commands for your projects.",
5
5
  "type": "module",
6
6
  "main": "cli/index.js",
@@ -26,7 +26,10 @@
26
26
  "vale:check": "vale docs/ .claude/CLAUDE.md README.md CHANGELOG.md",
27
27
  "vale:sync": "vale sync",
28
28
  "commitlint": "commitlint --edit",
29
- "prepublishOnly": "node -e \"import{readFileSync}from'node:fs';const p=JSON.parse(readFileSync('./package.json','utf8'));if(!/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/i.test(p.version)){console.error('Invalid version format');process.exit(1)}\""
29
+ "prepublishOnly": "node -e \"import{readFileSync}from'node:fs';const p=JSON.parse(readFileSync('./package.json','utf8'));if(!/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/i.test(p.version)){console.error('Invalid version format');process.exit(1)}\"",
30
+ "mutation": "stryker run",
31
+ "mutation:ci": "stryker run --reporters progress,json",
32
+ "test:e2e:tools": "cd tests/e2e/tools && docker compose -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from e2e-runner"
30
33
  },
31
34
  "keywords": [
32
35
  "claude",
@@ -56,17 +59,17 @@
56
59
  "node": ">=20.0.0"
57
60
  },
58
61
  "devDependencies": {
59
- "@commitlint/cli": "^20.0.0",
60
- "@commitlint/config-conventional": "^20.0.0",
62
+ "@commitlint/cli": "20.0.0",
63
+ "@commitlint/config-conventional": "20.0.0",
61
64
  "@eslint/js": "^10.0.0",
62
65
  "@sveltejs/vite-plugin-svelte": "^5.1.1",
63
- "@vitest/coverage-v8": "^4.0.0",
64
- "eslint": "^10.0.0",
66
+ "@vitest/coverage-v8": "4.0.0",
67
+ "eslint": "10.0.0",
65
68
  "eslint-config-prettier": "^10.0.0",
66
- "prettier": "^3.4.0",
69
+ "prettier": "3.4.0",
67
70
  "svelte": "^5.55.4",
68
71
  "vite": "^6.4.2",
69
- "vitest": "^4.0.0"
72
+ "vitest": "4.0.0"
70
73
  },
71
74
  "files": [
72
75
  "bundles/",