multimodel-dev-os 0.3.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/.ai/agents/README.md +23 -0
- package/.ai/agents/coder.md +11 -0
- package/.ai/agents/devops.md +8 -0
- package/.ai/agents/multimodel-orchestrator.md +105 -0
- package/.ai/agents/planner.md +11 -0
- package/.ai/agents/qa-tester.md +8 -0
- package/.ai/agents/reviewer.md +11 -0
- package/.ai/agents/security-auditor.md +8 -0
- package/.ai/agents/seo-auditor.md +8 -0
- package/.ai/checks/README.md +38 -0
- package/.ai/checks/context-budget.md +7 -0
- package/.ai/checks/pre-commit.md +8 -0
- package/.ai/checks/pre-deploy.md +8 -0
- package/.ai/checks/pre-implementation.md +7 -0
- package/.ai/checks/regression-checklist.md +8 -0
- package/.ai/config.yaml +60 -0
- package/.ai/context/README.md +18 -0
- package/.ai/context/architecture.md +15 -0
- package/.ai/context/business-rules.md +12 -0
- package/.ai/context/context-budget.md +12 -0
- package/.ai/context/deployment-rules.md +15 -0
- package/.ai/context/model-map.md +11 -0
- package/.ai/context/project-brief.md +17 -0
- package/.ai/context/seo-rules.md +15 -0
- package/.ai/prompts/README.md +37 -0
- package/.ai/prompts/generate-tests.md +5 -0
- package/.ai/prompts/handoff-to-next-model.md +5 -0
- package/.ai/prompts/implement-safely.md +5 -0
- package/.ai/prompts/plan-first.md +5 -0
- package/.ai/prompts/review-diff.md +5 -0
- package/.ai/prompts/summarize-session.md +5 -0
- package/.ai/session-logs/.gitkeep +1 -0
- package/.ai/session-logs/README.md +49 -0
- package/.ai/skills/README.md +34 -0
- package/.ai/skills/bug-fix.md +9 -0
- package/.ai/skills/caveman-bug-fix.md +2 -0
- package/.ai/skills/caveman-context-handoff.md +2 -0
- package/.ai/skills/caveman-feature-build.md +2 -0
- package/.ai/skills/context-routing.md +8 -0
- package/.ai/skills/cpanel-deploy.md +9 -0
- package/.ai/skills/example-skill.md +38 -0
- package/.ai/skills/landing-page-optimization.md +8 -0
- package/.ai/skills/model-routing.md +7 -0
- package/.ai/skills/nextjs-feature-build.md +9 -0
- package/.ai/skills/refactor.md +9 -0
- package/.ai/skills/seo-implementation.md +8 -0
- package/.ai/templates/AGENTS.caveman.md +12 -0
- package/.ai/templates/MEMORY.caveman.md +14 -0
- package/.ai/templates/RUNBOOK.caveman.md +22 -0
- package/.ai/templates/TASKS.caveman.md +7 -0
- package/.ai/templates/bug-report-template.md +14 -0
- package/.ai/templates/feature-spec-template.md +14 -0
- package/.ai/templates/project-memory-template.md +12 -0
- package/.ai/templates/session-log-template.md +16 -0
- package/.ai/templates/task-template.md +16 -0
- package/AGENTS.md +79 -0
- package/LICENSE +21 -0
- package/MEMORY.md +42 -0
- package/README.md +197 -0
- package/RUNBOOK.md +73 -0
- package/TASKS.md +28 -0
- package/adapters/antigravity/.gemini/settings.json +13 -0
- package/adapters/antigravity/AGENTS.md +29 -0
- package/adapters/antigravity/setup.md +36 -0
- package/adapters/claude/CLAUDE.md +31 -0
- package/adapters/claude/setup.md +35 -0
- package/adapters/codex/AGENTS.md +27 -0
- package/adapters/codex/setup.md +25 -0
- package/adapters/cursor/.cursorrules +30 -0
- package/adapters/cursor/setup.md +35 -0
- package/adapters/gemini/GEMINI.md +31 -0
- package/adapters/gemini/setup.md +34 -0
- package/adapters/vscode/.vscode/settings.json +21 -0
- package/adapters/vscode/setup.md +40 -0
- package/bin/multimodel-dev-os.js +267 -0
- package/docs/adapters.md +79 -0
- package/docs/architecture.md +64 -0
- package/docs/caveman-mode.md +74 -0
- package/docs/cli-roadmap.md +44 -0
- package/docs/faq.md +66 -0
- package/docs/installers.md +58 -0
- package/docs/multimodel-workflow.md +121 -0
- package/docs/npm-publishing.md +74 -0
- package/docs/quickstart.md +85 -0
- package/docs/testing-v0.2.md +73 -0
- package/examples/ecommerce-store/.ai/config.yaml +4 -0
- package/examples/ecommerce-store/AGENTS.md +5 -0
- package/examples/ecommerce-store/MEMORY.md +4 -0
- package/examples/general-app/.ai/config.yaml +4 -0
- package/examples/general-app/AGENTS.md +5 -0
- package/examples/general-app/MEMORY.md +4 -0
- package/examples/nextjs-saas/.ai/config.yaml +4 -0
- package/examples/nextjs-saas/AGENTS.md +13 -0
- package/examples/nextjs-saas/MEMORY.md +5 -0
- package/examples/seo-landing-page/.ai/config.yaml +4 -0
- package/examples/seo-landing-page/AGENTS.md +5 -0
- package/examples/seo-landing-page/MEMORY.md +5 -0
- package/examples/wordpress-site/.ai/config.yaml +4 -0
- package/examples/wordpress-site/AGENTS.md +5 -0
- package/examples/wordpress-site/MEMORY.md +4 -0
- package/package.json +43 -0
- package/scripts/install.ps1 +230 -0
- package/scripts/install.sh +237 -0
- package/scripts/pack-template.sh +39 -0
- package/scripts/verify.sh +271 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# multimodel-dev-os installer for Windows (PowerShell)
|
|
2
|
+
# Usage: irm https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.ps1 | iex
|
|
3
|
+
# Flags: -Caveman (use minimal-token templates)
|
|
4
|
+
# -All (install all adapters)
|
|
5
|
+
# -DryRun (show what would be created without creating)
|
|
6
|
+
|
|
7
|
+
param(
|
|
8
|
+
[switch]$Caveman,
|
|
9
|
+
[switch]$All,
|
|
10
|
+
[switch]$DryRun,
|
|
11
|
+
[switch]$Help
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
$Version = "0.1.0"
|
|
15
|
+
$RepoUrl = "https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main"
|
|
16
|
+
|
|
17
|
+
if ($Help) {
|
|
18
|
+
Write-Host "multimodel-dev-os installer v$Version" -ForegroundColor Blue
|
|
19
|
+
Write-Host ""
|
|
20
|
+
Write-Host "Usage: irm .../install.ps1 | iex"
|
|
21
|
+
Write-Host ""
|
|
22
|
+
Write-Host "Options:"
|
|
23
|
+
Write-Host " -Caveman Use minimal-token templates (~79% fewer tokens)"
|
|
24
|
+
Write-Host " -All Install all adapters"
|
|
25
|
+
Write-Host " -DryRun Show what would be created without creating"
|
|
26
|
+
Write-Host " -Help Show this help message"
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
Write-Host "multimodel-dev-os installer v$Version" -ForegroundColor Blue
|
|
31
|
+
Write-Host ""
|
|
32
|
+
|
|
33
|
+
# --- Helper Functions ---
|
|
34
|
+
|
|
35
|
+
function New-ProjectFile {
|
|
36
|
+
param(
|
|
37
|
+
[string]$Path,
|
|
38
|
+
[string]$Url
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
if (Test-Path $Path) {
|
|
42
|
+
Write-Host " SKIP $Path (already exists)" -ForegroundColor Yellow
|
|
43
|
+
return
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if ($DryRun) {
|
|
47
|
+
Write-Host " WOULD CREATE $Path" -ForegroundColor Blue
|
|
48
|
+
return
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
$dir = Split-Path -Parent $Path
|
|
52
|
+
if ($dir -and !(Test-Path $dir)) {
|
|
53
|
+
New-Item -ItemType Directory -Path $dir -Force | Out-Null
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
Invoke-WebRequest -Uri $Url -OutFile $Path -UseBasicParsing -ErrorAction Stop
|
|
58
|
+
Write-Host " CREATE $Path" -ForegroundColor Green
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
Write-Host " FAIL $Path (download failed)" -ForegroundColor Red
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function New-ProjectDir {
|
|
66
|
+
param([string]$Path)
|
|
67
|
+
|
|
68
|
+
if (Test-Path $Path) {
|
|
69
|
+
Write-Host " SKIP $Path/ (already exists)" -ForegroundColor Yellow
|
|
70
|
+
return
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if ($DryRun) {
|
|
74
|
+
Write-Host " WOULD CREATE $Path/" -ForegroundColor Blue
|
|
75
|
+
return
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
New-Item -ItemType Directory -Path $Path -Force | Out-Null
|
|
79
|
+
Write-Host " CREATE $Path/" -ForegroundColor Green
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
# --- Phase 1: Core Files ---
|
|
83
|
+
|
|
84
|
+
Write-Host "Creating core files..." -ForegroundColor Blue
|
|
85
|
+
|
|
86
|
+
if ($Caveman) {
|
|
87
|
+
New-ProjectFile "AGENTS.md" "$RepoUrl/.ai/templates/AGENTS.caveman.md"
|
|
88
|
+
New-ProjectFile "MEMORY.md" "$RepoUrl/.ai/templates/MEMORY.caveman.md"
|
|
89
|
+
New-ProjectFile "TASKS.md" "$RepoUrl/.ai/templates/TASKS.caveman.md"
|
|
90
|
+
New-ProjectFile "RUNBOOK.md" "$RepoUrl/.ai/templates/RUNBOOK.caveman.md"
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
New-ProjectFile "AGENTS.md" "$RepoUrl/AGENTS.md"
|
|
94
|
+
New-ProjectFile "MEMORY.md" "$RepoUrl/MEMORY.md"
|
|
95
|
+
New-ProjectFile "TASKS.md" "$RepoUrl/TASKS.md"
|
|
96
|
+
New-ProjectFile "RUNBOOK.md" "$RepoUrl/RUNBOOK.md"
|
|
97
|
+
}
|
|
98
|
+
New-ProjectFile ".gitattributes" "$RepoUrl/.gitattributes"
|
|
99
|
+
New-ProjectFile "bin/multimodel-dev-os.js" "$RepoUrl/bin/multimodel-dev-os.js"
|
|
100
|
+
|
|
101
|
+
# --- Phase 2: .ai/ Directory ---
|
|
102
|
+
|
|
103
|
+
Write-Host ""
|
|
104
|
+
Write-Host "Creating .ai/ directory..." -ForegroundColor Blue
|
|
105
|
+
|
|
106
|
+
New-ProjectFile ".ai/config.yaml" "$RepoUrl/.ai/config.yaml"
|
|
107
|
+
New-ProjectDir ".ai/context"
|
|
108
|
+
New-ProjectFile ".ai/context/README.md" "$RepoUrl/.ai/context/README.md"
|
|
109
|
+
New-ProjectDir ".ai/agents"
|
|
110
|
+
New-ProjectFile ".ai/agents/README.md" "$RepoUrl/.ai/agents/README.md"
|
|
111
|
+
New-ProjectFile ".ai/agents/multimodel-orchestrator.md" "$RepoUrl/.ai/agents/multimodel-orchestrator.md"
|
|
112
|
+
New-ProjectDir ".ai/skills"
|
|
113
|
+
New-ProjectFile ".ai/skills/README.md" "$RepoUrl/.ai/skills/README.md"
|
|
114
|
+
New-ProjectFile ".ai/skills/example-skill.md" "$RepoUrl/.ai/skills/example-skill.md"
|
|
115
|
+
New-ProjectDir ".ai/prompts"
|
|
116
|
+
New-ProjectFile ".ai/prompts/README.md" "$RepoUrl/.ai/prompts/README.md"
|
|
117
|
+
New-ProjectDir ".ai/checks"
|
|
118
|
+
New-ProjectFile ".ai/checks/README.md" "$RepoUrl/.ai/checks/README.md"
|
|
119
|
+
New-ProjectFile ".ai/checks/pre-commit.md" "$RepoUrl/.ai/checks/pre-commit.md"
|
|
120
|
+
New-ProjectDir ".ai/session-logs"
|
|
121
|
+
New-ProjectFile ".ai/session-logs/README.md" "$RepoUrl/.ai/session-logs/README.md"
|
|
122
|
+
New-ProjectDir ".ai/templates"
|
|
123
|
+
New-ProjectFile ".ai/templates/AGENTS.caveman.md" "$RepoUrl/.ai/templates/AGENTS.caveman.md"
|
|
124
|
+
New-ProjectFile ".ai/templates/MEMORY.caveman.md" "$RepoUrl/.ai/templates/MEMORY.caveman.md"
|
|
125
|
+
New-ProjectFile ".ai/templates/TASKS.caveman.md" "$RepoUrl/.ai/templates/TASKS.caveman.md"
|
|
126
|
+
New-ProjectFile ".ai/templates/RUNBOOK.caveman.md" "$RepoUrl/.ai/templates/RUNBOOK.caveman.md"
|
|
127
|
+
|
|
128
|
+
# --- Phase 3: Adapters ---
|
|
129
|
+
|
|
130
|
+
Write-Host ""
|
|
131
|
+
|
|
132
|
+
function Install-Adapter {
|
|
133
|
+
param([string]$Name)
|
|
134
|
+
|
|
135
|
+
Write-Host "Installing $Name adapter..." -ForegroundColor Blue
|
|
136
|
+
|
|
137
|
+
switch ($Name) {
|
|
138
|
+
"codex" {
|
|
139
|
+
New-ProjectFile "adapters/codex/AGENTS.md" "$RepoUrl/adapters/codex/AGENTS.md"
|
|
140
|
+
New-ProjectFile "adapters/codex/setup.md" "$RepoUrl/adapters/codex/setup.md"
|
|
141
|
+
}
|
|
142
|
+
"antigravity" {
|
|
143
|
+
New-ProjectFile "adapters/antigravity/AGENTS.md" "$RepoUrl/adapters/antigravity/AGENTS.md"
|
|
144
|
+
New-ProjectFile "adapters/antigravity/.gemini/settings.json" "$RepoUrl/adapters/antigravity/.gemini/settings.json"
|
|
145
|
+
New-ProjectFile "adapters/antigravity/setup.md" "$RepoUrl/adapters/antigravity/setup.md"
|
|
146
|
+
}
|
|
147
|
+
"cursor" {
|
|
148
|
+
New-ProjectFile "adapters/cursor/.cursorrules" "$RepoUrl/adapters/cursor/.cursorrules"
|
|
149
|
+
New-ProjectFile "adapters/cursor/setup.md" "$RepoUrl/adapters/cursor/setup.md"
|
|
150
|
+
}
|
|
151
|
+
"claude" {
|
|
152
|
+
New-ProjectFile "adapters/claude/CLAUDE.md" "$RepoUrl/adapters/claude/CLAUDE.md"
|
|
153
|
+
New-ProjectFile "adapters/claude/setup.md" "$RepoUrl/adapters/claude/setup.md"
|
|
154
|
+
}
|
|
155
|
+
"gemini" {
|
|
156
|
+
New-ProjectFile "adapters/gemini/GEMINI.md" "$RepoUrl/adapters/gemini/GEMINI.md"
|
|
157
|
+
New-ProjectFile "adapters/gemini/setup.md" "$RepoUrl/adapters/gemini/setup.md"
|
|
158
|
+
}
|
|
159
|
+
"vscode" {
|
|
160
|
+
New-ProjectFile "adapters/vscode/.vscode/settings.json" "$RepoUrl/adapters/vscode/.vscode/settings.json"
|
|
161
|
+
New-ProjectFile "adapters/vscode/setup.md" "$RepoUrl/adapters/vscode/setup.md"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if ($All) {
|
|
167
|
+
foreach ($adapter in @("codex", "antigravity", "cursor", "claude", "gemini", "vscode")) {
|
|
168
|
+
Install-Adapter $adapter
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
Write-Host "Which adapters do you want to install?" -ForegroundColor Yellow
|
|
173
|
+
Write-Host " 1) all"
|
|
174
|
+
Write-Host " 2) codex"
|
|
175
|
+
Write-Host " 3) antigravity"
|
|
176
|
+
Write-Host " 4) cursor"
|
|
177
|
+
Write-Host " 5) claude"
|
|
178
|
+
Write-Host " 6) gemini"
|
|
179
|
+
Write-Host " 7) vscode"
|
|
180
|
+
Write-Host " 8) none"
|
|
181
|
+
Write-Host ""
|
|
182
|
+
$choices = Read-Host "Enter choices (comma-separated, e.g., 2,4,5)"
|
|
183
|
+
|
|
184
|
+
if ([string]::IsNullOrWhiteSpace($choices) -or $choices -eq "8") {
|
|
185
|
+
Write-Host "Skipping adapters." -ForegroundColor Yellow
|
|
186
|
+
}
|
|
187
|
+
elseif ($choices -eq "1") {
|
|
188
|
+
foreach ($adapter in @("codex", "antigravity", "cursor", "claude", "gemini", "vscode")) {
|
|
189
|
+
Install-Adapter $adapter
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
$selected = $choices -split "," | ForEach-Object { $_.Trim() }
|
|
194
|
+
foreach ($choice in $selected) {
|
|
195
|
+
switch ($choice) {
|
|
196
|
+
"2" { Install-Adapter "codex" }
|
|
197
|
+
"3" { Install-Adapter "antigravity" }
|
|
198
|
+
"4" { Install-Adapter "cursor" }
|
|
199
|
+
"5" { Install-Adapter "claude" }
|
|
200
|
+
"6" { Install-Adapter "gemini" }
|
|
201
|
+
"7" { Install-Adapter "vscode" }
|
|
202
|
+
default { Write-Host "Unknown choice: $choice" -ForegroundColor Red }
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
# --- Summary ---
|
|
209
|
+
|
|
210
|
+
Write-Host ""
|
|
211
|
+
Write-Host "multimodel-dev-os installed!" -ForegroundColor Green
|
|
212
|
+
Write-Host ""
|
|
213
|
+
Write-Host "Next steps:"
|
|
214
|
+
Write-Host " 1. Edit AGENTS.md with your project details"
|
|
215
|
+
Write-Host " 2. Edit .ai/config.yaml to enable your adapters"
|
|
216
|
+
Write-Host " 3. Copy adapter files to your project root as needed:"
|
|
217
|
+
Write-Host " - Cursor: Copy-Item adapters/cursor/.cursorrules .cursorrules"
|
|
218
|
+
Write-Host " - Claude: Copy-Item adapters/claude/CLAUDE.md CLAUDE.md"
|
|
219
|
+
Write-Host " - VS Code: Copy-Item -Recurse adapters/vscode/.vscode/ .vscode/"
|
|
220
|
+
Write-Host ""
|
|
221
|
+
Write-Host " Docs: https://github.com/rizvee/multimodel-dev-os"
|
|
222
|
+
Write-Host ""
|
|
223
|
+
|
|
224
|
+
if ($Caveman) {
|
|
225
|
+
Write-Host " Caveman Mode active - minimal-token templates installed" -ForegroundColor Yellow
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
if ($DryRun) {
|
|
229
|
+
Write-Host " Dry run - no files were created" -ForegroundColor Blue
|
|
230
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# multimodel-dev-os installer for macOS / Linux / WSL
|
|
5
|
+
# Usage: curl -fsSL https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.sh | bash
|
|
6
|
+
# Flags: --caveman (use minimal-token templates)
|
|
7
|
+
# --all (install all adapters)
|
|
8
|
+
# --dry-run (show what would be created without creating)
|
|
9
|
+
|
|
10
|
+
VERSION="0.1.0"
|
|
11
|
+
REPO_URL="https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main"
|
|
12
|
+
CAVEMAN=false
|
|
13
|
+
DRY_RUN=false
|
|
14
|
+
INSTALL_ALL=false
|
|
15
|
+
|
|
16
|
+
# Colors
|
|
17
|
+
RED='\033[0;31m'
|
|
18
|
+
GREEN='\033[0;32m'
|
|
19
|
+
YELLOW='\033[0;33m'
|
|
20
|
+
BLUE='\033[0;34m'
|
|
21
|
+
NC='\033[0m' # No Color
|
|
22
|
+
|
|
23
|
+
# Parse arguments
|
|
24
|
+
for arg in "$@"; do
|
|
25
|
+
case $arg in
|
|
26
|
+
--caveman) CAVEMAN=true ;;
|
|
27
|
+
--dry-run) DRY_RUN=true ;;
|
|
28
|
+
--all) INSTALL_ALL=true ;;
|
|
29
|
+
--help)
|
|
30
|
+
echo "multimodel-dev-os installer v${VERSION}"
|
|
31
|
+
echo ""
|
|
32
|
+
echo "Usage: curl -fsSL .../install.sh | bash [-s -- OPTIONS]"
|
|
33
|
+
echo ""
|
|
34
|
+
echo "Options:"
|
|
35
|
+
echo " --caveman Use minimal-token templates (~79% fewer tokens)"
|
|
36
|
+
echo " --all Install all adapters"
|
|
37
|
+
echo " --dry-run Show what would be created without creating"
|
|
38
|
+
echo " --help Show this help message"
|
|
39
|
+
exit 0
|
|
40
|
+
;;
|
|
41
|
+
*)
|
|
42
|
+
echo -e "${RED}Unknown option: $arg${NC}"
|
|
43
|
+
exit 1
|
|
44
|
+
;;
|
|
45
|
+
esac
|
|
46
|
+
done
|
|
47
|
+
|
|
48
|
+
echo -e "${BLUE}multimodel-dev-os installer v${VERSION}${NC}"
|
|
49
|
+
echo ""
|
|
50
|
+
|
|
51
|
+
# --- Helper Functions ---
|
|
52
|
+
|
|
53
|
+
create_file() {
|
|
54
|
+
local path="$1"
|
|
55
|
+
local url="$2"
|
|
56
|
+
|
|
57
|
+
if [ -f "$path" ]; then
|
|
58
|
+
echo -e " ${YELLOW}SKIP${NC} $path (already exists)"
|
|
59
|
+
return
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
if [ "$DRY_RUN" = true ]; then
|
|
63
|
+
echo -e " ${BLUE}WOULD CREATE${NC} $path"
|
|
64
|
+
return
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
mkdir -p "$(dirname "$path")"
|
|
68
|
+
if curl -fsSL "$url" -o "$path" 2>/dev/null; then
|
|
69
|
+
echo -e " ${GREEN}CREATE${NC} $path"
|
|
70
|
+
else
|
|
71
|
+
echo -e " ${RED}FAIL${NC} $path (download failed)"
|
|
72
|
+
fi
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
create_dir() {
|
|
76
|
+
local path="$1"
|
|
77
|
+
|
|
78
|
+
if [ -d "$path" ]; then
|
|
79
|
+
echo -e " ${YELLOW}SKIP${NC} $path/ (already exists)"
|
|
80
|
+
return
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
if [ "$DRY_RUN" = true ]; then
|
|
84
|
+
echo -e " ${BLUE}WOULD CREATE${NC} $path/"
|
|
85
|
+
return
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
mkdir -p "$path"
|
|
89
|
+
echo -e " ${GREEN}CREATE${NC} $path/"
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# --- Phase 1: Core Files ---
|
|
93
|
+
|
|
94
|
+
echo -e "${BLUE}Creating core files...${NC}"
|
|
95
|
+
|
|
96
|
+
if [ "$CAVEMAN" = true ]; then
|
|
97
|
+
create_file "AGENTS.md" "${REPO_URL}/.ai/templates/AGENTS.caveman.md"
|
|
98
|
+
create_file "MEMORY.md" "${REPO_URL}/.ai/templates/MEMORY.caveman.md"
|
|
99
|
+
create_file "TASKS.md" "${REPO_URL}/.ai/templates/TASKS.caveman.md"
|
|
100
|
+
create_file "RUNBOOK.md" "${REPO_URL}/.ai/templates/RUNBOOK.caveman.md"
|
|
101
|
+
else
|
|
102
|
+
create_file "AGENTS.md" "${REPO_URL}/AGENTS.md"
|
|
103
|
+
create_file "MEMORY.md" "${REPO_URL}/MEMORY.md"
|
|
104
|
+
create_file "TASKS.md" "${REPO_URL}/TASKS.md"
|
|
105
|
+
create_file "RUNBOOK.md" "${REPO_URL}/RUNBOOK.md"
|
|
106
|
+
fi
|
|
107
|
+
create_file ".gitattributes" "${REPO_URL}/.gitattributes"
|
|
108
|
+
create_file "bin/multimodel-dev-os.js" "${REPO_URL}/bin/multimodel-dev-os.js"
|
|
109
|
+
|
|
110
|
+
# --- Phase 2: .ai/ Directory ---
|
|
111
|
+
|
|
112
|
+
echo ""
|
|
113
|
+
echo -e "${BLUE}Creating .ai/ directory...${NC}"
|
|
114
|
+
|
|
115
|
+
create_file ".ai/config.yaml" "${REPO_URL}/.ai/config.yaml"
|
|
116
|
+
create_dir ".ai/context"
|
|
117
|
+
create_file ".ai/context/README.md" "${REPO_URL}/.ai/context/README.md"
|
|
118
|
+
create_dir ".ai/agents"
|
|
119
|
+
create_file ".ai/agents/README.md" "${REPO_URL}/.ai/agents/README.md"
|
|
120
|
+
create_file ".ai/agents/multimodel-orchestrator.md" "${REPO_URL}/.ai/agents/multimodel-orchestrator.md"
|
|
121
|
+
create_dir ".ai/skills"
|
|
122
|
+
create_file ".ai/skills/README.md" "${REPO_URL}/.ai/skills/README.md"
|
|
123
|
+
create_file ".ai/skills/example-skill.md" "${REPO_URL}/.ai/skills/example-skill.md"
|
|
124
|
+
create_dir ".ai/prompts"
|
|
125
|
+
create_file ".ai/prompts/README.md" "${REPO_URL}/.ai/prompts/README.md"
|
|
126
|
+
create_dir ".ai/checks"
|
|
127
|
+
create_file ".ai/checks/README.md" "${REPO_URL}/.ai/checks/README.md"
|
|
128
|
+
create_file ".ai/checks/pre-commit.md" "${REPO_URL}/.ai/checks/pre-commit.md"
|
|
129
|
+
create_dir ".ai/session-logs"
|
|
130
|
+
create_file ".ai/session-logs/README.md" "${REPO_URL}/.ai/session-logs/README.md"
|
|
131
|
+
create_dir ".ai/templates"
|
|
132
|
+
create_file ".ai/templates/AGENTS.caveman.md" "${REPO_URL}/.ai/templates/AGENTS.caveman.md"
|
|
133
|
+
create_file ".ai/templates/MEMORY.caveman.md" "${REPO_URL}/.ai/templates/MEMORY.caveman.md"
|
|
134
|
+
create_file ".ai/templates/TASKS.caveman.md" "${REPO_URL}/.ai/templates/TASKS.caveman.md"
|
|
135
|
+
create_file ".ai/templates/RUNBOOK.caveman.md" "${REPO_URL}/.ai/templates/RUNBOOK.caveman.md"
|
|
136
|
+
|
|
137
|
+
# --- Phase 3: Adapters ---
|
|
138
|
+
|
|
139
|
+
echo ""
|
|
140
|
+
|
|
141
|
+
install_adapter() {
|
|
142
|
+
local name="$1"
|
|
143
|
+
echo -e "${BLUE}Installing $name adapter...${NC}"
|
|
144
|
+
|
|
145
|
+
case $name in
|
|
146
|
+
codex)
|
|
147
|
+
create_file "adapters/codex/AGENTS.md" "${REPO_URL}/adapters/codex/AGENTS.md"
|
|
148
|
+
create_file "adapters/codex/setup.md" "${REPO_URL}/adapters/codex/setup.md"
|
|
149
|
+
;;
|
|
150
|
+
antigravity)
|
|
151
|
+
create_file "adapters/antigravity/AGENTS.md" "${REPO_URL}/adapters/antigravity/AGENTS.md"
|
|
152
|
+
create_file "adapters/antigravity/.gemini/settings.json" "${REPO_URL}/adapters/antigravity/.gemini/settings.json"
|
|
153
|
+
create_file "adapters/antigravity/setup.md" "${REPO_URL}/adapters/antigravity/setup.md"
|
|
154
|
+
;;
|
|
155
|
+
cursor)
|
|
156
|
+
create_file "adapters/cursor/.cursorrules" "${REPO_URL}/adapters/cursor/.cursorrules"
|
|
157
|
+
create_file "adapters/cursor/setup.md" "${REPO_URL}/adapters/cursor/setup.md"
|
|
158
|
+
;;
|
|
159
|
+
claude)
|
|
160
|
+
create_file "adapters/claude/CLAUDE.md" "${REPO_URL}/adapters/claude/CLAUDE.md"
|
|
161
|
+
create_file "adapters/claude/setup.md" "${REPO_URL}/adapters/claude/setup.md"
|
|
162
|
+
;;
|
|
163
|
+
gemini)
|
|
164
|
+
create_file "adapters/gemini/GEMINI.md" "${REPO_URL}/adapters/gemini/GEMINI.md"
|
|
165
|
+
create_file "adapters/gemini/setup.md" "${REPO_URL}/adapters/gemini/setup.md"
|
|
166
|
+
;;
|
|
167
|
+
vscode)
|
|
168
|
+
create_file "adapters/vscode/.vscode/settings.json" "${REPO_URL}/adapters/vscode/.vscode/settings.json"
|
|
169
|
+
create_file "adapters/vscode/setup.md" "${REPO_URL}/adapters/vscode/setup.md"
|
|
170
|
+
;;
|
|
171
|
+
esac
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if [ "$INSTALL_ALL" = true ]; then
|
|
175
|
+
for adapter in codex antigravity cursor claude gemini vscode; do
|
|
176
|
+
install_adapter "$adapter"
|
|
177
|
+
done
|
|
178
|
+
else
|
|
179
|
+
echo -e "${YELLOW}Which adapters do you want to install?${NC}"
|
|
180
|
+
echo " 1) all"
|
|
181
|
+
echo " 2) codex"
|
|
182
|
+
echo " 3) antigravity"
|
|
183
|
+
echo " 4) cursor"
|
|
184
|
+
echo " 5) claude"
|
|
185
|
+
echo " 6) gemini"
|
|
186
|
+
echo " 7) vscode"
|
|
187
|
+
echo " 8) none"
|
|
188
|
+
echo ""
|
|
189
|
+
echo -n "Enter choices (comma-separated, e.g., 2,4,5): "
|
|
190
|
+
read -r choices
|
|
191
|
+
|
|
192
|
+
if [ -z "$choices" ] || [ "$choices" = "8" ]; then
|
|
193
|
+
echo -e "${YELLOW}Skipping adapters.${NC}"
|
|
194
|
+
elif [ "$choices" = "1" ]; then
|
|
195
|
+
for adapter in codex antigravity cursor claude gemini vscode; do
|
|
196
|
+
install_adapter "$adapter"
|
|
197
|
+
done
|
|
198
|
+
else
|
|
199
|
+
IFS=',' read -ra selected <<< "$choices"
|
|
200
|
+
for choice in "${selected[@]}"; do
|
|
201
|
+
choice=$(echo "$choice" | tr -d ' ')
|
|
202
|
+
case $choice in
|
|
203
|
+
2) install_adapter "codex" ;;
|
|
204
|
+
3) install_adapter "antigravity" ;;
|
|
205
|
+
4) install_adapter "cursor" ;;
|
|
206
|
+
5) install_adapter "claude" ;;
|
|
207
|
+
6) install_adapter "gemini" ;;
|
|
208
|
+
7) install_adapter "vscode" ;;
|
|
209
|
+
*) echo -e "${RED}Unknown choice: $choice${NC}" ;;
|
|
210
|
+
esac
|
|
211
|
+
done
|
|
212
|
+
fi
|
|
213
|
+
fi
|
|
214
|
+
|
|
215
|
+
# --- Summary ---
|
|
216
|
+
|
|
217
|
+
echo ""
|
|
218
|
+
echo -e "${GREEN}â
multimodel-dev-os installed!${NC}"
|
|
219
|
+
echo ""
|
|
220
|
+
echo "Next steps:"
|
|
221
|
+
echo " 1. Edit AGENTS.md with your project details"
|
|
222
|
+
echo " 2. Edit .ai/config.yaml to enable your adapters"
|
|
223
|
+
echo " 3. Copy adapter files to your project root as needed:"
|
|
224
|
+
echo " - Cursor: cp adapters/cursor/.cursorrules .cursorrules"
|
|
225
|
+
echo " - Claude: cp adapters/claude/CLAUDE.md CLAUDE.md"
|
|
226
|
+
echo " - VS Code: cp -r adapters/vscode/.vscode/ .vscode/"
|
|
227
|
+
echo ""
|
|
228
|
+
echo " Docs: https://github.com/rizvee/multimodel-dev-os"
|
|
229
|
+
echo ""
|
|
230
|
+
|
|
231
|
+
if [ "$CAVEMAN" = true ]; then
|
|
232
|
+
echo -e " ${YELLOW}ðĶī Caveman Mode active â minimal-token templates installed${NC}"
|
|
233
|
+
fi
|
|
234
|
+
|
|
235
|
+
if [ "$DRY_RUN" = true ]; then
|
|
236
|
+
echo -e " ${BLUE}ð Dry run â no files were created${NC}"
|
|
237
|
+
fi
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Pack multimodel-dev-os template files into a distributable archive.
|
|
5
|
+
# Used for future npm/CLI packaging. Does not include .git, examples, or docs.
|
|
6
|
+
|
|
7
|
+
VERSION="${1:-0.1.0}"
|
|
8
|
+
OUTPUT="multimodel-dev-os-${VERSION}.tar.gz"
|
|
9
|
+
|
|
10
|
+
echo "Packing multimodel-dev-os v${VERSION}..."
|
|
11
|
+
|
|
12
|
+
INCLUDE=(
|
|
13
|
+
AGENTS.md
|
|
14
|
+
MEMORY.md
|
|
15
|
+
TASKS.md
|
|
16
|
+
RUNBOOK.md
|
|
17
|
+
.ai/
|
|
18
|
+
adapters/
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
# Check that required files exist
|
|
22
|
+
for item in "${INCLUDE[@]}"; do
|
|
23
|
+
if [ ! -e "$item" ]; then
|
|
24
|
+
echo "ERROR: $item not found. Run from the repo root."
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
done
|
|
28
|
+
|
|
29
|
+
tar -czf "$OUTPUT" \
|
|
30
|
+
--exclude='*.gitkeep' \
|
|
31
|
+
--exclude='.ai/session-logs/*.md' \
|
|
32
|
+
--exclude='!.ai/session-logs/README.md' \
|
|
33
|
+
"${INCLUDE[@]}"
|
|
34
|
+
|
|
35
|
+
echo "Created: $OUTPUT"
|
|
36
|
+
echo "Contents:"
|
|
37
|
+
tar -tzf "$OUTPUT" | head -30
|
|
38
|
+
echo "..."
|
|
39
|
+
echo "Done."
|