@traqr/cli 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,77 +1,45 @@
1
1
  # @traqr/cli
2
2
 
3
- CLI entry point for the Traqr platform. Interactive setup wizard, template rendering, and server management.
3
+ CLI for the TraqrOS developer platform. Project initialization, template rendering, and service health checks.
4
4
 
5
- ## Quick Start
5
+ Most users don't need to run CLI commands directly — Claude reads the [@traqr/core](https://www.npmjs.com/package/@traqr/core) README and sets up your project automatically. The CLI is a manual fallback for users without AI assistants.
6
6
 
7
- ```bash
8
- # Initialize a new project
9
- npx traqr init
7
+ ## Commands
10
8
 
11
- # Re-render templates after config changes
12
- npx traqr render
9
+ ### `traqr render` (AI-First Path)
13
10
 
14
- # Check config and service health
15
- npx traqr status
11
+ Non-interactive template generation from `.traqr/config.json`. This is what Claude runs after writing your config.
12
+
13
+ ```bash
14
+ npx traqr render # Generate all files (skip existing)
15
+ npx traqr render --dry-run # Preview without writing
16
+ npx traqr render --force # Overwrite existing files
16
17
  ```
17
18
 
18
- ## Commands
19
+ ### `traqr init` (Interactive Fallback)
19
20
 
20
- ### `traqr init`
21
+ Interactive project setup wizard for manual configuration:
21
22
 
22
- Interactive project setup wizard:
23
23
  1. Detects git remote, package manager, framework
24
- 2. Prompts for project name, description, GitHub org/repo
24
+ 2. Prompts for project name, description, org/repo
25
25
  3. Choose a starter pack (solo/smart/production/full)
26
26
  4. Renders all templates and writes to disk
27
27
  5. Creates `.traqr/config.json`
28
28
 
29
- ### `traqr render`
30
-
31
- Non-interactive template render from `.traqr/config.json`.
32
-
33
- ```bash
34
- traqr render # Write files (skip existing)
35
- traqr render --dry-run # Print to stdout
36
- traqr render --force # Overwrite existing files
37
- ```
38
-
39
- ### `traqr daemon`
40
-
41
- Start the daemon orchestrator server.
42
-
43
29
  ```bash
44
- traqr daemon # Default port 4200
45
- traqr daemon --port 4201 # Custom port
46
- ```
47
-
48
- ### `traqr memory`
49
-
50
- Start the memory vector DB server.
51
-
52
- ```bash
53
- traqr memory # Default port 4100
54
- traqr memory --port 4101 # Custom port
30
+ npx traqr init
55
31
  ```
56
32
 
57
- Requires: `SUPABASE_URL`, `SUPABASE_SERVICE_ROLE_KEY`, `OPENAI_API_KEY`
58
-
59
- ### `traqr guardian`
60
-
61
- Stub — Guardian requires dependency injection. Use `GuardianPlugin` as a library via `@traqr/daemon`.
62
-
63
33
  ### `traqr status`
64
34
 
65
- Show project config summary and ping running services.
35
+ Show project config summary and check running services.
66
36
 
67
37
  ```bash
68
- traqr status
69
- # Project: NookTraqr
38
+ npx traqr status
39
+ # Project: My Project
70
40
  # Config: /path/to/.traqr/config.json
71
- # Tier: 4 (full)
72
- # Score: 87/100
73
- # Daemon: UP
74
- # Memory: UP
41
+ # Tier: 2 (smart)
42
+ # Score: 65/100
75
43
  ```
76
44
 
77
45
  ## Programmatic API
@@ -82,3 +50,7 @@ import { writeFiles } from '@traqr/cli'
82
50
  const result = await writeFiles(files, baseDir, { dryRun: false, force: true })
83
51
  console.log(`Written: ${result.written.length}, Skipped: ${result.skipped.length}`)
84
52
  ```
53
+
54
+ ## License
55
+
56
+ [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0)
package/dist/bin/traqr.js CHANGED
@@ -32,6 +32,12 @@ async function main() {
32
32
  case 'render':
33
33
  await import('../commands/render.js');
34
34
  break;
35
+ case 'link':
36
+ await import('../commands/link.js');
37
+ break;
38
+ case 'scaffold':
39
+ await import('../commands/scaffold.js');
40
+ break;
35
41
  case 'status':
36
42
  await import('../commands/status.js');
37
43
  break;
@@ -79,6 +85,8 @@ function printUsage() {
79
85
  Commands:
80
86
  init Interactive project setup wizard
81
87
  new Alias for init (scaffold a new project)
88
+ scaffold Create a new DevOS monorepo from scratch
89
+ link Connect cloud services (VCS, memory, Slack, etc.)
82
90
  setup Create or update global profile (~/.traqr/config.json)
83
91
  projects List and manage registered projects
84
92
  render Render templates from .traqr/config.json
@@ -1 +1 @@
1
- {"version":3,"file":"traqr.js","sourceRoot":"","sources":["../../src/bin/traqr.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE/B,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;YACnC,MAAK;QACP,KAAK,UAAU;YACb,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;YACvC,MAAK;QACP,KAAK,OAAO;YACV,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YACpC,MAAK;QACP,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;YACrC,MAAK;QACP,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;YACrC,MAAK;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,UAAU,EAAE,CAAA;YACZ,MAAK;QACP,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;gBACrD,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;gBAClC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC;;;;;;;CAOrB,CAAC,CAAA;oBACQ,MAAK;gBACP,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;YAClD,UAAU,EAAE,CAAA;YACZ,MAAK;QACP,CAAC;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpB,MAAK;QACP;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjB,UAAU,EAAE,CAAA;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBb,CAAC,CAAA;AACF,CAAC;AAED,qCAAqC;AACrC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;IACvC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,KAAK,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"traqr.js","sourceRoot":"","sources":["../../src/bin/traqr.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAE/B,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK;YACR,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;YACnC,MAAK;QACP,KAAK,UAAU;YACb,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;YACvC,MAAK;QACP,KAAK,OAAO;YACV,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YACpC,MAAK;QACP,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;YACrC,MAAK;QACP,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;YACnC,MAAK;QACP,KAAK,UAAU;YACb,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;YACvC,MAAK;QACP,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAA;YACrC,MAAK;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,UAAU,EAAE,CAAA;YACZ,MAAK;QACP,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;gBACrD,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;gBAClC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC;;;;;;;CAOrB,CAAC,CAAA;oBACQ,MAAK;gBACP,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;YAClD,UAAU,EAAE,CAAA;YACZ,MAAK;QACP,CAAC;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpB,MAAK;QACP;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjB,UAAU,EAAE,CAAA;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBb,CAAC,CAAA;AACF,CAAC;AAED,qCAAqC;AACrC,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;IACvC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,KAAK,IAAI,EAAE,CAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * traqr link — Connect cloud services to a Traqr project
3
+ *
4
+ * Non-interactive-first design: every service accepts CLI flags
5
+ * so Claude can call it programmatically. Interactive prompts
6
+ * are the human fallback, not the primary path.
7
+ *
8
+ * Usage:
9
+ * traqr link vcs --provider=gitlab --token=glpat-xxx --url=https://gitlab.example.com --project-id=123
10
+ * traqr link memory --provider=supabase --url=https://xxx.supabase.co --key=xxx
11
+ * traqr link obsidian --path=/Users/me/Documents/Obsidian\ Vault
12
+ * traqr link slack --webhook=https://hooks.slack.com/xxx
13
+ * traqr link issues --provider=linear --key=lin_api_xxx
14
+ * traqr link --test # test all configured services
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * traqr link — Connect cloud services to a Traqr project
3
+ *
4
+ * Non-interactive-first design: every service accepts CLI flags
5
+ * so Claude can call it programmatically. Interactive prompts
6
+ * are the human fallback, not the primary path.
7
+ *
8
+ * Usage:
9
+ * traqr link vcs --provider=gitlab --token=glpat-xxx --url=https://gitlab.example.com --project-id=123
10
+ * traqr link memory --provider=supabase --url=https://xxx.supabase.co --key=xxx
11
+ * traqr link obsidian --path=/Users/me/Documents/Obsidian\ Vault
12
+ * traqr link slack --webhook=https://hooks.slack.com/xxx
13
+ * traqr link issues --provider=linear --key=lin_api_xxx
14
+ * traqr link --test # test all configured services
15
+ */
16
+ import fs from 'fs/promises';
17
+ import path from 'path';
18
+ import { existsSync } from 'fs';
19
+ import { loadProjectConfig, deepMerge } from '@traqr/core';
20
+ import { ask, closePrompts } from '../lib/prompts.js';
21
+ const args = process.argv.slice(3);
22
+ const service = args[0];
23
+ const flags = parseFlags(args.slice(1));
24
+ function parseFlags(raw) {
25
+ const result = {};
26
+ for (const arg of raw) {
27
+ const match = arg.match(/^--(\w[\w-]*)=(.+)$/);
28
+ if (match)
29
+ result[match[1]] = match[2];
30
+ else if (arg.startsWith('--'))
31
+ result[arg.slice(2)] = 'true';
32
+ }
33
+ return result;
34
+ }
35
+ async function run() {
36
+ const { config, path: configPath } = loadProjectConfig();
37
+ if (!config) {
38
+ console.error('No .traqr/config.json found. Run "traqr init" first.');
39
+ process.exit(1);
40
+ }
41
+ const configDir = path.dirname(configPath);
42
+ switch (service) {
43
+ case 'vcs':
44
+ await linkVcs(config, configDir);
45
+ break;
46
+ case 'memory':
47
+ await linkMemory(config, configDir);
48
+ break;
49
+ case 'obsidian':
50
+ await linkObsidian(config, configDir);
51
+ break;
52
+ case 'slack':
53
+ await linkSlack(config, configDir);
54
+ break;
55
+ case 'issues':
56
+ await linkIssues(config, configDir);
57
+ break;
58
+ case '--test':
59
+ await testAll(config);
60
+ break;
61
+ default:
62
+ console.log(`
63
+ traqr link — Connect cloud services
64
+
65
+ Usage: traqr link <service> [options]
66
+
67
+ Services:
68
+ vcs Git hosting (GitHub, GitLab)
69
+ memory Memory database (Supabase)
70
+ obsidian Obsidian vault path
71
+ slack Slack notifications
72
+ issues Issue tracker (Linear, GitLab)
73
+
74
+ Options:
75
+ --test Test connectivity for all configured services
76
+
77
+ Examples:
78
+ traqr link vcs --provider=gitlab --url=https://gitlab.example.com
79
+ traqr link obsidian --path="~/Documents/Obsidian Vault"
80
+ traqr link --test
81
+ `);
82
+ break;
83
+ }
84
+ closePrompts();
85
+ }
86
+ // ============================================================
87
+ // Service Linkers
88
+ // ============================================================
89
+ async function linkVcs(config, configDir) {
90
+ const provider = flags.provider || await ask('VCS provider (github/gitlab)');
91
+ const delta = {
92
+ vcs: {
93
+ provider: provider,
94
+ ...(flags.url && { baseUrl: flags.url }),
95
+ ...(flags['project-id'] && { projectId: flags['project-id'] }),
96
+ ...(provider === 'gitlab' && { autoMerge: true, primedSession: true, removeSourceBranch: true }),
97
+ },
98
+ };
99
+ await writeConfigDelta(config, delta, configDir);
100
+ console.log(` VCS linked: ${provider}${flags.url ? ` at ${flags.url}` : ''}`);
101
+ if (provider === 'gitlab') {
102
+ console.log(' Tip: export GITLAB_TOKEN=glpat-xxx in your shell profile');
103
+ }
104
+ suggestRender();
105
+ }
106
+ async function linkMemory(config, configDir) {
107
+ const provider = flags.provider || await ask('Memory provider (supabase/local/none)');
108
+ const delta = {
109
+ memory: {
110
+ provider: provider,
111
+ ...(flags.url && { apiBase: flags.url }),
112
+ },
113
+ };
114
+ await writeConfigDelta(config, delta, configDir);
115
+ console.log(` Memory linked: ${provider}`);
116
+ suggestRender();
117
+ }
118
+ async function linkObsidian(config, configDir) {
119
+ const vaultPath = flags.path || await ask('Obsidian vault path');
120
+ const resolved = path.resolve(vaultPath.replace(/^~/, process.env.HOME || ''));
121
+ const delta = {
122
+ vault: { path: resolved },
123
+ };
124
+ await writeConfigDelta(config, delta, configDir);
125
+ console.log(` Obsidian linked: ${resolved}`);
126
+ console.log(' Run "traqr vault init" to create the research folder structure.');
127
+ suggestRender();
128
+ }
129
+ async function linkSlack(config, configDir) {
130
+ const level = (flags.level || 'standard');
131
+ const delta = {
132
+ notifications: {
133
+ slackLevel: level,
134
+ ...(flags.webhook && { slackWebhook: flags.webhook }),
135
+ },
136
+ };
137
+ await writeConfigDelta(config, delta, configDir);
138
+ console.log(` Slack linked: level=${level}`);
139
+ suggestRender();
140
+ }
141
+ async function linkIssues(config, configDir) {
142
+ const provider = flags.provider || await ask('Issue tracker (linear/gitlab/github/none)');
143
+ const delta = {
144
+ issues: {
145
+ provider: provider,
146
+ ...(provider === 'linear' && flags['team-id'] && { linearTeamId: flags['team-id'] }),
147
+ },
148
+ };
149
+ await writeConfigDelta(config, delta, configDir);
150
+ console.log(` Issues linked: ${provider}`);
151
+ suggestRender();
152
+ }
153
+ // ============================================================
154
+ // Utilities
155
+ // ============================================================
156
+ async function writeConfigDelta(config, delta, configDir) {
157
+ const merged = deepMerge(config, delta);
158
+ const configPath = path.join(configDir, 'config.json');
159
+ await fs.writeFile(configPath, JSON.stringify(merged, null, 2) + '\n', 'utf-8');
160
+ }
161
+ async function testAll(config) {
162
+ console.log(' Testing configured services...\n');
163
+ // VCS
164
+ const vcs = config.vcs?.provider || 'github';
165
+ console.log(` VCS (${vcs}): ${config.vcs?.baseUrl || 'default'}`);
166
+ console.log(` ${config.vcs?.projectId ? 'project-id: ' + config.vcs.projectId : 'no project-id set'}`);
167
+ // Memory
168
+ const mem = config.memory?.provider || 'none';
169
+ console.log(` Memory (${mem}): ${config.memory?.apiBase || 'not configured'}`);
170
+ // Vault
171
+ const vault = config.vault?.path;
172
+ if (vault) {
173
+ const exists = existsSync(vault);
174
+ console.log(` Obsidian: ${vault} ${exists ? '(exists)' : '(NOT FOUND)'}`);
175
+ }
176
+ else {
177
+ console.log(' Obsidian: not configured');
178
+ }
179
+ // Issues
180
+ const issues = config.issues?.provider || 'none';
181
+ console.log(` Issues (${issues}): ${issues === 'linear' ? 'team ' + (config.issues?.linearTeamId || 'not set') : 'configured'}`);
182
+ // Slack
183
+ const slack = config.notifications?.slackLevel || 'none';
184
+ console.log(` Slack: ${slack}`);
185
+ console.log('\n For full connectivity tests, run the specific service commands with --test.');
186
+ }
187
+ function suggestRender() {
188
+ console.log('\n Run "npx traqr render" to regenerate skills with updated config.');
189
+ }
190
+ void run();
191
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * traqr scaffold — Create a new DevOS monorepo from scratch
3
+ *
4
+ * Non-interactive-first: Claude writes config.json and runs this.
5
+ * Interactive prompts are the human fallback.
6
+ *
7
+ * Usage:
8
+ * traqr scaffold --preset=gitlab-team --name=my-project
9
+ * traqr scaffold --preset=github-pro --name=my-saas --dir=~/Projects
10
+ * traqr scaffold # interactive mode
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * traqr scaffold — Create a new DevOS monorepo from scratch
3
+ *
4
+ * Non-interactive-first: Claude writes config.json and runs this.
5
+ * Interactive prompts are the human fallback.
6
+ *
7
+ * Usage:
8
+ * traqr scaffold --preset=gitlab-team --name=my-project
9
+ * traqr scaffold --preset=github-pro --name=my-saas --dir=~/Projects
10
+ * traqr scaffold # interactive mode
11
+ */
12
+ import fs from 'fs/promises';
13
+ import path from 'path';
14
+ import { execSync } from 'child_process';
15
+ import { STARTER_PACK_DEFAULTS, GOLDEN_PATH_DEFAULTS, deepMerge, renderAllTemplates, calculateAutomationScore, } from '@traqr/core';
16
+ import { writeFiles } from '../lib/writer.js';
17
+ import { ask, select, closePrompts } from '../lib/prompts.js';
18
+ const RAQR_SCAFFOLD = `
19
+ ╭─────────────────────────────────────────────────────────────╮
20
+ │ /\\___/\\ │
21
+ │ ( o o ) Let's build your DevOS. │
22
+ │ ( =^= ) This takes about 30 seconds. │
23
+ │ (______) │
24
+ ╰─────────────────────────────────────────────────────────────╯
25
+ `;
26
+ const args = process.argv.slice(3);
27
+ const flags = parseFlags(args);
28
+ function parseFlags(raw) {
29
+ const result = {};
30
+ for (const arg of raw) {
31
+ const match = arg.match(/^--(\w[\w-]*)=(.+)$/);
32
+ if (match)
33
+ result[match[1]] = match[2];
34
+ else if (arg.startsWith('--'))
35
+ result[arg.slice(2)] = 'true';
36
+ }
37
+ return result;
38
+ }
39
+ async function run() {
40
+ console.log(RAQR_SCAFFOLD);
41
+ // Resolve options from flags or interactive prompts
42
+ const preset = (flags.preset || await selectPreset());
43
+ const name = flags.name || await ask('Project name');
44
+ const parentDir = path.resolve((flags.dir || process.cwd()).replace(/^~/, process.env.HOME || ''));
45
+ const projectDir = path.join(parentDir, name);
46
+ // Guard: don't overwrite existing directory
47
+ try {
48
+ await fs.access(projectDir);
49
+ console.error(` Directory already exists: ${projectDir}`);
50
+ process.exit(1);
51
+ }
52
+ catch { /* good — doesn't exist */ }
53
+ console.log(` Project: ${name}`);
54
+ console.log(` Preset: ${preset}`);
55
+ console.log(` Path: ${projectDir}`);
56
+ console.log('');
57
+ // 1. Create directory structure
58
+ const dirs = [
59
+ 'apps',
60
+ 'packages',
61
+ '.traqr',
62
+ '.worktrees',
63
+ 'scripts',
64
+ 'docs/claude',
65
+ '.claude/commands',
66
+ ];
67
+ for (const dir of dirs) {
68
+ await fs.mkdir(path.join(projectDir, dir), { recursive: true });
69
+ }
70
+ console.log(' Created directory structure');
71
+ // 2. Build config from Golden Path + Starter Pack
72
+ const golden = GOLDEN_PATH_DEFAULTS[preset];
73
+ const starter = STARTER_PACK_DEFAULTS[golden.starterPack];
74
+ const withVcs = deepMerge(starter, golden.vcsOverrides);
75
+ const config = deepMerge(withVcs, {
76
+ project: {
77
+ name,
78
+ displayName: name.charAt(0).toUpperCase() + name.slice(1),
79
+ repoPath: projectDir,
80
+ ghOrgRepo: '',
81
+ },
82
+ prefix: name.toUpperCase().replace(/[^A-Z]/g, '').slice(0, 8) || 'TRQ',
83
+ shipEnvVar: `${name.toUpperCase().replace(/[^A-Z]/g, '')}_SHIP_AUTHORIZED`,
84
+ sessionPrefix: name.toLowerCase().replace(/[^a-z0-9]/g, ''),
85
+ coAuthor: 'Claude Opus 4.6',
86
+ ports: { main: 3000 },
87
+ monorepo: { enabled: true, apps: {} },
88
+ });
89
+ // Calculate automation score
90
+ config.automationScore = calculateAutomationScore(config);
91
+ // 3. Write .traqr/config.json
92
+ const configPath = path.join(projectDir, '.traqr', 'config.json');
93
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
94
+ console.log(' Wrote .traqr/config.json');
95
+ // 4. Render all templates
96
+ const result = await renderAllTemplates(config);
97
+ const writeResult = await writeFiles(result.files, projectDir, { force: true });
98
+ console.log(` Rendered ${writeResult.written.length} template files`);
99
+ // Write global skills too (into project .claude/commands/ for now)
100
+ const globalWriteResult = await writeFiles(Object.fromEntries(Object.entries(result.globalFiles).map(([k, v]) => [
101
+ k.replace(/^~\/.claude\/commands\//, '.claude/commands/'), v
102
+ ])), projectDir, { force: true });
103
+ console.log(` Rendered ${globalWriteResult.written.length} skill files`);
104
+ // 5. Create minimal package.json + turbo.json
105
+ const packageJson = {
106
+ name,
107
+ private: true,
108
+ workspaces: ['apps/*', 'packages/*'],
109
+ scripts: {
110
+ 'build': 'turbo build',
111
+ 'build:packages': 'turbo build --filter=./packages/*',
112
+ 'dev': 'turbo dev',
113
+ },
114
+ devDependencies: {
115
+ 'turbo': '^2',
116
+ 'typescript': '^5',
117
+ },
118
+ };
119
+ await fs.writeFile(path.join(projectDir, 'package.json'), JSON.stringify(packageJson, null, 2) + '\n', 'utf-8');
120
+ const turboJson = {
121
+ $schema: 'https://turbo.build/schema.json',
122
+ tasks: {
123
+ build: { dependsOn: ['^build'], outputs: ['dist/**'] },
124
+ dev: { cache: false, persistent: true },
125
+ },
126
+ };
127
+ await fs.writeFile(path.join(projectDir, 'turbo.json'), JSON.stringify(turboJson, null, 2) + '\n', 'utf-8');
128
+ console.log(' Wrote package.json + turbo.json');
129
+ // 6. Git init + initial commit
130
+ try {
131
+ execSync('git init', { cwd: projectDir, stdio: 'pipe' });
132
+ execSync('git add -A', { cwd: projectDir, stdio: 'pipe' });
133
+ execSync('git commit -m "chore: scaffold DevOS monorepo via traqr scaffold"', {
134
+ cwd: projectDir, stdio: 'pipe'
135
+ });
136
+ console.log(' Initialized git repository');
137
+ }
138
+ catch {
139
+ console.log(' Git init skipped (git not available or already initialized)');
140
+ }
141
+ // 7. Success output
142
+ console.log(`
143
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
144
+
145
+ Your DevOS is ready: ${projectDir}
146
+
147
+ What to do next:
148
+ cd ${projectDir}
149
+ npm install
150
+ npx traqr link vcs --provider=${config.vcs?.provider || 'github'}
151
+ npx traqr render --force # regenerate after linking
152
+
153
+ Or just tell Claude: "Set up Traqr for my project"
154
+ Claude reads the config, links services, and renders everything.
155
+
156
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
157
+ `);
158
+ closePrompts();
159
+ }
160
+ async function selectPreset() {
161
+ return await select('Which environment?', [
162
+ { label: 'GitHub Pro', value: 'github-pro', description: 'GitHub + Linear + Slack (production)' },
163
+ { label: 'GitLab Team', value: 'gitlab-team', description: 'GitLab + GitLab Issues + auto-merge (corporate)' },
164
+ { label: 'GitLab Minimal', value: 'gitlab-minimal', description: 'GitLab only, no integrations (solo)' },
165
+ ]);
166
+ }
167
+ void run();
168
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@traqr/cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "CLI for Claude Code — persistent memory, worktree slots, autonomous CI/CD, skill templates.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -50,5 +50,5 @@
50
50
  "engines": {
51
51
  "node": ">=18.0.0"
52
52
  },
53
- "license": "MIT"
53
+ "license": "Apache-2.0"
54
54
  }