create-quiver 0.15.3 → 0.16.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 (390) hide show
  1. package/.github/pull_request_template.md +17 -0
  2. package/.github/workflows/ci.yml +79 -0
  3. package/.markdown-link-check.json +15 -0
  4. package/.markdownlint.json +11 -0
  5. package/.quiver/runs/run-2026-06-09t19-14-39z/approvals.json +5 -0
  6. package/.quiver/runs/run-2026-06-09t19-14-39z/decisions.md +2 -0
  7. package/.quiver/runs/run-2026-06-09t19-14-39z/requirement.md +0 -0
  8. package/.quiver/runs/run-2026-06-09t19-14-39z/snapshots/20260609T191439Z/docs/INDEX.md +97 -0
  9. package/.quiver/runs/run-2026-06-09t19-14-39z/snapshots/20260609T191439Z/manifest.json +61 -0
  10. package/.quiver/runs/run-2026-06-09t19-14-39z/state.json +28 -0
  11. package/ACTIVE_SLICES.md +43 -0
  12. package/AGENTS.md.es.template +37 -0
  13. package/ARCHITECTURE.md +133 -0
  14. package/CHANGELOG.md +12 -0
  15. package/CONTRIBUTING.md +174 -9
  16. package/README.md +10 -1
  17. package/ROADMAP.md +4 -0
  18. package/SECURITY.md +9 -2
  19. package/auditoria-ux-ui-performance-documentacion.md +705 -0
  20. package/copys-landing-page.md +244 -0
  21. package/docs/AI_CONTEXT.md.es.template +37 -0
  22. package/docs/AI_CONTEXT.md.template +3 -1
  23. package/docs/AI_ONBOARDING_PROMPT.md.es.template +22 -0
  24. package/docs/CLI_UX_GUIDE.md +55 -1
  25. package/docs/COMMANDS.md.es.template +28 -0
  26. package/docs/COMMANDS.md.template +20 -6
  27. package/docs/CONTEXTO.md.es.template +33 -0
  28. package/docs/DECISIONS.md.es.template +17 -0
  29. package/docs/GITFLOW_PR_GUIDE.md +73 -11
  30. package/docs/GITFLOW_PR_GUIDE.md.es.template +84 -0
  31. package/docs/GITFLOW_PR_GUIDE.md.template +72 -10
  32. package/docs/INDEX.md +11 -1
  33. package/docs/INDEX.md.es.template +36 -0
  34. package/docs/QUICK.md.template +2 -1
  35. package/docs/STANDARD.md.template +2 -1
  36. package/docs/STATUS.md.es.template +28 -0
  37. package/docs/SUPPORT_MATRIX.md.es.template +22 -0
  38. package/docs/TESTING_GUIDE_FOR_AI.md.es.template +19 -0
  39. package/docs/TROUBLESHOOTING.md.es.template +35 -0
  40. package/docs/WORKFLOW.md.es.template +31 -0
  41. package/docs/WORKFLOW.md.template +6 -4
  42. package/docs/ai/ACTIVE_SLICE.md +61 -0
  43. package/docs/ai/LESSONS.md.es.template +24 -0
  44. package/docs/getting-started/installation.md +26 -0
  45. package/docs/reference/commands.md +159 -7
  46. package/docs/reference/slice-schema.md +37 -0
  47. package/docs/schema/slice.schema.json +221 -0
  48. package/docs/specs/01-spec/01-slice/01-slice.json +36 -0
  49. package/docs/specs/01-spec/01-slice/01-slice.md +106 -0
  50. package/docs/specs/01-spec/01-slice/CLOSURE_BRIEF.md +80 -0
  51. package/docs/specs/01-spec/01-slice/EXECUTION_BRIEF.md +39 -0
  52. package/docs/specs/01-spec/02-slice/02-slice.json +36 -0
  53. package/docs/specs/01-spec/02-slice/02-slice.md +108 -0
  54. package/docs/specs/01-spec/02-slice/CLOSURE_BRIEF.md +88 -0
  55. package/docs/specs/01-spec/02-slice/EXECUTION_BRIEF.md +40 -0
  56. package/docs/specs/01-spec/03-slice/03-slice.json +36 -0
  57. package/docs/specs/01-spec/03-slice/03-slice.md +103 -0
  58. package/docs/specs/01-spec/03-slice/CLOSURE_BRIEF.md +54 -0
  59. package/docs/specs/01-spec/03-slice/EXECUTION_BRIEF.md +39 -0
  60. package/docs/specs/01-spec/04-slice/04-slice.json +36 -0
  61. package/docs/specs/01-spec/04-slice/04-slice.md +107 -0
  62. package/docs/specs/01-spec/04-slice/CLOSURE_BRIEF.md +46 -0
  63. package/docs/specs/01-spec/04-slice/EXECUTION_BRIEF.md +39 -0
  64. package/docs/specs/01-spec/05-slice/05-slice.json +36 -0
  65. package/docs/specs/01-spec/05-slice/05-slice.md +106 -0
  66. package/docs/specs/01-spec/05-slice/CLOSURE_BRIEF.md +84 -0
  67. package/docs/specs/01-spec/05-slice/EXECUTION_BRIEF.md +109 -0
  68. package/docs/specs/01-spec/06-slice/06-slice.json +36 -0
  69. package/docs/specs/01-spec/06-slice/06-slice.md +107 -0
  70. package/docs/specs/01-spec/06-slice/CLOSURE_BRIEF.md +67 -0
  71. package/docs/specs/01-spec/06-slice/EXECUTION_BRIEF.md +39 -0
  72. package/docs/specs/01-spec/07-slice/07-slice.json +36 -0
  73. package/docs/specs/01-spec/07-slice/07-slice.md +105 -0
  74. package/docs/specs/01-spec/07-slice/CLOSURE_BRIEF.md +71 -0
  75. package/docs/specs/01-spec/07-slice/EXECUTION_BRIEF.md +39 -0
  76. package/docs/specs/01-spec/08-slice/08-slice.json +36 -0
  77. package/docs/specs/01-spec/08-slice/08-slice.md +105 -0
  78. package/docs/specs/01-spec/08-slice/CLOSURE_BRIEF.md +114 -0
  79. package/docs/specs/01-spec/08-slice/EXECUTION_BRIEF.md +39 -0
  80. package/docs/specs/01-spec/CLOSURE_BRIEF.md +87 -0
  81. package/docs/specs/01-spec/spec.md +197 -0
  82. package/docs/workflows/full-ai-spec-to-pr.md +46 -3
  83. package/i18n/es/docs/GITFLOW_PR_GUIDE.md.template +38 -1
  84. package/package.json +27 -1
  85. package/pr.md +154 -0
  86. package/scripts/package-quiver.sh +82 -2
  87. package/scripts/release-quiver.sh +14 -3
  88. package/specs/[project-name]/slices/pr.md.template +19 -0
  89. package/specs/quiver-v37-cli-i18n-foundation/EVIDENCE_REPORT.md +73 -0
  90. package/specs/quiver-v37-cli-i18n-foundation/EXECUTION_PLAN.md +34 -0
  91. package/specs/quiver-v37-cli-i18n-foundation/SPEC.md +91 -0
  92. package/specs/quiver-v37-cli-i18n-foundation/STATUS.md +29 -0
  93. package/specs/quiver-v37-cli-i18n-foundation/pr.md +97 -0
  94. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/CLOSURE_BRIEF.md +10 -0
  95. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/EXECUTION_BRIEF.md +22 -0
  96. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/slice.json +54 -0
  97. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/CLOSURE_BRIEF.md +30 -0
  98. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/EXECUTION_BRIEF.md +27 -0
  99. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/slice.json +66 -0
  100. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/CLOSURE_BRIEF.md +27 -0
  101. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/EXECUTION_BRIEF.md +26 -0
  102. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/slice.json +62 -0
  103. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/CLOSURE_BRIEF.md +32 -0
  104. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/EXECUTION_BRIEF.md +25 -0
  105. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/slice.json +66 -0
  106. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/CLOSURE_BRIEF.md +30 -0
  107. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/EXECUTION_BRIEF.md +24 -0
  108. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/slice.json +65 -0
  109. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/CLOSURE_BRIEF.md +27 -0
  110. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/EXECUTION_BRIEF.md +23 -0
  111. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/slice.json +67 -0
  112. package/specs/quiver-v38-cli-i18n-read-only-commands/EVIDENCE_REPORT.md +69 -0
  113. package/specs/quiver-v38-cli-i18n-read-only-commands/EXECUTION_PLAN.md +25 -0
  114. package/specs/quiver-v38-cli-i18n-read-only-commands/SPEC.md +52 -0
  115. package/specs/quiver-v38-cli-i18n-read-only-commands/STATUS.md +24 -0
  116. package/specs/quiver-v38-cli-i18n-read-only-commands/pr.md +119 -0
  117. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/CLOSURE_BRIEF.md +10 -0
  118. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/EXECUTION_BRIEF.md +21 -0
  119. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/slice.json +53 -0
  120. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/CLOSURE_BRIEF.md +17 -0
  121. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/EXECUTION_BRIEF.md +23 -0
  122. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/slice.json +69 -0
  123. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/CLOSURE_BRIEF.md +13 -0
  124. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/EXECUTION_BRIEF.md +22 -0
  125. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/slice.json +77 -0
  126. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/CLOSURE_BRIEF.md +12 -0
  127. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/EXECUTION_BRIEF.md +22 -0
  128. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/slice.json +66 -0
  129. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/CLOSURE_BRIEF.md +13 -0
  130. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/EXECUTION_BRIEF.md +22 -0
  131. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/slice.json +61 -0
  132. package/specs/quiver-v39-cli-i18n-setup-onboarding/EVIDENCE_REPORT.md +71 -0
  133. package/specs/quiver-v39-cli-i18n-setup-onboarding/EXECUTION_PLAN.md +25 -0
  134. package/specs/quiver-v39-cli-i18n-setup-onboarding/SPEC.md +53 -0
  135. package/specs/quiver-v39-cli-i18n-setup-onboarding/STATUS.md +24 -0
  136. package/specs/quiver-v39-cli-i18n-setup-onboarding/pr.md +104 -0
  137. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/CLOSURE_BRIEF.md +10 -0
  138. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/EXECUTION_BRIEF.md +21 -0
  139. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/slice.json +53 -0
  140. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/CLOSURE_BRIEF.md +12 -0
  141. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/EXECUTION_BRIEF.md +23 -0
  142. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/slice.json +68 -0
  143. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/CLOSURE_BRIEF.md +12 -0
  144. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/EXECUTION_BRIEF.md +23 -0
  145. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/slice.json +62 -0
  146. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/CLOSURE_BRIEF.md +12 -0
  147. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/EXECUTION_BRIEF.md +22 -0
  148. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/slice.json +72 -0
  149. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/CLOSURE_BRIEF.md +15 -0
  150. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/EXECUTION_BRIEF.md +22 -0
  151. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/slice.json +61 -0
  152. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/EVIDENCE_REPORT.md +50 -0
  153. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/EXECUTION_PLAN.md +25 -0
  154. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/SPEC.md +52 -0
  155. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/STATUS.md +24 -0
  156. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/pr.md +94 -0
  157. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/CLOSURE_BRIEF.md +10 -0
  158. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/EXECUTION_BRIEF.md +21 -0
  159. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/slice.json +53 -0
  160. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/CLOSURE_BRIEF.md +12 -0
  161. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/EXECUTION_BRIEF.md +22 -0
  162. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/slice.json +63 -0
  163. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/CLOSURE_BRIEF.md +10 -0
  164. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/EXECUTION_BRIEF.md +22 -0
  165. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/slice.json +63 -0
  166. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/CLOSURE_BRIEF.md +10 -0
  167. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/EXECUTION_BRIEF.md +22 -0
  168. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/slice.json +72 -0
  169. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/CLOSURE_BRIEF.md +15 -0
  170. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/EXECUTION_BRIEF.md +22 -0
  171. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/slice.json +69 -0
  172. package/specs/quiver-v41-cli-i18n-ai-lifecycle/EVIDENCE_REPORT.md +90 -0
  173. package/specs/quiver-v41-cli-i18n-ai-lifecycle/EXECUTION_PLAN.md +33 -0
  174. package/specs/quiver-v41-cli-i18n-ai-lifecycle/SPEC.md +57 -0
  175. package/specs/quiver-v41-cli-i18n-ai-lifecycle/STATUS.md +26 -0
  176. package/specs/quiver-v41-cli-i18n-ai-lifecycle/pr.md +103 -0
  177. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/CLOSURE_BRIEF.md +10 -0
  178. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/EXECUTION_BRIEF.md +21 -0
  179. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/slice.json +53 -0
  180. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/CLOSURE_BRIEF.md +13 -0
  181. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/EXECUTION_BRIEF.md +22 -0
  182. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/slice.json +68 -0
  183. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/CLOSURE_BRIEF.md +12 -0
  184. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/EXECUTION_BRIEF.md +22 -0
  185. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/slice.json +66 -0
  186. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/CLOSURE_BRIEF.md +12 -0
  187. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/EXECUTION_BRIEF.md +23 -0
  188. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/slice.json +68 -0
  189. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/CLOSURE_BRIEF.md +13 -0
  190. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/EXECUTION_BRIEF.md +23 -0
  191. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/slice.json +72 -0
  192. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/CLOSURE_BRIEF.md +15 -0
  193. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/EXECUTION_BRIEF.md +22 -0
  194. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/slice.json +66 -0
  195. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/CLOSURE_BRIEF.md +11 -0
  196. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/EXECUTION_BRIEF.md +22 -0
  197. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/slice.json +70 -0
  198. package/specs/quiver-v42-cli-i18n-generated-docs/EVIDENCE_REPORT.md +64 -0
  199. package/specs/quiver-v42-cli-i18n-generated-docs/EXECUTION_PLAN.md +26 -0
  200. package/specs/quiver-v42-cli-i18n-generated-docs/SPEC.md +52 -0
  201. package/specs/quiver-v42-cli-i18n-generated-docs/STATUS.md +24 -0
  202. package/specs/quiver-v42-cli-i18n-generated-docs/pr.md +125 -0
  203. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/CLOSURE_BRIEF.md +10 -0
  204. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/EXECUTION_BRIEF.md +21 -0
  205. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/slice.json +53 -0
  206. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/CLOSURE_BRIEF.md +10 -0
  207. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/EXECUTION_BRIEF.md +22 -0
  208. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/slice.json +62 -0
  209. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/CLOSURE_BRIEF.md +11 -0
  210. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/EXECUTION_BRIEF.md +22 -0
  211. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/slice.json +72 -0
  212. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/CLOSURE_BRIEF.md +12 -0
  213. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/EXECUTION_BRIEF.md +22 -0
  214. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/slice.json +60 -0
  215. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/CLOSURE_BRIEF.md +16 -0
  216. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/EXECUTION_BRIEF.md +22 -0
  217. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/slice.json +62 -0
  218. package/specs/quiver-v43-cli-i18n-audit-release-readiness/EVIDENCE_REPORT.md +203 -0
  219. package/specs/quiver-v43-cli-i18n-audit-release-readiness/EXECUTION_PLAN.md +27 -0
  220. package/specs/quiver-v43-cli-i18n-audit-release-readiness/SPEC.md +54 -0
  221. package/specs/quiver-v43-cli-i18n-audit-release-readiness/STATUS.md +24 -0
  222. package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +636 -0
  223. package/specs/quiver-v43-cli-i18n-audit-release-readiness/cross-platform-smoke-matrix.md +35 -0
  224. package/specs/quiver-v43-cli-i18n-audit-release-readiness/pr.md +155 -0
  225. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/CLOSURE_BRIEF.md +10 -0
  226. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/EXECUTION_BRIEF.md +21 -0
  227. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/slice.json +53 -0
  228. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/CLOSURE_BRIEF.md +13 -0
  229. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/EXECUTION_BRIEF.md +23 -0
  230. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/slice.json +62 -0
  231. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/CLOSURE_BRIEF.md +18 -0
  232. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/EXECUTION_BRIEF.md +22 -0
  233. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/slice.json +59 -0
  234. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/CLOSURE_BRIEF.md +15 -0
  235. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/EXECUTION_BRIEF.md +23 -0
  236. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/slice.json +62 -0
  237. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/CLOSURE_BRIEF.md +17 -0
  238. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/EXECUTION_BRIEF.md +24 -0
  239. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/slice.json +66 -0
  240. package/specs/quiver-v44-provider-live-output-tui-lite/EVIDENCE_REPORT.md +18 -0
  241. package/specs/quiver-v44-provider-live-output-tui-lite/EXECUTION_PLAN.md +31 -0
  242. package/specs/quiver-v44-provider-live-output-tui-lite/SPEC.md +118 -0
  243. package/specs/quiver-v44-provider-live-output-tui-lite/STATUS.md +25 -0
  244. package/specs/quiver-v44-provider-live-output-tui-lite/pr.md +92 -0
  245. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/CLOSURE_BRIEF.md +11 -0
  246. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/EXECUTION_BRIEF.md +23 -0
  247. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/slice.json +64 -0
  248. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/CLOSURE_BRIEF.md +10 -0
  249. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/EXECUTION_BRIEF.md +24 -0
  250. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/slice.json +65 -0
  251. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/CLOSURE_BRIEF.md +10 -0
  252. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/EXECUTION_BRIEF.md +24 -0
  253. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/slice.json +70 -0
  254. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/CLOSURE_BRIEF.md +10 -0
  255. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/EXECUTION_BRIEF.md +25 -0
  256. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/slice.json +70 -0
  257. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/CLOSURE_BRIEF.md +10 -0
  258. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/EXECUTION_BRIEF.md +26 -0
  259. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/slice.json +72 -0
  260. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/CLOSURE_BRIEF.md +15 -0
  261. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/EXECUTION_BRIEF.md +26 -0
  262. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/slice.json +75 -0
  263. package/specs/quiver-v45-ci-actions-node24-readiness/EVIDENCE_REPORT.md +30 -0
  264. package/specs/quiver-v45-ci-actions-node24-readiness/EXECUTION_PLAN.md +22 -0
  265. package/specs/quiver-v45-ci-actions-node24-readiness/SPEC.md +49 -0
  266. package/specs/quiver-v45-ci-actions-node24-readiness/STATUS.md +21 -0
  267. package/specs/quiver-v45-ci-actions-node24-readiness/pr.md +67 -0
  268. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/CLOSURE_BRIEF.md +10 -0
  269. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/EXECUTION_BRIEF.md +21 -0
  270. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/slice.json +48 -0
  271. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/CLOSURE_BRIEF.md +14 -0
  272. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/EXECUTION_BRIEF.md +23 -0
  273. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/slice.json +65 -0
  274. package/specs/quiver-v50-audit-trust-foundation/EVIDENCE_REPORT.md +151 -0
  275. package/specs/quiver-v50-audit-trust-foundation/EXECUTION_PLAN.md +34 -0
  276. package/specs/quiver-v50-audit-trust-foundation/SPEC.md +113 -0
  277. package/specs/quiver-v50-audit-trust-foundation/STATUS.md +26 -0
  278. package/specs/quiver-v50-audit-trust-foundation/pr.md +120 -0
  279. package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/CLOSURE_BRIEF.md +20 -0
  280. package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/EXECUTION_BRIEF.md +58 -0
  281. package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/slice.json +57 -0
  282. package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/CLOSURE_BRIEF.md +24 -0
  283. package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/EXECUTION_BRIEF.md +67 -0
  284. package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/slice.json +71 -0
  285. package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/CLOSURE_BRIEF.md +24 -0
  286. package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/EXECUTION_BRIEF.md +71 -0
  287. package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/slice.json +81 -0
  288. package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/CLOSURE_BRIEF.md +22 -0
  289. package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/EXECUTION_BRIEF.md +57 -0
  290. package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/slice.json +56 -0
  291. package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/CLOSURE_BRIEF.md +23 -0
  292. package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/EXECUTION_BRIEF.md +68 -0
  293. package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/slice.json +84 -0
  294. package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/CLOSURE_BRIEF.md +25 -0
  295. package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/EXECUTION_BRIEF.md +73 -0
  296. package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/slice.json +72 -0
  297. package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/CLOSURE_BRIEF.md +22 -0
  298. package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/EXECUTION_BRIEF.md +66 -0
  299. package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/slice.json +74 -0
  300. package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/CLOSURE_BRIEF.md +29 -0
  301. package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/EXECUTION_BRIEF.md +74 -0
  302. package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/slice.json +81 -0
  303. package/specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md +145 -0
  304. package/specs/quiver-v51-cli-ergonomics-automation-contracts/EXECUTION_PLAN.md +32 -0
  305. package/specs/quiver-v51-cli-ergonomics-automation-contracts/SPEC.md +109 -0
  306. package/specs/quiver-v51-cli-ergonomics-automation-contracts/STATUS.md +25 -0
  307. package/specs/quiver-v51-cli-ergonomics-automation-contracts/pr.md +69 -0
  308. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/CLOSURE_BRIEF.md +20 -0
  309. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/EXECUTION_BRIEF.md +58 -0
  310. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/slice.json +56 -0
  311. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/CLOSURE_BRIEF.md +21 -0
  312. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/EXECUTION_BRIEF.md +61 -0
  313. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/slice.json +68 -0
  314. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/CLOSURE_BRIEF.md +25 -0
  315. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/EXECUTION_BRIEF.md +65 -0
  316. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/pr.md +134 -0
  317. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/slice.json +80 -0
  318. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/CLOSURE_BRIEF.md +31 -0
  319. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/EXECUTION_BRIEF.md +80 -0
  320. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/pr.md +159 -0
  321. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/slice.json +102 -0
  322. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/CLOSURE_BRIEF.md +25 -0
  323. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/EXECUTION_BRIEF.md +74 -0
  324. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/pr.md +147 -0
  325. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json +91 -0
  326. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/CLOSURE_BRIEF.md +28 -0
  327. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/EXECUTION_BRIEF.md +73 -0
  328. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/pr.md +146 -0
  329. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json +100 -0
  330. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/CLOSURE_BRIEF.md +36 -0
  331. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/EXECUTION_BRIEF.md +76 -0
  332. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/pr.md +155 -0
  333. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/slice.json +111 -0
  334. package/specs/quiver-v52-schema-docs-release-hygiene/EVIDENCE_REPORT.md +95 -0
  335. package/specs/quiver-v52-schema-docs-release-hygiene/EXECUTION_PLAN.md +31 -0
  336. package/specs/quiver-v52-schema-docs-release-hygiene/SPEC.md +107 -0
  337. package/specs/quiver-v52-schema-docs-release-hygiene/STATUS.md +22 -0
  338. package/specs/quiver-v52-schema-docs-release-hygiene/pr.md +69 -0
  339. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/CLOSURE_BRIEF.md +21 -0
  340. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/EXECUTION_BRIEF.md +60 -0
  341. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/slice.json +62 -0
  342. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/CLOSURE_BRIEF.md +34 -0
  343. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/EXECUTION_BRIEF.md +71 -0
  344. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/pr.md +146 -0
  345. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/slice.json +106 -0
  346. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/CLOSURE_BRIEF.md +33 -0
  347. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/EXECUTION_BRIEF.md +67 -0
  348. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/pr.md +144 -0
  349. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/slice.json +86 -0
  350. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/CLOSURE_BRIEF.md +38 -0
  351. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/EXECUTION_BRIEF.md +75 -0
  352. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/pr.md +159 -0
  353. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/slice.json +105 -0
  354. package/src/create-quiver/commands/ai.js +485 -307
  355. package/src/create-quiver/commands/changelog.js +93 -0
  356. package/src/create-quiver/commands/config.js +135 -0
  357. package/src/create-quiver/commands/demo.js +2 -2
  358. package/src/create-quiver/commands/evidence.js +39 -6
  359. package/src/create-quiver/commands/flow.js +109 -16
  360. package/src/create-quiver/commands/graph.js +9 -2
  361. package/src/create-quiver/commands/next.js +21 -18
  362. package/src/create-quiver/commands/plan.js +29 -6
  363. package/src/create-quiver/commands/spec.js +94 -70
  364. package/src/create-quiver/index.js +798 -223
  365. package/src/create-quiver/lib/ai/execution-plan.js +23 -20
  366. package/src/create-quiver/lib/ai/executor.js +60 -44
  367. package/src/create-quiver/lib/ai/export-state.js +75 -64
  368. package/src/create-quiver/lib/ai/github.js +29 -23
  369. package/src/create-quiver/lib/ai/run-state.js +28 -25
  370. package/src/create-quiver/lib/ai/spec-templates.js +19 -0
  371. package/src/create-quiver/lib/cli/command-registry.js +71 -0
  372. package/src/create-quiver/lib/cli/parser.js +14 -0
  373. package/src/create-quiver/lib/dashboard.js +154 -111
  374. package/src/create-quiver/lib/demo.js +14 -12
  375. package/src/create-quiver/lib/evidence.js +161 -6
  376. package/src/create-quiver/lib/git.js +99 -0
  377. package/src/create-quiver/lib/handoff.js +16 -7
  378. package/src/create-quiver/lib/i18n/catalog.js +152 -0
  379. package/src/create-quiver/lib/i18n/language.js +279 -0
  380. package/src/create-quiver/lib/i18n/messages/en.js +898 -0
  381. package/src/create-quiver/lib/i18n/messages/es.js +1013 -0
  382. package/src/create-quiver/lib/i18n/read-only-format.js +26 -0
  383. package/src/create-quiver/lib/i18n/templates.js +172 -0
  384. package/src/create-quiver/lib/init-docs.js +19 -5
  385. package/src/create-quiver/lib/init-layout.js +15 -8
  386. package/src/create-quiver/lib/lifecycle.js +72 -67
  387. package/src/create-quiver/lib/readiness.js +131 -110
  388. package/src/create-quiver/lib/renderers/tree.js +9 -6
  389. package/src/create-quiver/lib/spec-worktrees.js +50 -64
  390. package/src/create-quiver/lib/version.js +11 -9
@@ -1,4 +1,5 @@
1
1
  const { relativePosixPath } = require('../lib/paths');
2
+ const { formatStatus, translatorForHuman } = require('../lib/i18n/read-only-format');
2
3
  const { filterSlicesForExecution, resolveProjectState } = require('../lib/project-state-resolver');
3
4
  const { topoSort } = require('../lib/slice-graph');
4
5
 
@@ -147,13 +148,21 @@ function collectPlan(repoRoot, options = {}) {
147
148
  }
148
149
 
149
150
  function formatHumanPlan(report, options = {}) {
151
+ const translator = translatorForHuman(options);
150
152
  const unicode = Boolean(options.unicode) || /UTF-8/i.test(process.env.LANG || '');
151
- const title = options.onlyReady ? 'Ready slices' : (report.include_completed ? 'Quiver plan (including completed)' : 'Quiver plan');
153
+ const title = options.onlyReady
154
+ ? translator.t('plan.title.ready')
155
+ : (report.include_completed ? translator.t('plan.title.including_completed') : translator.t('plan.title'));
152
156
  const pathSeparator = unicode ? ' → ' : ' -> ';
153
- const lines = [title, `Total hours: ${report.total_hours}`, `Critical path: ${report.critical_path.length > 0 ? report.critical_path.join(pathSeparator) : '-'}`, ''];
157
+ const lines = [
158
+ title,
159
+ `${translator.t('plan.total_hours')}: ${report.total_hours}`,
160
+ `${translator.t('plan.critical_path')}: ${report.critical_path.length > 0 ? report.critical_path.join(pathSeparator) : '-'}`,
161
+ '',
162
+ ];
154
163
 
155
164
  if (report.plan.length === 0) {
156
- lines.push(report.include_completed ? 'No slices found for the selected filters.' : 'No pending slices found.');
165
+ lines.push(report.include_completed ? translator.t('plan.empty.filtered') : translator.t('plan.empty.pending'));
157
166
  return `${lines.join('\n')}\n`;
158
167
  }
159
168
 
@@ -163,21 +172,35 @@ function formatHumanPlan(report, options = {}) {
163
172
  item.ref,
164
173
  item.title,
165
174
  `${item.hours}`,
166
- item.status,
175
+ formatStatus(item.status, translator),
167
176
  ]);
168
177
 
178
+ const headers = [
179
+ translator.t('plan.header.index'),
180
+ translator.t('plan.header.ticket'),
181
+ translator.t('plan.header.spec_slice'),
182
+ translator.t('plan.header.title'),
183
+ translator.t('plan.header.hours'),
184
+ translator.t('plan.header.status'),
185
+ ];
169
186
  const widths = rows[0].map((_, colIndex) => Math.max(
170
187
  rows.reduce((max, row) => Math.max(max, row[colIndex].length), 0),
171
- ['[N]', 'TICKET', 'SPEC/SLICE', 'TITLE', 'HOURS', 'STATUS'][colIndex].length,
188
+ headers[colIndex].length,
172
189
  ));
173
190
 
174
- lines.push(['[N]', 'TICKET', 'SPEC/SLICE', 'TITLE', 'HOURS', 'STATUS'].map((label, index) => label.padEnd(widths[index])).join(' '));
191
+ lines.push(headers.map((label, index) => label.padEnd(widths[index])).join(' '));
175
192
  lines.push(widths.map((width) => '-'.repeat(width)).join(' '));
176
193
 
177
194
  for (const row of rows) {
178
195
  lines.push(row.map((value, index) => value.padEnd(widths[index])).join(' '));
179
196
  }
180
197
 
198
+ const missingEstimateCount = report.plan.filter((item) => Number(item.hours) <= 0).length;
199
+ if (missingEstimateCount > 0) {
200
+ lines.push('');
201
+ lines.push(translator.t('plan.missing_estimates_note', { count: missingEstimateCount }));
202
+ }
203
+
181
204
  return `${lines.join('\n')}\n`;
182
205
  }
183
206
 
@@ -5,6 +5,7 @@ const { checkHandoff } = require('../lib/handoff');
5
5
  const { openEditor } = require('../lib/cli/editor');
6
6
  const { selectOption } = require('../lib/cli/selectors');
7
7
  const { createUx } = require('../lib/cli/ux');
8
+ const { createTranslator } = require('../lib/i18n/catalog');
8
9
  const { parseJsonWithComments } = require('../lib/json');
9
10
  const { assertPathInsideRoot, validateProjectRelativePaths } = require('../lib/paths');
10
11
  const { buildApprovalCandidateReport, formatReviewSummary } = require('../lib/ai/approval-candidates');
@@ -23,18 +24,22 @@ function toRelativePosix(root, filePath) {
23
24
  return path.relative(root, filePath).split(path.sep).join('/');
24
25
  }
25
26
 
26
- function readInputText(repoRoot, inputPath) {
27
+ function readInputText(repoRoot, inputPath, options = {}) {
28
+ const translator = createTranslator(options.language);
27
29
  const resolved = path.resolve(repoRoot, inputPath || '');
28
30
  if (!inputPath || !fs.existsSync(resolved)) {
29
- throw new Error(formatError(`missing reviewed and approved plan input: ${inputPath || '<default>'}`));
31
+ throw new Error(formatError(translator.t('spec.error.missing_approved_plan_input', {
32
+ path: inputPath || '<default>',
33
+ })));
30
34
  }
31
35
  return fs.readFileSync(resolved, 'utf8');
32
36
  }
33
37
 
34
- function resolveSpecDir(repoRoot, specInput) {
38
+ function resolveSpecDir(repoRoot, specInput, options = {}) {
39
+ const translator = createTranslator(options.language);
35
40
  const value = String(specInput || '').trim();
36
41
  if (!value) {
37
- throw new Error(formatError('missing spec directory. Use: npx create-quiver spec validate specs/<spec-slug>'));
42
+ throw new Error(formatError(translator.t('spec.error.missing_directory_validate')));
38
43
  }
39
44
 
40
45
  const candidates = [
@@ -50,7 +55,7 @@ function resolveSpecDir(repoRoot, specInput) {
50
55
  }
51
56
  }
52
57
 
53
- throw new Error(formatError(`spec directory not found: ${value}`));
58
+ throw new Error(formatError(translator.t('spec.error.directory_not_found', { path: value })));
54
59
  }
55
60
 
56
61
  function findSliceJsonFiles(specDir) {
@@ -141,7 +146,7 @@ function missingGitFields(git) {
141
146
 
142
147
  function buildSpecValidationReport(repoRoot, specInput, options = {}) {
143
148
  const strict = options.strict === true;
144
- const specDir = resolveSpecDir(repoRoot, specInput);
149
+ const specDir = resolveSpecDir(repoRoot, specInput, options);
145
150
  const relativeSpecDir = toRelativePosix(repoRoot, specDir);
146
151
  const specSlug = path.basename(specDir);
147
152
  const errors = [];
@@ -270,45 +275,49 @@ function buildSpecValidationReport(repoRoot, specInput, options = {}) {
270
275
  };
271
276
  }
272
277
 
273
- function formatSpecValidationReport(report) {
278
+ function formatSpecValidationReport(report, options = {}) {
279
+ const translator = createTranslator(options.language);
274
280
  const lines = [
275
- 'Quiver spec validation',
276
- `Spec: ${report.specDir}`,
277
- `Slices: ${report.slices}`,
278
- `Strict: ${report.strict ? 'yes' : 'no'}`,
281
+ translator.t('spec_validate.title'),
282
+ translator.t('spec_validate.spec', { path: report.specDir }),
283
+ translator.t('spec_validate.slices', { count: report.slices }),
284
+ translator.t('spec_validate.strict', { value: report.strict ? translator.t('common.yes') : translator.t('common.no') }),
279
285
  ];
280
286
 
281
287
  if (report.checked.length > 0) {
282
- lines.push('Checked files:');
288
+ lines.push(translator.t('spec_validate.checked_files'));
283
289
  for (const file of report.checked) {
284
290
  lines.push(`- ${file}`);
285
291
  }
286
292
  }
287
293
 
288
294
  if (report.warnings.length > 0) {
289
- lines.push('Warnings:');
295
+ lines.push(translator.t('spec_validate.warnings'));
290
296
  for (const warning of report.warnings) {
291
297
  lines.push(`- ${warning}`);
292
298
  }
293
299
  }
294
300
 
295
301
  if (report.errors.length > 0) {
296
- lines.push('Errors:');
302
+ lines.push(translator.t('spec_validate.errors'));
297
303
  for (const error of report.errors) {
298
304
  lines.push(`- ${error}`);
299
305
  }
300
306
  }
301
307
 
302
- lines.push(report.ok ? 'PASS: spec validation passed.' : 'FAIL: spec validation failed.');
308
+ lines.push(report.ok ? translator.t('spec_validate.result.pass') : translator.t('spec_validate.result.fail'));
303
309
  return `${lines.join('\n')}\n`;
304
310
  }
305
311
 
306
312
  function runValidateSpec(repoRoot, specInput, options = {}) {
307
313
  const report = buildSpecValidationReport(repoRoot, specInput, options);
308
- process.stdout.write(formatSpecValidationReport(report));
314
+ process.stdout.write(formatSpecValidationReport(report, options));
309
315
 
310
316
  if (!report.ok) {
311
- const error = new Error(formatError(`spec validate failed for ${report.specDir}`));
317
+ const translator = createTranslator(options.language);
318
+ const error = new Error(formatError(translator.t('spec.error.validate_failed', {
319
+ path: report.specDir,
320
+ })));
312
321
  error.code = 'SPEC_VALIDATE_FAILED';
313
322
  error.details = report;
314
323
  throw error;
@@ -320,7 +329,7 @@ function runValidateSpec(repoRoot, specInput, options = {}) {
320
329
  function buildSpecCreatePreview(repoRoot, options = {}) {
321
330
  const resolved = resolveReviewedTechnicalPlanInput(repoRoot, options.input || undefined);
322
331
  const inputPath = resolved.inputPath;
323
- const inputText = readInputText(repoRoot, inputPath);
332
+ const inputText = readInputText(repoRoot, inputPath, options);
324
333
  const manifest = buildSpecGenerationManifest({
325
334
  inputPath,
326
335
  inputText,
@@ -331,7 +340,9 @@ function buildSpecCreatePreview(repoRoot, options = {}) {
331
340
  const relativeSpecDir = toRelativePosix(repoRoot, preview.specDir);
332
341
 
333
342
  if (fs.existsSync(preview.specDir)) {
334
- throw new Error(formatError(`spec directory already exists: ${relativeSpecDir}`));
343
+ throw new Error(formatError(createTranslator(options.language).t('spec.error.directory_already_exists', {
344
+ path: relativeSpecDir,
345
+ })));
335
346
  }
336
347
 
337
348
  return {
@@ -342,9 +353,10 @@ function buildSpecCreatePreview(repoRoot, options = {}) {
342
353
  };
343
354
  }
344
355
 
345
- function formatNextCommands(specDir) {
356
+ function formatNextCommands(specDir, options = {}) {
357
+ const translator = createTranslator(options.language);
346
358
  return [
347
- 'Next safe commands:',
359
+ translator.t('spec_create.next_safe_commands'),
348
360
  `- npx create-quiver spec start ${specDir}`,
349
361
  `- npx create-quiver spec status ${specDir}`,
350
362
  '- npx create-quiver next',
@@ -352,14 +364,15 @@ function formatNextCommands(specDir) {
352
364
  ];
353
365
  }
354
366
 
355
- function formatSpecCreateDryRun(preview) {
367
+ function formatSpecCreateDryRun(preview, options = {}) {
368
+ const translator = createTranslator(options.language);
356
369
  const lines = [
357
- 'Quiver spec create dry-run',
358
- `Spec slug: ${preview.manifest.slug}`,
359
- `Title: ${preview.manifest.title}`,
360
- `Input file: ${preview.inputPath}`,
361
- `Target: ${preview.relativeSpecDir}`,
362
- `Planned files: ${preview.preview.files.length}`,
370
+ translator.t('spec_create.title.dry_run'),
371
+ translator.t('spec_create.label.slug', { slug: preview.manifest.slug }),
372
+ translator.t('spec_create.label.title', { title: preview.manifest.title }),
373
+ translator.t('spec_create.label.input_file', { path: preview.inputPath }),
374
+ translator.t('spec_create.label.target', { path: preview.relativeSpecDir }),
375
+ translator.t('spec_create.label.planned_files', { count: preview.preview.files.length }),
363
376
  ];
364
377
 
365
378
  for (const file of preview.preview.files) {
@@ -367,28 +380,29 @@ function formatSpecCreateDryRun(preview) {
367
380
  }
368
381
 
369
382
  if (preview.reviewRequested) {
370
- lines.push('Review requested: yes (dry-run preview only; no editor opened and no files written).');
383
+ lines.push(translator.t('spec_create.review_requested.dry_run'));
371
384
  }
372
385
 
373
- lines.push(...formatNextCommands(preview.relativeSpecDir));
374
- lines.push('No files will be written in dry-run mode.');
386
+ lines.push(...formatNextCommands(preview.relativeSpecDir, options));
387
+ lines.push(translator.t('spec_create.no_files_written_dry_run'));
375
388
  return `${lines.join('\n')}\n`;
376
389
  }
377
390
 
378
- function formatSpecCreateResult(result, repoRoot) {
391
+ function formatSpecCreateResult(result, repoRoot, options = {}) {
392
+ const translator = createTranslator(options.language);
379
393
  const relativeSpecDir = toRelativePosix(repoRoot, result.specDir);
380
394
  const lines = [
381
- 'Quiver spec created',
382
- `Spec slug: ${result.manifest.slug}`,
383
- `Target: ${relativeSpecDir}`,
384
- `Files written: ${result.files.length}`,
395
+ translator.t('spec_create.title.created'),
396
+ translator.t('spec_create.label.slug', { slug: result.manifest.slug }),
397
+ translator.t('spec_create.label.target', { path: relativeSpecDir }),
398
+ translator.t('spec_create.label.files_written', { count: result.files.length }),
385
399
  ];
386
400
 
387
401
  for (const filePath of result.files) {
388
402
  lines.push(`- ${toRelativePosix(repoRoot, filePath)}`);
389
403
  }
390
404
 
391
- lines.push(...formatNextCommands(relativeSpecDir));
405
+ lines.push(...formatNextCommands(relativeSpecDir, options));
392
406
  return `${lines.join('\n')}\n`;
393
407
  }
394
408
 
@@ -397,24 +411,27 @@ function createSpecReviewFile(preview, options = {}) {
397
411
  const reviewDir = options.reviewDir || fs.mkdtempSync(path.join(os.tmpdir(), 'quiver-spec-create-review-'));
398
412
  const reviewPath = path.join(reviewDir, 'spec-create-preview.md');
399
413
  fs.mkdirSync(reviewDir, { recursive: true });
400
- fs.writeFileSync(reviewPath, formatSpecCreateDryRun({ ...preview, reviewRequested: false }));
414
+ fs.writeFileSync(reviewPath, formatSpecCreateDryRun({ ...preview, reviewRequested: false }, options));
401
415
  return reviewPath;
402
416
  }
403
417
 
404
- const SPEC_METHODOLOGY_OPTIONS = Object.freeze([
405
- {
406
- label: 'WDD + SDD',
407
- value: 'wdd-sdd',
408
- hint: 'Workflow Driven Development + Spec Driven Development',
409
- default: true,
410
- },
411
- ]);
418
+ function specMethodologyOptions(translator) {
419
+ return [
420
+ {
421
+ label: 'WDD + SDD',
422
+ value: 'wdd-sdd',
423
+ hint: translator.t('spec_create.methodology.wdd_sdd.hint'),
424
+ default: true,
425
+ },
426
+ ];
427
+ }
412
428
 
413
429
  async function resolveInteractiveSpecCreateOptions(repoRoot, preview, options = {}) {
414
430
  if (options.interactive !== true) {
415
431
  return options;
416
432
  }
417
433
 
434
+ const translator = createTranslator(options.language);
418
435
  const ux = options.ux || createUx({
419
436
  interactive: true,
420
437
  promptConfirm: options.promptConfirm,
@@ -425,7 +442,7 @@ async function resolveInteractiveSpecCreateOptions(repoRoot, preview, options =
425
442
  });
426
443
 
427
444
  if (!ux.mode.usePrompts) {
428
- throw new Error(formatError('spec create --interactive requires an interactive TTY. Use --input, --spec, --review, and --dry-run for non-interactive automation.'));
445
+ throw new Error(formatError(translator.t('spec_create.error.interactive_tty_required')));
429
446
  }
430
447
 
431
448
  const selectorOptions = {
@@ -443,20 +460,20 @@ async function resolveInteractiveSpecCreateOptions(repoRoot, preview, options =
443
460
  const technicalPlanCandidates = buildApprovalCandidateReport(repoRoot, 'technical-plan');
444
461
  const approvedVersion = technicalPlanCandidates.approved?.version
445
462
  ? `v${technicalPlanCandidates.approved.version}`
446
- : 'approved';
463
+ : translator.t('status.approved');
447
464
  const reviewSummary = formatReviewSummary(technicalPlanCandidates.review);
448
- const selectedMethodology = await selectOption('¿Qué metodología aplica esta spec?', SPEC_METHODOLOGY_OPTIONS, {
465
+ const selectedMethodology = await selectOption(translator.t('spec_create.prompt.methodology'), specMethodologyOptions(translator), {
449
466
  ...selectorOptions,
450
467
  defaultValue: 'wdd-sdd',
451
468
  flag: '--methodology',
452
469
  name: 'methodology',
453
470
  value: options.methodology || '',
454
471
  });
455
- const selectedInput = await selectOption('¿Qué plan aprobado querés usar?', [
472
+ const selectedInput = await selectOption(translator.t('spec_create.prompt.input'), [
456
473
  {
457
474
  label: preview.inputPath,
458
475
  value: preview.inputPath,
459
- hint: ['Plan técnico revisado y aprobado', approvedVersion, reviewSummary].filter(Boolean).join(', '),
476
+ hint: [translator.t('spec_create.input.approved_plan_hint'), approvedVersion, reviewSummary].filter(Boolean).join(', '),
460
477
  default: true,
461
478
  },
462
479
  ], {
@@ -466,17 +483,17 @@ async function resolveInteractiveSpecCreateOptions(repoRoot, preview, options =
466
483
  name: 'approved technical plan input',
467
484
  value: options.input || '',
468
485
  });
469
- const selectedReview = await selectOption('¿Cómo querés revisar antes de escribir?', [
486
+ const selectedReview = await selectOption(translator.t('spec_create.prompt.review'), [
470
487
  {
471
- label: 'Crear despues de confirmar',
488
+ label: translator.t('spec_create.review.direct.label'),
472
489
  value: 'direct',
473
- hint: 'Muestra resumen y pide aprobacion final',
490
+ hint: translator.t('spec_create.review.direct.hint'),
474
491
  default: options.review !== true,
475
492
  },
476
493
  {
477
- label: 'Abrir preview de review',
494
+ label: translator.t('spec_create.review.editor.label'),
478
495
  value: 'review',
479
- hint: 'Usa $VISUAL o $EDITOR antes de escribir',
496
+ hint: translator.t('spec_create.review.editor.hint'),
480
497
  default: options.review === true,
481
498
  },
482
499
  ], {
@@ -487,14 +504,14 @@ async function resolveInteractiveSpecCreateOptions(repoRoot, preview, options =
487
504
  });
488
505
 
489
506
  ux.summary([
490
- { label: 'Spec', value: preview.manifest.slug },
491
- { label: 'Metodologia', value: selectedMethodology.label },
492
- { label: 'Input', value: selectedInput.value },
493
- { label: 'Plan tecnico', value: ['aprobado', approvedVersion, reviewSummary].filter(Boolean).join(', ') },
494
- { label: 'Target', value: preview.relativeSpecDir },
495
- { label: 'Archivos planificados', value: preview.preview.files.length },
496
- { label: 'Revision', value: selectedReview.value === 'review' ? 'abrir preview' : 'confirmacion directa' },
497
- ], { title: 'Spec create' });
507
+ { label: translator.t('spec_create.summary.spec'), value: preview.manifest.slug },
508
+ { label: translator.t('spec_create.summary.methodology'), value: selectedMethodology.label },
509
+ { label: translator.t('spec_create.summary.input'), value: selectedInput.value },
510
+ { label: translator.t('spec_create.summary.technical_plan'), value: [translator.t('status.approved'), approvedVersion, reviewSummary].filter(Boolean).join(', ') },
511
+ { label: translator.t('spec_create.summary.target'), value: preview.relativeSpecDir },
512
+ { label: translator.t('spec_create.summary.planned_files'), value: preview.preview.files.length },
513
+ { label: translator.t('spec_create.summary.review'), value: selectedReview.value === 'review' ? translator.t('spec_create.summary.review_editor') : translator.t('spec_create.summary.review_direct') },
514
+ ], { title: translator.t('spec_create.summary.title') });
498
515
 
499
516
  return {
500
517
  ...options,
@@ -520,7 +537,7 @@ async function confirmSpecCreate(message, options = {}) {
520
537
  });
521
538
  const confirmed = await ux.promptConfirm(message, { initialValue: false });
522
539
  if (!confirmed) {
523
- throw new Error(formatError('spec create interactive approval declined. No files were written.'));
540
+ throw new Error(formatError(createTranslator(options.language).t('spec_create.error.approval_declined')));
524
541
  }
525
542
  }
526
543
 
@@ -534,7 +551,9 @@ async function reviewSpecCreatePreview(repoRoot, preview, options = {}) {
534
551
  const canOpenEditor = hasEditorRunner || options.stdinIsTTY === true || (options.stdinIsTTY !== false && Boolean(process.stdin.isTTY));
535
552
 
536
553
  if (!canOpenEditor) {
537
- throw new Error(formatError(`spec create --review requires an interactive terminal or an injected editor runner.\nReview artifact: ${reviewPath}`));
554
+ throw new Error(formatError(createTranslator(options.language).t('spec_create.error.review_tty_required', {
555
+ path: reviewPath,
556
+ })));
538
557
  }
539
558
 
540
559
  const editorResult = hasEditorRunner
@@ -542,7 +561,11 @@ async function reviewSpecCreatePreview(repoRoot, preview, options = {}) {
542
561
  : openEditor(reviewPath, { cwd: repoRoot, env: options.env || process.env });
543
562
 
544
563
  if (!editorResult || editorResult.ok !== true) {
545
- throw new Error(formatError(`${editorResult?.reason || 'spec create review was canceled.'}\nReview artifact: ${reviewPath}`));
564
+ const translator = createTranslator(options.language);
565
+ throw new Error(formatError(translator.t('spec_create.error.review_canceled', {
566
+ path: reviewPath,
567
+ reason: editorResult?.reason || translator.t('spec_create.error.review_canceled.default_reason'),
568
+ })));
546
569
  }
547
570
 
548
571
  return reviewPath;
@@ -551,9 +574,10 @@ async function reviewSpecCreatePreview(repoRoot, preview, options = {}) {
551
574
  async function runCreateSpec(repoRoot, options = {}) {
552
575
  const preview = buildSpecCreatePreview(repoRoot, options);
553
576
  const resolvedOptions = await resolveInteractiveSpecCreateOptions(repoRoot, preview, options);
577
+ const languageOptions = { language: resolvedOptions.language };
554
578
 
555
579
  if (resolvedOptions.dryRun) {
556
- process.stdout.write(formatSpecCreateDryRun({ ...preview, reviewRequested: resolvedOptions.review === true }));
580
+ process.stdout.write(formatSpecCreateDryRun({ ...preview, reviewRequested: resolvedOptions.review === true }, languageOptions));
557
581
  return {
558
582
  task: 'spec-create',
559
583
  dryRun: true,
@@ -564,13 +588,13 @@ async function runCreateSpec(repoRoot, options = {}) {
564
588
  }
565
589
 
566
590
  const reviewPath = await reviewSpecCreatePreview(repoRoot, preview, resolvedOptions);
567
- await confirmSpecCreate(`Create spec '${preview.manifest.slug}'?`, resolvedOptions);
591
+ await confirmSpecCreate(createTranslator(resolvedOptions.language).t('spec_create.confirm_create', { slug: preview.manifest.slug }), resolvedOptions);
568
592
 
569
593
  const result = generateSpecArtifacts(repoRoot, {
570
594
  input: resolvedOptions.input || preview.inputPath,
571
595
  specSlug: resolvedOptions.specSlug,
572
596
  });
573
- process.stdout.write(formatSpecCreateResult(result, repoRoot));
597
+ process.stdout.write(formatSpecCreateResult(result, repoRoot, languageOptions));
574
598
 
575
599
  return {
576
600
  task: 'spec-create',