openprompt-lang 0.3.0 → 0.4.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.
Files changed (90) hide show
  1. package/README.md +483 -32
  2. package/bin/cli.js +232 -41
  3. package/bin/create.js +135 -0
  4. package/bin/lint.js +20 -21
  5. package/docs/COMMANDS.md +200 -127
  6. package/docs/COMMITS/INDEX.md +1 -0
  7. package/docs/PROMPT_AI_CONTEXT.md +99 -0
  8. package/docs/langs/dotnet.md +36 -0
  9. package/docs/langs/java-spring.md +45 -0
  10. package/docs/langs/python-fastapi.md +35 -0
  11. package/docs/langs/unity.md +30 -0
  12. package/docs/langs/vue-nuxt.md +36 -0
  13. package/package.json +31 -3
  14. package/scaffolds/.cursorrules +6 -0
  15. package/scaffolds/AGENTS.md +27 -0
  16. package/scaffolds/Dockerfile +11 -0
  17. package/scaffolds/capacitor.config.ts +17 -0
  18. package/scaffolds/netlify.toml +8 -0
  19. package/scaffolds/prompt-lang.json +15 -0
  20. package/scaffolds/railway.json +12 -0
  21. package/scaffolds/tailwind.config.js +8 -0
  22. package/scaffolds/tauri.conf.json +26 -0
  23. package/schemas/language-module.json +116 -0
  24. package/schemas/prompt-lang.json +38 -3
  25. package/schemas/structures.json +145 -0
  26. package/src/ai/prompt-builder.js +184 -0
  27. package/src/ai/providers.js +247 -0
  28. package/src/annotations/registry.js +39 -0
  29. package/src/annotations/tags.json +24 -0
  30. package/src/commands/ai-gen.js +161 -0
  31. package/src/commands/component.js +242 -212
  32. package/src/commands/context.js +184 -109
  33. package/src/commands/extract.js +242 -0
  34. package/src/commands/figma.js +15 -15
  35. package/src/commands/init.js +197 -93
  36. package/src/commands/integrate.js +406 -0
  37. package/src/commands/lang.js +148 -0
  38. package/src/commands/qa-gen.js +139 -0
  39. package/src/commands/scaffold.js +127 -0
  40. package/src/commands/suggest.js +24 -14
  41. package/src/commands/teach.js +110 -0
  42. package/src/commands/validate.js +143 -83
  43. package/src/commands/wizard.js +456 -0
  44. package/src/generators/figma-prompt.js +20 -12
  45. package/src/language-service/plugin.cjs +94 -0
  46. package/src/language-service/plugin.d.ts +6 -0
  47. package/src/mcp-server.js +605 -0
  48. package/src/templates/langs/react/INDEX.json +262 -0
  49. package/src/templates/langs/react/MODULE.json +166 -0
  50. package/src/templates/langs/react/templates/hooks/useAuth.template.ts +134 -0
  51. package/src/templates/langs/react/templates/hooks/useDebounce.template.ts +45 -0
  52. package/src/templates/langs/react/templates/hooks/useForm.template.ts +146 -0
  53. package/src/templates/langs/react/templates/hooks/usePagination.template.ts +108 -0
  54. package/src/templates/langs/react/templates/services/apiService.template.ts +123 -0
  55. package/src/templates/langs/react/templates/ui/Button.template.tsx +87 -0
  56. package/src/templates/langs/react/templates/ui/Card.template.tsx +85 -0
  57. package/src/templates/langs/react/templates/ui/DataTable.template.tsx +163 -0
  58. package/src/templates/langs/react/templates/ui/Input.template.tsx +96 -0
  59. package/src/templates/langs/react/templates/ui/Modal.template.tsx +133 -0
  60. package/src/templates/langs/react/templates/ui/Select.template.tsx +99 -0
  61. package/src/templates/langs/vue/INDEX.json +246 -0
  62. package/src/templates/langs/vue/MODULE.json +105 -0
  63. package/src/templates/langs/vue/templates/composables/useAuth.template.ts +106 -0
  64. package/src/templates/langs/vue/templates/composables/useDebounce.template.ts +47 -0
  65. package/src/templates/langs/vue/templates/composables/useFetch.template.ts +54 -0
  66. package/src/templates/langs/vue/templates/composables/useForm.template.ts +127 -0
  67. package/src/templates/langs/vue/templates/composables/usePagination.template.ts +98 -0
  68. package/src/templates/langs/vue/templates/services/apiService.template.ts +116 -0
  69. package/src/templates/langs/vue/templates/ui/Button.template.vue +79 -0
  70. package/src/templates/langs/vue/templates/ui/Card.template.vue +73 -0
  71. package/src/templates/langs/vue/templates/ui/DataTable.template.vue +115 -0
  72. package/src/templates/langs/vue/templates/ui/Input.template.vue +70 -0
  73. package/src/templates/langs/vue/templates/ui/Modal.template.vue +112 -0
  74. package/src/templates/langs/vue/templates/ui/Select.template.vue +77 -0
  75. package/src/templates/scripts/log-actividad.sh +32 -0
  76. package/src/templates/scripts/log-commit.sh +35 -0
  77. package/src/templates/scripts/log-error.sh +45 -0
  78. package/src/templates/scripts/validate.sh +23 -0
  79. package/src/ts-transformer/index.cjs +86 -0
  80. package/src/utils/ai.js +35 -53
  81. package/src/utils/annotations.js +260 -214
  82. package/src/utils/config.js +61 -13
  83. package/src/utils/error-learner.js +203 -0
  84. package/src/utils/file-utils.js +119 -0
  85. package/src/utils/language-loader.js +167 -0
  86. package/src/utils/template-utils.js +45 -0
  87. package/src/vite-plugin/index.js +54 -0
  88. package/vscode-extension/package.json +23 -2
  89. package/vscode-extension/snippets/promptlang.json +1 -3
  90. package/vscode-extension/syntaxes/annotations-code.tmGrammar.json +15 -0
@@ -0,0 +1,36 @@
1
+ # PromptLang para Vue Nuxt 3
2
+
3
+ ## Tags Adaptados
4
+
5
+ | Tag PromptLang | Equivalente Vue | Descripción |
6
+ |---|---|---|
7
+ | `@kind(component)` | `defineComponent` | Componente SFC |
8
+ | `@kind(composable)` | `composables/` | Función composable Vue |
9
+ | `@kind(page)` | `pages/` | Página Nuxt |
10
+ | `@kind(server)` | `server/api/` | API endpoint Nuxt |
11
+ | `@kind(store)` | `defineStore` (Pinia) | Estado global |
12
+ | `@kind(middleware)` | `middleware/` | Middleware Nuxt |
13
+
14
+ ## Contratos
15
+
16
+ ```vue
17
+ <!-- @kind(composable) -->
18
+ <!-- @contract(in: userId: string -> out: User | null @error: string) -->
19
+ <!-- @limit(lines: 80) -->
20
+ <script setup lang="ts">
21
+ export function useUser(userId: MaybeRef<string>) { ... }
22
+ </script>
23
+
24
+ <!-- @kind(page) -->
25
+ <!-- @compose(UserList, UserForm) -->
26
+ <template>
27
+ <UserList />
28
+ <UserForm />
29
+ </template>
30
+ ```
31
+
32
+ ## Scaffolding Generado
33
+ - `composables/useUser.ts` (lógica reactiva)
34
+ - `pages/users/index.vue` (listado)
35
+ - `server/api/users.get.ts` (API endpoint)
36
+ - `stores/user.ts` (Pinia store)
package/package.json CHANGED
@@ -1,27 +1,53 @@
1
1
  {
2
2
  "name": "openprompt-lang",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "PromptLang CLI — Framework de anotaciones para desarrollo asistido por IA",
5
5
  "type": "module",
6
6
  "main": "./bin/cli.js",
7
7
  "bin": {
8
- "openPrompt-Lang": "./bin/cli.js"
8
+ "openPrompt-Lang": "./bin/cli.js",
9
+ "openprompt-create": "./bin/create.js"
9
10
  },
10
11
  "files": [
11
12
  "bin/",
12
13
  "src/",
13
14
  "schemas/",
14
15
  "docs/",
16
+ "scaffolds/",
15
17
  "vscode-extension/",
16
18
  "README.md",
17
19
  "LICENSE"
18
20
  ],
21
+ "exports": {
22
+ ".": "./bin/cli.js",
23
+ "./ts-plugin": {
24
+ "types": "./src/language-service/plugin.d.ts",
25
+ "require": "./src/language-service/plugin.cjs"
26
+ },
27
+ "./vite-plugin": "./src/vite-plugin/index.js",
28
+ "./ts-transformer": {
29
+ "require": "./src/ts-transformer/index.cjs"
30
+ }
31
+ },
19
32
  "scripts": {
20
33
  "start": "node bin/cli.js",
21
34
  "test": "vitest run",
22
35
  "test:watch": "vitest",
36
+ "lint": "eslint .",
37
+ "lint:fix": "eslint . --fix",
38
+ "format": "prettier --write .",
39
+ "format:check": "prettier --check .",
23
40
  "prepublishOnly": "npm test",
24
- "postinstall": "node -e \"console.log('\\n📦 openPrompt-Lang instalado. Ejecuta: npx openPrompt-Lang init\\n')\""
41
+ "postinstall": "node -e \"console.log('\\n📦 openPrompt-Lang instalado. Ejecuta: npx openPrompt-Lang init\\n')\"",
42
+ "opencode:teach": "openprompt-lang teach",
43
+ "opencode:scaffold": "openprompt-lang scaffold folders react",
44
+ "opencode:validate": "openprompt-lang validate",
45
+ "opencode:analyze": "openprompt-lang analyze .",
46
+ "opencode:search": "openprompt-lang lang search",
47
+ "opencode:qa": "openprompt-lang qa-gen --lang react",
48
+ "opencode:context": "openprompt-lang context --output contexto.md",
49
+ "opencode:integrate": "openprompt-lang integrate --all",
50
+ "opencode:wizard": "openprompt-lang wizard"
25
51
  },
26
52
  "keywords": [
27
53
  "prompt-lang",
@@ -43,6 +69,8 @@
43
69
  "inquirer": "^9.3.0"
44
70
  },
45
71
  "devDependencies": {
72
+ "eslint": "^10.3.0",
73
+ "prettier": "^3.8.3",
46
74
  "vitest": "^4.1.6"
47
75
  },
48
76
  "repository": {
@@ -0,0 +1,6 @@
1
+ # openPrompt-Lang Rules for AI Assistants
2
+ Always parse prompt-lang.json and use openPrompt syntax for all generated code.
3
+ @openprompt prefix triggers MVP wizard: ask stack/features/deploy questions before generating.
4
+ Priority: reuse existing templates from templates/ and errors from errors.json.
5
+ Use @kind, @contract, @limit, @props annotations on all generated files.
6
+ No any types. Strict linting. Validate before suggesting.
@@ -0,0 +1,27 @@
1
+ # AGENTS.md — Contexto para IA
2
+
3
+ ## Stack
4
+ - React 18 + TypeScript + Vite
5
+ - Tailwind CSS
6
+ - Zustand (estado global)
7
+
8
+ ## Convenciones
9
+ - Un componente por archivo, máximo 120 líneas
10
+ - Un hook por archivo, máximo 80 líneas
11
+ - 100% Tailwind utility classes (sin CSS personalizado)
12
+ - Barrel exports en cada carpeta (index.ts)
13
+ - Commits: conventional commits + log en docs/COMMITS/
14
+ - Framework: openPrompt-Lang (anotaciones @kind, @contract, @limit, etc.)
15
+
16
+ ## Perfil del desarrollador
17
+ senior
18
+
19
+ ## Reglas críticas
20
+ - NO usar any
21
+ - NO superar límites de líneas sin refactorizar
22
+ - Ejecutar `npm run validate:all` antes de cada commit
23
+ - Las anotaciones PromptLang deben declarar @use() al inicio del archivo
24
+
25
+ ## Referencias
26
+ - Framework: docs/FRAMEWORK.md
27
+ - Sintaxis PromptLang: docs/SYNTAX.md
@@ -0,0 +1,11 @@
1
+ FROM node:20-alpine AS builder
2
+ WORKDIR /app
3
+ COPY package*.json ./
4
+ RUN npm ci
5
+ COPY . .
6
+ RUN npm run build:prod
7
+
8
+ FROM nginx:alpine
9
+ COPY --from=builder /app/dist /usr/share/nginx/html
10
+ EXPOSE 80
11
+ CMD ["nginx", "-g", "daemon off;"]
@@ -0,0 +1,17 @@
1
+ import { CapacitorConfig } from "@capacitor/cli"
2
+
3
+ const config: CapacitorConfig = {
4
+ appId: "com.app.app",
5
+ appName: "App",
6
+ webDir: "dist",
7
+ server: {
8
+ androidScheme: "https",
9
+ },
10
+ plugins: {
11
+ SplashScreen: {
12
+ launchShowDuration: 2000,
13
+ },
14
+ },
15
+ }
16
+
17
+ export default config
@@ -0,0 +1,8 @@
1
+ [build]
2
+ command = "npm run build:prod"
3
+ publish = "dist"
4
+
5
+ [[redirects]]
6
+ from = "/*"
7
+ to = "/index.html"
8
+ status = 200
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "mi-app",
3
+ "version": "0.1.0",
4
+ "lenguaje": "react",
5
+ "stack": {
6
+ "base": ["react", "typescript", "vite", "tailwind"]
7
+ },
8
+ "profile": "senior",
9
+ "annotations": { "enabled": true, "strict": true },
10
+ "docs": { "commits": true, "logs": true, "backlog": true },
11
+ "extractor": {
12
+ "ignore": [".env", "*.local", "dist", "node_modules"],
13
+ "output": "contexto.md"
14
+ }
15
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://railway.app/railway.schema.json",
3
+ "build": {
4
+ "builder": "NIXPACKS",
5
+ "buildCommand": "npm run build:prod"
6
+ },
7
+ "deploy": {
8
+ "startCommand": "npm run dev:start",
9
+ "healthcheckPath": "/",
10
+ "restartPolicyType": "ON_FAILURE"
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ /** @type {import('tailwindcss').Config} */
2
+ export default {
3
+ content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4
+ theme: {
5
+ extend: {},
6
+ },
7
+ plugins: [],
8
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json",
3
+ "productName": "App",
4
+ "version": "0.1.0",
5
+ "identifier": "com.app.app",
6
+ "build": {
7
+ "frontendDist": "../dist",
8
+ "devUrl": "http://localhost:5173",
9
+ "beforeBuildCommand": "npm run build:prod",
10
+ "beforeDevCommand": "npm run dev:start"
11
+ },
12
+ "app": {
13
+ "windows": [
14
+ {
15
+ "title": "App",
16
+ "width": 1200,
17
+ "height": 800,
18
+ "resizable": true,
19
+ "fullscreen": false
20
+ }
21
+ ],
22
+ "security": {
23
+ "csp": null
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "openPrompt-Lang Language Module",
4
+ "description": "Schema for pluggable language modules",
5
+ "type": "object",
6
+ "required": ["id", "name", "version", "tags", "structure"],
7
+ "properties": {
8
+ "id": {
9
+ "type": "string",
10
+ "description": "Unique language identifier (e.g. 'react', 'vue', 'java-spring')"
11
+ },
12
+ "name": {
13
+ "type": "string",
14
+ "description": "Human-readable name (e.g. 'React + TypeScript')"
15
+ },
16
+ "version": {
17
+ "type": "string",
18
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
19
+ "description": "Module version (semver)"
20
+ },
21
+ "tags": {
22
+ "type": "object",
23
+ "description": "PromptLang tag mappings for this language",
24
+ "properties": {
25
+ "kind": {
26
+ "type": "object",
27
+ "description": "Available @kind values",
28
+ "additionalProperties": {
29
+ "type": "object",
30
+ "properties": {
31
+ "extends": { "type": "string" },
32
+ "limit": { "type": "number" },
33
+ "requires": { "type": "array", "items": { "type": "string" } },
34
+ "forbids": { "type": "array", "items": { "type": "string" } },
35
+ "suggests": { "type": "array", "items": { "type": "string" } },
36
+ "description": { "type": "string" }
37
+ }
38
+ }
39
+ },
40
+ "platforms": {
41
+ "type": "array",
42
+ "items": { "type": "string" }
43
+ },
44
+ "forbidden": {
45
+ "type": "array",
46
+ "items": { "type": "string" }
47
+ }
48
+ }
49
+ },
50
+ "structure": {
51
+ "type": "object",
52
+ "description": "Folder structure and scaffold config",
53
+ "required": ["folders"],
54
+ "properties": {
55
+ "folders": {
56
+ "type": "array",
57
+ "items": { "type": "string" }
58
+ },
59
+ "scaffolds": {
60
+ "type": "array",
61
+ "items": { "type": "string" }
62
+ },
63
+ "deps": {
64
+ "type": "object",
65
+ "description": "Dependency presets for this language",
66
+ "additionalProperties": {
67
+ "type": "object",
68
+ "properties": {
69
+ "prod": { "type": "array", "items": { "type": "string" } },
70
+ "dev": { "type": "array", "items": { "type": "string" } }
71
+ }
72
+ }
73
+ }
74
+ }
75
+ },
76
+ "projectTypes": {
77
+ "type": "object",
78
+ "description": "Available project types for this language",
79
+ "additionalProperties": {
80
+ "type": "object",
81
+ "properties": {
82
+ "name": { "type": "string" },
83
+ "ui": { "type": "boolean" },
84
+ "description": { "type": "string" }
85
+ }
86
+ }
87
+ },
88
+ "uiStyles": {
89
+ "type": "array",
90
+ "items": {
91
+ "type": "string"
92
+ },
93
+ "description": "Available UI style libraries"
94
+ },
95
+ "extensions": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "properties": {
100
+ "name": { "type": "string" },
101
+ "value": { "type": "string" },
102
+ "deps": {
103
+ "type": "array",
104
+ "items": { "type": "string" }
105
+ },
106
+ "description": { "type": "string" }
107
+ }
108
+ }
109
+ },
110
+ "annotationTags": {
111
+ "type": "array",
112
+ "items": { "type": "string" },
113
+ "description": "Custom @annotation tags specific to this language module"
114
+ }
115
+ }
116
+ }
@@ -13,6 +13,12 @@
13
13
  "pattern": "^\\d+\\.\\d+\\.\\d+$",
14
14
  "description": "Versión del proyecto (semver)"
15
15
  },
16
+ "lenguaje": {
17
+ "type": "string",
18
+ "enum": ["react", "vue", "angular", "node", "java", "csharp", "python", "unity", "rust"],
19
+ "default": "react",
20
+ "description": "Lenguaje/framework principal del proyecto"
21
+ },
16
22
  "stack": {
17
23
  "type": "object",
18
24
  "properties": {
@@ -20,7 +26,20 @@
20
26
  "type": "array",
21
27
  "items": {
22
28
  "type": "string",
23
- "enum": ["react", "typescript", "vite", "tailwind", "vue", "angular"]
29
+ "enum": [
30
+ "react",
31
+ "typescript",
32
+ "vite",
33
+ "tailwind",
34
+ "vue",
35
+ "angular",
36
+ "nuxt",
37
+ "next",
38
+ "express",
39
+ "spring-boot",
40
+ "fastapi",
41
+ "dotnet"
42
+ ]
24
43
  },
25
44
  "description": "Stack base del proyecto"
26
45
  },
@@ -28,7 +47,18 @@
28
47
  "type": "array",
29
48
  "items": {
30
49
  "type": "string",
31
- "enum": ["supabase", "ionic", "capacitor", "tauri", "firebase", "trpc", "next"]
50
+ "enum": [
51
+ "supabase",
52
+ "ionic",
53
+ "capacitor",
54
+ "tauri",
55
+ "firebase",
56
+ "trpc",
57
+ "next",
58
+ "prisma",
59
+ "stripe",
60
+ "webpay"
61
+ ]
32
62
  },
33
63
  "description": "Extensiones opcionales del stack"
34
64
  }
@@ -67,7 +97,12 @@
67
97
  "type": "object",
68
98
  "properties": {
69
99
  "enabled": { "type": "boolean", "default": true },
70
- "strict": { "type": "boolean", "default": false }
100
+ "strict": { "type": "boolean", "default": false },
101
+ "customTags": {
102
+ "type": "array",
103
+ "items": { "type": "string" },
104
+ "description": "Additional @annotation tags beyond built-in ones"
105
+ }
71
106
  }
72
107
  },
73
108
  "docs": {
@@ -0,0 +1,145 @@
1
+ {
2
+ "react-vite": {
3
+ "name": "React Vite TypeScript",
4
+ "folders": [
5
+ "src/components/ui",
6
+ "src/components/layout",
7
+ "src/components/shared",
8
+ "src/features",
9
+ "src/hooks",
10
+ "src/services",
11
+ "src/store",
12
+ "src/types",
13
+ "src/utils",
14
+ "docs/COMMITS",
15
+ "docs/LOGS/ERRORES",
16
+ "docs/LOGS/ACTIVIDAD",
17
+ "docs/BACKLOG",
18
+ "docs/PROMPTS/PLANTILLAS",
19
+ "docs/PROMPTS/STACK",
20
+ "scripts"
21
+ ],
22
+ "scaffolds": ["prompt-lang.json", "AGENTS.md", ".gitignore", "tailwind.config.js"],
23
+ "deps": {
24
+ "base": {
25
+ "dev": ["typescript", "vite", "@vitejs/plugin-react", "tailwindcss", "@tailwindcss/vite"]
26
+ },
27
+ "supabase": { "prod": ["@supabase/supabase-js", "@supabase/ssr"] },
28
+ "stripe": { "prod": ["@stripe/react-stripe-js", "@stripe/stripe-js"] },
29
+ "ionic": {
30
+ "prod": ["@ionic/react", "@ionic/react-router", "@capacitor/core"],
31
+ "dev": ["@capacitor/cli"]
32
+ },
33
+ "tauri": { "dev": ["@tauri-apps/cli"] }
34
+ },
35
+ "default_scripts": {
36
+ "dev:start": "vite",
37
+ "dev:preview": "vite preview",
38
+ "build:prod": "vite build",
39
+ "build:analyze": "vite build --analyze",
40
+ "lint:check": "eslint src --ext .ts,.tsx",
41
+ "lint:fix": "eslint src --ext .ts,.tsx --fix",
42
+ "type:check": "tsc --noEmit",
43
+ "quality:doctor": "npx react-doctor check ./src",
44
+ "test:unit": "vitest run",
45
+ "test:watch": "vitest",
46
+ "test:coverage": "vitest run --coverage",
47
+ "validate:all": "npm run lint:check && npm run type:check && npm run quality:doctor && npm run test:unit"
48
+ }
49
+ },
50
+ "vue-nuxt": {
51
+ "name": "Vue Nuxt 3",
52
+ "folders": [
53
+ "composables",
54
+ "components/ui",
55
+ "components/layout",
56
+ "pages",
57
+ "server/api",
58
+ "server/utils",
59
+ "stores",
60
+ "types",
61
+ "docs/COMMITS",
62
+ "docs/LOGS/ERRORES",
63
+ "docs/BACKLOG"
64
+ ],
65
+ "scaffolds": ["prompt-lang.json", "AGENTS.md", ".gitignore"]
66
+ },
67
+ "angular": {
68
+ "name": "Angular Standalone",
69
+ "folders": [
70
+ "src/app/services",
71
+ "src/app/components/shared",
72
+ "src/app/pages",
73
+ "src/app/interfaces",
74
+ "src/app/guards",
75
+ "src/app/interceptors",
76
+ "projects",
77
+ "docs/COMMITS",
78
+ "docs/BACKLOG"
79
+ ],
80
+ "scaffolds": ["prompt-lang.json", "AGENTS.md", ".gitignore"]
81
+ },
82
+ "ionic": {
83
+ "name": "Ionic Capacitor",
84
+ "folders": [
85
+ "src/pages",
86
+ "src/components/ui",
87
+ "src/services",
88
+ "src/hooks",
89
+ "src/store",
90
+ "src/theme",
91
+ "android",
92
+ "ios",
93
+ "docs/COMMITS",
94
+ "docs/BACKLOG"
95
+ ],
96
+ "scaffolds": ["capacitor.config.ts", "prompt-lang.json", "AGENTS.md", ".gitignore"]
97
+ },
98
+ "node-express": {
99
+ "name": "Node Express API",
100
+ "folders": [
101
+ "src/routes",
102
+ "src/controllers",
103
+ "src/services",
104
+ "src/models",
105
+ "src/middleware",
106
+ "src/utils",
107
+ "src/validators",
108
+ "docs/COMMITS",
109
+ "docs/BACKLOG",
110
+ "scripts"
111
+ ],
112
+ "scaffolds": ["prompt-lang.json", "AGENTS.md", ".gitignore", "Dockerfile"]
113
+ },
114
+ "spring-boot": {
115
+ "name": "Spring Boot Microservice",
116
+ "folders": [
117
+ "src/main/java/com/app/controller",
118
+ "src/main/java/com/app/service",
119
+ "src/main/java/com/app/repository",
120
+ "src/main/java/com/app/model/entity",
121
+ "src/main/java/com/app/model/dto",
122
+ "src/main/java/com/app/config",
123
+ "src/main/java/com/app/exception",
124
+ "src/main/resources",
125
+ "src/test/java/com/app",
126
+ "docs/COMMITS",
127
+ "docs/BACKLOG"
128
+ ],
129
+ "scaffolds": ["prompt-lang.json", "AGENTS.md", ".gitignore", "Dockerfile"]
130
+ },
131
+ "python-fastapi": {
132
+ "name": "Python FastAPI",
133
+ "folders": [
134
+ "app/routes",
135
+ "app/services",
136
+ "app/models",
137
+ "app/schemas",
138
+ "app/core",
139
+ "tests",
140
+ "docs/COMMITS",
141
+ "docs/BACKLOG"
142
+ ],
143
+ "scaffolds": ["prompt-lang.json", "AGENTS.md", ".gitignore", "Dockerfile"]
144
+ }
145
+ }