create-vasvibe 2.3.1 → 2.5.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/README.md +170 -167
- package/bin/cli.mjs +9 -9
- package/package.json +44 -44
- package/src/git.mjs +47 -47
- package/src/index.mjs +228 -228
- package/src/prompts.mjs +113 -113
- package/src/scaffold.mjs +74 -74
- package/src/upgrade.mjs +121 -121
- package/src/utils.mjs +91 -91
- package/template/.agents/agents/analyst/agent.json +43 -43
- package/template/.agents/agents/backend/agent.json +44 -44
- package/template/.agents/agents/data-architect/agent.json +43 -43
- package/template/.agents/agents/devops/agent.json +44 -44
- package/template/.agents/agents/discovery/agent.json +43 -43
- package/template/.agents/agents/document/agent.json +43 -43
- package/template/.agents/agents/fixer/agent.json +44 -44
- package/template/.agents/agents/frontend/agent.json +44 -44
- package/template/.agents/agents/fullstack/agent.json +44 -44
- package/template/.agents/agents/initiator/agent.json +41 -41
- package/template/.agents/agents/manual-tester/agent.json +44 -0
- package/template/.agents/agents/orchestrator/agent.json +44 -44
- package/template/.agents/agents/pm/agent.json +42 -42
- package/template/.agents/agents/qa/agent.json +44 -44
- package/template/.agents/agents/reliability/agent.json +44 -44
- package/template/.agents/agents/security/agent.json +44 -44
- package/template/.agents/agents/sysarch/agent.json +44 -44
- package/template/.agents/agents/tester/agent.json +44 -44
- package/template/.agents/agents/toolsmith/agent.json +44 -44
- package/template/.agents/agents/ux-designer/agent.json +43 -43
- package/template/.agents/skills/find-skills/SKILL.md +142 -142
- package/template/.agents/skills/fullstack/SKILL.md +89 -89
- package/template/.agents/skills/penetration-testing/SKILL.md +94 -94
- package/template/.agents/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
- package/template/.agents/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
- package/template/.agents/skills/penetration-testing/scripts/security-checklist.sh +30 -30
- package/template/.agents/skills/pm/SKILL.md +170 -170
- package/template/.agents/skills/ui-ux-pro-max/SKILL.md +658 -658
- package/template/.agents/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
- package/template/.agents/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
- package/template/.agents/skills/ui-ux-pro-max/data/design.csv +1775 -1775
- package/template/.agents/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
- package/template/.agents/skills/ui-ux-pro-max/data/icons.csv +105 -105
- package/template/.agents/skills/ui-ux-pro-max/data/products.csv +162 -162
- package/template/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
- package/template/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/template/.agents/skills/ui-ux-pro-max/data/typography.csv +74 -74
- package/template/.agents/skills/ui-ux-pro-max/scripts/core.py +262 -262
- package/template/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
- package/template/.agents/workflows/build-feature.md +21 -21
- package/template/.agents/workflows/daily-standup.md +16 -16
- package/template/.agents/workflows/deliver-feature.md +16 -16
- package/template/.agents/workflows/harden-release.md +21 -21
- package/template/.agents/workflows/plan-project.md +25 -25
- package/template/.agents/workflows/release.md +18 -18
- package/template/.agents/workflows/security-audit.md +19 -19
- package/template/.agents/workflows/setup-workspace.md +21 -21
- package/template/.agents/workflows/start-fix.md +17 -17
- package/template/.agents/workflows/test-feature.md +17 -17
- package/template/.claude/agents/analyst.md +75 -75
- package/template/.claude/agents/backend.md +61 -61
- package/template/.claude/agents/data-architect.md +43 -43
- package/template/.claude/agents/devops.md +44 -43
- package/template/.claude/agents/discovery.md +51 -51
- package/template/.claude/agents/document.md +51 -51
- package/template/.claude/agents/fixer.md +83 -82
- package/template/.claude/agents/frontend.md +58 -58
- package/template/.claude/agents/fullstack.md +84 -83
- package/template/.claude/agents/initiator.md +74 -74
- package/template/.claude/agents/manual-tester.md +108 -0
- package/template/.claude/agents/orchestrator.md +114 -113
- package/template/.claude/agents/pm.md +199 -199
- package/template/.claude/agents/qa.md +66 -65
- package/template/.claude/agents/reliability.md +48 -47
- package/template/.claude/agents/security.md +107 -106
- package/template/.claude/agents/sysarch.md +301 -301
- package/template/.claude/agents/tester.md +100 -100
- package/template/.claude/agents/toolsmith.md +77 -76
- package/template/.claude/agents/ux-designer.md +45 -45
- package/template/.claude/commands/build-feature.md +22 -22
- package/template/.claude/commands/daily-standup.md +16 -16
- package/template/.claude/commands/deliver-feature.md +17 -17
- package/template/.claude/commands/harden-release.md +22 -22
- package/template/.claude/commands/manual-test.md +19 -0
- package/template/.claude/commands/plan-project.md +26 -26
- package/template/.claude/commands/release.md +19 -19
- package/template/.claude/commands/security-audit.md +20 -20
- package/template/.claude/commands/setup-workspace.md +22 -22
- package/template/.claude/commands/start-fix.md +18 -18
- package/template/.claude/commands/test-feature.md +18 -18
- package/template/.claude/skills/find-skills +1 -0
- package/template/.claude/skills/penetration-testing/SKILL.md +94 -94
- package/template/.claude/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
- package/template/.claude/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
- package/template/.claude/skills/penetration-testing/scripts/security-checklist.sh +30 -30
- package/template/.claude/skills/ui-ux-pro-max/SKILL.md +658 -658
- package/template/.claude/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
- package/template/.claude/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
- package/template/.claude/skills/ui-ux-pro-max/data/design.csv +1775 -1775
- package/template/.claude/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
- package/template/.claude/skills/ui-ux-pro-max/data/icons.csv +105 -105
- package/template/.claude/skills/ui-ux-pro-max/data/products.csv +162 -162
- package/template/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
- package/template/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/template/.claude/skills/ui-ux-pro-max/data/typography.csv +74 -74
- package/template/.claude/skills/ui-ux-pro-max/scripts/core.py +262 -262
- package/template/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
- package/template/.github/prompts/analyst.prompt.md +57 -57
- package/template/.github/prompts/backend.prompt.md +44 -44
- package/template/.github/prompts/data-architect.prompt.md +38 -38
- package/template/.github/prompts/devops.prompt.md +32 -32
- package/template/.github/prompts/discovery.prompt.md +39 -39
- package/template/.github/prompts/document.prompt.md +14 -14
- package/template/.github/prompts/fixer.prompt.md +90 -89
- package/template/.github/prompts/frontend.prompt.md +43 -43
- package/template/.github/prompts/fullstack.prompt.md +91 -91
- package/template/.github/prompts/initiator.prompt.md +55 -55
- package/template/.github/prompts/manual-tester.prompt.md +103 -0
- package/template/.github/prompts/orchestrator.prompt.md +75 -75
- package/template/.github/prompts/pm.prompt.md +186 -186
- package/template/.github/prompts/qa.prompt.md +57 -57
- package/template/.github/prompts/reliability.prompt.md +44 -44
- package/template/.github/prompts/security.prompt.md +41 -41
- package/template/.github/prompts/sysarch.prompt.md +351 -351
- package/template/.github/prompts/tester.prompt.md +107 -107
- package/template/.github/prompts/toolsmith.prompt.md +46 -46
- package/template/.github/prompts/ux-designer.prompt.md +41 -41
- package/template/.opencode/agents/analyst.md +75 -75
- package/template/.opencode/agents/backend.md +61 -61
- package/template/.opencode/agents/data-architect.md +43 -43
- package/template/.opencode/agents/devops.md +44 -41
- package/template/.opencode/agents/discovery.md +51 -51
- package/template/.opencode/agents/document.md +51 -51
- package/template/.opencode/agents/fixer.md +83 -82
- package/template/.opencode/agents/frontend.md +58 -58
- package/template/.opencode/agents/fullstack.md +84 -83
- package/template/.opencode/agents/initiator.md +74 -74
- package/template/.opencode/agents/manual-tester.md +107 -0
- package/template/.opencode/agents/orchestrator.md +116 -119
- package/template/.opencode/agents/pm.md +199 -199
- package/template/.opencode/agents/qa.md +66 -65
- package/template/.opencode/agents/reliability.md +48 -46
- package/template/.opencode/agents/security.md +107 -105
- package/template/.opencode/agents/sysarch.md +301 -301
- package/template/.opencode/agents/tester.md +100 -100
- package/template/.opencode/agents/toolsmith.md +77 -77
- package/template/.opencode/agents/ux-designer.md +45 -45
- package/template/.opencode/commands/build-feature.md +21 -21
- package/template/.opencode/commands/daily-standup.md +16 -16
- package/template/.opencode/commands/deliver-feature.md +16 -16
- package/template/.opencode/commands/harden-release.md +21 -21
- package/template/.opencode/commands/manual-test.md +18 -0
- package/template/.opencode/commands/plan-project.md +25 -25
- package/template/.opencode/commands/release.md +18 -18
- package/template/.opencode/commands/security-audit.md +19 -19
- package/template/.opencode/commands/setup-workspace.md +21 -21
- package/template/.opencode/commands/start-fix.md +17 -17
- package/template/.opencode/commands/test-feature.md +17 -17
- package/template/.opencode/skills/penetration-testing/SKILL.md +94 -94
- package/template/.opencode/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -328
- package/template/.opencode/skills/penetration-testing/references/burp-suite-automation-script.md +135 -135
- package/template/.opencode/skills/penetration-testing/scripts/security-checklist.sh +30 -30
- package/template/.opencode/skills/ui-ux-pro-max/SKILL.md +658 -658
- package/template/.opencode/skills/ui-ux-pro-max/data/_sync_all.py +414 -414
- package/template/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +30 -30
- package/template/.opencode/skills/ui-ux-pro-max/data/design.csv +1775 -1775
- package/template/.opencode/skills/ui-ux-pro-max/data/draft.csv +1778 -1778
- package/template/.opencode/skills/ui-ux-pro-max/data/icons.csv +105 -105
- package/template/.opencode/skills/ui-ux-pro-max/data/products.csv +162 -162
- package/template/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -51
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -51
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -54
- package/template/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/template/.opencode/skills/ui-ux-pro-max/data/typography.csv +74 -74
- package/template/.opencode/skills/ui-ux-pro-max/scripts/core.py +262 -262
- package/template/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +1148 -1148
- package/template/AGENT_PERSONAS.md +595 -551
- package/template/GIT_STRUCTURE_GUIDE.md +270 -270
- package/template/PROJECT_README.example.md +81 -81
- package/template/QUICK-START.md +134 -131
- package/template/README.md +1942 -1919
- package/template/_gitignore +141 -141
- package/template/agent/workflows/_shared/change-management.md +70 -70
- package/template/agent/workflows/_shared/git-branch-management.md +25 -25
- package/template/agent/workflows/_shared/phases.md +88 -88
- package/template/agent/workflows/_shared/state-management.md +87 -87
- package/template/agent/workflows/_shared/work-depth.md +46 -46
- package/template/agent/workflows/analyst.md +75 -75
- package/template/agent/workflows/backend.md +61 -61
- package/template/agent/workflows/data-architect.md +43 -43
- package/template/agent/workflows/devops.md +44 -44
- package/template/agent/workflows/discovery.md +51 -51
- package/template/agent/workflows/document.md +51 -51
- package/template/agent/workflows/fixer.md +83 -82
- package/template/agent/workflows/frontend.md +58 -58
- package/template/agent/workflows/fullstack.md +84 -84
- package/template/agent/workflows/initiator.md +74 -74
- package/template/agent/workflows/manual-tester.md +103 -0
- package/template/agent/workflows/orchestrator.md +114 -114
- package/template/agent/workflows/pm.md +199 -199
- package/template/agent/workflows/qa.md +66 -66
- package/template/agent/workflows/reliability.md +48 -48
- package/template/agent/workflows/security.md +107 -107
- package/template/agent/workflows/sysarch.md +301 -301
- package/template/agent/workflows/tester.md +100 -100
- package/template/agent/workflows/toolsmith.md +77 -77
- package/template/agent/workflows/ux-designer.md +45 -45
- package/template/codes/.gitkeep +1 -1
- package/template/project_overview_example.md +54 -54
- package/template/schemas/adr.template.md +36 -36
- package/template/schemas/changelog.template.md +34 -34
- package/template/schemas/data-model.template.md +57 -57
- package/template/schemas/design-system.template.md +63 -63
- package/template/schemas/dev_log.template.md +20 -20
- package/template/schemas/product-ci.template.yml +50 -50
- package/template/schemas/requirements.template.md +64 -64
- package/template/schemas/security-standards.template.md +58 -58
- package/template/schemas/security_report.template.md +89 -89
- package/template/schemas/specification.template.md +57 -57
- package/template/schemas/style_guide.template.md +29 -29
- package/template/schemas/task_list.template.md +28 -28
- package/template/schemas/workspace-manifest.template.json +24 -24
- package/template/schemas/workspace-registry.json +94 -94
- package/template/skills-lock.json +11 -11
- package/template/specifications/.gitkeep +1 -1
- package/template/state/knowledge_base/.gitkeep +1 -1
- package/template/state/knowledge_base/requirements/.gitkeep +1 -1
- package/template/tests/.gitkeep +1 -1
- package/template/.agents/workflows/explorer.md +0 -78
- package/template/.agents/workflows/logger.md +0 -117
- package/template/.claude/settings.local.json +0 -35
- package/template/.claude/skills/find-skills/SKILL.md +0 -142
- package/template/.opencode/agents/explorer.md +0 -138
- package/template/.opencode/agents/logger.md +0 -143
package/README.md
CHANGED
|
@@ -1,167 +1,170 @@
|
|
|
1
|
-
# create-vasvibe
|
|
2
|
-
|
|
3
|
-
Scaffold a new VasVibe project with **
|
|
4
|
-
|
|
5
|
-
**VasVibe v2.
|
|
6
|
-
- ✅ 4-Phase Model (Perencanaan → Pengerjaan → Testing → Hardening) with gates
|
|
7
|
-
- ✅
|
|
8
|
-
- ✅ Toolsmith agent for agentic workspace provisioning (skills + MCP)
|
|
9
|
-
- ✅ Multi-tool support (Claude Code, OpenCode, GitHub Copilot, Antigravity)
|
|
10
|
-
- ✅ No Silent Changes protocol (every change tracked in docs)
|
|
11
|
-
- ✅ Work Depth system (fast/standard/deep)
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npx create-vasvibe my-new-project
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
The command produces a project folder containing all agent toolchains, workflows, schemas, and standard working folders (`codes/`, `specifications/`, `state/`, `tests/`) with `.gitignore` rules already configured.
|
|
18
|
-
|
|
19
|
-
## What you get
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
my-new-project/
|
|
23
|
-
├── .agents/ # Antigravity agent wrappers & skills
|
|
24
|
-
├── .claude/ # Claude Code agents & skills
|
|
25
|
-
├── .opencode/ # OpenCode commands & skills
|
|
26
|
-
├── .github/prompts/ # GitHub Copilot prompt files (
|
|
27
|
-
├── agent/workflows/ # Source of truth: agent definitions (
|
|
28
|
-
│ ├── _shared/
|
|
29
|
-
│ │ ├── phases.md # 4-phase model definition
|
|
30
|
-
│ │ ├── change-management.md # No Silent Changes protocol
|
|
31
|
-
│ │ ├── work-depth.md # Work depth (fast/standard/deep)
|
|
32
|
-
│ │ └── git-branch-management.md # Git workflow for code-writing agents
|
|
33
|
-
│ ├── orchestrator.md # Pipeline coordinator
|
|
34
|
-
│ ├── discovery.md # Requirement gathering
|
|
35
|
-
│ ├── initiator.md # Project overview
|
|
36
|
-
│ ├── backend.md, frontend.md, fullstack.md # Implementation agents
|
|
37
|
-
│ ├── data-architect.md, ux-designer.md # Design phase
|
|
38
|
-
│ ├── analyst.md # Specifications
|
|
39
|
-
│ ├── qa.md, tester.md, fixer.md
|
|
40
|
-
│ ├── security.md, reliability.md # Hardening phase
|
|
41
|
-
│ ├── toolsmith.md ⭐ NEW # Agentic workspace provisioning
|
|
42
|
-
│ ├── devops.md, pm.md # Infrastructure & project mgmt
|
|
43
|
-
│ └── document.md # Documentation
|
|
44
|
-
│
|
|
45
|
-
├── schemas/ # Shared schemas ⭐ v2.2
|
|
46
|
-
│ ├── workspace-registry.json # Skill + MCP catalog, tech-stack mappings
|
|
47
|
-
│ └── workspace-manifest.template.json # Workspace provisioning template
|
|
48
|
-
│
|
|
49
|
-
├── state/ # Workspace & knowledge base ⭐ v2.2
|
|
50
|
-
│ ├── workspace-manifest.json # Desired-state config (platform-agnostic)
|
|
51
|
-
│ └── knowledge_base/ # Living docs (architecture, data-model, etc.)
|
|
52
|
-
│
|
|
53
|
-
├── codes/ # Source code (gitignored by default)
|
|
54
|
-
├── specifications/ # Technical specs (gitignored by default)
|
|
55
|
-
├── tests/ # Tests (gitignored by default)
|
|
56
|
-
├── task/ # Task management
|
|
57
|
-
├── logs/ # Auto-generated logs
|
|
58
|
-
├── project_overview_example.md
|
|
59
|
-
├── QUICK-START.md # Workflow guide (Indonesian)
|
|
60
|
-
├── AGENT_PERSONAS.md # All
|
|
61
|
-
├── GIT_STRUCTURE_GUIDE.md
|
|
62
|
-
└── .gitignore
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**Multi-Tool:** Agents auto-propagate from `agent/workflows/` to `.claude/`, `.opencode/`, `.agents/`, and `.github/prompts/` for full tool parity.
|
|
66
|
-
|
|
67
|
-
**Workspace Provisioning:** Run `/setup-workspace init` to auto-detect your tool, derive skills + MCP from tech stack, and write `state/workspace-manifest.json`.
|
|
68
|
-
|
|
69
|
-
`opencode.json` is intentionally not generated. Create one yourself per your AI provider settings (see https://opencode.ai/docs).
|
|
70
|
-
|
|
71
|
-
## Usage
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
npx create-vasvibe <project-name> [options]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Workflow
|
|
78
|
-
|
|
79
|
-
1. **Create project**
|
|
80
|
-
```bash
|
|
81
|
-
npx create-vasvibe my-app
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
2. **Choose work depth** (when prompted)
|
|
85
|
-
- `fast` — MVP, prototype, single Fullstack agent
|
|
86
|
-
- `standard` — Production normal, Backend+Frontend parallel *(default)*
|
|
87
|
-
- `deep` — Fintech/auth/sensitive data, full security+reliability
|
|
88
|
-
|
|
89
|
-
3. **Setup workspace** (after tech stack is known)
|
|
90
|
-
```bash
|
|
91
|
-
cd my-app
|
|
92
|
-
/setup-workspace init
|
|
93
|
-
```
|
|
94
|
-
→ Toolsmith detects active tool, derives skills+MCP from tech stack, writes `state/workspace-manifest.json` and tool-specific MCP config
|
|
95
|
-
|
|
96
|
-
4. **Start planning**
|
|
97
|
-
```bash
|
|
98
|
-
/plan-project "Your project idea here"
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Options
|
|
102
|
-
|
|
103
|
-
| Flag | Description |
|
|
104
|
-
|------------------|----------------------------------------------------------|
|
|
105
|
-
| `-y, --yes` | Skip prompts and use defaults |
|
|
106
|
-
| `--no-git` | Do not initialize a git repository |
|
|
107
|
-
| `--no-opencode` | Exclude `.opencode/` (commands, skills) |
|
|
108
|
-
| `--no-claude` | Exclude `.claude/` and `.agents/` |
|
|
109
|
-
| `--no-github` | Exclude `.github/prompts/` |
|
|
110
|
-
| `--no-workflows` | Exclude `agent/workflows/` |
|
|
111
|
-
| `-h, --help` | Show help |
|
|
112
|
-
| `-v, --version` | Print version |
|
|
113
|
-
|
|
114
|
-
### Examples
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# Interactive (choose depth + tools)
|
|
118
|
-
npx create-vasvibe my-app
|
|
119
|
-
|
|
120
|
-
# Fast mode MVP
|
|
121
|
-
npx create-vasvibe my-app --yes # uses fast depth, all tools
|
|
122
|
-
|
|
123
|
-
# Only OpenCode + workflows
|
|
124
|
-
npx create-vasvibe my-app --yes --no-claude --no-github
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Quick Start
|
|
128
|
-
|
|
129
|
-
After scaffold, read **`QUICK-START.md`** for step-by-step workflow guide (Indonesian):
|
|
130
|
-
- Mental model of 4 phases
|
|
131
|
-
- Command reference (/plan-project, /build-feature, /test-feature, /release)
|
|
132
|
-
- Work depth strategy
|
|
133
|
-
- Gate approval process
|
|
134
|
-
|
|
135
|
-
## Development (for maintainers)
|
|
136
|
-
|
|
137
|
-
This package lives at `packages/create-vasvibe/` in the monorepo. Source of truth for content is the repo root (`agent/workflows/`, `schemas/`, `.claude/`, `.opencode/`, `.agents/`, `.github/prompts/`); `template/` is generated by a sync script.
|
|
138
|
-
|
|
139
|
-
**Key changes in v2.
|
|
140
|
-
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
#
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
#
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
1
|
+
# create-vasvibe
|
|
2
|
+
|
|
3
|
+
Scaffold a new VasVibe project with **20 agents**, **4-phase workflow**, and **multi-tool support** preconfigured.
|
|
4
|
+
|
|
5
|
+
**VasVibe v2.3** — AI-native development framework with:
|
|
6
|
+
- ✅ 4-Phase Model (Perencanaan → Pengerjaan → Testing → Hardening) with gates
|
|
7
|
+
- ✅ 20 specialized agents (Discovery, Backend/Frontend/Fullstack, Security, Reliability, DevOps, Manual Tester, etc.)
|
|
8
|
+
- ✅ Toolsmith agent for agentic workspace provisioning (skills + MCP)
|
|
9
|
+
- ✅ Multi-tool support (Claude Code, OpenCode, GitHub Copilot, Antigravity)
|
|
10
|
+
- ✅ No Silent Changes protocol (every change tracked in docs)
|
|
11
|
+
- ✅ Work Depth system (fast/standard/deep)
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx create-vasvibe my-new-project
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The command produces a project folder containing all agent toolchains, workflows, schemas, and standard working folders (`codes/`, `specifications/`, `state/`, `tests/`) with `.gitignore` rules already configured.
|
|
18
|
+
|
|
19
|
+
## What you get
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
my-new-project/
|
|
23
|
+
├── .agents/ # Antigravity agent wrappers & skills
|
|
24
|
+
├── .claude/ # Claude Code agents & skills
|
|
25
|
+
├── .opencode/ # OpenCode commands & skills
|
|
26
|
+
├── .github/prompts/ # GitHub Copilot prompt files (20 agents)
|
|
27
|
+
├── agent/workflows/ # Source of truth: agent definitions (20 total)
|
|
28
|
+
│ ├── _shared/
|
|
29
|
+
│ │ ├── phases.md # 4-phase model definition
|
|
30
|
+
│ │ ├── change-management.md # No Silent Changes protocol
|
|
31
|
+
│ │ ├── work-depth.md # Work depth (fast/standard/deep)
|
|
32
|
+
│ │ └── git-branch-management.md # Git workflow for code-writing agents
|
|
33
|
+
│ ├── orchestrator.md # Pipeline coordinator
|
|
34
|
+
│ ├── discovery.md # Requirement gathering
|
|
35
|
+
│ ├── initiator.md # Project overview
|
|
36
|
+
│ ├── backend.md, frontend.md, fullstack.md # Implementation agents
|
|
37
|
+
│ ├── data-architect.md, ux-designer.md # Design phase
|
|
38
|
+
│ ├── analyst.md # Specifications
|
|
39
|
+
│ ├── qa.md, tester.md, manual-tester.md, fixer.md # QA & testing
|
|
40
|
+
│ ├── security.md, reliability.md # Hardening phase
|
|
41
|
+
│ ├── toolsmith.md ⭐ NEW # Agentic workspace provisioning
|
|
42
|
+
│ ├── devops.md, pm.md # Infrastructure & project mgmt
|
|
43
|
+
│ └── document.md # Documentation
|
|
44
|
+
│
|
|
45
|
+
├── schemas/ # Shared schemas ⭐ v2.2
|
|
46
|
+
│ ├── workspace-registry.json # Skill + MCP catalog, tech-stack mappings
|
|
47
|
+
│ └── workspace-manifest.template.json # Workspace provisioning template
|
|
48
|
+
│
|
|
49
|
+
├── state/ # Workspace & knowledge base ⭐ v2.2
|
|
50
|
+
│ ├── workspace-manifest.json # Desired-state config (platform-agnostic)
|
|
51
|
+
│ └── knowledge_base/ # Living docs (architecture, data-model, etc.)
|
|
52
|
+
│
|
|
53
|
+
├── codes/ # Source code (gitignored by default)
|
|
54
|
+
├── specifications/ # Technical specs (gitignored by default)
|
|
55
|
+
├── tests/ # Tests (gitignored by default)
|
|
56
|
+
├── task/ # Task management
|
|
57
|
+
├── logs/ # Auto-generated logs
|
|
58
|
+
├── project_overview_example.md
|
|
59
|
+
├── QUICK-START.md # Workflow guide (Indonesian)
|
|
60
|
+
├── AGENT_PERSONAS.md # All 20 agents documented
|
|
61
|
+
├── GIT_STRUCTURE_GUIDE.md
|
|
62
|
+
└── .gitignore
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Multi-Tool:** Agents auto-propagate from `agent/workflows/` to `.claude/`, `.opencode/`, `.agents/`, and `.github/prompts/` for full tool parity.
|
|
66
|
+
|
|
67
|
+
**Workspace Provisioning:** Run `/setup-workspace init` to auto-detect your tool, derive skills + MCP from tech stack, and write `state/workspace-manifest.json`.
|
|
68
|
+
|
|
69
|
+
`opencode.json` is intentionally not generated. Create one yourself per your AI provider settings (see https://opencode.ai/docs).
|
|
70
|
+
|
|
71
|
+
## Usage
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npx create-vasvibe <project-name> [options]
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Workflow
|
|
78
|
+
|
|
79
|
+
1. **Create project**
|
|
80
|
+
```bash
|
|
81
|
+
npx create-vasvibe my-app
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
2. **Choose work depth** (when prompted)
|
|
85
|
+
- `fast` — MVP, prototype, single Fullstack agent
|
|
86
|
+
- `standard` — Production normal, Backend+Frontend parallel *(default)*
|
|
87
|
+
- `deep` — Fintech/auth/sensitive data, full security+reliability
|
|
88
|
+
|
|
89
|
+
3. **Setup workspace** (after tech stack is known)
|
|
90
|
+
```bash
|
|
91
|
+
cd my-app
|
|
92
|
+
/setup-workspace init
|
|
93
|
+
```
|
|
94
|
+
→ Toolsmith detects active tool, derives skills+MCP from tech stack, writes `state/workspace-manifest.json` and tool-specific MCP config
|
|
95
|
+
|
|
96
|
+
4. **Start planning**
|
|
97
|
+
```bash
|
|
98
|
+
/plan-project "Your project idea here"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Options
|
|
102
|
+
|
|
103
|
+
| Flag | Description |
|
|
104
|
+
|------------------|----------------------------------------------------------|
|
|
105
|
+
| `-y, --yes` | Skip prompts and use defaults |
|
|
106
|
+
| `--no-git` | Do not initialize a git repository |
|
|
107
|
+
| `--no-opencode` | Exclude `.opencode/` (commands, skills) |
|
|
108
|
+
| `--no-claude` | Exclude `.claude/` and `.agents/` |
|
|
109
|
+
| `--no-github` | Exclude `.github/prompts/` |
|
|
110
|
+
| `--no-workflows` | Exclude `agent/workflows/` |
|
|
111
|
+
| `-h, --help` | Show help |
|
|
112
|
+
| `-v, --version` | Print version |
|
|
113
|
+
|
|
114
|
+
### Examples
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Interactive (choose depth + tools)
|
|
118
|
+
npx create-vasvibe my-app
|
|
119
|
+
|
|
120
|
+
# Fast mode MVP
|
|
121
|
+
npx create-vasvibe my-app --yes # uses fast depth, all tools
|
|
122
|
+
|
|
123
|
+
# Only OpenCode + workflows
|
|
124
|
+
npx create-vasvibe my-app --yes --no-claude --no-github
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Quick Start
|
|
128
|
+
|
|
129
|
+
After scaffold, read **`QUICK-START.md`** for step-by-step workflow guide (Indonesian):
|
|
130
|
+
- Mental model of 4 phases
|
|
131
|
+
- Command reference (/plan-project, /build-feature, /test-feature, /release)
|
|
132
|
+
- Work depth strategy
|
|
133
|
+
- Gate approval process
|
|
134
|
+
|
|
135
|
+
## Development (for maintainers)
|
|
136
|
+
|
|
137
|
+
This package lives at `packages/create-vasvibe/` in the monorepo. Source of truth for content is the repo root (`agent/workflows/`, `schemas/`, `.claude/`, `.opencode/`, `.agents/`, `.github/prompts/`); `template/` is generated by a sync script.
|
|
138
|
+
|
|
139
|
+
**Key changes in v2.3:**
|
|
140
|
+
- Added `manual-tester` agent (`/manual-test`) — headful Playwright UAT: scenario matrix (Normal/Abnormal), screenshot evidence, Major/Minor defect triage, retest-iteration report. Optional and independent from `tester` (scripted E2E); does not change the Fase 3 gate.
|
|
141
|
+
|
|
142
|
+
**Key changes in v2.2:**
|
|
143
|
+
- Source of truth → 19 agents in `agent/workflows/` (not 8)
|
|
144
|
+
- Multi-tool propagation: auto-syncs to `.claude/`, `.opencode/`, `.agents/`, `.github/prompts/`
|
|
145
|
+
- Added: `schemas/workspace-registry.json`, `schemas/workspace-manifest.template.json`
|
|
146
|
+
- Added: `state/` folder with `workspace-manifest.json` and `knowledge_base/` template
|
|
147
|
+
- Added: `_shared/` docs (phases.md, change-management.md, work-depth.md, git-branch-management.md)
|
|
148
|
+
- Renamed: `developer.md` → `fullstack.md`
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Sync template/ from repo root (runs on every npm publish)
|
|
152
|
+
npm run sync-template
|
|
153
|
+
|
|
154
|
+
# Test scaffold locally
|
|
155
|
+
node bin/cli.mjs /tmp/test-scaffold --yes
|
|
156
|
+
|
|
157
|
+
# Verify what gets published
|
|
158
|
+
npm pack --dry-run
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Template sync logic:**
|
|
162
|
+
- Reads source files from repo root: `agent/workflows/`, `schemas/`, `.claude/`, `.opencode/`, `.agents/`, `.github/prompts/`, `QUICK-START.md`, `AGENT_PERSONAS.md`
|
|
163
|
+
- Copies to `template/` directory
|
|
164
|
+
- On `npm publish`, `prepublishOnly` hook runs sync automatically
|
|
165
|
+
|
|
166
|
+
`prepublishOnly` runs `sync-template` automatically, so a regular `npm publish` always ships an up-to-date template.
|
|
167
|
+
|
|
168
|
+
## License
|
|
169
|
+
|
|
170
|
+
MIT
|
package/bin/cli.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// bin/cli.mjs - thin entry point that delegates to src/index.mjs.
|
|
3
|
-
|
|
4
|
-
import { main } from '../src/index.mjs';
|
|
5
|
-
|
|
6
|
-
main(process.argv).catch((err) => {
|
|
7
|
-
console.error(err);
|
|
8
|
-
process.exit(1);
|
|
9
|
-
});
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// bin/cli.mjs - thin entry point that delegates to src/index.mjs.
|
|
3
|
+
|
|
4
|
+
import { main } from '../src/index.mjs';
|
|
5
|
+
|
|
6
|
+
main(process.argv).catch((err) => {
|
|
7
|
+
console.error(err);
|
|
8
|
+
process.exit(1);
|
|
9
|
+
});
|
package/package.json
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "create-vasvibe",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Scaffold a new project with VasVibe agents, prompts, and workflows preconfigured (Claude, OpenCode, GitHub Copilot).",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"create-vasvibe": "./bin/cli.mjs"
|
|
8
|
-
},
|
|
9
|
-
"files": [
|
|
10
|
-
"bin",
|
|
11
|
-
"src",
|
|
12
|
-
"template",
|
|
13
|
-
"README.md"
|
|
14
|
-
],
|
|
15
|
-
"engines": {
|
|
16
|
-
"node": ">=18"
|
|
17
|
-
},
|
|
18
|
-
"scripts": {
|
|
19
|
-
"sync-template": "node scripts/sync-template.mjs",
|
|
20
|
-
"prepublishOnly": "node scripts/sync-template.mjs",
|
|
21
|
-
"test:scaffold": "node bin/cli.mjs /tmp/test-vasvibe-scaffold --yes"
|
|
22
|
-
},
|
|
23
|
-
"dependencies": {
|
|
24
|
-
"picocolors": "^1.1.1",
|
|
25
|
-
"prompts": "^2.4.2"
|
|
26
|
-
},
|
|
27
|
-
"keywords": [
|
|
28
|
-
"scaffold",
|
|
29
|
-
"create",
|
|
30
|
-
"vasvibe",
|
|
31
|
-
"agents",
|
|
32
|
-
"opencode",
|
|
33
|
-
"claude",
|
|
34
|
-
"ai",
|
|
35
|
-
"starter",
|
|
36
|
-
"template"
|
|
37
|
-
],
|
|
38
|
-
"license": "MIT",
|
|
39
|
-
"author": "VasVibe Team",
|
|
40
|
-
"repository": {
|
|
41
|
-
"type": "git",
|
|
42
|
-
"url": "https://github.com/anomalyco/vas_vibe.git",
|
|
43
|
-
"directory": "packages/create-vasvibe"
|
|
44
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "create-vasvibe",
|
|
3
|
+
"version": "2.5.0",
|
|
4
|
+
"description": "Scaffold a new project with VasVibe agents, prompts, and workflows preconfigured (Claude, OpenCode, GitHub Copilot).",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"create-vasvibe": "./bin/cli.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin",
|
|
11
|
+
"src",
|
|
12
|
+
"template",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=18"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"sync-template": "node scripts/sync-template.mjs",
|
|
20
|
+
"prepublishOnly": "node scripts/sync-template.mjs",
|
|
21
|
+
"test:scaffold": "node bin/cli.mjs /tmp/test-vasvibe-scaffold --yes"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"picocolors": "^1.1.1",
|
|
25
|
+
"prompts": "^2.4.2"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"scaffold",
|
|
29
|
+
"create",
|
|
30
|
+
"vasvibe",
|
|
31
|
+
"agents",
|
|
32
|
+
"opencode",
|
|
33
|
+
"claude",
|
|
34
|
+
"ai",
|
|
35
|
+
"starter",
|
|
36
|
+
"template"
|
|
37
|
+
],
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"author": "VasVibe Team",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "https://github.com/anomalyco/vas_vibe.git",
|
|
43
|
+
"directory": "packages/create-vasvibe"
|
|
44
|
+
}
|
|
45
45
|
}
|
package/src/git.mjs
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
// src/git.mjs
|
|
2
|
-
// Run git commands in the scaffolded project, gracefully ignoring failures.
|
|
3
|
-
|
|
4
|
-
import { spawn } from 'node:child_process';
|
|
5
|
-
|
|
6
|
-
function run(cmd, args, opts = {}) {
|
|
7
|
-
return new Promise((resolve) => {
|
|
8
|
-
const child = spawn(cmd, args, {
|
|
9
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
10
|
-
...opts,
|
|
11
|
-
});
|
|
12
|
-
let stderr = '';
|
|
13
|
-
child.stderr.on('data', (d) => (stderr += d.toString()));
|
|
14
|
-
child.on('error', () => resolve({ ok: false, code: -1, stderr }));
|
|
15
|
-
child.on('close', (code) => resolve({ ok: code === 0, code, stderr }));
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export async function gitAvailable() {
|
|
20
|
-
const r = await run('git', ['--version']);
|
|
21
|
-
return r.ok;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export async function initRepo(cwd) {
|
|
25
|
-
if (!(await gitAvailable())) return { ok: false, reason: 'git not available' };
|
|
26
|
-
|
|
27
|
-
const init = await run('git', ['init', '-b', 'main'], { cwd });
|
|
28
|
-
if (!init.ok) {
|
|
29
|
-
// Fallback for git <2.28 without -b flag.
|
|
30
|
-
const initFallback = await run('git', ['init'], { cwd });
|
|
31
|
-
if (!initFallback.ok) return { ok: false, reason: initFallback.stderr || 'git init failed' };
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const add = await run('git', ['add', '.'], { cwd });
|
|
35
|
-
if (!add.ok) return { ok: false, reason: add.stderr || 'git add failed' };
|
|
36
|
-
|
|
37
|
-
const commit = await run(
|
|
38
|
-
'git',
|
|
39
|
-
['commit', '-m', 'chore: initial scaffold from create-vasvibe', '--no-gpg-sign'],
|
|
40
|
-
{ cwd },
|
|
41
|
-
);
|
|
42
|
-
if (!commit.ok) {
|
|
43
|
-
// Likely user.email / user.name not configured. Don't hard-fail.
|
|
44
|
-
return { ok: true, warning: commit.stderr || 'commit skipped' };
|
|
45
|
-
}
|
|
46
|
-
return { ok: true };
|
|
47
|
-
}
|
|
1
|
+
// src/git.mjs
|
|
2
|
+
// Run git commands in the scaffolded project, gracefully ignoring failures.
|
|
3
|
+
|
|
4
|
+
import { spawn } from 'node:child_process';
|
|
5
|
+
|
|
6
|
+
function run(cmd, args, opts = {}) {
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
const child = spawn(cmd, args, {
|
|
9
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
10
|
+
...opts,
|
|
11
|
+
});
|
|
12
|
+
let stderr = '';
|
|
13
|
+
child.stderr.on('data', (d) => (stderr += d.toString()));
|
|
14
|
+
child.on('error', () => resolve({ ok: false, code: -1, stderr }));
|
|
15
|
+
child.on('close', (code) => resolve({ ok: code === 0, code, stderr }));
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function gitAvailable() {
|
|
20
|
+
const r = await run('git', ['--version']);
|
|
21
|
+
return r.ok;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export async function initRepo(cwd) {
|
|
25
|
+
if (!(await gitAvailable())) return { ok: false, reason: 'git not available' };
|
|
26
|
+
|
|
27
|
+
const init = await run('git', ['init', '-b', 'main'], { cwd });
|
|
28
|
+
if (!init.ok) {
|
|
29
|
+
// Fallback for git <2.28 without -b flag.
|
|
30
|
+
const initFallback = await run('git', ['init'], { cwd });
|
|
31
|
+
if (!initFallback.ok) return { ok: false, reason: initFallback.stderr || 'git init failed' };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const add = await run('git', ['add', '.'], { cwd });
|
|
35
|
+
if (!add.ok) return { ok: false, reason: add.stderr || 'git add failed' };
|
|
36
|
+
|
|
37
|
+
const commit = await run(
|
|
38
|
+
'git',
|
|
39
|
+
['commit', '-m', 'chore: initial scaffold from create-vasvibe', '--no-gpg-sign'],
|
|
40
|
+
{ cwd },
|
|
41
|
+
);
|
|
42
|
+
if (!commit.ok) {
|
|
43
|
+
// Likely user.email / user.name not configured. Don't hard-fail.
|
|
44
|
+
return { ok: true, warning: commit.stderr || 'commit skipped' };
|
|
45
|
+
}
|
|
46
|
+
return { ok: true };
|
|
47
|
+
}
|