create-vasvibe 2.1.0 → 2.2.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.
@@ -12,6 +12,7 @@ Project VasVibe dikerjakan dalam **4 fase** dengan gerbang (gate) human di tiap
12
12
  |------|----------------|
13
13
  | **Discovery** (paling hulu, INTERAKTIF) | `state/knowledge_base/requirements/requirements.md` |
14
14
  | Initiator | `project_overview.md` (sintesis dari requirements) |
15
+ | **Toolsmith** (setelah tech stack diketahui) | `state/workspace-manifest.json` + config MCP per tool |
15
16
  | SysArch | `state/knowledge_base/architecture/` |
16
17
  | Data Architect | `state/knowledge_base/data-model/` |
17
18
  | UX Designer | `state/knowledge_base/design-system/` |
@@ -74,6 +75,7 @@ Project VasVibe dikerjakan dalam **4 fase** dengan gerbang (gate) human di tiap
74
75
  |------|-------|
75
76
  | PM | Koordinasi task & status di semua fase |
76
77
  | Orchestrator | Menjalankan pipeline & menjaga gerbang fase |
78
+ | **Toolsmith** | Provisioning workspace agentik (skill + MCP); re-apply saat pindah tool AI |
77
79
  | DevOps | CI/CD, containerization (Implementation & Hardening) |
78
80
  | Document | Dokumentasi (akhir siklus) |
79
81
 
@@ -13,6 +13,7 @@ Pipeline Coordinator — menerima high-level command, menjalankan agent pipeline
13
13
  1. GATE: Human sign-off `requirements.md`
14
14
  2. Invoke Initiator → `project_overview.md` (sintesis dari requirements, termasuk `WORK_DEPTH`)
15
15
  3. CHECKPOINT: Human review tech stack, UI vibe, work depth
16
+ 3b. Invoke **Toolsmith** (mode `init`) → provisioning workspace agentik: tentukan skill + MCP dari tech stack, tulis `state/workspace-manifest.json`, apply ke tool aktif. (Tech stack baru pasti setelah Initiator — itu sebabnya di sini, bukan di langkah 0.)
16
17
  4. Invoke SysArch → `state/knowledge_base/architecture/` (jika ada infra requirement)
17
18
  5. Invoke Data Architect → `state/knowledge_base/data-model/`
18
19
  6. Invoke UX Designer → `state/knowledge_base/design-system/`
@@ -23,6 +24,7 @@ Pipeline Coordinator — menerima high-level command, menjalankan agent pipeline
23
24
 
24
25
  ### 🟩 Fase 2 — `/build-feature "[Feature Name]" [depth=fast|standard|deep]`
25
26
  > Implementasi satu fitur dari spec yang sudah ada.
27
+ 0. Invoke **Toolsmith** (mode `sync`, atau `switch` jika developer pindah tool) → pastikan skill + MCP workspace siap sebelum coding. Skip cepat jika `appliedTo` tool aktif sudah ter-set & tidak ada perubahan.
26
28
  1. Invoke PM → buat task & detail file dari spec
27
29
  2. Invoke Analyst (spec-lock) → matangkan AC detail untuk fitur ini
28
30
  3. **Implementasi (tergantung depth):**
@@ -51,6 +53,9 @@ Pipeline Coordinator — menerima high-level command, menjalankan agent pipeline
51
53
 
52
54
  ### Meta & Pendukung
53
55
 
56
+ #### `/setup-workspace [init|switch|sync] [tool=...]`
57
+ > Provisioning workspace agentik (skill + MCP) via **Toolsmith**. Otomatis dipanggil di Fase 1 (step 3b) & Fase 2 (step 0), tapi bisa dipanggil manual kapan saja — terutama saat developer **pindah tool AI** (`switch tool=opencode`). Sumber kebenaran: `state/workspace-manifest.json`.
58
+
54
59
  #### `/deliver-feature "[Feature Name]" [depth=]`
55
60
  > Jalankan Fase 2 → Fase 3 berurutan untuk satu fitur (build lalu test), dengan gerbang di tiap fase.
56
61
 
@@ -0,0 +1,77 @@
1
+ **ACT AS:** Agentic Workspace Provisioner (Toolsmith).
2
+ **CONTEXT:** Agen **lintas fase**. Tugasmu menyiapkan **perkakas si AI agent** — bukan infra produk (itu DevOps) — agar agen bekerja optimal: meng-install **skills** yang relevan dan mengonfigurasi **MCP server** untuk tool AI yang sedang dipakai. Kamu dijalankan di **awal Fase 1** (sebelum planning serius) dan **sebelum Fase 2** (sebelum coding), serta bisa **dipanggil ulang kapan saja** — terutama saat developer **pindah tool** (Claude Code ↔ OpenCode ↔ Antigravity ↔ Copilot).
3
+
4
+ **PRINSIP INTI — Desired-state, bukan imperatif:**
5
+ - Sumber kebenaran adalah **manifest** `state/workspace-manifest.json` (apa yang *diinginkan*: daftar skill + MCP, platform-agnostic).
6
+ - File config per-tool (`.mcp.json`, `opencode.json`, dst) adalah **artefak turunan** dari manifest.
7
+ - Saat pindah tool, manifest **tetap** — kamu cukup **re-apply** ke format tool baru. Inilah yang membuat tool-switch mulus.
8
+ - Konfigurasi MCP ditulis **secara declarative** (tulis file config), bukan menjalankan CLI tool-spesifik.
9
+
10
+ **ACUAN WAJIB:**
11
+ - `schemas/workspace-registry.json` — registry kurasi: mapping `tech-stack → {skills, mcp}`, `mcpCatalog` (command/args tiap MCP), dan `platformTargets` (cara nulis config tiap platform).
12
+ - `schemas/workspace-manifest.template.json` — bentuk manifest.
13
+ - `project_overview.md` / `requirements.md` — sumber tech stack & kebutuhan untuk memutuskan skill/MCP (jika sudah ada).
14
+
15
+ ---
16
+
17
+ ## MODE
18
+
19
+ Pilih mode dari instruksi (default `init` jika manifest belum ada, `switch` jika sudah ada & user pindah tool):
20
+
21
+ ### Mode `init` — Provisioning awal
22
+ 1. **Deteksi tool aktif:** Cek penanda dari `platformTargets[].detect` (mis. folder `.claude/` → claude-code, `.opencode/` → opencode, `.agents/` → antigravity, `.github/prompts/` atau `.vscode/` → github-copilot). Jika ambigu/lebih dari satu, **tanya human** tool mana yang sedang dipakai.
23
+ 2. **Tentukan kebutuhan (hybrid):**
24
+ - Baca tech stack & key features dari `project_overview.md` (atau `requirements.md` jika overview belum ada).
25
+ - Cocokkan (case-insensitive, substring) ke `stackMappings` di registry → kumpulkan skill + MCP default. Selalu sertakan entri `"*"` (baseline: filesystem, git, fetch, find-skills).
26
+ - **Augmentasi:** jika ada kebutuhan unik yang tak tercakup registry, gunakan skill `find-skills` untuk mencari skill tambahan; usulkan ke human.
27
+ 3. **Tulis manifest:** Buat/`state/workspace-manifest.json` dari template, isi `skills[]`, `mcp[]`, `decidedFrom`, dan `revisionHistory`. **Tunjukkan ringkasan ke human untuk approve** sebelum apply (skill & MCP apa, kenapa).
28
+ 4. **Apply ke tool aktif (lihat bagian APPLY).**
29
+ 5. **Update `appliedTo[tool]`** = timestamp sekarang. Laporkan hasil + langkah manual yang tersisa (mis. set env var `POSTGRES_URL`).
30
+
31
+ ### Mode `switch` — Pindah tool / re-apply
32
+ 1. **Baca manifest** `state/workspace-manifest.json` (desired state yang sudah ada). JANGAN hitung ulang kebutuhan — pakai yang sudah disetujui.
33
+ 2. **Deteksi/where:** tentukan tool target baru (dari deteksi atau argumen human, mis. `switch tool=opencode`).
34
+ 3. **Apply ke tool target (lihat APPLY).** Idempoten — jika config sudah benar, biarkan.
35
+ 4. **Update `appliedTo[toolBaru]`** = timestamp. Laporkan diff yang ditulis.
36
+
37
+ ### Mode `sync` — Verifikasi/perbaiki drift
38
+ - Bandingkan manifest vs config aktual di tool aktif; tulis ulang yang hilang/berbeda. Berguna setelah edit manual.
39
+
40
+ ---
41
+
42
+ ## APPLY (declarative, per platform)
43
+
44
+ Untuk tool target `T`, baca `platformTargets[T]`:
45
+
46
+ **MCP:**
47
+ 1. Buka/buat file `platformTargets[T].file` (mis. claude-code → `.mcp.json`).
48
+ 2. Untuk tiap MCP id di `manifest.mcp`, ambil `command/args/env` dari `mcpCatalog[id]`, lalu tulis ke bawah `topLevelKey` sesuai `entryShape`:
49
+ - **claude-code / antigravity:** `mcpServers: { "<id>": { command, args, env } }`
50
+ - **opencode:** `mcp: { "<id>": { type:"local", command:[command,...args], enabled:true, environment:env } }` — **gabung** command+args jadi satu array `command`, pakai key `environment`, dan sertakan `"$schema": "https://opencode.ai/config.json"` di root.
51
+ - **github-copilot:** `servers: { "<id>": { command, args, env } }` di `.vscode/mcp.json` (key `servers`, bukan `mcpServers`).
52
+ 3. **Merge, jangan timpa:** pertahankan entri MCP lain yang sudah ada. Jangan duplikat.
53
+ 4. **Secrets:** JANGAN hardcode kredensial. Nilai env yang sensitif tulis sebagai placeholder `${VAR}` dan instruksikan human mengisi `.env` / env tool. Catat di laporan.
54
+
55
+ **Skills:**
56
+ 1. Jika `platformTargets[T].skillsDir` tidak null, install tiap skill di `manifest.skills` ke folder itu via `npx skills add <source>` (atau salin dari registry skill yang sudah ada di repo). Update `skills-lock.json`.
57
+ 2. Untuk `github-copilot` (`skillsDir: null`) — lewati skills, MCP saja. Catat keterbatasan ini.
58
+
59
+ ---
60
+
61
+ ## INPUT SAYA
62
+ "[Mode init|switch|sync] [tool=...] — provision/re-apply workspace tooling"
63
+
64
+ ## Work Depth
65
+ > 📎 Baca level aktif di `project_overview.md` → `WORK_DEPTH`. Detail: `agent/workflows/_shared/work-depth.md`
66
+
67
+ | Level | Behavior |
68
+ |-------|----------|
69
+ | **fast** | Baseline saja (filesystem, git, fetch + find-skills) — minimal, cepat |
70
+ | **standard** | Baseline + skill/MCP dari stackMappings yang cocok |
71
+ | **deep** | + augmentasi find-skills, MCP untuk semua kebutuhan (db, e2e, security), verifikasi sync |
72
+
73
+ ## Change Management
74
+ > 📎 **BACA DAN IKUTI** `agent/workflows/_shared/change-management.md` — perubahan daftar skill/MCP WAJIB dicatat di manifest `revisionHistory` + notify Orchestrator. No silent changes.
75
+
76
+ ## State Management
77
+ > 📎 **BACA DAN IKUTI** panduan di `agent/workflows/_shared/state-management.md`. Manifest `state/workspace-manifest.json` adalah state milikmu.
@@ -0,0 +1,24 @@
1
+ {
2
+ "_comment": "DESIRED-STATE manifest written by the Toolsmith agent to state/workspace-manifest.json. Platform-agnostic: lists WHAT skills + MCP the project wants. Re-applying to a new tool (tool-switch) reads this same file and realizes it in the new tool's config format. This is the source of truth; per-tool config files are derived artifacts.",
3
+ "version": 1,
4
+ "project": "<project name>",
5
+ "decidedFrom": ["project_overview.md tech stack", "requirements.md", "find-skills"],
6
+ "skills": [
7
+ { "id": "find-skills", "reason": "discover further skills on demand" },
8
+ { "id": "ui-ux-pro-max", "reason": "UI-heavy frontend (example)" }
9
+ ],
10
+ "mcp": [
11
+ { "id": "filesystem", "reason": "ground agent in workspace" },
12
+ { "id": "git", "reason": "code-aware context" }
13
+ ],
14
+ "appliedTo": {
15
+ "_comment": "ISO timestamp of last successful apply per platform, or null if never applied. Toolsmith updates this after each apply.",
16
+ "claude-code": null,
17
+ "opencode": null,
18
+ "antigravity": null,
19
+ "github-copilot": null
20
+ },
21
+ "revisionHistory": [
22
+ { "timestamp": "<YYYY-MM-DD HH:MM>", "agent": "toolsmith", "change": "initial provisioning" }
23
+ ]
24
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "version": 1,
3
+ "description": "Curated registry for the Toolsmith agent. Maps project needs (tech stack / phase) to recommended skills + MCP servers, and encodes how to write MCP config for each AI tool platform. Toolsmith reads this as the DEFAULT catalog, then may augment via requirements + find-skills.",
4
+
5
+ "stackMappings": {
6
+ "_comment": "tech-stack / capability keyword -> recommended skills + mcp ids. Match loosely (case-insensitive substring) against project_overview tech stack & key features.",
7
+ "ui|frontend|react|next|nextjs|vue|svelte|tailwind|shadcn": { "skills": ["ui-ux-pro-max"], "mcp": ["shadcn"] },
8
+ "postgres|postgresql|prisma|sql|database": { "skills": [], "mcp": ["postgres"] },
9
+ "e2e|test|testing|playwright|qa": { "skills": [], "mcp": ["playwright"] },
10
+ "security|auth|oauth|pentest|owasp": { "skills": ["penetration-testing"], "mcp": [] },
11
+ "*": { "skills": ["find-skills"], "mcp": ["filesystem", "git", "fetch"] }
12
+ },
13
+
14
+ "mcpCatalog": {
15
+ "_comment": "Common, safe MCP servers. command/args are indicative starting points — Toolsmith MUST verify the current invocation against the live MCP registry (or each server's README) before applying, since package names drift. `runtime` notes whether it ships via npx (Node) or uvx (Python).",
16
+ "filesystem": {
17
+ "description": "Read/write files within allowed roots — grounds the agent in the workspace.",
18
+ "runtime": "npx",
19
+ "command": "npx",
20
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
21
+ "env": {}
22
+ },
23
+ "git": {
24
+ "description": "Inspect git history, diffs, and status — context for code-aware agents.",
25
+ "runtime": "uvx",
26
+ "command": "uvx",
27
+ "args": ["mcp-server-git"],
28
+ "env": {}
29
+ },
30
+ "fetch": {
31
+ "description": "Fetch and convert web content (docs, references) into agent-readable text.",
32
+ "runtime": "uvx",
33
+ "command": "uvx",
34
+ "args": ["mcp-server-fetch"],
35
+ "env": {}
36
+ },
37
+ "postgres": {
38
+ "description": "Query a Postgres database (schema introspection, read queries). Set POSTGRES_URL.",
39
+ "runtime": "npx",
40
+ "command": "npx",
41
+ "args": ["-y", "@modelcontextprotocol/server-postgres", "${POSTGRES_URL}"],
42
+ "env": { "POSTGRES_URL": "${POSTGRES_URL}" }
43
+ },
44
+ "playwright": {
45
+ "description": "Drive a real browser for E2E testing & verification (Tester agent).",
46
+ "runtime": "npx",
47
+ "command": "npx",
48
+ "args": ["-y", "@playwright/mcp@latest"],
49
+ "env": {}
50
+ },
51
+ "shadcn": {
52
+ "description": "Search & pull shadcn/ui component examples — pairs with ui-ux-pro-max skill. Verify current invocation (e.g. `npx shadcn@latest mcp`) before applying.",
53
+ "runtime": "npx",
54
+ "command": "npx",
55
+ "args": ["-y", "shadcn@latest", "mcp"],
56
+ "env": {}
57
+ }
58
+ },
59
+
60
+ "platformTargets": {
61
+ "_comment": "How to write MCP config declaratively for each tool. `file` is project-relative. `topLevelKey` is the JSON key holding servers. `entryShape` documents the per-server object shape; substitute command/args/env from mcpCatalog.",
62
+ "claude-code": {
63
+ "detect": [".claude/", ".mcp.json"],
64
+ "file": ".mcp.json",
65
+ "topLevelKey": "mcpServers",
66
+ "entryShape": { "command": "<command>", "args": ["<args>"], "env": {} },
67
+ "skillsDir": ".claude/skills/"
68
+ },
69
+ "opencode": {
70
+ "detect": [".opencode/", "opencode.json"],
71
+ "file": "opencode.json",
72
+ "topLevelKey": "mcp",
73
+ "entryShape": { "type": "local", "command": ["<command>", "<args>"], "enabled": true, "environment": {} },
74
+ "skillsDir": ".opencode/skills/",
75
+ "note": "OpenCode merges command+args into a single `command` array and uses `environment` (not `env`). Include \"$schema\": \"https://opencode.ai/config.json\" at the root."
76
+ },
77
+ "antigravity": {
78
+ "detect": [".agents/"],
79
+ "file": ".agents/mcp.json",
80
+ "topLevelKey": "mcpServers",
81
+ "entryShape": { "command": "<command>", "args": ["<args>"], "env": {} },
82
+ "skillsDir": ".agents/skills/",
83
+ "note": "Antigravity uses an mcpServers-shaped config. Confirm the exact path your Antigravity build reads (workspace vs global) with the human; .agents/mcp.json is the project-local default."
84
+ },
85
+ "github-copilot": {
86
+ "detect": [".github/prompts/", ".vscode/"],
87
+ "file": ".vscode/mcp.json",
88
+ "topLevelKey": "servers",
89
+ "entryShape": { "command": "<command>", "args": ["<args>"], "env": {} },
90
+ "skillsDir": null,
91
+ "note": "Copilot/VS Code uses the `servers` key (not `mcpServers`). Copilot has no skills dir — skills are Claude/OpenCode/Antigravity only."
92
+ }
93
+ }
94
+ }