create-quiver 0.9.0 → 0.10.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 (111) hide show
  1. package/README.md +312 -124
  2. package/README_FOR_AI.md +59 -45
  3. package/ROADMAP.md +12 -11
  4. package/docs/AI_ONBOARDING_PROMPT.md.template +120 -52
  5. package/docs/COMMANDS.md.template +41 -6
  6. package/docs/GITFLOW_PR_GUIDE.md.template +11 -0
  7. package/docs/STANDARD.md.template +1 -1
  8. package/docs/SUPPORT_MATRIX.md.template +4 -0
  9. package/docs/TROUBLESHOOTING.md.template +29 -1
  10. package/docs/WORKFLOW.md.template +1 -1
  11. package/package.json +6 -1
  12. package/package.template.json +11 -6
  13. package/scripts/check-pr-readiness.sh +1 -1
  14. package/scripts/check-scope.sh +0 -1
  15. package/scripts/check-slice-readiness.sh +3 -4
  16. package/scripts/init-docs.sh +55 -9
  17. package/specs/quiver-v19-self-install-dev-dep/EVIDENCE_REPORT.md +2 -2
  18. package/specs/quiver-v19-self-install-dev-dep/STATUS.md +4 -4
  19. package/specs/quiver-v19-self-install-dev-dep/slices/slice-01-auto-install-dev-dep/slice.json +4 -4
  20. package/specs/quiver-v20-ai-cli-orchestration/EVIDENCE_REPORT.md +23 -0
  21. package/specs/quiver-v20-ai-cli-orchestration/EXECUTION_PLAN.md +57 -0
  22. package/specs/quiver-v20-ai-cli-orchestration/SPEC.md +202 -0
  23. package/specs/quiver-v20-ai-cli-orchestration/STATUS.md +35 -0
  24. package/specs/quiver-v20-ai-cli-orchestration/pr.md +100 -0
  25. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +30 -0
  26. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +61 -0
  27. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-00-spec-foundation/slice.json +54 -0
  28. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-01-ai-provider-runner/CLOSURE_BRIEF.md +39 -0
  29. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-01-ai-provider-runner/EXECUTION_BRIEF.md +63 -0
  30. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-01-ai-provider-runner/slice.json +55 -0
  31. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-02-context-packs-token-budget/CLOSURE_BRIEF.md +40 -0
  32. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-02-context-packs-token-budget/EXECUTION_BRIEF.md +60 -0
  33. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-02-context-packs-token-budget/slice.json +54 -0
  34. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-03-ai-phase-gated-planner/CLOSURE_BRIEF.md +43 -0
  35. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-03-ai-phase-gated-planner/EXECUTION_BRIEF.md +62 -0
  36. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-03-ai-phase-gated-planner/slice.json +62 -0
  37. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-04-spec-slice-handoff-pr-generation/CLOSURE_BRIEF.md +36 -0
  38. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-04-spec-slice-handoff-pr-generation/EXECUTION_BRIEF.md +63 -0
  39. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-04-spec-slice-handoff-pr-generation/slice.json +59 -0
  40. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-05-execution-plan-parallel-worktrees/CLOSURE_BRIEF.md +32 -0
  41. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-05-execution-plan-parallel-worktrees/EXECUTION_BRIEF.md +61 -0
  42. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-05-execution-plan-parallel-worktrees/slice.json +59 -0
  43. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-06-ai-execute-slice-scope-enforcement/CLOSURE_BRIEF.md +36 -0
  44. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-06-ai-execute-slice-scope-enforcement/EXECUTION_BRIEF.md +64 -0
  45. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-06-ai-execute-slice-scope-enforcement/slice.json +65 -0
  46. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-07-github-pr-preflight/CLOSURE_BRIEF.md +36 -0
  47. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-07-github-pr-preflight/EXECUTION_BRIEF.md +66 -0
  48. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-07-github-pr-preflight/slice.json +63 -0
  49. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-08-docs-smokes-release-readiness/CLOSURE_BRIEF.md +35 -0
  50. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-08-docs-smokes-release-readiness/EXECUTION_BRIEF.md +64 -0
  51. package/specs/quiver-v20-ai-cli-orchestration/slices/slice-08-docs-smokes-release-readiness/slice.json +77 -0
  52. package/specs/quiver-v21-ai-first-layout/EVIDENCE_REPORT.md +31 -0
  53. package/specs/quiver-v21-ai-first-layout/EXECUTION_PLAN.md +185 -0
  54. package/specs/quiver-v21-ai-first-layout/SPEC.md +212 -0
  55. package/specs/quiver-v21-ai-first-layout/STATUS.md +37 -0
  56. package/specs/quiver-v21-ai-first-layout/pr.md +110 -0
  57. package/specs/quiver-v21-ai-first-layout/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +30 -0
  58. package/specs/quiver-v21-ai-first-layout/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +63 -0
  59. package/specs/quiver-v21-ai-first-layout/slices/slice-00-spec-foundation/slice.json +45 -0
  60. package/specs/quiver-v21-ai-first-layout/slices/slice-01-init-profiles-dry-run/CLOSURE_BRIEF.md +31 -0
  61. package/specs/quiver-v21-ai-first-layout/slices/slice-01-init-profiles-dry-run/EXECUTION_BRIEF.md +59 -0
  62. package/specs/quiver-v21-ai-first-layout/slices/slice-01-init-profiles-dry-run/slice.json +57 -0
  63. package/specs/quiver-v21-ai-first-layout/slices/slice-02-internal-layout-template-resolver/CLOSURE_BRIEF.md +32 -0
  64. package/specs/quiver-v21-ai-first-layout/slices/slice-02-internal-layout-template-resolver/EXECUTION_BRIEF.md +60 -0
  65. package/specs/quiver-v21-ai-first-layout/slices/slice-02-internal-layout-template-resolver/slice.json +58 -0
  66. package/specs/quiver-v21-ai-first-layout/slices/slice-03-generation-profiles-visible-contract/CLOSURE_BRIEF.md +34 -0
  67. package/specs/quiver-v21-ai-first-layout/slices/slice-03-generation-profiles-visible-contract/EXECUTION_BRIEF.md +61 -0
  68. package/specs/quiver-v21-ai-first-layout/slices/slice-03-generation-profiles-visible-contract/slice.json +64 -0
  69. package/specs/quiver-v21-ai-first-layout/slices/slice-04-analyze-scan-relocation/CLOSURE_BRIEF.md +32 -0
  70. package/specs/quiver-v21-ai-first-layout/slices/slice-04-analyze-scan-relocation/EXECUTION_BRIEF.md +58 -0
  71. package/specs/quiver-v21-ai-first-layout/slices/slice-04-analyze-scan-relocation/slice.json +64 -0
  72. package/specs/quiver-v21-ai-first-layout/slices/slice-05-empty-specs-layout-doctor/CLOSURE_BRIEF.md +32 -0
  73. package/specs/quiver-v21-ai-first-layout/slices/slice-05-empty-specs-layout-doctor/EXECUTION_BRIEF.md +60 -0
  74. package/specs/quiver-v21-ai-first-layout/slices/slice-05-empty-specs-layout-doctor/slice.json +65 -0
  75. package/specs/quiver-v21-ai-first-layout/slices/slice-06-legacy-migration-optional-assets/CLOSURE_BRIEF.md +31 -0
  76. package/specs/quiver-v21-ai-first-layout/slices/slice-06-legacy-migration-optional-assets/EXECUTION_BRIEF.md +62 -0
  77. package/specs/quiver-v21-ai-first-layout/slices/slice-06-legacy-migration-optional-assets/slice.json +66 -0
  78. package/specs/quiver-v21-ai-first-layout/slices/slice-07-docs-guidance-alignment/CLOSURE_BRIEF.md +33 -0
  79. package/specs/quiver-v21-ai-first-layout/slices/slice-07-docs-guidance-alignment/EXECUTION_BRIEF.md +61 -0
  80. package/specs/quiver-v21-ai-first-layout/slices/slice-07-docs-guidance-alignment/slice.json +67 -0
  81. package/specs/quiver-v21-ai-first-layout/slices/slice-08-smokes-release-readiness/CLOSURE_BRIEF.md +35 -0
  82. package/specs/quiver-v21-ai-first-layout/slices/slice-08-smokes-release-readiness/EXECUTION_BRIEF.md +66 -0
  83. package/specs/quiver-v21-ai-first-layout/slices/slice-08-smokes-release-readiness/slice.json +62 -0
  84. package/src/create-quiver/commands/ai.js +442 -0
  85. package/src/create-quiver/index.js +421 -84
  86. package/src/create-quiver/lib/ai/context-packs.js +158 -0
  87. package/src/create-quiver/lib/ai/execution-plan.js +254 -0
  88. package/src/create-quiver/lib/ai/executor.js +323 -0
  89. package/src/create-quiver/lib/ai/github.js +329 -0
  90. package/src/create-quiver/lib/ai/phase-gates.js +72 -0
  91. package/src/create-quiver/lib/ai/preflight.js +58 -0
  92. package/src/create-quiver/lib/ai/prompt-transport.js +81 -0
  93. package/src/create-quiver/lib/ai/prompts.js +39 -0
  94. package/src/create-quiver/lib/ai/providers.js +314 -0
  95. package/src/create-quiver/lib/ai/safety.js +151 -0
  96. package/src/create-quiver/lib/ai/spec-generator.js +314 -0
  97. package/src/create-quiver/lib/ai/spec-templates.js +715 -0
  98. package/src/create-quiver/lib/doctor.js +114 -0
  99. package/src/create-quiver/lib/git.js +21 -0
  100. package/src/create-quiver/lib/init-docs.js +286 -25
  101. package/src/create-quiver/lib/init-layout.js +426 -0
  102. package/src/create-quiver/lib/lifecycle.js +2 -2
  103. package/src/create-quiver/lib/paths.js +63 -2
  104. package/src/create-quiver/lib/project-scan.js +66 -0
  105. package/src/create-quiver/lib/readiness.js +4 -2
  106. package/src/create-quiver/lib/scope.js +125 -0
  107. package/src/create-quiver/lib/slice-graph.js +6 -0
  108. package/src/create-quiver/lib/slice.js +51 -8
  109. package/src/create-quiver/lib/state.js +18 -1
  110. package/src/create-quiver/lib/template-resolver.js +74 -0
  111. package/.claude/settings.local.json +0 -52
@@ -0,0 +1,63 @@
1
+ {
2
+ "slice_id": "slice-07-github-pr-preflight",
3
+ "ticket": "QUIVER-20-07",
4
+ "type": "feature",
5
+ "title": "Add GitHub PR preflight with gh and SSH validation",
6
+ "objective": "Validate PR readiness across macOS, Linux, and Windows before Quiver opens or prepares a PR.",
7
+ "description": "Implement ai doctor and ai pr preflight checks for gh installation, gh authentication, Git remote, worktree branch, GitFlow guide, SSH host alias, identity file, and cross-platform setup guidance.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "ai-github-pr-preflight",
12
+ "branch_name": "feature/QUIVER-20-07-ai-github-pr-preflight"
13
+ },
14
+ "files": [
15
+ "src/create-quiver/commands/ai.js",
16
+ "src/create-quiver/lib/ai/github.js",
17
+ "src/create-quiver/lib/ai/preflight.js",
18
+ "src/create-quiver/lib/git.js",
19
+ "tests/commands/ai-pr.test.js",
20
+ "tests/lib/ai-github.test.js"
21
+ ],
22
+ "depends_on": [
23
+ "slice-01-ai-provider-runner",
24
+ "slice-04-spec-slice-handoff-pr-generation"
25
+ ],
26
+ "parallel_safe": "after_dependencies",
27
+ "parallel_safe_reason": "Can run in parallel with slice-05 after slice-04 if command-file edits are coordinated.",
28
+ "must": [
29
+ "Add PR preflight checks for command -v gh.",
30
+ "Validate gh auth status.",
31
+ "Validate a Git remote exists.",
32
+ "Validate the current worktree/branch can be used for a spec PR.",
33
+ "Validate docs/GITFLOW_PR_GUIDE.md exists or provide a clear missing-guide error.",
34
+ "Separate sshHostAlias from identityFile.",
35
+ "Validate identityFile exists when provided.",
36
+ "Guide the user to create SSH config without modifying credentials automatically.",
37
+ "Provide macOS, Linux, and Windows install guidance for gh."
38
+ ],
39
+ "not_included": [
40
+ "Installing gh automatically.",
41
+ "Editing SSH config automatically.",
42
+ "Merging PRs.",
43
+ "Managing GitHub accounts beyond gh auth status."
44
+ ],
45
+ "acceptance": [
46
+ "Missing gh fails with cross-platform installation guidance.",
47
+ "Unauthenticated gh fails with gh auth login guidance.",
48
+ "Missing GitFlow guide fails before PR creation.",
49
+ "Missing identity file fails with the path that was checked.",
50
+ "sshHostAlias and identityFile are represented as separate options.",
51
+ "Dry-run prints what PR command would run without creating a PR."
52
+ ],
53
+ "tests": [
54
+ "node --test tests/commands/ai-pr.test.js tests/lib/ai-github.test.js",
55
+ "git diff --check"
56
+ ],
57
+ "estimated_hours": 5,
58
+ "actual_hours": 5,
59
+ "started_at": "2026-05-19T17:29:24-0300",
60
+ "completed_at": "2026-05-19T17:29:24-0300",
61
+ "status": "completed",
62
+ "blocked_reason": null
63
+ }
@@ -0,0 +1,35 @@
1
+ # CLOSURE BRIEF - slice-08: Docs, smokes, and release readiness
2
+
3
+ ## Resumen de lo realizado
4
+
5
+ Se actualizaron README, README_FOR_AI, templates generados, scripts npm, doctor warnings y smokes para reflejar la familia `quiver ai`: onboarding, planning por fases, execute-slice, PR preflight y doctor. Tambien se agregaron smokes dry-run que no dependen de providers reales ni de autenticacion real de GitHub.
6
+
7
+ ## Validacion contra criterios de aceptacion
8
+
9
+ - [x] README actualizado.
10
+ - [x] Templates actualizados.
11
+ - [x] Scripts `quiver:ai:*` generados.
12
+ - [x] Smokes dry-run agregados.
13
+ - [x] Cross-platform smoke actualizado.
14
+ - [x] Suite final documentada.
15
+
16
+ ## Cambios relevantes
17
+
18
+ - `README.md` y `README_FOR_AI.md` documentan comandos AI reales y el flujo planner/executor.
19
+ - `package.template.json` y `package.json` incluyen scripts `quiver:ai:*`.
20
+ - `docs/COMMANDS.md.template`, `docs/AI_ONBOARDING_PROMPT.md.template`, `docs/SUPPORT_MATRIX.md.template`, `docs/TROUBLESHOOTING.md.template` y `docs/GITFLOW_PR_GUIDE.md.template` quedaron alineados con el comportamiento implementado.
21
+ - `src/create-quiver/lib/init-docs.js` y `scripts/init-docs.sh` generan README con scripts AI y guidance planner/executor.
22
+ - `scripts/ci/smoke-create-quiver.sh`, `scripts/ci/smoke-cross-platform.js` y `scripts/ci/smoke-init-docs.sh` validan scripts AI y dry-runs.
23
+
24
+ ## Pendientes
25
+
26
+ Ninguno para esta slice.
27
+
28
+ ## Riesgos remanentes
29
+
30
+ - `ai pr` sigue limitado a preflight en esta version; no abre PR real.
31
+ - Los smokes usan dry-run y un `gh` falso para evitar dependencia de autenticacion real.
32
+
33
+ ## Recomendaciones futuras
34
+
35
+ Preparar release patch/minor segun impacto final y actualizar changelog.
@@ -0,0 +1,64 @@
1
+ # EXECUTION BRIEF - slice-08: Docs, smokes, and release readiness
2
+
3
+ **Spec:** quiver-v20-ai-cli-orchestration
4
+ **Slice:** slice-08-docs-smokes-release-readiness
5
+ **Tipo:** docs
6
+
7
+ ## Contexto
8
+
9
+ Esta slice cierra la feature. Debe alinear README, templates generados, scripts npm, prompts y smokes con el comportamiento real implementado.
10
+
11
+ ## Objetivo
12
+
13
+ Documentar `quiver ai ...`, actualizar templates y agregar smokes dry-run sin depender de providers reales.
14
+
15
+ ## Alcance
16
+
17
+ - README y README_FOR_AI.
18
+ - Templates de onboarding, commands, support, troubleshooting y GitFlow.
19
+ - Scripts generados en package templates.
20
+ - Smokes create-quiver y cross-platform.
21
+ - Verificacion de docs generadas.
22
+
23
+ ## Criterios de aceptacion
24
+
25
+ - README generado menciona comandos AI.
26
+ - COMMANDS generado incluye ejemplos `quiver ai`.
27
+ - Onboarding prompt generado explica planner/executor.
28
+ - Scripts `quiver:ai:*` existen.
29
+ - Smokes cubren dry-run sin auth real.
30
+ - Cross-platform cubre paths con espacios.
31
+
32
+ ## Plan tecnico resumido
33
+
34
+ Actualizar documentacion y generadores despues de que los comandos existan. Los smokes deben usar dry-run/mocks para no requerir Codex, Claude, Gemini ni `gh` autenticado.
35
+
36
+ ## Pasos sugeridos de ejecucion
37
+
38
+ 1. Revisar comportamiento final implementado.
39
+ 2. Actualizar README.
40
+ 3. Actualizar templates.
41
+ 4. Actualizar init docs runtime.
42
+ 5. Agregar scripts npm generados.
43
+ 6. Agregar smokes.
44
+ 7. Correr suite completa.
45
+
46
+ ## Restricciones
47
+
48
+ - No cambiar comportamiento funcional fuera de docs/smokes salvo ajuste necesario para generacion.
49
+ - No publicar npm en esta slice.
50
+ - No modificar specs antiguas.
51
+
52
+ ## Riesgos
53
+
54
+ - Docs prometen mas de lo implementado.
55
+ - Smokes requieren CLIs reales por accidente.
56
+ - Drift entre README_FOR_AI y templates.
57
+
58
+ ## Checklist de finalizacion
59
+
60
+ - [ ] Tests unitarios pasan.
61
+ - [ ] Smoke create-quiver pasa.
62
+ - [ ] Cross-platform smoke pasa.
63
+ - [ ] README_FOR_AI no contradice README/templates.
64
+ - [ ] No hay prompts obsoletos.
@@ -0,0 +1,77 @@
1
+ {
2
+ "slice_id": "slice-08-docs-smokes-release-readiness",
3
+ "ticket": "QUIVER-20-08",
4
+ "type": "docs",
5
+ "title": "Document AI orchestration and add smoke coverage",
6
+ "objective": "Update user-facing docs, generated templates, scripts, and smoke tests so the AI orchestration workflow is discoverable and release-ready.",
7
+ "description": "Finalize the feature by documenting commands, roles, context packs, token strategy, provider setup, gh/SSH preflight, and cross-platform behavior. Add dry-run smokes that do not require real provider authentication.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "ai-orchestration-docs-smokes",
12
+ "branch_name": "feature/QUIVER-20-08-ai-orchestration-docs-smokes"
13
+ },
14
+ "files": [
15
+ "README.md",
16
+ "README_FOR_AI.md",
17
+ "docs/AI_ONBOARDING_PROMPT.md.template",
18
+ "docs/COMMANDS.md.template",
19
+ "docs/GITFLOW_PR_GUIDE.md.template",
20
+ "docs/SUPPORT_MATRIX.md.template",
21
+ "docs/TROUBLESHOOTING.md.template",
22
+ "src/create-quiver/lib/init-docs.js",
23
+ "scripts/init-docs.sh",
24
+ "package.json",
25
+ "package.template.json",
26
+ "scripts/ci/smoke-create-quiver.sh",
27
+ "scripts/ci/smoke-cross-platform.js"
28
+ ],
29
+ "depends_on": [
30
+ "slice-01-ai-provider-runner",
31
+ "slice-02-context-packs-token-budget",
32
+ "slice-03-ai-phase-gated-planner",
33
+ "slice-04-spec-slice-handoff-pr-generation",
34
+ "slice-05-execution-plan-parallel-worktrees",
35
+ "slice-06-ai-execute-slice-scope-enforcement",
36
+ "slice-07-github-pr-preflight"
37
+ ],
38
+ "parallel_safe": "never",
39
+ "parallel_safe_reason": "Final integration slice touches shared docs, templates, package scripts, and smoke tests.",
40
+ "must": [
41
+ "Document quiver ai commands in README.",
42
+ "Document planner and executor roles.",
43
+ "Document token-efficient context packs.",
44
+ "Document phase-gated planning and approval rules.",
45
+ "Document mandatory slice-00.",
46
+ "Document one spec equals one PR/worktree and one slice equals one commit.",
47
+ "Document gh and SSH preflight guidance for macOS, Linux, and Windows.",
48
+ "Add generated npm scripts for quiver:ai:* commands.",
49
+ "Add smoke tests for dry-run flows without real provider auth.",
50
+ "Ensure docs/GITFLOW_PR_GUIDE.md is generated or the intended generation behavior is explicitly validated."
51
+ ],
52
+ "not_included": [
53
+ "Adding new provider APIs.",
54
+ "Publishing npm.",
55
+ "Changing unrelated docs or old specs."
56
+ ],
57
+ "acceptance": [
58
+ "Generated project README mentions quiver ai commands.",
59
+ "Generated COMMANDS.md includes ai commands and examples.",
60
+ "Generated onboarding prompt references planner/executor workflow safely.",
61
+ "Generated package scripts include quiver:ai:onboard, quiver:ai:plan, quiver:ai:execute-slice, quiver:ai:pr, and quiver:ai:doctor.",
62
+ "Smoke tests cover ai dry-run flows without requiring provider CLIs.",
63
+ "Cross-platform smoke validates path handling for ai commands."
64
+ ],
65
+ "tests": [
66
+ "node --test tests/**/*.test.js",
67
+ "npm run smoke:create-quiver",
68
+ "node scripts/ci/smoke-cross-platform.js",
69
+ "git diff --check"
70
+ ],
71
+ "estimated_hours": 6,
72
+ "actual_hours": 5,
73
+ "started_at": "2026-05-19T21:43:12-0300",
74
+ "completed_at": "2026-05-19T21:43:12-0300",
75
+ "status": "completed",
76
+ "blocked_reason": null
77
+ }
@@ -0,0 +1,31 @@
1
+ # Evidence Report - Quiver v21 AI-First Layout
2
+
3
+ ## Summary
4
+
5
+ Implementation and release-readiness validation are complete.
6
+
7
+ ## Evidence By Slice
8
+
9
+ | Slice | Evidence |
10
+ | --- | --- |
11
+ | slice-00 | Completed. Created spec foundation, all slice handoffs, execution plan, and PR body. Validated JSON parsing for all `slice.json` files and `git diff --check`. |
12
+ | slice-01 | Completed. Added explicit `init` command parsing, init profile flags, pure layout planner, dry-run formatter, compatibility alias handling, and focused tests. Evidence: `node --test tests/lib/init-layout.test.js tests/commands/init-profiles.test.js`; `git diff --check`. |
13
+ | slice-02 | Completed. Added `.quiver/` internal path helpers, versionable config, internal gitignore for runtime folders, packaged/exported/legacy template resolver, and explicit template-root support in init docs. Evidence: `node --test tests/lib/template-resolver.test.js tests/lib/quiver-internal-layout.test.js tests/lib/init-layout.test.js tests/commands/init-profiles.test.js`; `git diff --check`. |
14
+ | slice-03 | Completed. Implemented profile-aware init generation. Default no longer creates root `docs-template/`, `tools/scripts/`, or placeholder specs; minimal creates the essential onboarding contract; full preserves the broad compatibility layout. Evidence: `node --test tests/**/*.test.js`; `bash scripts/ci/smoke-init-docs.sh`; `bash scripts/ci/smoke-create-quiver.sh`; `git diff --check`. |
15
+ | slice-04 | Completed. Moved raw analyze output to `.quiver/scans/PROJECT_SCAN.json`, kept `docs/PROJECT_MAP.md` visible, added current/legacy scan helpers, and wired context pack metadata plus doctor scan detection to accept the new path with legacy fallback. Evidence: `node --test tests/commands/analyze.test.js tests/lib/project-scan.test.js tests/lib/ai-context-packs.test.js`; `node --test tests/**/*.test.js`; `bash scripts/ci/smoke-create-quiver.sh`; `node scripts/ci/smoke-cross-platform.js`; `git diff --check`. |
16
+ | slice-05 | Completed. Updated doctor so projects initialized with the clean AI-first layout can have no specs yet without failing. Added layout detection for new, legacy, hybrid, and incomplete projects while preserving valid empty states for plan, graph, and next. Evidence: `node --test tests/commands/doctor.test.js tests/lib/doctor.test.js tests/commands/plan.test.js tests/commands/graph.test.js tests/commands/next.test.js`; `node --test tests/**/*.test.js`; `git diff --check`. |
17
+ | slice-06 | Completed. Added non-destructive migrate reporting for legacy `docs-template/`, `tools/scripts/`, and `docs/PROJECT_SCAN.json`, plus explicit optional asset coverage for `--legacy-scripts`, `--include-templates`, and `--full`. Evidence: `node --test tests/commands/init-profiles.test.js tests/lib/init-docs.test.js`; `bash scripts/ci/smoke-init-docs.sh`; `bash scripts/ci/smoke-create-quiver.sh`; `node scripts/ci/smoke-cross-platform.js`; `node --test tests/**/*.test.js`; `git diff --check`. |
18
+ | slice-07 | Completed. Aligned root README, AI guide, onboarding/workflow/command templates, generated README text, and smoke assertions with the AI-first layout. Docs now distinguish visible contract from `.quiver/` internals, mark `docs-template/` and `tools/scripts/` as legacy/optional, and point raw scan output to `.quiver/scans/PROJECT_SCAN.json`. Evidence: `node --test tests/commands/init-profiles.test.js tests/lib/init-docs.test.js`; `bash scripts/ci/smoke-init-docs.sh`; `bash scripts/ci/smoke-create-quiver.sh`; `node --test tests/**/*.test.js`; `bash -n scripts/init-docs.sh`; `git diff --check`. |
19
+ | slice-08 | Completed. Hardened the tiered context-pack smoke to use the explicit `--full --skip-install` compatibility profile and updated expectations for the no-spec AI-first doctor guidance. Completed the final validation matrix. Evidence: `node --test tests/**/*.test.js`; `npm run smoke:create-quiver`; `bash scripts/ci/smoke-init-docs.sh`; `node scripts/ci/smoke-cross-platform.js`; `npm run smoke:tiered-pack`; `git diff --check`. |
20
+
21
+ ## Final Evidence
22
+
23
+ - `node --test tests/**/*.test.js` passed: 143 tests.
24
+ - `npm run smoke:create-quiver` passed.
25
+ - `bash scripts/ci/smoke-init-docs.sh` passed.
26
+ - `node scripts/ci/smoke-cross-platform.js` passed.
27
+ - `PATH=/private/tmp/quiver-no-npm-path-bin node bin/create-quiver.js init --name "No Npm Smoke 2" --dir /private/tmp/quiver-no-npm-smoke-2 --full --skip-install` passed, covering init when `npm` is unavailable and install is skipped.
28
+ - `npm run smoke:tiered-pack` passed.
29
+ - `git diff --check` passed.
30
+ - GitHub Actions CI run `26196340530` passed validate plus macOS, Ubuntu, and Windows cross-platform smoke jobs.
31
+ - Default init is covered by tests and smokes that assert no root `docs-template/`, no `tools/scripts/`, and no placeholder spec in the default/minimal profiles.
@@ -0,0 +1,185 @@
1
+ # Execution Plan - Quiver v21 AI-First Layout
2
+
3
+ ## Execution Waves
4
+
5
+ `slice-00` must run first. It publishes the spec, slices, handoffs, and PR body.
6
+
7
+ ### Ola 0 - Base documental obligatoria
8
+
9
+ Ejecutar primero y de forma secuencial:
10
+
11
+ 1. `slice-00-spec-foundation`
12
+
13
+ Salida esperada:
14
+
15
+ - Spec, slices, briefs, execution plan y PR body versionados.
16
+ - El resto de agentes puede leer solo su slice y handoff.
17
+
18
+ Gate para avanzar:
19
+
20
+ - `slice-00` mergeado o, como minimo, disponible en la rama base compartida por los worktrees.
21
+ - Todos los `slice.json` parsean.
22
+ - No hay cambios de codigo de producto.
23
+
24
+ ### Ola 1 - Contrato de entrada del init
25
+
26
+ Ejecutar de forma secuencial:
27
+
28
+ 1. `slice-01-init-profiles-dry-run`
29
+
30
+ Motivo:
31
+
32
+ - Define el parser, flags, alias compatible y layout planner.
33
+ - Los demas slices dependen de estos contratos para no duplicar decisiones.
34
+
35
+ Gate para avanzar:
36
+
37
+ - `init --dry-run` no escribe archivos.
38
+ - `npx create-quiver --name` sigue funcionando como alias.
39
+ - El layout planner esta testeado como funcion pura.
40
+
41
+ ### Ola 2 - Infraestructura interna
42
+
43
+ Ejecutar de forma secuencial:
44
+
45
+ 1. `slice-02-internal-layout-template-resolver`
46
+
47
+ Motivo:
48
+
49
+ - Define `.quiver/`, paths internos y resolucion de templates.
50
+ - Es prerequisito para cambiar generacion y analyze sin hardcodear rutas en varios lugares.
51
+
52
+ Gate para avanzar:
53
+
54
+ - `.quiver/state.json`, `.quiver/config.json` y `.quiver/.gitignore` definidos.
55
+ - Templates resueltos desde el paquete sin requerir `docs-template/` visible.
56
+ - Fallback legacy cubierto por tests.
57
+
58
+ ### Ola 3 - Cambios funcionales paralelizables
59
+
60
+ Ejecutar en paralelo despues de la Ola 2:
61
+
62
+ 1. `slice-03-generation-profiles-visible-contract`
63
+ 2. `slice-04-analyze-scan-relocation`
64
+
65
+ Por que pueden ir en paralelo:
66
+
67
+ - `slice-03` cambia que escribe `init`.
68
+ - `slice-04` cambia donde escribe y lee `analyze`.
69
+ - Comparten helpers de `.quiver/`, pero no deberian modificar la misma responsabilidad principal.
70
+
71
+ Condiciones de paralelismo:
72
+
73
+ - Ambos worktrees deben partir de una rama que ya incluya `slice-02`.
74
+ - Si ambos tocan `scripts/ci/smoke-create-quiver.sh`, coordinar el merge final para evitar conflictos de asserts.
75
+ - Si ambos tocan helpers de paths internos, mantener la autoridad en `slice-02` y solo consumirlos.
76
+
77
+ Gate para avanzar:
78
+
79
+ - Default init no crea `docs-template/`, `tools/scripts/` ni spec placeholder.
80
+ - `--minimal` y `--full` estan cubiertos.
81
+ - `analyze` escribe `.quiver/scans/PROJECT_SCAN.json`.
82
+ - `docs/PROJECT_MAP.md` sigue visible.
83
+ - Lectura legacy de `docs/PROJECT_SCAN.json` funciona.
84
+
85
+ ### Ola 4 - Compatibilidad y comandos sobre el nuevo layout
86
+
87
+ Ejecutar en paralelo despues de la Ola 3:
88
+
89
+ 1. `slice-05-empty-specs-layout-doctor`
90
+ 2. `slice-06-legacy-migration-optional-assets`
91
+
92
+ Por que pueden ir en paralelo:
93
+
94
+ - `slice-05` adapta comandos y doctor al estado sin specs y a deteccion de layout.
95
+ - `slice-06` adapta migracion y assets opcionales.
96
+ - Ambos consumen el comportamiento ya definido por `slice-03` y `slice-04`.
97
+
98
+ Condiciones de paralelismo:
99
+
100
+ - Ambos worktrees deben partir de una rama que incluya la Ola 3 completa.
101
+ - Si ambos modifican `doctor`, coordinar ownership: `slice-05` debe ser owner de deteccion/reporting de layout; `slice-06` puede agregar mensajes de migracion usando esa API.
102
+ - Si ambos modifican smokes, evitar duplicar escenarios.
103
+
104
+ Gate para avanzar:
105
+
106
+ - `plan`, `graph`, `next` y `doctor` soportan proyectos sin specs.
107
+ - Doctor reporta layout nuevo, legacy, hibrido o incompleto.
108
+ - `migrate` es no destructivo.
109
+ - `--legacy-scripts`, `--include-templates` y `--full` generan assets consistentes.
110
+
111
+ ### Ola 5 - Documentacion alineada
112
+
113
+ Ejecutar de forma secuencial despues de la Ola 4:
114
+
115
+ 1. `slice-07-docs-guidance-alignment`
116
+
117
+ Motivo:
118
+
119
+ - La documentacion debe reflejar comportamiento final, no comportamiento intermedio.
120
+
121
+ Gate para avanzar:
122
+
123
+ - README, README_FOR_AI, generated README y templates describen el mismo modelo.
124
+ - `docs-template/`, `tools/scripts/` y scan legacy aparecen solo como compatibilidad u opciones.
125
+ - Onboarding de IA empieza por contrato visible, no por `.quiver/`.
126
+
127
+ ### Ola 6 - Cierre y evidencia
128
+
129
+ Ejecutar ultimo y de forma secuencial:
130
+
131
+ 1. `slice-08-smokes-release-readiness`
132
+
133
+ Motivo:
134
+
135
+ - Valida toda la matriz despues de comportamiento, compatibilidad y docs.
136
+
137
+ Gate final:
138
+
139
+ - Suite Node completa pasa.
140
+ - Smokes principales pasan.
141
+ - `EVIDENCE_REPORT.md` actualizado con evidencia real.
142
+ - `pr.md` actualizado y listo para abrir PR.
143
+
144
+ ## Parallelism Summary
145
+
146
+ | Ola | Slices | Modo |
147
+ | --- | --- | --- |
148
+ | 0 | `slice-00` | Secuencial obligatorio |
149
+ | 1 | `slice-01` | Secuencial |
150
+ | 2 | `slice-02` | Secuencial |
151
+ | 3 | `slice-03`, `slice-04` | Paralelo condicionado |
152
+ | 4 | `slice-05`, `slice-06` | Paralelo condicionado |
153
+ | 5 | `slice-07` | Secuencial |
154
+ | 6 | `slice-08` | Secuencial |
155
+
156
+ ## Worktree Guidance
157
+
158
+ - Use one worktree per implementation slice.
159
+ - Keep one commit per slice.
160
+ - Do not run `slice-03` before `slice-02` because generation depends on the internal layout and template resolver.
161
+ - Do not run `slice-07` until behavior is stable, otherwise docs will drift.
162
+
163
+ ## Suggested Branches
164
+
165
+ - `feature/QUIVER-21-00-spec-foundation`
166
+ - `feature/QUIVER-21-01-init-profiles`
167
+ - `feature/QUIVER-21-02-internal-layout`
168
+ - `feature/QUIVER-21-03-generation-profiles`
169
+ - `feature/QUIVER-21-04-analyze-scan`
170
+ - `feature/QUIVER-21-05-empty-specs-doctor`
171
+ - `feature/QUIVER-21-06-legacy-migration`
172
+ - `feature/QUIVER-21-07-docs-alignment`
173
+ - `feature/QUIVER-21-08-smokes`
174
+
175
+ ## Validation Gate
176
+
177
+ Before closing the spec:
178
+
179
+ ```bash
180
+ node --test tests/**/*.test.js
181
+ npm run smoke:create-quiver
182
+ bash scripts/ci/smoke-init-docs.sh
183
+ node scripts/ci/smoke-cross-platform.js
184
+ git diff --check
185
+ ```
@@ -0,0 +1,212 @@
1
+ # Quiver v21 - AI-First Layout
2
+
3
+ ## Summary
4
+
5
+ Quiver's current initialization flow creates too many visible files for a first onboarding pass. It mixes the project contract that humans and agents should read with Quiver's internal machinery: templates, legacy scripts, placeholder specs, scan artifacts, and optional community files.
6
+
7
+ This spec redesigns initialization around an AI-first layout:
8
+
9
+ - visible files are the project contract;
10
+ - `.quiver/` contains internal machinery;
11
+ - specs are created only when there is a real approved requirement;
12
+ - legacy behavior remains available through explicit flags and migration support.
13
+
14
+ ## Problem
15
+
16
+ The generated footprint can feel disorganized in a new or existing project. A user sees many files before Quiver has actually analyzed the repository or produced a real spec.
17
+
18
+ The main risks are:
19
+
20
+ - confusing generated placeholders with real project context;
21
+ - forcing agents to inspect too many files;
22
+ - creating `docs-template/`, `tools/scripts/`, and `specs/<project>/` before they are needed;
23
+ - making future commands depend on files that should be internal implementation details;
24
+ - breaking existing projects if the layout changes without compatibility.
25
+
26
+ ## Goals
27
+
28
+ - Make the default init output small, legible, and AI-first.
29
+ - Move internal Quiver machinery under `.quiver/`.
30
+ - Keep human/agent-facing contract files visible and versionable.
31
+ - Add explicit profiles for minimal, full, legacy scripts, and template export.
32
+ - Add `init --dry-run` so users can preview file impact.
33
+ - Preserve compatibility with existing Quiver projects and legacy paths.
34
+ - Keep `npx create-quiver --name "Project"` working as a compatibility alias.
35
+
36
+ ## Non-Goals
37
+
38
+ - Do not change provider execution behavior for `quiver ai`.
39
+ - Do not redesign the spec/slice artifacts generated by `ai plan --phase spec`.
40
+ - Do not publish a new npm release in this spec.
41
+ - Do not migrate user projects destructively.
42
+ - Do not hide `README.md`, `AGENTS.md`, `docs/`, or real `specs/` inside `.quiver/`.
43
+
44
+ ## Approved Acceptance Criteria
45
+
46
+ ### Initialization
47
+
48
+ 1. Given a project without Quiver, when the user runs the recommended init command, then Quiver creates a clean AI-first contract.
49
+ 2. Given default init, when generation finishes, then `docs-template/` is not created at the project root.
50
+ 3. Given default init, when generation finishes, then `tools/scripts/` is not created unless requested explicitly.
51
+ 4. Given default init without a real requirement, when generation finishes, then Quiver does not create a placeholder spec under `specs/<project-slug>/`.
52
+ 5. Given `npx create-quiver --name "Project"`, when it runs, then it remains a compatibility alias for the recommended init flow or emits a clear deprecation notice without failing.
53
+
54
+ ### `.quiver/` Internal Layout
55
+
56
+ 1. Given an initialized project, when Quiver stores internal state, then it uses `.quiver/`.
57
+ 2. Given `.quiver/cache`, `.quiver/runs`, or `.quiver/worktrees`, when `git status` runs, then those paths do not appear as versionable changes.
58
+ 3. Given `.quiver/state.json` and `.quiver/config.json`, when the repo is reviewed, then those files may be versioned as Quiver contract metadata.
59
+ 4. Given templates are needed internally, when default init runs, then Quiver uses packaged templates without requiring visible `docs-template/`.
60
+ 5. Given `--include-templates`, when init runs, then templates are copied explicitly under `.quiver/templates/`.
61
+
62
+ ### Visible Contract
63
+
64
+ 1. Given a generated project, when a human or AI agent onboards, then it can start from `README.md`, `AGENTS.md`, and `docs/`.
65
+ 2. Given a generated project, when an agent onboards, then it does not need to inspect `.quiver/` unless visible docs instruct it to.
66
+ 3. Given an initial diff, when it is reviewed, then every visible generated file has a clear purpose and is not a fake project artifact.
67
+
68
+ ### Profiles
69
+
70
+ 1. Given default init, when it runs, then it creates the AI-first clean layout.
71
+ 2. Given `--minimal`, when init runs, then Quiver creates only the minimum state, router, and context contract required for AI onboarding.
72
+ 3. Given `--full`, when init runs, then Quiver preserves the broader current generation behavior as an explicit mode.
73
+ 4. Given `--legacy-scripts`, when init runs, then legacy Bash wrappers and matching npm scripts are created in a documented location.
74
+ 5. Given an invalid profile or flag combination, when init runs, then Quiver fails with supported options and no partial writes.
75
+
76
+ ### Analyze
77
+
78
+ 1. Given the new layout, when `analyze` runs, then raw scan output is written to `.quiver/scans/PROJECT_SCAN.json`.
79
+ 2. Given `analyze` runs, when it completes, then `docs/PROJECT_MAP.md` remains visible for humans and agents.
80
+ 3. Given a legacy project with `docs/PROJECT_SCAN.json`, when `doctor` or AI onboarding reads scan data, then Quiver can read the legacy path without forcing immediate migration.
81
+
82
+ ### Specs and Slice Commands
83
+
84
+ 1. Given a project with no specs yet, when `plan`, `graph`, `next`, or `doctor` runs, then the command reports "no specs yet" or equivalent as a valid state.
85
+ 2. Given an approved technical plan, when `ai plan --phase spec` runs, then Quiver creates the real `specs/<spec-slug>/` tree.
86
+ 3. Given default init, when no spec exists, then no placeholder slice is created.
87
+
88
+ ### Dry-Run and Safety
89
+
90
+ 1. Given `init --dry-run`, when it runs, then it does not write, move, delete, install, or modify anything.
91
+ 2. Given `init --dry-run`, when it exits, then it prints files to create, preserve, ignore, and any risks.
92
+ 3. Given a git repo with pending changes, when init would write files, then Quiver warns before writing and provides a safe path forward.
93
+ 4. Given a target file already exists, when init runs, then Quiver preserves it by default and reports `skipped`.
94
+
95
+ ### Documentation and Tests
96
+
97
+ 1. Given the new layout, when `README.md`, `README_FOR_AI.md`, generated README, and docs templates are reviewed, then they all describe the same visible-vs-internal model.
98
+ 2. Given `.quiver/` is internal, when docs explain onboarding, then they start with visible contract files.
99
+ 3. Given the new layout, when smokes run, then default, minimal, full, legacy, include-templates, analyze, and no-spec states are covered.
100
+
101
+ ## Technical Plan
102
+
103
+ ### Architecture
104
+
105
+ Introduce an initialization layout layer that plans the file operations before writing them.
106
+
107
+ Core pieces:
108
+
109
+ - CLI parser support for `init` and profile flags.
110
+ - A pure layout planner that returns intended operations.
111
+ - An init writer that executes the plan or prints it for `--dry-run`.
112
+ - A template resolver that reads packaged templates by default and exported templates only when explicitly requested.
113
+ - `.quiver/` metadata helpers for state, config, ignored runtime folders, scans, and optional templates.
114
+ - Compatibility readers for legacy scan/template/script locations.
115
+
116
+ ### Commands
117
+
118
+ Supported commands and aliases:
119
+
120
+ ```bash
121
+ npx create-quiver init --name "Project"
122
+ npx create-quiver init --name "Project" --minimal
123
+ npx create-quiver init --name "Project" --full
124
+ npx create-quiver init --name "Project" --legacy-scripts
125
+ npx create-quiver init --name "Project" --include-templates
126
+ npx create-quiver init --name "Project" --dry-run
127
+ npx create-quiver --name "Project"
128
+ ```
129
+
130
+ ### Layout Contracts
131
+
132
+ Default visible contract:
133
+
134
+ ```text
135
+ README.md
136
+ AGENTS.md
137
+ docs/
138
+ AI_CONTEXT.md
139
+ AI_ONBOARDING_PROMPT.md
140
+ COMMANDS.md
141
+ WORKFLOW.md
142
+ GITFLOW_PR_GUIDE.md
143
+ PROJECT_MAP.md # after analyze
144
+ ```
145
+
146
+ Internal contract:
147
+
148
+ ```text
149
+ .quiver/
150
+ state.json
151
+ config.json
152
+ .gitignore
153
+ scans/
154
+ PROJECT_SCAN.json # after analyze
155
+ templates/ # only with --include-templates
156
+ cache/ # ignored
157
+ runs/ # ignored
158
+ worktrees/ # ignored
159
+ ```
160
+
161
+ ### Error Handling
162
+
163
+ - Invalid mode or incompatible flags fail before writes.
164
+ - Missing packaged templates fail with actionable diagnostics.
165
+ - Existing files are skipped by default.
166
+ - `--dry-run` returns planned operations only.
167
+ - Legacy paths are read as fallback and reported as legacy.
168
+ - Empty specs state is valid for orchestration commands.
169
+
170
+ ### Validation
171
+
172
+ Minimum validation:
173
+
174
+ - unit tests for layout planning;
175
+ - unit tests for template resolution;
176
+ - CLI tests for init flags and alias behavior;
177
+ - smokes for generated project profiles;
178
+ - analyze smoke for scan relocation;
179
+ - doctor/plan/graph/next smokes for no-spec repos;
180
+ - documentation smoke assertions for visible-vs-internal language.
181
+
182
+ ## Slicing Strategy
183
+
184
+ `slice-00` is mandatory and must land first because it publishes this spec and all slice handoffs to the repo. Behavior changes are split by responsibility so later execution agents can work with bounded context.
185
+
186
+ ## Slice Roadmap
187
+
188
+ | Slice | Name | Status | Depends On |
189
+ | --- | --- | --- | --- |
190
+ | slice-00 | Spec foundation | Draft | - |
191
+ | slice-01 | Init profiles and dry-run planner | Draft | slice-00 |
192
+ | slice-02 | Internal layout and template resolver | Draft | slice-01 |
193
+ | slice-03 | Generation profiles and visible contract | Draft | slice-02 |
194
+ | slice-04 | Analyze scan relocation | Draft | slice-02 |
195
+ | slice-05 | Empty specs and layout doctor | Draft | slice-03, slice-04 |
196
+ | slice-06 | Legacy migration and optional assets | Draft | slice-03, slice-04 |
197
+ | slice-07 | Documentation and guidance alignment | Draft | slice-05, slice-06 |
198
+ | slice-08 | Smokes and release readiness | Draft | slice-07 |
199
+
200
+ ## Risks
201
+
202
+ - Existing users may rely on visible `docs-template/` or `tools/scripts/`.
203
+ - Docs may drift if generated README, root README, and AI guide are not updated together.
204
+ - Commands can accidentally keep expecting placeholder specs.
205
+ - Moving scans can break AI onboarding if fallbacks are incomplete.
206
+ - Full mode can become a dumping ground if not defined tightly.
207
+
208
+ ## Open Questions
209
+
210
+ - Whether `.quiver/scans/PROJECT_SCAN.json` should be versioned by default or optionally ignored.
211
+ - Whether `--full` should include OSS community files by default or require a future `--oss` flag.
212
+ - Whether the compatibility alias should print a warning immediately or after one release cycle.