claudeos-core 1.0.3 → 1.0.4
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/package.json +75 -75
- package/plan-installer/index.js +29 -11
package/package.json
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "claudeos-core",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Auto-generate Claude Code documentation from your actual source code — Standards, Rules, Skills, and Guides tailored to your project",
|
|
5
|
-
"main": "health-checker/index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"claudeos-core": "bin/cli.js"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"bin/",
|
|
11
|
-
"content-validator/",
|
|
12
|
-
"health-checker/",
|
|
13
|
-
"import-linter/",
|
|
14
|
-
"manifest-generator/",
|
|
15
|
-
"pass-json-validator/",
|
|
16
|
-
"pass-prompts/",
|
|
17
|
-
"plan-installer/",
|
|
18
|
-
"plan-validator/",
|
|
19
|
-
"sync-checker/",
|
|
20
|
-
"bootstrap.sh",
|
|
21
|
-
"README.md",
|
|
22
|
-
"README.ko.md",
|
|
23
|
-
"LICENSE",
|
|
24
|
-
"CHANGELOG.md",
|
|
25
|
-
"CONTRIBUTING.md",
|
|
26
|
-
"README.zh-CN.md",
|
|
27
|
-
"README.ja.md",
|
|
28
|
-
"README.es.md",
|
|
29
|
-
"README.vi.md",
|
|
30
|
-
"README.hi.md",
|
|
31
|
-
"README.ru.md",
|
|
32
|
-
"README.fr.md",
|
|
33
|
-
"README.de.md"
|
|
34
|
-
],
|
|
35
|
-
"scripts": {
|
|
36
|
-
"init": "node bin/cli.js init",
|
|
37
|
-
"health": "node bin/cli.js health",
|
|
38
|
-
"validate": "node bin/cli.js validate",
|
|
39
|
-
"refresh": "node bin/cli.js refresh",
|
|
40
|
-
"restore": "node bin/cli.js restore",
|
|
41
|
-
"test": "node health-checker/index.js"
|
|
42
|
-
},
|
|
43
|
-
"keywords": [
|
|
44
|
-
"claude-code",
|
|
45
|
-
"automation",
|
|
46
|
-
"code-analysis",
|
|
47
|
-
"CLAUDE.md",
|
|
48
|
-
"standards",
|
|
49
|
-
"rules",
|
|
50
|
-
"skills",
|
|
51
|
-
"scaffolding",
|
|
52
|
-
"spring-boot",
|
|
53
|
-
"nextjs",
|
|
54
|
-
"express",
|
|
55
|
-
"django",
|
|
56
|
-
"fastapi"
|
|
57
|
-
],
|
|
58
|
-
"author": "claudeos-core <claudeoscore@gmail.com> (https://github.com/claudeos-core)",
|
|
59
|
-
"license": "ISC",
|
|
60
|
-
"repository": {
|
|
61
|
-
"type": "git",
|
|
62
|
-
"url": "git+https://github.com/claudeos-core/claudeos-core.git"
|
|
63
|
-
},
|
|
64
|
-
"homepage": "https://github.com/claudeos-core/claudeos-core#readme",
|
|
65
|
-
"bugs": {
|
|
66
|
-
"url": "https://github.com/claudeos-core/claudeos-core/issues"
|
|
67
|
-
},
|
|
68
|
-
"engines": {
|
|
69
|
-
"node": ">=18.0.0"
|
|
70
|
-
},
|
|
71
|
-
"dependencies": {
|
|
72
|
-
"glob": "^13.0.6",
|
|
73
|
-
"gray-matter": "^4.0.3"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "claudeos-core",
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"description": "Auto-generate Claude Code documentation from your actual source code — Standards, Rules, Skills, and Guides tailored to your project",
|
|
5
|
+
"main": "health-checker/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"claudeos-core": "bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin/",
|
|
11
|
+
"content-validator/",
|
|
12
|
+
"health-checker/",
|
|
13
|
+
"import-linter/",
|
|
14
|
+
"manifest-generator/",
|
|
15
|
+
"pass-json-validator/",
|
|
16
|
+
"pass-prompts/",
|
|
17
|
+
"plan-installer/",
|
|
18
|
+
"plan-validator/",
|
|
19
|
+
"sync-checker/",
|
|
20
|
+
"bootstrap.sh",
|
|
21
|
+
"README.md",
|
|
22
|
+
"README.ko.md",
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"CHANGELOG.md",
|
|
25
|
+
"CONTRIBUTING.md",
|
|
26
|
+
"README.zh-CN.md",
|
|
27
|
+
"README.ja.md",
|
|
28
|
+
"README.es.md",
|
|
29
|
+
"README.vi.md",
|
|
30
|
+
"README.hi.md",
|
|
31
|
+
"README.ru.md",
|
|
32
|
+
"README.fr.md",
|
|
33
|
+
"README.de.md"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"init": "node bin/cli.js init",
|
|
37
|
+
"health": "node bin/cli.js health",
|
|
38
|
+
"validate": "node bin/cli.js validate",
|
|
39
|
+
"refresh": "node bin/cli.js refresh",
|
|
40
|
+
"restore": "node bin/cli.js restore",
|
|
41
|
+
"test": "node health-checker/index.js"
|
|
42
|
+
},
|
|
43
|
+
"keywords": [
|
|
44
|
+
"claude-code",
|
|
45
|
+
"automation",
|
|
46
|
+
"code-analysis",
|
|
47
|
+
"CLAUDE.md",
|
|
48
|
+
"standards",
|
|
49
|
+
"rules",
|
|
50
|
+
"skills",
|
|
51
|
+
"scaffolding",
|
|
52
|
+
"spring-boot",
|
|
53
|
+
"nextjs",
|
|
54
|
+
"express",
|
|
55
|
+
"django",
|
|
56
|
+
"fastapi"
|
|
57
|
+
],
|
|
58
|
+
"author": "claudeos-core <claudeoscore@gmail.com> (https://github.com/claudeos-core)",
|
|
59
|
+
"license": "ISC",
|
|
60
|
+
"repository": {
|
|
61
|
+
"type": "git",
|
|
62
|
+
"url": "git+https://github.com/claudeos-core/claudeos-core.git"
|
|
63
|
+
},
|
|
64
|
+
"homepage": "https://github.com/claudeos-core/claudeos-core#readme",
|
|
65
|
+
"bugs": {
|
|
66
|
+
"url": "https://github.com/claudeos-core/claudeos-core/issues"
|
|
67
|
+
},
|
|
68
|
+
"engines": {
|
|
69
|
+
"node": ">=18.0.0"
|
|
70
|
+
},
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"glob": "^13.0.6",
|
|
73
|
+
"gray-matter": "^4.0.3"
|
|
74
|
+
}
|
|
75
|
+
}
|
package/plan-installer/index.js
CHANGED
|
@@ -295,6 +295,24 @@ async function scanStructure(stack) {
|
|
|
295
295
|
if (Object.keys(domainMap).length > 0) detectedPattern = "C";
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
+
// ── 보충 스캔: controller 없는 서비스 도메인 감지 ──
|
|
299
|
+
// core/delivery 처럼 service/mapper만 있고 controller가 없는 도메인 포착
|
|
300
|
+
if (detectedPattern === "B" || detectedPattern === "D" || !detectedPattern) {
|
|
301
|
+
const serviceDirs = await glob("src/main/java/**/*/service/*.java", { cwd: ROOT });
|
|
302
|
+
const mapperDirs = await glob("src/main/java/**/*/{mapper,repository}/*.java", { cwd: ROOT });
|
|
303
|
+
const allServiceFiles = [...serviceDirs, ...mapperDirs];
|
|
304
|
+
const skipDomains = ["common", "config", "util", "utils", "base", "core", "shared", "global", "framework", "infra"];
|
|
305
|
+
for (const f of allServiceFiles) {
|
|
306
|
+
const m = f.match(/\/([^/]+)\/(service|mapper|repository)\/[^/]+\.java$/);
|
|
307
|
+
if (m) {
|
|
308
|
+
const d = m[1];
|
|
309
|
+
if (!domainMap[d] && !skipDomains.includes(d)) {
|
|
310
|
+
domainMap[d] = { controllers: 0, services: 0, mappers: 0, dtos: 0, xmlMappers: 0, pattern: detectedPattern || "B" };
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
298
316
|
// 각 도메인의 service/mapper/dto/xml 파일 스캔
|
|
299
317
|
for (const d of Object.keys(domainMap)) {
|
|
300
318
|
const p = domainMap[d].pattern;
|
|
@@ -377,17 +395,6 @@ async function scanStructure(stack) {
|
|
|
377
395
|
}
|
|
378
396
|
}
|
|
379
397
|
|
|
380
|
-
// App Router RSC/Client 전체 통계 (project-analysis.json용)
|
|
381
|
-
if (stack.frontend === "nextjs") {
|
|
382
|
-
const allClientFiles = await glob("{app,src/app}/**/client.{tsx,ts,jsx,js}", { cwd: ROOT });
|
|
383
|
-
const allPageFiles = await glob("{app,src/app}/**/page.{tsx,ts,jsx,js}", { cwd: ROOT });
|
|
384
|
-
const allLayoutFiles = await glob("{app,src/app}/**/layout.{tsx,ts,jsx,js}", { cwd: ROOT });
|
|
385
|
-
frontend.clientComponents = allClientFiles.length;
|
|
386
|
-
frontend.serverPages = allPageFiles.length;
|
|
387
|
-
frontend.layouts = allLayoutFiles.length;
|
|
388
|
-
frontend.rscPattern = allClientFiles.length > 0;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
398
|
// FSD (Feature-Sliced Design): features/*, widgets/*, entities/*
|
|
392
399
|
const fsdLayers = ["features", "widgets", "entities"];
|
|
393
400
|
for (const layer of fsdLayers) {
|
|
@@ -463,6 +470,17 @@ async function scanStructure(stack) {
|
|
|
463
470
|
frontend.hooks = (await glob("{src/,}**/hooks/**/*.{ts,js}", { cwd: ROOT, ignore: ["**/node_modules/**"] })).length;
|
|
464
471
|
}
|
|
465
472
|
|
|
473
|
+
// App Router RSC/Client 전체 통계 (project-analysis.json용)
|
|
474
|
+
if (stack.frontend === "nextjs") {
|
|
475
|
+
const allClientFiles = await glob("{app,src/app}/**/client.{tsx,ts,jsx,js}", { cwd: ROOT });
|
|
476
|
+
const allPageFiles = await glob("{app,src/app}/**/page.{tsx,ts,jsx,js}", { cwd: ROOT });
|
|
477
|
+
const allLayoutFiles = await glob("{app,src/app}/**/layout.{tsx,ts,jsx,js}", { cwd: ROOT });
|
|
478
|
+
frontend.clientComponents = allClientFiles.length;
|
|
479
|
+
frontend.serverPages = allPageFiles.length;
|
|
480
|
+
frontend.layouts = allLayoutFiles.length;
|
|
481
|
+
frontend.rscPattern = allClientFiles.length > 0;
|
|
482
|
+
}
|
|
483
|
+
|
|
466
484
|
// 전체 도메인 = 백엔드 + 프론트엔드 (type 태그 포함)
|
|
467
485
|
const allDomains = [
|
|
468
486
|
...backendDomains.sort((a, b) => b.totalFiles - a.totalFiles),
|