claudeos-core 1.5.0 → 1.6.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/CHANGELOG.md +38 -0
- package/README.de.md +54 -27
- package/README.es.md +54 -26
- package/README.fr.md +54 -26
- package/README.hi.md +54 -27
- package/README.ja.md +53 -26
- package/README.ko.md +56 -29
- package/README.md +53 -26
- package/README.ru.md +54 -27
- package/README.vi.md +54 -27
- package/README.zh-CN.md +54 -27
- package/bin/cli.js +6 -2
- package/bin/commands/init.js +48 -46
- package/bin/lib/cli-utils.js +6 -10
- package/bin/lib/lang-selector.js +10 -8
- package/bin/lib/resume-selector.js +10 -8
- package/content-validator/index.js +7 -12
- package/health-checker/index.js +7 -17
- package/lib/plan-parser.js +149 -0
- package/lib/safe-fs.js +2 -2
- package/lib/stale-report.js +36 -0
- package/manifest-generator/index.js +13 -36
- package/package.json +87 -87
- package/pass-json-validator/index.js +7 -12
- package/pass-prompts/templates/node-nestjs/pass1.md +132 -0
- package/pass-prompts/templates/node-nestjs/pass2.md +97 -0
- package/pass-prompts/templates/node-nestjs/pass3.md +121 -0
- package/pass-prompts/templates/vue-nuxt/pass1.md +119 -0
- package/pass-prompts/templates/vue-nuxt/pass2.md +83 -0
- package/pass-prompts/templates/vue-nuxt/pass3.md +100 -0
- package/plan-installer/domain-grouper.js +5 -2
- package/plan-installer/prompt-generator.js +1 -4
- package/plan-installer/scanners/scan-frontend.js +14 -7
- package/plan-installer/scanners/scan-java.js +18 -13
- package/plan-installer/scanners/scan-kotlin.js +47 -23
- package/plan-installer/scanners/scan-node.js +16 -2
- package/plan-installer/stack-detector.js +42 -1
- package/plan-validator/index.js +11 -121
- package/sync-checker/index.js +6 -19
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
Read all pass1-*.json files from the claudeos-core/generated/ directory and
|
|
2
|
+
merge all domain analysis results into a single unified report.
|
|
3
|
+
|
|
4
|
+
Merge items:
|
|
5
|
+
|
|
6
|
+
1. Universal Patterns (shared by 100% of all domains)
|
|
7
|
+
- Module structure (@Module imports, providers, exports conventions)
|
|
8
|
+
- Controller style (@Controller, decorators, parameter handling)
|
|
9
|
+
- **Response flow**: Which layer wraps the response? (Controller vs Service/UseCase)
|
|
10
|
+
Record the definitive answer. If an orchestration layer exists, describe it.
|
|
11
|
+
- Service dependency injection strategy (@Injectable, custom providers)
|
|
12
|
+
- Data access patterns (ORM, Repository injection)
|
|
13
|
+
- DTO/validation rules (class-validator, class-transformer, mapped types)
|
|
14
|
+
- Error handling patterns (ExceptionFilter, HttpException hierarchy)
|
|
15
|
+
- Guard/Interceptor/Pipe execution order
|
|
16
|
+
|
|
17
|
+
2. Majority Patterns (shared by 50%+ of domains)
|
|
18
|
+
- Specify which domains share them
|
|
19
|
+
|
|
20
|
+
3. Domain-Specific Patterns (unique to a single domain)
|
|
21
|
+
- File upload: which domain
|
|
22
|
+
- WebSocket: which domain
|
|
23
|
+
- Queue/job processing: which domain
|
|
24
|
+
- External API integration: which domain
|
|
25
|
+
- Caching: which domain
|
|
26
|
+
- CQRS: which domain
|
|
27
|
+
- Microservices: which domain
|
|
28
|
+
- Scheduling: which domain
|
|
29
|
+
|
|
30
|
+
4. Anti-pattern Summary
|
|
31
|
+
- Consolidate all inconsistencies found across domains
|
|
32
|
+
- Classify by severity (CRITICAL / HIGH / MEDIUM / LOW)
|
|
33
|
+
|
|
34
|
+
5. Naming Conventions Summary
|
|
35
|
+
- File/directory naming (kebab-case, camelCase, PascalCase)
|
|
36
|
+
- File entry pattern (index.ts vs module-named files — pick ONE that the project actually uses)
|
|
37
|
+
- DTO/type naming conventions
|
|
38
|
+
- Route URL patterns
|
|
39
|
+
- Module/package structure conventions
|
|
40
|
+
|
|
41
|
+
6. Common Types/Interfaces List
|
|
42
|
+
- Shared type definition files with EXACT import paths
|
|
43
|
+
- Utility functions with EXACT import paths
|
|
44
|
+
- Path aliases used in the project
|
|
45
|
+
- Custom decorators with EXACT names
|
|
46
|
+
- Environment variable types
|
|
47
|
+
- Constants/Enum management
|
|
48
|
+
|
|
49
|
+
7. Security/Authentication Patterns
|
|
50
|
+
- JWT strategy (PassportModule, JwtModule)
|
|
51
|
+
- Guard hierarchy (AuthGuard, RolesGuard, custom guards)
|
|
52
|
+
- CORS configuration
|
|
53
|
+
- Rate Limiting (@nestjs/throttler)
|
|
54
|
+
- Per-environment security settings
|
|
55
|
+
|
|
56
|
+
8. Database Patterns
|
|
57
|
+
- Table/collection naming conventions
|
|
58
|
+
- Migration strategy
|
|
59
|
+
- Seed data management
|
|
60
|
+
- Audit columns (createdAt, updatedAt, deletedAt)
|
|
61
|
+
- Soft delete patterns
|
|
62
|
+
- Index/constraints
|
|
63
|
+
|
|
64
|
+
9. Testing Strategy Summary
|
|
65
|
+
- Test coverage level
|
|
66
|
+
- Test classification system (unit/integration/E2E)
|
|
67
|
+
- Test.createTestingModule patterns
|
|
68
|
+
- Mocking strategy (overrideProvider, jest.mock)
|
|
69
|
+
- Test naming conventions
|
|
70
|
+
- DB test strategy
|
|
71
|
+
|
|
72
|
+
10. Logging/Monitoring Strategy
|
|
73
|
+
- Logger standard (NestJS Logger vs pino/winston)
|
|
74
|
+
- Log level policy
|
|
75
|
+
- Structured logging approach
|
|
76
|
+
- LoggingInterceptor patterns
|
|
77
|
+
|
|
78
|
+
11. Performance Patterns
|
|
79
|
+
- Caching strategy (@CacheKey, @CacheTTL, cache-manager)
|
|
80
|
+
- Query optimization status
|
|
81
|
+
- Async processing (Bull queues, scheduling)
|
|
82
|
+
- Connection pool configuration
|
|
83
|
+
|
|
84
|
+
12. Code Quality Tools
|
|
85
|
+
- Lint/Format tools (ESLint, Prettier, Biome)
|
|
86
|
+
- Pre-commit hooks (husky, lint-staged)
|
|
87
|
+
- CI integration status
|
|
88
|
+
|
|
89
|
+
13. NestJS Architecture Patterns
|
|
90
|
+
- Module organization (feature modules, shared modules, global modules)
|
|
91
|
+
- Dynamic modules (forRoot/forRootAsync, forFeature)
|
|
92
|
+
- Custom providers (useFactory, useClass, useValue, useExisting)
|
|
93
|
+
- Circular dependency resolution (forwardRef)
|
|
94
|
+
- Lifecycle hooks (OnModuleInit, OnModuleDestroy, OnApplicationBootstrap)
|
|
95
|
+
|
|
96
|
+
Do not generate code. Merge only.
|
|
97
|
+
Save results to claudeos-core/generated/pass2-merged.json.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
Read claudeos-core/generated/project-analysis.json and
|
|
2
|
+
claudeos-core/generated/pass2-merged.json, then
|
|
3
|
+
generate all ClaudeOS-Core files based on the analysis results.
|
|
4
|
+
|
|
5
|
+
Do not read the original source code again. Reference only the analysis results.
|
|
6
|
+
|
|
7
|
+
CRITICAL — Package Manager Consistency:
|
|
8
|
+
Check `stack.packageManager` in project-analysis.json (e.g., "pnpm", "yarn", "npm").
|
|
9
|
+
ALL generated files MUST use ONLY that detected package manager's commands.
|
|
10
|
+
For example, if packageManager is "pnpm": use `pnpm run build`, `pnpm run dev`, `pnpm install`, etc.
|
|
11
|
+
NEVER mix npm/yarn/pnpm commands. Also check `scripts` field in the project's package.json
|
|
12
|
+
for actual script names (e.g., "eslint" not "lint", "typecheck" not "tsc --noEmit").
|
|
13
|
+
|
|
14
|
+
CRITICAL — Cross-file Consistency:
|
|
15
|
+
Rules (.claude/rules/) and Standards (claudeos-core/standard/) MUST NOT contradict each other.
|
|
16
|
+
If a standard defines a specific pattern (e.g., import path, file naming, API usage),
|
|
17
|
+
the corresponding rule MUST use the same pattern. Before generating each rule file,
|
|
18
|
+
verify it is consistent with the related standard file.
|
|
19
|
+
|
|
20
|
+
CRITICAL — Code Example Accuracy:
|
|
21
|
+
ALL code examples in rules and standards MUST use EXACT method names, class names,
|
|
22
|
+
and signatures from pass2-merged.json analysis data.
|
|
23
|
+
Do NOT paraphrase, rename, or infer API names.
|
|
24
|
+
If a method signature is not captured in the analysis data,
|
|
25
|
+
write "See corresponding standard for exact API" instead of guessing.
|
|
26
|
+
|
|
27
|
+
CRITICAL — Response Flow Consistency:
|
|
28
|
+
Determine from pass2-merged.json which layer (Controller vs Service/UseCase) calls
|
|
29
|
+
the response wrapper. This MUST be identical across architecture.md, controller-patterns.md,
|
|
30
|
+
response-exception.md, and controller-rules.md. Do NOT describe different response flows in different files.
|
|
31
|
+
|
|
32
|
+
CRITICAL — CLAUDE.md Reference Table Completeness:
|
|
33
|
+
The reference table in CLAUDE.md MUST list ALL generated standard files, not just core.
|
|
34
|
+
Include all frontend-ui, backend-api, security-db, infra, and verification standards.
|
|
35
|
+
|
|
36
|
+
Generation targets:
|
|
37
|
+
|
|
38
|
+
1. CLAUDE.md (project root)
|
|
39
|
+
- Role definition (NestJS backend developer)
|
|
40
|
+
- Build & Run Commands (use ONLY the detected packageManager)
|
|
41
|
+
- Core architecture diagram (Module → Controller → Service → Repository)
|
|
42
|
+
- DB table/collection naming
|
|
43
|
+
- Standard/Skills/Guide reference table
|
|
44
|
+
|
|
45
|
+
2. claudeos-core/standard/ (active domains only)
|
|
46
|
+
- 00.core/01.project-overview.md — Stack, modules, API server info
|
|
47
|
+
- 00.core/02.architecture.md — NestJS module structure, DI container, request lifecycle (middleware → guard → interceptor → pipe → handler → interceptor → filter)
|
|
48
|
+
- 00.core/03.naming-conventions.md — File/variable/type/decorator naming conventions
|
|
49
|
+
- 10.backend-api/01.controller-patterns.md — @Controller, decorators, parameter binding, response handling
|
|
50
|
+
- 10.backend-api/02.service-patterns.md — @Injectable, DI, transactions, business logic
|
|
51
|
+
- 10.backend-api/03.data-access-patterns.md — ORM patterns, repository injection, query optimization
|
|
52
|
+
- 10.backend-api/04.response-exception.md — Response interceptor, HttpException hierarchy, ExceptionFilter
|
|
53
|
+
- 10.backend-api/05.validation-dto.md — class-validator, class-transformer, mapped types, ValidationPipe
|
|
54
|
+
- 10.backend-api/06.guard-interceptor-pipe.md — Guards (auth/role), Interceptors (logging/cache/transform), Pipes (validation/parse)
|
|
55
|
+
- 10.backend-api/07.module-provider-patterns.md — @Module structure, dynamic modules (forRoot/forFeature), custom providers, global modules
|
|
56
|
+
- 30.security-db/01.security-auth.md — JWT, Passport, Guards, CORS, @nestjs/throttler
|
|
57
|
+
- 30.security-db/02.database-schema.md — Migrations, seeds, schema conventions
|
|
58
|
+
- 30.security-db/03.common-utilities.md — Custom decorators, shared providers, constants
|
|
59
|
+
- 40.infra/01.environment-config.md — @nestjs/config, ConfigModule, environment validation
|
|
60
|
+
- 40.infra/02.logging-monitoring.md — NestJS Logger/pino, LoggingInterceptor, health checks
|
|
61
|
+
- 40.infra/03.cicd-deployment.md — CI/CD pipeline, deployment strategy
|
|
62
|
+
- 50.verification/01.development-verification.md — Build, startup, API testing
|
|
63
|
+
- 50.verification/02.testing-strategy.md — Test.createTestingModule, mocking, E2E
|
|
64
|
+
|
|
65
|
+
Each file MUST include:
|
|
66
|
+
- Correct examples (✅ code blocks)
|
|
67
|
+
- Incorrect examples (❌ code blocks)
|
|
68
|
+
- Key rules summary table
|
|
69
|
+
|
|
70
|
+
3. .claude/rules/ (active domains only)
|
|
71
|
+
- Write the full rule content directly in each file (self-contained, no external references)
|
|
72
|
+
- Include 5-15 lines of key rules with concrete examples
|
|
73
|
+
- Do NOT use @import — it is not a Claude Code feature and does not work
|
|
74
|
+
- Each rule file MUST end with a `## Reference` section linking to the corresponding standard file(s):
|
|
75
|
+
```
|
|
76
|
+
## Reference
|
|
77
|
+
> For detailed patterns and examples, Read: claudeos-core/standard/10.backend-api/01.controller-patterns.md
|
|
78
|
+
```
|
|
79
|
+
- `paths:` frontmatter per rule category:
|
|
80
|
+
- `00.core/*` rules: `paths: ["**/*"]`
|
|
81
|
+
- `10.backend/*` rules: `paths: ["**/*"]`
|
|
82
|
+
- `30.security-db/*` rules: `paths: ["**/*"]`
|
|
83
|
+
- `40.infra/*` rules: `paths: ["**/*.json", "**/*.env*", "**/config/**", "**/Dockerfile*", "**/*.yml", "**/*.yaml"]`
|
|
84
|
+
- `50.sync/*` rules: `paths: ["**/claudeos-core/**", "**/.claude/**"]`
|
|
85
|
+
- MUST generate `.claude/rules/00.core/00.standard-reference.md` — directory of all standard files.
|
|
86
|
+
List only the standard files that were actually generated above.
|
|
87
|
+
|
|
88
|
+
4. .claude/rules/50.sync/ (3 sync rules)
|
|
89
|
+
- 01.standard-sync.md — Remind AI to update plan/10 when standard is modified
|
|
90
|
+
- 02.rules-sync.md — Remind AI to update plan/20 when rules is modified
|
|
91
|
+
- 03.skills-sync.md — Remind AI to update plan/30 when skills is modified
|
|
92
|
+
|
|
93
|
+
5. claudeos-core/skills/ (active domains only)
|
|
94
|
+
- 10.backend-crud/01.scaffold-crud-feature.md (orchestrator)
|
|
95
|
+
- 10.backend-crud/scaffold-crud-feature/01~08 (sub-skills: module, controller, service, repository, dto, migration, test, index)
|
|
96
|
+
- 00.shared/MANIFEST.md (skill registry)
|
|
97
|
+
|
|
98
|
+
6. claudeos-core/guide/ (all)
|
|
99
|
+
- 01.onboarding/01.overview.md
|
|
100
|
+
- 01.onboarding/02.quickstart.md
|
|
101
|
+
- 01.onboarding/03.glossary.md
|
|
102
|
+
- 02.usage/01.faq.md
|
|
103
|
+
- 02.usage/02.real-world-examples.md
|
|
104
|
+
- 02.usage/03.do-and-dont.md
|
|
105
|
+
- 03.troubleshooting/01.troubleshooting.md
|
|
106
|
+
- 04.architecture/01.file-map.md
|
|
107
|
+
- 04.architecture/02.pros-and-cons.md
|
|
108
|
+
|
|
109
|
+
7. claudeos-core/plan/ (Master Plan)
|
|
110
|
+
- 10.standard-master.md — CLAUDE.md + all standard/ files as <file> blocks
|
|
111
|
+
- 20.rules-master.md — All rules/ (except sync) as <file> blocks
|
|
112
|
+
- 21.sync-rules-master.md — All sync rules (code block format)
|
|
113
|
+
- 30.backend-skills-master.md — All backend skills as <file> blocks
|
|
114
|
+
- 40.guides-master.md — All guide/ files as <file> blocks
|
|
115
|
+
|
|
116
|
+
8. claudeos-core/database/
|
|
117
|
+
- 01.schema-overview.md — Table/collection list, relationship description
|
|
118
|
+
- 02.migration-guide.md — Migration procedure, rollback methods
|
|
119
|
+
|
|
120
|
+
9. claudeos-core/mcp-guide/
|
|
121
|
+
- 01.mcp-overview.md — List of MCP servers in use, integration methods
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
Read claudeos-core/generated/project-analysis.json and
|
|
2
|
+
perform a deep analysis of the following domains only: {{DOMAIN_GROUP}}
|
|
3
|
+
|
|
4
|
+
For each domain, select one representative file per layer, read its code, and analyze it.
|
|
5
|
+
Prioritize files with the richest patterns.
|
|
6
|
+
|
|
7
|
+
Analysis items (per domain):
|
|
8
|
+
|
|
9
|
+
1. Page/Routing Patterns
|
|
10
|
+
- Routing approach (Nuxt file-based routing vs Vue Router manual config)
|
|
11
|
+
- Layout structure (layouts/, default.vue, custom layouts)
|
|
12
|
+
- Dynamic routes ([id].vue, [...slug].vue)
|
|
13
|
+
- Page directory conventions (pages/ structure)
|
|
14
|
+
- Middleware usage (defineNuxtRouteMiddleware, navigation guards)
|
|
15
|
+
- Route meta and page meta (definePageMeta)
|
|
16
|
+
- Loading/error handling (error.vue, NuxtErrorBoundary)
|
|
17
|
+
|
|
18
|
+
2. Component Patterns
|
|
19
|
+
- Component structure (SFC <script setup>, Options API, Composition API)
|
|
20
|
+
- Props definition (defineProps, withDefaults, runtime vs type-only)
|
|
21
|
+
- Emits definition (defineEmits)
|
|
22
|
+
- Slots usage (named slots, scoped slots)
|
|
23
|
+
- Styling approach (<style scoped>, CSS Modules, Tailwind, UnoCSS)
|
|
24
|
+
- UI library (Vuetify, PrimeVue, Radix Vue, Naive UI, Element Plus)
|
|
25
|
+
- Component classification (UI, Feature, Layout, Page)
|
|
26
|
+
- Component entry file pattern: index.vue vs ComponentName.vue
|
|
27
|
+
- Directory structure pattern: record exact convention
|
|
28
|
+
- Auto-imports (Nuxt auto-import, unplugin-auto-import)
|
|
29
|
+
- Reuse patterns (composables, provide/inject, renderless components)
|
|
30
|
+
- Accessibility (ARIA, semantic HTML, keyboard navigation)
|
|
31
|
+
|
|
32
|
+
3. Data Fetching Patterns
|
|
33
|
+
- Nuxt: useFetch, useAsyncData, $fetch, server routes (server/api/)
|
|
34
|
+
- Vue: Axios, fetch, TanStack Query/Vue Query
|
|
35
|
+
- SSR data fetching (Nuxt server-side, useRequestHeaders)
|
|
36
|
+
- Client-side data fetching (onMounted, watch)
|
|
37
|
+
- Caching strategy (Nuxt payload, SWR, stale-while-revalidate)
|
|
38
|
+
- Error/loading state handling (pending, error, refresh)
|
|
39
|
+
- Streaming/Suspense
|
|
40
|
+
|
|
41
|
+
4. State Management Patterns
|
|
42
|
+
- Pinia stores (defineStore, setup stores vs option stores)
|
|
43
|
+
- Composables for shared state (useState in Nuxt)
|
|
44
|
+
- URL state (useRoute, useRouter, query params)
|
|
45
|
+
- Form state (VeeValidate, FormKit, vuelidate)
|
|
46
|
+
- Provide/Inject patterns
|
|
47
|
+
|
|
48
|
+
5. Configuration/Environment Patterns
|
|
49
|
+
- Environment variable management (NUXT_PUBLIC_, VITE_, .env separation)
|
|
50
|
+
- nuxt.config.ts / vite.config.ts settings
|
|
51
|
+
- Runtime config (useRuntimeConfig)
|
|
52
|
+
- Build optimization (Nitro presets, SSR/SSG/SPA modes)
|
|
53
|
+
- Module system (Nuxt modules, Vite plugins)
|
|
54
|
+
|
|
55
|
+
6. Logging/Monitoring Patterns
|
|
56
|
+
- Client error tracking (Sentry, DataDog RUM)
|
|
57
|
+
- Server logging (consola, pino, h3 logger)
|
|
58
|
+
- Performance monitoring (Web Vitals, Lighthouse)
|
|
59
|
+
- Analytics tools (Google Analytics, PostHog, Plausible)
|
|
60
|
+
|
|
61
|
+
7. Testing Patterns
|
|
62
|
+
- Test framework (Vitest, Jest, Playwright, Cypress)
|
|
63
|
+
- Component testing (@vue/test-utils, @testing-library/vue)
|
|
64
|
+
- E2E testing strategy
|
|
65
|
+
- Mocking strategy (MSW, vi.mock)
|
|
66
|
+
- Test naming conventions
|
|
67
|
+
- Nuxt testing (@nuxt/test-utils)
|
|
68
|
+
|
|
69
|
+
8. Domain-Specific Patterns
|
|
70
|
+
- Authentication (Nuxt Auth, @sidebase/nuxt-auth, custom)
|
|
71
|
+
- Internationalization (@nuxtjs/i18n, vue-i18n)
|
|
72
|
+
- File upload (presigned URL, client direct upload)
|
|
73
|
+
- Real-time features (WebSocket, SSE, Socket.io)
|
|
74
|
+
- SEO optimization (useSeoMeta, useHead, OG tags)
|
|
75
|
+
- Image optimization (nuxt/image, @nuxt/image)
|
|
76
|
+
- API versioning strategy
|
|
77
|
+
|
|
78
|
+
9. Anti-patterns / Inconsistencies
|
|
79
|
+
- Mixing Options API and Composition API
|
|
80
|
+
- Unnecessary reactivity (ref vs reactive misuse)
|
|
81
|
+
- Patterns inconsistent with other domains
|
|
82
|
+
- Performance issues (unnecessary watchers, large bundle, layout shift)
|
|
83
|
+
- Type safety issues
|
|
84
|
+
- Accessibility issues
|
|
85
|
+
|
|
86
|
+
Do not create or modify source files. Analysis only.
|
|
87
|
+
Save results to claudeos-core/generated/pass1-{{PASS_NUM}}.json in the following format:
|
|
88
|
+
|
|
89
|
+
{
|
|
90
|
+
"analyzedAt": "ISO timestamp",
|
|
91
|
+
"passNum": {{PASS_NUM}},
|
|
92
|
+
"domains": ["auth", "dashboard", "settings", "shared"],
|
|
93
|
+
"analysisPerDomain": {
|
|
94
|
+
"dashboard": {
|
|
95
|
+
"representativeFiles": {
|
|
96
|
+
"page": "pages/dashboard/index.vue",
|
|
97
|
+
"layout": "layouts/dashboard.vue",
|
|
98
|
+
"component": "components/dashboard/StatsCard.vue",
|
|
99
|
+
"composable": "composables/useDashboard.ts",
|
|
100
|
+
"store": "stores/dashboard.ts"
|
|
101
|
+
},
|
|
102
|
+
"patterns": {
|
|
103
|
+
"page": { ... },
|
|
104
|
+
"component": { ... },
|
|
105
|
+
"dataFetching": { ... },
|
|
106
|
+
"stateManagement": { ... },
|
|
107
|
+
"config": { ... },
|
|
108
|
+
"logging": { ... },
|
|
109
|
+
"testing": { ... }
|
|
110
|
+
},
|
|
111
|
+
"specialPatterns": [],
|
|
112
|
+
"antiPatterns": []
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"crossDomainCommon": {
|
|
116
|
+
"description": "Patterns commonly used across domains in this group",
|
|
117
|
+
"patterns": []
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
Read all pass1-*.json files from the claudeos-core/generated/ directory and
|
|
2
|
+
merge all domain analysis results into a single unified report.
|
|
3
|
+
|
|
4
|
+
Merge items:
|
|
5
|
+
|
|
6
|
+
1. Universal Patterns (shared by 100% of all domains)
|
|
7
|
+
- Page/routing structure (Nuxt file-based vs Vue Router)
|
|
8
|
+
- Component writing conventions (SFC, <script setup>, Props/Emits)
|
|
9
|
+
- Data fetching strategy (useFetch/useAsyncData vs client-side)
|
|
10
|
+
- State management approach (Pinia, composables)
|
|
11
|
+
- Error/loading handling patterns
|
|
12
|
+
- Middleware usage
|
|
13
|
+
|
|
14
|
+
2. Majority Patterns (shared by 50%+ of domains)
|
|
15
|
+
- Specify which domains share them
|
|
16
|
+
|
|
17
|
+
3. Domain-Specific Patterns (unique to a single domain)
|
|
18
|
+
- Auth: which domain
|
|
19
|
+
- Real-time features: which domain
|
|
20
|
+
- File upload: which domain
|
|
21
|
+
- i18n: which domain
|
|
22
|
+
- SEO optimization: which domain
|
|
23
|
+
|
|
24
|
+
4. Anti-pattern Summary
|
|
25
|
+
- Consolidate all inconsistencies found across domains
|
|
26
|
+
- Classify by severity (CRITICAL / HIGH / MEDIUM / LOW)
|
|
27
|
+
|
|
28
|
+
5. Naming Conventions Summary
|
|
29
|
+
- File/directory naming (kebab-case, PascalCase)
|
|
30
|
+
- Component file pattern (index.vue vs ComponentName.vue)
|
|
31
|
+
- Composable naming (use* prefix)
|
|
32
|
+
- Store naming conventions
|
|
33
|
+
- Route/page naming patterns
|
|
34
|
+
|
|
35
|
+
6. Shared Types/Components List
|
|
36
|
+
- Common UI components with EXACT import paths
|
|
37
|
+
- Shared composables with exact import paths
|
|
38
|
+
- Utility functions with EXACT import paths
|
|
39
|
+
- Auto-import configuration (which composables/components are auto-imported)
|
|
40
|
+
- Path aliases used in the project
|
|
41
|
+
- Environment variable types
|
|
42
|
+
- Constants/Enum management
|
|
43
|
+
|
|
44
|
+
7. Security/Authentication Patterns
|
|
45
|
+
- Authentication approach (Nuxt Auth, custom middleware)
|
|
46
|
+
- Route protection strategy (middleware, navigation guards)
|
|
47
|
+
- CSRF/XSS prevention
|
|
48
|
+
- Environment variable management (NUXT_PUBLIC_, VITE_)
|
|
49
|
+
- Content security policy
|
|
50
|
+
|
|
51
|
+
8. Performance Patterns
|
|
52
|
+
- SSR/SSG/SPA mode usage
|
|
53
|
+
- Image optimization (nuxt/image)
|
|
54
|
+
- Bundle optimization (dynamic import, tree shaking)
|
|
55
|
+
- Caching strategy (Nitro cache, CDN)
|
|
56
|
+
- Web Vitals status
|
|
57
|
+
|
|
58
|
+
9. Testing Strategy Summary
|
|
59
|
+
- Test coverage level
|
|
60
|
+
- Test classification system (unit/component/E2E)
|
|
61
|
+
- Mocking strategy (MSW, vi.mock)
|
|
62
|
+
- Test naming conventions
|
|
63
|
+
|
|
64
|
+
10. Logging/Monitoring Strategy
|
|
65
|
+
- Error tracking approach (Sentry, DataDog)
|
|
66
|
+
- Analytics tools
|
|
67
|
+
- Web Vitals monitoring
|
|
68
|
+
|
|
69
|
+
11. Code Quality Tools
|
|
70
|
+
- Lint/Format tools (ESLint, Prettier, Biome)
|
|
71
|
+
- Pre-commit hooks (husky, lint-staged)
|
|
72
|
+
- TypeScript strict mode
|
|
73
|
+
- CI integration status
|
|
74
|
+
|
|
75
|
+
12. Vue/Nuxt Architecture Patterns
|
|
76
|
+
- Nuxt module usage (list of @nuxt/* and third-party modules)
|
|
77
|
+
- Nitro server configuration (server routes, middleware, plugins)
|
|
78
|
+
- Plugin system (Nuxt plugins, Vue plugins)
|
|
79
|
+
- Composable organization (shared vs domain-specific)
|
|
80
|
+
- Auto-import scope and configuration
|
|
81
|
+
|
|
82
|
+
Do not generate code. Merge only.
|
|
83
|
+
Save results to claudeos-core/generated/pass2-merged.json.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
Read claudeos-core/generated/project-analysis.json and
|
|
2
|
+
claudeos-core/generated/pass2-merged.json, then
|
|
3
|
+
generate all ClaudeOS-Core files based on the analysis results.
|
|
4
|
+
|
|
5
|
+
Do not read the original source code again. Reference only the analysis results.
|
|
6
|
+
|
|
7
|
+
CRITICAL — Package Manager Consistency:
|
|
8
|
+
Check `stack.packageManager` in project-analysis.json (e.g., "pnpm", "yarn", "npm").
|
|
9
|
+
ALL generated files MUST use ONLY that detected package manager's commands.
|
|
10
|
+
NEVER mix npm/yarn/pnpm commands. Also check `scripts` field in the project's package.json
|
|
11
|
+
for actual script names.
|
|
12
|
+
|
|
13
|
+
CRITICAL — Cross-file Consistency:
|
|
14
|
+
Rules (.claude/rules/) and Standards (claudeos-core/standard/) MUST NOT contradict each other.
|
|
15
|
+
|
|
16
|
+
CRITICAL — Code Example Accuracy:
|
|
17
|
+
ALL code examples MUST use EXACT method names, class names, and signatures from pass2-merged.json.
|
|
18
|
+
Do NOT paraphrase, rename, or infer API names.
|
|
19
|
+
|
|
20
|
+
CRITICAL — CLAUDE.md Reference Table Completeness:
|
|
21
|
+
The reference table in CLAUDE.md MUST list ALL generated standard files.
|
|
22
|
+
|
|
23
|
+
Generation targets:
|
|
24
|
+
|
|
25
|
+
1. CLAUDE.md (project root)
|
|
26
|
+
- Role definition (Vue/Nuxt frontend developer)
|
|
27
|
+
- Build & Run Commands (use ONLY the detected packageManager)
|
|
28
|
+
- Core architecture diagram
|
|
29
|
+
- Directory structure description
|
|
30
|
+
- Standard/Skills/Guide reference table
|
|
31
|
+
|
|
32
|
+
2. claudeos-core/standard/ (active domains only)
|
|
33
|
+
- 00.core/01.project-overview.md — Stack, routing approach, deployment environment
|
|
34
|
+
- 00.core/02.architecture.md — Nuxt/Vue structure, component hierarchy, data flow, Nitro server
|
|
35
|
+
- 00.core/03.naming-conventions.md — File/component/composable/store naming conventions
|
|
36
|
+
- 20.frontend-ui/01.component-patterns.md — SFC, <script setup>, Props/Emits, slots, provide/inject
|
|
37
|
+
- 20.frontend-ui/02.page-routing-patterns.md — Pages/layouts/dynamic routes/middleware/definePageMeta
|
|
38
|
+
- 20.frontend-ui/03.data-fetching.md — useFetch, useAsyncData, $fetch, server routes, caching
|
|
39
|
+
- 20.frontend-ui/04.state-management.md — Pinia stores, composables, useState, form state
|
|
40
|
+
- 20.frontend-ui/05.styling-patterns.md — Scoped styles, CSS Modules, Tailwind/UnoCSS, theming
|
|
41
|
+
- 10.backend-api/01.server-routes.md — Nitro server routes (server/api/), H3 event handlers
|
|
42
|
+
- 30.security-db/01.security-auth.md — Auth, middleware protection, environment variables
|
|
43
|
+
- 40.infra/01.environment-config.md — Runtime config, nuxt.config.ts, Nitro presets
|
|
44
|
+
- 40.infra/02.logging-monitoring.md — Error tracking, analytics, Web Vitals
|
|
45
|
+
- 40.infra/03.cicd-deployment.md — CI/CD, deployment (Vercel/Netlify/Docker), preview
|
|
46
|
+
- 50.verification/01.development-verification.md — Build, startup, Lighthouse
|
|
47
|
+
- 50.verification/02.testing-strategy.md — Vitest, @vue/test-utils, E2E, @nuxt/test-utils
|
|
48
|
+
|
|
49
|
+
Each file MUST include:
|
|
50
|
+
- Correct examples (✅ code blocks)
|
|
51
|
+
- Incorrect examples (❌ code blocks)
|
|
52
|
+
- Key rules summary table
|
|
53
|
+
|
|
54
|
+
3. .claude/rules/ (active domains only)
|
|
55
|
+
- Write the full rule content directly in each file (self-contained)
|
|
56
|
+
- Include 5-15 lines of key rules with concrete examples
|
|
57
|
+
- Do NOT use @import
|
|
58
|
+
- Each rule file MUST end with a `## Reference` section
|
|
59
|
+
- `paths:` frontmatter per rule category:
|
|
60
|
+
- `00.core/*` rules: `paths: ["**/*"]`
|
|
61
|
+
- `10.backend/*` rules: `paths: ["**/*"]`
|
|
62
|
+
- `20.frontend/*` rules: `paths: ["**/*"]`
|
|
63
|
+
- `30.security-db/*` rules: `paths: ["**/*"]`
|
|
64
|
+
- `40.infra/*` rules: `paths: ["**/*.json", "**/*.env*", "**/nuxt.config.*", "**/vite.config.*", "**/Dockerfile*", "**/*.yml", "**/*.yaml"]`
|
|
65
|
+
- `50.sync/*` rules: `paths: ["**/claudeos-core/**", "**/.claude/**"]`
|
|
66
|
+
- MUST generate `.claude/rules/00.core/00.standard-reference.md` — directory of all standard files
|
|
67
|
+
|
|
68
|
+
4. .claude/rules/50.sync/ (3 sync rules)
|
|
69
|
+
- 01.standard-sync.md
|
|
70
|
+
- 02.rules-sync.md
|
|
71
|
+
- 03.skills-sync.md
|
|
72
|
+
|
|
73
|
+
5. claudeos-core/skills/ (active domains only)
|
|
74
|
+
- 20.frontend-page/01.scaffold-page-feature.md (orchestrator)
|
|
75
|
+
- 20.frontend-page/scaffold-page-feature/01~08 (sub-skills: page, layout, component, composable, server-route, test, style, index)
|
|
76
|
+
- 00.shared/MANIFEST.md (skill registry)
|
|
77
|
+
|
|
78
|
+
6. claudeos-core/guide/ (all)
|
|
79
|
+
- 01.onboarding/01.overview.md
|
|
80
|
+
- 01.onboarding/02.quickstart.md
|
|
81
|
+
- 01.onboarding/03.glossary.md
|
|
82
|
+
- 02.usage/01.faq.md
|
|
83
|
+
- 02.usage/02.real-world-examples.md
|
|
84
|
+
- 02.usage/03.do-and-dont.md
|
|
85
|
+
- 03.troubleshooting/01.troubleshooting.md
|
|
86
|
+
- 04.architecture/01.file-map.md
|
|
87
|
+
- 04.architecture/02.pros-and-cons.md
|
|
88
|
+
|
|
89
|
+
7. claudeos-core/plan/ (Master Plan)
|
|
90
|
+
- 10.standard-master.md — CLAUDE.md + all standard/ files as <file> blocks
|
|
91
|
+
- 20.rules-master.md — All rules/ (except sync) as <file> blocks
|
|
92
|
+
- 21.sync-rules-master.md — All sync rules (code block format)
|
|
93
|
+
- 30.frontend-skills-master.md — All frontend skills as <file> blocks
|
|
94
|
+
- 40.guides-master.md — All guide/ files as <file> blocks
|
|
95
|
+
|
|
96
|
+
8. claudeos-core/database/
|
|
97
|
+
- 01.schema-overview.md — DB schema description (if applicable)
|
|
98
|
+
|
|
99
|
+
9. claudeos-core/mcp-guide/
|
|
100
|
+
- 01.mcp-overview.md — List of MCP servers in use, integration methods
|
|
@@ -50,7 +50,8 @@ function selectTemplates(stack) {
|
|
|
50
50
|
// Backend template (requires a backend framework; language-only fallback skipped for pure frontend projects)
|
|
51
51
|
if (stack.language === "kotlin") templates.backend = "kotlin-spring";
|
|
52
52
|
else if (stack.language === "java") templates.backend = "java-spring";
|
|
53
|
-
else if (stack.framework === "
|
|
53
|
+
else if (stack.framework === "nestjs") templates.backend = "node-nestjs";
|
|
54
|
+
else if (stack.framework === "express") templates.backend = "node-express";
|
|
54
55
|
else if (stack.framework === "fastify") templates.backend = "node-fastify";
|
|
55
56
|
else if (stack.framework === "django") templates.backend = "python-django";
|
|
56
57
|
else if (stack.framework === "fastapi" || stack.framework === "flask") templates.backend = "python-fastapi";
|
|
@@ -58,8 +59,10 @@ function selectTemplates(stack) {
|
|
|
58
59
|
else if (stack.language === "python" && stack.framework) templates.backend = "python-fastapi";
|
|
59
60
|
|
|
60
61
|
// Frontend template
|
|
61
|
-
if (stack.frontend === "nextjs" || stack.frontend === "react"
|
|
62
|
+
if (stack.frontend === "nextjs" || stack.frontend === "react") {
|
|
62
63
|
templates.frontend = "node-nextjs";
|
|
64
|
+
} else if (stack.frontend === "vue") {
|
|
65
|
+
templates.frontend = "vue-nuxt";
|
|
63
66
|
} else if (stack.frontend === "angular") {
|
|
64
67
|
templates.frontend = "angular";
|
|
65
68
|
}
|
|
@@ -36,10 +36,7 @@ function generatePrompts(templates, lang, templatesDir, generatedDir) {
|
|
|
36
36
|
function readTemplate(templateName, passName) {
|
|
37
37
|
const src = path.join(templatesDir, templateName, `${passName}.md`);
|
|
38
38
|
if (!existsSafe(src)) return null;
|
|
39
|
-
|
|
40
|
-
body = body.replace(/^Project root path:.*\nInterpret all file paths.*\n\n?---\n\n?/s, "");
|
|
41
|
-
body = body.replace(/\nAfter completion, run the following commands in order:[\s\S]*$/, "");
|
|
42
|
-
return body;
|
|
39
|
+
return readFileSafe(src);
|
|
43
40
|
}
|
|
44
41
|
|
|
45
42
|
const activeTemplates = [templates.backend, templates.frontend].filter(Boolean);
|
|
@@ -15,8 +15,11 @@ async function scanFrontendDomains(stack, ROOT) {
|
|
|
15
15
|
|
|
16
16
|
// ── Angular ──
|
|
17
17
|
if (stack.frontend === "angular") {
|
|
18
|
-
// Angular feature modules: src/app/*/ with *.component.ts or *.module.ts
|
|
19
|
-
const angularAppDirs =
|
|
18
|
+
// Angular feature modules: src/app/*/ with *.component.ts or *.module.ts (+ monorepo apps/*/)
|
|
19
|
+
const angularAppDirs = [
|
|
20
|
+
...await glob("{src/app,app}/*/", { cwd: ROOT }),
|
|
21
|
+
...await glob("{apps,packages}/*/src/app/*/", { cwd: ROOT, ignore: ["**/node_modules/**"] }),
|
|
22
|
+
];
|
|
20
23
|
const skipAngularDirs = ["shared", "core", "common", "layout", "layouts", "environments", "assets", "styles", "testing", "utils"];
|
|
21
24
|
for (const dir of angularAppDirs) {
|
|
22
25
|
const name = path.basename(dir.replace(/\/$/, ""));
|
|
@@ -51,16 +54,20 @@ async function scanFrontendDomains(stack, ROOT) {
|
|
|
51
54
|
|
|
52
55
|
// ── Next.js/React/Vue ──
|
|
53
56
|
if (stack.frontend === "nextjs" || stack.frontend === "react" || stack.frontend === "vue") {
|
|
54
|
-
// App Router / Pages Router domains
|
|
57
|
+
// App Router / Pages Router domains (standard + monorepo apps/*/)
|
|
55
58
|
const allDirs = [
|
|
56
59
|
...await glob("{app,src/app}/*/", { cwd: ROOT }),
|
|
57
60
|
...await glob("{pages,src/pages}/*/", { cwd: ROOT }),
|
|
61
|
+
...await glob("{apps,packages}/*/app/*/", { cwd: ROOT, ignore: ["**/node_modules/**"] }),
|
|
62
|
+
...await glob("{apps,packages}/*/src/app/*/", { cwd: ROOT, ignore: ["**/node_modules/**"] }),
|
|
63
|
+
...await glob("{apps,packages}/*/pages/*/", { cwd: ROOT, ignore: ["**/node_modules/**"] }),
|
|
64
|
+
...await glob("{apps,packages}/*/src/pages/*/", { cwd: ROOT, ignore: ["**/node_modules/**"] }),
|
|
58
65
|
];
|
|
59
|
-
const skipPages = ["api", "_app", "_document", "fonts"];
|
|
66
|
+
const skipPages = ["api", "_app", "_document", "fonts", "not-found", "error", "loading"];
|
|
60
67
|
for (const dir of allDirs) {
|
|
61
68
|
const name = path.basename(dir);
|
|
62
69
|
if (skipPages.includes(name) || name.startsWith("(") || name.startsWith("[") || name.startsWith("_") || name.startsWith(".")) continue;
|
|
63
|
-
const files = await glob(`${dir}**/*.{tsx,jsx,ts,js,vue}`, { cwd: ROOT });
|
|
70
|
+
const files = await glob(`${dir.replace(/\\/g, "/")}**/*.{tsx,jsx,ts,js,vue}`, { cwd: ROOT });
|
|
64
71
|
if (files.length > 0) {
|
|
65
72
|
const pages = files.filter(f => /page\.|index\./.test(f)).length;
|
|
66
73
|
const layouts = files.filter(f => /layout\./.test(f)).length;
|
|
@@ -81,7 +88,7 @@ async function scanFrontendDomains(stack, ROOT) {
|
|
|
81
88
|
for (const dir of fsdDirs) {
|
|
82
89
|
const name = path.basename(dir);
|
|
83
90
|
if (["ui", "common", "shared", "lib", "config", "index"].includes(name)) continue;
|
|
84
|
-
const files = await glob(`${dir}**/*.{tsx,jsx,ts,js,vue}`, { cwd: ROOT, ignore: ["**/*.spec.*", "**/*.test.*", "**/*.stories.*"] });
|
|
91
|
+
const files = await glob(`${dir.replace(/\\/g, "/")}**/*.{tsx,jsx,ts,js,vue}`, { cwd: ROOT, ignore: ["**/*.spec.*", "**/*.test.*", "**/*.stories.*"] });
|
|
85
92
|
if (files.length > 0) {
|
|
86
93
|
const uiFiles = files.filter(f => /\bui\b/.test(f)).length;
|
|
87
94
|
const modelFiles = files.filter(f => /model|store|hook/.test(f)).length;
|
|
@@ -95,7 +102,7 @@ async function scanFrontendDomains(stack, ROOT) {
|
|
|
95
102
|
for (const dir of compDirs) {
|
|
96
103
|
const name = path.basename(dir);
|
|
97
104
|
if (["ui", "common", "shared", "layout", "icons"].includes(name)) continue;
|
|
98
|
-
const files = await glob(`${dir}**/*.{tsx,jsx,vue}`, { cwd: ROOT });
|
|
105
|
+
const files = await glob(`${dir.replace(/\\/g, "/")}**/*.{tsx,jsx,vue}`, { cwd: ROOT });
|
|
99
106
|
if (files.length >= 2) {
|
|
100
107
|
frontendDomains.push({ name: `comp-${name}`, type: "frontend", components: files.length, totalFiles: files.length });
|
|
101
108
|
}
|