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,61 @@
1
+ # EXECUTION BRIEF - slice-03: Generation profiles and visible contract
2
+
3
+ **Spec:** quiver-v21-ai-first-layout
4
+ **Slice:** slice-03-generation-profiles-visible-contract
5
+ **Tipo:** feature
6
+
7
+ ## Contexto
8
+
9
+ El valor visible del cambio aparece cuando el init default deja de generar archivos que parecen ruido para onboarding.
10
+
11
+ ## Objetivo
12
+
13
+ Implementar la escritura real de los perfiles default, minimal y full.
14
+
15
+ ## Alcance
16
+
17
+ - Init writer.
18
+ - Perfiles de archivos visibles.
19
+ - Package scripts generados por perfil.
20
+ - Smokes iniciales por perfil.
21
+
22
+ ## Criterios de aceptacion
23
+
24
+ - Default no crea `docs-template/`, `tools/scripts/` ni spec placeholder.
25
+ - Minimal crea solo el contrato esencial.
26
+ - Full conserva salida amplia de compatibilidad.
27
+ - Scripts npm no apuntan a archivos ausentes.
28
+ - Archivos existentes no se sobrescriben.
29
+
30
+ ## Plan tecnico resumido
31
+
32
+ Usar el layout planner para ejecutar operaciones por perfil. Separar sets de archivos en esenciales, full, legacy y templates. Mantener `--full` como escape hatch del comportamiento amplio.
33
+
34
+ ## Pasos sugeridos de ejecucion
35
+
36
+ 1. Definir file sets por perfil.
37
+ 2. Conectar writer a operaciones planeadas.
38
+ 3. Ajustar merge de package scripts por perfil.
39
+ 4. Evitar spec placeholder en default/minimal.
40
+ 5. Agregar smokes de default, minimal y full.
41
+ 6. Actualizar evidence/status del slice.
42
+
43
+ ## Restricciones
44
+
45
+ - No mover analyze scan output.
46
+ - No eliminar compatibilidad full.
47
+ - No generar scripts que dependan de `tools/scripts/` sin `--legacy-scripts`.
48
+
49
+ ## Riesgos
50
+
51
+ - Reducir demasiado el default y dejar docs necesarias afuera.
52
+ - Romper proyectos que esperaban spec placeholder.
53
+ - Mantener tests viejos que asumen layout anterior.
54
+
55
+ ## Checklist de finalizacion
56
+
57
+ - [ ] Default smoke actualizado.
58
+ - [ ] Minimal smoke agregado.
59
+ - [ ] Full smoke agregado.
60
+ - [ ] Scripts por perfil validados.
61
+ - [ ] No hay overwrite accidental.
@@ -0,0 +1,64 @@
1
+ {
2
+ "slice_id": "slice-03-generation-profiles-visible-contract",
3
+ "ticket": "QUIVER-21-03",
4
+ "type": "feature",
5
+ "title": "Implement generation profiles and visible contract",
6
+ "objective": "Change generated output so default and minimal init are clean while full mode preserves the broader current contract.",
7
+ "description": "This slice updates init writing behavior according to the approved profiles and prevents default placeholder specs, visible templates, and legacy scripts.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "generation-profiles-visible-contract",
12
+ "branch_name": "feature/QUIVER-21-03-generation-profiles-visible-contract"
13
+ },
14
+ "files": [
15
+ "src/create-quiver/index.js",
16
+ "src/create-quiver/lib/init-docs.js",
17
+ "src/create-quiver/lib/init-layout.js",
18
+ "tests/lib/init-docs.test.js",
19
+ "tests/commands/init-profiles.test.js",
20
+ "scripts/ci/smoke-create-quiver.sh",
21
+ "scripts/ci/smoke-init-docs.sh",
22
+ "specs/quiver-v21-ai-first-layout/STATUS.md",
23
+ "specs/quiver-v21-ai-first-layout/EVIDENCE_REPORT.md",
24
+ "specs/quiver-v21-ai-first-layout/slices/slice-03-generation-profiles-visible-contract/CLOSURE_BRIEF.md",
25
+ "specs/quiver-v21-ai-first-layout/slices/slice-03-generation-profiles-visible-contract/slice.json"
26
+ ],
27
+ "depends_on": [
28
+ "slice-02-internal-layout-template-resolver"
29
+ ],
30
+ "parallel_safe": "after_dependencies",
31
+ "parallel_safe_reason": "Needs the internal layout and template resolver before changing generation behavior.",
32
+ "must": [
33
+ "Default init creates the clean AI-first visible contract.",
34
+ "Default init does not create `docs-template/`.",
35
+ "Default init does not create `tools/scripts/`.",
36
+ "Default init does not create placeholder `specs/<project-slug>/`.",
37
+ "`--minimal` creates only the minimum AI onboarding contract.",
38
+ "`--full` preserves the broad current output as explicit behavior.",
39
+ "Generated package scripts do not point at files that were not created.",
40
+ "Existing files are skipped by default."
41
+ ],
42
+ "not_included": [
43
+ "Analyze scan relocation.",
44
+ "Legacy migration recommendations.",
45
+ "Documentation alignment beyond tests needed for this behavior."
46
+ ],
47
+ "acceptance": [
48
+ "Default smoke asserts no root `docs-template/`, no `tools/scripts/`, and no placeholder spec.",
49
+ "Minimal smoke asserts only essential files are generated.",
50
+ "Full smoke asserts broad current docs remain available under `--full`.",
51
+ "Generated scripts are valid for each profile.",
52
+ "Existing files are preserved."
53
+ ],
54
+ "tests": [
55
+ "node --test tests/lib/init-docs.test.js tests/commands/init-profiles.test.js",
56
+ "npm run smoke:create-quiver",
57
+ "bash scripts/ci/smoke-init-docs.sh",
58
+ "git diff --check"
59
+ ],
60
+ "estimated_hours": 8,
61
+ "actual_hours": 7,
62
+ "status": "completed",
63
+ "blocked_reason": null
64
+ }
@@ -0,0 +1,32 @@
1
+ # CLOSURE BRIEF - slice-04: Analyze scan relocation
2
+
3
+ ## Resumen de lo realizado
4
+
5
+ Se movio la salida cruda de `analyze` a `.quiver/scans/PROJECT_SCAN.json` y se mantuvo `docs/PROJECT_MAP.md` como artefacto visible para humanos y agentes. Se agrego un helper central para rutas de scan con lectura preferente del path nuevo y fallback legacy a `docs/PROJECT_SCAN.json`.
6
+
7
+ ## Validacion contra criterios de aceptacion
8
+
9
+ - [x] Scan nuevo creado.
10
+ - [x] Project map visible creado.
11
+ - [x] Fallback legacy cubierto.
12
+ - [x] Preferencia nuevo sobre legacy testeada.
13
+
14
+ ## Cambios relevantes
15
+
16
+ - `analyze` escribe el JSON crudo en `.quiver/scans/PROJECT_SCAN.json`.
17
+ - `docs/PROJECT_MAP.md` se sigue escribiendo y queda visible.
18
+ - `doctor` considera valido el scan nuevo o legacy mientras exista el project map.
19
+ - Los metadatos de context pack reportan el scan usado cuando reciben `repoRoot`.
20
+ - Smokes actualizados para validar el path nuevo.
21
+
22
+ ## Pendientes
23
+
24
+ No quedan pendientes dentro de este slice. La alineacion textual de templates que todavia nombran `docs/PROJECT_SCAN.json` queda para `slice-07`.
25
+
26
+ ## Riesgos remanentes
27
+
28
+ Durante la transicion pueden coexistir `.quiver/scans/PROJECT_SCAN.json` y `docs/PROJECT_SCAN.json`; el helper prefiere el path nuevo para evitar ambiguedad.
29
+
30
+ ## Recomendaciones futuras
31
+
32
+ Actualizar las guias visibles para presentar `docs/PROJECT_MAP.md` como lectura principal y el JSON crudo como artefacto interno de herramientas.
@@ -0,0 +1,58 @@
1
+ # EXECUTION BRIEF - slice-04: Analyze scan relocation
2
+
3
+ **Spec:** quiver-v21-ai-first-layout
4
+ **Slice:** slice-04-analyze-scan-relocation
5
+ **Tipo:** feature
6
+
7
+ ## Contexto
8
+
9
+ `PROJECT_SCAN.json` es dato crudo para herramientas. El proyecto visible necesita `PROJECT_MAP.md`, no necesariamente el JSON completo en `docs/`.
10
+
11
+ ## Objetivo
12
+
13
+ Mover el scan crudo a `.quiver/scans/` y mantener compatibilidad con el path viejo.
14
+
15
+ ## Alcance
16
+
17
+ - Escritura de `analyze`.
18
+ - Lectura de scan en doctor/context packs.
19
+ - Compatibilidad con `docs/PROJECT_SCAN.json`.
20
+ - Tests de path nuevo y legacy.
21
+
22
+ ## Criterios de aceptacion
23
+
24
+ - `analyze` escribe `.quiver/scans/PROJECT_SCAN.json`.
25
+ - `docs/PROJECT_MAP.md` sigue visible.
26
+ - Lectores soportan path nuevo y legacy.
27
+ - Si existen ambos, se prefiere el path nuevo.
28
+
29
+ ## Plan tecnico resumido
30
+
31
+ Crear helpers de scan path sobre `.quiver/`, cambiar escritura de analyze y actualizar consumidores para leer con fallback.
32
+
33
+ ## Pasos sugeridos de ejecucion
34
+
35
+ 1. Identificar todos los consumidores de `docs/PROJECT_SCAN.json`.
36
+ 2. Crear helper de lectura/escritura de scan.
37
+ 3. Cambiar `analyze`.
38
+ 4. Actualizar doctor y AI context.
39
+ 5. Agregar tests de compatibilidad.
40
+
41
+ ## Restricciones
42
+
43
+ - No borrar archivos legacy.
44
+ - No ocultar `PROJECT_MAP.md`.
45
+ - No cambiar el contrato semantico del scan.
46
+
47
+ ## Riesgos
48
+
49
+ - Onboarding que siga buscando solo el path viejo.
50
+ - Smokes desactualizados.
51
+ - Usuarios confundidos por dos paths durante transicion.
52
+
53
+ ## Checklist de finalizacion
54
+
55
+ - [ ] Analyze path nuevo validado.
56
+ - [ ] Project map visible validado.
57
+ - [ ] Fallback legacy validado.
58
+ - [ ] Smokes actualizados.
@@ -0,0 +1,64 @@
1
+ {
2
+ "slice_id": "slice-04-analyze-scan-relocation",
3
+ "ticket": "QUIVER-21-04",
4
+ "type": "feature",
5
+ "title": "Relocate analyze scan output",
6
+ "objective": "Move raw analyze output to `.quiver/scans/PROJECT_SCAN.json` while keeping `docs/PROJECT_MAP.md` visible and supporting legacy reads.",
7
+ "description": "This slice separates machine-readable scan data from human-facing project map documentation.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "analyze-scan-relocation",
12
+ "branch_name": "feature/QUIVER-21-04-analyze-scan-relocation"
13
+ },
14
+ "files": [
15
+ "src/create-quiver/index.js",
16
+ "src/create-quiver/commands/ai.js",
17
+ "src/create-quiver/lib/ai/context-packs.js",
18
+ "src/create-quiver/lib/ai/executor.js",
19
+ "src/create-quiver/lib/project-scan.js",
20
+ "tests/commands/analyze.test.js",
21
+ "tests/lib/ai-context-packs.test.js",
22
+ "tests/lib/project-scan.test.js",
23
+ "scripts/ci/smoke-create-quiver.sh",
24
+ "scripts/ci/smoke-cross-platform.js",
25
+ "specs/quiver-v21-ai-first-layout/STATUS.md",
26
+ "specs/quiver-v21-ai-first-layout/EVIDENCE_REPORT.md",
27
+ "specs/quiver-v21-ai-first-layout/slices/slice-04-analyze-scan-relocation/CLOSURE_BRIEF.md",
28
+ "specs/quiver-v21-ai-first-layout/slices/slice-04-analyze-scan-relocation/slice.json"
29
+ ],
30
+ "depends_on": [
31
+ "slice-02-internal-layout-template-resolver"
32
+ ],
33
+ "parallel_safe": "after_dependencies",
34
+ "parallel_safe_reason": "Depends on `.quiver/` internal path helpers but can run before docs alignment.",
35
+ "must": [
36
+ "Write raw scan JSON to `.quiver/scans/PROJECT_SCAN.json`.",
37
+ "Keep writing `docs/PROJECT_MAP.md` for humans and agents.",
38
+ "Read legacy `docs/PROJECT_SCAN.json` when present.",
39
+ "Prefer the new scan path when both new and legacy files exist.",
40
+ "Update AI context packing and doctor scan detection to support both paths."
41
+ ],
42
+ "not_included": [
43
+ "Changing project map content semantics.",
44
+ "Removing legacy scan files.",
45
+ "Changing generated visible docs beyond necessary path references."
46
+ ],
47
+ "acceptance": [
48
+ "`analyze` creates `.quiver/scans/PROJECT_SCAN.json`.",
49
+ "`analyze` still creates `docs/PROJECT_MAP.md`.",
50
+ "Doctor and AI onboarding helpers can read legacy scan path.",
51
+ "Tests cover preference order when both paths exist."
52
+ ],
53
+ "tests": [
54
+ "node --test tests/commands/analyze.test.js tests/lib/project-scan.test.js tests/lib/ai-context-packs.test.js",
55
+ "node --test tests/**/*.test.js",
56
+ "bash scripts/ci/smoke-create-quiver.sh",
57
+ "node scripts/ci/smoke-cross-platform.js",
58
+ "git diff --check"
59
+ ],
60
+ "estimated_hours": 6,
61
+ "actual_hours": 5,
62
+ "status": "completed",
63
+ "blocked_reason": null
64
+ }
@@ -0,0 +1,32 @@
1
+ # CLOSURE BRIEF - slice-05: Empty specs and layout doctor
2
+
3
+ ## Resumen de lo realizado
4
+
5
+ Se adapto `doctor` para aceptar proyectos sin specs despues del init AI-first y reportar el estado de layout como `new`, `legacy`, `hybrid` o `incomplete`. `plan`, `graph` y `next` ya devolvian estados vacios validos, y se agrego cobertura para asegurar ese comportamiento junto con el nuevo doctor.
6
+
7
+ ## Validacion contra criterios de aceptacion
8
+
9
+ - [x] No-spec soportado.
10
+ - [x] Layout nuevo detectado.
11
+ - [x] Layout legacy detectado.
12
+ - [x] Proyectos con specs no regresan.
13
+
14
+ ## Cambios relevantes
15
+
16
+ - `doctor` ya no exige exactamente un spec generado.
17
+ - `doctor` muestra layout, specs detectadas, senales legacy y recomendaciones accionables.
18
+ - Se agrego `collectLayoutReport()` y `collectDoctorReport()` para separar deteccion de layout de presentacion CLI.
19
+ - Los wrappers legacy solo se validan como ejecutables si existen.
20
+ - Se agregaron tests para layouts nuevo sin specs, minimal, legacy, hybrid e incomplete.
21
+
22
+ ## Pendientes
23
+
24
+ No quedan pendientes dentro de este slice. La limpieza/migracion no destructiva de assets legacy corresponde a `slice-06`.
25
+
26
+ ## Riesgos remanentes
27
+
28
+ Los mensajes de doctor cambiaron; smokes que esperaban texto exacto del layout viejo deben alinearse en `slice-06`/`slice-08`.
29
+
30
+ ## Recomendaciones futuras
31
+
32
+ Mantener `doctor` como reporte de estado y recomendaciones; no convertir senales legacy en errores duros salvo que falte un archivo necesario para ejecutar un comando pedido.
@@ -0,0 +1,60 @@
1
+ # EXECUTION BRIEF - slice-05: Empty specs and layout doctor
2
+
3
+ **Spec:** quiver-v21-ai-first-layout
4
+ **Slice:** slice-05-empty-specs-layout-doctor
5
+ **Tipo:** feature
6
+
7
+ ## Contexto
8
+
9
+ Default init ya no debe crear specs falsas. Por eso los comandos que recorren slices deben aceptar que todavia no haya specs.
10
+
11
+ ## Objetivo
12
+
13
+ Hacer que comandos de planificacion y doctor soporten layout nuevo, legacy e hibrido sin falsos errores.
14
+
15
+ ## Alcance
16
+
17
+ - `plan`
18
+ - `graph`
19
+ - `next`
20
+ - `doctor`
21
+ - Deteccion de layout.
22
+ - Tests de no-spec repos.
23
+
24
+ ## Criterios de aceptacion
25
+
26
+ - `plan`, `graph`, `next` y `doctor` no fallan por ausencia de specs.
27
+ - Doctor detecta layout nuevo, legacy, hibrido e incompleto.
28
+ - Doctor reporta recomendaciones accionables.
29
+ - Proyectos con specs existentes siguen funcionando.
30
+
31
+ ## Plan tecnico resumido
32
+
33
+ Separar "no specs yet" de errores reales. Agregar detector de layout en doctor y actualizar formatters para comunicar estados vacios.
34
+
35
+ ## Pasos sugeridos de ejecucion
36
+
37
+ 1. Agregar fixtures sin specs.
38
+ 2. Ajustar colectores de slices para estado vacio.
39
+ 3. Ajustar salidas human/json.
40
+ 4. Agregar detector de layout.
41
+ 5. Agregar tests de legacy/hibrido.
42
+
43
+ ## Restricciones
44
+
45
+ - No migrar archivos.
46
+ - No ocultar errores reales de JSON invalido.
47
+ - No cambiar formato JSON existente salvo campos compatibles.
48
+
49
+ ## Riesgos
50
+
51
+ - Convertir errores reales en estados vacios.
52
+ - Romper automatizaciones que esperan exit code no cero.
53
+ - Mensajes ambiguos para usuarios nuevos.
54
+
55
+ ## Checklist de finalizacion
56
+
57
+ - [ ] No-spec tests pasan.
58
+ - [ ] Layout doctor testeado.
59
+ - [ ] Proyectos con specs siguen pasando.
60
+ - [ ] Salidas JSON siguen parseables.
@@ -0,0 +1,65 @@
1
+ {
2
+ "slice_id": "slice-05-empty-specs-layout-doctor",
3
+ "ticket": "QUIVER-21-05",
4
+ "type": "feature",
5
+ "title": "Support empty specs state and layout doctor",
6
+ "objective": "Make plan, graph, next, and doctor treat projects without specs as valid while doctor reports new, legacy, and hybrid layouts.",
7
+ "description": "Default init no longer creates placeholder specs, so orchestration commands must handle an empty specs directory or no specs directory cleanly.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "empty-specs-layout-doctor",
12
+ "branch_name": "feature/QUIVER-21-05-empty-specs-layout-doctor"
13
+ },
14
+ "files": [
15
+ "src/create-quiver/commands/plan.js",
16
+ "src/create-quiver/commands/graph.js",
17
+ "src/create-quiver/commands/next.js",
18
+ "src/create-quiver/lib/slice-graph.js",
19
+ "src/create-quiver/lib/doctor.js",
20
+ "src/create-quiver/index.js",
21
+ "tests/commands/doctor.test.js",
22
+ "tests/commands/plan.test.js",
23
+ "tests/commands/graph.test.js",
24
+ "tests/commands/next.test.js",
25
+ "tests/lib/doctor.test.js",
26
+ "specs/quiver-v21-ai-first-layout/STATUS.md",
27
+ "specs/quiver-v21-ai-first-layout/EVIDENCE_REPORT.md",
28
+ "specs/quiver-v21-ai-first-layout/slices/slice-05-empty-specs-layout-doctor/CLOSURE_BRIEF.md",
29
+ "specs/quiver-v21-ai-first-layout/slices/slice-05-empty-specs-layout-doctor/slice.json"
30
+ ],
31
+ "depends_on": [
32
+ "slice-03-generation-profiles-visible-contract",
33
+ "slice-04-analyze-scan-relocation"
34
+ ],
35
+ "parallel_safe": "after_dependencies",
36
+ "parallel_safe_reason": "Requires the new default no-spec behavior and scan path compatibility.",
37
+ "must": [
38
+ "Make `plan` return a clear valid empty state when no specs exist.",
39
+ "Make `graph` return a clear valid empty state when no specs exist.",
40
+ "Make `next` return a clear valid empty state when no specs exist.",
41
+ "Make `doctor` detect layout type: new, legacy, hybrid, or incomplete.",
42
+ "Doctor must not treat missing specs as an error immediately after default init.",
43
+ "Doctor should surface actionable recommendations for legacy files."
44
+ ],
45
+ "not_included": [
46
+ "Migrating legacy files.",
47
+ "Changing spec generation.",
48
+ "Documentation copy beyond command output strings."
49
+ ],
50
+ "acceptance": [
51
+ "No-spec projects do not fail `plan`, `graph`, `next`, or `doctor` unexpectedly.",
52
+ "Doctor reports layout state with clear language.",
53
+ "Legacy paths are warnings or recommendations, not hard failures.",
54
+ "Existing behavior for projects with specs remains intact."
55
+ ],
56
+ "tests": [
57
+ "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",
58
+ "node --test tests/**/*.test.js",
59
+ "git diff --check"
60
+ ],
61
+ "estimated_hours": 6,
62
+ "actual_hours": 5,
63
+ "status": "completed",
64
+ "blocked_reason": null
65
+ }
@@ -0,0 +1,31 @@
1
+ # CLOSURE BRIEF - slice-06: Legacy migration and optional assets
2
+
3
+ ## Resumen de lo realizado
4
+
5
+ Se implemento la transicion no destructiva para migracion y se habilitaron los assets opcionales explicitos.
6
+
7
+ ## Validacion contra criterios de aceptacion
8
+
9
+ - [x] Migracion no destructiva.
10
+ - [x] Legacy scripts opcionales.
11
+ - [x] Templates exportados bajo `.quiver/`.
12
+ - [x] Full mode validado.
13
+
14
+ ## Cambios relevantes
15
+
16
+ - `migrate` ahora reporta layout legado detectado y preservado, incluyendo `docs-template/`, `tools/scripts/` y `docs/PROJECT_SCAN.json`.
17
+ - `init --legacy-scripts` crea wrappers Bash y scripts npm compatibles.
18
+ - `init --include-templates` exporta templates a `.quiver/templates/`.
19
+ - `init --full` sigue habilitando el layout amplio de compatibilidad.
20
+
21
+ ## Pendientes
22
+
23
+ Ninguno para este slice.
24
+
25
+ ## Riesgos remanentes
26
+
27
+ - La salida de migracion sigue siendo conservadora: detecta y reporta, pero no limpia automaticamente el layout viejo.
28
+
29
+ ## Recomendaciones futuras
30
+
31
+ - Mantener las smokes de migracion y perfiles opcionales en slices posteriores para evitar regresiones.
@@ -0,0 +1,62 @@
1
+ # EXECUTION BRIEF - slice-06: Legacy migration and optional assets
2
+
3
+ **Spec:** quiver-v21-ai-first-layout
4
+ **Slice:** slice-06-legacy-migration-optional-assets
5
+ **Tipo:** feature
6
+
7
+ ## Contexto
8
+
9
+ Cambiar el default no alcanza: proyectos existentes pueden tener layout viejo y algunos usuarios siguen necesitando scripts o templates visibles.
10
+
11
+ ## Objetivo
12
+
13
+ Agregar transicion no destructiva y flags explicitos para assets opcionales.
14
+
15
+ ## Alcance
16
+
17
+ - `migrate` legacy detection.
18
+ - `--legacy-scripts`.
19
+ - `--include-templates`.
20
+ - `--full` broad optional assets.
21
+ - Smokes de migracion y perfiles opcionales.
22
+
23
+ ## Criterios de aceptacion
24
+
25
+ - `migrate` no borra ni mueve archivos legacy.
26
+ - Layout legacy se detecta y reporta.
27
+ - `--legacy-scripts` crea wrappers y scripts validos.
28
+ - `--include-templates` exporta a `.quiver/templates/`.
29
+ - `--full` mantiene assets amplios de forma explicita.
30
+
31
+ ## Plan tecnico resumido
32
+
33
+ Extender perfiles y migracion para distinguir cleanup sugerido de acciones destructivas. Mantener compatibilidad por lectura y generar opcionales solo cuando el usuario lo pide.
34
+
35
+ ## Pasos sugeridos de ejecucion
36
+
37
+ 1. Agregar deteccion legacy en migrate.
38
+ 2. Implementar generacion legacy scripts bajo flag.
39
+ 3. Implementar export de templates bajo `.quiver/templates/`.
40
+ 4. Definir set full.
41
+ 5. Actualizar package scripts segun flags.
42
+ 6. Agregar smokes de migracion.
43
+
44
+ ## Restricciones
45
+
46
+ - No borrar archivos legacy.
47
+ - No crear root `docs-template/` en layout nuevo.
48
+ - No mezclar scripts legacy en default.
49
+
50
+ ## Riesgos
51
+
52
+ - Flags combinados generen scripts inconsistentes.
53
+ - Migracion demasiado silenciosa.
54
+ - Full mode arrastre demasiada deuda sin documentar.
55
+
56
+ ## Checklist de finalizacion
57
+
58
+ - [ ] Migrate preserva legacy.
59
+ - [ ] Legacy scripts validos.
60
+ - [ ] Include templates validado.
61
+ - [ ] Full mode validado.
62
+ - [ ] Recomendaciones de migracion claras.
@@ -0,0 +1,66 @@
1
+ {
2
+ "slice_id": "slice-06-legacy-migration-optional-assets",
3
+ "ticket": "QUIVER-21-06",
4
+ "type": "feature",
5
+ "title": "Add legacy migration and optional assets",
6
+ "objective": "Make migration non-destructive for legacy layouts and implement explicit optional generation for legacy scripts and templates.",
7
+ "description": "This slice handles transition behavior so existing projects can keep working while new projects stay clean by default.",
8
+ "git": {
9
+ "branch_type": "feature",
10
+ "base_branch": "main",
11
+ "branch_slug": "legacy-migration-optional-assets",
12
+ "branch_name": "feature/QUIVER-21-06-legacy-migration-optional-assets"
13
+ },
14
+ "files": [
15
+ "src/create-quiver/index.js",
16
+ "src/create-quiver/lib/init-docs.js",
17
+ "src/create-quiver/lib/init-layout.js",
18
+ "src/create-quiver/lib/state.js",
19
+ "scripts/migrate-project.sh",
20
+ "scripts/ci/smoke-create-quiver.sh",
21
+ "scripts/ci/smoke-cross-platform.js",
22
+ "tests/commands/init-profiles.test.js",
23
+ "specs/quiver-v21-ai-first-layout/STATUS.md",
24
+ "specs/quiver-v21-ai-first-layout/EVIDENCE_REPORT.md",
25
+ "specs/quiver-v21-ai-first-layout/slices/slice-06-legacy-migration-optional-assets/CLOSURE_BRIEF.md",
26
+ "specs/quiver-v21-ai-first-layout/slices/slice-06-legacy-migration-optional-assets/slice.json"
27
+ ],
28
+ "depends_on": [
29
+ "slice-03-generation-profiles-visible-contract",
30
+ "slice-04-analyze-scan-relocation"
31
+ ],
32
+ "parallel_safe": "after_dependencies",
33
+ "parallel_safe_reason": "Can run after generation profiles and scan relocation are stable.",
34
+ "must": [
35
+ "`migrate` must not delete or move legacy files without explicit user action.",
36
+ "`migrate` must detect legacy root `docs-template/`, `tools/scripts/`, and `docs/PROJECT_SCAN.json`.",
37
+ "`--legacy-scripts` must create Bash wrappers and matching package scripts.",
38
+ "`--include-templates` must export templates under `.quiver/templates/`.",
39
+ "`--full` must keep broad optional docs and OSS/community files as explicit behavior.",
40
+ "Migration output must explain recommended next steps for legacy-to-AI-first cleanup."
41
+ ],
42
+ "not_included": [
43
+ "Automatic destructive cleanup of legacy files.",
44
+ "Publishing package release.",
45
+ "Long-form documentation rewrite."
46
+ ],
47
+ "acceptance": [
48
+ "Legacy project migration preserves existing files.",
49
+ "Legacy layout is detected and reported.",
50
+ "`--legacy-scripts` creates wrappers and scripts that point to real files.",
51
+ "`--include-templates` creates `.quiver/templates/` and no root `docs-template/`.",
52
+ "`--full` covers optional broad assets intentionally."
53
+ ],
54
+ "tests": [
55
+ "node --test tests/commands/init-profiles.test.js tests/lib/init-docs.test.js",
56
+ "node --test tests/**/*.test.js",
57
+ "bash scripts/ci/smoke-init-docs.sh",
58
+ "bash scripts/ci/smoke-create-quiver.sh",
59
+ "node scripts/ci/smoke-cross-platform.js",
60
+ "git diff --check"
61
+ ],
62
+ "estimated_hours": 7,
63
+ "actual_hours": 6,
64
+ "status": "completed",
65
+ "blocked_reason": null
66
+ }
@@ -0,0 +1,33 @@
1
+ # CLOSURE BRIEF - slice-07: Documentation and guidance alignment
2
+
3
+ ## Resumen de lo realizado
4
+
5
+ Se alineo la documentacion humana, la guia para agentes y las plantillas generadas con el layout AI-first actual. El flujo default ahora queda documentado como contrato visible chico con maquinaria interna en `.quiver/`, mientras `docs-template/`, `tools/scripts/` y los specs placeholder quedan marcados como compatibilidad u opciones explicitas.
6
+
7
+ ## Validacion contra criterios de aceptacion
8
+
9
+ - [x] Visible vs interno documentado.
10
+ - [x] Legacy marcado como compatibilidad.
11
+ - [x] Specs reales documentadas en fase spec.
12
+ - [x] Paths de scan/map correctos.
13
+
14
+ ## Cambios relevantes
15
+
16
+ - `README.md` prioriza `init --name`, `.quiver/`, `docs/PROJECT_MAP.md` y el flujo planner/executor.
17
+ - `README_FOR_AI.md` dejo de presentar `docs-template/` como onboarding normal.
18
+ - `docs/AI_ONBOARDING_PROMPT.md.template`, `docs/WORKFLOW.md.template` y `docs/STANDARD.md.template` apuntan al mapa visible y al scan crudo en `.quiver/scans/PROJECT_SCAN.json`.
19
+ - `docs/COMMANDS.md.template` documenta init, profiles y analyzer output.
20
+ - `src/create-quiver/lib/init-docs.js` y `scripts/init-docs.sh` ajustan README generado y dejan el script Bash como compatibilidad legacy.
21
+ - Los smokes esperan la ruta nueva del scan en el onboarding prompt generado.
22
+
23
+ ## Pendientes
24
+
25
+ Ninguno para este slice.
26
+
27
+ ## Riesgos remanentes
28
+
29
+ El script Bash `scripts/init-docs.sh` sigue siendo una ruta legacy amplia y conserva referencias internas a `docs-template/`, `tools/scripts/` y `slice-template` porque ese es su proposito de compatibilidad.
30
+
31
+ ## Recomendaciones futuras
32
+
33
+ Completar `slice-08` con la validacion final de smokes, release readiness y consistencia del paquete antes de publicar.