create-vasvibe 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/README.md +84 -0
  2. package/bin/cli.mjs +9 -0
  3. package/package.json +45 -0
  4. package/src/git.mjs +47 -0
  5. package/src/index.mjs +178 -0
  6. package/src/prompts.mjs +87 -0
  7. package/src/scaffold.mjs +66 -0
  8. package/src/utils.mjs +91 -0
  9. package/template/.agents/skills/developer/SKILL.md +93 -0
  10. package/template/.agents/skills/find-skills/SKILL.md +142 -0
  11. package/template/.agents/skills/penetration-testing/SKILL.md +94 -0
  12. package/template/.agents/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -0
  13. package/template/.agents/skills/penetration-testing/references/burp-suite-automation-script.md +135 -0
  14. package/template/.agents/skills/penetration-testing/scripts/security-checklist.sh +30 -0
  15. package/template/.agents/skills/pm/SKILL.md +202 -0
  16. package/template/.agents/skills/ui-ux-pro-max/SKILL.md +659 -0
  17. package/template/.agents/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  18. package/template/.agents/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  19. package/template/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
  20. package/template/.agents/skills/ui-ux-pro-max/data/colors.csv +162 -0
  21. package/template/.agents/skills/ui-ux-pro-max/data/design.csv +1776 -0
  22. package/template/.agents/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  23. package/template/.agents/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  24. package/template/.agents/skills/ui-ux-pro-max/data/icons.csv +106 -0
  25. package/template/.agents/skills/ui-ux-pro-max/data/landing.csv +35 -0
  26. package/template/.agents/skills/ui-ux-pro-max/data/products.csv +162 -0
  27. package/template/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  28. package/template/.agents/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
  29. package/template/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  30. package/template/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  31. package/template/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  32. package/template/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  33. package/template/.agents/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
  34. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  35. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  36. package/template/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  37. package/template/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  38. package/template/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  39. package/template/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  40. package/template/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  41. package/template/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  42. package/template/.agents/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
  43. package/template/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  44. package/template/.agents/skills/ui-ux-pro-max/data/styles.csv +85 -0
  45. package/template/.agents/skills/ui-ux-pro-max/data/typography.csv +74 -0
  46. package/template/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  47. package/template/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  48. package/template/.agents/skills/ui-ux-pro-max/scripts/core.py +262 -0
  49. package/template/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1148 -0
  50. package/template/.agents/skills/ui-ux-pro-max/scripts/search.py +114 -0
  51. package/template/.claude/agents/analyst.md +61 -0
  52. package/template/.claude/agents/developer.md +144 -0
  53. package/template/.claude/agents/document.md +18 -0
  54. package/template/.claude/agents/fixer.md +67 -0
  55. package/template/.claude/agents/initiator.md +58 -0
  56. package/template/.claude/agents/pm.md +371 -0
  57. package/template/.claude/agents/sysarch.md +356 -0
  58. package/template/.claude/agents/tester.md +83 -0
  59. package/template/.claude/skills/find-skills/SKILL.md +142 -0
  60. package/template/.claude/skills/penetration-testing/SKILL.md +94 -0
  61. package/template/.claude/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -0
  62. package/template/.claude/skills/penetration-testing/references/burp-suite-automation-script.md +135 -0
  63. package/template/.claude/skills/penetration-testing/scripts/security-checklist.sh +30 -0
  64. package/template/.claude/skills/ui-ux-pro-max/SKILL.md +659 -0
  65. package/template/.claude/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  66. package/template/.claude/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  67. package/template/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  68. package/template/.claude/skills/ui-ux-pro-max/data/colors.csv +162 -0
  69. package/template/.claude/skills/ui-ux-pro-max/data/design.csv +1776 -0
  70. package/template/.claude/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  71. package/template/.claude/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  72. package/template/.claude/skills/ui-ux-pro-max/data/icons.csv +106 -0
  73. package/template/.claude/skills/ui-ux-pro-max/data/landing.csv +35 -0
  74. package/template/.claude/skills/ui-ux-pro-max/data/products.csv +162 -0
  75. package/template/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  76. package/template/.claude/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
  77. package/template/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  78. package/template/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  79. package/template/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  80. package/template/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  81. package/template/.claude/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
  82. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  83. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  84. package/template/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  85. package/template/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  86. package/template/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  87. package/template/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  88. package/template/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  89. package/template/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  90. package/template/.claude/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
  91. package/template/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  92. package/template/.claude/skills/ui-ux-pro-max/data/styles.csv +85 -0
  93. package/template/.claude/skills/ui-ux-pro-max/data/typography.csv +74 -0
  94. package/template/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  95. package/template/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  96. package/template/.claude/skills/ui-ux-pro-max/scripts/core.py +262 -0
  97. package/template/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1148 -0
  98. package/template/.claude/skills/ui-ux-pro-max/scripts/search.py +114 -0
  99. package/template/.github/prompts/analyst.prompt.md +58 -0
  100. package/template/.github/prompts/developer.prompt.md +100 -0
  101. package/template/.github/prompts/document.prompt.md +15 -0
  102. package/template/.github/prompts/fixer.prompt.md +64 -0
  103. package/template/.github/prompts/initiator.prompt.md +55 -0
  104. package/template/.github/prompts/pm.prompt.md +177 -0
  105. package/template/.github/prompts/sysarch.prompt.md +352 -0
  106. package/template/.github/prompts/tester.prompt.md +80 -0
  107. package/template/.opencode/commands/analyst.md +61 -0
  108. package/template/.opencode/commands/developer.md +174 -0
  109. package/template/.opencode/commands/document.md +18 -0
  110. package/template/.opencode/commands/fixer.md +67 -0
  111. package/template/.opencode/commands/initiator.md +58 -0
  112. package/template/.opencode/commands/pm.md +348 -0
  113. package/template/.opencode/commands/sysarch.md +356 -0
  114. package/template/.opencode/commands/tester.md +83 -0
  115. package/template/.opencode/skills/penetration-testing/SKILL.md +94 -0
  116. package/template/.opencode/skills/penetration-testing/references/automated-penetration-testing-framework.md +328 -0
  117. package/template/.opencode/skills/penetration-testing/references/burp-suite-automation-script.md +135 -0
  118. package/template/.opencode/skills/penetration-testing/scripts/security-checklist.sh +30 -0
  119. package/template/.opencode/skills/ui-ux-pro-max/SKILL.md +659 -0
  120. package/template/.opencode/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  121. package/template/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  122. package/template/.opencode/skills/ui-ux-pro-max/data/charts.csv +26 -0
  123. package/template/.opencode/skills/ui-ux-pro-max/data/colors.csv +162 -0
  124. package/template/.opencode/skills/ui-ux-pro-max/data/design.csv +1776 -0
  125. package/template/.opencode/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  126. package/template/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  127. package/template/.opencode/skills/ui-ux-pro-max/data/icons.csv +106 -0
  128. package/template/.opencode/skills/ui-ux-pro-max/data/landing.csv +35 -0
  129. package/template/.opencode/skills/ui-ux-pro-max/data/products.csv +162 -0
  130. package/template/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  131. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
  132. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  133. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  134. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  135. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  136. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
  137. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  138. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  139. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  140. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  141. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  142. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  143. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  144. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  145. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
  146. package/template/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  147. package/template/.opencode/skills/ui-ux-pro-max/data/styles.csv +85 -0
  148. package/template/.opencode/skills/ui-ux-pro-max/data/typography.csv +74 -0
  149. package/template/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  150. package/template/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  151. package/template/.opencode/skills/ui-ux-pro-max/scripts/core.py +262 -0
  152. package/template/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +1148 -0
  153. package/template/.opencode/skills/ui-ux-pro-max/scripts/search.py +114 -0
  154. package/template/GIT_STRUCTURE_GUIDE.md +270 -0
  155. package/template/PROJECT_README.example.md +81 -0
  156. package/template/README.md +52 -0
  157. package/template/_gitignore +148 -0
  158. package/template/agent/workflows/analyst.md +58 -0
  159. package/template/agent/workflows/developer.md +66 -0
  160. package/template/agent/workflows/document.md +15 -0
  161. package/template/agent/workflows/fixer.md +64 -0
  162. package/template/agent/workflows/initiator.md +55 -0
  163. package/template/agent/workflows/pm.md +177 -0
  164. package/template/agent/workflows/sysacrh.md +352 -0
  165. package/template/agent/workflows/tester.md +80 -0
  166. package/template/codes/.gitkeep +1 -0
  167. package/template/project_overview_example.md +41 -0
  168. package/template/skills-lock.json +11 -0
  169. package/template/specifications/.gitkeep +1 -0
  170. package/template/tests/.gitkeep +1 -0
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
5
+ Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
6
+ python search.py "<query>" --design-system [-p "Project Name"]
7
+ python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
8
+
9
+ Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts
10
+ Stacks: react, nextjs, vue, svelte, astro, swiftui, react-native, flutter, nuxtjs, nuxt-ui, html-tailwind, shadcn, jetpack-compose, threejs
11
+
12
+ Persistence (Master + Overrides pattern):
13
+ --persist Save design system to design-system/MASTER.md
14
+ --page Also create a page-specific override file in design-system/pages/
15
+ """
16
+
17
+ import argparse
18
+ import sys
19
+ import io
20
+ from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
21
+ from design_system import generate_design_system, persist_design_system
22
+
23
+ # Force UTF-8 for stdout/stderr to handle emojis on Windows (cp1252 default)
24
+ if sys.stdout.encoding and sys.stdout.encoding.lower() != 'utf-8':
25
+ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
26
+ if sys.stderr.encoding and sys.stderr.encoding.lower() != 'utf-8':
27
+ sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
28
+
29
+
30
+ def format_output(result):
31
+ """Format results for Claude consumption (token-optimized)"""
32
+ if "error" in result:
33
+ return f"Error: {result['error']}"
34
+
35
+ output = []
36
+ if result.get("stack"):
37
+ output.append(f"## UI Pro Max Stack Guidelines")
38
+ output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
39
+ else:
40
+ output.append(f"## UI Pro Max Search Results")
41
+ output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
42
+ output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
43
+
44
+ for i, row in enumerate(result['results'], 1):
45
+ output.append(f"### Result {i}")
46
+ for key, value in row.items():
47
+ value_str = str(value)
48
+ if len(value_str) > 300:
49
+ value_str = value_str[:300] + "..."
50
+ output.append(f"- **{key}:** {value_str}")
51
+ output.append("")
52
+
53
+ return "\n".join(output)
54
+
55
+
56
+ if __name__ == "__main__":
57
+ parser = argparse.ArgumentParser(description="UI Pro Max Search")
58
+ parser.add_argument("query", help="Search query")
59
+ parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
60
+ parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help=f"Stack-specific search. Available: {', '.join(AVAILABLE_STACKS)}")
61
+ parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
62
+ parser.add_argument("--json", action="store_true", help="Output as JSON")
63
+ # Design system generation
64
+ parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
65
+ parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
66
+ parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
67
+ # Persistence (Master + Overrides pattern)
68
+ parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
69
+ parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
70
+ parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
71
+
72
+ args = parser.parse_args()
73
+
74
+ # Design system takes priority
75
+ if args.design_system:
76
+ result = generate_design_system(
77
+ args.query,
78
+ args.project_name,
79
+ args.format,
80
+ persist=args.persist,
81
+ page=args.page,
82
+ output_dir=args.output_dir
83
+ )
84
+ print(result)
85
+
86
+ # Print persistence confirmation
87
+ if args.persist:
88
+ project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
89
+ print("\n" + "=" * 60)
90
+ print(f"✅ Design system persisted to design-system/{project_slug}/")
91
+ print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
92
+ if args.page:
93
+ page_filename = args.page.lower().replace(' ', '-')
94
+ print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
95
+ print("")
96
+ print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
97
+ print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
98
+ print("=" * 60)
99
+ # Stack search
100
+ elif args.stack:
101
+ result = search_stack(args.query, args.stack, args.max_results)
102
+ if args.json:
103
+ import json
104
+ print(json.dumps(result, indent=2, ensure_ascii=False))
105
+ else:
106
+ print(format_output(result))
107
+ # Domain search
108
+ else:
109
+ result = search(args.query, args.domain, args.max_results)
110
+ if args.json:
111
+ import json
112
+ print(json.dumps(result, indent=2, ensure_ascii=False))
113
+ else:
114
+ print(format_output(result))
@@ -0,0 +1,270 @@
1
+ # Git Repository Structure Guide
2
+
3
+ ## 📁 Folder Structure Strategy
4
+
5
+ Project ini menggunakan strategi **"empty folder tracking"** dengan `.gitkeep` files.
6
+
7
+ ### Concept:
8
+ - Git tidak bisa track folder kosong
9
+ - Solusi: Tambahkan file `.gitkeep` di folder yang ingin di-track
10
+ - File lain di folder tersebut tetap di-ignore
11
+
12
+ ---
13
+
14
+ ## 🎯 Current Configuration
15
+
16
+ ### Folders with .gitkeep:
17
+
18
+ ```
19
+ vas_vibe/
20
+ ├── codes/.gitkeep ✅ Folder tracked, contents ignored
21
+ ├── specifications/.gitkeep ✅ Folder tracked, contents ignored
22
+ └── tests/.gitkeep ✅ Folder tracked, contents ignored
23
+ ```
24
+
25
+ ### .gitignore Rules:
26
+
27
+ ```gitignore
28
+ # Ignore all files in folder
29
+ codes/*
30
+ specifications/*
31
+ tests/*
32
+
33
+ # But keep .gitkeep files
34
+ !codes/.gitkeep
35
+ !specifications/.gitkeep
36
+ !tests/.gitkeep
37
+ ```
38
+
39
+ ---
40
+
41
+ ## 🔍 How It Works
42
+
43
+ ### Pattern Explanation:
44
+
45
+ 1. **`codes/*`** - Ignore semua file di dalam folder `codes/`
46
+ 2. **`!codes/.gitkeep`** - Tapi **jangan** ignore file `.gitkeep`
47
+
48
+ Simbol `!` adalah **negation pattern** yang membatalkan ignore rule sebelumnya.
49
+
50
+ ---
51
+
52
+ ## ✅ Verification
53
+
54
+ ### Check what gets tracked:
55
+
56
+ ```bash
57
+ # See all tracked files
58
+ git add .
59
+ git status
60
+
61
+ # Output should show:
62
+ # .gitignore
63
+ # codes/.gitkeep
64
+ # specifications/.gitkeep
65
+ # tests/.gitkeep
66
+ # README.md
67
+ ```
68
+
69
+ ### Check what gets ignored:
70
+
71
+ ```bash
72
+ # See ignored files
73
+ git status --ignored
74
+
75
+ # Output should show:
76
+ # codes/ (all files except .gitkeep)
77
+ # specifications/ (all files except .gitkeep)
78
+ # tests/ (all files except .gitkeep)
79
+ ```
80
+
81
+ ---
82
+
83
+ ## 📊 Result
84
+
85
+ ### When someone clones the repository:
86
+
87
+ ```bash
88
+ git clone <repository-url>
89
+ cd vas_vibe
90
+ ls -la
91
+ ```
92
+
93
+ **They will get:**
94
+ ```
95
+ vas_vibe/
96
+ ├── .gitignore ✅ Present
97
+ ├── README.md ✅ Present
98
+ ├── codes/ ✅ Folder exists (empty except .gitkeep)
99
+ │ └── .gitkeep ✅ Present
100
+ ├── specifications/ ✅ Folder exists (empty except .gitkeep)
101
+ │ └── .gitkeep ✅ Present
102
+ └── tests/ ✅ Folder exists (empty except .gitkeep)
103
+ └── .gitkeep ✅ Present
104
+ ```
105
+
106
+ **They will NOT get:**
107
+ - ❌ Files in `codes/` (except `.gitkeep`)
108
+ - ❌ Files in `specifications/` (except `.gitkeep`)
109
+ - ❌ Files in `tests/` (except `.gitkeep`)
110
+ - ❌ `project_overview.md`
111
+ - ❌ `development_log.md`
112
+
113
+ ---
114
+
115
+ ## 🎯 Use Cases
116
+
117
+ ### Scenario 1: Fresh Clone
118
+ ```bash
119
+ git clone <repo>
120
+ cd vas_vibe
121
+ # Folders exist but are empty
122
+ # Developer can start adding code to codes/ folder
123
+ ```
124
+
125
+ ### Scenario 2: Working with Code
126
+ ```bash
127
+ cd codes
128
+ npm install
129
+ npm run dev
130
+ # All development files stay local
131
+ # .gitkeep ensures folder structure is preserved
132
+ ```
133
+
134
+ ### Scenario 3: Team Collaboration
135
+ ```bash
136
+ # Each developer has:
137
+ # - Same folder structure (thanks to .gitkeep)
138
+ # - Own local code (not tracked)
139
+ # - Shared documentation (README, etc.)
140
+ ```
141
+
142
+ ---
143
+
144
+ ## 💡 Advanced Patterns
145
+
146
+ ### If you want to track SOME files in codes:
147
+
148
+ ```gitignore
149
+ # In .gitignore:
150
+ codes/*
151
+ !codes/.gitkeep
152
+ !codes/important-config.json
153
+ !codes/README.md
154
+ ```
155
+
156
+ ### If you want to track a subfolder:
157
+
158
+ ```gitignore
159
+ # In .gitignore:
160
+ codes/*
161
+ !codes/.gitkeep
162
+ !codes/shared/
163
+ codes/shared/*
164
+ !codes/shared/.gitkeep
165
+ ```
166
+
167
+ ---
168
+
169
+ ## 🔧 Common Commands
170
+
171
+ ### Add everything (respecting .gitignore):
172
+ ```bash
173
+ git add .
174
+ ```
175
+
176
+ ### Check what will be committed:
177
+ ```bash
178
+ git status
179
+ ```
180
+
181
+ ### See ignored files:
182
+ ```bash
183
+ git status --ignored
184
+ ```
185
+
186
+ ### Force add an ignored file (if needed):
187
+ ```bash
188
+ git add -f codes/special-file.ts
189
+ ```
190
+
191
+ ### Remove a file from tracking (keep local):
192
+ ```bash
193
+ git rm --cached codes/some-file.ts
194
+ ```
195
+
196
+ ---
197
+
198
+ ## 📝 Benefits
199
+
200
+ ### ✅ Pros:
201
+ 1. **Folder structure preserved** - New developers get correct structure
202
+ 2. **No accidental commits** - Code stays local
203
+ 3. **Clean repository** - Only essential files tracked
204
+ 4. **Easy setup** - Clone and start coding
205
+ 5. **Flexible** - Can add exceptions with `!` pattern
206
+
207
+ ### ⚠️ Considerations:
208
+ 1. Must document which files go in which folder
209
+ 2. Developers need to know structure
210
+ 3. `.gitkeep` files add minimal overhead
211
+
212
+ ---
213
+
214
+ ## 🎓 Best Practices
215
+
216
+ ### DO:
217
+ - ✅ Keep `.gitkeep` files simple (just a comment)
218
+ - ✅ Document folder purpose in `.gitkeep`
219
+ - ✅ Use consistent naming (`.gitkeep` is convention)
220
+ - ✅ Add README.md in root to explain structure
221
+
222
+ ### DON'T:
223
+ - ❌ Put important code in `.gitkeep`
224
+ - ❌ Forget to add `!` negation in `.gitignore`
225
+ - ❌ Delete `.gitkeep` files
226
+ - ❌ Track both folder contents AND use `.gitkeep`
227
+
228
+ ---
229
+
230
+ ## 📚 References
231
+
232
+ ### Git Ignore Patterns:
233
+ - `*` - Match all files
234
+ - `!` - Negate previous pattern
235
+ - `*/` - Match directories only
236
+ - `**` - Match nested directories
237
+
238
+ ### Examples:
239
+ ```gitignore
240
+ # Ignore all .log files
241
+ *.log
242
+
243
+ # But keep important.log
244
+ !important.log
245
+
246
+ # Ignore all in folder
247
+ folder/*
248
+
249
+ # But keep .gitkeep
250
+ !folder/.gitkeep
251
+ ```
252
+
253
+ ---
254
+
255
+ ## ✅ Current Status
256
+
257
+ ```
258
+ Repository Structure: ✅ Configured
259
+ .gitkeep Files: ✅ Created (3 files)
260
+ .gitignore Rules: ✅ Updated with negation
261
+ Folder Tracking: ✅ Active
262
+ Contents Ignored: ✅ Working
263
+ ```
264
+
265
+ **Ready to commit and push!** 🚀
266
+
267
+ ---
268
+
269
+ **Last Updated:** December 30, 2025
270
+ **Status:** ✅ Complete
@@ -0,0 +1,81 @@
1
+ # Example Project README (VasVibe)
2
+
3
+ > This file is shipped as a reference example by `create-vasvibe`. It shows
4
+ > what a real project README built on top of this scaffold can look like.
5
+ > You can safely delete this file or use it as a starting point for your own
6
+ > `README.md`.
7
+
8
+ ---
9
+
10
+ # 🚢 VasVibe - Platform Reservasi Kapal Wisata Labuan Bajo
11
+
12
+ Platform reservasi online untuk jasa layanan pariwisata kapal di Labuan Bajo. Sistem lengkap dengan backoffice management dan customer booking platform.
13
+
14
+ ## 📋 Project Structure
15
+
16
+ ```
17
+ vas_vibe/
18
+ ├── .gitignore # Git ignore rules
19
+ ├── README.md # This file
20
+ ├── project_overview.md # Project overview & requirements
21
+ ├── codes/ # Source code (ignored by git)
22
+ │ ├── app/ # Next.js app directory
23
+ │ ├── components/ # React components
24
+ │ ├── lib/ # Utility functions & configs
25
+ │ ├── prisma/ # Database schema & migrations
26
+ │ ├── public/ # Static assets
27
+ │ └── ...
28
+ ├── specifications/ # Technical specifications (ignored by git)
29
+ │ ├── SPEC-000-*.md # Environment setup
30
+ │ ├── SPEC-001-*.md # Database schema
31
+ │ ├── SPEC-002-*.md # Authentication system
32
+ │ └── SPEC-003-*.md # Booking management
33
+ └── tests/ # Test files
34
+ ```
35
+
36
+ ## 🎯 Key Features
37
+
38
+ ### Backoffice System
39
+ - Dashboard, booking management, payment recording
40
+ - Customer, ship, pricing management
41
+ - Reports, audit logs, role-based access control
42
+
43
+ ### Customer Platform
44
+ - Online booking, payment gateway, customer dashboard, e-tickets
45
+
46
+ ## 🛠️ Tech Stack
47
+
48
+ - **Framework:** Next.js 15 (App Router)
49
+ - **Language:** TypeScript
50
+ - **Database:** PostgreSQL 16
51
+ - **ORM:** Prisma
52
+ - **Authentication:** NextAuth.js v5
53
+ - **UI:** Tailwind CSS + Shadcn/UI
54
+ - **Icons:** Lucide React
55
+ - **Validation:** Zod
56
+ - **Date Handling:** date-fns
57
+ - **Excel Export:** xlsx
58
+ - **Deployment:** Docker Compose
59
+
60
+ ## 🚀 Getting Started
61
+
62
+ ```bash
63
+ # 1. Clone
64
+ git clone <repository-url>
65
+ cd {{projectName}}
66
+
67
+ # 2. Setup code workspace
68
+ cd codes
69
+ npm install
70
+ cp .env.example .env
71
+
72
+ # 3. Start services
73
+ docker compose up -d
74
+ npx prisma migrate dev
75
+ npm run prisma:seed
76
+ npm run dev
77
+ ```
78
+
79
+ ---
80
+
81
+ This file is illustrative only. See `README.md` for the actual project setup.
@@ -0,0 +1,52 @@
1
+ # {{projectName}}
2
+
3
+ Project ini di-scaffold dengan [`create-vasvibe`](https://www.npmjs.com/package/create-vasvibe), starter base yang sudah disiapkan dengan agent prompts (Claude, OpenCode, GitHub Copilot) dan struktur folder kerja standar tim.
4
+
5
+ ## Struktur folder
6
+
7
+ ```
8
+ {{projectName}}/
9
+ ├── .agents/ # Skills bersama (developer, pm, find-skills, dll)
10
+ ├── .claude/ # Claude Code agents & skills
11
+ ├── .opencode/ # OpenCode commands & skills
12
+ ├── .github/prompts/ # GitHub Copilot prompt files
13
+ ├── agent/workflows/ # Workflow markdown agnostik tooling
14
+ ├── codes/ # Source code (di-gitignore by default)
15
+ ├── specifications/ # Dokumen spek teknis (di-gitignore by default)
16
+ ├── tests/ # Test files (di-gitignore by default)
17
+ ├── project_overview_example.md
18
+ ├── skills-lock.json
19
+ ├── GIT_STRUCTURE_GUIDE.md
20
+ └── PROJECT_README.example.md
21
+ ```
22
+
23
+ ## Mulai
24
+
25
+ 1. **Konfigurasi AI provider untuk OpenCode** (opsional)
26
+
27
+ Buat `opencode.json` di root project sesuai panduan di https://opencode.ai/docs.
28
+
29
+ 2. **Mulai develop**
30
+
31
+ - Tulis `project_overview.md` di root (contoh tersedia di `project_overview_example.md`).
32
+ - Letakkan source code di `codes/`.
33
+ - Letakkan dokumen spek di `specifications/`.
34
+ - Letakkan test di `tests/`.
35
+
36
+ 3. **Pakai agent**
37
+
38
+ - Claude Code: agent tersedia di `.claude/agents/`.
39
+ - OpenCode: command tersedia di `.opencode/commands/`.
40
+ - GitHub Copilot: prompt files di `.github/prompts/`.
41
+
42
+ ## Catatan tracking git
43
+
44
+ Folder `codes/`, `specifications/`, dan `tests/` di-track secara struktur (lewat `.gitkeep`) tetapi isinya di-`gitignore` by default. Lihat `GIT_STRUCTURE_GUIDE.md` untuk detailnya, atau ubah `.gitignore` sesuai kebutuhan project.
45
+
46
+ ## Contoh project nyata
47
+
48
+ Lihat `PROJECT_README.example.md` untuk contoh README project nyata yang dibangun dengan starter ini (VasVibe).
49
+
50
+ ---
51
+
52
+ Generated {{year}}.
@@ -0,0 +1,148 @@
1
+ # {{projectName}} .gitignore
2
+ # Generated by create-vasvibe
3
+
4
+ # ==========================================
5
+ # Project Folders to Ignore
6
+ # ==========================================
7
+ # Ignore all files in codes folder (development code)
8
+ codes/*
9
+ !codes/.gitkeep
10
+
11
+ # Ignore all files in specifications folder (project specs)
12
+ specifications/*
13
+ !specifications/.gitkeep
14
+
15
+ # Ignore all files in tests folder (test files)
16
+ tests/*
17
+ !tests/.gitkeep
18
+
19
+ project_overview.md
20
+ development_log.md
21
+ .mcp.json
22
+ opencode.json
23
+
24
+ # ==========================================
25
+ # OS Files
26
+ # ==========================================
27
+ # macOS
28
+ .DS_Store
29
+ .AppleDouble
30
+ .LSOverride
31
+ ._*
32
+
33
+ # Windows
34
+ Thumbs.db
35
+ ehthumbs.db
36
+ Desktop.ini
37
+ $RECYCLE.BIN/
38
+
39
+ # Linux
40
+ *~
41
+ .directory
42
+
43
+ # ==========================================
44
+ # IDE & Editor Files
45
+ # ==========================================
46
+ # VS Code
47
+ .vscode/
48
+ *.code-workspace
49
+
50
+ # JetBrains IDEs (WebStorm, IntelliJ, etc.)
51
+ .idea/
52
+ *.iml
53
+ *.iws
54
+ *.ipr
55
+
56
+ # Sublime Text
57
+ *.sublime-project
58
+ *.sublime-workspace
59
+
60
+ # Vim
61
+ *.swp
62
+ *.swo
63
+
64
+ # Emacs
65
+ \#*\#
66
+ .\#*
67
+
68
+ # ==========================================
69
+ # Node.js
70
+ # ==========================================
71
+ node_modules/
72
+ npm-debug.log*
73
+ yarn-debug.log*
74
+ yarn-error.log*
75
+ lerna-debug.log*
76
+ .pnpm-debug.log*
77
+
78
+ # ==========================================
79
+ # Frontend frameworks
80
+ # ==========================================
81
+ .next/
82
+ out/
83
+ build/
84
+ dist/
85
+
86
+ # ==========================================
87
+ # Environment Variables
88
+ # ==========================================
89
+ .env
90
+ .env.local
91
+ .env.development.local
92
+ .env.test.local
93
+ .env.production.local
94
+ .env*.local
95
+
96
+ # ==========================================
97
+ # Database
98
+ # ==========================================
99
+ *.sqlite
100
+ *.sqlite3
101
+ *.db
102
+
103
+ # Prisma
104
+ prisma/migrations/
105
+ !prisma/migrations/.gitkeep
106
+
107
+ # ==========================================
108
+ # Logs
109
+ # ==========================================
110
+ logs/
111
+ *.log
112
+
113
+ # ==========================================
114
+ # Testing
115
+ # ==========================================
116
+ coverage/
117
+ .nyc_output/
118
+ *.lcov
119
+
120
+ # ==========================================
121
+ # Build & Cache
122
+ # ==========================================
123
+ .cache/
124
+ .parcel-cache/
125
+ .turbo/
126
+ *.tsbuildinfo
127
+
128
+ # ==========================================
129
+ # Dependencies
130
+ # ==========================================
131
+ jspm_packages/
132
+
133
+ # ==========================================
134
+ # Miscellaneous
135
+ # ==========================================
136
+ .vercel
137
+ .netlify
138
+ .firebase/
139
+
140
+ # Temporary files
141
+ *.tmp
142
+ *.temp
143
+ tmp/
144
+ temp/
145
+
146
+ # OpenCode local artifacts
147
+ .opencode/node_modules/
148
+ .opencode/bun.lock