create-quiver 0.14.0 → 0.15.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.
- package/CHANGELOG.md +27 -0
- package/README.md +187 -518
- package/README_FOR_AI.md +39 -27
- package/ROADMAP.md +11 -0
- package/assets/quiver-wordmark.svg +22 -0
- package/docs/AI_CONTEXT.md.template +2 -0
- package/docs/AI_ONBOARDING_PROMPT.md.template +9 -1
- package/docs/CLI_UX_GUIDE.md +185 -0
- package/docs/COMMANDS.md.template +22 -3
- package/docs/GITFLOW_PR_GUIDE.md +70 -0
- package/docs/getting-started/linux.md +84 -0
- package/docs/getting-started/macos.md +85 -0
- package/docs/getting-started/windows-git-bash-wsl.md +78 -0
- package/docs/getting-started/windows-powershell.md +96 -0
- package/docs/reference/commands.md +98 -0
- package/docs/workflows/existing-project.md +131 -0
- package/docs/workflows/full-ai-spec-to-pr.md +311 -0
- package/docs/workflows/legacy-quiver-project.md +102 -0
- package/docs/workflows/new-project.md +76 -0
- package/package.json +5 -1
- package/specs/quiver-v29-planner-prepare-context-cli-ux/EVIDENCE_REPORT.md +163 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/EXECUTION_PLAN.md +72 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/SPEC.md +173 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/STATUS.md +34 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/pr.md +95 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-00-cli-ux-spec-foundation/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-00-cli-ux-spec-foundation/EXECUTION_BRIEF.md +45 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-00-cli-ux-spec-foundation/slice.json +58 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-01-cli-ux-primitives-theme/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-01-cli-ux-primitives-theme/EXECUTION_BRIEF.md +49 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-01-cli-ux-primitives-theme/slice.json +75 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-02-planner-context-proposal-contract/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-02-planner-context-proposal-contract/EXECUTION_BRIEF.md +47 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-02-planner-context-proposal-contract/slice.json +71 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-03-prepare-context-planner-review-flow/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-03-prepare-context-planner-review-flow/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-03-prepare-context-planner-review-flow/slice.json +82 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-04-ux-flag-matrix-compatibility/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-04-ux-flag-matrix-compatibility/EXECUTION_BRIEF.md +46 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-04-ux-flag-matrix-compatibility/slice.json +73 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-05-progressive-command-adoption/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-05-progressive-command-adoption/EXECUTION_BRIEF.md +46 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-05-progressive-command-adoption/slice.json +83 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-06-docs-tests-smoke-readiness/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-06-docs-tests-smoke-readiness/EXECUTION_BRIEF.md +50 -0
- package/specs/quiver-v29-planner-prepare-context-cli-ux/slices/slice-06-docs-tests-smoke-readiness/slice.json +95 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/EVIDENCE_REPORT.md +213 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/EXECUTION_PLAN.md +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/SPEC.md +213 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/STATUS.md +31 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/pr.md +103 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/slice.json +71 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/slice.json +69 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/slice.json +81 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/slice.json +75 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/slice.json +81 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/EXECUTION_BRIEF.md +59 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/slice.json +95 -0
- package/src/create-quiver/commands/ai.js +809 -71
- package/src/create-quiver/commands/spec.js +167 -5
- package/src/create-quiver/index.js +582 -71
- package/src/create-quiver/lib/agent-profiles.js +111 -10
- package/src/create-quiver/lib/ai/context-proposal.js +389 -0
- package/src/create-quiver/lib/ai/context-proposal.schema.js +31 -0
- package/src/create-quiver/lib/ai/execution-plan.js +106 -8
- package/src/create-quiver/lib/ai/executor.js +284 -28
- package/src/create-quiver/lib/ai/providers.js +71 -1
- package/src/create-quiver/lib/cli/editor.js +118 -0
- package/src/create-quiver/lib/cli/selectors.js +107 -0
- package/src/create-quiver/lib/cli/theme.js +103 -0
- package/src/create-quiver/lib/cli/ux-flags.js +169 -0
- package/src/create-quiver/lib/cli/ux.js +225 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Quiver v30 - Interactive CLI UX and Agent Selection
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-05-26
|
|
4
|
+
**Status:** Planned
|
|
5
|
+
**Source:** User-approved production review for visible progress, Quiver colors, agent/model selectors, and consistent human/machine CLI output.
|
|
6
|
+
|
|
7
|
+
Slice numbering resets here. This spec intentionally starts at `slice-00`.
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
|
|
11
|
+
Quiver has the first version of CLI UX primitives and planner-assisted `ai prepare-context`, but real dogfooding showed a critical UX gap: long-running IA commands can look frozen. `ai prepare-context --with-planner` starts provider execution without a visible loader, without Quiver-branded progress, and without a clear "this can take time" state.
|
|
12
|
+
|
|
13
|
+
The issue is broader than one command. Quiver needs a production-grade CLI UX contract for commands that run Planners, Executors, Reviewers, Doctors, specs, slices, PRs, and diagnostics. The CLI must feel guided for humans while staying safe for automation.
|
|
14
|
+
|
|
15
|
+
## Objective
|
|
16
|
+
|
|
17
|
+
Implement a consistent, production-safe CLI UX layer for Quiver:
|
|
18
|
+
|
|
19
|
+
- show real progress for long-running IA commands;
|
|
20
|
+
- use Quiver colors and hierarchy in human TTY output;
|
|
21
|
+
- let users choose configured Planner, Executor, Reviewer, Doctor, spec, slice, methodology, and execution mode through interactive selectors;
|
|
22
|
+
- always provide equivalent non-interactive flags;
|
|
23
|
+
- show selected agent display names such as `GPT 5.5`, not only provider names such as `codex`;
|
|
24
|
+
- keep `--json`, CI, no-TTY, `NO_COLOR`, and Windows-safe output clean;
|
|
25
|
+
- harden provider model selection so the selected model impacts the real provider invocation or blocks with an actionable error.
|
|
26
|
+
|
|
27
|
+
## Scope
|
|
28
|
+
|
|
29
|
+
### Included
|
|
30
|
+
|
|
31
|
+
- Central CLI UX runtime for headings, sections, checks, warnings, errors, next steps, summaries, spinners, task groups, and fallbacks.
|
|
32
|
+
- Quiver palette usage for human output: `#86C8F2`, `#6BADEB`, `#7F9EE8`, `#9B82E6`, `#D56AB0`.
|
|
33
|
+
- Multiple named IA profiles per role: Planner, Executor, Reviewer, Doctor.
|
|
34
|
+
- Interactive selectors for IA profiles, specs, slices, methodology, execution mode, review mode, verbosity, and execution strategy where appropriate.
|
|
35
|
+
- Equivalent non-interactive flags for every selector.
|
|
36
|
+
- Provider adapter contract for model selection support.
|
|
37
|
+
- Visible progress stages for IA commands and diagnostics.
|
|
38
|
+
- Doctor human output in a clear `Checks` / `Suggested fixes` format and stable JSON output.
|
|
39
|
+
- Signal, cancellation, timeout, error, and child-process cleanup behavior for long-running tasks.
|
|
40
|
+
- Tests, docs, generated templates, and package-readiness evidence.
|
|
41
|
+
|
|
42
|
+
### Excluded
|
|
43
|
+
|
|
44
|
+
- Replacing the CLI parser with `commander`, `oclif`, or `yargs`.
|
|
45
|
+
- Adding a TUI with `ink`, `blessed`, or `neo-blessed`.
|
|
46
|
+
- Adding image protocols or terminal graphics.
|
|
47
|
+
- Adding new IA providers beyond the existing provider contract.
|
|
48
|
+
- Storing provider credentials or API keys.
|
|
49
|
+
- Making interactive prompts mandatory.
|
|
50
|
+
- Changing WDD + SDD semantics.
|
|
51
|
+
|
|
52
|
+
## Approved Acceptance Criteria
|
|
53
|
+
|
|
54
|
+
### Long-running IA UX
|
|
55
|
+
|
|
56
|
+
1. Given a project with Quiver initialized, when `npx create-quiver ai prepare-context --with-planner` runs in a human TTY, then Quiver shows an initial heading, selected Planner display name, visible progress, and a spinner while the provider is running.
|
|
57
|
+
2. Given any IA command can take several seconds or minutes, when provider execution starts, then Quiver shows that it may take time and does not appear frozen.
|
|
58
|
+
3. Given a provider fails, times out, or is canceled, when Quiver exits, then the spinner is stopped, provider output is summarized safely, and no partial success state is shown.
|
|
59
|
+
4. Given `$EDITOR` or `$VISUAL` opens during a review flow, then any active spinner is stopped before opening the editor.
|
|
60
|
+
5. Given `SIGINT` or `SIGTERM`, then Quiver stops spinners, terminates provider child processes, cleans temporary prompt files, and persists a canceled/failed run state when applicable.
|
|
61
|
+
|
|
62
|
+
### Quiver visual identity
|
|
63
|
+
|
|
64
|
+
6. Given human TTY output with color support, when Quiver prints headings, states, checks, warnings, errors, badges, loaders, or highlighted sections, then output uses centralized Quiver theme helpers and the approved palette.
|
|
65
|
+
7. Given `--json`, `NO_COLOR=1`, `CI=true`, `TERM=dumb`, no-TTY, or `--ascii`, then Quiver emits clean, readable output without ANSI, spinners, decorative symbols, or prompts.
|
|
66
|
+
8. Given a command outputs human text, then it uses a consistent hierarchy: title, checks/progress, results, warnings/risks, suggested fixes, and next commands.
|
|
67
|
+
|
|
68
|
+
### Agent/profile selection
|
|
69
|
+
|
|
70
|
+
9. Given a command requires a Planner and multiple configured Planner profiles exist, when `--interactive` is used, then Quiver shows a selector populated only from configured profiles.
|
|
71
|
+
10. Given a Planner profile has `displayName: "GPT 5.5"`, when the command starts, then the heading says `Ejecutando <accion> con GPT 5.5` instead of `con Codex`, unless no more specific display name exists.
|
|
72
|
+
11. Given a command requires an Executor, Reviewer, or Doctor, when multiple profiles exist and `--interactive` is used, then Quiver shows the corresponding role-specific selector.
|
|
73
|
+
12. Given a command runs in CI, no-TTY, or `--json`, when a profile choice is required, then Quiver uses a configured default or fails with an actionable message showing the required flag.
|
|
74
|
+
13. Given a selector exists, then an equivalent non-interactive flag exists: `--planner`, `--executor`, `--reviewer`, `--doctor`, `--spec`, `--slice`, `--methodology`, and command-specific mode flags.
|
|
75
|
+
14. Given no profiles exist for a required role, then Quiver explains how to configure one with `ai agent set` and does not continue in live mode.
|
|
76
|
+
|
|
77
|
+
### Provider/model correctness
|
|
78
|
+
|
|
79
|
+
15. Given a profile selects a model, when the provider adapter supports model selection, then the real provider invocation receives the correct model argument or equivalent supported option.
|
|
80
|
+
16. Given a profile selects a model but the provider adapter does not support model selection, then live execution blocks with a clear message unless an explicit override is provided.
|
|
81
|
+
17. Given Quiver shows a model or profile as selected, then that value must either impact provider execution or be explicitly described as display-only.
|
|
82
|
+
|
|
83
|
+
### Specs, slices, methodology, and execution choices
|
|
84
|
+
|
|
85
|
+
18. Given multiple specs exist, when a command needs a spec and `--interactive` is used, then Quiver shows a spec selector using unique internal values and labels that include useful state.
|
|
86
|
+
19. Given multiple slices exist under a selected spec, when a command needs a slice and `--interactive` is used, then Quiver shows slice state, dependencies, and next-ready recommendation.
|
|
87
|
+
20. Given slice dependencies are incomplete, then Quiver does not silently select a blocked slice as the next executable slice.
|
|
88
|
+
21. Given methodology is requested, then Quiver shows only supported methodology options. For now, `WDD + SDD` is the only real option.
|
|
89
|
+
22. Given an action can write files, execute providers, create commits, or open PRs, then interactive mode shows a summary and confirmation before the sensitive action.
|
|
90
|
+
|
|
91
|
+
### Command adoption
|
|
92
|
+
|
|
93
|
+
23. Given `ai onboard` runs in human TTY mode, then it shows a heading with the selected Planner display name and real stages such as reading docs, detecting structure, preparing prompt, and executing agent.
|
|
94
|
+
24. Given `ai prepare-context --with-planner` runs, then it shows real stages for structure analysis, docs detection, prompt preparation, provider execution, proposal validation, and docs-only write planning.
|
|
95
|
+
25. Given `ai plan`, `ai review-plan`, `ai execute-slice`, `ai execute-plan`, and `ai pr` run, then each command uses command-specific real stages and never marks fake work as completed.
|
|
96
|
+
26. Given `doctor` runs in human mode, then output follows the `Quiver Doctor` structure with `Checks` and `Suggested fixes`.
|
|
97
|
+
27. Given `doctor --json` runs, then it emits a stable parseable schema with the same underlying findings as human output.
|
|
98
|
+
|
|
99
|
+
### Automation and compatibility
|
|
100
|
+
|
|
101
|
+
28. Given a command has a selector in human mode, when the same command runs with flags in automation, then it must be fully scriptable without prompts.
|
|
102
|
+
29. Given output is redirected or run in no-TTY mode, then the user still sees plain progress lines for long work unless `--json` is requested.
|
|
103
|
+
30. Given a command runs on Windows PowerShell, Git Bash, WSL, macOS, or Linux, then path examples, ASCII fallback, no-color behavior, and no-TTY behavior are documented and tested where possible.
|
|
104
|
+
31. Given package publication, then `npx create-quiver@latest` exposes the same UX behavior after release.
|
|
105
|
+
|
|
106
|
+
### Documentation and tests
|
|
107
|
+
|
|
108
|
+
32. Given the UX standard changes, then `docs/CLI_UX_GUIDE.md`, README, command reference, generated templates, and `README_FOR_AI.md` document the standard and examples.
|
|
109
|
+
33. Given the implementation is complete, then tests cover human output, machine output, no-color, CI, no-TTY, selector defaults, missing defaults, provider model support, provider failure, cancellation, doctor JSON, and package smoke.
|
|
110
|
+
34. Given this spec is executed, then slice-00 lands first and every later slice has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
111
|
+
|
|
112
|
+
## Approved Technical Plan
|
|
113
|
+
|
|
114
|
+
1. Extend the existing CLI UX layer instead of replacing the parser.
|
|
115
|
+
2. Create a central human-output API for headings, sections, checks, warnings, errors, next steps, summaries, spinners, and task groups.
|
|
116
|
+
3. Add a progress runner that declares real stages per command and prevents fake completed checks.
|
|
117
|
+
4. Add multiple named IA profiles per role while keeping existing single-profile behavior backward compatible.
|
|
118
|
+
5. Add display-name resolution order: `displayName`, `model`, `provider`, then role.
|
|
119
|
+
6. Add interactive selectors only behind `--interactive`.
|
|
120
|
+
7. Add equivalent non-interactive flags for every selector.
|
|
121
|
+
8. Add provider adapter metadata for model selection support and invocation mapping.
|
|
122
|
+
9. Block or require explicit override when a chosen model cannot impact live provider execution.
|
|
123
|
+
10. Add signal, timeout, cancellation, spinner cleanup, temporary file cleanup, and run-state persistence for long-running IA flows.
|
|
124
|
+
11. Apply the standard first to `ai prepare-context --with-planner`, `ai onboard`, `ai plan`, and `doctor`.
|
|
125
|
+
12. Extend the standard to `ai review-plan`, `ai execute-slice`, `ai execute-plan`, `ai pr`, `init --interactive`, and `spec create --interactive`.
|
|
126
|
+
13. Preserve clean output in `--json`, CI, no-TTY, `NO_COLOR`, `TERM=dumb`, and ASCII modes.
|
|
127
|
+
14. Add tests and smoke coverage before package publication.
|
|
128
|
+
|
|
129
|
+
## UX Examples
|
|
130
|
+
|
|
131
|
+
### IA flow with selected Planner
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
◇ Ejecutando onboarding con GPT 5.5
|
|
135
|
+
|
|
136
|
+
✓ Leyendo docs base
|
|
137
|
+
✓ Detectando estructura
|
|
138
|
+
✓ Preparando prompt
|
|
139
|
+
⠋ Ejecutando agente...
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Doctor
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
◆ Quiver Doctor
|
|
146
|
+
|
|
147
|
+
Checks
|
|
148
|
+
✓ README encontrado
|
|
149
|
+
✓ AI_ONBOARDING_PROMPT.md encontrado
|
|
150
|
+
✓ Carpeta specs encontrada
|
|
151
|
+
! Falta docs/WORKFLOW.md
|
|
152
|
+
! Hay 2 slices sin CLOSURE_BRIEF.md
|
|
153
|
+
|
|
154
|
+
Suggested fixes
|
|
155
|
+
npx create-quiver ai prepare-context --dry-run
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Planner selector
|
|
159
|
+
|
|
160
|
+
```text
|
|
161
|
+
? Que Planner queres usar?
|
|
162
|
+
◉ GPT 5.5
|
|
163
|
+
○ OPUS 4.7
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Slice Roadmap
|
|
167
|
+
|
|
168
|
+
| Slice | Title | Status | Dependencies |
|
|
169
|
+
|---|---|---|---|
|
|
170
|
+
| slice-00 | Spec foundation and source-of-truth sync | planned | none |
|
|
171
|
+
| slice-01 | CLI UX runtime and progress engine | planned | slice-00 |
|
|
172
|
+
| slice-02 | Agent profile selection and selectors | planned | slice-01 |
|
|
173
|
+
| slice-03 | Provider model selection contract | planned | slice-02 |
|
|
174
|
+
| slice-04 | Planner IA progress flows | planned | slice-01, slice-02, slice-03 |
|
|
175
|
+
| slice-05 | Executor, execution-plan, and PR progress flows | planned | slice-01, slice-02, slice-03 |
|
|
176
|
+
| slice-06 | Doctor visual and JSON contract | planned | slice-01 |
|
|
177
|
+
| slice-07 | Interactive init and spec create flows | planned | slice-01, slice-02 |
|
|
178
|
+
| slice-08 | Tests, docs, cross-platform smokes, and release readiness | planned | slice-04, slice-05, slice-06, slice-07 |
|
|
179
|
+
|
|
180
|
+
## Validation Strategy
|
|
181
|
+
|
|
182
|
+
- `node --test tests/**/*.test.js`
|
|
183
|
+
- focused tests for CLI UX runtime, theme, progress runner, selectors, and profile display names
|
|
184
|
+
- focused tests for provider model invocation and unsupported model blocking
|
|
185
|
+
- focused tests for `ai onboard`, `ai prepare-context`, `ai plan`, `ai review-plan`, `ai execute-slice`, `ai execute-plan`, `ai pr`, and `doctor`
|
|
186
|
+
- focused tests for `--json`, CI, no-TTY, `NO_COLOR`, `TERM=dumb`, and `--ascii`
|
|
187
|
+
- signal/cancellation tests where feasible through injected process runners
|
|
188
|
+
- `npm run smoke:create-quiver`
|
|
189
|
+
- `npm run smoke:doctor-fixtures`
|
|
190
|
+
- `npm run smoke:guided-workflow`
|
|
191
|
+
- `npm run package:quiver`
|
|
192
|
+
- `npm pack --dry-run`
|
|
193
|
+
- `git diff --check`
|
|
194
|
+
- JSON parse validation for all `slice.json` files
|
|
195
|
+
- `npx create-quiver spec validate specs/quiver-v30-interactive-cli-ux-agent-selection`
|
|
196
|
+
|
|
197
|
+
## Risks
|
|
198
|
+
|
|
199
|
+
- UX improvements can break automation if spinners, colors, or prompts leak into machine output.
|
|
200
|
+
- Model labels can become misleading if provider adapters do not pass models to real commands.
|
|
201
|
+
- Interactive selectors can block CI unless opt-in and backed by non-interactive flags.
|
|
202
|
+
- Signal cleanup is cross-platform and must avoid leaving child processes, locks, or temp files.
|
|
203
|
+
- Doctor visual polish must not diverge from JSON diagnostics.
|
|
204
|
+
- Windows terminals may need ASCII/no-color fallbacks for symbols and spinners.
|
|
205
|
+
|
|
206
|
+
## Resolved Decisions
|
|
207
|
+
|
|
208
|
+
- `--interactive` is required for selectors.
|
|
209
|
+
- Every selector must have a non-interactive flag equivalent.
|
|
210
|
+
- The selected agent/model display name is shown in headings.
|
|
211
|
+
- Provider names are fallback labels only.
|
|
212
|
+
- `WDD + SDD` is the only methodology option until another methodology is actually supported.
|
|
213
|
+
- Do not add `ink`, `blessed`, `neo-blessed`, `oclif`, `commander`, or `yargs` in this spec.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Status - Quiver v30 Interactive CLI UX and Agent Selection
|
|
2
|
+
|
|
3
|
+
**Overall status:** Release-ready
|
|
4
|
+
**Created:** 2026-05-26
|
|
5
|
+
**Current slice:** slice-08 completed; ready for PR/release publication
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
This spec hardens Quiver's CLI UX after dogfooding showed that long-running IA commands can look frozen and that selector/model behavior needs a production-grade contract. The work adds visible progress, Quiver colors, role-specific agent selectors, non-interactive fallbacks, model invocation correctness, doctor output, interactive init/spec creation, and cross-platform release readiness.
|
|
10
|
+
|
|
11
|
+
## Slice Status
|
|
12
|
+
|
|
13
|
+
| Slice | Status | Notes |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| slice-00-spec-foundation | Completed | Documentation package created, source-of-truth docs synchronized, validation passed. |
|
|
16
|
+
| slice-01-cli-ux-runtime-progress-engine | Completed | Shared output/runtime/progress primitives added and tested. |
|
|
17
|
+
| slice-02-agent-profile-selection-selectors | Completed | Multiple named role profiles and reusable selectors added. |
|
|
18
|
+
| slice-03-provider-model-selection-contract | Completed | Provider model support, profile model propagation, dry-run visibility, and live blocking contract added. |
|
|
19
|
+
| slice-04-planner-ia-progress-flows | Completed | Planner/reviewer live IA flows now show TTY progress with selected profile names and clean failure cleanup. |
|
|
20
|
+
| slice-05-executor-pr-progress-flows | Completed | Executor/execute-plan/PR progress, executor selector, ready-slice selector, and executor model propagation added. |
|
|
21
|
+
| slice-06-doctor-visual-json-contract | Completed | Doctor now renders `Quiver Doctor`/`Checks`/`Suggested fixes` from a shared JSON-compatible diagnostics model. |
|
|
22
|
+
| slice-07-interactive-init-spec-create | Completed | `init --interactive` and `spec create --interactive` now use guarded selectors, methodology `wdd-sdd`, and summaries before writes. |
|
|
23
|
+
| slice-08-tests-docs-cross-platform-release | Completed | Full tests, smokes, package dry-run, docs, evidence, and release readiness completed. |
|
|
24
|
+
|
|
25
|
+
## Current Blockers
|
|
26
|
+
|
|
27
|
+
- None.
|
|
28
|
+
|
|
29
|
+
## Next Step
|
|
30
|
+
|
|
31
|
+
Open the PR if requested, then publish the package only after explicit human release approval.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
## Title
|
|
2
|
+
|
|
3
|
+
Quiver v30: interactive CLI UX, progress, and agent selection
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
- Adds production-grade CLI UX for long-running IA commands.
|
|
8
|
+
- Shows visible progress, Quiver colors, selected agent display names, and safe fallback output.
|
|
9
|
+
- Adds interactive selectors for Planner, Executor, Reviewer, Doctor, specs, slices, methodology, and execution modes.
|
|
10
|
+
- Hardens provider model selection so selected models affect real invocations or block safely.
|
|
11
|
+
- Keeps `--json`, CI, no-TTY, no-color, and Windows-safe output clean.
|
|
12
|
+
|
|
13
|
+
## Scope
|
|
14
|
+
|
|
15
|
+
- CLI UX runtime and progress lifecycle.
|
|
16
|
+
- Multiple named IA profiles and selectors.
|
|
17
|
+
- Provider model support contract.
|
|
18
|
+
- Planner, executor, PR, doctor, init, and spec-create command adoption.
|
|
19
|
+
- Tests, docs, generated templates, smokes, and package readiness.
|
|
20
|
+
|
|
21
|
+
## Files
|
|
22
|
+
|
|
23
|
+
Expected areas:
|
|
24
|
+
|
|
25
|
+
- `src/create-quiver/lib/cli/**`
|
|
26
|
+
- `src/create-quiver/lib/agent-profiles.js`
|
|
27
|
+
- `src/create-quiver/lib/ai/**`
|
|
28
|
+
- `src/create-quiver/commands/ai.js`
|
|
29
|
+
- `src/create-quiver/commands/spec.js`
|
|
30
|
+
- `src/create-quiver/lib/doctor.js`
|
|
31
|
+
- `src/create-quiver/index.js`
|
|
32
|
+
- `docs/**`
|
|
33
|
+
- `README.md`
|
|
34
|
+
- `README_FOR_AI.md`
|
|
35
|
+
- `ROADMAP.md`
|
|
36
|
+
- `CHANGELOG.md`
|
|
37
|
+
- `tests/**`
|
|
38
|
+
- `scripts/ci/**`
|
|
39
|
+
- `package.json`
|
|
40
|
+
- `package-lock.json`
|
|
41
|
+
- `specs/quiver-v30-interactive-cli-ux-agent-selection/**`
|
|
42
|
+
|
|
43
|
+
## How to Test (DETAILED - REQUIRED)
|
|
44
|
+
|
|
45
|
+
### Required Environment
|
|
46
|
+
|
|
47
|
+
- Node.js and npm.
|
|
48
|
+
- Git.
|
|
49
|
+
- Optional provider CLIs for manual live IA smoke tests.
|
|
50
|
+
- `gh` only for PR flow validation.
|
|
51
|
+
|
|
52
|
+
### Worktree Access
|
|
53
|
+
|
|
54
|
+
- One dedicated worktree/branch for `quiver-v30-interactive-cli-ux-agent-selection`.
|
|
55
|
+
- One commit per slice.
|
|
56
|
+
|
|
57
|
+
### Run the Project
|
|
58
|
+
|
|
59
|
+
This is a CLI framework change. Run command-level tests and smoke commands from the Quiver repo root.
|
|
60
|
+
|
|
61
|
+
### Use Cases
|
|
62
|
+
|
|
63
|
+
- Run `ai prepare-context --with-planner` and verify visible progress.
|
|
64
|
+
- Run IA commands with configured profile display names and verify headings use the selected profile/model.
|
|
65
|
+
- Run selectors with `--interactive`.
|
|
66
|
+
- Run equivalent non-interactive flags in no-TTY/CI mode.
|
|
67
|
+
- Run doctor in human mode and `--json`.
|
|
68
|
+
- Run provider failure/cancellation tests.
|
|
69
|
+
- Confirm `NO_COLOR`, `TERM=dumb`, `--ascii`, and `--json` stay clean.
|
|
70
|
+
|
|
71
|
+
### Technical Verification
|
|
72
|
+
|
|
73
|
+
- `node --test tests/**/*.test.js`
|
|
74
|
+
- `npm run smoke:create-quiver`
|
|
75
|
+
- `npm run smoke:doctor-fixtures`
|
|
76
|
+
- `npm run smoke:guided-workflow`
|
|
77
|
+
- `npm run package:quiver`
|
|
78
|
+
- `npm pack --dry-run`
|
|
79
|
+
- `git diff --check`
|
|
80
|
+
- `npx create-quiver spec validate specs/quiver-v30-interactive-cli-ux-agent-selection`
|
|
81
|
+
|
|
82
|
+
## Evidence
|
|
83
|
+
|
|
84
|
+
- `node --test tests/**/*.test.js` passed: 449 tests.
|
|
85
|
+
- `npm run smoke:create-quiver` passed.
|
|
86
|
+
- `npm run smoke:doctor-fixtures` passed.
|
|
87
|
+
- `npm run smoke:guided-workflow` passed.
|
|
88
|
+
- `npm run package:quiver` passed.
|
|
89
|
+
- `npm pack --dry-run` passed.
|
|
90
|
+
- `git diff --check` passed.
|
|
91
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v30-interactive-cli-ux-agent-selection` passed.
|
|
92
|
+
|
|
93
|
+
## Rollback
|
|
94
|
+
|
|
95
|
+
Revert slice commits in reverse order. The existing deterministic and planner-assisted flows must remain usable during rollback.
|
|
96
|
+
|
|
97
|
+
## Risks / Notes
|
|
98
|
+
|
|
99
|
+
- Spinners and colors must not leak into machine-readable output.
|
|
100
|
+
- Displayed model names must reflect real provider invocation semantics.
|
|
101
|
+
- Interactive selectors must remain opt-in and script-safe.
|
|
102
|
+
- Live provider smoke tests depend on installed/authenticated local provider CLIs and should be dogfooded before announcing a release broadly.
|
|
103
|
+
- This PR prepares the package for release but does not publish to npm.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-00 Spec foundation and source-of-truth sync
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Created the v30 planning package for interactive CLI UX, visible IA progress, agent/model selectors, provider model correctness, Doctor output, and cross-platform release readiness.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- [x] Spec folder created.
|
|
10
|
+
- [x] Every slice has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
11
|
+
- [x] Source-of-truth docs synchronized.
|
|
12
|
+
- [x] JSON validation captured.
|
|
13
|
+
- [x] `git diff --check` captured.
|
|
14
|
+
- [x] No product code modified.
|
|
15
|
+
|
|
16
|
+
## Relevant Changes
|
|
17
|
+
|
|
18
|
+
- New folder: `specs/quiver-v30-interactive-cli-ux-agent-selection/`.
|
|
19
|
+
- Updated `README_FOR_AI.md` to mark v29 shipped in `create-quiver@0.14.1` and v30 planned.
|
|
20
|
+
- Updated `ROADMAP.md` with v0.14.1 shipped and v0.15/v30 planned.
|
|
21
|
+
- Updated `CHANGELOG.md` to move v29 into `0.14.1` and add v30 under Unreleased.
|
|
22
|
+
|
|
23
|
+
## Pending
|
|
24
|
+
|
|
25
|
+
- Execute implementation slices from `slice-01` onward.
|
|
26
|
+
|
|
27
|
+
## Remaining Risks
|
|
28
|
+
|
|
29
|
+
- Cross-platform behavior and live provider behavior remain unimplemented until later slices.
|
|
30
|
+
|
|
31
|
+
## Future Recommendations
|
|
32
|
+
|
|
33
|
+
Follow `EXECUTION_PLAN.md` and keep one commit per slice.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-00 Spec foundation and source-of-truth sync
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
The user approved the production-reviewed plan for Quiver v30. This slice creates the documentary foundation before any product code changes.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Create the full v30 spec package and synchronize source-of-truth docs so future agents know v29 shipped in `create-quiver@0.14.1` and v30 is planned work.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Create `SPEC.md`, `STATUS.md`, `EVIDENCE_REPORT.md`, `EXECUTION_PLAN.md`, and `pr.md`.
|
|
14
|
+
- Create every planned slice with `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
15
|
+
- Update `README_FOR_AI.md`, `ROADMAP.md`, and `CHANGELOG.md` only for release/status synchronization.
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- Spec folder exists under `specs/quiver-v30-interactive-cli-ux-agent-selection`.
|
|
20
|
+
- Every slice has the required three handoff files.
|
|
21
|
+
- Every `slice.json` parses.
|
|
22
|
+
- Source-of-truth docs no longer claim v29 is pending publication.
|
|
23
|
+
- No product code changes are made.
|
|
24
|
+
|
|
25
|
+
## Plan tecnico resumido
|
|
26
|
+
|
|
27
|
+
Create the documentation package and validation evidence. Do not implement runtime behavior in this slice.
|
|
28
|
+
|
|
29
|
+
## Suggested Steps
|
|
30
|
+
|
|
31
|
+
1. Create v30 spec directory and top-level files.
|
|
32
|
+
2. Create all slice directories and handoffs.
|
|
33
|
+
3. Update source-of-truth release/planning docs.
|
|
34
|
+
4. Run JSON parse validation.
|
|
35
|
+
5. Run `git diff --check`.
|
|
36
|
+
6. Run `spec validate` if the current CLI supports the new package.
|
|
37
|
+
|
|
38
|
+
## Restrictions
|
|
39
|
+
|
|
40
|
+
- Do not modify source code.
|
|
41
|
+
- Do not update dependencies.
|
|
42
|
+
- Do not publish npm.
|
|
43
|
+
- Do not open a PR from this slice alone unless requested.
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
|
|
47
|
+
- Source-of-truth docs can drift if v29 release status is not corrected.
|
|
48
|
+
- Over-documenting implementation details can constrain later slices unnecessarily.
|
|
49
|
+
|
|
50
|
+
## Completion Checklist
|
|
51
|
+
|
|
52
|
+
- [ ] Spec files created.
|
|
53
|
+
- [ ] Every slice handoff exists.
|
|
54
|
+
- [ ] JSON parse validation passes.
|
|
55
|
+
- [ ] `git diff --check` passes.
|
|
56
|
+
- [ ] No product code modified.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-00-spec-foundation",
|
|
3
|
+
"ticket": "QUIVER-30-00",
|
|
4
|
+
"type": "docs",
|
|
5
|
+
"title": "Spec foundation and source-of-truth sync",
|
|
6
|
+
"objective": "Create the v30 documentation package and synchronize source-of-truth planning docs before implementation starts.",
|
|
7
|
+
"description": "Publishes the approved spec, execution plan, PR body, status, evidence report, slice definitions, and handoffs. It also records that v29 shipped in 0.14.1 and v30 is planned work.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v30-interactive-cli-ux-spec-foundation",
|
|
12
|
+
"branch_name": "feature/QUIVER-30-00-v30-interactive-cli-ux-spec-foundation"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"README_FOR_AI.md",
|
|
16
|
+
"ROADMAP.md",
|
|
17
|
+
"CHANGELOG.md",
|
|
18
|
+
"specs/quiver-v30-interactive-cli-ux-agent-selection/**"
|
|
19
|
+
],
|
|
20
|
+
"expected_read_paths": [
|
|
21
|
+
"README_FOR_AI.md",
|
|
22
|
+
"ROADMAP.md",
|
|
23
|
+
"BACKLOG.md",
|
|
24
|
+
"docs/CLI_UX_GUIDE.md",
|
|
25
|
+
"specs/quiver-v29-planner-prepare-context-cli-ux/**"
|
|
26
|
+
],
|
|
27
|
+
"allowed_write_paths": [
|
|
28
|
+
"README_FOR_AI.md",
|
|
29
|
+
"ROADMAP.md",
|
|
30
|
+
"CHANGELOG.md",
|
|
31
|
+
"specs/quiver-v30-interactive-cli-ux-agent-selection/**"
|
|
32
|
+
],
|
|
33
|
+
"depends_on": [],
|
|
34
|
+
"parallel_safe": "no",
|
|
35
|
+
"parallel_safe_reason": "slice-00 must land before every implementation slice.",
|
|
36
|
+
"must": [
|
|
37
|
+
"Create SPEC.md, STATUS.md, EVIDENCE_REPORT.md, EXECUTION_PLAN.md, and pr.md.",
|
|
38
|
+
"Create slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md for every slice.",
|
|
39
|
+
"Record v29 as shipped in 0.14.1 where source-of-truth docs were stale.",
|
|
40
|
+
"Record v30 as planned work only.",
|
|
41
|
+
"Avoid product code changes."
|
|
42
|
+
],
|
|
43
|
+
"not_included": [
|
|
44
|
+
"Implementing CLI UX runtime.",
|
|
45
|
+
"Changing provider execution.",
|
|
46
|
+
"Changing command behavior.",
|
|
47
|
+
"Publishing a package."
|
|
48
|
+
],
|
|
49
|
+
"acceptance": [
|
|
50
|
+
"Spec folder exists under specs/quiver-v30-interactive-cli-ux-agent-selection.",
|
|
51
|
+
"Mandatory slice-00 exists.",
|
|
52
|
+
"Every slice has slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md.",
|
|
53
|
+
"Every slice.json parses successfully.",
|
|
54
|
+
"README_FOR_AI.md, ROADMAP.md, and CHANGELOG.md do not claim stale v29 publication status.",
|
|
55
|
+
"No product code is modified."
|
|
56
|
+
],
|
|
57
|
+
"tests": [
|
|
58
|
+
"git diff --check",
|
|
59
|
+
"find specs/quiver-v30-interactive-cli-ux-agent-selection -name \"slice.json\" -print -exec node -e \"JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'))\" {} \\;",
|
|
60
|
+
"node bin/create-quiver.js spec validate specs/quiver-v30-interactive-cli-ux-agent-selection"
|
|
61
|
+
],
|
|
62
|
+
"validation_hints": [
|
|
63
|
+
"Keep this slice documentation-only.",
|
|
64
|
+
"If source-of-truth docs mention v30, say planned, not implemented."
|
|
65
|
+
],
|
|
66
|
+
"estimated_hours": 2,
|
|
67
|
+
"status": "completed",
|
|
68
|
+
"blocked_reason": null,
|
|
69
|
+
"actual_hours": 2,
|
|
70
|
+
"completed_at": "2026-05-26"
|
|
71
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-01 CLI UX runtime and progress engine
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Added shared CLI UX runtime helpers for branded hierarchy, checks, summaries, next steps, task groups, and safer spinner lifecycle.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- [x] Human TTY progress output validated.
|
|
10
|
+
- [x] No-TTY fallback validated.
|
|
11
|
+
- [x] JSON/CI/no-color cleanliness validated.
|
|
12
|
+
- [x] Spinner cleanup validated.
|
|
13
|
+
|
|
14
|
+
## Relevant Changes
|
|
15
|
+
|
|
16
|
+
- Updated `src/create-quiver/lib/cli/theme.js`.
|
|
17
|
+
- Updated `src/create-quiver/lib/cli/ux.js`.
|
|
18
|
+
- Updated `tests/lib/cli-theme.test.js`.
|
|
19
|
+
- Updated `tests/lib/cli-ux.test.js`.
|
|
20
|
+
|
|
21
|
+
## Pending
|
|
22
|
+
|
|
23
|
+
- Later slices must adopt the runtime in specific commands.
|
|
24
|
+
|
|
25
|
+
## Remaining Risks
|
|
26
|
+
|
|
27
|
+
- Signal and child-process cleanup for live providers remains for later provider/adoption slices.
|
|
28
|
+
|
|
29
|
+
## Future Recommendations
|
|
30
|
+
|
|
31
|
+
Keep command adoption incremental and test each command's human and machine output separately.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-01 CLI UX runtime and progress engine
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
v29 added initial UX primitives, but live provider calls still look frozen because commands do not consistently use a progress runtime.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Build a reusable CLI UX runtime that makes human output clear and keeps machine output clean.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Extend `src/create-quiver/lib/cli/**`.
|
|
14
|
+
- Add helpers for headings, sections, checks, warnings, errors, summaries, next steps, spinners, and task groups.
|
|
15
|
+
- Add cleanup behavior for spinner lifecycle.
|
|
16
|
+
- Add tests for human, no-color, CI, no-TTY, JSON, ASCII, success, and failure modes.
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- Human TTY mode can render Quiver-branded progress.
|
|
21
|
+
- No-TTY mode does not appear frozen.
|
|
22
|
+
- JSON/CI/no-color modes stay clean.
|
|
23
|
+
- Spinner lifecycle is safe on success and failure.
|
|
24
|
+
- No command-specific hardcoding of Quiver colors is introduced.
|
|
25
|
+
|
|
26
|
+
## Plan tecnico resumido
|
|
27
|
+
|
|
28
|
+
Keep the runtime internal and dependency-light. Use injected IO for testability and avoid direct command coupling to prompt libraries.
|
|
29
|
+
|
|
30
|
+
## Suggested Steps
|
|
31
|
+
|
|
32
|
+
1. Review existing `theme.js` and `ux.js`.
|
|
33
|
+
2. Add missing output primitives.
|
|
34
|
+
3. Add progress/task lifecycle helpers.
|
|
35
|
+
4. Add cleanup hooks for error paths.
|
|
36
|
+
5. Add focused unit tests.
|
|
37
|
+
|
|
38
|
+
## Restrictions
|
|
39
|
+
|
|
40
|
+
- Do not change IA command behavior in this slice.
|
|
41
|
+
- Do not add a TUI dependency.
|
|
42
|
+
- Do not replace the CLI parser.
|
|
43
|
+
|
|
44
|
+
## Risks
|
|
45
|
+
|
|
46
|
+
- Decoration can leak into automation if mode detection is weak.
|
|
47
|
+
- Spinners can leave terminal artifacts if lifecycle cleanup is incomplete.
|
|
48
|
+
|
|
49
|
+
## Completion Checklist
|
|
50
|
+
|
|
51
|
+
- [ ] UX runtime helpers implemented.
|
|
52
|
+
- [ ] Human/machine output modes tested.
|
|
53
|
+
- [ ] Spinner cleanup tested.
|
|
54
|
+
- [ ] `git diff --check` passes.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-01-cli-ux-runtime-progress-engine",
|
|
3
|
+
"ticket": "QUIVER-30-01",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "CLI UX runtime and progress engine",
|
|
6
|
+
"objective": "Extend the shared CLI UX layer with production-safe headings, sections, checks, summaries, spinners, task groups, fallback output, and lifecycle cleanup.",
|
|
7
|
+
"description": "Creates the runtime foundation required by every later command-adoption slice so long-running IA commands show real progress without breaking automation.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v30-cli-ux-runtime-progress-engine",
|
|
12
|
+
"branch_name": "feature/QUIVER-30-01-v30-cli-ux-runtime-progress-engine"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/cli/**",
|
|
16
|
+
"tests/lib/cli-*.test.js",
|
|
17
|
+
"specs/quiver-v30-interactive-cli-ux-agent-selection/**"
|
|
18
|
+
],
|
|
19
|
+
"expected_read_paths": [
|
|
20
|
+
"src/create-quiver/lib/cli/theme.js",
|
|
21
|
+
"src/create-quiver/lib/cli/ux.js",
|
|
22
|
+
"src/create-quiver/lib/ai/providers.js",
|
|
23
|
+
"docs/CLI_UX_GUIDE.md",
|
|
24
|
+
"tests/lib/**"
|
|
25
|
+
],
|
|
26
|
+
"allowed_write_paths": [
|
|
27
|
+
"src/create-quiver/lib/cli/**",
|
|
28
|
+
"tests/lib/cli-*.test.js",
|
|
29
|
+
"docs/CLI_UX_GUIDE.md",
|
|
30
|
+
"specs/quiver-v30-interactive-cli-ux-agent-selection/**"
|
|
31
|
+
],
|
|
32
|
+
"depends_on": [
|
|
33
|
+
"slice-00-spec-foundation"
|
|
34
|
+
],
|
|
35
|
+
"parallel_safe": "no",
|
|
36
|
+
"parallel_safe_reason": "Shared runtime must land before command adoption and selector work.",
|
|
37
|
+
"must": [
|
|
38
|
+
"Add reusable helpers for heading, section, check, warning, error, summary, next steps, and task groups.",
|
|
39
|
+
"Add spinner lifecycle that always stops on success, failure, timeout, cancellation, and editor review handoff.",
|
|
40
|
+
"Add plain progress fallback for no-TTY human mode.",
|
|
41
|
+
"Keep JSON, CI, no-color, TERM=dumb, and ASCII modes clean.",
|
|
42
|
+
"Use centralized Quiver theme tokens only."
|
|
43
|
+
],
|
|
44
|
+
"not_included": [
|
|
45
|
+
"Adding role selectors.",
|
|
46
|
+
"Changing provider model invocation.",
|
|
47
|
+
"Adopting the runtime in every command."
|
|
48
|
+
],
|
|
49
|
+
"acceptance": [
|
|
50
|
+
"Human TTY mode can render the approved Quiver heading/check/spinner format.",
|
|
51
|
+
"No-TTY mode prints readable plain progress without spinner control characters.",
|
|
52
|
+
"JSON and CI modes do not include colors, prompts, spinners, or decorative symbols.",
|
|
53
|
+
"Spinner cleanup is covered for success and failure paths.",
|
|
54
|
+
"Quiver colors remain centralized."
|
|
55
|
+
],
|
|
56
|
+
"tests": [
|
|
57
|
+
"node --test tests/lib/cli-theme.test.js tests/lib/cli-ux.test.js",
|
|
58
|
+
"git diff --check"
|
|
59
|
+
],
|
|
60
|
+
"validation_hints": [
|
|
61
|
+
"Prefer injected streams and injected prompt/spinner implementations for tests.",
|
|
62
|
+
"Do not couple command code directly to @clack/prompts."
|
|
63
|
+
],
|
|
64
|
+
"estimated_hours": 8,
|
|
65
|
+
"status": "completed",
|
|
66
|
+
"blocked_reason": null,
|
|
67
|
+
"actual_hours": 3,
|
|
68
|
+
"completed_at": "2026-05-26"
|
|
69
|
+
}
|