@bradtaylorsf/alpha-loop 1.2.0 → 1.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 (54) hide show
  1. package/README.md +60 -19
  2. package/dist/cli.js +4 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auth.js +1 -1
  5. package/dist/commands/auth.js.map +1 -1
  6. package/dist/commands/init.d.ts +14 -0
  7. package/dist/commands/init.js +199 -30
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/resume.js +1 -0
  10. package/dist/commands/resume.js.map +1 -1
  11. package/dist/commands/run.js +31 -12
  12. package/dist/commands/run.js.map +1 -1
  13. package/dist/commands/scan.d.ts +1 -1
  14. package/dist/commands/scan.js +12 -9
  15. package/dist/commands/scan.js.map +1 -1
  16. package/dist/commands/sync.d.ts +5 -0
  17. package/dist/commands/sync.js +24 -5
  18. package/dist/commands/sync.js.map +1 -1
  19. package/dist/commands/vision.js +5 -3
  20. package/dist/commands/vision.js.map +1 -1
  21. package/dist/engine/agents.d.ts +6 -1
  22. package/dist/engine/agents.js +14 -12
  23. package/dist/engine/agents.js.map +1 -1
  24. package/dist/engine/prerequisites.d.ts +4 -7
  25. package/dist/engine/prerequisites.js +12 -36
  26. package/dist/engine/prerequisites.js.map +1 -1
  27. package/dist/lib/agent.d.ts +10 -0
  28. package/dist/lib/agent.js +184 -28
  29. package/dist/lib/agent.js.map +1 -1
  30. package/dist/lib/config.d.ts +3 -2
  31. package/dist/lib/config.js +17 -7
  32. package/dist/lib/config.js.map +1 -1
  33. package/dist/lib/learning.js +2 -2
  34. package/dist/lib/learning.js.map +1 -1
  35. package/dist/lib/pipeline.d.ts +35 -0
  36. package/dist/lib/pipeline.js +424 -131
  37. package/dist/lib/pipeline.js.map +1 -1
  38. package/dist/lib/prompts.d.ts +1 -0
  39. package/dist/lib/prompts.js +8 -5
  40. package/dist/lib/prompts.js.map +1 -1
  41. package/dist/lib/session.js +54 -19
  42. package/dist/lib/session.js.map +1 -1
  43. package/dist/lib/verify.d.ts +7 -1
  44. package/dist/lib/verify.js +109 -157
  45. package/dist/lib/verify.js.map +1 -1
  46. package/dist/lib/worktree.d.ts +1 -0
  47. package/dist/lib/worktree.js +9 -1
  48. package/dist/lib/worktree.js.map +1 -1
  49. package/package.json +1 -1
  50. package/templates/agents/implementer.md +1 -1
  51. package/templates/agents/reviewer.md +1 -1
  52. package/dist/engine/config.d.ts +0 -71
  53. package/dist/engine/config.js +0 -73
  54. package/dist/engine/config.js.map +0 -1
package/README.md CHANGED
@@ -19,9 +19,9 @@ npx @bradtaylorsf/alpha-loop
19
19
  - **Node.js 20+**
20
20
  - **git** — for worktree isolation
21
21
  - **[GitHub CLI](https://cli.github.com/)** (`gh`) — authenticated with `gh auth login`
22
- - **AI agent CLI** — currently supports:
23
- - [Claude Code](https://claude.ai/code) (`claude`)
24
- - [Codex](https://github.com/openai/codex) (`codex`)
22
+ - **AI agent CLI** — set `agent` in your config to one of:
23
+ - [Claude Code](https://claude.ai/code) (`claude`) — default
24
+ - [Codex](https://developers.openai.com/codex/cli/reference) (`codex`)
25
25
  - [OpenCode](https://github.com/sst/opencode) (`opencode`)
26
26
  - **[Playwright CLI](https://www.npmjs.com/package/@playwright/cli)** (optional) — for live verification with screenshots
27
27
 
@@ -32,7 +32,7 @@ npx @bradtaylorsf/alpha-loop
32
32
  cd your-project
33
33
  alpha-loop init
34
34
 
35
- # 2. Edit .alpha-loop.yaml if needed (repo, harnesses, model, etc.)
35
+ # 2. Edit .alpha-loop.yaml if needed (agent, model, test_command, etc.)
36
36
 
37
37
  # 3. Run the loop — you'll be prompted to pick a milestone
38
38
  alpha-loop run
@@ -92,7 +92,7 @@ These learnings are automatically fed into future implementation prompts, so the
92
92
 
93
93
  ### Self-Improvement (`alpha-loop review`)
94
94
 
95
- Run `alpha-loop review` to trigger the self-improvement loop. It reads all accumulated learnings, computes metrics (success rate, avg retries, common failures), gathers current agent/skill definitions, and asks Claude to propose targeted improvements:
95
+ Run `alpha-loop review` to trigger the self-improvement loop. It reads all accumulated learnings, computes metrics (success rate, avg retries, common failures), gathers current agent/skill definitions, and asks the configured agent to propose targeted improvements:
96
96
 
97
97
  - **Agent prompts** — bake in recurring patterns, eliminate anti-patterns
98
98
  - **Skill definitions** — add/update skills based on what consistently works or fails
@@ -142,8 +142,9 @@ During live verification, the agent takes screenshots at key states and saves th
142
142
  alpha-loop run [options]
143
143
 
144
144
  Options:
145
+ --once Process one issue and exit
145
146
  --dry-run Preview without making changes
146
- --model <model> AI model to use (e.g., opus, sonnet)
147
+ --model <model> AI model override (e.g., opus, sonnet, gpt-5.4, gpt-5.3-codex)
147
148
  --milestone <name> Only process issues in this milestone (skips interactive prompt)
148
149
  --skip-tests Skip test execution
149
150
  --skip-review Skip code review step
@@ -160,19 +161,17 @@ Running `alpha-loop init` creates a `.alpha-loop.yaml` file:
160
161
  # Alpha Loop configuration
161
162
  repo: owner/repo-name
162
163
  project: 0 # GitHub Project number (find it in your project URL)
163
- model: opus
164
- review_model: opus
164
+ agent: claude # AI agent CLI: claude, codex, opencode
165
+ # model: # omit to use agent's default (e.g., opus, gpt-5.4)
165
166
  label: ready
166
167
  base_branch: main
167
168
  test_command: pnpm test
168
169
  dev_command: pnpm dev
169
- port: 3000
170
170
  auto_merge: true
171
171
 
172
- # Coding harnesses to sync skills/agents to
172
+ # Coding harnesses to sync skills/agents to (auto-derived from agent if empty)
173
173
  harnesses:
174
- - claude-code
175
- - codex
174
+ - claude
176
175
 
177
176
  # Safety limits (0 = unlimited)
178
177
  max_issues: 20
@@ -185,13 +184,15 @@ max_session_duration: 7200 # 2 hours in seconds
185
184
  |-----|---------|-------------|
186
185
  | `repo` | (auto-detected) | GitHub repo in `owner/name` format |
187
186
  | `project` | `0` | GitHub Project number (from URL: `users/<owner>/projects/<N>`) |
188
- | `model` | `opus` | AI model for implementation and verification |
189
- | `review_model` | `opus` | AI model for code review and learning extraction |
187
+ | `agent` | `claude` | AI agent CLI to use: `claude`, `codex`, or `opencode` |
188
+ | `model` | (agent default) | AI model (passed via `--model` flag; omit to use agent's default) |
189
+ | `review_model` | (agent default) | AI model for code review and learning extraction |
190
190
  | `label` | `ready` | GitHub label that marks issues as ready for the loop |
191
191
  | `base_branch` | `master` | Branch to create PRs against |
192
192
  | `test_command` | `pnpm test` | Command to run tests |
193
193
  | `dev_command` | `pnpm dev` | Command to start the dev server for verification |
194
- | `port` | `3000` | Port the dev server runs on |
194
+ | `max_turns` | (none) | Max conversation turns for the agent |
195
+ | `poll_interval` | `60` | Seconds between issue polling |
195
196
  | `max_test_retries` | `3` | Times to retry failing tests/verification |
196
197
  | `milestone` | (none) | Only process issues in this milestone |
197
198
  | `max_issues` | `0` | Max issues to process per session (0 = unlimited) |
@@ -206,7 +207,9 @@ max_session_duration: 7200 # 2 hours in seconds
206
207
  | `skip_install` | `false` | Skip `pnpm install` in worktrees |
207
208
  | `skip_preflight` | `false` | Skip pre-flight test validation |
208
209
  | `auto_cleanup` | `true` | Auto-remove worktrees after processing |
209
- | `harnesses` | `['claude-code', 'codex']` | Coding harnesses to sync skills/agents to |
210
+ | `run_full` | `false` | Run full pipeline without skipping any steps |
211
+ | `verbose` | `false` | Enable verbose agent output |
212
+ | `harnesses` | (auto from agent) | Coding harnesses to sync skills/agents to (e.g., `claude`, `codex`) |
210
213
 
211
214
  ### Environment Variables
212
215
 
@@ -216,8 +219,10 @@ All config options can be set via environment variables (uppercase, same names):
216
219
  |----------|------------|
217
220
  | `REPO` | `repo` |
218
221
  | `PROJECT` | `project` |
222
+ | `AGENT` | `agent` |
219
223
  | `MODEL` | `model` |
220
224
  | `REVIEW_MODEL` | `review_model` |
225
+ | `POLL_INTERVAL` | `poll_interval` |
221
226
  | `MAX_TEST_RETRIES` | `max_test_retries` |
222
227
  | `MILESTONE` | `milestone` |
223
228
  | `MAX_ISSUES` | `max_issues` |
@@ -225,29 +230,65 @@ All config options can be set via environment variables (uppercase, same names):
225
230
  | `BASE_BRANCH` | `base_branch` |
226
231
  | `TEST_COMMAND` | `test_command` |
227
232
  | `DEV_COMMAND` | `dev_command` |
228
- | `PORT` | `port` |
229
233
  | `DRY_RUN` | `dry_run` |
230
234
  | `SKIP_TESTS` | `skip_tests` |
231
235
  | `SKIP_REVIEW` | `skip_review` |
232
236
  | `SKIP_VERIFY` | `skip_verify` |
233
237
  | `SKIP_LEARN` | `skip_learn` |
238
+ | `SKIP_E2E` | `skip_e2e` |
239
+ | `SKIP_INSTALL` | `skip_install` |
240
+ | `SKIP_PREFLIGHT` | `skip_preflight` |
234
241
  | `AUTO_MERGE` | `auto_merge` |
242
+ | `AUTO_CLEANUP` | `auto_cleanup` |
235
243
  | `MERGE_TO` | `merge_to` |
244
+ | `RUN_FULL` | `run_full` |
245
+ | `VERBOSE` | `verbose` |
236
246
 
237
247
  **Precedence:** CLI flags > environment variables > `.alpha-loop.yaml` > auto-detection > defaults
238
248
 
249
+ ### Switching Agents
250
+
251
+ Alpha Loop is agent-agnostic. Set the `agent` field in `.alpha-loop.yaml` to switch which CLI runs the pipeline:
252
+
253
+ ```yaml
254
+ # Use Codex instead of Claude
255
+ agent: codex
256
+ ```
257
+
258
+ ```yaml
259
+ # Use Codex with a specific model
260
+ agent: codex
261
+ model: gpt-5.3-codex
262
+ ```
263
+
264
+ If you omit `model`, the agent CLI uses its own default (e.g., Claude uses its configured model, Codex uses `gpt-5.4`). Set `model` only when you want to override.
265
+
266
+ | Agent | Example models | CLI flags used |
267
+ |-------|---------------|----------------|
268
+ | `claude` | `opus`, `sonnet`, `haiku` | `-p --model MODEL --dangerously-skip-permissions` |
269
+ | `codex` | `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.3-codex` | `exec --model MODEL --full-auto` |
270
+ | `opencode` | `deepseek`, `gpt-4` | `run --model MODEL` |
271
+
272
+ When you change `agent`, the harness sync automatically targets the correct directories (e.g., `.claude/` for Claude, `.codex/` for Codex). You can also explicitly list harnesses if you use multiple tools:
273
+
274
+ ```yaml
275
+ agent: codex
276
+ harnesses:
277
+ - codex
278
+ - claude # also sync to Claude for teammates using it
279
+ ```
280
+
239
281
  ## GitHub Setup
240
282
 
241
283
  ### Labels
242
284
 
243
- Create these labels on your repo (or let the loop create them):
285
+ The loop uses these labels. Run `alpha-loop init` to create any that are missing:
244
286
 
245
287
  | Label | Purpose |
246
288
  |-------|---------|
247
289
  | `ready` | Issue is ready for the loop to pick up |
248
290
  | `in-progress` | Loop is actively working on it |
249
291
  | `in-review` | PR created, awaiting review |
250
- | `done` | Merged and complete |
251
292
  | `failed` | Loop failed after retries |
252
293
 
253
294
  ### Milestones
package/dist/cli.js CHANGED
@@ -8,7 +8,7 @@ import { syncCommand } from './commands/sync.js';
8
8
  program
9
9
  .name('alpha-loop')
10
10
  .description('Agent-agnostic automated development loop')
11
- .version('1.2.0');
11
+ .version('1.3.0');
12
12
  program
13
13
  .command('init')
14
14
  .description('Full project onboarding: config, templates, vision, scan, sync')
@@ -27,9 +27,12 @@ program
27
27
  .option('--milestone <name>', 'Only process issues in this milestone')
28
28
  .option('--auto-merge', 'Auto-merge PRs to session branch')
29
29
  .option('--merge-to <branch>', 'Use existing branch instead of creating session branch')
30
+ .option('--once', 'Process one issue and exit')
30
31
  .option('--verbose', 'Stream live agent output to terminal')
31
32
  .action(async (options) => {
32
33
  const { runCommand } = await import('./commands/run.js');
34
+ if (options.once)
35
+ options.maxIssues = 1;
33
36
  await runCommand(options);
34
37
  });
35
38
  program
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ export async function authCommand() {
28
28
  console.log('(cookies, localStorage, sessions) will be saved for future');
29
29
  console.log('verification runs.');
30
30
  console.log('');
31
- const defaultUrl = `http://localhost:${config.port ?? 3000}`;
31
+ const defaultUrl = `http://localhost:3000`;
32
32
  const rl = readline.createInterface({
33
33
  input: process.stdin,
34
34
  output: process.stdout,
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1,15 @@
1
+ /**
2
+ * Check for required GitHub labels and interactively create missing ones.
3
+ */
4
+ export declare function ensureLabels(repo: string, labelReady: string): Promise<void>;
5
+ /**
6
+ * Check for required project board statuses and create missing ones.
7
+ */
8
+ export declare function ensureProjectStatuses(repoOwner: string, project: number): Promise<void>;
1
9
  export declare function initCommand(): Promise<void>;
10
+ /**
11
+ * Install playwright-cli skills into .alpha-loop/templates/skills/ (source of truth).
12
+ * playwright-cli install --skills writes to .claude/ by default, so we move the
13
+ * installed skills into templates and let the normal sync handle distribution.
14
+ */
15
+ export declare function installPlaywrightSkills(projectDir: string, templatesDir?: string): boolean;
@@ -15,10 +15,11 @@
15
15
  */
16
16
  import { existsSync, writeFileSync, readFileSync, readdirSync, copyFileSync, mkdirSync } from 'node:fs';
17
17
  import { join } from 'node:path';
18
+ import * as readline from 'node:readline';
18
19
  import { detectRepo, loadConfig } from '../lib/config.js';
19
20
  import { exec } from '../lib/shell.js';
20
21
  import { log } from '../lib/logger.js';
21
- import { syncAgentAssets, migrateToTemplates } from './sync.js';
22
+ import { syncAgentAssets, migrateToTemplates, resolveHarnesses } from './sync.js';
22
23
  import { findDistributionTemplatesDir } from '../lib/templates.js';
23
24
  const CONFIG_FILE = '.alpha-loop.yaml';
24
25
  const ISSUE_TEMPLATE = `name: Agent-Ready Task
@@ -93,19 +94,17 @@ function configTemplate(repo) {
93
94
  return `# Alpha Loop configuration
94
95
  repo: ${repo}
95
96
  project: 0 # GitHub Project number (find it in your project URL)
96
- model: opus
97
- review_model: opus
97
+ agent: claude # AI agent CLI: claude, codex, opencode
98
+ # model: # AI model (omit to use agent's default, e.g., opus, gpt-5.4)
98
99
  label: ready
99
100
  base_branch: main
100
101
  test_command: pnpm test
101
102
  dev_command: pnpm dev
102
- port: 3000
103
103
  auto_merge: true
104
104
 
105
- # Coding harnesses to sync skills/agents to
105
+ # Coding harnesses to sync skills/agents to (auto-derived from agent if empty)
106
106
  harnesses:
107
- - claude-code
108
- - codex
107
+ - claude
109
108
 
110
109
  # Safety limits (0 = unlimited)
111
110
  max_issues: 20
@@ -147,6 +146,147 @@ function ensureGitignore() {
147
146
  log.success('Updated .gitignore for alpha-loop');
148
147
  }
149
148
  }
149
+ const REQUIRED_PROJECT_STATUSES = ['Todo', 'In progress', 'In Review', 'Done'];
150
+ const REQUIRED_LABELS = [
151
+ { name: 'ready', color: '0E8A16', description: 'Ready for agent processing' },
152
+ { name: 'in-progress', color: '1D76DB', description: 'Agent is working on this' },
153
+ { name: 'in-review', color: 'FBCA04', description: 'PR created, awaiting review' },
154
+ { name: 'failed', color: 'D93F0B', description: 'Agent processing failed' },
155
+ ];
156
+ /**
157
+ * Check for required GitHub labels and interactively create missing ones.
158
+ */
159
+ export async function ensureLabels(repo, labelReady) {
160
+ // Build the label list with the configured "ready" label name
161
+ const labels = REQUIRED_LABELS.map(l => l.name === 'ready' ? { ...l, name: labelReady } : l);
162
+ const result = exec(`gh label list --repo "${repo}" --json name --limit 200`);
163
+ if (result.exitCode !== 0) {
164
+ log.warn('Could not check labels (gh CLI issue or repo not found)');
165
+ return;
166
+ }
167
+ let existing;
168
+ try {
169
+ const parsed = JSON.parse(result.stdout);
170
+ existing = new Set(parsed.map(l => l.name));
171
+ }
172
+ catch {
173
+ log.warn('Could not parse label list');
174
+ return;
175
+ }
176
+ const missing = labels.filter(l => !existing.has(l.name));
177
+ if (missing.length === 0) {
178
+ log.success('All required labels exist');
179
+ return;
180
+ }
181
+ log.info(`Missing labels: ${missing.map(l => l.name).join(', ')}`);
182
+ // Interactive confirmation if running in a TTY
183
+ if (process.stdin.isTTY) {
184
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
185
+ const answer = await new Promise(resolve => {
186
+ rl.question('Create missing labels? [Y/n]: ', resolve);
187
+ });
188
+ rl.close();
189
+ if (answer.trim().toLowerCase() === 'n') {
190
+ log.info('Skipping label creation');
191
+ return;
192
+ }
193
+ }
194
+ for (const label of missing) {
195
+ const createResult = exec(`gh label create "${label.name}" --repo "${repo}" --color "${label.color}" --description "${label.description}"`);
196
+ if (createResult.exitCode === 0) {
197
+ log.success(`Created label: ${label.name}`);
198
+ }
199
+ else {
200
+ log.warn(`Failed to create label: ${label.name}`);
201
+ }
202
+ }
203
+ }
204
+ /**
205
+ * Check for required project board statuses and create missing ones.
206
+ */
207
+ export async function ensureProjectStatuses(repoOwner, project) {
208
+ if (!project || project <= 0) {
209
+ log.info('No project board configured — skipping status check');
210
+ return;
211
+ }
212
+ // Get project ID and status field
213
+ const projectResult = exec(`gh project view ${project} --owner "${repoOwner}" --format json`);
214
+ if (projectResult.exitCode !== 0) {
215
+ log.warn(`Could not access project board ${project}`);
216
+ return;
217
+ }
218
+ let projectId;
219
+ try {
220
+ projectId = JSON.parse(projectResult.stdout).id;
221
+ }
222
+ catch {
223
+ log.warn('Could not parse project data');
224
+ return;
225
+ }
226
+ const fieldResult = exec(`gh project field-list ${project} --owner "${repoOwner}" --format json`);
227
+ if (fieldResult.exitCode !== 0) {
228
+ log.warn('Could not list project fields');
229
+ return;
230
+ }
231
+ let fieldId;
232
+ let existingOptions = [];
233
+ try {
234
+ const data = JSON.parse(fieldResult.stdout);
235
+ const statusField = data.fields.find((f) => f.name === 'Status');
236
+ if (statusField) {
237
+ fieldId = statusField.id;
238
+ existingOptions = statusField.options ?? [];
239
+ }
240
+ }
241
+ catch {
242
+ log.warn('Could not parse project fields');
243
+ return;
244
+ }
245
+ if (!fieldId) {
246
+ log.warn('No Status field found on project board');
247
+ return;
248
+ }
249
+ const existingNames = new Set(existingOptions.map((o) => o.name));
250
+ const missing = REQUIRED_PROJECT_STATUSES.filter((s) => !existingNames.has(s));
251
+ if (missing.length === 0) {
252
+ log.success('All required project statuses exist');
253
+ return;
254
+ }
255
+ log.info(`Missing project statuses: ${missing.join(', ')}`);
256
+ // Interactive confirmation if running in a TTY
257
+ if (process.stdin.isTTY) {
258
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
259
+ const answer = await new Promise((resolve) => {
260
+ rl.question('Create missing project statuses? [Y/n]: ', resolve);
261
+ });
262
+ rl.close();
263
+ if (answer.trim().toLowerCase() === 'n') {
264
+ log.info('Skipping status creation');
265
+ return;
266
+ }
267
+ }
268
+ // Build the full options list (existing + new) for the update mutation
269
+ const allOptionObjs = [
270
+ ...existingOptions.map((o) => ({ name: o.name, id: o.id })),
271
+ ...missing.map((name) => ({ name })),
272
+ ];
273
+ const optionsJson = JSON.stringify(allOptionObjs);
274
+ const mutation = `mutation {
275
+ updateProjectV2Field(input: {
276
+ projectId: "${projectId}"
277
+ fieldId: "${fieldId}"
278
+ singleSelectOptions: ${optionsJson.replace(/"/g, '\\"')}
279
+ }) { projectV2Field { ... on ProjectV2SingleSelectField { id } } }
280
+ }`;
281
+ const createResult = exec(`gh api graphql -f query="${mutation}"`);
282
+ if (createResult.exitCode === 0) {
283
+ log.success(`Created project statuses: ${missing.join(', ')}`);
284
+ }
285
+ else {
286
+ log.warn(`Could not create project statuses: ${createResult.stderr}`);
287
+ log.info(`Please add these statuses manually in your project settings: ${missing.join(', ')}`);
288
+ }
289
+ }
150
290
  export async function initCommand() {
151
291
  const projectDir = process.cwd();
152
292
  // --- Step 1: Create config ---
@@ -219,26 +359,7 @@ export async function initCommand() {
219
359
  }
220
360
  // --- Step 5: Install playwright-cli skills ---
221
361
  log.step('Step 5: Playwright CLI');
222
- const which = exec('which playwright-cli');
223
- if (which.exitCode === 0) {
224
- const result = exec('playwright-cli install --skills');
225
- if (result.exitCode === 0) {
226
- log.success('Playwright CLI skills installed');
227
- // Copy to templates source of truth
228
- const installed = join('.claude', 'skills', 'playwright-cli');
229
- const dest = join(projectTemplatesDir, 'skills', 'playwright-cli');
230
- if (existsSync(installed) && !existsSync(dest)) {
231
- copyDir(installed, dest);
232
- log.info('Copied playwright-cli skill to .alpha-loop/templates/skills/');
233
- }
234
- }
235
- else {
236
- log.warn('Could not install playwright-cli skills');
237
- }
238
- }
239
- else {
240
- log.info('playwright-cli not found — skipping. Install with: npm install -g @playwright/cli@latest');
241
- }
362
+ installPlaywrightSkills(projectDir, projectTemplatesDir);
242
363
  // --- Step 6: Vision (interactive) ---
243
364
  if (process.stdin.isTTY) {
244
365
  const { hasVision } = await import('../lib/vision.js');
@@ -261,7 +382,7 @@ export async function initCommand() {
261
382
  // --- Step 8: Sync to harnesses ---
262
383
  log.step('Step 8: Sync to harnesses');
263
384
  const config = loadConfig();
264
- const harnesses = config.harnesses.length > 0 ? config.harnesses : ['claude-code', 'codex'];
385
+ const harnesses = resolveHarnesses(config.harnesses, config.agent);
265
386
  const syncResult = syncAgentAssets(harnesses);
266
387
  if (syncResult.synced) {
267
388
  log.success(`Synced templates to ${harnesses.join(', ')}`);
@@ -278,8 +399,14 @@ export async function initCommand() {
278
399
  else {
279
400
  log.info('Issue template already exists');
280
401
  }
281
- // --- Step 10: Commit ---
282
- log.step('Step 10: Commit generated files');
402
+ // --- Step 10: GitHub labels ---
403
+ log.step('Step 10: GitHub labels');
404
+ await ensureLabels(config.repo, config.labelReady);
405
+ // --- Step 11: Project board statuses ---
406
+ log.step('Step 11: Project board statuses');
407
+ await ensureProjectStatuses(config.repoOwner, config.project);
408
+ // --- Step 12: Commit ---
409
+ log.step('Step 11: Commit generated files');
283
410
  const statusResult = exec('git status --porcelain .alpha-loop/ .claude/ .agents/ .codex/ CLAUDE.md AGENTS.md .gitignore .github/');
284
411
  if (statusResult.stdout.trim()) {
285
412
  exec('git add .alpha-loop/ .claude/ .agents/ .codex/ CLAUDE.md AGENTS.md .gitignore .github/ 2>/dev/null || true');
@@ -294,4 +421,46 @@ export async function initCommand() {
294
421
  }
295
422
  log.success('Alpha-loop initialization complete!');
296
423
  }
424
+ /**
425
+ * Install playwright-cli skills into .alpha-loop/templates/skills/ (source of truth).
426
+ * playwright-cli install --skills writes to .claude/ by default, so we move the
427
+ * installed skills into templates and let the normal sync handle distribution.
428
+ */
429
+ export function installPlaywrightSkills(projectDir, templatesDir) {
430
+ const projectTemplatesDir = templatesDir ?? join(projectDir, '.alpha-loop', 'templates');
431
+ const which = exec('which playwright-cli');
432
+ if (which.exitCode !== 0) {
433
+ log.warn('playwright-cli not installed — live verification will not be available');
434
+ log.info(' Install: npm install -g @anthropic-ai/claude-code');
435
+ log.info(' Then run: alpha-loop init (or playwright-cli install --skills)');
436
+ return false;
437
+ }
438
+ // Run playwright-cli install --skills (writes to .claude/skills/)
439
+ const result = exec('playwright-cli install --skills', { cwd: projectDir });
440
+ if (result.exitCode !== 0) {
441
+ log.warn('Could not install playwright-cli skills');
442
+ return false;
443
+ }
444
+ log.success('Playwright CLI skills installed');
445
+ // Move installed skills from .claude/skills/ to templates source of truth
446
+ // playwright-cli may install multiple skill directories — move any new ones
447
+ const claudeSkillsDir = join(projectDir, '.claude', 'skills');
448
+ const templateSkillsDir = join(projectTemplatesDir, 'skills');
449
+ if (existsSync(claudeSkillsDir)) {
450
+ const installed = readdirSync(claudeSkillsDir, { withFileTypes: true })
451
+ .filter((d) => d.isDirectory() && d.name.startsWith('playwright'));
452
+ for (const dir of installed) {
453
+ const dest = join(templateSkillsDir, dir.name);
454
+ const src = join(claudeSkillsDir, dir.name);
455
+ if (!existsSync(dest)) {
456
+ mkdirSync(dest, { recursive: true });
457
+ copyDir(src, dest);
458
+ log.info(`Moved ${dir.name} skill to .alpha-loop/templates/skills/`);
459
+ }
460
+ // Remove from .claude/ so sync doesn't conflict
461
+ exec(`rm -rf "${src}"`);
462
+ }
463
+ }
464
+ return true;
465
+ }
297
466
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -368,6 +368,7 @@ export async function resumeCommand(options) {
368
368
  prUrl: r.prUrl,
369
369
  testsPassing: true,
370
370
  verifyPassing: false, // verification was skipped/crashed
371
+ verifySkipped: true,
371
372
  duration: 0,
372
373
  filesChanged: 0,
373
374
  };