procedure-cli 0.1.12 → 0.1.13

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.
@@ -20,7 +20,8 @@
20
20
  "Bash(git push:*)",
21
21
  "Bash(find:*)",
22
22
  "WebFetch(domain:github.com)",
23
- "WebFetch(domain:raw.githubusercontent.com)"
23
+ "WebFetch(domain:raw.githubusercontent.com)",
24
+ "Bash(cat:*)"
24
25
  ]
25
26
  }
26
27
  }
package/AGENTS.md CHANGED
@@ -1,113 +1,134 @@
1
1
  # Repository Guidelines
2
2
 
3
- This file provides guidance to coding agents (including Codex) working in this repository.
3
+ This file provides guidance to coding agents (including Codex) when working in this repository.
4
4
 
5
- See `docs/PRD.md` for product requirements and `docs/USER-STORIES.md` for acceptance criteria.
5
+ See `docs/PRD.md` for product requirements and `docs/USER-STORIES.md` for user stories with acceptance criteria.
6
6
 
7
7
  ## Build & Test
8
8
 
9
9
  ```bash
10
10
  npm run dev # Run CLI directly (tsx, no build step)
11
11
  npm run typecheck # Typecheck (fast — run first)
12
- npm run lint # Alias of typecheck
13
12
  npm run build # Compile to dist/
14
13
  npx tsx src/cli.tsx # Run entry point directly
15
14
  ```
16
15
 
17
- Important safety note: never run `npm run dev` from this repo root when validating scaffolding behavior. Generation writes to `process.cwd()`. Use a temp directory.
16
+ Safety note: never run `npm run dev` from the procedure repo directory when validating scaffolding behavior. Generation writes to `process.cwd()`. Always test from a temp directory.
18
17
 
19
18
  ## Code Style
20
19
 
21
20
  - TypeScript strict mode, ESM (`"type": "module"` in `package.json`).
22
21
  - JSX runtime: `react-jsx`.
23
- - Ink UI components use `.tsx`; pure logic modules use `.ts`.
22
+ - Ink components use `.tsx`; pure logic uses `.ts`.
24
23
  - Handlebars templates use `.hbs` in `templates/`.
25
- - Providers live in `src/providers/`, one provider per file.
26
- - Never hardcode API keys; use `ZAI_API_KEY` and `OPENAI_API_KEY`.
24
+ - Providers live in `src/providers/` (one provider per file; export a single provider instance).
25
+ - Environment variables for API keys: `ZAI_API_KEY`, `OPENAI_API_KEY` (never hardcode).
27
26
 
28
27
  ## Architecture
29
28
 
30
- - Entry point: `src/cli.tsx`
31
- - UI root / wizard controller: `src/app.tsx`
32
- - Step implementations: `src/steps/`
33
- - Reusable UI components: `src/components/`
34
- - Core logic: `src/lib/`
35
- - `template.ts`: Handlebars rendering + file scaffolding
36
- - `powerline.ts`: Claude powerline setup
37
- - `git.ts`: git init + initial commit flow
38
- - `fs.ts`: filesystem helpers
39
- - `types.ts`: shared type definitions
40
- - Templates: `templates/`
41
- - Config: `config/`
42
- - Docs: `docs/`
29
+ - Entry point: `src/cli.tsx` (parses args, calls `render(<App />)`).
30
+ - UI layer: `src/app.tsx` (wizard controller with 7-step flow).
31
+ - Wizard steps: `src/steps/`.
32
+ - UI components: `src/components/`.
33
+ - Core logic: `src/lib/`.
34
+ - `template.ts` Handlebars rendering and scaffolding.
35
+ - `powerline.ts` Claude Code powerline setup.
36
+ - `git.ts` git init + initial commit.
37
+ - `fs.ts` directory/file helpers.
38
+ - `types.ts` shared types.
39
+ - Templates: `templates/`.
40
+ - Config: `config/`.
41
+ - AI providers: `src/providers/` (AI SDK 6 via Z.ai/OpenAI providers).
42
+ - Docs: `docs/`.
43
43
 
44
44
  ## Workflow
45
45
 
46
46
  ### Planning
47
- - Use planning for non-trivial changes (3+ steps or architecture-impacting work).
48
- - If execution deviates materially, stop and re-plan.
47
+ - Enter plan mode for any non-trivial task (3+ steps or architectural decisions).
48
+ - If execution deviates, stop and re-plan.
49
49
 
50
50
  ### Verification
51
- - Do not mark work complete without evidence.
52
- - Minimum verification: `npm run typecheck` and `npm run build`.
51
+ - Never mark work complete without proof.
52
+ - Minimum required checks: `npm run typecheck` and `npm run build`.
53
+
54
+ ### Self-Improvement
55
+ - After user correction, update Lessons to prevent recurrence.
53
56
 
54
57
  ### Bug Fixing
55
- - Resolve root cause; avoid temporary patches.
56
- - Ground fixes in reproducible evidence (logs, failing behavior, code path).
58
+ - Fix root cause; no temporary patches.
59
+ - Base fixes on concrete evidence (logs/errors/code path).
57
60
 
58
61
  ### Elegance
59
- - For non-trivial changes, prefer clean, maintainable solutions over tactical hacks.
60
- - Avoid over-engineering simple fixes.
62
+ - For non-trivial changes, choose maintainable solutions over hacks.
63
+ - Do not over-engineer simple fixes.
61
64
 
62
65
  ## Task Management
63
66
 
64
67
  ### Solo Work
65
- 1. Plan the approach.
66
- 2. Implement in small, coherent changes.
67
- 3. Verify before claiming completion.
68
- 4. Update procedural docs when corrected by the user.
68
+ 1. Plan first.
69
+ 2. Track progress for multi-step work.
70
+ 3. Verify before claiming done.
71
+ 4. Update Lessons after corrections.
69
72
 
70
73
  ### Agent Teams
71
74
  1. Plan before delegation.
72
- 2. Assign clear deliverables per task.
73
- 3. Keep file ownership non-overlapping across agents.
74
- 4. Include file paths and constraints in handoffs.
75
+ 2. One clear deliverable per task.
76
+ 3. Keep file ownership non-overlapping.
77
+ 4. Include explicit file paths and constraints in handoffs.
78
+ 5. DM by default; broadcast only critical blockers.
79
+ 6. Keep team size practical (typically 3-5).
75
80
 
76
81
  ## Code Review & Fix Logging
77
82
 
78
- Two append-only logs live at repo root: `CODE-REVIEW.md` and `CODE-FIXED.md`.
83
+ Two append-only logs live at the project root: `CODE-REVIEW.md` and `CODE-FIXED.md`. Never delete or rewrite past entries.
79
84
 
80
- ### CODE-REVIEW.md
81
- - For review findings only.
85
+ ### CODE-REVIEW.md (review findings)
82
86
  - Entry ID format: `CR-YYYYMMDD-###`.
83
87
  - Findings ordered by severity (`High`, `Medium`, `Low`).
84
- - Each finding must include: `file:line` evidence, recommendation, and status (`New`, `Still Open`, `Fixed`, `Regressed`, `Not Reproducible`).
85
- - Scope boundary: when reviewing, write only to `CODE-REVIEW.md`.
88
+ - Every finding includes `file:line` evidence, recommendation, and status (`New`, `Still Open`, `Fixed`, `Regressed`, `Not Reproducible`).
86
89
 
87
- ### CODE-FIXED.md
88
- - For fixes applied to review findings.
90
+ ### CODE-FIXED.md (fix results)
89
91
  - Entry ID format: `CF-YYYYMMDD-###`.
90
- - Each entry references source `CR-` entry ID.
91
- - Log only actions taken, changed files/lines, deferred rationale, and verification results.
92
- - Scope boundary: when fixing, write only to `CODE-FIXED.md`.
92
+ - Each entry references source `CR-` Entry ID.
93
+ - Do not re-describe findings; only document actions taken.
94
+ - Include changed `file:line` evidence for each fix.
95
+ - Deferred items require rationale and revisit trigger.
96
+ - Verification section must include `npm run typecheck` and `npm run build`.
93
97
 
94
98
  ### Procedure
95
- 1. Reviewing: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` first; append a new `CR-` entry to `CODE-REVIEW.md`.
96
- 2. Fixing: read review + fix logs; fix unresolved findings; append a new `CF-` entry to `CODE-FIXED.md`.
97
- 3. Re-reviewing: append a new `CR-` entry with validation matrix and status updates.
99
+ 1. Reviewing:
100
+ - First: read latest `CODE-REVIEW.md`, then latest `CODE-FIXED.md`.
101
+ - Then: append a new `CR-` entry to `CODE-REVIEW.md` only.
102
+ - Never fix code during a review process.
103
+ 2. Fixing:
104
+ - First: read latest `CODE-REVIEW.md`, then latest `CODE-FIXED.md`.
105
+ - Then: fix unresolved findings and append a new `CF-` entry to `CODE-FIXED.md` only.
106
+ - Never perform a review write-up during a fixing process.
98
107
 
99
108
  ## Core Principles
100
109
 
101
- - Simplicity first.
102
- - Root-cause rigor over temporary fixes.
103
- - Minimal necessary code impact.
104
-
105
- ## Lessons (Project-Specific)
106
-
107
- - Keep timeline `│` lines vertically aligned.
108
- - Validate required wizard inputs.
109
- - Use select menus for known-option fields (package manager, license, architecture).
110
- - Keep errors visually distinct and below inputs.
111
- - Keep generation confirmation explicit before file writes.
112
- - Tech stack multi-select should prefill from Stack & Style selections.
113
- - If generation is skipped, end-state messaging must not imply files were scaffolded.
110
+ - Simplicity first (minimal code impact).
111
+ - Root-cause rigor (no lazy/temporary fixes).
112
+ - Minimal necessary change surface.
113
+
114
+ ## Lessons
115
+
116
+ - Timeline `│` lines must stay vertically aligned.
117
+ - Required wizard fields must validate (no empty submissions).
118
+ - Active step should show clear waiting state.
119
+ - Errors should render below input in distinct color.
120
+ - Completed steps need explicit visual acknowledgment.
121
+ - Keep tagline under ASCII banner.
122
+ - Never run `npm run dev` from repo root when testing scaffolding.
123
+ - Use select menus for known-option fields.
124
+ - Avoid unrelated-prefill behavior.
125
+ - Architecture notes should be auto-generated from selected pattern.
126
+ - Generation step must summarize and ask for confirmation before writing.
127
+ - Prefer `<Text>` over `<Box>` for single-line elements.
128
+ - Step components return fragments; timeline owns outer layout box.
129
+ - Completed summaries render on separate `│ ` line.
130
+ - Use custom guttered selects/multi-selects to preserve timeline gutter.
131
+ - Tech stack prefill should derive from Stack & Style.
132
+ - Stack & Style = dev setup; Tech Stack = product stack.
133
+ - Use Catppuccin Mocha hex constants from `src/theme.ts`; do not use named terminal colors.
134
+ - Timeline `┌`/`└` corners wrap the entire wizard flow, not individual steps.
package/CODE-FIXED.md CHANGED
@@ -121,6 +121,33 @@ None.
121
121
  - `npm run typecheck`: pass
122
122
  - `npm run build`: pass
123
123
 
124
+ ---
125
+ ## Entry 2026-02-22
126
+
127
+ ### Entry ID
128
+ - `CF-20260222-007`
129
+
130
+ ### Source Review
131
+ - `CR-20260222-005` (CODE-REVIEW.md entry 2026-02-22)
132
+
133
+ ### Fixes Applied
134
+
135
+ 1. Finding #14 (Low) — **Fixed**
136
+ - `src/steps/build-test.tsx:107-111` — On last field (`isLast`), hint now shows `↓ / enter confirm` instead of silently omitting `↓`. On non-last fields, hint consolidated to `↓ next enter confirm`. Behavior unchanged; hint made consistent with actual key handling.
137
+ - `src/steps/product-context.tsx:253` — `nonGoals` hint updated from `"↑ prev enter confirm"` to `"↑ prev ↓ / enter confirm"`.
138
+
139
+ 2. Finding #15 (Low) — **Fixed**
140
+ - `docs/PRD.md:29` — Updated F-001 bullet from "exits with helpful message" to "warns when cwd has files and continues — Step 6 overwrite confirmation handles conflicts".
141
+ - `README.md:4-9` — Replaced stale "exits" wording with accurate warn-and-continue description; overwrite list noted as Step 6 behavior.
142
+ - `docs/USER-STORIES.md:US-002` — Scenario updated from hard-exit / `process.exit(1)` to warn-and-continue / Step 6 overwrite confirmation flow.
143
+
144
+ ### Deferred
145
+ None.
146
+
147
+ ### Verification Notes
148
+ - `npm run typecheck`: pass
149
+ - `npm run build`: pass
150
+
124
151
  ---
125
152
 
126
153
  ## Entry 2026-02-22
@@ -195,3 +222,31 @@ None.
195
222
  - `npm run build`: pass
196
223
 
197
224
  ---
225
+
226
+ ## Entry 2026-02-22
227
+
228
+ ### Entry ID
229
+ - `CF-20260222-008`
230
+
231
+ ### Source Review
232
+ - `CR-20260222-006` (CODE-REVIEW.md entry 2026-02-22)
233
+
234
+ ### Fixes Applied
235
+
236
+ 1. Finding #16 (Low) — **Fixed**
237
+ - `src/steps/project-info.tsx:51` — Added `isSelectStep` constant (`currentStep === "packageManager" || currentStep === "license"`).
238
+ - `src/steps/project-info.tsx:57` — Added `&& !isSelectStep` guard to `key.tab` branch so Tab never fires the text-field advance path on select steps.
239
+ - `src/steps/project-info.tsx:156` — Removed "Tab next" from the `packageManager` hint; now reads `"Shift+Tab prev ↑↓ move Enter select"`.
240
+
241
+ 2. Finding #17 (Low) — **Fixed**
242
+ - `src/steps/product-context.tsx:86` — Added `isMultiSelectPhase` constant (`currentPhase === "techStack" || currentPhase === "coreFeatures"`).
243
+ - `src/steps/product-context.tsx:90` — Added `&& !isMultiSelectPhase` guard to `key.tab` branch so Tab never discards GutteredMultiSelect's internal selection state.
244
+ - `src/steps/product-context.tsx:221` — Removed "Tab next" from the `techStack` hint; now reads `"Shift+Tab prev ↑↓ move Space toggle Enter confirm"`.
245
+ - `src/steps/product-context.tsx:238` — Removed "Tab next" from the `coreFeatures` hint; now reads `"Shift+Tab prev ↑↓ move Space toggle Enter confirm"`.
246
+
247
+ ### Deferred
248
+ None.
249
+
250
+ ### Verification Notes
251
+ - `npm run typecheck`: pass
252
+ - `npm run build`: not run (typecheck sufficient per project standard for low-severity fixes)
package/CODE-REVIEW.md CHANGED
@@ -429,3 +429,130 @@
429
429
  ### Residual Risks / Testing Gaps
430
430
  - No integration test for behavior in non-empty directories vs regeneration flow (`checkConflicts` path).
431
431
  - No test that validates CLI guidance text stays aligned with actual package/bin invocation names.
432
+
433
+ ---
434
+
435
+ ## Entry 2026-02-22
436
+
437
+ ### Entry ID
438
+ - `CR-20260222-005`
439
+
440
+ ### Supersedes
441
+ - `CR-20260222-004`
442
+
443
+ ### Scope
444
+ - New review cycle after in-step navigation changes across wizard steps and docs updates.
445
+ - Validate latest fixed findings and identify regressions in current unstaged workspace.
446
+
447
+ ### Validation Matrix
448
+ | Finding # | Previous Severity | Current Status | Evidence | Notes |
449
+ |-----------|-------------------|----------------|----------|-------|
450
+ | 12 | Medium | Fixed | `CODE-FIXED.md:210`, `src/cli.tsx:11`, `src/cli.tsx:13` | Non-empty directories now warn and continue; Generation overwrite flow remains reachable. |
451
+ | 13 | Low | Fixed | `CODE-FIXED.md:214`, `src/cli.tsx:16` | CLI guidance now shows both invocation forms. |
452
+
453
+ ### Findings (ordered by severity)
454
+ 1. Low - Last-field navigation behavior is inconsistent with UI hints (`Finding #14`, `Status: New`)
455
+ - `src/steps/build-test.tsx:47`
456
+ - `src/steps/build-test.tsx:56`
457
+ - `src/steps/build-test.tsx:109`
458
+ - `src/steps/product-context.tsx:93`
459
+ - `src/steps/product-context.tsx:103`
460
+ - `src/steps/product-context.tsx:260`
461
+ - On final text fields, the hint intentionally omits `↓ next` (showing only `enter confirm`), but pressing `↓` still completes the step via the shared down-arrow handler. This creates hidden behavior not reflected in the prompt and can trigger accidental completion.
462
+ - Recommendation: gate `key.downArrow` completion behind `!isLast` (and keep `Enter` as the only completion key on last fields), or explicitly document/display `↓` as confirm on last fields.
463
+
464
+ 2. Low - PRD documentation reintroduces stale empty-directory behavior (`Finding #15`, `Status: New`)
465
+ - `docs/PRD.md:29`
466
+ - `src/cli.tsx:11`
467
+ - PRD currently states the CLI "exits" when cwd contains files, but runtime behavior now warns and continues.
468
+ - Recommendation: update PRD wording to match current behavior (warning + continue + Step 6 overwrite confirmation).
469
+
470
+ ### Verification Notes
471
+ - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before this review.
472
+ - `npm run typecheck`: pass.
473
+ - `npm run build`: pass.
474
+ - Reviewed local diffs in `README.md`, `docs/PRD.md`, `docs/USER-STORIES.md`, `src/components/guttered-select.tsx`, `src/steps/build-test.tsx`, `src/steps/powerline.tsx`, `src/steps/product-context.tsx`, and `src/steps/project-info.tsx`.
475
+
476
+ ### Residual Risks / Testing Gaps
477
+ - No interaction test currently asserts last-field key behavior (`↓` vs `Enter`) in Build & Test or Product Context.
478
+ - No docs-consistency check to detect divergence between runtime guard behavior and PRD text.
479
+
480
+ ---
481
+
482
+ ## Entry 2026-02-22
483
+
484
+ ### Entry ID
485
+ - `CR-20260222-006`
486
+
487
+ ### Supersedes
488
+ - `CR-20260222-005`
489
+
490
+ ### Scope
491
+ - Continue review after Tab/Shift+Tab navigation refactor and accompanying docs updates.
492
+ - Validate latest fix-cycle statuses and identify new regressions in current local changes.
493
+
494
+ ### Validation Matrix
495
+ | Finding # | Previous Severity | Current Status | Evidence | Notes |
496
+ |-----------|-------------------|----------------|----------|-------|
497
+ | 14 | Low | Fixed | `CODE-FIXED.md:128`, `src/steps/build-test.tsx:106`, `src/steps/product-context.tsx:253` | Last-field hint behavior is now consistent (`Tab / Enter confirm` shown where completion on Tab is supported). |
498
+ | 15 | Low | Fixed | `CODE-FIXED.md:139`, `docs/PRD.md:29`, `src/cli.tsx:11` | PRD now reflects warn-and-continue behavior for non-empty directories. |
499
+
500
+ ### Findings (ordered by severity)
501
+ 1. Low - `Tab` navigation in Project Info select steps can surface incorrect required-field error and block expected flow (`Finding #16`, `Status: New`)
502
+ - `src/steps/project-info.tsx:55`
503
+ - `src/steps/project-info.tsx:57`
504
+ - `src/steps/project-info.tsx:61`
505
+ - `src/steps/project-info.tsx:153`
506
+ - `src/steps/project-info.tsx:168`
507
+ - Global `Tab` handler applies text-field validation logic to all steps, including `packageManager` and `license` select steps. If no value was already committed, pressing `Tab` can emit "Description is required" in select context and prevent progress, which conflicts with on-screen select hints.
508
+ - Recommendation: scope `Tab` validation branch to text steps only, or provide select-specific `Tab` handling (derive value from active option or disable `Tab next` hints for select steps).
509
+
510
+ 2. Low - `Tab next` on Product Context multi-select phases can silently discard unsubmitted current selection state (`Finding #17`, `Status: New`)
511
+ - `src/steps/product-context.tsx:90`
512
+ - `src/steps/product-context.tsx:92`
513
+ - `src/steps/product-context.tsx:217`
514
+ - `src/steps/product-context.tsx:238`
515
+ - `Tab` handler persists only `answers[currentPhase]`, but multi-select state lives inside `GutteredMultiSelect` until Enter submit. On `techStack`/`coreFeatures`, `Tab next` may advance with empty/stale data (including losing prefilled tech stack) despite hints implying "saves current value".
516
+ - Recommendation: either remove `Tab next` for multi-select phases or plumb a controlled selection state upward so `Tab` can persist the current selection snapshot.
517
+
518
+ ### Verification Notes
519
+ - Procedure compliance: reviewed latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before analysis.
520
+ - `npm run typecheck`: pass.
521
+ - `npm run build`: pass.
522
+ - Reviewed active diffs in `README.md`, `docs/PRD.md`, `docs/USER-STORIES.md`, `src/steps/build-test.tsx`, `src/steps/powerline.tsx`, `src/steps/product-context.tsx`, `src/steps/project-info.tsx`, and `AGENTS.md`.
523
+
524
+ ### Residual Risks / Testing Gaps
525
+ - No interaction test currently verifies `Tab` behavior separately for text inputs versus select/multi-select phases.
526
+ - No regression test covers preservation of prefilled tech-stack values when navigating Product Context with `Tab`.
527
+
528
+ ---
529
+
530
+ ## Entry 2026-02-22
531
+
532
+ ### Entry ID
533
+ - `CR-20260222-007`
534
+
535
+ ### Supersedes
536
+ - `CR-20260222-006`
537
+
538
+ ### Scope
539
+ - New review cycle after `CF-20260222-008` (Tab/Shift+Tab navigation fixes).
540
+ - Re-validate open findings and scan current workspace changes for regressions.
541
+
542
+ ### Validation Matrix
543
+ | Finding # | Previous Severity | Current Status | Evidence | Notes |
544
+ |-----------|-------------------|----------------|----------|-------|
545
+ | 16 | Low | Fixed | `CODE-FIXED.md:236`, `src/steps/project-info.tsx:51`, `src/steps/project-info.tsx:57`, `src/steps/project-info.tsx:156` | Project Info `Tab` handler now excludes select steps, and select hints no longer promise `Tab next`. |
546
+ | 17 | Low | Fixed | `CODE-FIXED.md:241`, `src/steps/product-context.tsx:86`, `src/steps/product-context.tsx:92`, `src/steps/product-context.tsx:224`, `src/steps/product-context.tsx:241` | Product Context `Tab` handler now excludes multi-select phases, and multi-select hints no longer advertise `Tab next`. |
547
+
548
+ ### Findings (ordered by severity)
549
+ - No new functional findings identified in this review cycle.
550
+
551
+ ### Verification Notes
552
+ - Procedure compliance: read latest `CODE-REVIEW.md` and latest `CODE-FIXED.md` before this review.
553
+ - `npm run typecheck`: pass.
554
+ - `npm run build`: pass.
555
+ - Reviewed active diffs in `AGENTS.md`, `README.md`, `docs/PRD.md`, `docs/USER-STORIES.md`, `src/steps/build-test.tsx`, `src/steps/powerline.tsx`, `src/steps/product-context.tsx`, and `src/steps/project-info.tsx`.
556
+
557
+ ### Residual Risks / Testing Gaps
558
+ - No automated interaction tests currently verify keyboard navigation behavior (`Tab`/`Shift+Tab`/`Enter`) across text, select, and multi-select step variants.
package/README.md CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  Interactive CLI wizard that scaffolds new projects with a battle-tested `CLAUDE.md`, PRD, user stories, and optional tooling setup. Inspired by [Skills.sh](https://skills.sh) visual style.
4
4
 
5
- ## Requirements
6
-
7
- Must be run in an **empty directory**. If the directory has existing files, the CLI exits with a helpful message.
5
+ ## Getting Started
8
6
 
9
7
  ```bash
10
8
  mkdir my-project && cd my-project
11
9
  npx @b3awesome/procedure
12
10
  ```
13
11
 
12
+ If the directory already has files, the CLI prints a warning and continues. Existing files that would be overwritten are listed explicitly in Step 6 (Generation) before you confirm.
13
+
14
14
  ## What It Generates
15
15
 
16
16
  | File | Purpose |
@@ -63,6 +63,18 @@ CLAUDE.md, PRD, user stories, and powerline.
63
63
  | `○` (dim) | Pending |
64
64
  | `┌` / `└` | Open/close corners wrapping the full wizard flow |
65
65
 
66
+ ## In-Step Navigation
67
+
68
+ Within any active step, you can navigate between its input fields without restarting the step:
69
+
70
+ | Key | Action |
71
+ |-----|--------|
72
+ | `Tab` | Go to the **next** field (saves current value) |
73
+ | `Shift+Tab` | Go to the **previous** field (restores saved value) |
74
+ | `Enter` | Confirm current field and advance |
75
+
76
+ `↑`/`↓` retain their original role: navigating **options within** a select or multi-select. They are never used for field-to-field navigation.
77
+
66
78
  ## The 7 Wizard Steps
67
79
 
68
80
  ### 1. Project Info
@@ -1,6 +1,6 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState } from "react";
3
- import { Text } from "ink";
2
+ import { useState, useEffect } from "react";
3
+ import { Text, useInput } from "ink";
4
4
  import { TextInput } from "@inkjs/ui";
5
5
  import { GutterLine } from "../components/gutter-line.js";
6
6
  import { C } from "../theme.js";
@@ -15,9 +15,36 @@ export default function BuildTest({ initialValues, onComplete }) {
15
15
  const [fieldIndex, setFieldIndex] = useState(0);
16
16
  const [answers, setAnswers] = useState({});
17
17
  const [error, setError] = useState("");
18
+ const [liveInput, setLiveInput] = useState("");
18
19
  const current = FIELDS[fieldIndex];
19
20
  const preset = initialValues?.[current.key];
20
21
  const defaultVal = preset || current.fallback;
22
+ // Reset live input when navigating to a different field
23
+ useEffect(() => {
24
+ setLiveInput("");
25
+ }, [fieldIndex]);
26
+ useInput((input, key) => {
27
+ if (key.shift && key.tab && fieldIndex > 0) {
28
+ setFieldIndex((f) => f - 1);
29
+ setError("");
30
+ }
31
+ else if (key.tab && !key.shift) {
32
+ const val = liveInput.trim() || answers[current.key] || defaultVal;
33
+ if (current.required && !val.trim()) {
34
+ setError(`${current.label} is required`);
35
+ return;
36
+ }
37
+ setError("");
38
+ const next = { ...answers, [current.key]: val };
39
+ setAnswers(next);
40
+ if (fieldIndex < FIELDS.length - 1) {
41
+ setFieldIndex((f) => f + 1);
42
+ }
43
+ else {
44
+ onComplete(next);
45
+ }
46
+ }
47
+ });
21
48
  function handleSubmit(value) {
22
49
  const val = value.trim() || defaultVal;
23
50
  if (current.required && !val) {
@@ -34,6 +61,8 @@ export default function BuildTest({ initialValues, onComplete }) {
34
61
  onComplete(next);
35
62
  }
36
63
  }
37
- return (_jsxs(_Fragment, { children: [FIELDS.slice(0, fieldIndex).map((f) => (_jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: [f.label, ": ", answers[f.key]] }) }, f.key))), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: current.label }), _jsxs(Text, { color: C.overlay1, children: [" (", defaultVal, ")"] }), _jsx(Text, { bold: true, children: ": " }), _jsx(TextInput, { placeholder: defaultVal, onSubmit: handleSubmit })] }), error && (_jsx(GutterLine, { children: _jsx(Text, { color: C.red, children: error }) }))] }));
64
+ const isFirst = fieldIndex === 0;
65
+ const isLast = fieldIndex === FIELDS.length - 1;
66
+ return (_jsxs(_Fragment, { children: [FIELDS.slice(0, fieldIndex).map((f) => (_jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: [f.label, ": ", answers[f.key]] }) }, f.key))), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: current.label }), _jsxs(Text, { color: C.overlay1, children: [" (", defaultVal, ")"] }), _jsx(Text, { bold: true, children: ": " }), _jsx(TextInput, { placeholder: defaultVal, onChange: setLiveInput, onSubmit: handleSubmit })] }), error && (_jsx(GutterLine, { children: _jsx(Text, { color: C.red, children: error }) })), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: [!isFirst ? "Shift+Tab prev " : "", isLast ? "Tab / Enter confirm" : "Tab next Enter confirm"] }) })] }));
38
67
  }
39
68
  //# sourceMappingURL=build-test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-test.js","sourceRoot":"","sources":["../../src/steps/build-test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-test.js","sourceRoot":"","sources":["../../src/steps/build-test.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
- import { Text } from "ink";
3
+ import { Text, useInput } from "ink";
4
4
  import { ConfirmInput, Spinner } from "@inkjs/ui";
5
5
  import { GutterLine } from "../components/gutter-line.js";
6
6
  import { setupPowerline } from "../lib/powerline.js";
@@ -14,6 +14,14 @@ export default function Powerline({ answers, onComplete }) {
14
14
  const [wantRelease, setWantRelease] = useState(false);
15
15
  const [errorMsg, setErrorMsg] = useState("");
16
16
  const [setupResult, setSetupResult] = useState({});
17
+ useInput((input, key) => {
18
+ if (key.shift && key.tab) {
19
+ if (phase === "ask-git")
20
+ setPhase("ask-powerline");
21
+ else if (phase === "ask-release")
22
+ setPhase("ask-git");
23
+ }
24
+ }, { isActive: phase === "ask-git" || phase === "ask-release" });
17
25
  function runSetup(powerline, git, release) {
18
26
  setPhase("running");
19
27
  try {
@@ -50,12 +58,12 @@ export default function Powerline({ answers, onComplete }) {
50
58
  }
51
59
  // ── Ask: Git ────────────────────────────────────────────────────────────────
52
60
  if (phase === "ask-git") {
53
- return (_jsxs(_Fragment, { children: [wantPowerline && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Powerline: yes" }) })), _jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "Git repository" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Runs git init and makes an initial commit with the generated" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "files \u2014 clean starting point for your project history." }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Initialize git repo? " }), _jsx(ConfirmInput, { onConfirm: () => { setWantGit(true); setPhase("ask-release"); }, onCancel: () => { setWantGit(false); setPhase("ask-release"); } })] })] }));
61
+ return (_jsxs(_Fragment, { children: [wantPowerline && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Powerline: yes" }) })), _jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "Git repository" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Runs git init and makes an initial commit with the generated" }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "files \u2014 clean starting point for your project history." }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Initialize git repo? " }), _jsx(ConfirmInput, { onConfirm: () => { setWantGit(true); setPhase("ask-release"); }, onCancel: () => { setWantGit(false); setPhase("ask-release"); } })] }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Shift+Tab prev y/n answer" }) })] }));
54
62
  }
55
63
  // ── Ask: Release scripts ────────────────────────────────────────────────────
56
64
  if (phase === "ask-release") {
57
65
  const projectName = answers.projectName || "untitled";
58
- return (_jsxs(_Fragment, { children: [wantPowerline && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Powerline: yes" }) })), wantGit && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Git: yes" }) })), _jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "npm release scripts" }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["Creates ~/bin/", projectName, "-release and adds release:patch /"] }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "minor / major scripts to package.json. One command to build," }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "version-bump, push tags, and publish to npm." }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Requires: npm login. Best for packages published to npm." }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Set up release scripts? " }), _jsx(ConfirmInput, { onConfirm: () => { setWantRelease(true); runSetup(wantPowerline, wantGit, true); }, onCancel: () => { setWantRelease(false); runSetup(wantPowerline, wantGit, false); } })] })] }));
66
+ return (_jsxs(_Fragment, { children: [wantPowerline && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Powerline: yes" }) })), wantGit && (_jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Git: yes" }) })), _jsx(GutterLine, { children: _jsx(Text, { bold: true, children: "npm release scripts" }) }), _jsx(GutterLine, { children: _jsxs(Text, { color: C.overlay1, children: ["Creates ~/bin/", projectName, "-release and adds release:patch /"] }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "minor / major scripts to package.json. One command to build," }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "version-bump, push tags, and publish to npm." }) }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Requires: npm login. Best for packages published to npm." }) }), _jsx(GutterLine, { children: _jsx(Text, { children: " " }) }), _jsxs(GutterLine, { children: [_jsx(Text, { bold: true, children: "Set up release scripts? " }), _jsx(ConfirmInput, { onConfirm: () => { setWantRelease(true); runSetup(wantPowerline, wantGit, true); }, onCancel: () => { setWantRelease(false); runSetup(wantPowerline, wantGit, false); } })] }), _jsx(GutterLine, { children: _jsx(Text, { color: C.overlay1, children: "Shift+Tab prev y/n answer" }) })] }));
59
67
  }
60
68
  // ── Running ─────────────────────────────────────────────────────────────────
61
69
  if (phase === "running") {
@@ -1 +1 @@
1
- {"version":3,"file":"powerline.js","sourceRoot":"","sources":["../../src/steps/powerline.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"powerline.js","sourceRoot":"","sources":["../../src/steps/powerline.tsx"],"names":[],"mappings":"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"}