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 CHANGED
@@ -1,75 +1,75 @@
1
- {
2
- "name": "claudeos-core",
3
- "version": "1.0.3",
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
+ }
@@ -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),