create-vasvibe 2.4.0 → 2.5.1

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 (286) hide show
  1. package/README.md +170 -167
  2. package/bin/cli.mjs +9 -9
  3. package/package.json +45 -45
  4. package/src/git.mjs +47 -47
  5. package/src/index.mjs +228 -228
  6. package/src/prompts.mjs +113 -113
  7. package/src/scaffold.mjs +74 -74
  8. package/src/upgrade.mjs +121 -121
  9. package/src/utils.mjs +91 -91
  10. package/template/.agents/agents/analyst/agent.json +43 -43
  11. package/template/.agents/agents/backend/agent.json +44 -44
  12. package/template/.agents/agents/data-architect/agent.json +43 -43
  13. package/template/.agents/agents/devops/agent.json +44 -44
  14. package/template/.agents/agents/discovery/agent.json +43 -43
  15. package/template/.agents/agents/document/agent.json +43 -43
  16. package/template/.agents/agents/explorer/agent.json +43 -43
  17. package/template/.agents/agents/fixer/agent.json +44 -44
  18. package/template/.agents/agents/frontend/agent.json +44 -44
  19. package/template/.agents/agents/fullstack/agent.json +44 -44
  20. package/template/.agents/agents/initiator/agent.json +41 -41
  21. package/template/.agents/agents/logger/agent.json +43 -43
  22. package/template/.agents/agents/manual-tester/agent.json +44 -0
  23. package/template/.agents/agents/orchestrator/agent.json +44 -44
  24. package/template/.agents/agents/pm/agent.json +42 -42
  25. package/template/.agents/agents/qa/agent.json +44 -44
  26. package/template/.agents/agents/reliability/agent.json +44 -44
  27. package/template/.agents/agents/security/agent.json +44 -44
  28. package/template/.agents/agents/sysarch/agent.json +44 -44
  29. package/template/.agents/agents/tester/agent.json +44 -44
  30. package/template/.agents/agents/toolsmith/agent.json +44 -44
  31. package/template/.agents/agents/ux-designer/agent.json +43 -43
  32. package/template/.agents/skills/find-skills/SKILL.md +142 -142
  33. package/template/.agents/skills/fullstack/SKILL.md +89 -89
  34. package/template/.agents/skills/penetration-testing/SKILL.md +94 -94
  35. package/template/.agents/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
  36. package/template/.agents/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
  37. package/template/.agents/skills/penetration-testing/scripts/security-checklist.sh +30 -30
  38. package/template/.agents/skills/pm/SKILL.md +170 -170
  39. package/template/.agents/skills/ui-ux-pro-max/SKILL.md +658 -658
  40. package/template/.agents/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
  41. package/template/.agents/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
  42. package/template/.agents/skills/ui-ux-pro-max/data/design.csv +1775 -1775
  43. package/template/.agents/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
  44. package/template/.agents/skills/ui-ux-pro-max/data/icons.csv +105 -105
  45. package/template/.agents/skills/ui-ux-pro-max/data/products.csv +162 -162
  46. package/template/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  47. package/template/.agents/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
  48. package/template/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  49. package/template/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  50. package/template/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  51. package/template/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  52. package/template/.agents/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
  53. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  54. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  55. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  56. package/template/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  57. package/template/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  58. package/template/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  59. package/template/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  60. package/template/.agents/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
  61. package/template/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  62. package/template/.agents/skills/ui-ux-pro-max/data/typography.csv +74 -74
  63. package/template/.agents/skills/ui-ux-pro-max/scripts/core.py +262 -262
  64. package/template/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
  65. package/template/.agents/workflows/build-feature.md +21 -21
  66. package/template/.agents/workflows/build-prototype.md +32 -32
  67. package/template/.agents/workflows/daily-standup.md +16 -16
  68. package/template/.agents/workflows/deliver-feature.md +16 -16
  69. package/template/.agents/workflows/explorer.md +78 -78
  70. package/template/.agents/workflows/harden-release.md +21 -21
  71. package/template/.agents/workflows/logger.md +117 -117
  72. package/template/.agents/workflows/plan-feature.md +30 -30
  73. package/template/.agents/workflows/plan-project.md +25 -25
  74. package/template/.agents/workflows/release.md +18 -18
  75. package/template/.agents/workflows/security-audit.md +19 -19
  76. package/template/.agents/workflows/setup-workspace.md +21 -21
  77. package/template/.agents/workflows/start-fix.md +18 -18
  78. package/template/.agents/workflows/test-feature.md +17 -17
  79. package/template/.claude/agents/analyst.md +109 -109
  80. package/template/.claude/agents/backend.md +61 -61
  81. package/template/.claude/agents/data-architect.md +43 -43
  82. package/template/.claude/agents/devops.md +44 -43
  83. package/template/.claude/agents/discovery.md +51 -51
  84. package/template/.claude/agents/document.md +51 -51
  85. package/template/.claude/agents/explorer.md +138 -138
  86. package/template/.claude/agents/fixer.md +87 -86
  87. package/template/.claude/agents/frontend.md +65 -65
  88. package/template/.claude/agents/fullstack.md +91 -90
  89. package/template/.claude/agents/initiator.md +74 -74
  90. package/template/.claude/agents/logger.md +143 -143
  91. package/template/.claude/agents/manual-tester.md +108 -0
  92. package/template/.claude/agents/orchestrator.md +138 -137
  93. package/template/.claude/agents/pm.md +199 -199
  94. package/template/.claude/agents/qa.md +66 -65
  95. package/template/.claude/agents/reliability.md +48 -47
  96. package/template/.claude/agents/security.md +107 -106
  97. package/template/.claude/agents/sysarch.md +301 -301
  98. package/template/.claude/agents/tester.md +100 -100
  99. package/template/.claude/agents/toolsmith.md +77 -76
  100. package/template/.claude/agents/ux-designer.md +45 -45
  101. package/template/.claude/commands/build-feature.md +22 -22
  102. package/template/.claude/commands/build-prototype.md +33 -33
  103. package/template/.claude/commands/daily-standup.md +16 -16
  104. package/template/.claude/commands/deliver-feature.md +17 -17
  105. package/template/.claude/commands/harden-release.md +22 -22
  106. package/template/.claude/commands/manual-test.md +19 -0
  107. package/template/.claude/commands/plan-feature.md +31 -31
  108. package/template/.claude/commands/plan-project.md +26 -26
  109. package/template/.claude/commands/release.md +19 -19
  110. package/template/.claude/commands/security-audit.md +20 -20
  111. package/template/.claude/commands/setup-workspace.md +22 -22
  112. package/template/.claude/commands/start-fix.md +19 -19
  113. package/template/.claude/commands/test-feature.md +18 -18
  114. package/template/.claude/skills/find-skills/SKILL.md +142 -142
  115. package/template/.claude/skills/penetration-testing/SKILL.md +94 -94
  116. package/template/.claude/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
  117. package/template/.claude/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
  118. package/template/.claude/skills/penetration-testing/scripts/security-checklist.sh +30 -30
  119. package/template/.claude/skills/ui-ux-pro-max/SKILL.md +658 -658
  120. package/template/.claude/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
  121. package/template/.claude/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
  122. package/template/.claude/skills/ui-ux-pro-max/data/design.csv +1775 -1775
  123. package/template/.claude/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
  124. package/template/.claude/skills/ui-ux-pro-max/data/icons.csv +105 -105
  125. package/template/.claude/skills/ui-ux-pro-max/data/products.csv +162 -162
  126. package/template/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  127. package/template/.claude/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
  128. package/template/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  129. package/template/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  130. package/template/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  131. package/template/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  132. package/template/.claude/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
  133. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  134. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  135. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  136. package/template/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  137. package/template/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  138. package/template/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  139. package/template/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  140. package/template/.claude/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
  141. package/template/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  142. package/template/.claude/skills/ui-ux-pro-max/data/typography.csv +74 -74
  143. package/template/.claude/skills/ui-ux-pro-max/scripts/core.py +262 -262
  144. package/template/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
  145. package/template/.github/prompts/analyst.prompt.md +104 -104
  146. package/template/.github/prompts/backend.prompt.md +44 -44
  147. package/template/.github/prompts/data-architect.prompt.md +38 -38
  148. package/template/.github/prompts/devops.prompt.md +32 -32
  149. package/template/.github/prompts/discovery.prompt.md +39 -39
  150. package/template/.github/prompts/document.prompt.md +14 -14
  151. package/template/.github/prompts/explorer.prompt.md +133 -133
  152. package/template/.github/prompts/fixer.prompt.md +82 -81
  153. package/template/.github/prompts/frontend.prompt.md +60 -60
  154. package/template/.github/prompts/fullstack.prompt.md +86 -86
  155. package/template/.github/prompts/initiator.prompt.md +55 -55
  156. package/template/.github/prompts/logger.prompt.md +138 -138
  157. package/template/.github/prompts/manual-tester.prompt.md +103 -0
  158. package/template/.github/prompts/orchestrator.prompt.md +133 -133
  159. package/template/.github/prompts/pm.prompt.md +186 -186
  160. package/template/.github/prompts/qa.prompt.md +57 -57
  161. package/template/.github/prompts/reliability.prompt.md +44 -44
  162. package/template/.github/prompts/security.prompt.md +41 -41
  163. package/template/.github/prompts/sysarch.prompt.md +351 -351
  164. package/template/.github/prompts/tester.prompt.md +107 -107
  165. package/template/.github/prompts/toolsmith.prompt.md +46 -46
  166. package/template/.github/prompts/ux-designer.prompt.md +41 -41
  167. package/template/.opencode/agents/analyst.md +108 -108
  168. package/template/.opencode/agents/backend.md +61 -61
  169. package/template/.opencode/agents/data-architect.md +43 -43
  170. package/template/.opencode/agents/devops.md +44 -44
  171. package/template/.opencode/agents/discovery.md +51 -51
  172. package/template/.opencode/agents/document.md +51 -51
  173. package/template/.opencode/agents/explorer.md +137 -137
  174. package/template/.opencode/agents/fixer.md +86 -85
  175. package/template/.opencode/agents/frontend.md +64 -64
  176. package/template/.opencode/agents/fullstack.md +90 -89
  177. package/template/.opencode/agents/initiator.md +74 -74
  178. package/template/.opencode/agents/logger.md +142 -142
  179. package/template/.opencode/agents/manual-tester.md +107 -0
  180. package/template/.opencode/agents/orchestrator.md +137 -133
  181. package/template/.opencode/agents/pm.md +199 -199
  182. package/template/.opencode/agents/qa.md +66 -65
  183. package/template/.opencode/agents/reliability.md +48 -48
  184. package/template/.opencode/agents/security.md +107 -107
  185. package/template/.opencode/agents/sysarch.md +301 -301
  186. package/template/.opencode/agents/tester.md +100 -100
  187. package/template/.opencode/agents/toolsmith.md +77 -77
  188. package/template/.opencode/agents/ux-designer.md +45 -45
  189. package/template/.opencode/commands/build-feature.md +21 -21
  190. package/template/.opencode/commands/build-prototype.md +32 -32
  191. package/template/.opencode/commands/daily-standup.md +16 -16
  192. package/template/.opencode/commands/deliver-feature.md +16 -16
  193. package/template/.opencode/commands/harden-release.md +21 -21
  194. package/template/.opencode/commands/manual-test.md +18 -0
  195. package/template/.opencode/commands/plan-feature.md +30 -30
  196. package/template/.opencode/commands/plan-project.md +25 -25
  197. package/template/.opencode/commands/release.md +18 -18
  198. package/template/.opencode/commands/security-audit.md +19 -19
  199. package/template/.opencode/commands/setup-workspace.md +21 -21
  200. package/template/.opencode/commands/start-fix.md +18 -18
  201. package/template/.opencode/commands/test-feature.md +17 -17
  202. package/template/.opencode/skills/penetration-testing/SKILL.md +94 -94
  203. package/template/.opencode/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
  204. package/template/.opencode/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
  205. package/template/.opencode/skills/penetration-testing/scripts/security-checklist.sh +30 -30
  206. package/template/.opencode/skills/ui-ux-pro-max/SKILL.md +658 -658
  207. package/template/.opencode/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
  208. package/template/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
  209. package/template/.opencode/skills/ui-ux-pro-max/data/design.csv +1775 -1775
  210. package/template/.opencode/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
  211. package/template/.opencode/skills/ui-ux-pro-max/data/icons.csv +105 -105
  212. package/template/.opencode/skills/ui-ux-pro-max/data/products.csv +162 -162
  213. package/template/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  214. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
  215. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  216. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  217. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  218. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  219. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
  220. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  221. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  222. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  223. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  224. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  225. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  226. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  227. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
  228. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  229. package/template/.opencode/skills/ui-ux-pro-max/data/typography.csv +74 -74
  230. package/template/.opencode/skills/ui-ux-pro-max/scripts/core.py +262 -262
  231. package/template/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
  232. package/template/AGENT_PERSONAS.md +595 -551
  233. package/template/GIT_STRUCTURE_GUIDE.md +270 -270
  234. package/template/PROJECT_README.example.md +81 -81
  235. package/template/QUICK-START.md +134 -131
  236. package/template/README.md +1942 -1919
  237. package/template/_gitignore +138 -138
  238. package/template/agent/workflows/_shared/change-management.md +70 -70
  239. package/template/agent/workflows/_shared/git-branch-management.md +25 -25
  240. package/template/agent/workflows/_shared/phases.md +88 -88
  241. package/template/agent/workflows/_shared/state-management.md +87 -87
  242. package/template/agent/workflows/_shared/work-depth.md +46 -46
  243. package/template/agent/workflows/analyst.md +104 -104
  244. package/template/agent/workflows/backend.md +61 -61
  245. package/template/agent/workflows/data-architect.md +43 -43
  246. package/template/agent/workflows/devops.md +44 -44
  247. package/template/agent/workflows/discovery.md +51 -51
  248. package/template/agent/workflows/document.md +51 -51
  249. package/template/agent/workflows/explorer.md +133 -133
  250. package/template/agent/workflows/fixer.md +82 -81
  251. package/template/agent/workflows/frontend.md +60 -60
  252. package/template/agent/workflows/fullstack.md +86 -86
  253. package/template/agent/workflows/initiator.md +74 -74
  254. package/template/agent/workflows/logger.md +138 -138
  255. package/template/agent/workflows/manual-tester.md +103 -0
  256. package/template/agent/workflows/orchestrator.md +133 -133
  257. package/template/agent/workflows/pm.md +199 -199
  258. package/template/agent/workflows/qa.md +66 -66
  259. package/template/agent/workflows/reliability.md +48 -48
  260. package/template/agent/workflows/security.md +107 -107
  261. package/template/agent/workflows/sysarch.md +301 -301
  262. package/template/agent/workflows/tester.md +100 -100
  263. package/template/agent/workflows/toolsmith.md +77 -77
  264. package/template/agent/workflows/ux-designer.md +45 -45
  265. package/template/codes/.gitkeep +1 -1
  266. package/template/project_overview_example.md +54 -54
  267. package/template/schemas/adr.template.md +36 -36
  268. package/template/schemas/changelog.template.md +34 -34
  269. package/template/schemas/data-model.template.md +57 -57
  270. package/template/schemas/design-system.template.md +63 -63
  271. package/template/schemas/dev_log.template.md +20 -20
  272. package/template/schemas/product-ci.template.yml +50 -50
  273. package/template/schemas/requirements.template.md +64 -64
  274. package/template/schemas/security-standards.template.md +58 -58
  275. package/template/schemas/security_report.template.md +89 -89
  276. package/template/schemas/specification.template.md +71 -71
  277. package/template/schemas/style_guide.template.md +29 -29
  278. package/template/schemas/task_list.template.md +28 -28
  279. package/template/schemas/workspace-manifest.template.json +24 -24
  280. package/template/schemas/workspace-registry.json +95 -95
  281. package/template/skills-lock.json +11 -11
  282. package/template/specifications/.gitkeep +3 -3
  283. package/template/state/knowledge_base/.gitkeep +1 -1
  284. package/template/state/knowledge_base/requirements/.gitkeep +1 -1
  285. package/template/tests/.gitkeep +1 -1
  286. package/template/.claude/settings.local.json +0 -44
package/src/utils.mjs CHANGED
@@ -1,91 +1,91 @@
1
- // src/utils.mjs
2
- // Small utility helpers: logger, fs ops, placeholder substitution.
3
-
4
- import { promises as fs } from 'node:fs';
5
- import path from 'node:path';
6
- import pc from 'picocolors';
7
-
8
- export const log = {
9
- info: (msg) => console.log(pc.cyan('ℹ'), msg),
10
- success: (msg) => console.log(pc.green('✔'), msg),
11
- warn: (msg) => console.log(pc.yellow('⚠'), msg),
12
- error: (msg) => console.error(pc.red('✖'), msg),
13
- step: (msg) => console.log(pc.dim('›'), msg),
14
- blank: () => console.log(''),
15
- raw: (msg) => console.log(msg),
16
- title: (msg) => console.log(pc.bold(pc.magenta(msg))),
17
- };
18
-
19
- export async function pathExists(p) {
20
- try {
21
- await fs.access(p);
22
- return true;
23
- } catch {
24
- return false;
25
- }
26
- }
27
-
28
- export async function isDirEmpty(dir) {
29
- try {
30
- const entries = await fs.readdir(dir);
31
- return entries.length === 0;
32
- } catch {
33
- return true;
34
- }
35
- }
36
-
37
- /**
38
- * Recursively copy `src` directory into `dest`.
39
- * Optional `filter(srcPath, relPath)` returns false to skip an entry.
40
- */
41
- export async function copyDir(src, dest, filter) {
42
- await fs.mkdir(dest, { recursive: true });
43
- const entries = await fs.readdir(src, { withFileTypes: true });
44
- for (const entry of entries) {
45
- const srcPath = path.join(src, entry.name);
46
- const destPath = path.join(dest, entry.name);
47
- const rel = path.relative(src, srcPath);
48
- if (filter && filter(srcPath, rel) === false) continue;
49
-
50
- if (entry.isSymbolicLink()) {
51
- // Resolve symlink target and copy the resolved file/dir.
52
- const real = await fs.realpath(srcPath);
53
- const stat = await fs.stat(real);
54
- if (stat.isDirectory()) {
55
- await copyDir(real, destPath, filter);
56
- } else {
57
- await fs.copyFile(real, destPath);
58
- }
59
- } else if (entry.isDirectory()) {
60
- await copyDir(srcPath, destPath, filter);
61
- } else if (entry.isFile()) {
62
- await fs.copyFile(srcPath, destPath);
63
- }
64
- }
65
- }
66
-
67
- export async function removePath(p) {
68
- await fs.rm(p, { recursive: true, force: true });
69
- }
70
-
71
- /**
72
- * Replace {{placeholder}} occurrences in a file in-place.
73
- */
74
- export async function replaceInFile(filePath, replacements) {
75
- let content = await fs.readFile(filePath, 'utf8');
76
- for (const [key, value] of Object.entries(replacements)) {
77
- const re = new RegExp(`{{\\s*${escapeRegExp(key)}\\s*}}`, 'g');
78
- content = content.replace(re, value);
79
- }
80
- await fs.writeFile(filePath, content, 'utf8');
81
- }
82
-
83
- function escapeRegExp(s) {
84
- return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
85
- }
86
-
87
- export function isValidProjectName(name) {
88
- if (!name) return false;
89
- // Allow simple folder names; npm-style restrictions where helpful.
90
- return /^[a-zA-Z0-9._-]+$/.test(name) && !name.startsWith('.');
91
- }
1
+ // src/utils.mjs
2
+ // Small utility helpers: logger, fs ops, placeholder substitution.
3
+
4
+ import { promises as fs } from 'node:fs';
5
+ import path from 'node:path';
6
+ import pc from 'picocolors';
7
+
8
+ export const log = {
9
+ info: (msg) => console.log(pc.cyan('ℹ'), msg),
10
+ success: (msg) => console.log(pc.green('✔'), msg),
11
+ warn: (msg) => console.log(pc.yellow('⚠'), msg),
12
+ error: (msg) => console.error(pc.red('✖'), msg),
13
+ step: (msg) => console.log(pc.dim('›'), msg),
14
+ blank: () => console.log(''),
15
+ raw: (msg) => console.log(msg),
16
+ title: (msg) => console.log(pc.bold(pc.magenta(msg))),
17
+ };
18
+
19
+ export async function pathExists(p) {
20
+ try {
21
+ await fs.access(p);
22
+ return true;
23
+ } catch {
24
+ return false;
25
+ }
26
+ }
27
+
28
+ export async function isDirEmpty(dir) {
29
+ try {
30
+ const entries = await fs.readdir(dir);
31
+ return entries.length === 0;
32
+ } catch {
33
+ return true;
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Recursively copy `src` directory into `dest`.
39
+ * Optional `filter(srcPath, relPath)` returns false to skip an entry.
40
+ */
41
+ export async function copyDir(src, dest, filter) {
42
+ await fs.mkdir(dest, { recursive: true });
43
+ const entries = await fs.readdir(src, { withFileTypes: true });
44
+ for (const entry of entries) {
45
+ const srcPath = path.join(src, entry.name);
46
+ const destPath = path.join(dest, entry.name);
47
+ const rel = path.relative(src, srcPath);
48
+ if (filter && filter(srcPath, rel) === false) continue;
49
+
50
+ if (entry.isSymbolicLink()) {
51
+ // Resolve symlink target and copy the resolved file/dir.
52
+ const real = await fs.realpath(srcPath);
53
+ const stat = await fs.stat(real);
54
+ if (stat.isDirectory()) {
55
+ await copyDir(real, destPath, filter);
56
+ } else {
57
+ await fs.copyFile(real, destPath);
58
+ }
59
+ } else if (entry.isDirectory()) {
60
+ await copyDir(srcPath, destPath, filter);
61
+ } else if (entry.isFile()) {
62
+ await fs.copyFile(srcPath, destPath);
63
+ }
64
+ }
65
+ }
66
+
67
+ export async function removePath(p) {
68
+ await fs.rm(p, { recursive: true, force: true });
69
+ }
70
+
71
+ /**
72
+ * Replace {{placeholder}} occurrences in a file in-place.
73
+ */
74
+ export async function replaceInFile(filePath, replacements) {
75
+ let content = await fs.readFile(filePath, 'utf8');
76
+ for (const [key, value] of Object.entries(replacements)) {
77
+ const re = new RegExp(`{{\\s*${escapeRegExp(key)}\\s*}}`, 'g');
78
+ content = content.replace(re, value);
79
+ }
80
+ await fs.writeFile(filePath, content, 'utf8');
81
+ }
82
+
83
+ function escapeRegExp(s) {
84
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
85
+ }
86
+
87
+ export function isValidProjectName(name) {
88
+ if (!name) return false;
89
+ // Allow simple folder names; npm-style restrictions where helpful.
90
+ return /^[a-zA-Z0-9._-]+$/.test(name) && !name.startsWith('.');
91
+ }
@@ -1,43 +1,43 @@
1
- {
2
- "name": "analyst",
3
- "description": "Lead System Analyst & DevOps Architect. Defines technical specs and infra.",
4
- "hidden": true,
5
- "config": {
6
- "customAgent": {
7
- "systemPromptSections": [
8
- {
9
- "title": "Agent System Instructions",
10
- "content": "You are the analyst Agent. Read and follow ALL instructions in agent/workflows/analyst.md as your complete system prompt. That file is your source of truth."
11
- }
12
- ],
13
- "toolNames": [
14
- "send_message",
15
- "find_by_name",
16
- "grep_search",
17
- "view_file",
18
- "list_dir",
19
- "read_url_content",
20
- "search_web",
21
- "schedule",
22
- "multi_replace_file_content",
23
- "replace_file_content",
24
- "write_to_file",
25
- "manage_task",
26
- "define_subagent",
27
- "invoke_subagent",
28
- "manage_subagents"
29
- ],
30
- "systemPromptConfig": {
31
- "includeSections": [
32
- "user_information",
33
- "mcp_servers",
34
- "skills",
35
- "subagent_reminder",
36
- "messaging",
37
- "artifacts",
38
- "user_rules"
39
- ]
40
- }
41
- }
42
- }
43
- }
1
+ {
2
+ "name": "analyst",
3
+ "description": "Lead System Analyst & DevOps Architect. Defines technical specs and infra.",
4
+ "hidden": true,
5
+ "config": {
6
+ "customAgent": {
7
+ "systemPromptSections": [
8
+ {
9
+ "title": "Agent System Instructions",
10
+ "content": "You are the analyst Agent. Read and follow ALL instructions in agent/workflows/analyst.md as your complete system prompt. That file is your source of truth."
11
+ }
12
+ ],
13
+ "toolNames": [
14
+ "send_message",
15
+ "find_by_name",
16
+ "grep_search",
17
+ "view_file",
18
+ "list_dir",
19
+ "read_url_content",
20
+ "search_web",
21
+ "schedule",
22
+ "multi_replace_file_content",
23
+ "replace_file_content",
24
+ "write_to_file",
25
+ "manage_task",
26
+ "define_subagent",
27
+ "invoke_subagent",
28
+ "manage_subagents"
29
+ ],
30
+ "systemPromptConfig": {
31
+ "includeSections": [
32
+ "user_information",
33
+ "mcp_servers",
34
+ "skills",
35
+ "subagent_reminder",
36
+ "messaging",
37
+ "artifacts",
38
+ "user_rules"
39
+ ]
40
+ }
41
+ }
42
+ }
43
+ }
@@ -1,44 +1,44 @@
1
- {
2
- "name": "backend",
3
- "description": "Senior Backend Engineer \u2014 implements API, business logic & DB access per the API Contract (depth=standard|deep).",
4
- "hidden": true,
5
- "config": {
6
- "customAgent": {
7
- "systemPromptSections": [
8
- {
9
- "title": "Agent System Instructions",
10
- "content": "You are the backend Agent. Read and follow ALL instructions in agent/workflows/backend.md as your complete system prompt. That file is your source of truth."
11
- }
12
- ],
13
- "toolNames": [
14
- "send_message",
15
- "find_by_name",
16
- "grep_search",
17
- "view_file",
18
- "list_dir",
19
- "read_url_content",
20
- "search_web",
21
- "schedule",
22
- "multi_replace_file_content",
23
- "replace_file_content",
24
- "write_to_file",
25
- "run_command",
26
- "manage_task",
27
- "define_subagent",
28
- "invoke_subagent",
29
- "manage_subagents"
30
- ],
31
- "systemPromptConfig": {
32
- "includeSections": [
33
- "user_information",
34
- "mcp_servers",
35
- "skills",
36
- "subagent_reminder",
37
- "messaging",
38
- "artifacts",
39
- "user_rules"
40
- ]
41
- }
42
- }
43
- }
44
- }
1
+ {
2
+ "name": "backend",
3
+ "description": "Senior Backend Engineer \u2014 implements API, business logic & DB access per the API Contract (depth=standard|deep).",
4
+ "hidden": true,
5
+ "config": {
6
+ "customAgent": {
7
+ "systemPromptSections": [
8
+ {
9
+ "title": "Agent System Instructions",
10
+ "content": "You are the backend Agent. Read and follow ALL instructions in agent/workflows/backend.md as your complete system prompt. That file is your source of truth."
11
+ }
12
+ ],
13
+ "toolNames": [
14
+ "send_message",
15
+ "find_by_name",
16
+ "grep_search",
17
+ "view_file",
18
+ "list_dir",
19
+ "read_url_content",
20
+ "search_web",
21
+ "schedule",
22
+ "multi_replace_file_content",
23
+ "replace_file_content",
24
+ "write_to_file",
25
+ "run_command",
26
+ "manage_task",
27
+ "define_subagent",
28
+ "invoke_subagent",
29
+ "manage_subagents"
30
+ ],
31
+ "systemPromptConfig": {
32
+ "includeSections": [
33
+ "user_information",
34
+ "mcp_servers",
35
+ "skills",
36
+ "subagent_reminder",
37
+ "messaging",
38
+ "artifacts",
39
+ "user_rules"
40
+ ]
41
+ }
42
+ }
43
+ }
44
+ }
@@ -1,43 +1,43 @@
1
- {
2
- "name": "data-architect",
3
- "description": "Data Architect \u2014 designs data model, ERD, schema, indexing & data governance during planning.",
4
- "hidden": true,
5
- "config": {
6
- "customAgent": {
7
- "systemPromptSections": [
8
- {
9
- "title": "Agent System Instructions",
10
- "content": "You are the data-architect Agent. Read and follow ALL instructions in agent/workflows/data-architect.md as your complete system prompt. That file is your source of truth."
11
- }
12
- ],
13
- "toolNames": [
14
- "send_message",
15
- "find_by_name",
16
- "grep_search",
17
- "view_file",
18
- "list_dir",
19
- "read_url_content",
20
- "search_web",
21
- "schedule",
22
- "multi_replace_file_content",
23
- "replace_file_content",
24
- "write_to_file",
25
- "manage_task",
26
- "define_subagent",
27
- "invoke_subagent",
28
- "manage_subagents"
29
- ],
30
- "systemPromptConfig": {
31
- "includeSections": [
32
- "user_information",
33
- "mcp_servers",
34
- "skills",
35
- "subagent_reminder",
36
- "messaging",
37
- "artifacts",
38
- "user_rules"
39
- ]
40
- }
41
- }
42
- }
43
- }
1
+ {
2
+ "name": "data-architect",
3
+ "description": "Data Architect \u2014 designs data model, ERD, schema, indexing & data governance during planning.",
4
+ "hidden": true,
5
+ "config": {
6
+ "customAgent": {
7
+ "systemPromptSections": [
8
+ {
9
+ "title": "Agent System Instructions",
10
+ "content": "You are the data-architect Agent. Read and follow ALL instructions in agent/workflows/data-architect.md as your complete system prompt. That file is your source of truth."
11
+ }
12
+ ],
13
+ "toolNames": [
14
+ "send_message",
15
+ "find_by_name",
16
+ "grep_search",
17
+ "view_file",
18
+ "list_dir",
19
+ "read_url_content",
20
+ "search_web",
21
+ "schedule",
22
+ "multi_replace_file_content",
23
+ "replace_file_content",
24
+ "write_to_file",
25
+ "manage_task",
26
+ "define_subagent",
27
+ "invoke_subagent",
28
+ "manage_subagents"
29
+ ],
30
+ "systemPromptConfig": {
31
+ "includeSections": [
32
+ "user_information",
33
+ "mcp_servers",
34
+ "skills",
35
+ "subagent_reminder",
36
+ "messaging",
37
+ "artifacts",
38
+ "user_rules"
39
+ ]
40
+ }
41
+ }
42
+ }
43
+ }
@@ -1,44 +1,44 @@
1
- {
2
- "name": "devops",
3
- "description": "Mengotomasi deployment, membuat CI/CD pipelines, dan mengonfigurasi infrastruktur (Docker, GitHub Actions, dll) untuk product code.",
4
- "hidden": false,
5
- "config": {
6
- "customAgent": {
7
- "systemPromptSections": [
8
- {
9
- "title": "Agent System Instructions",
10
- "content": "You are the DevOps Agent. Read and follow ALL instructions in agent/workflows/devops.md as your complete system prompt. That file is your source of truth."
11
- }
12
- ],
13
- "toolNames": [
14
- "send_message",
15
- "find_by_name",
16
- "grep_search",
17
- "view_file",
18
- "list_dir",
19
- "read_url_content",
20
- "search_web",
21
- "schedule",
22
- "multi_replace_file_content",
23
- "replace_file_content",
24
- "write_to_file",
25
- "run_command",
26
- "manage_task",
27
- "define_subagent",
28
- "invoke_subagent",
29
- "manage_subagents"
30
- ],
31
- "systemPromptConfig": {
32
- "includeSections": [
33
- "user_information",
34
- "mcp_servers",
35
- "skills",
36
- "subagent_reminder",
37
- "messaging",
38
- "artifacts",
39
- "user_rules"
40
- ]
41
- }
42
- }
43
- }
44
- }
1
+ {
2
+ "name": "devops",
3
+ "description": "Mengotomasi deployment, membuat CI/CD pipelines, dan mengonfigurasi infrastruktur (Docker, GitHub Actions, dll) untuk product code.",
4
+ "hidden": false,
5
+ "config": {
6
+ "customAgent": {
7
+ "systemPromptSections": [
8
+ {
9
+ "title": "Agent System Instructions",
10
+ "content": "You are the DevOps Agent. Read and follow ALL instructions in agent/workflows/devops.md as your complete system prompt. That file is your source of truth."
11
+ }
12
+ ],
13
+ "toolNames": [
14
+ "send_message",
15
+ "find_by_name",
16
+ "grep_search",
17
+ "view_file",
18
+ "list_dir",
19
+ "read_url_content",
20
+ "search_web",
21
+ "schedule",
22
+ "multi_replace_file_content",
23
+ "replace_file_content",
24
+ "write_to_file",
25
+ "run_command",
26
+ "manage_task",
27
+ "define_subagent",
28
+ "invoke_subagent",
29
+ "manage_subagents"
30
+ ],
31
+ "systemPromptConfig": {
32
+ "includeSections": [
33
+ "user_information",
34
+ "mcp_servers",
35
+ "skills",
36
+ "subagent_reminder",
37
+ "messaging",
38
+ "artifacts",
39
+ "user_rules"
40
+ ]
41
+ }
42
+ }
43
+ }
44
+ }
@@ -1,43 +1,43 @@
1
- {
2
- "name": "discovery",
3
- "description": "Product Discovery Lead & Business Analyst \u2014 gathers requirements interactively from the human before any document is created.",
4
- "hidden": false,
5
- "config": {
6
- "customAgent": {
7
- "systemPromptSections": [
8
- {
9
- "title": "Agent System Instructions",
10
- "content": "You are the discovery Agent. Read and follow ALL instructions in agent/workflows/discovery.md as your complete system prompt. That file is your source of truth."
11
- }
12
- ],
13
- "toolNames": [
14
- "send_message",
15
- "find_by_name",
16
- "grep_search",
17
- "view_file",
18
- "list_dir",
19
- "read_url_content",
20
- "search_web",
21
- "schedule",
22
- "multi_replace_file_content",
23
- "replace_file_content",
24
- "write_to_file",
25
- "manage_task",
26
- "define_subagent",
27
- "invoke_subagent",
28
- "manage_subagents"
29
- ],
30
- "systemPromptConfig": {
31
- "includeSections": [
32
- "user_information",
33
- "mcp_servers",
34
- "skills",
35
- "subagent_reminder",
36
- "messaging",
37
- "artifacts",
38
- "user_rules"
39
- ]
40
- }
41
- }
42
- }
43
- }
1
+ {
2
+ "name": "discovery",
3
+ "description": "Product Discovery Lead & Business Analyst \u2014 gathers requirements interactively from the human before any document is created.",
4
+ "hidden": false,
5
+ "config": {
6
+ "customAgent": {
7
+ "systemPromptSections": [
8
+ {
9
+ "title": "Agent System Instructions",
10
+ "content": "You are the discovery Agent. Read and follow ALL instructions in agent/workflows/discovery.md as your complete system prompt. That file is your source of truth."
11
+ }
12
+ ],
13
+ "toolNames": [
14
+ "send_message",
15
+ "find_by_name",
16
+ "grep_search",
17
+ "view_file",
18
+ "list_dir",
19
+ "read_url_content",
20
+ "search_web",
21
+ "schedule",
22
+ "multi_replace_file_content",
23
+ "replace_file_content",
24
+ "write_to_file",
25
+ "manage_task",
26
+ "define_subagent",
27
+ "invoke_subagent",
28
+ "manage_subagents"
29
+ ],
30
+ "systemPromptConfig": {
31
+ "includeSections": [
32
+ "user_information",
33
+ "mcp_servers",
34
+ "skills",
35
+ "subagent_reminder",
36
+ "messaging",
37
+ "artifacts",
38
+ "user_rules"
39
+ ]
40
+ }
41
+ }
42
+ }
43
+ }