speccrew 0.1.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/.speccrew/agents/speccrew-feature-designer.md +142 -0
- package/.speccrew/agents/speccrew-product-manager.md +61 -0
- package/.speccrew/agents/speccrew-system-designer.md +200 -0
- package/.speccrew/agents/speccrew-system-developer.md +238 -0
- package/.speccrew/agents/speccrew-task-worker.md +80 -0
- package/.speccrew/agents/speccrew-team-leader.md +92 -0
- package/.speccrew/agents/speccrew-test-manager.md +313 -0
- package/.speccrew/skills/speccrew-create-agents/SKILL.md +98 -0
- package/.speccrew/skills/speccrew-create-agents/templates/agents/designer-agent.md +54 -0
- package/.speccrew/skills/speccrew-create-agents/templates/agents/dev-agent.md +79 -0
- package/.speccrew/skills/speccrew-create-agents/templates/agents/test-agent.md +80 -0
- package/.speccrew/skills/speccrew-dev-backend/SKILL.md +205 -0
- package/.speccrew/skills/speccrew-dev-backend/templates/TASK-RECORD-TEMPLATE.md +118 -0
- package/.speccrew/skills/speccrew-dev-desktop/SKILL.md +258 -0
- package/.speccrew/skills/speccrew-dev-desktop/templates/TASK-RECORD-TEMPLATE.md +161 -0
- package/.speccrew/skills/speccrew-dev-frontend/SKILL.md +202 -0
- package/.speccrew/skills/speccrew-dev-frontend/templates/TASK-RECORD-TEMPLATE.md +115 -0
- package/.speccrew/skills/speccrew-dev-mobile/SKILL.md +200 -0
- package/.speccrew/skills/speccrew-dev-mobile/templates/TASK-RECORD-TEMPLATE.md +125 -0
- package/.speccrew/skills/speccrew-fd-api-contract/SKILL.md +73 -0
- package/.speccrew/skills/speccrew-fd-api-contract/templates/API-CONTRACT-TEMPLATE.md +96 -0
- package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +395 -0
- package/.speccrew/skills/speccrew-fd-feature-design/templates/FEATURE-SPEC-TEMPLATE.md +387 -0
- package/.speccrew/skills/speccrew-get-timestamp/SKILL.md +80 -0
- package/.speccrew/skills/speccrew-get-timestamp/scripts/get-timestamp.js +35 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/SKILL.md +1116 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-FASTAPI.md +462 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-JAVA.md +480 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-NET.md +464 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE.md +480 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/MODULE-OVERVIEW-TEMPLATE.md +367 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/SKILL.md +667 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/STATUS-FORMATS.md +74 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/batch-orchestrator.js +176 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/get-next-batch.js +150 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/get-pending-features.js +106 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/mark-stale.js +249 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/process-batch-results.js +848 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/update-feature-status.js +226 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/SKILL.md +264 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/examples/features.json +34 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/scripts/generate-inventory.js +867 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/scripts/test-inventory.js +26 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/SKILL.md +165 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/scripts/apply-module-mapping.js +208 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/scripts/extract-module-summary.js +180 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/scripts/reindex-modules.js +358 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/SKILL.md +1055 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-DESKTOP.md +303 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-ELECTRON.md +327 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MINIAPP.md +292 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MOBILE.md +281 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI.md +324 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/SKILL.md +270 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/templates/COMPONENT-PATTERN-TEMPLATE.md +33 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/templates/LAYOUT-PATTERN-TEMPLATE.md +33 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/templates/PAGE-TYPE-TEMPLATE.md +33 -0
- package/.speccrew/skills/speccrew-knowledge-graph-query/SKILL.md +229 -0
- package/.speccrew/skills/speccrew-knowledge-graph-query/scripts/graph-query.js +549 -0
- package/.speccrew/skills/speccrew-knowledge-graph-write/SKILL.md +181 -0
- package/.speccrew/skills/speccrew-knowledge-graph-write/scripts/graph-write.js +651 -0
- package/.speccrew/skills/speccrew-knowledge-module-summarize/SKILL.md +305 -0
- package/.speccrew/skills/speccrew-knowledge-module-summarize/templates/MODULE-OVERVIEW-TEMPLATE.md +400 -0
- package/.speccrew/skills/speccrew-knowledge-system-summarize/SKILL.md +351 -0
- package/.speccrew/skills/speccrew-knowledge-system-summarize/templates/SYSTEM-OVERVIEW-TEMPLATE.md +294 -0
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/SKILL.md +683 -0
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/STATUS-FORMATS.md +550 -0
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/templates/techs-manifest-EXAMPLE.json +35 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/SKILL.md +1087 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/ARCHITECTURE-TEMPLATE.md +240 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/COLOR-SYSTEM-TEMPLATE.md +68 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/COMPONENT-LIBRARY-TEMPLATE.md +86 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-BUILD-TEMPLATE.md +466 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-DATA-TEMPLATE.md +432 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-DESIGN-TEMPLATE.md +1209 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-DEV-TEMPLATE.md +1433 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-SYSTEM-TEST-TEMPLATE.md +1052 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-UNIT-TEST-TEMPLATE.md +946 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/INDEX-TEMPLATE.md +29 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/PAGE-LAYOUTS-TEMPLATE.md +69 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/PAGE-TYPE-SUMMARY-TEMPLATE.md +74 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/TECH-STACK-TEMPLATE.md +232 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate-conventions/SKILL.md +628 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate-ui-style/SKILL.md +392 -0
- package/.speccrew/skills/speccrew-knowledge-techs-index/SKILL.md +489 -0
- package/.speccrew/skills/speccrew-knowledge-techs-index/templates/INDEX-TEMPLATE.md +243 -0
- package/.speccrew/skills/speccrew-knowledge-techs-init/SKILL.md +269 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/SKILL.md +562 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/BUSINESS-COMPONENTS-TEMPLATE.md +171 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/COMMON-COMPONENTS-TEMPLATE.md +177 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/COMPONENT-INDIVIDUAL-TEMPLATE.md +80 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/COMPONENT-LIBRARY-TEMPLATE.md +118 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/LAYOUT-INDIVIDUAL-TEMPLATE.md +97 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/LAYOUT-PATTERNS-TEMPLATE.md +208 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/NAVIGATION-PATTERNS-TEMPLATE.md +157 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/PAGE-TYPE-INDIVIDUAL-TEMPLATE.md +123 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/PAGE-TYPE-SUMMARY-TEMPLATE.md +58 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/SPACING-TEMPLATE.md +119 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/STYLE-SYSTEM-TEMPLATE.md +117 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/TYPOGRAPHY-TEMPLATE.md +107 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/UI-STYLE-GUIDE-TEMPLATE.md +171 -0
- package/.speccrew/skills/speccrew-pm-requirement-analysis/SKILL.md +434 -0
- package/.speccrew/skills/speccrew-pm-requirement-analysis/templates/BIZS-MODELING-TEMPLATE.md +332 -0
- package/.speccrew/skills/speccrew-pm-requirement-analysis/templates/PRD-TEMPLATE.md +200 -0
- package/.speccrew/skills/speccrew-pm-requirement-assess/SKILL.md +195 -0
- package/.speccrew/skills/speccrew-project-diagnosis/SKILL.md +208 -0
- package/.speccrew/skills/speccrew-project-diagnosis/templates/DIAGNOSIS-REPORT-TEMPLATE.md +202 -0
- package/.speccrew/skills/speccrew-sd-backend/SKILL.md +188 -0
- package/.speccrew/skills/speccrew-sd-backend/templates/INDEX-TEMPLATE.md +85 -0
- package/.speccrew/skills/speccrew-sd-backend/templates/SD-BACKEND-TEMPLATE.md +269 -0
- package/.speccrew/skills/speccrew-sd-desktop/SKILL.md +192 -0
- package/.speccrew/skills/speccrew-sd-desktop/templates/INDEX-TEMPLATE.md +271 -0
- package/.speccrew/skills/speccrew-sd-desktop/templates/SD-DESKTOP-TEMPLATE.md +673 -0
- package/.speccrew/skills/speccrew-sd-frontend/SKILL.md +176 -0
- package/.speccrew/skills/speccrew-sd-frontend/templates/INDEX-TEMPLATE.md +184 -0
- package/.speccrew/skills/speccrew-sd-frontend/templates/SD-FRONTEND-TEMPLATE.md +382 -0
- package/.speccrew/skills/speccrew-sd-mobile/SKILL.md +189 -0
- package/.speccrew/skills/speccrew-sd-mobile/templates/INDEX-TEMPLATE.md +219 -0
- package/.speccrew/skills/speccrew-sd-mobile/templates/SD-MOBILE-TEMPLATE.md +534 -0
- package/.speccrew/skills/speccrew-test-case-design/SKILL.md +284 -0
- package/.speccrew/skills/speccrew-test-case-design/templates/TEST-CASE-DESIGN-TEMPLATE.md +263 -0
- package/.speccrew/skills/speccrew-test-code-gen/SKILL.md +313 -0
- package/.speccrew/skills/speccrew-test-code-gen/templates/TEST-CODE-PLAN-TEMPLATE.md +180 -0
- package/.speccrew/skills/speccrew-test-execute/SKILL.md +283 -0
- package/.speccrew/skills/speccrew-test-execute/templates/BUG-REPORT-TEMPLATE.md +50 -0
- package/.speccrew/skills/speccrew-test-execute/templates/TEST-REPORT-TEMPLATE.md +57 -0
- package/.speccrew/skills/speccrew-workflow-diagnose/SKILL.md +155 -0
- package/LICENSE +21 -0
- package/README.ar.md +318 -0
- package/README.en.md +318 -0
- package/README.es.md +318 -0
- package/README.md +340 -0
- package/bin/cli.js +62 -0
- package/lib/commands/doctor.js +138 -0
- package/lib/commands/init.js +231 -0
- package/lib/commands/list.js +114 -0
- package/lib/commands/uninstall.js +117 -0
- package/lib/commands/update.js +351 -0
- package/lib/ide-adapters.js +73 -0
- package/lib/utils.js +104 -0
- package/package.json +28 -0
- package/workspace-template/docs/configs/document-templates.json +667 -0
- package/workspace-template/docs/configs/platform-mapping.json +194 -0
- package/workspace-template/docs/configs/tech-stack-mappings.json +313 -0
- package/workspace-template/docs/configs/validation-rules.json +87 -0
- package/workspace-template/docs/rules/mermaid-rule.md +114 -0
- package/workspace-template/docs/solutions/Agent/346/212/200/350/203/275/345/256/232/344/271/211+/351/234/200/346/261/202/346/226/207/346/241/243+UML/344/275/277/347/224/250/346/250/241/346/235/277/357/274/210ISA-95/345/205/255/346/256/265/345/274/217/350/236/215/345/220/210/347/211/210/357/274/211.md +586 -0
- package/workspace-template/docs/solutions/agent-knowledge-map.md +238 -0
- package/workspace-template/docs/solutions/bizs-knowledge-pipeline.md +678 -0
- package/workspace-template/docs/solutions/harness.md +410 -0
- package/workspace-template/docs/solutions/knowledge-incremental-sync-spec.md +943 -0
- package/workspace-template/docs/solutions/techs-knowledge-pipeline.md +803 -0
- package/workspace-template/docs/solutions/workspace-structure.md +318 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"description": "Platform naming mapping for consistent configuration across bizs and techs pipelines",
|
|
4
|
+
"last_updated": "2026-03-23",
|
|
5
|
+
"platform_categories": {
|
|
6
|
+
"web": {
|
|
7
|
+
"description": "Web frontend applications",
|
|
8
|
+
"subtypes": ["vue", "react", "angular", "nextjs", "nuxt", "svelte"]
|
|
9
|
+
},
|
|
10
|
+
"mobile": {
|
|
11
|
+
"description": "Mobile applications (all platforms)",
|
|
12
|
+
"subtypes": ["uniapp", "flutter", "react-native", "android", "ios", "miniprogram"]
|
|
13
|
+
},
|
|
14
|
+
"backend": {
|
|
15
|
+
"description": "Backend services and APIs",
|
|
16
|
+
"subtypes": ["spring", "nestjs", "express", "fastify", "django", "fastapi", "go", "rust"]
|
|
17
|
+
},
|
|
18
|
+
"desktop": {
|
|
19
|
+
"description": "Desktop applications",
|
|
20
|
+
"subtypes": ["electron", "tauri", "wpf", "winforms", "qt"]
|
|
21
|
+
},
|
|
22
|
+
"api": {
|
|
23
|
+
"description": "API-only systems (no UI)",
|
|
24
|
+
"subtypes": ["rest", "graphql", "grpc"]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"mappings": [
|
|
28
|
+
{
|
|
29
|
+
"platform_id": "web-react",
|
|
30
|
+
"platform_type": "web",
|
|
31
|
+
"framework": "react",
|
|
32
|
+
"platform_subtype": "react"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"platform_id": "web-vue",
|
|
36
|
+
"platform_type": "web",
|
|
37
|
+
"framework": "vue",
|
|
38
|
+
"platform_subtype": "vue"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"platform_id": "web-angular",
|
|
42
|
+
"platform_type": "web",
|
|
43
|
+
"framework": "angular",
|
|
44
|
+
"platform_subtype": "angular"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"platform_id": "web-nextjs",
|
|
48
|
+
"platform_type": "web",
|
|
49
|
+
"framework": "nextjs",
|
|
50
|
+
"platform_subtype": "nextjs"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"platform_id": "web-nuxt",
|
|
54
|
+
"platform_type": "web",
|
|
55
|
+
"framework": "nuxt",
|
|
56
|
+
"platform_subtype": "nuxt"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"platform_id": "web-svelte",
|
|
60
|
+
"platform_type": "web",
|
|
61
|
+
"framework": "svelte",
|
|
62
|
+
"platform_subtype": "svelte"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"platform_id": "mobile-uniapp",
|
|
66
|
+
"platform_type": "mobile",
|
|
67
|
+
"framework": "uniapp",
|
|
68
|
+
"platform_subtype": "uniapp"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"platform_id": "mobile-flutter",
|
|
72
|
+
"platform_type": "mobile",
|
|
73
|
+
"framework": "flutter",
|
|
74
|
+
"platform_subtype": "flutter"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"platform_id": "mobile-react-native",
|
|
78
|
+
"platform_type": "mobile",
|
|
79
|
+
"framework": "react-native",
|
|
80
|
+
"platform_subtype": "react-native"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"platform_id": "mobile-android",
|
|
84
|
+
"platform_type": "mobile",
|
|
85
|
+
"framework": "android",
|
|
86
|
+
"platform_subtype": "android"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"platform_id": "mobile-ios",
|
|
90
|
+
"platform_type": "mobile",
|
|
91
|
+
"framework": "ios",
|
|
92
|
+
"platform_subtype": "ios"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"platform_id": "mobile-miniprogram",
|
|
96
|
+
"platform_type": "mobile",
|
|
97
|
+
"framework": "miniprogram",
|
|
98
|
+
"platform_subtype": "miniprogram"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"platform_id": "backend-spring",
|
|
102
|
+
"platform_type": "backend",
|
|
103
|
+
"framework": "spring",
|
|
104
|
+
"platform_subtype": "spring"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"platform_id": "backend-nestjs",
|
|
108
|
+
"platform_type": "backend",
|
|
109
|
+
"framework": "nestjs",
|
|
110
|
+
"platform_subtype": "nestjs"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"platform_id": "backend-express",
|
|
114
|
+
"platform_type": "backend",
|
|
115
|
+
"framework": "express",
|
|
116
|
+
"platform_subtype": "express"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"platform_id": "backend-fastify",
|
|
120
|
+
"platform_type": "backend",
|
|
121
|
+
"framework": "fastify",
|
|
122
|
+
"platform_subtype": "fastify"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"platform_id": "backend-django",
|
|
126
|
+
"platform_type": "backend",
|
|
127
|
+
"framework": "django",
|
|
128
|
+
"platform_subtype": "django"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"platform_id": "backend-fastapi",
|
|
132
|
+
"platform_type": "backend",
|
|
133
|
+
"framework": "fastapi",
|
|
134
|
+
"platform_subtype": "fastapi"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"platform_id": "backend-go",
|
|
138
|
+
"platform_type": "backend",
|
|
139
|
+
"framework": "go",
|
|
140
|
+
"platform_subtype": "go"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"platform_id": "backend-rust",
|
|
144
|
+
"platform_type": "backend",
|
|
145
|
+
"framework": "rust",
|
|
146
|
+
"platform_subtype": "rust"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"platform_id": "desktop-electron",
|
|
150
|
+
"platform_type": "desktop",
|
|
151
|
+
"framework": "electron",
|
|
152
|
+
"platform_subtype": "electron"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"platform_id": "desktop-tauri",
|
|
156
|
+
"platform_type": "desktop",
|
|
157
|
+
"framework": "tauri",
|
|
158
|
+
"platform_subtype": "tauri"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"platform_id": "desktop-wpf",
|
|
162
|
+
"platform_type": "desktop",
|
|
163
|
+
"framework": "wpf",
|
|
164
|
+
"platform_subtype": "wpf"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"platform_id": "desktop-winforms",
|
|
168
|
+
"platform_type": "desktop",
|
|
169
|
+
"framework": "winforms",
|
|
170
|
+
"platform_subtype": "winforms"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"platform_id": "desktop-qt",
|
|
174
|
+
"platform_type": "desktop",
|
|
175
|
+
"framework": "qt",
|
|
176
|
+
"platform_subtype": "qt"
|
|
177
|
+
}
|
|
178
|
+
],
|
|
179
|
+
"naming_conventions": {
|
|
180
|
+
"platform_id_format": "{platform_type}-{framework}",
|
|
181
|
+
"platform_type_values": ["web", "mobile", "backend", "desktop", "api"],
|
|
182
|
+
"field_mapping": {
|
|
183
|
+
"bizs_init": {
|
|
184
|
+
"platform_type": "platform_type",
|
|
185
|
+
"platform_subtype": "platform_subtype"
|
|
186
|
+
},
|
|
187
|
+
"techs_init": {
|
|
188
|
+
"platform_type": "platform_type",
|
|
189
|
+
"framework": "framework",
|
|
190
|
+
"platform_id": "platform_id"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"description": "Technology stack mappings for file extensions, API patterns, and analysis rules",
|
|
4
|
+
"last_updated": "2026-03-23",
|
|
5
|
+
"global_exclude_dirs": [
|
|
6
|
+
"node_modules", ".git", ".svn",
|
|
7
|
+
"dist", "build", "out", "output", "target",
|
|
8
|
+
"e2e", "test", "tests", "__tests__",
|
|
9
|
+
"coverage", ".nyc_output",
|
|
10
|
+
".idea", ".vscode", ".qoder", ".speccrew",
|
|
11
|
+
"playwright-report", "test-results",
|
|
12
|
+
".next", ".nuxt", ".output",
|
|
13
|
+
"docs", "scripts", "public", "assets", "mock", "fixtures"
|
|
14
|
+
],
|
|
15
|
+
"tech_stacks": {
|
|
16
|
+
"web": {
|
|
17
|
+
"react": {
|
|
18
|
+
"extensions": [".tsx", ".ts", ".jsx", ".js"],
|
|
19
|
+
"exclude_dirs": ["components", "hooks", "lib", "utils", "contexts", "hocs", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
|
|
20
|
+
"entry_patterns": ["src/pages/**/*.{tsx,jsx}", "src/components/**/*.{tsx,jsx}"],
|
|
21
|
+
"api_call_patterns": ["fetch(", "axios.", "apiClient.", "useQuery", "useMutation"],
|
|
22
|
+
"state_management": ["useState", "useReducer", "Redux", "Zustand", "MobX"],
|
|
23
|
+
"routing": ["react-router", "next/router"],
|
|
24
|
+
"component_patterns": ["export default function", "export const", "React.FC"]
|
|
25
|
+
},
|
|
26
|
+
"vue": {
|
|
27
|
+
"extensions": [".vue", ".ts", ".js"],
|
|
28
|
+
"exclude_dirs": ["components", "composables", "hooks", "utils", "mixins", "directives", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
|
|
29
|
+
"entry_patterns": ["src/views/**/*.vue", "src/components/**/*.vue", "pages/**/*.vue"],
|
|
30
|
+
"api_call_patterns": ["axios.", "fetch(", "$http", "useFetch"],
|
|
31
|
+
"state_management": ["Pinia", "Vuex", "ref", "reactive", "computed"],
|
|
32
|
+
"routing": ["vue-router"],
|
|
33
|
+
"component_patterns": ["<template>", "export default", "defineComponent"]
|
|
34
|
+
},
|
|
35
|
+
"angular": {
|
|
36
|
+
"extensions": [".ts", ".html", ".scss", ".css"],
|
|
37
|
+
"exclude_dirs": ["components", "directives", "pipes", "guards", "interceptors", "services", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
|
|
38
|
+
"entry_patterns": ["src/app/components/**/*.ts", "src/app/pages/**/*.ts"],
|
|
39
|
+
"api_call_patterns": ["HttpClient", "http.get", "http.post"],
|
|
40
|
+
"state_management": ["RxJS", "NgRx", "BehaviorSubject", "Observable"],
|
|
41
|
+
"routing": ["@angular/router"],
|
|
42
|
+
"component_patterns": ["@Component", "export class", "implements OnInit"]
|
|
43
|
+
},
|
|
44
|
+
"nextjs": {
|
|
45
|
+
"extensions": [".tsx", ".ts", ".jsx", ".js"],
|
|
46
|
+
"exclude_dirs": ["components", "hooks", "lib", "utils", "contexts", "api", "src", "views", "pages", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
|
|
47
|
+
"entry_patterns": ["app/**/*.{tsx,jsx}", "pages/**/*.{tsx,jsx}"],
|
|
48
|
+
"api_call_patterns": ["fetch(", "axios.", "useSWR", "React Query"],
|
|
49
|
+
"state_management": ["useState", "Zustand", "Redux", "Context API"],
|
|
50
|
+
"routing": ["file-system routing", "next/navigation"],
|
|
51
|
+
"component_patterns": ["export default", "async function", "'use client'"]
|
|
52
|
+
},
|
|
53
|
+
"nuxt": {
|
|
54
|
+
"extensions": [".vue", ".ts", ".js"],
|
|
55
|
+
"exclude_dirs": ["components", "composables", "utils", "plugins", "middleware", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
|
|
56
|
+
"entry_patterns": ["pages/**/*.vue", "components/**/*.vue"],
|
|
57
|
+
"api_call_patterns": ["$fetch", "useFetch", "axios."],
|
|
58
|
+
"state_management": ["Pinia", "useState", "composables"],
|
|
59
|
+
"routing": ["file-system routing", "vue-router"],
|
|
60
|
+
"component_patterns": ["<template>", "<script setup>", "definePageMeta"]
|
|
61
|
+
},
|
|
62
|
+
"svelte": {
|
|
63
|
+
"extensions": [".svelte", ".ts", ".js"],
|
|
64
|
+
"exclude_dirs": ["components", "lib", "utils", "stores", "actions", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
|
|
65
|
+
"entry_patterns": ["src/**/*.svelte", "routes/**/*.svelte"],
|
|
66
|
+
"api_call_patterns": ["fetch(", "axios."],
|
|
67
|
+
"state_management": ["writable", "readable", "derived", "Svelte Store"],
|
|
68
|
+
"routing": ["svelte-routing", "file-system routing"],
|
|
69
|
+
"component_patterns": ["<script>", "export let", "{#if}"]
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"mobile": {
|
|
73
|
+
"flutter": {
|
|
74
|
+
"extensions": [".dart"],
|
|
75
|
+
"exclude_dirs": ["widgets", "components", "utils", "helpers", "models", "services"],
|
|
76
|
+
"entry_patterns": ["lib/**/*.dart", "lib/pages/**/*.dart", "lib/screens/**/*.dart"],
|
|
77
|
+
"api_call_patterns": ["http.", "dio.", "Dio()", "get(", "post("],
|
|
78
|
+
"state_management": ["Provider", "Riverpod", "Bloc", "GetX", "MobX"],
|
|
79
|
+
"routing": ["Navigator", "GoRouter", "Get.to"],
|
|
80
|
+
"component_patterns": ["class.*extends StatelessWidget", "class.*extends StatefulWidget", "@override Widget build"]
|
|
81
|
+
},
|
|
82
|
+
"react-native": {
|
|
83
|
+
"extensions": [".tsx", ".ts", ".jsx", ".js"],
|
|
84
|
+
"exclude_dirs": ["components", "hooks", "utils", "contexts", "navigations", "src", "views", "pages", "api", "screens", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
|
|
85
|
+
"entry_patterns": ["src/screens/**/*.{tsx,jsx}", "src/components/**/*.{tsx,jsx}"],
|
|
86
|
+
"api_call_patterns": ["fetch(", "axios.", "apiClient."],
|
|
87
|
+
"state_management": ["useState", "Redux", "MobX", "Zustand", "Recoil"],
|
|
88
|
+
"routing": ["react-navigation", "expo-router"],
|
|
89
|
+
"component_patterns": ["export default function", "const.*=.*=>"]
|
|
90
|
+
},
|
|
91
|
+
"uniapp": {
|
|
92
|
+
"extensions": [".vue", ".ts", ".js"],
|
|
93
|
+
"exclude_dirs": ["components", "composables", "utils", "mixins", "directives", "src", "views", "pages", "api", "static", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs", "http", "tabbar", "constants", "common", "hooks", "style"],
|
|
94
|
+
"exclude_file_suffixes": [],
|
|
95
|
+
"strip_module_prefixes": ["pages-"],
|
|
96
|
+
"entry_patterns": ["pages/**/*.vue", "components/**/*.vue"],
|
|
97
|
+
"api_call_patterns": ["uni.request", "uni.uploadFile", "uni.downloadFile"],
|
|
98
|
+
"state_management": ["Vuex", "Pinia", "globalData"],
|
|
99
|
+
"routing": ["pages.json", "uni.navigateTo"],
|
|
100
|
+
"component_patterns": ["<template>", "export default", "onLoad", "onShow"]
|
|
101
|
+
},
|
|
102
|
+
"android": {
|
|
103
|
+
"extensions": [".kt", ".java", ".xml"],
|
|
104
|
+
"entry_patterns": ["app/src/main/java/**/*.kt", "app/src/main/java/**/*.java"],
|
|
105
|
+
"api_call_patterns": ["Retrofit", "OkHttp", "HttpURLConnection"],
|
|
106
|
+
"state_management": ["ViewModel", "LiveData", "StateFlow", "Compose State"],
|
|
107
|
+
"routing": ["Intent", "Navigation Component", "Jetpack Navigation"],
|
|
108
|
+
"component_patterns": ["class.*Activity", "class.*Fragment", "@Composable"]
|
|
109
|
+
},
|
|
110
|
+
"ios": {
|
|
111
|
+
"extensions": [".swift", ".m", ".h", ".storyboard"],
|
|
112
|
+
"entry_patterns": ["**/*.swift", "ViewControllers/**/*.swift"],
|
|
113
|
+
"api_call_patterns": ["URLSession", "Alamofire", "AF.request"],
|
|
114
|
+
"state_management": ["@State", "@ObservedObject", "@StateObject", "Combine"],
|
|
115
|
+
"routing": ["NavigationView", "TabView", "UIStoryboardSegue"],
|
|
116
|
+
"component_patterns": ["struct.*View", "class.*ViewController", "var body: some View"]
|
|
117
|
+
},
|
|
118
|
+
"miniprogram": {
|
|
119
|
+
"extensions": [".js", ".ts", ".wxml", ".wxss", ".json"],
|
|
120
|
+
"exclude_dirs": ["components", "utils", "behaviors", "mixins", "src", "views", "pages", "api", "static", "assets", "store", "stores", "router", "routes", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs", "http", "tabbar", "constants", "common", "hooks", "style"],
|
|
121
|
+
"exclude_file_suffixes": [],
|
|
122
|
+
"strip_module_prefixes": ["pages-"],
|
|
123
|
+
"entry_patterns": ["pages/**/*.js", "pages/**/*.ts", "components/**/*.js"],
|
|
124
|
+
"api_call_patterns": ["wx.request", "wx.uploadFile", "wx.downloadFile"],
|
|
125
|
+
"state_management": ["Page data", "globalData", "MobX", "Westore"],
|
|
126
|
+
"routing": ["app.json pages", "wx.navigateTo", "wx.redirectTo"],
|
|
127
|
+
"component_patterns": ["Page({", "Component({", "properties:", "data:"]
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"backend": {
|
|
131
|
+
"spring": {
|
|
132
|
+
"extensions": [".java", ".kt"],
|
|
133
|
+
"exclude_dirs": ["controller", "controllers", "admin", "app", "api", "service", "services", "repository", "repositories", "dao", "dal", "mysql", "redis", "dataobject", "entity", "entities", "model", "models", "dto", "dtos", "vo", "vos", "mapper", "mappers", "convert", "converter", "converters", "config", "configs", "util", "utils", "common", "exception", "exceptions", "enums", "framework", "job", "mq", "listener", "listeners", "producer", "consumer"],
|
|
134
|
+
"exclude_file_suffixes": ["VO", "DTO", "DO", "Entity", "Convert", "Converter"],
|
|
135
|
+
"entry_patterns": ["**/*Controller.java", "**/*Controller.kt", "**/*Service.java"],
|
|
136
|
+
"api_patterns": {
|
|
137
|
+
"controller": ["@Controller", "@RestController", "@RequestMapping"],
|
|
138
|
+
"methods": ["@GetMapping", "@PostMapping", "@PutMapping", "@DeleteMapping", "@PatchMapping"],
|
|
139
|
+
"parameters": ["@RequestBody", "@PathVariable", "@RequestParam", "@Valid"]
|
|
140
|
+
},
|
|
141
|
+
"dto_patterns": ["class.*DTO", "class.*VO", "class.*Request", "class.*Response"],
|
|
142
|
+
"entity_patterns": ["@Entity", "@Table", "class.*DO", "class.*PO"],
|
|
143
|
+
"validation": ["@Valid", "@NotNull", "@NotBlank", "@Size", "@Pattern"]
|
|
144
|
+
},
|
|
145
|
+
"nestjs": {
|
|
146
|
+
"extensions": [".ts"],
|
|
147
|
+
"exclude_dirs": ["services", "repositories", "entities", "dtos", "guards", "interceptors", "middleware", "pipes", "filters", "decorators", "utils", "helpers"],
|
|
148
|
+
"exclude_file_suffixes": [],
|
|
149
|
+
"entry_patterns": ["**/*.controller.ts", "**/*.service.ts", "**/*.module.ts"],
|
|
150
|
+
"api_patterns": {
|
|
151
|
+
"controller": ["@Controller"],
|
|
152
|
+
"methods": ["@Get", "@Post", "@Put", "@Delete", "@Patch", "@Query", "@Param", "@Body"],
|
|
153
|
+
"parameters": ["@Req", "@Res", "@Query", "@Param", "@Body", "@Headers"]
|
|
154
|
+
},
|
|
155
|
+
"dto_patterns": ["class.*Dto", "class.*DTO", "interface.*Dto"],
|
|
156
|
+
"entity_patterns": ["@Entity", "class.*Entity", "interface.*Entity"],
|
|
157
|
+
"validation": ["class-validator", "@IsString", "@IsNumber", "@IsOptional", "@Validate"]
|
|
158
|
+
},
|
|
159
|
+
"express": {
|
|
160
|
+
"extensions": [".js", ".ts"],
|
|
161
|
+
"exclude_dirs": ["services", "models", "middleware", "utils", "helpers", "validators", "schemas"],
|
|
162
|
+
"exclude_file_suffixes": [],
|
|
163
|
+
"entry_patterns": ["routes/**/*.js", "controllers/**/*.js", "**/*.routes.ts"],
|
|
164
|
+
"api_patterns": {
|
|
165
|
+
"router": ["router.get", "router.post", "router.put", "router.delete", "router.patch"],
|
|
166
|
+
"app": ["app.get", "app.post", "app.use"],
|
|
167
|
+
"middleware": ["req, res, next", "async (req, res)"]
|
|
168
|
+
},
|
|
169
|
+
"dto_patterns": ["Joi validation", "express-validator", "manual validation"],
|
|
170
|
+
"entity_patterns": ["mongoose model", "sequelize model", "prisma schema"],
|
|
171
|
+
"validation": ["Joi.object", "body()", "param()", "query()"]
|
|
172
|
+
},
|
|
173
|
+
"fastify": {
|
|
174
|
+
"extensions": [".js", ".ts"],
|
|
175
|
+
"exclude_dirs": ["services", "models", "schemas", "plugins", "hooks", "utils", "helpers"],
|
|
176
|
+
"exclude_file_suffixes": [],
|
|
177
|
+
"entry_patterns": ["routes/**/*.js", "**/*.routes.ts"],
|
|
178
|
+
"api_patterns": {
|
|
179
|
+
"routes": ["fastify.get", "fastify.post", "fastify.route"],
|
|
180
|
+
"schema": ["schema:", "body:", "querystring:", "params:"]
|
|
181
|
+
},
|
|
182
|
+
"dto_patterns": ["JSON Schema", "typebox", "fastify-schema"],
|
|
183
|
+
"entity_patterns": ["mongoose", "prisma", "typeorm"],
|
|
184
|
+
"validation": ["ajv", "JSON Schema validation"]
|
|
185
|
+
},
|
|
186
|
+
"django": {
|
|
187
|
+
"extensions": [".py"],
|
|
188
|
+
"exclude_dirs": ["models", "serializers", "forms", "utils", "helpers", "middleware", "templatetags"],
|
|
189
|
+
"exclude_file_suffixes": [],
|
|
190
|
+
"entry_patterns": ["views.py", "**/views/*.py", "api/*.py"],
|
|
191
|
+
"api_patterns": {
|
|
192
|
+
"views": ["def.*request", "class.*APIView", "@api_view"],
|
|
193
|
+
"decorators": ["@require_http_methods", "@csrf_exempt", "@permission_classes"]
|
|
194
|
+
},
|
|
195
|
+
"dto_patterns": ["Serializer", "ModelSerializer", "Form"],
|
|
196
|
+
"entity_patterns": ["class.*models.Model", "models.CharField", "models.ForeignKey"],
|
|
197
|
+
"validation": ["serializer.is_valid", "form.is_valid", "validate_*"]
|
|
198
|
+
},
|
|
199
|
+
"fastapi": {
|
|
200
|
+
"extensions": [".py"],
|
|
201
|
+
"exclude_dirs": ["models", "schemas", "services", "repositories", "utils", "helpers", "dependencies", "middleware"],
|
|
202
|
+
"exclude_file_suffixes": [],
|
|
203
|
+
"entry_patterns": ["main.py", "routers/*.py", "api/*.py"],
|
|
204
|
+
"api_patterns": {
|
|
205
|
+
"routes": ["@app.get", "@app.post", "@app.put", "@app.delete", "@router.get"],
|
|
206
|
+
"dependencies": ["Depends", "Query", "Path", "Body"]
|
|
207
|
+
},
|
|
208
|
+
"dto_patterns": ["BaseModel", "Pydantic model", "class.*Schema"],
|
|
209
|
+
"entity_patterns": ["SQLAlchemy", "Tortoise ORM", "Prisma Client"],
|
|
210
|
+
"validation": ["Pydantic validation", "Field(...)", "validator"]
|
|
211
|
+
},
|
|
212
|
+
"go": {
|
|
213
|
+
"extensions": [".go"],
|
|
214
|
+
"exclude_dirs": ["service", "services", "repository", "repositories", "model", "models", "dto", "dtos", "middleware", "utils", "helpers"],
|
|
215
|
+
"exclude_file_suffixes": [],
|
|
216
|
+
"entry_patterns": ["**/*.go", "handlers/*.go", "controllers/*.go"],
|
|
217
|
+
"api_patterns": {
|
|
218
|
+
"router": ["gin.Router", "echo.Echo", "mux.Router", "http.HandleFunc"],
|
|
219
|
+
"handlers": ["gin.HandlerFunc", "echo.HandlerFunc", "func.*http.ResponseWriter"]
|
|
220
|
+
},
|
|
221
|
+
"dto_patterns": ["struct.*Request", "struct.*Response", "type.*DTO"],
|
|
222
|
+
"entity_patterns": ["gorm.Model", "bun:", "ent.*"],
|
|
223
|
+
"validation": ["go-playground/validator", "validate struct tags"]
|
|
224
|
+
},
|
|
225
|
+
"rust": {
|
|
226
|
+
"extensions": [".rs"],
|
|
227
|
+
"exclude_dirs": ["service", "services", "repository", "repositories", "model", "models", "dto", "dtos", "middleware", "utils", "helpers", "schema", "migrations"],
|
|
228
|
+
"exclude_file_suffixes": [],
|
|
229
|
+
"entry_patterns": ["src/**/*.rs", "handlers/*.rs", "routes/*.rs"],
|
|
230
|
+
"api_patterns": {
|
|
231
|
+
"frameworks": ["actix-web", "axum", "rocket", "warp"],
|
|
232
|
+
"handlers": ["#[get]", "#[post]", "async fn", "HttpResponse"]
|
|
233
|
+
},
|
|
234
|
+
"dto_patterns": ["struct.*Request", "struct.*Response", "#[derive(Deserialize)]"],
|
|
235
|
+
"entity_patterns": ["diesel", "sea-orm", "sqlx"],
|
|
236
|
+
"validation": ["validator crate", "#[validate]", "Validate trait"]
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
"desktop": {
|
|
240
|
+
"electron": {
|
|
241
|
+
"extensions": [".ts", ".tsx", ".js", ".jsx", ".html"],
|
|
242
|
+
"entry_patterns": ["src/main.ts", "src/renderer/**/*.tsx", "src/preload.ts"],
|
|
243
|
+
"ipc_patterns": ["ipcMain", "ipcRenderer", "contextBridge"],
|
|
244
|
+
"state_management": ["Redux", "Zustand", "Electron Store"],
|
|
245
|
+
"component_patterns": ["React", "Vue", "Angular in renderer"]
|
|
246
|
+
},
|
|
247
|
+
"tauri": {
|
|
248
|
+
"extensions": [".rs", ".ts", ".tsx", ".vue"],
|
|
249
|
+
"entry_patterns": ["src-tauri/src/main.rs", "src/**/*.ts", "src/**/*.vue"],
|
|
250
|
+
"ipc_patterns": ["invoke", "listen", "emit", "#[tauri::command]"],
|
|
251
|
+
"state_management": ["Pinia", "Redux", "Tauri Store"],
|
|
252
|
+
"component_patterns": ["Frontend framework components", "Rust commands"]
|
|
253
|
+
},
|
|
254
|
+
"wpf": {
|
|
255
|
+
"extensions": [".cs", ".xaml"],
|
|
256
|
+
"entry_patterns": ["**/*.xaml.cs", "ViewModels/**/*.cs", "Views/**/*.xaml"],
|
|
257
|
+
"patterns": ["INotifyPropertyChanged", "ICommand", "MVVM"],
|
|
258
|
+
"state_management": ["MVVM", "ObservableObject", "RelayCommand"]
|
|
259
|
+
},
|
|
260
|
+
"winforms": {
|
|
261
|
+
"extensions": [".cs", ".vb"],
|
|
262
|
+
"entry_patterns": ["**/*.cs", "Forms/**/*.cs"],
|
|
263
|
+
"patterns": ["Form class", "Event handlers", "Control bindings"],
|
|
264
|
+
"state_management": ["DataBinding", "INotifyPropertyChanged"]
|
|
265
|
+
},
|
|
266
|
+
"qt": {
|
|
267
|
+
"extensions": [".cpp", ".h", ".ui", ".py"],
|
|
268
|
+
"entry_patterns": ["src/**/*.cpp", "widgets/**/*.cpp", "*.ui"],
|
|
269
|
+
"patterns": ["Q_OBJECT", "signals:", "slots:", "connect("],
|
|
270
|
+
"state_management": ["Qt Property System", "QAbstractItemModel"]
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
"api": {
|
|
274
|
+
"rest": {
|
|
275
|
+
"description": "RESTful API conventions",
|
|
276
|
+
"methods": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"],
|
|
277
|
+
"status_codes": {
|
|
278
|
+
"success": [200, 201, 204],
|
|
279
|
+
"client_error": [400, 401, 403, 404, 409, 422],
|
|
280
|
+
"server_error": [500, 502, 503, 504]
|
|
281
|
+
},
|
|
282
|
+
"content_types": ["application/json", "application/xml", "multipart/form-data"]
|
|
283
|
+
},
|
|
284
|
+
"graphql": {
|
|
285
|
+
"extensions": [".graphql", ".gql", ".ts", ".js"],
|
|
286
|
+
"entry_patterns": ["schema.graphql", "resolvers/**/*.ts", "typeDefs/**/*.ts"],
|
|
287
|
+
"patterns": ["type Query", "type Mutation", "type Subscription", "@Resolver"],
|
|
288
|
+
"operations": ["query", "mutation", "subscription"]
|
|
289
|
+
},
|
|
290
|
+
"grpc": {
|
|
291
|
+
"extensions": [".proto", ".pb.go", ".pb.java", ".grpc.pb.ts"],
|
|
292
|
+
"entry_patterns": ["**/*.proto", "**/*_pb2*.py", "**/*.pb.go"],
|
|
293
|
+
"patterns": ["service.*{", "rpc.*(", "message.*{", "protoc"],
|
|
294
|
+
"types": ["Unary", "Server Streaming", "Client Streaming", "Bidirectional"]
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"analysis_rules": {
|
|
299
|
+
"file_search_priority": [
|
|
300
|
+
"entry_points from modules.json",
|
|
301
|
+
"**/{module_name}/**/*.{extensions}",
|
|
302
|
+
"platform-specific patterns"
|
|
303
|
+
],
|
|
304
|
+
"api_detection": {
|
|
305
|
+
"ui_modules": "trace fetch/axios/apiClient calls",
|
|
306
|
+
"api_modules": "parse decorators and method signatures"
|
|
307
|
+
},
|
|
308
|
+
"feature_extraction": {
|
|
309
|
+
"ui": "Each page/screen or major user interaction = one feature",
|
|
310
|
+
"api": "Each public API endpoint = one feature"
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"description": "Cross-skill validation rules for consistent data validation across all skills",
|
|
4
|
+
"last_updated": "2026-03-23",
|
|
5
|
+
"naming_conventions": {
|
|
6
|
+
"skill_name": {
|
|
7
|
+
"pattern": "^speccrew-[a-z]+(-[a-z]+)*$",
|
|
8
|
+
"description": "Skill names must use lowercase with hyphens, prefixed with 'speccrew-'",
|
|
9
|
+
"examples": ["speccrew-knowledge-bizs-init", "speccrew-knowledge-dispatch"],
|
|
10
|
+
"invalid_examples": ["Speccrew-Knowledge", "speccrew_knowledge", "knowledge-bizs-init"]
|
|
11
|
+
},
|
|
12
|
+
"module_name": {
|
|
13
|
+
"pattern": "^[a-z]+(-[a-z]+)*$",
|
|
14
|
+
"description": "Module names must use lowercase with hyphens",
|
|
15
|
+
"examples": ["order-management", "user-center", "payment-gateway"],
|
|
16
|
+
"invalid_examples": ["OrderManagement", "order_management", "Order-Center"]
|
|
17
|
+
},
|
|
18
|
+
"platform_id": {
|
|
19
|
+
"pattern": "^(web|mobile|backend|desktop|api)-[a-z]+$",
|
|
20
|
+
"description": "Platform ID must follow {platform_type}-{framework} format",
|
|
21
|
+
"examples": ["web-react", "mobile-flutter", "backend-spring"],
|
|
22
|
+
"invalid_examples": ["web_react", "Mobile-Flutter", "backend"]
|
|
23
|
+
},
|
|
24
|
+
"feature_name": {
|
|
25
|
+
"pattern": "^[a-z]+(-[a-z]+)*$",
|
|
26
|
+
"description": "Feature names must use lowercase with hyphens",
|
|
27
|
+
"examples": ["create-order", "list-users", "get-user-detail"],
|
|
28
|
+
"invalid_examples": ["CreateOrder", "create_order", "Create-Order"]
|
|
29
|
+
},
|
|
30
|
+
"file_name": {
|
|
31
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*\\.md$",
|
|
32
|
+
"description": "Markdown file names must use lowercase with hyphens",
|
|
33
|
+
"examples": ["order-overview.md", "create-order.md", "system-summarize.md"],
|
|
34
|
+
"invalid_examples": ["OrderOverview.md", "create_order.md", "Create-Order.md"]
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"required_fields": {
|
|
38
|
+
"modules_json": {
|
|
39
|
+
"fields": ["code_name", "display_name", "system_type", "entry_points"],
|
|
40
|
+
"conditional_fields": {
|
|
41
|
+
"system_type:ui": ["backend_apis"],
|
|
42
|
+
"system_type:api": ["base_path"]
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"platform_config": {
|
|
46
|
+
"fields": ["platform_type", "platform_subtype", "source_path", "tech_stack"]
|
|
47
|
+
},
|
|
48
|
+
"feature_detail": {
|
|
49
|
+
"fields": ["feature_name", "module_name", "api_method", "api_path"],
|
|
50
|
+
"optional_fields": ["validation_rules", "business_rules", "source_files"]
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"path_validations": {
|
|
54
|
+
"workspace_root": {
|
|
55
|
+
"pattern": "^speccrew-workspace/$",
|
|
56
|
+
"description": "All knowledge outputs must be under speccrew-workspace/"
|
|
57
|
+
},
|
|
58
|
+
"knowledge_base_path": {
|
|
59
|
+
"pattern": "^speccrew-workspace/knowledges/(bizs|techs|base)/",
|
|
60
|
+
"description": "Knowledge files must be under bizs/, techs/, or base/"
|
|
61
|
+
},
|
|
62
|
+
"module_output_path": {
|
|
63
|
+
"pattern": "^speccrew-workspace/knowledges/(bizs|techs)/{platform_type}/{module_name}/$",
|
|
64
|
+
"description": "Module output must follow platform_type/module_name structure"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"language_codes": {
|
|
68
|
+
"valid_codes": ["zh", "en", "ja", "ko", "fr", "de", "es"],
|
|
69
|
+
"default": "zh",
|
|
70
|
+
"mapping": {
|
|
71
|
+
"zh": "中文",
|
|
72
|
+
"en": "English",
|
|
73
|
+
"ja": "日本語",
|
|
74
|
+
"ko": "한국어",
|
|
75
|
+
"fr": "Français",
|
|
76
|
+
"de": "Deutsch",
|
|
77
|
+
"es": "Español"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"system_type_values": {
|
|
81
|
+
"valid_values": ["ui", "api"],
|
|
82
|
+
"descriptions": {
|
|
83
|
+
"ui": "UI-based modules with pages/components",
|
|
84
|
+
"api": "API-based modules with controllers/handlers"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|