prizmkit 1.1.20 → 1.1.23

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.
@@ -364,17 +364,32 @@ You MUST execute this phase. Do NOT skip it. Do NOT mark it as completed without
364
364
  You know this project's tech stack. Detect and start the dev server yourself:
365
365
 
366
366
  1. Identify the dev server start command from project config (`package.json` scripts, `Makefile`, `docker-compose.yml`, etc.)
367
- 2. Choose an available port — check what the project defaults to, or pick one that is free:
367
+ 2. **Detect the dev server port**use the pre-detected port from pipeline if available, otherwise extract from project config. Do NOT hardcode or guess the port:
368
368
  ```bash
369
- lsof -ti:<port> 2>/dev/null && echo "PORT_IN_USE" || echo "PORT_FREE"
369
+ # Use pipeline-injected port if available, otherwise extract from package.json
370
+ DEV_PORT={{DEV_PORT}}
371
+ # If DEV_PORT is still a placeholder, detect at runtime:
372
+ if [ "$DEV_PORT" = "{{DEV_PORT}}" ]; then
373
+ DEV_PORT=$(node -e "const s=require('./package.json').scripts.dev; const m=s.match(/-p\s+(\d+)/); console.log(m?m[1]:'')")
374
+ if [ -z "$DEV_PORT" ]; then
375
+ DEV_PORT=$(echo "$NEXT_PUBLIC_SITE_URL" | sed -nE 's|.*:([0-9]+).*|\1|p')
376
+ fi
377
+ DEV_PORT=${DEV_PORT:-3000}
378
+ fi
379
+ echo "Detected DEV_PORT=$DEV_PORT"
370
380
  ```
371
- 3. Start the dev server in background, capture PID:
381
+ 3. Verify the port is available:
382
+ ```bash
383
+ lsof -ti:$DEV_PORT 2>/dev/null && echo "PORT_IN_USE" || echo "PORT_FREE"
384
+ ```
385
+ 4. Start the dev server in background, capture PID:
372
386
  ```bash
373
387
  <start-command> &
374
388
  DEV_SERVER_PID=$!
375
389
  ```
376
- 4. Wait for server to be ready: poll the target URL with `curl -s -o /dev/null -w "%{http_code}"` until it returns 200 or 302 (max 30 seconds, 2s interval)
377
- 5. If the page requires authentication, use playwright-cli to register a test user and log in first
390
+ 5. Wait for server to be ready: poll `http://localhost:$DEV_PORT` with `curl -s -o /dev/null -w "%{http_code}"` until it returns 200 or 302 (max 30 seconds, 2s interval)
391
+ 6. Open the app in playwright-cli: `playwright-cli open http://localhost:$DEV_PORT`
392
+ 7. If the page requires authentication, use playwright-cli to register a test user and log in first
378
393
 
379
394
  **Step 2 — Verification**:
380
395
 
@@ -387,14 +402,14 @@ Take a final screenshot for evidence.
387
402
  **Step 3 — Cleanup (REQUIRED — you started it, you stop it)**:
388
403
 
389
404
  1. Kill the dev server process: `kill $DEV_SERVER_PID 2>/dev/null || true`
390
- 2. Verify port is released: `lsof -ti:<port> | xargs kill -9 2>/dev/null || true`
405
+ 2. Verify port is released: `lsof -ti:$DEV_PORT | xargs kill -9 2>/dev/null || true`
391
406
 
392
407
  **Step 4 — Reporting**:
393
408
 
394
409
  Append results to `context-snapshot.md`:
395
410
  ```
396
411
  ## Browser Verification
397
- URL: <actual URL used>
412
+ URL: http://localhost:$DEV_PORT
398
413
  Dev Server Command: <actual command used>
399
414
  Steps executed: [list]
400
415
  Screenshot: [path]
@@ -7,17 +7,32 @@ You MUST execute this phase. Do NOT skip it. Do NOT mark it as completed without
7
7
  You know this project's tech stack. Detect and start the dev server yourself:
8
8
 
9
9
  1. Identify the dev server start command from project config (`package.json` scripts, `Makefile`, `docker-compose.yml`, etc.)
10
- 2. Choose an available port — check what the project defaults to, or pick one that is free:
10
+ 2. **Detect the dev server port**use the pre-detected port from pipeline if available, otherwise extract from project config. Do NOT hardcode or guess the port:
11
11
  ```bash
12
- lsof -ti:<port> 2>/dev/null && echo "PORT_IN_USE" || echo "PORT_FREE"
12
+ # Use pipeline-injected port if available, otherwise extract from package.json
13
+ DEV_PORT={{DEV_PORT}}
14
+ # If DEV_PORT is still a placeholder, detect at runtime:
15
+ if [ "$DEV_PORT" = "{{DEV_PORT}}" ]; then
16
+ DEV_PORT=$(node -e "const s=require('./package.json').scripts.dev; const m=s.match(/-p\s+(\d+)/); console.log(m?m[1]:'')")
17
+ if [ -z "$DEV_PORT" ]; then
18
+ DEV_PORT=$(echo "$NEXT_PUBLIC_SITE_URL" | sed -nE 's|.*:([0-9]+).*|\1|p')
19
+ fi
20
+ DEV_PORT=${DEV_PORT:-3000}
21
+ fi
22
+ echo "Detected DEV_PORT=$DEV_PORT"
13
23
  ```
14
- 3. Start the dev server in background, capture PID:
24
+ 3. Verify the port is available:
25
+ ```bash
26
+ lsof -ti:$DEV_PORT 2>/dev/null && echo "PORT_IN_USE" || echo "PORT_FREE"
27
+ ```
28
+ 4. Start the dev server in background, capture PID:
15
29
  ```bash
16
30
  <start-command> &
17
31
  DEV_SERVER_PID=$!
18
32
  ```
19
- 4. Wait for server to be ready: poll the target URL with `curl -s -o /dev/null -w "%{http_code}"` until it returns 200 or 302 (max 30 seconds, 2s interval)
20
- 5. If the page requires authentication, use playwright-cli to register a test user and log in first
33
+ 5. Wait for server to be ready: poll `http://localhost:$DEV_PORT` with `curl -s -o /dev/null -w "%{http_code}"` until it returns 200 or 302 (max 30 seconds, 2s interval)
34
+ 6. Open the app in playwright-cli: `playwright-cli open http://localhost:$DEV_PORT`
35
+ 7. If the page requires authentication, use playwright-cli to register a test user and log in first
21
36
 
22
37
  **Step 2 — Verification**:
23
38
 
@@ -31,14 +46,14 @@ Take a final screenshot for evidence.
31
46
  **Step 3 — Cleanup (REQUIRED — you started it, you stop it)**:
32
47
 
33
48
  1. Kill the dev server process: `kill $DEV_SERVER_PID 2>/dev/null || true`
34
- 2. Verify port is released: `lsof -ti:<port> | xargs kill -9 2>/dev/null || true`
49
+ 2. Verify port is released: `lsof -ti:$DEV_PORT | xargs kill -9 2>/dev/null || true`
35
50
 
36
51
  **Step 4 — Reporting**:
37
52
 
38
53
  Append results to `context-snapshot.md`:
39
54
  ```
40
55
  ## Browser Verification
41
- URL: <actual URL used>
56
+ URL: http://localhost:$DEV_PORT
42
57
  Dev Server Command: <actual command used>
43
58
  Steps executed: [list]
44
59
  Screenshot: [path]
@@ -122,8 +122,13 @@ class TestAutoSkipLinearChain:
122
122
 
123
123
  auto_skip_blocked_features(fl_path, state_dir, "F-001")
124
124
 
125
+ # status lives in feature-list.json, not status.json
126
+ statuses = _read_statuses(fl_path)
127
+ assert statuses["F-002"] == "auto_skipped"
128
+ # status.json should have updated_at but no status field
125
129
  fs = load_feature_status(state_dir, "F-002")
126
- assert fs["status"] == "auto_skipped"
130
+ assert "status" not in fs
131
+ assert "updated_at" in fs
127
132
 
128
133
  def test_failing_mid_skips_only_downstream(self, tmp_path):
129
134
  features = [
@@ -434,7 +439,6 @@ class TestAutoSkipIntegration:
434
439
  with open(fs_path) as f:
435
440
  fs = json.load(f)
436
441
  fs["retry_count"] = 3
437
- fs["status"] = "failed"
438
442
  with open(fs_path, "w") as f:
439
443
  json.dump(fs, f)
440
444
 
@@ -443,4 +447,7 @@ class TestAutoSkipIntegration:
443
447
  with open(fs_path) as f:
444
448
  fs = json.load(f)
445
449
  assert fs["retry_count"] == 0
446
- assert fs["status"] == "pending"
450
+ # status lives in feature-list.json, not status.json
451
+ assert "status" not in fs
452
+ statuses = _read_statuses(fl_path)
453
+ assert statuses["F-001"] == "pending"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.20",
2
+ "version": "1.1.23",
3
3
  "skills": {
4
4
  "prizm-kit": {
5
5
  "description": "Full-lifecycle dev toolkit. Covers spec-driven development, Prizm context docs, code quality, debugging, deployment, and knowledge management.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prizmkit",
3
- "version": "1.1.20",
3
+ "version": "1.1.23",
4
4
  "description": "Create a new PrizmKit-powered project with clean initialization — no framework dev files, just what you need.",
5
5
  "type": "module",
6
6
  "bin": {