@the-bearded-bear/claude-craft 7.1.0 → 7.2.0-next.084f329
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.
|
@@ -30,14 +30,9 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
30
30
|
DEFAULT_CONFIG="${SCRIPT_DIR}/../../claude-projects.yaml"
|
|
31
31
|
INSTALL_SCRIPT="${SCRIPT_DIR}/install-from-config.sh"
|
|
32
32
|
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
YELLOW='\033[1;33m'
|
|
37
|
-
BLUE='\033[0;34m'
|
|
38
|
-
CYAN='\033[0;36m'
|
|
39
|
-
BOLD='\033[1m'
|
|
40
|
-
NC='\033[0m'
|
|
33
|
+
# Shared UI (colors + logging)
|
|
34
|
+
# shellcheck source=lib/shell-ui.sh
|
|
35
|
+
source "${SCRIPT_DIR}/lib/shell-ui.sh"
|
|
41
36
|
|
|
42
37
|
# Variables globales
|
|
43
38
|
config_file=""
|
|
@@ -53,17 +48,13 @@ declare -a issues_list=()
|
|
|
53
48
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
54
49
|
# Fonctions utilitaires
|
|
55
50
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
56
|
-
log_ok() {
|
|
57
|
-
log_warn() {
|
|
58
|
-
log_error() {
|
|
59
|
-
log_info() {
|
|
51
|
+
log_ok() { ui_check_ok "$@"; }
|
|
52
|
+
log_warn() { ui_check_warn "$@"; }
|
|
53
|
+
log_error() { ui_check_fail "$@"; }
|
|
54
|
+
log_info() { ui_check_info "$@"; }
|
|
60
55
|
|
|
61
56
|
print_header() {
|
|
62
|
-
|
|
63
|
-
echo -e "${BOLD}╔════════════════════════════════════════════════════════════╗${NC}"
|
|
64
|
-
echo -e "${BOLD}║${NC} 🔍 $1"
|
|
65
|
-
echo -e "${BOLD}╚════════════════════════════════════════════════════════════╝${NC}"
|
|
66
|
-
echo ""
|
|
57
|
+
ui_header "🔍 $1"
|
|
67
58
|
}
|
|
68
59
|
|
|
69
60
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -43,13 +43,9 @@ I18N_DIR="$(dirname "$SCRIPT_DIR")/i18n"
|
|
|
43
43
|
source "${SCRIPT_DIR}/tcl-common.sh"
|
|
44
44
|
VERSION=$(get_claude_craft_version)
|
|
45
45
|
|
|
46
|
-
#
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
YELLOW='\033[1;33m'
|
|
50
|
-
BLUE='\033[0;34m'
|
|
51
|
-
CYAN='\033[0;36m'
|
|
52
|
-
NC='\033[0m' # No Color
|
|
46
|
+
# Shared UI (colors + logging)
|
|
47
|
+
# shellcheck source=lib/shell-ui.sh
|
|
48
|
+
source "${SCRIPT_DIR}/lib/shell-ui.sh"
|
|
53
49
|
|
|
54
50
|
# Default options
|
|
55
51
|
action="install"
|
|
@@ -143,31 +139,14 @@ errors=0
|
|
|
143
139
|
#-------------------------------------------------------------------------------
|
|
144
140
|
# Utility functions
|
|
145
141
|
#-------------------------------------------------------------------------------
|
|
146
|
-
log_info() {
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
echo -e "${GREEN}[${MSG_SUCCESS}]${NC} $1"
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
log_warning() {
|
|
155
|
-
echo -e "${YELLOW}[${MSG_WARNING}]${NC} $1"
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
log_error() {
|
|
159
|
-
echo -e "${RED}[${MSG_ERROR}]${NC} $1" >&2
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
log_dry_run() {
|
|
163
|
-
echo -e "${CYAN}[${MSG_DRY_RUN}]${NC} $1"
|
|
164
|
-
}
|
|
142
|
+
log_info() { ui_info "$@"; }
|
|
143
|
+
log_success() { ui_success "$@"; }
|
|
144
|
+
log_warning() { ui_warning "$@"; }
|
|
145
|
+
log_error() { ui_error "$@"; }
|
|
146
|
+
log_dry_run() { ui_dry_run "$@"; }
|
|
165
147
|
|
|
166
148
|
print_header() {
|
|
167
|
-
|
|
168
|
-
echo -e "${CYAN}╔════════════════════════════════════════════════════════════╗${NC}"
|
|
169
|
-
echo -e "${CYAN}║${NC} 📦 ${MSG_HEADER_COMMON} - v${VERSION} ${CYAN}║${NC}"
|
|
170
|
-
echo -e "${CYAN}╚════════════════════════════════════════════════════════════╝${NC}"
|
|
149
|
+
ui_box "📦 ${MSG_HEADER_COMMON} - v${VERSION}" "$CYAN"
|
|
171
150
|
echo ""
|
|
172
151
|
}
|
|
173
152
|
|
|
@@ -27,12 +27,9 @@ _CALLER_SCRIPT="$(basename "${BASH_SOURCE[1]}")"
|
|
|
27
27
|
# --- Default lang ---
|
|
28
28
|
lang="en"
|
|
29
29
|
|
|
30
|
-
# ---
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
YELLOW='\033[1;33m'
|
|
34
|
-
BLUE='\033[0;34m'
|
|
35
|
-
NC='\033[0m'
|
|
30
|
+
# --- Shared UI (colors + logging) ---
|
|
31
|
+
# shellcheck source=shell-ui.sh
|
|
32
|
+
source "$(dirname "${BASH_SOURCE[0]}")/shell-ui.sh"
|
|
36
33
|
|
|
37
34
|
# ============================================================================
|
|
38
35
|
# LOAD I18N MESSAGES
|
|
@@ -73,13 +70,13 @@ EOF
|
|
|
73
70
|
}
|
|
74
71
|
|
|
75
72
|
# ============================================================================
|
|
76
|
-
# LOGGING
|
|
73
|
+
# LOGGING (backward-compat aliases → shell-ui.sh)
|
|
77
74
|
# ============================================================================
|
|
78
|
-
log_info() {
|
|
79
|
-
log_success() {
|
|
80
|
-
log_warning() {
|
|
81
|
-
log_error() {
|
|
82
|
-
log_dry_run() {
|
|
75
|
+
log_info() { ui_info "$@"; }
|
|
76
|
+
log_success() { ui_success "$@"; }
|
|
77
|
+
log_warning() { ui_warning "$@"; }
|
|
78
|
+
log_error() { ui_error "$@"; }
|
|
79
|
+
log_dry_run() { ui_dry_run "$@"; }
|
|
83
80
|
|
|
84
81
|
# ============================================================================
|
|
85
82
|
# SOURCE RESOLUTION
|
package/cli/lib/constants.js
CHANGED
|
@@ -3,20 +3,12 @@
|
|
|
3
3
|
* @module cli/lib/constants
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
angular: { name: 'Angular', desc: 'Frontend TS with Signals, Standalone components, RxJS' },
|
|
13
|
-
csharp: { name: 'C# / .NET', desc: 'Backend with Clean Architecture, CQRS, MediatR, EF Core' },
|
|
14
|
-
laravel: { name: 'Laravel', desc: 'PHP backend with Actions, Pest PHP, Sanctum' },
|
|
15
|
-
vuejs: { name: 'Vue.js', desc: 'Frontend JS/TS with Composition API, Pinia, Vitest' },
|
|
16
|
-
php: { name: 'PHP', desc: 'Backend PHP 8.5 with PSR-12, PHPStan, Pest PHP' },
|
|
17
|
-
python: { name: 'Python', desc: 'Backend with FastAPI, async/await, Type hints' },
|
|
18
|
-
docker: { name: 'Docker', desc: 'Dockerfile, Compose, CI/CD, Debugging' },
|
|
19
|
-
};
|
|
6
|
+
import { TECH_REGISTRY } from './tech-registry.js';
|
|
7
|
+
|
|
8
|
+
/** Available technologies with display name and description (derived from tech-registry.js SSOT). */
|
|
9
|
+
const TECHNOLOGIES = Object.fromEntries(
|
|
10
|
+
Object.entries(TECH_REGISTRY).map(([key, entry]) => [key, { name: entry.displayName, desc: entry.desc }])
|
|
11
|
+
);
|
|
20
12
|
|
|
21
13
|
/** Available UI languages. */
|
|
22
14
|
const LANGUAGES = {
|
|
@@ -15,6 +15,7 @@ import path from 'path';
|
|
|
15
15
|
* @property {boolean} hasPubspec - Whether pubspec.yaml exists
|
|
16
16
|
* @property {boolean} hasRequirements - Whether requirements.txt or pyproject.toml exists
|
|
17
17
|
* @property {boolean} hasDockerfile - Whether Dockerfile or docker-compose.yml exists
|
|
18
|
+
* @property {boolean} hasCsproj - Whether *.csproj or *.sln files exist
|
|
18
19
|
* @property {string[]} suggestedTechs - Technology identifiers detected from project files
|
|
19
20
|
* @property {string} complexity - Estimated complexity (quick, standard, enterprise)
|
|
20
21
|
*/
|
|
@@ -37,6 +38,7 @@ function detectProject(targetPath, options = {}) {
|
|
|
37
38
|
hasPubspec: false,
|
|
38
39
|
hasRequirements: false,
|
|
39
40
|
hasDockerfile: false,
|
|
41
|
+
hasCsproj: false,
|
|
40
42
|
suggestedTechs: [],
|
|
41
43
|
complexity: 'standard',
|
|
42
44
|
};
|
|
@@ -55,11 +57,36 @@ function detectProject(targetPath, options = {}) {
|
|
|
55
57
|
if (debug) console.error(`Detection error (.git): ${e.message}`);
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
// Detect
|
|
60
|
+
// Detect C# / .NET (*.csproj or *.sln)
|
|
61
|
+
try {
|
|
62
|
+
const files = fs.readdirSync(targetPath);
|
|
63
|
+
if (files.some((f) => f.endsWith('.csproj') || f.endsWith('.sln'))) {
|
|
64
|
+
detected.hasCsproj = true;
|
|
65
|
+
detected.suggestedTechs.push('csharp');
|
|
66
|
+
}
|
|
67
|
+
} catch (e) {
|
|
68
|
+
if (debug) console.error(`Detection error (csproj): ${e.message}`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Detect PHP frameworks via composer.json
|
|
59
72
|
try {
|
|
60
73
|
if (fs.existsSync(path.join(targetPath, 'composer.json'))) {
|
|
61
74
|
detected.hasComposer = true;
|
|
62
|
-
|
|
75
|
+
const composer = JSON.parse(fs.readFileSync(path.join(targetPath, 'composer.json'), 'utf8'));
|
|
76
|
+
const require = composer.require || {};
|
|
77
|
+
const requireDev = composer['require-dev'] || {};
|
|
78
|
+
const allDeps = { ...require, ...requireDev };
|
|
79
|
+
|
|
80
|
+
const hasSymfony = Object.keys(allDeps).some((dep) => dep.startsWith('symfony/'));
|
|
81
|
+
const hasLaravel = 'laravel/framework' in allDeps;
|
|
82
|
+
|
|
83
|
+
if (hasLaravel) {
|
|
84
|
+
detected.suggestedTechs.push('laravel');
|
|
85
|
+
} else if (hasSymfony) {
|
|
86
|
+
detected.suggestedTechs.push('symfony');
|
|
87
|
+
} else {
|
|
88
|
+
detected.suggestedTechs.push('php');
|
|
89
|
+
}
|
|
63
90
|
}
|
|
64
91
|
} catch (e) {
|
|
65
92
|
if (debug) console.error(`Detection error (composer): ${e.message}`);
|
|
@@ -75,17 +102,23 @@ function detectProject(targetPath, options = {}) {
|
|
|
75
102
|
if (debug) console.error(`Detection error (pubspec): ${e.message}`);
|
|
76
103
|
}
|
|
77
104
|
|
|
78
|
-
// Detect
|
|
105
|
+
// Detect JS frameworks via package.json (Angular, Vue.js, React, React Native)
|
|
79
106
|
try {
|
|
80
107
|
if (fs.existsSync(path.join(targetPath, 'package.json'))) {
|
|
81
108
|
detected.hasPackageJson = true;
|
|
82
109
|
const pkg = JSON.parse(fs.readFileSync(path.join(targetPath, 'package.json'), 'utf8'));
|
|
83
|
-
|
|
84
|
-
|
|
110
|
+
const allDeps = { ...(pkg.dependencies || {}), ...(pkg.devDependencies || {}) };
|
|
111
|
+
|
|
112
|
+
if ('@angular/core' in allDeps) {
|
|
113
|
+
detected.suggestedTechs.push('angular');
|
|
114
|
+
} else if ('react' in allDeps) {
|
|
115
|
+
if ('react-native' in allDeps) {
|
|
85
116
|
detected.suggestedTechs.push('reactnative');
|
|
86
117
|
} else {
|
|
87
118
|
detected.suggestedTechs.push('react');
|
|
88
119
|
}
|
|
120
|
+
} else if ('vue' in allDeps) {
|
|
121
|
+
detected.suggestedTechs.push('vuejs');
|
|
89
122
|
}
|
|
90
123
|
}
|
|
91
124
|
} catch (e) {
|
package/cli/lib/help.js
CHANGED
|
@@ -6,6 +6,26 @@
|
|
|
6
6
|
import c from './colors.js';
|
|
7
7
|
import { TECHNOLOGIES, LANGUAGES } from './constants.js';
|
|
8
8
|
|
|
9
|
+
/** Available namespaces with short descriptions. */
|
|
10
|
+
const NAMESPACES = [
|
|
11
|
+
{ prefix: 'common', desc: 'Shared tools: pre-commit, standup, changelog, CI setup' },
|
|
12
|
+
{ prefix: 'workflow', desc: 'Development lifecycle: init, analyze, plan, design, implement' },
|
|
13
|
+
{ prefix: 'team', desc: 'Agent Teams: parallel audit, sprint, security, delivery' },
|
|
14
|
+
{ prefix: 'qa', desc: 'Quality assurance: recette, fix, regression, TDD' },
|
|
15
|
+
{ prefix: 'uiux', desc: 'UI/UX: audit, a11y, component-spec, design-tokens' },
|
|
16
|
+
{ prefix: 'sprint', desc: 'Sprint management: next-story, transition, status, dev' },
|
|
17
|
+
{ prefix: 'gate', desc: 'Quality gates: validate PRD, story, backlog, techspec' },
|
|
18
|
+
{ prefix: 'project', desc: 'Project execution: run-sprint, run-epic, batch-status' },
|
|
19
|
+
{ prefix: 'docker', desc: 'Docker: compose-setup, architecture, debug, optimize' },
|
|
20
|
+
{ prefix: 'csharp', desc: 'C#/.NET: compliance, architecture, code-quality, security' },
|
|
21
|
+
{ prefix: 'symfony', desc: 'Symfony: architecture, compliance, CRUD, security' },
|
|
22
|
+
{ prefix: 'flutter', desc: 'Flutter: architecture, generate-feature, performance' },
|
|
23
|
+
{ prefix: 'react', desc: 'React: generate-component, architecture, accessibility' },
|
|
24
|
+
{ prefix: 'angular', desc: 'Angular: architecture, compliance, testing' },
|
|
25
|
+
{ prefix: 'laravel', desc: 'Laravel: architecture, compliance, testing' },
|
|
26
|
+
{ prefix: 'vuejs', desc: 'Vue.js: architecture, compliance, testing' },
|
|
27
|
+
];
|
|
28
|
+
|
|
9
29
|
/**
|
|
10
30
|
* Print the CLI usage help with commands, options, and examples.
|
|
11
31
|
*/
|
|
@@ -29,6 +49,11 @@ ${c.bold}Options:${c.reset}
|
|
|
29
49
|
${c.yellow}--standard${c.reset} Standard track (features)
|
|
30
50
|
${c.yellow}--enterprise${c.reset} Enterprise track (platforms)
|
|
31
51
|
|
|
52
|
+
${c.bold}Available Namespaces:${c.reset}
|
|
53
|
+
${NAMESPACES.map((ns) => ` ${c.cyan}/${ns.prefix}:*${c.reset}`.padEnd(30 + c.cyan.length + c.reset.length) + `${ns.desc}`).join('\n')}
|
|
54
|
+
|
|
55
|
+
${c.dim}Example: /common:pre-commit-check, /workflow:init, /team:sprint${c.reset}
|
|
56
|
+
|
|
32
57
|
${c.bold}Examples:${c.reset}
|
|
33
58
|
${c.dim}# Interactive installation${c.reset}
|
|
34
59
|
npx @the-bearded-bear/claude-craft install
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@the-bearded-bear/claude-craft",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.2.0-next.084f329",
|
|
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",
|