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.
Files changed (105) hide show
  1. package/.ai/agents/README.md +23 -0
  2. package/.ai/agents/coder.md +11 -0
  3. package/.ai/agents/devops.md +8 -0
  4. package/.ai/agents/multimodel-orchestrator.md +105 -0
  5. package/.ai/agents/planner.md +11 -0
  6. package/.ai/agents/qa-tester.md +8 -0
  7. package/.ai/agents/reviewer.md +11 -0
  8. package/.ai/agents/security-auditor.md +8 -0
  9. package/.ai/agents/seo-auditor.md +8 -0
  10. package/.ai/checks/README.md +38 -0
  11. package/.ai/checks/context-budget.md +7 -0
  12. package/.ai/checks/pre-commit.md +8 -0
  13. package/.ai/checks/pre-deploy.md +8 -0
  14. package/.ai/checks/pre-implementation.md +7 -0
  15. package/.ai/checks/regression-checklist.md +8 -0
  16. package/.ai/config.yaml +60 -0
  17. package/.ai/context/README.md +18 -0
  18. package/.ai/context/architecture.md +15 -0
  19. package/.ai/context/business-rules.md +12 -0
  20. package/.ai/context/context-budget.md +12 -0
  21. package/.ai/context/deployment-rules.md +15 -0
  22. package/.ai/context/model-map.md +11 -0
  23. package/.ai/context/project-brief.md +17 -0
  24. package/.ai/context/seo-rules.md +15 -0
  25. package/.ai/prompts/README.md +37 -0
  26. package/.ai/prompts/generate-tests.md +5 -0
  27. package/.ai/prompts/handoff-to-next-model.md +5 -0
  28. package/.ai/prompts/implement-safely.md +5 -0
  29. package/.ai/prompts/plan-first.md +5 -0
  30. package/.ai/prompts/review-diff.md +5 -0
  31. package/.ai/prompts/summarize-session.md +5 -0
  32. package/.ai/session-logs/.gitkeep +1 -0
  33. package/.ai/session-logs/README.md +49 -0
  34. package/.ai/skills/README.md +34 -0
  35. package/.ai/skills/bug-fix.md +9 -0
  36. package/.ai/skills/caveman-bug-fix.md +2 -0
  37. package/.ai/skills/caveman-context-handoff.md +2 -0
  38. package/.ai/skills/caveman-feature-build.md +2 -0
  39. package/.ai/skills/context-routing.md +8 -0
  40. package/.ai/skills/cpanel-deploy.md +9 -0
  41. package/.ai/skills/example-skill.md +38 -0
  42. package/.ai/skills/landing-page-optimization.md +8 -0
  43. package/.ai/skills/model-routing.md +7 -0
  44. package/.ai/skills/nextjs-feature-build.md +9 -0
  45. package/.ai/skills/refactor.md +9 -0
  46. package/.ai/skills/seo-implementation.md +8 -0
  47. package/.ai/templates/AGENTS.caveman.md +12 -0
  48. package/.ai/templates/MEMORY.caveman.md +14 -0
  49. package/.ai/templates/RUNBOOK.caveman.md +22 -0
  50. package/.ai/templates/TASKS.caveman.md +7 -0
  51. package/.ai/templates/bug-report-template.md +14 -0
  52. package/.ai/templates/feature-spec-template.md +14 -0
  53. package/.ai/templates/project-memory-template.md +12 -0
  54. package/.ai/templates/session-log-template.md +16 -0
  55. package/.ai/templates/task-template.md +16 -0
  56. package/AGENTS.md +79 -0
  57. package/LICENSE +21 -0
  58. package/MEMORY.md +42 -0
  59. package/README.md +197 -0
  60. package/RUNBOOK.md +73 -0
  61. package/TASKS.md +28 -0
  62. package/adapters/antigravity/.gemini/settings.json +13 -0
  63. package/adapters/antigravity/AGENTS.md +29 -0
  64. package/adapters/antigravity/setup.md +36 -0
  65. package/adapters/claude/CLAUDE.md +31 -0
  66. package/adapters/claude/setup.md +35 -0
  67. package/adapters/codex/AGENTS.md +27 -0
  68. package/adapters/codex/setup.md +25 -0
  69. package/adapters/cursor/.cursorrules +30 -0
  70. package/adapters/cursor/setup.md +35 -0
  71. package/adapters/gemini/GEMINI.md +31 -0
  72. package/adapters/gemini/setup.md +34 -0
  73. package/adapters/vscode/.vscode/settings.json +21 -0
  74. package/adapters/vscode/setup.md +40 -0
  75. package/bin/multimodel-dev-os.js +267 -0
  76. package/docs/adapters.md +79 -0
  77. package/docs/architecture.md +64 -0
  78. package/docs/caveman-mode.md +74 -0
  79. package/docs/cli-roadmap.md +44 -0
  80. package/docs/faq.md +66 -0
  81. package/docs/installers.md +58 -0
  82. package/docs/multimodel-workflow.md +121 -0
  83. package/docs/npm-publishing.md +74 -0
  84. package/docs/quickstart.md +85 -0
  85. package/docs/testing-v0.2.md +73 -0
  86. package/examples/ecommerce-store/.ai/config.yaml +4 -0
  87. package/examples/ecommerce-store/AGENTS.md +5 -0
  88. package/examples/ecommerce-store/MEMORY.md +4 -0
  89. package/examples/general-app/.ai/config.yaml +4 -0
  90. package/examples/general-app/AGENTS.md +5 -0
  91. package/examples/general-app/MEMORY.md +4 -0
  92. package/examples/nextjs-saas/.ai/config.yaml +4 -0
  93. package/examples/nextjs-saas/AGENTS.md +13 -0
  94. package/examples/nextjs-saas/MEMORY.md +5 -0
  95. package/examples/seo-landing-page/.ai/config.yaml +4 -0
  96. package/examples/seo-landing-page/AGENTS.md +5 -0
  97. package/examples/seo-landing-page/MEMORY.md +5 -0
  98. package/examples/wordpress-site/.ai/config.yaml +4 -0
  99. package/examples/wordpress-site/AGENTS.md +5 -0
  100. package/examples/wordpress-site/MEMORY.md +4 -0
  101. package/package.json +43 -0
  102. package/scripts/install.ps1 +230 -0
  103. package/scripts/install.sh +237 -0
  104. package/scripts/pack-template.sh +39 -0
  105. package/scripts/verify.sh +271 -0
@@ -0,0 +1,267 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * multimodel-dev-os CLI
5
+ * Dependency-free local initialization and validation utility.
6
+ */
7
+
8
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync } from 'fs';
9
+ import { join, dirname, resolve } from 'path';
10
+ import { fileURLToPath } from 'url';
11
+
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ const sourceRoot = resolve(__dirname, '..');
15
+
16
+ let version = '0.3.0';
17
+ try {
18
+ const pkgData = JSON.parse(readFileSync(resolve(sourceRoot, 'package.json'), 'utf8'));
19
+ version = pkgData.version;
20
+ } catch (e) {}
21
+
22
+ const ARGS = process.argv.slice(2);
23
+
24
+ // Parse parameters manually to avoid external dependencies
25
+ function parseArgs(args) {
26
+ const params = {
27
+ command: null,
28
+ target: process.cwd(),
29
+ template: 'general-app',
30
+ adapters: [],
31
+ caveman: false,
32
+ dryRun: false,
33
+ force: false,
34
+ help: false
35
+ };
36
+
37
+ for (let i = 0; i < args.length; i++) {
38
+ const arg = args[i];
39
+ if (arg === '--target' || arg === '-t') {
40
+ params.target = resolve(args[++i]);
41
+ } else if (arg === '--template') {
42
+ params.template = args[++i];
43
+ } else if (arg === '--adapter' || arg === '-a') {
44
+ params.adapters.push(args[++i]);
45
+ } else if (arg === '--caveman') {
46
+ params.caveman = true;
47
+ } else if (arg === '--dry-run' || arg === '-d') {
48
+ params.dryRun = true;
49
+ } else if (arg === '--force' || arg === '-f') {
50
+ params.force = true;
51
+ } else if (arg === '--help' || arg === '-h') {
52
+ params.help = true;
53
+ } else if (!params.command && !arg.startsWith('-')) {
54
+ params.command = arg;
55
+ }
56
+ }
57
+ return params;
58
+ }
59
+
60
+ const params = parseArgs(ARGS);
61
+ const COMMAND = params.command;
62
+
63
+ if (params.help || !COMMAND) {
64
+ showHelp();
65
+ process.exit(0);
66
+ }
67
+
68
+ if (COMMAND === 'init') {
69
+ handleInit(params);
70
+ } else if (COMMAND === 'verify') {
71
+ handleVerify(params);
72
+ } else {
73
+ console.error(`\x1b[31mUnknown command: ${COMMAND}\x1b[0m`);
74
+ showHelp();
75
+ process.exit(1);
76
+ }
77
+
78
+ function showHelp() {
79
+ console.log(`\n🧠 \x1b[36mmultimodel-dev-os CLI v${version}\x1b[0m`);
80
+ console.log('====================================');
81
+ console.log('Usage: node bin/multimodel-dev-os.js <command> [options]\n');
82
+ console.log('Commands:');
83
+ console.log(' init Initialize a project with configs and adapters');
84
+ console.log(' verify Validate structural integrity of an existing project\n');
85
+ console.log('Options:');
86
+ console.log(' -t, --target <path> Target folder destination (default: current working directory)');
87
+ console.log(' --template <name> Template profile: nextjs-saas, wordpress-site, ecommerce-store,');
88
+ console.log(' seo-landing-page, general-app (default: general-app)');
89
+ console.log(' -a, --adapter <name> Inject specific adapter: codex, antigravity, cursor, claude, gemini, vscode');
90
+ console.log(' --caveman Use minimal-token templates (~79% fewer tokens)');
91
+ console.log(' -d, --dry-run Preview planned file actions without modifying the filesystem');
92
+ console.log(' -f, --force Overwrite existing files without prompting\n');
93
+ }
94
+
95
+ function handleInit(options) {
96
+ console.log(`\n\x1b[34mInitializing multimodel-dev-os in: ${options.target}\x1b[0m`);
97
+ console.log(`Template profile: \x1b[32m${options.template}\x1b[0m`);
98
+ if (options.caveman) console.log('Bone variant: \x1b[33mCaveman Mode Active\x1b[0m');
99
+ if (options.dryRun) console.log('\x1b[36mDry Run active - no actual modifications will occur\x1b[0m');
100
+
101
+ const operations = [];
102
+ const conflicts = [];
103
+
104
+ // Determine core source files based on template and mode
105
+ let agentsSrc = join(sourceRoot, 'AGENTS.md');
106
+ let memorySrc = join(sourceRoot, 'MEMORY.md');
107
+ let tasksSrc = join(sourceRoot, 'TASKS.md');
108
+ let runbookSrc = join(sourceRoot, 'RUNBOOK.md');
109
+ let configSrc = join(sourceRoot, '.ai', 'config.yaml');
110
+
111
+ // Load custom template directories if selected
112
+ if (options.template !== 'general-app') {
113
+ const templateDir = join(sourceRoot, 'examples', options.template);
114
+ if (existsSync(templateDir)) {
115
+ agentsSrc = join(templateDir, 'AGENTS.md');
116
+ memorySrc = join(templateDir, 'MEMORY.md');
117
+ configSrc = join(templateDir, '.ai', 'config.yaml');
118
+ }
119
+ }
120
+
121
+ // Handle Caveman Mode overrides
122
+ if (options.caveman) {
123
+ agentsSrc = join(sourceRoot, '.ai', 'templates', 'AGENTS.caveman.md');
124
+ memorySrc = join(sourceRoot, '.ai', 'templates', 'MEMORY.caveman.md');
125
+ tasksSrc = join(sourceRoot, '.ai', 'templates', 'TASKS.caveman.md');
126
+ runbookSrc = join(sourceRoot, '.ai', 'templates', 'RUNBOOK.caveman.md');
127
+ }
128
+
129
+ // 1. Core Root Files
130
+ operations.push({ dest: 'AGENTS.md', src: agentsSrc });
131
+ operations.push({ dest: 'MEMORY.md', src: memorySrc });
132
+ operations.push({ dest: 'TASKS.md', src: tasksSrc });
133
+ operations.push({ dest: 'RUNBOOK.md', src: runbookSrc });
134
+ operations.push({ dest: '.ai/config.yaml', src: configSrc });
135
+
136
+ // 2. .ai/ Subdirectories & Core Specification Files
137
+ const aiSubdirs = ['context', 'agents', 'skills', 'prompts', 'checks', 'templates', 'session-logs'];
138
+ aiSubdirs.forEach(sub => {
139
+ const srcDir = join(sourceRoot, '.ai', sub);
140
+ if (existsSync(srcDir)) {
141
+ readdirSync(srcDir).forEach(file => {
142
+ operations.push({
143
+ dest: join('.ai', sub, file),
144
+ src: join(srcDir, file)
145
+ });
146
+ });
147
+ }
148
+ });
149
+
150
+ // 3. Selected Adapters
151
+ options.adapters.forEach(adapter => {
152
+ const adapterDir = join(sourceRoot, 'adapters', adapter);
153
+ if (existsSync(adapterDir)) {
154
+ // Helper function to read recursive files in adapter
155
+ const copyRecursive = (currSrc, currRel) => {
156
+ if (statSync(currSrc).isDirectory()) {
157
+ readdirSync(currSrc).forEach(file => {
158
+ copyRecursive(join(currSrc, file), join(currRel, file));
159
+ });
160
+ } else {
161
+ operations.push({
162
+ dest: join('adapters', adapter, currRel),
163
+ src: currSrc
164
+ });
165
+ }
166
+ };
167
+ readdirSync(adapterDir).forEach(file => {
168
+ copyRecursive(join(adapterDir, file), file);
169
+ });
170
+ } else {
171
+ console.warn(`\x1b[33mWarning: Adapter '${adapter}' not found. Skipping.\x1b[0m`);
172
+ }
173
+ });
174
+
175
+ // Check for conflicts
176
+ operations.forEach(op => {
177
+ const targetFile = join(options.target, op.dest);
178
+ if (existsSync(targetFile)) {
179
+ if (!options.force) {
180
+ conflicts.push(op.dest);
181
+ }
182
+ }
183
+ });
184
+
185
+ if (conflicts.length > 0) {
186
+ console.error('\n\x1b[31m[ABORT] Overwrite Conflict Detected!\x1b[0m');
187
+ console.error('The following files already exist in the target directory:');
188
+ conflicts.forEach(c => console.error(` - ${c}`));
189
+ console.error('\nRun command with \x1b[33m--force\x1b[0m to overwrite these files.');
190
+ process.exit(1);
191
+ }
192
+
193
+ // Execute operations
194
+ operations.forEach(op => {
195
+ const targetFile = join(options.target, op.dest);
196
+ const targetDir = dirname(targetFile);
197
+
198
+ if (options.dryRun) {
199
+ console.log(` \x1b[36m[DRY-RUN] WOULD CREATE:\x1b[0m ${op.dest}`);
200
+ } else {
201
+ if (!existsSync(targetDir)) {
202
+ mkdirSync(targetDir, { recursive: true });
203
+ }
204
+ const data = readFileSync(op.src);
205
+ writeFileSync(targetFile, data);
206
+ console.log(` \x1b[32mCREATE:\x1b[0m ${op.dest}`);
207
+ }
208
+ });
209
+
210
+ console.log(`\n\x1b[32m✔ Project initialized successfully! [Total Operations: ${operations.length}]\x1b[0m\n`);
211
+ }
212
+
213
+ function handleVerify(options) {
214
+ console.log(`\n\x1b[34mRunning strict verification in: ${options.target}\x1b[0m\n`);
215
+
216
+ let passed = 0;
217
+ let failed = 0;
218
+
219
+ const assertFile = (relPath) => {
220
+ const fullPath = join(options.target, relPath);
221
+ if (existsSync(fullPath) && statSync(fullPath).isFile()) {
222
+ console.log(` \x1b[32m✓\x1b[0m ${relPath}`);
223
+ passed++;
224
+ } else {
225
+ console.error(` \x1b[31m✗ ${relPath} (missing)\x1b[0m`);
226
+ failed++;
227
+ }
228
+ };
229
+
230
+ // 1. Core Files
231
+ const rootFiles = ['AGENTS.md', 'MEMORY.md', 'TASKS.md', 'RUNBOOK.md', '.ai/config.yaml'];
232
+ rootFiles.forEach(assertFile);
233
+
234
+ // 2. .ai/context
235
+ const contextFiles = [
236
+ '.ai/context/project-brief.md',
237
+ '.ai/context/architecture.md',
238
+ '.ai/context/business-rules.md',
239
+ '.ai/context/seo-rules.md',
240
+ '.ai/context/deployment-rules.md',
241
+ '.ai/context/model-map.md',
242
+ '.ai/context/context-budget.md'
243
+ ];
244
+ contextFiles.forEach(assertFile);
245
+
246
+ // 3. .ai/agents
247
+ const agentFiles = [
248
+ '.ai/agents/multimodel-orchestrator.md',
249
+ '.ai/agents/planner.md',
250
+ '.ai/agents/coder.md',
251
+ '.ai/agents/reviewer.md',
252
+ '.ai/agents/qa-tester.md',
253
+ '.ai/agents/security-auditor.md',
254
+ '.ai/agents/seo-auditor.md',
255
+ '.ai/agents/devops.md'
256
+ ];
257
+ agentFiles.forEach(assertFile);
258
+
259
+ console.log('\n=====================================');
260
+ if (failed > 0) {
261
+ console.error(` \x1b[31mVerification FAILED. [Passed: ${passed}, Failed: ${failed}]\x1b[0m\n`);
262
+ process.exit(1);
263
+ } else {
264
+ console.log(` \x1b[32mVerification PASSED. [All ${passed} files present]\x1b[0m\n`);
265
+ process.exit(0);
266
+ }
267
+ }
@@ -0,0 +1,79 @@
1
+ # Adapter Guide
2
+
3
+ > How to create, maintain, and contribute adapters for AI coding tools.
4
+
5
+ ## What is an Adapter?
6
+
7
+ An adapter translates the root `AGENTS.md` source of truth into a tool's native configuration format. It does **not** contain original instructions — it references the root files.
8
+
9
+ ## Adapter Structure
10
+
11
+ ```
12
+ adapters/{tool-name}/
13
+ ├── {tool-native-file} # e.g., CLAUDE.md, .cursorrules
14
+ ├── setup.md # Human-readable setup guide
15
+ └── {config-files} # Optional tool-native config
16
+ ```
17
+
18
+ ## Creating a New Adapter
19
+
20
+ ### Step 1: Research the Tool
21
+
22
+ - What file(s) does the tool auto-detect? (e.g., `CLAUDE.md`, `.cursorrules`)
23
+ - Where does it expect config files? (e.g., `.vscode/`, `.gemini/`)
24
+ - What format does it use? (markdown, JSON, YAML, plain text)
25
+
26
+ ### Step 2: Create the Adapter Directory
27
+
28
+ ```bash
29
+ mkdir -p adapters/your-tool/
30
+ ```
31
+
32
+ ### Step 3: Create the Native File
33
+
34
+ Start with this template:
35
+
36
+ ```markdown
37
+ <!-- AUTO-GENERATED REFERENCE — Source of truth: /AGENTS.md -->
38
+ <!-- Do not edit this file directly. Edit /AGENTS.md and re-sync. -->
39
+
40
+ # {Tool Name} Agent Instructions
41
+
42
+ This project uses multimodel-dev-os.
43
+ Full instructions: /AGENTS.md
44
+
45
+ ## Tool-Specific Notes
46
+ {What's unique about this tool's behavior}
47
+
48
+ ## References
49
+ - /AGENTS.md
50
+ - /MEMORY.md
51
+ ```
52
+
53
+ ### Step 4: Create `setup.md`
54
+
55
+ Include:
56
+ - Overview (1 paragraph)
57
+ - Setup steps (numbered list)
58
+ - How it works (brief explanation)
59
+ - Tips (3-5 bullets)
60
+ - Troubleshooting table
61
+
62
+ ### Step 5: Submit a PR
63
+
64
+ See [CONTRIBUTING.md](../CONTRIBUTING.md).
65
+
66
+ ## Maintaining Adapters
67
+
68
+ - When a tool changes its config format, update the adapter
69
+ - Test adapter files with the actual tool before submitting
70
+ - Keep adapter files under 50 lines — they're references, not full configs
71
+ - Version adapter changes in `CHANGELOG.md`
72
+
73
+ ## Adapter Best Practices
74
+
75
+ 1. **Never duplicate** instructions from `AGENTS.md`
76
+ 2. **Always reference** root files with absolute paths (`/AGENTS.md`)
77
+ 3. **Include only** tool-specific overrides or behavior notes
78
+ 4. **Test with the actual tool** — don't guess at file detection behavior
79
+ 5. **Document quirks** — if a tool has unusual behavior, note it in `setup.md`
@@ -0,0 +1,64 @@
1
+ # Architecture
2
+
3
+ ## Design Principles
4
+
5
+ 1. **Markdown-first** — all configuration is human-readable markdown or YAML
6
+ 2. **Vendor-neutral** — no tool is the source of truth; the root files are
7
+ 3. **Zero dependencies** — no runtime, no package manager, no build step
8
+ 4. **Non-destructive** — installers never overwrite, adapters never conflict
9
+ 5. **Progressive complexity** — start with `AGENTS.md`, add orchestrator later
10
+
11
+ ## Layer Architecture
12
+
13
+ ```
14
+ ┌──────────────────────────────────────┐
15
+ │ Human Layer │
16
+ │ README.md CONTRIBUTING.md docs/ │
17
+ ├──────────────────────────────────────┤
18
+ │ Source of Truth Layer │
19
+ │ AGENTS.md MEMORY.md TASKS.md │
20
+ │ RUNBOOK.md │
21
+ ├──────────────────────────────────────┤
22
+ │ AI Operating Layer │
23
+ │ .ai/config.yaml │
24
+ │ .ai/agents/multimodel-orchestrator.md│
25
+ │ .ai/context/ .ai/prompts/ │
26
+ │ .ai/skills/ .ai/checks/ │
27
+ │ .ai/session-logs/ .ai/templates/ │
28
+ ├──────────────────────────────────────┤
29
+ │ Adapter Layer │
30
+ │ adapters/codex/ │
31
+ │ adapters/antigravity/ │
32
+ │ adapters/cursor/ │
33
+ │ adapters/claude/ │
34
+ │ adapters/gemini/ │
35
+ │ adapters/vscode/ │
36
+ └──────────────────────────────────────┘
37
+ ```
38
+
39
+ ## Data Flow
40
+
41
+ 1. **User edits** root markdown files (`AGENTS.md`, etc.)
42
+ 2. **Adapters read** from root files and translate to tool-native format
43
+ 3. **AI agents** read their adapter file + root files
44
+ 4. **Agents write** results back to `TASKS.md`, `MEMORY.md`, and session logs
45
+ 5. **Orchestrator** coordinates multi-agent workflows via session logs
46
+
47
+ ## File Ownership
48
+
49
+ | File | Owner | Who Reads | Who Writes |
50
+ |------|-------|-----------|------------|
51
+ | `AGENTS.md` | Human | All agents | Human |
52
+ | `MEMORY.md` | Shared | All agents | Human + agents |
53
+ | `TASKS.md` | Shared | All agents | Human + agents |
54
+ | `RUNBOOK.md` | Human | All agents | Human |
55
+ | `.ai/config.yaml` | Human | System | Human |
56
+ | `.ai/session-logs/*.md` | Agents | Next agent | Current agent |
57
+ | `adapters/*/` | Community | Specific tool | Maintainers |
58
+
59
+ ## Security Considerations
60
+
61
+ - Never store secrets in any multimodel-dev-os file
62
+ - Handoff logs may contain sensitive context — gitignored by default
63
+ - Adapter config files should not contain API keys or tokens
64
+ - Use `.env` files (gitignored) for secrets, referenced in `RUNBOOK.md`
@@ -0,0 +1,74 @@
1
+ # Caveman Mode
2
+
3
+ > Cut ~79% of tokens from your AI context without losing functionality.
4
+
5
+ ## Why Caveman Mode?
6
+
7
+ AI agents consume tokens for every file they read. In large projects, context windows fill up fast. Caveman Mode provides stripped-down templates that preserve structure but eliminate:
8
+
9
+ - Comments and explanations
10
+ - Examples and sample data
11
+ - Verbose headers
12
+ - Decorative whitespace
13
+
14
+ ## Token Budget
15
+
16
+ | File | Standard | Caveman | Savings |
17
+ |------|----------|---------|---------|
18
+ | `AGENTS.md` | ~500 tokens | ~120 tokens | 76% |
19
+ | `MEMORY.md` | ~400 tokens | ~80 tokens | 80% |
20
+ | `TASKS.md` | ~300 tokens | ~60 tokens | 80% |
21
+ | `RUNBOOK.md` | ~400 tokens | ~80 tokens | 80% |
22
+ | **Total** | **~1,600** | **~340** | **~79%** |
23
+
24
+ ## How to Use
25
+
26
+ ### Fresh Install
27
+
28
+ ```bash
29
+ curl -fsSL .../install.sh | bash -s -- --caveman
30
+ ```
31
+
32
+ ### Convert Existing Project
33
+
34
+ Replace root files with caveman variants:
35
+ ```bash
36
+ cp .ai/templates/AGENTS.caveman.md AGENTS.md
37
+ cp .ai/templates/MEMORY.caveman.md MEMORY.md
38
+ cp .ai/templates/TASKS.caveman.md TASKS.md
39
+ cp .ai/templates/RUNBOOK.caveman.md RUNBOOK.md
40
+ ```
41
+
42
+ Update config:
43
+ ```yaml
44
+ # .ai/config.yaml
45
+ mode: "caveman"
46
+ ```
47
+
48
+ ### Switch Back to Standard
49
+
50
+ ```bash
51
+ # Re-download standard templates
52
+ curl -fsSL .../AGENTS.md -o AGENTS.md
53
+ # Or restore from git
54
+ git checkout -- AGENTS.md MEMORY.md TASKS.md RUNBOOK.md
55
+ ```
56
+
57
+ ## Caveman Writing Rules
58
+
59
+ If you're writing your own caveman-style files:
60
+
61
+ 1. No comments — every token must be actionable
62
+ 2. No examples — agents know common patterns
63
+ 3. No headers longer than 3 words
64
+ 4. No blank lines between sections
65
+ 5. Use abbreviations: `dev`, `deps`, `cfg`, `env`
66
+ 6. Use `null` for missing values
67
+ 7. Tables over prose — always
68
+
69
+ ## When NOT to Use Caveman Mode
70
+
71
+ - New projects where you need detailed templates as guides
72
+ - Teams where multiple humans need to read the files
73
+ - When you have plenty of context window budget
74
+ - When onboarding new team members who need explanations
@@ -0,0 +1,44 @@
1
+ # CLI Roadmap
2
+
3
+ > The local `node bin/multimodel-dev-os.js` CLI tool is fully implemented in v0.2.0!
4
+
5
+ ## Current CLI Usage
6
+
7
+ ```bash
8
+ # Initialize project with configurations
9
+ node bin/multimodel-dev-os.js init
10
+
11
+ # Initialize with specific template and adapters
12
+ node bin/multimodel-dev-os.js init --template nextjs-saas --adapter cursor --adapter claude
13
+
14
+ # Run dry-run preview
15
+ node bin/multimodel-dev-os.js init --dry-run
16
+
17
+ # Force overwrite existing files
18
+ node bin/multimodel-dev-os.js init --force
19
+
20
+ # Check structural health of target directory
21
+ node bin/multimodel-dev-os.js verify
22
+ ```
23
+
24
+ ## CLI Roadmap & Commands Status
25
+
26
+ | Command | Purpose | Target Version | Status |
27
+ |---------|---------|----------------|--------|
28
+ | `init` | Scaffold multimodel-dev-os into a project | v0.2.0 | ✅ Completed |
29
+ | `verify` | Check that all required files exist and are valid | v0.2.0 | ✅ Completed |
30
+ | `sync` | Regenerate adapter files from root AGENTS.md | v0.3.0 | 📋 Planned |
31
+ | `add-adapter` | Add a new adapter to the project | v0.3.0 | 📋 Planned |
32
+
33
+ ## Requirements Completed in v0.2.0
34
+
35
+ - [x] `package.json` with `bin` entry
36
+ - [x] CLI argument parser (implemented purely with Node.js built-ins)
37
+ - [x] Template profile injection (Next.js SaaS, WordPress, etc.)
38
+ - [x] Conflict protection and `--force` overrides
39
+ - [x] Dry-run preview mode
40
+ - [x] Tested on Node 18+ and Windows/macOS/Linux
41
+
42
+ ## Future Releases (v0.3.0+)
43
+ - Publish package to npm as `multimodel-dev-os` to support `npx` execution.
44
+ - Implement the `sync` subcommand to parse custom override markers inside adapters and align them with changes in root instructions.
package/docs/faq.md ADDED
@@ -0,0 +1,66 @@
1
+ # FAQ
2
+
3
+ ## General
4
+
5
+ **What is multimodel-dev-os?**
6
+ A set of markdown files and conventions that let multiple AI coding tools
7
+ (Codex, Cursor, Claude, Gemini, Antigravity, VS Code) share the same
8
+ project context. Not a runtime. Not an AI agent. Think `.editorconfig`
9
+ but for AI tools.
10
+
11
+ **Is this an operating system?**
12
+ No. "Dev OS" is a metaphor for the shared operating layer between tools.
13
+ It's just markdown files in your repo.
14
+
15
+ **What does "multimodel" mean?**
16
+ Multiple AI models/tools working on the same project.
17
+ Not "multimodal" (multiple input types like text + image).
18
+
19
+ ## Setup
20
+
21
+ **Do I need Node.js?**
22
+ No. The installer scripts use bash or PowerShell only.
23
+ `package.json` is included for metadata and future CLI support.
24
+
25
+ **Can I use just one AI tool?**
26
+ Yes. Use a single adapter. The multi-agent features are optional.
27
+
28
+ **Which files are required?**
29
+ At minimum: `AGENTS.md`. Everything else is optional.
30
+ The installer creates the full structure, but you can delete what you
31
+ don't need.
32
+
33
+ ## Adapters
34
+
35
+ **Do I copy adapter files to my project root?**
36
+ Yes, for tools that auto-detect specific files:
37
+ - Cursor → copy `.cursorrules` to root
38
+ - Claude → copy `CLAUDE.md` to root
39
+ - VS Code → copy `.vscode/` to root
40
+
41
+ **My tool isn't listed. Can I add one?**
42
+ Yes. See [docs/adapters.md](adapters.md) for the guide. PRs welcome.
43
+
44
+ **Will adapters break if a tool changes its config format?**
45
+ Possibly. Adapters are community-maintained. File an issue if you
46
+ notice an adapter is outdated.
47
+
48
+ ## Caveman Mode
49
+
50
+ **When should I use Caveman Mode?**
51
+ When your context window is tight, your model is small, or you're
52
+ optimizing for API cost. It cuts ~79% of tokens.
53
+
54
+ **Can I mix standard and caveman files?**
55
+ Yes. Each file is independent. You could have a standard `AGENTS.md`
56
+ and a caveman `TASKS.md`.
57
+
58
+ ## Orchestrator
59
+
60
+ **Does the orchestrator run agents automatically?**
61
+ No, not in v0.1. It's a protocol spec — conventions for how agents
62
+ should coordinate. Runtime orchestration is planned for v0.2+.
63
+
64
+ **Do I need the orchestrator for single-agent workflows?**
65
+ No. The orchestrator is only relevant when multiple agents work
66
+ on the same codebase.
@@ -0,0 +1,58 @@
1
+ # Installers
2
+
3
+ ## Overview
4
+
5
+ Cross-platform scripts that scaffold multimodel-dev-os into any project. Located in `scripts/`.
6
+
7
+ ## Usage
8
+
9
+ ### macOS / Linux / WSL (`install.sh`)
10
+
11
+ ```bash
12
+ # Standard install (interactive adapter selection)
13
+ curl -fsSL https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.sh | bash
14
+
15
+ # Caveman Mode (minimal tokens)
16
+ curl -fsSL https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.sh | bash -s -- --caveman
17
+
18
+ # All adapters, no prompts
19
+ curl -fsSL https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.sh | bash -s -- --all
20
+
21
+ # Dry run (preview only)
22
+ curl -fsSL https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.sh | bash -s -- --dry-run
23
+ ```
24
+
25
+ ### Windows (`install.ps1`)
26
+
27
+ ```powershell
28
+ # Standard install
29
+ irm https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.ps1 | iex
30
+
31
+ # With flags (download first, then run)
32
+ Invoke-WebRequest -Uri "https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main/scripts/install.ps1" -OutFile install.ps1
33
+ .\install.ps1 -Caveman -All
34
+ ```
35
+
36
+ ## Flags
37
+
38
+ | Flag | Bash | PowerShell | Effect |
39
+ |------|------|------------|--------|
40
+ | Caveman Mode | `--caveman` | `-Caveman` | Install minimal-token templates |
41
+ | All adapters | `--all` | `-All` | Skip adapter selection prompt |
42
+ | Dry run | `--dry-run` | `-DryRun` | Preview without creating files |
43
+ | Help | `--help` | `-Help` | Show usage information |
44
+
45
+ ## Behavior
46
+
47
+ - **Non-destructive** — never overwrites existing files by default.
48
+ - **CLI-integrated** — bundles our zero-dependency CLI `bin/multimodel-dev-os.js` script so you can perform advanced target-directory routing and local schema verifications after installation.
49
+ - **Selective** — choose which adapters to install.
50
+ - **Offline-safe** — fails gracefully if downloads fail.
51
+
52
+ ## What Gets Created
53
+
54
+ The installer creates:
55
+ 1. Root files: `AGENTS.md`, `MEMORY.md`, `TASKS.md`, `RUNBOOK.md`
56
+ 2. Core configuration utilities: `.gitattributes` (enforces LF line endings) and `bin/multimodel-dev-os.js` CLI
57
+ 3. `.ai/` directory with config, skills, checks, templates
58
+ 4. Selected adapter directories under `adapters/`