dixi-spec-kit 1.5.0__py3-none-any.whl

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 (690) hide show
  1. dixi_spec_kit/__init__.py +1 -0
  2. dixi_spec_kit/__main__.py +3 -0
  3. dixi_spec_kit/cli.py +190 -0
  4. dixi_spec_kit/core.py +399 -0
  5. dixi_spec_kit/filesystem.py +124 -0
  6. dixi_spec_kit/locales/en.json +91 -0
  7. dixi_spec_kit/locales/es.json +91 -0
  8. dixi_spec_kit/resources/claude/en/CLAUDE.md +21 -0
  9. dixi_spec_kit/resources/claude/en/agents/dixi-architect.md +36 -0
  10. dixi_spec_kit/resources/claude/en/agents/dixi-developer.md +36 -0
  11. dixi_spec_kit/resources/claude/en/agents/dixi-reviewer.md +37 -0
  12. dixi_spec_kit/resources/claude/en/agents/dixi-tester.md +37 -0
  13. dixi_spec_kit/resources/claude/en/dixi.ai.md +31 -0
  14. dixi_spec_kit/resources/claude/en/dixi.analyze.md +31 -0
  15. dixi_spec_kit/resources/claude/en/dixi.architecture.md +32 -0
  16. dixi_spec_kit/resources/claude/en/dixi.build.md +33 -0
  17. dixi_spec_kit/resources/claude/en/dixi.change.md +32 -0
  18. dixi_spec_kit/resources/claude/en/dixi.clarify.md +31 -0
  19. dixi_spec_kit/resources/claude/en/dixi.compliance.md +31 -0
  20. dixi_spec_kit/resources/claude/en/dixi.contract.md +32 -0
  21. dixi_spec_kit/resources/claude/en/dixi.data.md +31 -0
  22. dixi_spec_kit/resources/claude/en/dixi.discover.md +32 -0
  23. dixi_spec_kit/resources/claude/en/dixi.domain.md +32 -0
  24. dixi_spec_kit/resources/claude/en/dixi.duediligence.md +31 -0
  25. dixi_spec_kit/resources/claude/en/dixi.finops.md +31 -0
  26. dixi_spec_kit/resources/claude/en/dixi.handoff.md +32 -0
  27. dixi_spec_kit/resources/claude/en/dixi.interview.md +34 -0
  28. dixi_spec_kit/resources/claude/en/dixi.operate.md +31 -0
  29. dixi_spec_kit/resources/claude/en/dixi.plan.md +32 -0
  30. dixi_spec_kit/resources/claude/en/dixi.promote.md +31 -0
  31. dixi_spec_kit/resources/claude/en/dixi.quality.md +31 -0
  32. dixi_spec_kit/resources/claude/en/dixi.release.md +31 -0
  33. dixi_spec_kit/resources/claude/en/dixi.review.md +32 -0
  34. dixi_spec_kit/resources/claude/en/dixi.risk-review.md +36 -0
  35. dixi_spec_kit/resources/claude/en/dixi.specify.md +32 -0
  36. dixi_spec_kit/resources/claude/en/dixi.status.md +31 -0
  37. dixi_spec_kit/resources/claude/en/dixi.tasks.md +31 -0
  38. dixi_spec_kit/resources/claude/en/dixi.threat-model.md +32 -0
  39. dixi_spec_kit/resources/claude/en/dixi.verify.md +31 -0
  40. dixi_spec_kit/resources/claude/es/CLAUDE.md +21 -0
  41. dixi_spec_kit/resources/claude/es/agents/dixi-architect.md +36 -0
  42. dixi_spec_kit/resources/claude/es/agents/dixi-developer.md +36 -0
  43. dixi_spec_kit/resources/claude/es/agents/dixi-reviewer.md +37 -0
  44. dixi_spec_kit/resources/claude/es/agents/dixi-tester.md +37 -0
  45. dixi_spec_kit/resources/claude/es/dixi.ai.md +31 -0
  46. dixi_spec_kit/resources/claude/es/dixi.analyze.md +31 -0
  47. dixi_spec_kit/resources/claude/es/dixi.architecture.md +32 -0
  48. dixi_spec_kit/resources/claude/es/dixi.build.md +33 -0
  49. dixi_spec_kit/resources/claude/es/dixi.change.md +32 -0
  50. dixi_spec_kit/resources/claude/es/dixi.clarify.md +31 -0
  51. dixi_spec_kit/resources/claude/es/dixi.compliance.md +31 -0
  52. dixi_spec_kit/resources/claude/es/dixi.contract.md +32 -0
  53. dixi_spec_kit/resources/claude/es/dixi.data.md +31 -0
  54. dixi_spec_kit/resources/claude/es/dixi.discover.md +32 -0
  55. dixi_spec_kit/resources/claude/es/dixi.domain.md +32 -0
  56. dixi_spec_kit/resources/claude/es/dixi.duediligence.md +31 -0
  57. dixi_spec_kit/resources/claude/es/dixi.finops.md +31 -0
  58. dixi_spec_kit/resources/claude/es/dixi.handoff.md +32 -0
  59. dixi_spec_kit/resources/claude/es/dixi.interview.md +34 -0
  60. dixi_spec_kit/resources/claude/es/dixi.operate.md +31 -0
  61. dixi_spec_kit/resources/claude/es/dixi.plan.md +32 -0
  62. dixi_spec_kit/resources/claude/es/dixi.promote.md +31 -0
  63. dixi_spec_kit/resources/claude/es/dixi.quality.md +31 -0
  64. dixi_spec_kit/resources/claude/es/dixi.release.md +31 -0
  65. dixi_spec_kit/resources/claude/es/dixi.review.md +32 -0
  66. dixi_spec_kit/resources/claude/es/dixi.risk-review.md +36 -0
  67. dixi_spec_kit/resources/claude/es/dixi.specify.md +32 -0
  68. dixi_spec_kit/resources/claude/es/dixi.status.md +31 -0
  69. dixi_spec_kit/resources/claude/es/dixi.tasks.md +31 -0
  70. dixi_spec_kit/resources/claude/es/dixi.threat-model.md +32 -0
  71. dixi_spec_kit/resources/claude/es/dixi.verify.md +31 -0
  72. dixi_spec_kit/resources/codex/en/dixi-ai.md +31 -0
  73. dixi_spec_kit/resources/codex/en/dixi-analyze.md +31 -0
  74. dixi_spec_kit/resources/codex/en/dixi-architecture.md +32 -0
  75. dixi_spec_kit/resources/codex/en/dixi-build.md +33 -0
  76. dixi_spec_kit/resources/codex/en/dixi-change.md +32 -0
  77. dixi_spec_kit/resources/codex/en/dixi-clarify.md +31 -0
  78. dixi_spec_kit/resources/codex/en/dixi-compliance.md +31 -0
  79. dixi_spec_kit/resources/codex/en/dixi-contract.md +32 -0
  80. dixi_spec_kit/resources/codex/en/dixi-data.md +31 -0
  81. dixi_spec_kit/resources/codex/en/dixi-discover.md +32 -0
  82. dixi_spec_kit/resources/codex/en/dixi-domain.md +32 -0
  83. dixi_spec_kit/resources/codex/en/dixi-duediligence.md +31 -0
  84. dixi_spec_kit/resources/codex/en/dixi-finops.md +31 -0
  85. dixi_spec_kit/resources/codex/en/dixi-handoff.md +32 -0
  86. dixi_spec_kit/resources/codex/en/dixi-interview.md +34 -0
  87. dixi_spec_kit/resources/codex/en/dixi-operate.md +31 -0
  88. dixi_spec_kit/resources/codex/en/dixi-plan.md +32 -0
  89. dixi_spec_kit/resources/codex/en/dixi-promote.md +31 -0
  90. dixi_spec_kit/resources/codex/en/dixi-quality.md +31 -0
  91. dixi_spec_kit/resources/codex/en/dixi-release.md +31 -0
  92. dixi_spec_kit/resources/codex/en/dixi-review.md +32 -0
  93. dixi_spec_kit/resources/codex/en/dixi-risk-review.md +36 -0
  94. dixi_spec_kit/resources/codex/en/dixi-specify.md +32 -0
  95. dixi_spec_kit/resources/codex/en/dixi-status.md +31 -0
  96. dixi_spec_kit/resources/codex/en/dixi-tasks.md +31 -0
  97. dixi_spec_kit/resources/codex/en/dixi-threat-model.md +32 -0
  98. dixi_spec_kit/resources/codex/en/dixi-verify.md +31 -0
  99. dixi_spec_kit/resources/codex/es/dixi-ai.md +31 -0
  100. dixi_spec_kit/resources/codex/es/dixi-analyze.md +31 -0
  101. dixi_spec_kit/resources/codex/es/dixi-architecture.md +32 -0
  102. dixi_spec_kit/resources/codex/es/dixi-build.md +33 -0
  103. dixi_spec_kit/resources/codex/es/dixi-change.md +32 -0
  104. dixi_spec_kit/resources/codex/es/dixi-clarify.md +31 -0
  105. dixi_spec_kit/resources/codex/es/dixi-compliance.md +31 -0
  106. dixi_spec_kit/resources/codex/es/dixi-contract.md +32 -0
  107. dixi_spec_kit/resources/codex/es/dixi-data.md +31 -0
  108. dixi_spec_kit/resources/codex/es/dixi-discover.md +32 -0
  109. dixi_spec_kit/resources/codex/es/dixi-domain.md +32 -0
  110. dixi_spec_kit/resources/codex/es/dixi-duediligence.md +31 -0
  111. dixi_spec_kit/resources/codex/es/dixi-finops.md +31 -0
  112. dixi_spec_kit/resources/codex/es/dixi-handoff.md +32 -0
  113. dixi_spec_kit/resources/codex/es/dixi-interview.md +34 -0
  114. dixi_spec_kit/resources/codex/es/dixi-operate.md +31 -0
  115. dixi_spec_kit/resources/codex/es/dixi-plan.md +32 -0
  116. dixi_spec_kit/resources/codex/es/dixi-promote.md +31 -0
  117. dixi_spec_kit/resources/codex/es/dixi-quality.md +31 -0
  118. dixi_spec_kit/resources/codex/es/dixi-release.md +31 -0
  119. dixi_spec_kit/resources/codex/es/dixi-review.md +32 -0
  120. dixi_spec_kit/resources/codex/es/dixi-risk-review.md +36 -0
  121. dixi_spec_kit/resources/codex/es/dixi-specify.md +32 -0
  122. dixi_spec_kit/resources/codex/es/dixi-status.md +31 -0
  123. dixi_spec_kit/resources/codex/es/dixi-tasks.md +31 -0
  124. dixi_spec_kit/resources/codex/es/dixi-threat-model.md +32 -0
  125. dixi_spec_kit/resources/codex/es/dixi-verify.md +31 -0
  126. dixi_spec_kit/resources/hooks/guard_attestation.py +141 -0
  127. dixi_spec_kit/resources/hooks/guard_secrets.py +90 -0
  128. dixi_spec_kit/resources/hooks/mode_gate.py +139 -0
  129. dixi_spec_kit/resources/hooks/protect_tests.py +251 -0
  130. dixi_spec_kit/resources/hooks/verify_on_stop.py +74 -0
  131. dixi_spec_kit/resources/profiles.json +278 -0
  132. dixi_spec_kit/resources/project.en.json +16 -0
  133. dixi_spec_kit/resources/project.es.json +16 -0
  134. dixi_spec_kit/resources/templates/en/00-governance/ai-governance.md +61 -0
  135. dixi_spec_kit/resources/templates/en/00-governance/data-governance.md +64 -0
  136. dixi_spec_kit/resources/templates/en/00-governance/engineering-standards.md +55 -0
  137. dixi_spec_kit/resources/templates/en/00-governance/environment-strategy.md +56 -0
  138. dixi_spec_kit/resources/templates/en/00-governance/integration-governance.md +55 -0
  139. dixi_spec_kit/resources/templates/en/00-governance/observability-standard.md +58 -0
  140. dixi_spec_kit/resources/templates/en/00-governance/policies/ai-usage-policy.md +61 -0
  141. dixi_spec_kit/resources/templates/en/00-governance/policies/branching-strategy.md +57 -0
  142. dixi_spec_kit/resources/templates/en/00-governance/policies/dependency-policy.md +53 -0
  143. dixi_spec_kit/resources/templates/en/00-governance/policies/documentation-policy.md +70 -0
  144. dixi_spec_kit/resources/templates/en/00-governance/policies/i18n-policy.md +54 -0
  145. dixi_spec_kit/resources/templates/en/00-governance/policies/incident-policy.md +63 -0
  146. dixi_spec_kit/resources/templates/en/00-governance/policies/naming-conventions.md +59 -0
  147. dixi_spec_kit/resources/templates/en/00-governance/policies/testing-policy.md +52 -0
  148. dixi_spec_kit/resources/templates/en/00-governance/policies/versioning-policy.md +50 -0
  149. dixi_spec_kit/resources/templates/en/00-governance/principles.md +66 -0
  150. dixi_spec_kit/resources/templates/en/00-governance/release-management-standard.md +55 -0
  151. dixi_spec_kit/resources/templates/en/00-governance/security-baseline.md +70 -0
  152. dixi_spec_kit/resources/templates/en/01-business/actors/external-partners.md +44 -0
  153. dixi_spec_kit/resources/templates/en/01-business/actors/internal-roles.md +46 -0
  154. dixi_spec_kit/resources/templates/en/01-business/actors/personas.md +50 -0
  155. dixi_spec_kit/resources/templates/en/01-business/domains/bounded-context-map.md +57 -0
  156. dixi_spec_kit/resources/templates/en/01-business/domains/business-capabilities.md +43 -0
  157. dixi_spec_kit/resources/templates/en/01-business/domains/domain-map.md +52 -0
  158. dixi_spec_kit/resources/templates/en/01-business/domains/ubiquitous-language.md +48 -0
  159. dixi_spec_kit/resources/templates/en/01-business/rules/business-rules.md +52 -0
  160. dixi_spec_kit/resources/templates/en/01-business/rules/compliance-rules.md +52 -0
  161. dixi_spec_kit/resources/templates/en/01-business/rules/operational-constraints.md +48 -0
  162. dixi_spec_kit/resources/templates/en/01-business/rules/pricing-rules.md +52 -0
  163. dixi_spec_kit/resources/templates/en/01-business/strategic-goals.md +57 -0
  164. dixi_spec_kit/resources/templates/en/01-business/value-proposition.md +53 -0
  165. dixi_spec_kit/resources/templates/en/02-platform/cross-product-integrations.md +49 -0
  166. dixi_spec_kit/resources/templates/en/02-platform/ecosystem-landscape.md +53 -0
  167. dixi_spec_kit/resources/templates/en/02-platform/identity-and-access-strategy.md +50 -0
  168. dixi_spec_kit/resources/templates/en/02-platform/platform-overview.md +57 -0
  169. dixi_spec_kit/resources/templates/en/02-platform/product-map.md +55 -0
  170. dixi_spec_kit/resources/templates/en/02-platform/products/README.md +48 -0
  171. dixi_spec_kit/resources/templates/en/02-platform/shared-services-map.md +51 -0
  172. dixi_spec_kit/resources/templates/en/02-platform/tenant-strategy.md +52 -0
  173. dixi_spec_kit/resources/templates/en/06-flows/README.md +49 -0
  174. dixi_spec_kit/resources/templates/en/07-contracts/agent-interfaces/README.md +58 -0
  175. dixi_spec_kit/resources/templates/en/07-contracts/api/README.md +53 -0
  176. dixi_spec_kit/resources/templates/en/07-contracts/commands/README.md +53 -0
  177. dixi_spec_kit/resources/templates/en/07-contracts/events/README.md +53 -0
  178. dixi_spec_kit/resources/templates/en/07-contracts/external/README.md +48 -0
  179. dixi_spec_kit/resources/templates/en/07-contracts/mcp/README.md +49 -0
  180. dixi_spec_kit/resources/templates/en/07-contracts/schemas/README.md +52 -0
  181. dixi_spec_kit/resources/templates/en/08-data/audit-fields-standard.md +61 -0
  182. dixi_spec_kit/resources/templates/en/08-data/canonical-data-model.md +67 -0
  183. dixi_spec_kit/resources/templates/en/08-data/data-architecture.md +65 -0
  184. dixi_spec_kit/resources/templates/en/08-data/master-data.md +56 -0
  185. dixi_spec_kit/resources/templates/en/08-data/migrations/data-migration-playbook.md +76 -0
  186. dixi_spec_kit/resources/templates/en/08-data/migrations/migration-strategy.md +69 -0
  187. dixi_spec_kit/resources/templates/en/08-data/migrations/zero-downtime-migrations.md +62 -0
  188. dixi_spec_kit/resources/templates/en/08-data/models/erd-overview.md +56 -0
  189. dixi_spec_kit/resources/templates/en/08-data/pii-classification.md +62 -0
  190. dixi_spec_kit/resources/templates/en/08-data/reporting-dimensions.md +55 -0
  191. dixi_spec_kit/resources/templates/en/08-data/retention-policy.md +59 -0
  192. dixi_spec_kit/resources/templates/en/09-architecture/adr/README.md +54 -0
  193. dixi_spec_kit/resources/templates/en/09-architecture/component-diagram.md +52 -0
  194. dixi_spec_kit/resources/templates/en/09-architecture/container-diagram.md +56 -0
  195. dixi_spec_kit/resources/templates/en/09-architecture/deployment-architecture.md +62 -0
  196. dixi_spec_kit/resources/templates/en/09-architecture/event-architecture.md +59 -0
  197. dixi_spec_kit/resources/templates/en/09-architecture/integration-architecture.md +56 -0
  198. dixi_spec_kit/resources/templates/en/09-architecture/multi-tenant-architecture.md +58 -0
  199. dixi_spec_kit/resources/templates/en/09-architecture/offline-sync-architecture.md +63 -0
  200. dixi_spec_kit/resources/templates/en/09-architecture/performance-architecture.md +50 -0
  201. dixi_spec_kit/resources/templates/en/09-architecture/resilience-architecture.md +52 -0
  202. dixi_spec_kit/resources/templates/en/09-architecture/security-architecture.md +64 -0
  203. dixi_spec_kit/resources/templates/en/09-architecture/system-context.md +54 -0
  204. dixi_spec_kit/resources/templates/en/10-engineering/api-design-standard.md +61 -0
  205. dixi_spec_kit/resources/templates/en/10-engineering/coding-standards.md +63 -0
  206. dixi_spec_kit/resources/templates/en/10-engineering/error-handling-standard.md +56 -0
  207. dixi_spec_kit/resources/templates/en/10-engineering/event-design-standard.md +60 -0
  208. dixi_spec_kit/resources/templates/en/10-engineering/logging-standard.md +59 -0
  209. dixi_spec_kit/resources/templates/en/10-engineering/package-structure-standard.md +57 -0
  210. dixi_spec_kit/resources/templates/en/10-engineering/secure-coding-standard.md +54 -0
  211. dixi_spec_kit/resources/templates/en/10-engineering/templates/adr-template.md +69 -0
  212. dixi_spec_kit/resources/templates/en/10-engineering/templates/agent-spec-template.md +71 -0
  213. dixi_spec_kit/resources/templates/en/10-engineering/templates/api-template.yaml +158 -0
  214. dixi_spec_kit/resources/templates/en/10-engineering/templates/domain-template.md +66 -0
  215. dixi_spec_kit/resources/templates/en/10-engineering/templates/event-template.json +19 -0
  216. dixi_spec_kit/resources/templates/en/10-engineering/templates/external-integration-template.md +72 -0
  217. dixi_spec_kit/resources/templates/en/10-engineering/templates/feature-template.md +75 -0
  218. dixi_spec_kit/resources/templates/en/10-engineering/templates/flow-template.md +76 -0
  219. dixi_spec_kit/resources/templates/en/10-engineering/templates/mcp-server-template.md +72 -0
  220. dixi_spec_kit/resources/templates/en/10-engineering/templates/module-template.md +70 -0
  221. dixi_spec_kit/resources/templates/en/10-engineering/templates/page-template.md +60 -0
  222. dixi_spec_kit/resources/templates/en/10-engineering/templates/postmortem-template.md +73 -0
  223. dixi_spec_kit/resources/templates/en/10-engineering/templates/product-template.md +66 -0
  224. dixi_spec_kit/resources/templates/en/10-engineering/templates/prompt-template.md +67 -0
  225. dixi_spec_kit/resources/templates/en/10-engineering/templates/runbook-template.md +68 -0
  226. dixi_spec_kit/resources/templates/en/11-quality/acceptance-strategy.md +54 -0
  227. dixi_spec_kit/resources/templates/en/11-quality/ai-llm-testing-guide.md +53 -0
  228. dixi_spec_kit/resources/templates/en/11-quality/bdd-guide.md +56 -0
  229. dixi_spec_kit/resources/templates/en/11-quality/contract-testing-guide.md +50 -0
  230. dixi_spec_kit/resources/templates/en/11-quality/engineering-metrics.md +46 -0
  231. dixi_spec_kit/resources/templates/en/11-quality/mutation-testing-guide.md +53 -0
  232. dixi_spec_kit/resources/templates/en/11-quality/non-functional-requirements.md +47 -0
  233. dixi_spec_kit/resources/templates/en/11-quality/performance-budgets/api-latency-budgets.md +47 -0
  234. dixi_spec_kit/resources/templates/en/11-quality/performance-budgets/web-vitals-budgets.md +44 -0
  235. dixi_spec_kit/resources/templates/en/11-quality/performance-test-plan.md +50 -0
  236. dixi_spec_kit/resources/templates/en/11-quality/property-based-testing-guide.md +51 -0
  237. dixi_spec_kit/resources/templates/en/11-quality/quality-strategy.md +51 -0
  238. dixi_spec_kit/resources/templates/en/11-quality/regression-plan.md +50 -0
  239. dixi_spec_kit/resources/templates/en/11-quality/risk-based-review.md +46 -0
  240. dixi_spec_kit/resources/templates/en/11-quality/security-test-plan.md +47 -0
  241. dixi_spec_kit/resources/templates/en/11-quality/tdd-guide.md +47 -0
  242. dixi_spec_kit/resources/templates/en/11-quality/test-pyramid.md +49 -0
  243. dixi_spec_kit/resources/templates/en/11-quality/verification-ladder.md +54 -0
  244. dixi_spec_kit/resources/templates/en/12-observability/alerting-rules.md +55 -0
  245. dixi_spec_kit/resources/templates/en/12-observability/dashboard-map.md +43 -0
  246. dixi_spec_kit/resources/templates/en/12-observability/logging-map.md +47 -0
  247. dixi_spec_kit/resources/templates/en/12-observability/metrics-catalog.md +53 -0
  248. dixi_spec_kit/resources/templates/en/12-observability/observability-strategy.md +61 -0
  249. dixi_spec_kit/resources/templates/en/12-observability/runbooks/README.md +54 -0
  250. dixi_spec_kit/resources/templates/en/12-observability/slis-slos-slas.md +52 -0
  251. dixi_spec_kit/resources/templates/en/12-observability/tracing-strategy.md +55 -0
  252. dixi_spec_kit/resources/templates/en/13-security/ai-agent-hardening.md +55 -0
  253. dixi_spec_kit/resources/templates/en/13-security/authn-authz-model.md +51 -0
  254. dixi_spec_kit/resources/templates/en/13-security/break-glass-access.md +51 -0
  255. dixi_spec_kit/resources/templates/en/13-security/data-protection-controls.md +53 -0
  256. dixi_spec_kit/resources/templates/en/13-security/dependency-scanning.md +51 -0
  257. dixi_spec_kit/resources/templates/en/13-security/incident-response.md +58 -0
  258. dixi_spec_kit/resources/templates/en/13-security/key-rotation.md +51 -0
  259. dixi_spec_kit/resources/templates/en/13-security/licensing/approved-licenses.md +52 -0
  260. dixi_spec_kit/resources/templates/en/13-security/licensing/licensing-policy.md +49 -0
  261. dixi_spec_kit/resources/templates/en/13-security/licensing/sbom-strategy.md +48 -0
  262. dixi_spec_kit/resources/templates/en/13-security/llm-application-security.md +50 -0
  263. dixi_spec_kit/resources/templates/en/13-security/risk-register.md +45 -0
  264. dixi_spec_kit/resources/templates/en/13-security/secret-management.md +55 -0
  265. dixi_spec_kit/resources/templates/en/13-security/threat-model.md +67 -0
  266. dixi_spec_kit/resources/templates/en/13-security/vulnerability-management.md +55 -0
  267. dixi_spec_kit/resources/templates/en/14-delivery/backup-and-recovery.md +43 -0
  268. dixi_spec_kit/resources/templates/en/14-delivery/ci-cd-overview.md +56 -0
  269. dixi_spec_kit/resources/templates/en/14-delivery/continuous-verification.md +49 -0
  270. dixi_spec_kit/resources/templates/en/14-delivery/cron-jobs.md +48 -0
  271. dixi_spec_kit/resources/templates/en/14-delivery/deployment-strategy.md +49 -0
  272. dixi_spec_kit/resources/templates/en/14-delivery/disaster-recovery/bcp-plan.md +59 -0
  273. dixi_spec_kit/resources/templates/en/14-delivery/disaster-recovery/dr-runbook.md +47 -0
  274. dixi_spec_kit/resources/templates/en/14-delivery/disaster-recovery/dr-strategy.md +51 -0
  275. dixi_spec_kit/resources/templates/en/14-delivery/disaster-recovery/rto-rpo-matrix.md +45 -0
  276. dixi_spec_kit/resources/templates/en/14-delivery/environments.md +48 -0
  277. dixi_spec_kit/resources/templates/en/14-delivery/infra-modules.md +57 -0
  278. dixi_spec_kit/resources/templates/en/14-delivery/pipelines/build-pipeline.md +51 -0
  279. dixi_spec_kit/resources/templates/en/14-delivery/pipelines/migration-pipeline.md +48 -0
  280. dixi_spec_kit/resources/templates/en/14-delivery/pipelines/release-pipeline.md +50 -0
  281. dixi_spec_kit/resources/templates/en/14-delivery/rollback-strategy.md +50 -0
  282. dixi_spec_kit/resources/templates/en/14-delivery/workers-and-queues.md +50 -0
  283. dixi_spec_kit/resources/templates/en/15-operations/escalation-matrix.md +54 -0
  284. dixi_spec_kit/resources/templates/en/15-operations/incident-levels.md +53 -0
  285. dixi_spec_kit/resources/templates/en/15-operations/known-issues.md +47 -0
  286. dixi_spec_kit/resources/templates/en/15-operations/maintenance-window-policy.md +56 -0
  287. dixi_spec_kit/resources/templates/en/15-operations/playbooks/comms-breach-customer.md +59 -0
  288. dixi_spec_kit/resources/templates/en/15-operations/playbooks/comms-outage-customer.md +57 -0
  289. dixi_spec_kit/resources/templates/en/15-operations/playbooks/comms-outage-internal.md +54 -0
  290. dixi_spec_kit/resources/templates/en/15-operations/playbooks/cost-spike.md +46 -0
  291. dixi_spec_kit/resources/templates/en/15-operations/playbooks/data-breach.md +53 -0
  292. dixi_spec_kit/resources/templates/en/15-operations/playbooks/manual-refund.md +51 -0
  293. dixi_spec_kit/resources/templates/en/15-operations/playbooks/reprocess-events.md +59 -0
  294. dixi_spec_kit/resources/templates/en/15-operations/playbooks/restore-service.md +54 -0
  295. dixi_spec_kit/resources/templates/en/15-operations/playbooks/tenant-onboarding.md +56 -0
  296. dixi_spec_kit/resources/templates/en/15-operations/service-catalog.md +51 -0
  297. dixi_spec_kit/resources/templates/en/15-operations/support-model.md +56 -0
  298. dixi_spec_kit/resources/templates/en/15-operations/team/on-call-rotation.md +56 -0
  299. dixi_spec_kit/resources/templates/en/15-operations/team/raci-matrix.md +57 -0
  300. dixi_spec_kit/resources/templates/en/15-operations/vendor-management/sla-matrix.md +46 -0
  301. dixi_spec_kit/resources/templates/en/15-operations/vendor-management/vendor-catalog.md +53 -0
  302. dixi_spec_kit/resources/templates/en/15-operations/vendor-management/vendor-risk-assessment.md +56 -0
  303. dixi_spec_kit/resources/templates/en/16-product/analytics-events-catalog.md +68 -0
  304. dixi_spec_kit/resources/templates/en/16-product/experimentation-framework.md +66 -0
  305. dixi_spec_kit/resources/templates/en/16-product/feature-lifecycle.md +62 -0
  306. dixi_spec_kit/resources/templates/en/16-product/prioritization-framework.md +69 -0
  307. dixi_spec_kit/resources/templates/en/16-product/release-notes.md +74 -0
  308. dixi_spec_kit/resources/templates/en/16-product/roadmap.md +64 -0
  309. dixi_spec_kit/resources/templates/en/17-ux/accessibility-standard.md +72 -0
  310. dixi_spec_kit/resources/templates/en/17-ux/content-guidelines.md +66 -0
  311. dixi_spec_kit/resources/templates/en/17-ux/design-principles.md +49 -0
  312. dixi_spec_kit/resources/templates/en/17-ux/design-tokens.md +65 -0
  313. dixi_spec_kit/resources/templates/en/17-ux/information-architecture.md +70 -0
  314. dixi_spec_kit/resources/templates/en/17-ux/navigation-map.md +59 -0
  315. dixi_spec_kit/resources/templates/en/17-ux/ui-state-catalog.md +52 -0
  316. dixi_spec_kit/resources/templates/en/18-knowledge-base/acronyms.md +66 -0
  317. dixi_spec_kit/resources/templates/en/18-knowledge-base/decision-log.md +43 -0
  318. dixi_spec_kit/resources/templates/en/18-knowledge-base/faq.md +55 -0
  319. dixi_spec_kit/resources/templates/en/18-knowledge-base/glossary.md +53 -0
  320. dixi_spec_kit/resources/templates/en/18-knowledge-base/maturity-model.md +51 -0
  321. dixi_spec_kit/resources/templates/en/18-knowledge-base/onboarding-guide.md +64 -0
  322. dixi_spec_kit/resources/templates/en/18-knowledge-base/troubleshooting-index.md +50 -0
  323. dixi_spec_kit/resources/templates/en/19-references/reading-list.md +66 -0
  324. dixi_spec_kit/resources/templates/en/20-repos/README.md +60 -0
  325. dixi_spec_kit/resources/templates/en/20-repos/backend-service.md +65 -0
  326. dixi_spec_kit/resources/templates/en/20-repos/frontend-app.md +64 -0
  327. dixi_spec_kit/resources/templates/en/20-repos/mcp-server.md +61 -0
  328. dixi_spec_kit/resources/templates/en/20-repos/mobile-app.md +67 -0
  329. dixi_spec_kit/resources/templates/en/20-repos/worker.md +65 -0
  330. dixi_spec_kit/resources/templates/en/21-ai/agents/agent-architecture.md +53 -0
  331. dixi_spec_kit/resources/templates/en/21-ai/agents/capability-matrix.md +49 -0
  332. dixi_spec_kit/resources/templates/en/21-ai/agents/guardrails.md +51 -0
  333. dixi_spec_kit/resources/templates/en/21-ai/agents/human-in-the-loop.md +53 -0
  334. dixi_spec_kit/resources/templates/en/21-ai/governance/ai-audit-trail.md +53 -0
  335. dixi_spec_kit/resources/templates/en/21-ai/governance/quality-gates.md +49 -0
  336. dixi_spec_kit/resources/templates/en/21-ai/governance/responsible-ai.md +62 -0
  337. dixi_spec_kit/resources/templates/en/21-ai/llm/context-strategy.md +54 -0
  338. dixi_spec_kit/resources/templates/en/21-ai/llm/model-strategy.md +52 -0
  339. dixi_spec_kit/resources/templates/en/21-ai/llm/prompt-library.md +56 -0
  340. dixi_spec_kit/resources/templates/en/21-ai/mcp/mcp-architecture.md +46 -0
  341. dixi_spec_kit/resources/templates/en/21-ai/mcp/tool-catalog.md +44 -0
  342. dixi_spec_kit/resources/templates/en/21-ai/memory/memory-architecture.md +50 -0
  343. dixi_spec_kit/resources/templates/en/21-ai/sdd/adoption-guide.md +52 -0
  344. dixi_spec_kit/resources/templates/en/21-ai/sdd/methodology.md +46 -0
  345. dixi_spec_kit/resources/templates/en/21-ai/sdd/spec-lifecycle.md +54 -0
  346. dixi_spec_kit/resources/templates/en/21-ai/sdd/traceability-matrix.md +53 -0
  347. dixi_spec_kit/resources/templates/en/21-ai/sdd/validation-rules.md +59 -0
  348. dixi_spec_kit/resources/templates/en/22-finops/ai-cost-management.md +62 -0
  349. dixi_spec_kit/resources/templates/en/22-finops/budget-alerts.md +53 -0
  350. dixi_spec_kit/resources/templates/en/22-finops/cloud-cost-optimization.md +64 -0
  351. dixi_spec_kit/resources/templates/en/22-finops/cost-allocation-model.md +62 -0
  352. dixi_spec_kit/resources/templates/en/22-finops/cost-strategy.md +55 -0
  353. dixi_spec_kit/resources/templates/en/22-finops/templates/cost-report-template.md +61 -0
  354. dixi_spec_kit/resources/templates/en/23-compliance/compliance-overview.md +59 -0
  355. dixi_spec_kit/resources/templates/en/23-compliance/dpa-template.md +54 -0
  356. dixi_spec_kit/resources/templates/en/23-compliance/gdpr/gdpr-readiness.md +47 -0
  357. dixi_spec_kit/resources/templates/en/23-compliance/gdpr/sub-processors.md +42 -0
  358. dixi_spec_kit/resources/templates/en/23-compliance/hipaa/README.md +47 -0
  359. dixi_spec_kit/resources/templates/en/23-compliance/iso-27001/controls-mapping.md +47 -0
  360. dixi_spec_kit/resources/templates/en/23-compliance/iso-27001/isms-policy.md +66 -0
  361. dixi_spec_kit/resources/templates/en/23-compliance/iso-27001/iso-27001-readiness.md +51 -0
  362. dixi_spec_kit/resources/templates/en/23-compliance/iso-soc2-overlap-mapping.md +46 -0
  363. dixi_spec_kit/resources/templates/en/23-compliance/pci-dss/README.md +51 -0
  364. dixi_spec_kit/resources/templates/en/23-compliance/regulatory-watch.md +52 -0
  365. dixi_spec_kit/resources/templates/en/23-compliance/soc2/soc2-controls-matrix.md +43 -0
  366. dixi_spec_kit/resources/templates/en/23-compliance/soc2/soc2-readiness.md +48 -0
  367. dixi_spec_kit/resources/templates/en/23-compliance/soc2/system-description.md +57 -0
  368. dixi_spec_kit/resources/templates/en/23-compliance/soc2/type-i-vs-type-ii.md +51 -0
  369. dixi_spec_kit/resources/templates/en/24-research/competitive-analysis.md +56 -0
  370. dixi_spec_kit/resources/templates/en/24-research/discovery-strategy.md +67 -0
  371. dixi_spec_kit/resources/templates/en/24-research/interview-templates/discovery-interview.md +67 -0
  372. dixi_spec_kit/resources/templates/en/24-research/interview-templates/usability-test.md +75 -0
  373. dixi_spec_kit/resources/templates/en/24-research/jobs-to-be-done.md +65 -0
  374. dixi_spec_kit/resources/templates/en/24-research/persona-template.md +71 -0
  375. dixi_spec_kit/resources/templates/en/24-research/research-log/README.md +62 -0
  376. dixi_spec_kit/resources/templates/en/24-research/user-research-plan.md +73 -0
  377. dixi_spec_kit/resources/templates/en/25-growth/ab-testing-framework.md +63 -0
  378. dixi_spec_kit/resources/templates/en/25-growth/content-strategy.md +62 -0
  379. dixi_spec_kit/resources/templates/en/25-growth/conversion-funnel.md +60 -0
  380. dixi_spec_kit/resources/templates/en/25-growth/growth-strategy.md +67 -0
  381. dixi_spec_kit/resources/templates/en/25-growth/landing-pages-catalog.md +53 -0
  382. dixi_spec_kit/resources/templates/en/25-growth/seo-strategy.md +60 -0
  383. dixi_spec_kit/resources/templates/en/26-customer-success/churn-playbook.md +64 -0
  384. dixi_spec_kit/resources/templates/en/26-customer-success/help-center-structure.md +68 -0
  385. dixi_spec_kit/resources/templates/en/26-customer-success/success-strategy.md +61 -0
  386. dixi_spec_kit/resources/templates/en/26-customer-success/support-tiers.md +66 -0
  387. dixi_spec_kit/resources/templates/en/27-fixtures/demo-scenarios.md +58 -0
  388. dixi_spec_kit/resources/templates/en/27-fixtures/fixtures-strategy.md +54 -0
  389. dixi_spec_kit/resources/templates/en/27-fixtures/sample-data-catalog.md +58 -0
  390. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/01-infrastructure.md +49 -0
  391. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/02-architecture.md +50 -0
  392. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/03-source-code.md +52 -0
  393. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/04-security.md +52 -0
  394. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/05-data-management.md +51 -0
  395. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/06-processes.md +50 -0
  396. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/07-team.md +53 -0
  397. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/08-financial.md +49 -0
  398. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/09-vendors-partners.md +54 -0
  399. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/10-innovation.md +47 -0
  400. dixi_spec_kit/resources/templates/en/28-due-diligence/checklist/11-final-report.md +52 -0
  401. dixi_spec_kit/resources/templates/en/28-due-diligence/dd-report-template.md +66 -0
  402. dixi_spec_kit/resources/templates/en/28-due-diligence/dd-strategy.md +66 -0
  403. dixi_spec_kit/resources/templates/en/28-due-diligence/playbooks/buyer-dd-playbook.md +51 -0
  404. dixi_spec_kit/resources/templates/en/28-due-diligence/playbooks/enterprise-customer-dd-playbook.md +53 -0
  405. dixi_spec_kit/resources/templates/en/28-due-diligence/playbooks/internal-audit-dd-playbook.md +53 -0
  406. dixi_spec_kit/resources/templates/en/28-due-diligence/playbooks/vendor-dd-playbook.md +52 -0
  407. dixi_spec_kit/resources/templates/es/00-governance/ai-governance.md +61 -0
  408. dixi_spec_kit/resources/templates/es/00-governance/data-governance.md +64 -0
  409. dixi_spec_kit/resources/templates/es/00-governance/engineering-standards.md +55 -0
  410. dixi_spec_kit/resources/templates/es/00-governance/environment-strategy.md +56 -0
  411. dixi_spec_kit/resources/templates/es/00-governance/integration-governance.md +55 -0
  412. dixi_spec_kit/resources/templates/es/00-governance/observability-standard.md +58 -0
  413. dixi_spec_kit/resources/templates/es/00-governance/policies/ai-usage-policy.md +61 -0
  414. dixi_spec_kit/resources/templates/es/00-governance/policies/branching-strategy.md +57 -0
  415. dixi_spec_kit/resources/templates/es/00-governance/policies/dependency-policy.md +53 -0
  416. dixi_spec_kit/resources/templates/es/00-governance/policies/documentation-policy.md +70 -0
  417. dixi_spec_kit/resources/templates/es/00-governance/policies/i18n-policy.md +54 -0
  418. dixi_spec_kit/resources/templates/es/00-governance/policies/incident-policy.md +63 -0
  419. dixi_spec_kit/resources/templates/es/00-governance/policies/naming-conventions.md +59 -0
  420. dixi_spec_kit/resources/templates/es/00-governance/policies/testing-policy.md +52 -0
  421. dixi_spec_kit/resources/templates/es/00-governance/policies/versioning-policy.md +50 -0
  422. dixi_spec_kit/resources/templates/es/00-governance/principles.md +66 -0
  423. dixi_spec_kit/resources/templates/es/00-governance/release-management-standard.md +55 -0
  424. dixi_spec_kit/resources/templates/es/00-governance/security-baseline.md +70 -0
  425. dixi_spec_kit/resources/templates/es/01-business/actors/external-partners.md +44 -0
  426. dixi_spec_kit/resources/templates/es/01-business/actors/internal-roles.md +46 -0
  427. dixi_spec_kit/resources/templates/es/01-business/actors/personas.md +51 -0
  428. dixi_spec_kit/resources/templates/es/01-business/domains/bounded-context-map.md +57 -0
  429. dixi_spec_kit/resources/templates/es/01-business/domains/business-capabilities.md +44 -0
  430. dixi_spec_kit/resources/templates/es/01-business/domains/domain-map.md +53 -0
  431. dixi_spec_kit/resources/templates/es/01-business/domains/ubiquitous-language.md +50 -0
  432. dixi_spec_kit/resources/templates/es/01-business/rules/business-rules.md +52 -0
  433. dixi_spec_kit/resources/templates/es/01-business/rules/compliance-rules.md +53 -0
  434. dixi_spec_kit/resources/templates/es/01-business/rules/operational-constraints.md +50 -0
  435. dixi_spec_kit/resources/templates/es/01-business/rules/pricing-rules.md +54 -0
  436. dixi_spec_kit/resources/templates/es/01-business/strategic-goals.md +57 -0
  437. dixi_spec_kit/resources/templates/es/01-business/value-proposition.md +54 -0
  438. dixi_spec_kit/resources/templates/es/02-platform/cross-product-integrations.md +50 -0
  439. dixi_spec_kit/resources/templates/es/02-platform/ecosystem-landscape.md +54 -0
  440. dixi_spec_kit/resources/templates/es/02-platform/identity-and-access-strategy.md +51 -0
  441. dixi_spec_kit/resources/templates/es/02-platform/platform-overview.md +58 -0
  442. dixi_spec_kit/resources/templates/es/02-platform/product-map.md +56 -0
  443. dixi_spec_kit/resources/templates/es/02-platform/products/README.md +48 -0
  444. dixi_spec_kit/resources/templates/es/02-platform/shared-services-map.md +53 -0
  445. dixi_spec_kit/resources/templates/es/02-platform/tenant-strategy.md +53 -0
  446. dixi_spec_kit/resources/templates/es/06-flows/README.md +50 -0
  447. dixi_spec_kit/resources/templates/es/07-contracts/agent-interfaces/README.md +58 -0
  448. dixi_spec_kit/resources/templates/es/07-contracts/api/README.md +53 -0
  449. dixi_spec_kit/resources/templates/es/07-contracts/commands/README.md +53 -0
  450. dixi_spec_kit/resources/templates/es/07-contracts/events/README.md +54 -0
  451. dixi_spec_kit/resources/templates/es/07-contracts/external/README.md +48 -0
  452. dixi_spec_kit/resources/templates/es/07-contracts/mcp/README.md +52 -0
  453. dixi_spec_kit/resources/templates/es/07-contracts/schemas/README.md +53 -0
  454. dixi_spec_kit/resources/templates/es/08-data/audit-fields-standard.md +61 -0
  455. dixi_spec_kit/resources/templates/es/08-data/canonical-data-model.md +67 -0
  456. dixi_spec_kit/resources/templates/es/08-data/data-architecture.md +65 -0
  457. dixi_spec_kit/resources/templates/es/08-data/master-data.md +56 -0
  458. dixi_spec_kit/resources/templates/es/08-data/migrations/data-migration-playbook.md +76 -0
  459. dixi_spec_kit/resources/templates/es/08-data/migrations/migration-strategy.md +69 -0
  460. dixi_spec_kit/resources/templates/es/08-data/migrations/zero-downtime-migrations.md +62 -0
  461. dixi_spec_kit/resources/templates/es/08-data/models/erd-overview.md +56 -0
  462. dixi_spec_kit/resources/templates/es/08-data/pii-classification.md +62 -0
  463. dixi_spec_kit/resources/templates/es/08-data/reporting-dimensions.md +55 -0
  464. dixi_spec_kit/resources/templates/es/08-data/retention-policy.md +59 -0
  465. dixi_spec_kit/resources/templates/es/09-architecture/adr/README.md +54 -0
  466. dixi_spec_kit/resources/templates/es/09-architecture/component-diagram.md +52 -0
  467. dixi_spec_kit/resources/templates/es/09-architecture/container-diagram.md +56 -0
  468. dixi_spec_kit/resources/templates/es/09-architecture/deployment-architecture.md +62 -0
  469. dixi_spec_kit/resources/templates/es/09-architecture/event-architecture.md +59 -0
  470. dixi_spec_kit/resources/templates/es/09-architecture/integration-architecture.md +56 -0
  471. dixi_spec_kit/resources/templates/es/09-architecture/multi-tenant-architecture.md +58 -0
  472. dixi_spec_kit/resources/templates/es/09-architecture/offline-sync-architecture.md +63 -0
  473. dixi_spec_kit/resources/templates/es/09-architecture/performance-architecture.md +50 -0
  474. dixi_spec_kit/resources/templates/es/09-architecture/resilience-architecture.md +52 -0
  475. dixi_spec_kit/resources/templates/es/09-architecture/security-architecture.md +64 -0
  476. dixi_spec_kit/resources/templates/es/09-architecture/system-context.md +54 -0
  477. dixi_spec_kit/resources/templates/es/10-engineering/api-design-standard.md +61 -0
  478. dixi_spec_kit/resources/templates/es/10-engineering/coding-standards.md +63 -0
  479. dixi_spec_kit/resources/templates/es/10-engineering/error-handling-standard.md +57 -0
  480. dixi_spec_kit/resources/templates/es/10-engineering/event-design-standard.md +60 -0
  481. dixi_spec_kit/resources/templates/es/10-engineering/logging-standard.md +59 -0
  482. dixi_spec_kit/resources/templates/es/10-engineering/package-structure-standard.md +56 -0
  483. dixi_spec_kit/resources/templates/es/10-engineering/secure-coding-standard.md +54 -0
  484. dixi_spec_kit/resources/templates/es/10-engineering/templates/adr-template.md +69 -0
  485. dixi_spec_kit/resources/templates/es/10-engineering/templates/agent-spec-template.md +71 -0
  486. dixi_spec_kit/resources/templates/es/10-engineering/templates/api-template.yaml +158 -0
  487. dixi_spec_kit/resources/templates/es/10-engineering/templates/domain-template.md +66 -0
  488. dixi_spec_kit/resources/templates/es/10-engineering/templates/event-template.json +19 -0
  489. dixi_spec_kit/resources/templates/es/10-engineering/templates/external-integration-template.md +72 -0
  490. dixi_spec_kit/resources/templates/es/10-engineering/templates/feature-template.md +75 -0
  491. dixi_spec_kit/resources/templates/es/10-engineering/templates/flow-template.md +76 -0
  492. dixi_spec_kit/resources/templates/es/10-engineering/templates/mcp-server-template.md +72 -0
  493. dixi_spec_kit/resources/templates/es/10-engineering/templates/module-template.md +70 -0
  494. dixi_spec_kit/resources/templates/es/10-engineering/templates/page-template.md +60 -0
  495. dixi_spec_kit/resources/templates/es/10-engineering/templates/postmortem-template.md +73 -0
  496. dixi_spec_kit/resources/templates/es/10-engineering/templates/product-template.md +66 -0
  497. dixi_spec_kit/resources/templates/es/10-engineering/templates/prompt-template.md +67 -0
  498. dixi_spec_kit/resources/templates/es/10-engineering/templates/runbook-template.md +69 -0
  499. dixi_spec_kit/resources/templates/es/11-quality/acceptance-strategy.md +54 -0
  500. dixi_spec_kit/resources/templates/es/11-quality/ai-llm-testing-guide.md +53 -0
  501. dixi_spec_kit/resources/templates/es/11-quality/bdd-guide.md +56 -0
  502. dixi_spec_kit/resources/templates/es/11-quality/contract-testing-guide.md +50 -0
  503. dixi_spec_kit/resources/templates/es/11-quality/engineering-metrics.md +46 -0
  504. dixi_spec_kit/resources/templates/es/11-quality/mutation-testing-guide.md +53 -0
  505. dixi_spec_kit/resources/templates/es/11-quality/non-functional-requirements.md +47 -0
  506. dixi_spec_kit/resources/templates/es/11-quality/performance-budgets/api-latency-budgets.md +47 -0
  507. dixi_spec_kit/resources/templates/es/11-quality/performance-budgets/web-vitals-budgets.md +44 -0
  508. dixi_spec_kit/resources/templates/es/11-quality/performance-test-plan.md +50 -0
  509. dixi_spec_kit/resources/templates/es/11-quality/property-based-testing-guide.md +51 -0
  510. dixi_spec_kit/resources/templates/es/11-quality/quality-strategy.md +51 -0
  511. dixi_spec_kit/resources/templates/es/11-quality/regression-plan.md +50 -0
  512. dixi_spec_kit/resources/templates/es/11-quality/risk-based-review.md +46 -0
  513. dixi_spec_kit/resources/templates/es/11-quality/security-test-plan.md +47 -0
  514. dixi_spec_kit/resources/templates/es/11-quality/tdd-guide.md +47 -0
  515. dixi_spec_kit/resources/templates/es/11-quality/test-pyramid.md +49 -0
  516. dixi_spec_kit/resources/templates/es/11-quality/verification-ladder.md +54 -0
  517. dixi_spec_kit/resources/templates/es/12-observability/alerting-rules.md +55 -0
  518. dixi_spec_kit/resources/templates/es/12-observability/dashboard-map.md +43 -0
  519. dixi_spec_kit/resources/templates/es/12-observability/logging-map.md +47 -0
  520. dixi_spec_kit/resources/templates/es/12-observability/metrics-catalog.md +53 -0
  521. dixi_spec_kit/resources/templates/es/12-observability/observability-strategy.md +61 -0
  522. dixi_spec_kit/resources/templates/es/12-observability/runbooks/README.md +54 -0
  523. dixi_spec_kit/resources/templates/es/12-observability/slis-slos-slas.md +52 -0
  524. dixi_spec_kit/resources/templates/es/12-observability/tracing-strategy.md +55 -0
  525. dixi_spec_kit/resources/templates/es/13-security/ai-agent-hardening.md +55 -0
  526. dixi_spec_kit/resources/templates/es/13-security/authn-authz-model.md +51 -0
  527. dixi_spec_kit/resources/templates/es/13-security/break-glass-access.md +51 -0
  528. dixi_spec_kit/resources/templates/es/13-security/data-protection-controls.md +53 -0
  529. dixi_spec_kit/resources/templates/es/13-security/dependency-scanning.md +51 -0
  530. dixi_spec_kit/resources/templates/es/13-security/incident-response.md +58 -0
  531. dixi_spec_kit/resources/templates/es/13-security/key-rotation.md +51 -0
  532. dixi_spec_kit/resources/templates/es/13-security/licensing/approved-licenses.md +52 -0
  533. dixi_spec_kit/resources/templates/es/13-security/licensing/licensing-policy.md +49 -0
  534. dixi_spec_kit/resources/templates/es/13-security/licensing/sbom-strategy.md +48 -0
  535. dixi_spec_kit/resources/templates/es/13-security/llm-application-security.md +50 -0
  536. dixi_spec_kit/resources/templates/es/13-security/risk-register.md +45 -0
  537. dixi_spec_kit/resources/templates/es/13-security/secret-management.md +55 -0
  538. dixi_spec_kit/resources/templates/es/13-security/threat-model.md +67 -0
  539. dixi_spec_kit/resources/templates/es/13-security/vulnerability-management.md +55 -0
  540. dixi_spec_kit/resources/templates/es/14-delivery/backup-and-recovery.md +43 -0
  541. dixi_spec_kit/resources/templates/es/14-delivery/ci-cd-overview.md +56 -0
  542. dixi_spec_kit/resources/templates/es/14-delivery/continuous-verification.md +49 -0
  543. dixi_spec_kit/resources/templates/es/14-delivery/cron-jobs.md +48 -0
  544. dixi_spec_kit/resources/templates/es/14-delivery/deployment-strategy.md +49 -0
  545. dixi_spec_kit/resources/templates/es/14-delivery/disaster-recovery/bcp-plan.md +59 -0
  546. dixi_spec_kit/resources/templates/es/14-delivery/disaster-recovery/dr-runbook.md +47 -0
  547. dixi_spec_kit/resources/templates/es/14-delivery/disaster-recovery/dr-strategy.md +51 -0
  548. dixi_spec_kit/resources/templates/es/14-delivery/disaster-recovery/rto-rpo-matrix.md +45 -0
  549. dixi_spec_kit/resources/templates/es/14-delivery/environments.md +48 -0
  550. dixi_spec_kit/resources/templates/es/14-delivery/infra-modules.md +57 -0
  551. dixi_spec_kit/resources/templates/es/14-delivery/pipelines/build-pipeline.md +51 -0
  552. dixi_spec_kit/resources/templates/es/14-delivery/pipelines/migration-pipeline.md +48 -0
  553. dixi_spec_kit/resources/templates/es/14-delivery/pipelines/release-pipeline.md +50 -0
  554. dixi_spec_kit/resources/templates/es/14-delivery/rollback-strategy.md +50 -0
  555. dixi_spec_kit/resources/templates/es/14-delivery/workers-and-queues.md +50 -0
  556. dixi_spec_kit/resources/templates/es/15-operations/escalation-matrix.md +54 -0
  557. dixi_spec_kit/resources/templates/es/15-operations/incident-levels.md +53 -0
  558. dixi_spec_kit/resources/templates/es/15-operations/known-issues.md +47 -0
  559. dixi_spec_kit/resources/templates/es/15-operations/maintenance-window-policy.md +56 -0
  560. dixi_spec_kit/resources/templates/es/15-operations/playbooks/comms-breach-customer.md +59 -0
  561. dixi_spec_kit/resources/templates/es/15-operations/playbooks/comms-outage-customer.md +57 -0
  562. dixi_spec_kit/resources/templates/es/15-operations/playbooks/comms-outage-internal.md +54 -0
  563. dixi_spec_kit/resources/templates/es/15-operations/playbooks/cost-spike.md +46 -0
  564. dixi_spec_kit/resources/templates/es/15-operations/playbooks/data-breach.md +53 -0
  565. dixi_spec_kit/resources/templates/es/15-operations/playbooks/manual-refund.md +51 -0
  566. dixi_spec_kit/resources/templates/es/15-operations/playbooks/reprocess-events.md +59 -0
  567. dixi_spec_kit/resources/templates/es/15-operations/playbooks/restore-service.md +54 -0
  568. dixi_spec_kit/resources/templates/es/15-operations/playbooks/tenant-onboarding.md +56 -0
  569. dixi_spec_kit/resources/templates/es/15-operations/service-catalog.md +51 -0
  570. dixi_spec_kit/resources/templates/es/15-operations/support-model.md +56 -0
  571. dixi_spec_kit/resources/templates/es/15-operations/team/on-call-rotation.md +56 -0
  572. dixi_spec_kit/resources/templates/es/15-operations/team/raci-matrix.md +57 -0
  573. dixi_spec_kit/resources/templates/es/15-operations/vendor-management/sla-matrix.md +46 -0
  574. dixi_spec_kit/resources/templates/es/15-operations/vendor-management/vendor-catalog.md +53 -0
  575. dixi_spec_kit/resources/templates/es/15-operations/vendor-management/vendor-risk-assessment.md +56 -0
  576. dixi_spec_kit/resources/templates/es/16-product/analytics-events-catalog.md +69 -0
  577. dixi_spec_kit/resources/templates/es/16-product/experimentation-framework.md +66 -0
  578. dixi_spec_kit/resources/templates/es/16-product/feature-lifecycle.md +62 -0
  579. dixi_spec_kit/resources/templates/es/16-product/prioritization-framework.md +69 -0
  580. dixi_spec_kit/resources/templates/es/16-product/release-notes.md +74 -0
  581. dixi_spec_kit/resources/templates/es/16-product/roadmap.md +64 -0
  582. dixi_spec_kit/resources/templates/es/17-ux/accessibility-standard.md +72 -0
  583. dixi_spec_kit/resources/templates/es/17-ux/content-guidelines.md +66 -0
  584. dixi_spec_kit/resources/templates/es/17-ux/design-principles.md +49 -0
  585. dixi_spec_kit/resources/templates/es/17-ux/design-tokens.md +65 -0
  586. dixi_spec_kit/resources/templates/es/17-ux/information-architecture.md +70 -0
  587. dixi_spec_kit/resources/templates/es/17-ux/navigation-map.md +59 -0
  588. dixi_spec_kit/resources/templates/es/17-ux/ui-state-catalog.md +52 -0
  589. dixi_spec_kit/resources/templates/es/18-knowledge-base/acronyms.md +66 -0
  590. dixi_spec_kit/resources/templates/es/18-knowledge-base/decision-log.md +43 -0
  591. dixi_spec_kit/resources/templates/es/18-knowledge-base/faq.md +55 -0
  592. dixi_spec_kit/resources/templates/es/18-knowledge-base/glossary.md +53 -0
  593. dixi_spec_kit/resources/templates/es/18-knowledge-base/maturity-model.md +51 -0
  594. dixi_spec_kit/resources/templates/es/18-knowledge-base/onboarding-guide.md +64 -0
  595. dixi_spec_kit/resources/templates/es/18-knowledge-base/troubleshooting-index.md +50 -0
  596. dixi_spec_kit/resources/templates/es/19-references/reading-list.md +66 -0
  597. dixi_spec_kit/resources/templates/es/20-repos/README.md +60 -0
  598. dixi_spec_kit/resources/templates/es/20-repos/backend-service.md +65 -0
  599. dixi_spec_kit/resources/templates/es/20-repos/frontend-app.md +64 -0
  600. dixi_spec_kit/resources/templates/es/20-repos/mcp-server.md +61 -0
  601. dixi_spec_kit/resources/templates/es/20-repos/mobile-app.md +67 -0
  602. dixi_spec_kit/resources/templates/es/20-repos/worker.md +65 -0
  603. dixi_spec_kit/resources/templates/es/21-ai/agents/agent-architecture.md +53 -0
  604. dixi_spec_kit/resources/templates/es/21-ai/agents/capability-matrix.md +49 -0
  605. dixi_spec_kit/resources/templates/es/21-ai/agents/guardrails.md +51 -0
  606. dixi_spec_kit/resources/templates/es/21-ai/agents/human-in-the-loop.md +53 -0
  607. dixi_spec_kit/resources/templates/es/21-ai/governance/ai-audit-trail.md +53 -0
  608. dixi_spec_kit/resources/templates/es/21-ai/governance/quality-gates.md +49 -0
  609. dixi_spec_kit/resources/templates/es/21-ai/governance/responsible-ai.md +62 -0
  610. dixi_spec_kit/resources/templates/es/21-ai/llm/context-strategy.md +54 -0
  611. dixi_spec_kit/resources/templates/es/21-ai/llm/model-strategy.md +52 -0
  612. dixi_spec_kit/resources/templates/es/21-ai/llm/prompt-library.md +56 -0
  613. dixi_spec_kit/resources/templates/es/21-ai/mcp/mcp-architecture.md +46 -0
  614. dixi_spec_kit/resources/templates/es/21-ai/mcp/tool-catalog.md +44 -0
  615. dixi_spec_kit/resources/templates/es/21-ai/memory/memory-architecture.md +50 -0
  616. dixi_spec_kit/resources/templates/es/21-ai/sdd/adoption-guide.md +52 -0
  617. dixi_spec_kit/resources/templates/es/21-ai/sdd/methodology.md +46 -0
  618. dixi_spec_kit/resources/templates/es/21-ai/sdd/spec-lifecycle.md +54 -0
  619. dixi_spec_kit/resources/templates/es/21-ai/sdd/traceability-matrix.md +53 -0
  620. dixi_spec_kit/resources/templates/es/21-ai/sdd/validation-rules.md +59 -0
  621. dixi_spec_kit/resources/templates/es/22-finops/ai-cost-management.md +62 -0
  622. dixi_spec_kit/resources/templates/es/22-finops/budget-alerts.md +53 -0
  623. dixi_spec_kit/resources/templates/es/22-finops/cloud-cost-optimization.md +64 -0
  624. dixi_spec_kit/resources/templates/es/22-finops/cost-allocation-model.md +62 -0
  625. dixi_spec_kit/resources/templates/es/22-finops/cost-strategy.md +55 -0
  626. dixi_spec_kit/resources/templates/es/22-finops/templates/cost-report-template.md +61 -0
  627. dixi_spec_kit/resources/templates/es/23-compliance/compliance-overview.md +59 -0
  628. dixi_spec_kit/resources/templates/es/23-compliance/dpa-template.md +54 -0
  629. dixi_spec_kit/resources/templates/es/23-compliance/gdpr/gdpr-readiness.md +47 -0
  630. dixi_spec_kit/resources/templates/es/23-compliance/gdpr/sub-processors.md +42 -0
  631. dixi_spec_kit/resources/templates/es/23-compliance/hipaa/README.md +47 -0
  632. dixi_spec_kit/resources/templates/es/23-compliance/iso-27001/controls-mapping.md +47 -0
  633. dixi_spec_kit/resources/templates/es/23-compliance/iso-27001/isms-policy.md +66 -0
  634. dixi_spec_kit/resources/templates/es/23-compliance/iso-27001/iso-27001-readiness.md +51 -0
  635. dixi_spec_kit/resources/templates/es/23-compliance/iso-soc2-overlap-mapping.md +46 -0
  636. dixi_spec_kit/resources/templates/es/23-compliance/pci-dss/README.md +51 -0
  637. dixi_spec_kit/resources/templates/es/23-compliance/regulatory-watch.md +52 -0
  638. dixi_spec_kit/resources/templates/es/23-compliance/soc2/soc2-controls-matrix.md +43 -0
  639. dixi_spec_kit/resources/templates/es/23-compliance/soc2/soc2-readiness.md +48 -0
  640. dixi_spec_kit/resources/templates/es/23-compliance/soc2/system-description.md +57 -0
  641. dixi_spec_kit/resources/templates/es/23-compliance/soc2/type-i-vs-type-ii.md +51 -0
  642. dixi_spec_kit/resources/templates/es/24-research/competitive-analysis.md +56 -0
  643. dixi_spec_kit/resources/templates/es/24-research/discovery-strategy.md +67 -0
  644. dixi_spec_kit/resources/templates/es/24-research/interview-templates/discovery-interview.md +67 -0
  645. dixi_spec_kit/resources/templates/es/24-research/interview-templates/usability-test.md +75 -0
  646. dixi_spec_kit/resources/templates/es/24-research/jobs-to-be-done.md +65 -0
  647. dixi_spec_kit/resources/templates/es/24-research/persona-template.md +71 -0
  648. dixi_spec_kit/resources/templates/es/24-research/research-log/README.md +62 -0
  649. dixi_spec_kit/resources/templates/es/24-research/user-research-plan.md +73 -0
  650. dixi_spec_kit/resources/templates/es/25-growth/ab-testing-framework.md +63 -0
  651. dixi_spec_kit/resources/templates/es/25-growth/content-strategy.md +62 -0
  652. dixi_spec_kit/resources/templates/es/25-growth/conversion-funnel.md +60 -0
  653. dixi_spec_kit/resources/templates/es/25-growth/growth-strategy.md +67 -0
  654. dixi_spec_kit/resources/templates/es/25-growth/landing-pages-catalog.md +53 -0
  655. dixi_spec_kit/resources/templates/es/25-growth/seo-strategy.md +60 -0
  656. dixi_spec_kit/resources/templates/es/26-customer-success/churn-playbook.md +64 -0
  657. dixi_spec_kit/resources/templates/es/26-customer-success/help-center-structure.md +68 -0
  658. dixi_spec_kit/resources/templates/es/26-customer-success/success-strategy.md +61 -0
  659. dixi_spec_kit/resources/templates/es/26-customer-success/support-tiers.md +66 -0
  660. dixi_spec_kit/resources/templates/es/27-fixtures/demo-scenarios.md +58 -0
  661. dixi_spec_kit/resources/templates/es/27-fixtures/fixtures-strategy.md +54 -0
  662. dixi_spec_kit/resources/templates/es/27-fixtures/sample-data-catalog.md +58 -0
  663. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/01-infrastructure.md +49 -0
  664. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/02-architecture.md +50 -0
  665. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/03-source-code.md +52 -0
  666. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/04-security.md +52 -0
  667. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/05-data-management.md +51 -0
  668. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/06-processes.md +50 -0
  669. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/07-team.md +53 -0
  670. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/08-financial.md +49 -0
  671. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/09-vendors-partners.md +54 -0
  672. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/10-innovation.md +47 -0
  673. dixi_spec_kit/resources/templates/es/28-due-diligence/checklist/11-final-report.md +52 -0
  674. dixi_spec_kit/resources/templates/es/28-due-diligence/dd-report-template.md +66 -0
  675. dixi_spec_kit/resources/templates/es/28-due-diligence/dd-strategy.md +66 -0
  676. dixi_spec_kit/resources/templates/es/28-due-diligence/playbooks/buyer-dd-playbook.md +51 -0
  677. dixi_spec_kit/resources/templates/es/28-due-diligence/playbooks/enterprise-customer-dd-playbook.md +53 -0
  678. dixi_spec_kit/resources/templates/es/28-due-diligence/playbooks/internal-audit-dd-playbook.md +53 -0
  679. dixi_spec_kit/resources/templates/es/28-due-diligence/playbooks/vendor-dd-playbook.md +52 -0
  680. dixi_spec_kit/resources/workflows.en.json +77 -0
  681. dixi_spec_kit/resources/workflows.es.json +77 -0
  682. dixi_spec_kit/resources/workflows.json +85 -0
  683. dixi_spec_kit/upgrade.py +54 -0
  684. dixi_spec_kit/workflows.py +96 -0
  685. dixi_spec_kit-1.5.0.dist-info/METADATA +44 -0
  686. dixi_spec_kit-1.5.0.dist-info/RECORD +690 -0
  687. dixi_spec_kit-1.5.0.dist-info/WHEEL +5 -0
  688. dixi_spec_kit-1.5.0.dist-info/entry_points.txt +2 -0
  689. dixi_spec_kit-1.5.0.dist-info/licenses/src/dixi_spec_kit/LICENSE +21 -0
  690. dixi_spec_kit-1.5.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
1
+ __version__ = "1.5.0"
@@ -0,0 +1,3 @@
1
+ from .cli import main
2
+
3
+ raise SystemExit(main())
dixi_spec_kit/cli.py ADDED
@@ -0,0 +1,190 @@
1
+ import argparse
2
+ from importlib.resources import files
3
+ import json
4
+ from pathlib import Path
5
+ import sys
6
+
7
+ from . import __version__
8
+ from .core import METADATA, PROFILES, check_project, doctor, initialize, message, placeholders, pr_size
9
+ from .filesystem import Issue, read_json, root_directory
10
+ from .upgrade import STATUSES, plan as upgrade_plan
11
+ from .workflows import OPERATIONS, workflow_result
12
+
13
+
14
+ class Parser(argparse.ArgumentParser):
15
+ def error(self, message):
16
+ raise Issue("invalid_arguments", 2)
17
+
18
+
19
+ def parser_for(catalog):
20
+ class Formatter(argparse.HelpFormatter):
21
+ def _format_usage(self, usage, actions, groups, prefix):
22
+ return super()._format_usage(usage, actions, groups, prefix or catalog["usage"])
23
+
24
+ parser = Parser(prog="dixi", description=catalog["description"], add_help=False, formatter_class=Formatter)
25
+ parser._positionals.title = catalog["arguments"]
26
+ parser._optionals.title = catalog["options"]
27
+ parser.add_argument("--help", "-h", action="help", help=catalog["help"])
28
+ parser.add_argument("--version", action="version", version=f"dixi {__version__}", help=catalog["version"])
29
+ parser.add_argument("--lang", choices=("es", "en"), default=None, help=catalog["lang"])
30
+ parser.add_argument("--json", action="store_true", help=catalog["json"])
31
+ commands = parser.add_subparsers(dest="command", required=True, title=catalog["commands"])
32
+ for command in ("init", "doctor", "check", "workflow", "upgrade", "placeholders", "pr-size"):
33
+ child = commands.add_parser(command, help=catalog[command], description=catalog[command],
34
+ add_help=False, formatter_class=Formatter)
35
+ child._positionals.title = catalog["arguments"]
36
+ child._optionals.title = catalog["options"]
37
+ child.add_argument("--help", "-h", action="help", help=catalog["help"])
38
+ if command == "init":
39
+ child.add_argument("directory", help=catalog["directory"])
40
+ child.add_argument("--agent", choices=("none", "claude", "codex"), default="none", help=catalog["agent"])
41
+ child.add_argument("--profile", choices=PROFILES, default="minimal", help=catalog["profile_option"])
42
+ child.add_argument("--regulated", action="store_true", help=catalog["regulated_option"])
43
+ child.add_argument("--controls", action="store_true", help=catalog["controls_option"])
44
+ elif command == "placeholders":
45
+ child.add_argument("--strict", action="store_true", help=catalog["placeholders_strict"])
46
+ elif command == "pr-size":
47
+ child.add_argument("--base", default="main", help=catalog["pr_size_base"])
48
+ child.add_argument("--max", type=int, default=1500, dest="limit", help=catalog["pr_size_max"])
49
+ elif command == "upgrade":
50
+ child.add_argument("--dry-run", action="store_true", help=catalog["upgrade_dry_run"])
51
+ child.add_argument("--profile", choices=PROFILES, default=None, help=catalog["profile_option"])
52
+ child.add_argument("--regulated", action="store_true", default=None, help=catalog["regulated_option"])
53
+ child.add_argument("--controls", action="store_true", default=None, help=catalog["controls_option"])
54
+ elif command == "workflow":
55
+ actions = child.add_subparsers(dest="workflow_action", required=True, title=catalog["commands"])
56
+ for action in ("list", "show", "prepare"):
57
+ operation = actions.add_parser(action, help=catalog[f"workflow_{action}"], add_help=False,
58
+ description=catalog[f"workflow_{action}"], formatter_class=Formatter)
59
+ operation._positionals.title = catalog["arguments"]
60
+ operation._optionals.title = catalog["options"]
61
+ operation.add_argument("--help", "-h", action="help", help=catalog["help"])
62
+ if action != "list":
63
+ operation.add_argument("operation", choices=OPERATIONS, help=catalog["workflow_operation"])
64
+ if action == "prepare":
65
+ operation.add_argument("--target", required=True, help=catalog["workflow_target"])
66
+ operation.add_argument("--request", required=True, help=catalog["workflow_request"])
67
+ return parser
68
+
69
+
70
+ def project_language():
71
+ try:
72
+ with root_directory(Path.cwd()) as root:
73
+ language = read_json(root, METADATA).get("language")
74
+ except (Issue, OSError, AttributeError):
75
+ return None
76
+ return language if language in ("es", "en") else None
77
+
78
+
79
+ def subcommand(argv):
80
+ skip = False
81
+ for arg in argv:
82
+ if skip:
83
+ skip = False
84
+ elif arg == "--lang":
85
+ skip = True
86
+ elif not arg.startswith("-"):
87
+ return arg
88
+ return None
89
+
90
+
91
+ def main(argv=None):
92
+ argv = list(sys.argv[1:] if argv is None else argv)
93
+ language = None
94
+ for index, arg in enumerate(argv):
95
+ if arg == "--lang" and index + 1 < len(argv) and argv[index + 1] in ("es", "en"):
96
+ language = argv[index + 1]
97
+ elif arg in ("--lang=es", "--lang=en"):
98
+ language = arg.split("=", 1)[1]
99
+ if language is None and subcommand(argv) != "init":
100
+ language = project_language()
101
+ language = language or "en"
102
+ catalog = json.loads(files("dixi_spec_kit").joinpath("locales", f"{language}.json").read_text(encoding="utf-8"))
103
+ code = 0
104
+ workflow = None
105
+ upgrade = None
106
+ extra = {}
107
+ try:
108
+ args = parser_for(catalog).parse_args(argv)
109
+ args.lang = args.lang or language
110
+ if args.command == "init":
111
+ messages = initialize(args.directory, args.lang, args.agent, args.profile, args.regulated, args.controls)
112
+ elif args.command == "doctor":
113
+ messages = doctor(Path.cwd(), args.lang)
114
+ elif args.command == "workflow":
115
+ workflow = workflow_result(args, Path.cwd())
116
+ messages = [message("workflow_scope")]
117
+ elif args.command == "upgrade":
118
+ if not args.dry_run:
119
+ raise Issue("upgrade_requires_dry_run", 2)
120
+ upgrade = upgrade_plan(Path.cwd(), args.profile, args.regulated, args.controls)
121
+ messages = [message("upgrade_planned", source=upgrade["from"], target=upgrade["to"]),
122
+ message("upgrade_no_changes")]
123
+ elif args.command == "placeholders":
124
+ counts = placeholders(Path.cwd())
125
+ total = sum(counts.values())
126
+ extra = {"placeholders": counts, "total": total}
127
+ messages = [message("placeholders_found", total=total, files=len(counts))]
128
+ code = 1 if args.strict and total else 0
129
+ elif args.command == "pr-size":
130
+ size = pr_size(Path.cwd(), args.base, args.limit)
131
+ extra = {"pr_size": size}
132
+ messages = [message("pr_size_result", **size)]
133
+ if size["counted"] > size["max"]:
134
+ code = 1
135
+ messages.append(message("pr_size_exceeded", counted=size["counted"], max=size["max"]))
136
+ else:
137
+ code, messages = check_project(Path.cwd())
138
+ except Issue as error:
139
+ code, messages = error.code, [message(error.key, **error.params)]
140
+ except OSError:
141
+ code, messages = 5, [message("io_error")]
142
+ for entry in messages:
143
+ entry["message"] = catalog[entry["key"]].format(**entry["params"])
144
+ result = {"status": "completed" if code == 0 else "failed", "code": code, "messages": messages}
145
+ if workflow is not None:
146
+ result["workflow"] = workflow
147
+ if upgrade is not None:
148
+ result["upgrade"] = upgrade
149
+ result.update(extra)
150
+ if "--json" in argv:
151
+ print(json.dumps(result, ensure_ascii=False))
152
+ else:
153
+ for entry in messages:
154
+ print(entry["message"], file=sys.stderr if code else sys.stdout)
155
+ if workflow is not None:
156
+ print(format_workflow(workflow, catalog))
157
+ if upgrade is not None:
158
+ print(format_upgrade(upgrade, catalog))
159
+ for name, count in extra.get("placeholders", {}).items():
160
+ print(f" {count:4d} {name}")
161
+ return code
162
+
163
+
164
+ def format_upgrade(upgrade, catalog):
165
+ lines = []
166
+ for status in STATUSES:
167
+ names = upgrade["files"][status]
168
+ lines.append(f"\n{catalog['upgrade_heading_' + status]} ({len(names)}):")
169
+ if status != "unchanged":
170
+ lines += [f"- {name}" for name in names]
171
+ return "\n".join(lines)
172
+
173
+
174
+ def format_workflow(workflow, catalog):
175
+ if "operations" in workflow:
176
+ return "\n".join(f"{op['id']} — {op['title']}\n {op['purpose']}" for op in workflow["operations"])
177
+ packet = workflow.get("packet")
178
+ recipe = packet["recipe"] if packet else workflow["recipe"]
179
+ lines = [f"\n{recipe['id']} — {recipe['title']}", recipe["purpose"]]
180
+ if packet:
181
+ lines += [catalog["workflow_prepared"].format(target=packet["target"]["id"], mode=packet["mode"],
182
+ language=packet["project_language"]),
183
+ catalog["workflow_request"] + ": " + json.dumps(packet["request"], ensure_ascii=False)]
184
+ for key in ("target_kinds", "inputs", "steps", "outputs", "gates", "checks", "guards", "next_operations"):
185
+ lines += ["\n" + catalog[f"workflow_heading_{key}"] + ":"]
186
+ lines += [f"- {item}" for item in recipe[key]] or [catalog["workflow_no_next"]]
187
+ if packet:
188
+ lines += ["\n" + catalog["workflow_heading_sources"] + ":"]
189
+ lines += [f"- {s['path']} · SHA-256 {s['sha256']} · {s['bytes']} B" for s in packet["sources"]]
190
+ return "\n".join(lines)
dixi_spec_kit/core.py ADDED
@@ -0,0 +1,399 @@
1
+ import hashlib
2
+ from importlib.resources import files
3
+ import json
4
+ import os
5
+ from pathlib import Path, PurePosixPath
6
+ import posixpath
7
+ import re
8
+ import subprocess
9
+ import sys
10
+ from urllib.parse import unquote, urlsplit
11
+
12
+ from . import __version__
13
+ from .filesystem import (Issue, decode_json, directory, read_file, read_json,
14
+ root_directory, safe_path, supported, write_file)
15
+
16
+
17
+ PARENTS = {"goal": set(), "domain": {"goal"}, "module": {"domain"},
18
+ "feature": {"module"}, "contract": {"feature", "module"},
19
+ "test": {"feature", "contract"}}
20
+ METADATA = ".dixi/project.json"
21
+ AGENTS = ("none", "claude", "codex")
22
+ PROFILES = ("minimal", "site", "app", "platform")
23
+ MAX_MANAGED = 1000
24
+ CODEX_POLICY = b"policy:\n allow_implicit_invocation: false\n"
25
+ CLAUDE_REQUIRED = ("discover", "specify", "clarify", "plan", "tasks", "build", "verify", "review", "analyze", "status")
26
+ CLAUDE_COMMANDS = CLAUDE_REQUIRED + ("domain", "architecture", "contract", "threat-model", "handoff", "change",
27
+ "data", "quality", "ai", "release", "promote", "operate", "finops",
28
+ "compliance", "duediligence", "interview", "risk-review")
29
+ SUBAGENTS = ("architect", "tester", "developer", "reviewer")
30
+ CONTROLS = ("protect_tests", "guard_secrets", "guard_attestation", "mode_gate", "verify_on_stop")
31
+ TEST_PATH = re.compile(r"(^|/)(tests?|__tests__|spec)/|(^|/)test_[^/]*$|_test\.[^/]+$|\.(test|spec)\.[^/]+$|\.feature$")
32
+ EXCLUDED_PATH = re.compile(r"(\.md$|^docs/|(^|/)(package-lock\.json|yarn\.lock|pnpm-lock\.yaml|poetry\.lock|uv\.lock|"
33
+ r"Cargo\.lock|go\.sum|Gemfile\.lock|composer\.lock)$|\.min\.(js|css)$|(^|/)generated/)")
34
+ TRACE = ".dixi/traceability.json"
35
+ INLINE_LINK = re.compile(r"!?\[[^\[\]\n]{0,999}\]\(([^)\n]{1,4096})\)")
36
+ KIT_VERSION = re.compile(r"(0|[1-9][0-9]{0,3})\.(0|[1-9][0-9]{0,3})\.(0|[1-9][0-9]{0,3})(?:\.dev[0-9]{1,4}|rc[0-9]{1,4})?")
37
+ REFERENCE_LINK = re.compile(r"^ {0,3}\[[^\[\]\n]{1,999}\]:[ \t]*(<[^>\n]{1,4096}>|[^\s<>]{1,4096})(?=[ \t]|$)", re.MULTILINE)
38
+
39
+
40
+ def templates(language):
41
+ data = files("dixi_spec_kit").joinpath("resources", f"project.{language}.json").read_bytes()
42
+ payload = decode_json(data, "resources")
43
+ if not isinstance(payload, dict) or not 1 <= len(payload) <= 500:
44
+ raise Issue("invalid_resources", 5)
45
+ if any(not safe_path(k) or not isinstance(v, str) for k, v in payload.items()):
46
+ raise Issue("invalid_resources", 5)
47
+ return payload
48
+
49
+
50
+ def profile_manifest():
51
+ data = decode_json(files("dixi_spec_kit").joinpath("resources", "profiles.json").read_bytes(), "resources")
52
+ entries = data.get("files") if isinstance(data, dict) else None
53
+ if (not isinstance(entries, dict) or data.get("version") != 1
54
+ or any(not safe_path(k) or not isinstance(v, str) or not re.fullmatch(r"[ynr]{3}", v)
55
+ for k, v in entries.items())):
56
+ raise Issue("invalid_resources", 5)
57
+ return entries
58
+
59
+
60
+ def profile_files(language, profile, regulated):
61
+ if profile == "minimal":
62
+ return {}
63
+ column = PROFILES.index(profile) - 1
64
+ folder = files("dixi_spec_kit").joinpath("resources", "templates", language)
65
+ payload = {}
66
+ for name, codes in profile_manifest().items():
67
+ if codes[column] == "y" or (regulated and codes[column] == "r"):
68
+ payload[name] = folder.joinpath(*name.split("/")).read_bytes()
69
+ return payload
70
+
71
+
72
+ def check_profile(profile, regulated):
73
+ if profile not in PROFILES or type(regulated) is not bool:
74
+ raise Issue("invalid_arguments", 2)
75
+ if regulated and profile == "minimal":
76
+ raise Issue("regulated_requires_profile", 2)
77
+
78
+
79
+ def recorded_profile(metadata):
80
+ return metadata.get("profile", "minimal"), metadata.get("regulated", False)
81
+
82
+
83
+ def codex_files(language):
84
+ folder = files("dixi_spec_kit").joinpath("resources", "codex", language)
85
+ payload = {}
86
+ for name in CLAUDE_COMMANDS:
87
+ payload[f".agents/skills/dixi-{name}/SKILL.md"] = folder.joinpath(f"dixi-{name}.md").read_bytes()
88
+ payload[f".agents/skills/dixi-{name}/agents/openai.yaml"] = CODEX_POLICY
89
+ return payload
90
+
91
+
92
+ def required_adapter_files(agent):
93
+ if agent == "claude":
94
+ return {"CLAUDE.md"} | {f".claude/commands/dixi.{name}.md" for name in CLAUDE_REQUIRED}
95
+ if agent == "codex":
96
+ return {f".agents/skills/dixi-{name}/{suffix}" for name in CLAUDE_REQUIRED
97
+ for suffix in ("SKILL.md", "agents/openai.yaml")}
98
+ return set()
99
+
100
+
101
+ def adapter_files(agent, language):
102
+ if agent == "none":
103
+ return {}
104
+ if agent == "codex":
105
+ return codex_files(language)
106
+ folder = files("dixi_spec_kit").joinpath("resources", "claude", language)
107
+ payload = {"CLAUDE.md": folder.joinpath("CLAUDE.md").read_bytes()}
108
+ for name in CLAUDE_COMMANDS:
109
+ payload[f".claude/commands/dixi.{name}.md"] = folder.joinpath(f"dixi.{name}.md").read_bytes()
110
+ for name in SUBAGENTS:
111
+ payload[f".claude/agents/dixi-{name}.md"] = folder.joinpath("agents", f"dixi-{name}.md").read_bytes()
112
+ try:
113
+ for data in payload.values():
114
+ data.decode("utf-8")
115
+ except UnicodeError:
116
+ raise Issue("invalid_resources", 5) from None
117
+ return payload
118
+
119
+
120
+ def hook_command(agent, script):
121
+ if agent == "claude":
122
+ return f'python3 "$CLAUDE_PROJECT_DIR/.dixi/hooks/{script}.py"'
123
+ return f'python3 "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.dixi/hooks/{script}.py"'
124
+
125
+
126
+ def hook_group(agent, scripts, matcher=None, timeout=None):
127
+ handlers = []
128
+ for script in scripts:
129
+ handler = {"type": "command", "command": hook_command(agent, script)}
130
+ if timeout:
131
+ handler["timeout"] = timeout
132
+ handlers.append(handler)
133
+ return ({"matcher": matcher} if matcher else {}) | {"hooks": handlers}
134
+
135
+
136
+ def control_files(agent):
137
+ if agent not in ("claude", "codex"):
138
+ return {}
139
+ folder = files("dixi_spec_kit").joinpath("resources", "hooks")
140
+ payload = {f".dixi/hooks/{name}.py": folder.joinpath(f"{name}.py").read_bytes() for name in CONTROLS}
141
+ shell = ("mode_gate", "guard_secrets", "guard_attestation", "protect_tests")
142
+ stop = [hook_group(agent, ["verify_on_stop"], timeout=300)]
143
+ if agent == "claude":
144
+ events = {"PreToolUse": [hook_group(agent, shell, "Bash"), hook_group(agent, ["guard_secrets"], "Read|Grep"),
145
+ hook_group(agent, ["protect_tests"], "Edit|Write|MultiEdit|NotebookEdit")],
146
+ "Stop": stop, "SubagentStop": stop}
147
+ name = ".claude/settings.json"
148
+ else:
149
+ events = {"PreToolUse": [hook_group(agent, shell, "^Bash$"), hook_group(agent, ["protect_tests"], "^apply_patch$")],
150
+ "Stop": stop, "SubagentStop": stop}
151
+ name = ".codex/hooks.json"
152
+ payload[name] = (json.dumps({"hooks": events}, indent=2) + "\n").encode()
153
+ return payload
154
+
155
+
156
+ def message(key, **params):
157
+ return {"key": key, "params": params}
158
+
159
+
160
+ def initialize(destination, language, agent="none", profile="minimal", regulated=False, controls=False):
161
+ check_profile(profile, regulated)
162
+ if controls and agent == "none":
163
+ raise Issue("controls_require_agent", 2)
164
+ text = str(destination)
165
+ path = Path(os.getcwd()) if text and text.rstrip("/") == "." else Path(text)
166
+ if not text or ".." in path.parts or not path.name:
167
+ raise Issue("unsafe_destination", 3)
168
+ payload = {name: text.encode("utf-8") for name, text in templates(language).items()}
169
+ payload.update(profile_files(language, profile, regulated))
170
+ payload.update(adapter_files(agent, language))
171
+ if controls:
172
+ payload.update(control_files(agent))
173
+ metadata = {"schema_version": 1, "kit_version": __version__, "language": language,
174
+ "agent": agent, "policy": "portable", "profile": profile, "regulated": regulated,
175
+ "controls": bool(controls),
176
+ "managed_files": {name: hashlib.sha256(data).hexdigest() for name, data in payload.items()}}
177
+ try:
178
+ with root_directory(path.parent) as parent:
179
+ try:
180
+ os.mkdir(path.name, mode=0o700, dir_fd=parent)
181
+ except FileExistsError:
182
+ pass
183
+ with directory(parent, [path.name]) as root:
184
+ if os.listdir(root):
185
+ raise Issue("destination_conflict", 3)
186
+ write_file(root, ".dixi-init.lock", b"")
187
+ for name, data in payload.items():
188
+ write_file(root, name, data)
189
+ write_file(root, METADATA, (json.dumps(metadata, ensure_ascii=False, indent=2) + "\n").encode())
190
+ os.unlink(".dixi-init.lock", dir_fd=root)
191
+ except Issue as error:
192
+ if error.key == "unsafe_path":
193
+ error.key, error.code = "unsafe_destination", 3
194
+ raise
195
+ except FileExistsError:
196
+ raise Issue("destination_conflict", 3) from None
197
+ return [message("initialized", path=str(path)), message("structure_only")]
198
+
199
+
200
+ def project_metadata(root):
201
+ try:
202
+ data = read_json(root, METADATA)
203
+ except Issue as error:
204
+ if error.key == "missing_file":
205
+ raise Issue("missing_project", 2) from None
206
+ raise
207
+ if not isinstance(data, dict) or type(data.get("schema_version")) is not int:
208
+ raise Issue("invalid_metadata")
209
+ if data["schema_version"] != 1:
210
+ raise Issue("unsupported_schema", 4)
211
+ if (not isinstance(data.get("kit_version"), str) or data.get("language") not in ("es", "en")
212
+ or data.get("agent") not in AGENTS or data.get("policy") != "portable"):
213
+ raise Issue("invalid_metadata")
214
+ version = KIT_VERSION.fullmatch(data["kit_version"])
215
+ if not version:
216
+ raise Issue("invalid_metadata")
217
+ if version.group(1) != __version__.split(".")[0]:
218
+ raise Issue("unsupported_schema", 4)
219
+ inventory = data.get("managed_files")
220
+ if not isinstance(inventory, dict) or not 1 <= len(inventory) <= MAX_MANAGED:
221
+ raise Issue("invalid_metadata")
222
+ for name, digest in inventory.items():
223
+ if not safe_path(name) or not isinstance(digest, str) or not re.fullmatch(r"[0-9a-f]{64}", digest):
224
+ raise Issue("invalid_metadata")
225
+ profile, regulated = recorded_profile(data)
226
+ if profile not in PROFILES or type(regulated) is not bool or (regulated and profile == "minimal"):
227
+ raise Issue("invalid_metadata")
228
+ controls = data.get("controls", False)
229
+ if type(controls) is not bool or (controls and data["agent"] == "none"):
230
+ raise Issue("invalid_metadata")
231
+ required = set(templates(data["language"])) | required_adapter_files(data["agent"])
232
+ if not required <= set(inventory):
233
+ raise Issue("invalid_metadata")
234
+ return data
235
+
236
+
237
+ def traceability(root):
238
+ data = read_json(root, TRACE)
239
+ if (not isinstance(data, dict) or type(data.get("schema_version")) is not int
240
+ or data["schema_version"] != 1 or not isinstance(data.get("items"), list)
241
+ or len(data["items"]) > 500):
242
+ raise Issue("invalid_trace")
243
+ items = data["items"]
244
+ by_id = {}
245
+ for item in items:
246
+ if (not isinstance(item, dict) or not isinstance(item.get("id"), str)
247
+ or not re.fullmatch(r"[A-Za-z][A-Za-z0-9._-]{0,127}", item["id"])
248
+ or not isinstance(item.get("kind"), str) or item["kind"] not in PARENTS
249
+ or not safe_path(item.get("path")) or not isinstance(item.get("parents"), list)
250
+ or len(item["parents"]) > 500 or any(not isinstance(p, str) for p in item["parents"])):
251
+ raise Issue("invalid_trace")
252
+ if item["id"] in by_id or len(item["parents"]) != len(set(item["parents"])):
253
+ raise Issue("invalid_trace")
254
+ by_id[item["id"]] = item
255
+ issues = []
256
+ for item in items:
257
+ allowed = PARENTS[item["kind"]]
258
+ if bool(item["parents"]) != bool(allowed) or any(
259
+ p not in by_id or by_id[p]["kind"] not in allowed for p in item["parents"]):
260
+ issues.append(message("invalid_parent", path=item["id"]))
261
+ return items, issues
262
+
263
+
264
+ def markdown_links(root, name, data, removable=frozenset()):
265
+ try:
266
+ text = data.decode("utf-8")
267
+ except UnicodeError:
268
+ raise Issue("invalid_file", path=name) from None
269
+ issues = []
270
+ targets = INLINE_LINK.findall(text) + REFERENCE_LINK.findall(text)
271
+ if len(targets) > 500:
272
+ raise Issue("invalid_file", path=name)
273
+ for target in targets:
274
+ target = target.strip()
275
+ if not target:
276
+ continue
277
+ target = target[1:target.index(">")] if target.startswith("<") and ">" in target else target.split()[0]
278
+ try:
279
+ link = urlsplit(target)
280
+ if link.scheme in {"http", "https", "mailto"}:
281
+ continue
282
+ if link.scheme or link.netloc or link.path.startswith("/"):
283
+ raise Issue("unsafe_path")
284
+ if not link.path:
285
+ continue
286
+ relative = posixpath.normpath(posixpath.join(str(PurePosixPath(name).parent), unquote(link.path)))
287
+ try:
288
+ read_file(root, relative)
289
+ except Issue as error:
290
+ if error.key != "missing_file" or relative not in removable:
291
+ raise
292
+ except (Issue, ValueError):
293
+ issues.append(message("invalid_link", path=name))
294
+ return issues
295
+
296
+
297
+ def check_project(path):
298
+ issues = []
299
+ with root_directory(path) as root:
300
+ metadata = project_metadata(root)
301
+ names = set(metadata["managed_files"])
302
+ optional = set(profile_manifest()) & names
303
+ try:
304
+ items, graph_issues = traceability(root)
305
+ issues.extend(graph_issues)
306
+ names.update(item["path"] for item in items)
307
+ except Issue as error:
308
+ issues.append(message(error.key, **error.params))
309
+ for name in sorted(names):
310
+ try:
311
+ data = read_file(root, name)
312
+ if name.endswith(".md"):
313
+ issues.extend(markdown_links(root, name, data, optional))
314
+ except Issue as error:
315
+ if error.key == "missing_file" and name in optional:
316
+ continue
317
+ issues.append(message(error.key, **error.params))
318
+ return (1 if issues else 0), issues + [message("structure_only")]
319
+
320
+
321
+ def doctor(path, language):
322
+ if not supported():
323
+ raise Issue("unsupported_platform", 4)
324
+ templates(language)
325
+ results = [message("runtime", version=sys.version.split()[0]), message("resources_ok")]
326
+ with root_directory(path) as root:
327
+ try:
328
+ metadata = project_metadata(root)
329
+ profile, regulated = recorded_profile(metadata)
330
+ results.append(message("profile", profile=profile, regulated=regulated))
331
+ results.append(message("controls", controls=metadata.get("controls", False)))
332
+ if metadata["agent"] == "claude":
333
+ installed = sum(f".claude/commands/dixi.{name}.md" in metadata["managed_files"]
334
+ for name in CLAUDE_COMMANDS)
335
+ results.append(message("agent_claude", language=metadata["language"],
336
+ commands=installed, available=len(CLAUDE_COMMANDS)))
337
+ if installed < len(CLAUDE_COMMANDS):
338
+ results.append(message("upgrade_hint"))
339
+ elif metadata["agent"] == "codex":
340
+ installed = sum(f".agents/skills/dixi-{name}/SKILL.md" in metadata["managed_files"]
341
+ for name in CLAUDE_COMMANDS)
342
+ results.append(message("agent_codex", language=metadata["language"],
343
+ skills=installed, available=len(CLAUDE_COMMANDS)))
344
+ if installed < len(CLAUDE_COMMANDS):
345
+ results.append(message("upgrade_hint"))
346
+ else:
347
+ results.append(message("agent_none", language=metadata["language"]))
348
+ except Issue as error:
349
+ if error.code != 2:
350
+ raise
351
+ results.append(message("no_project_optional"))
352
+ return results
353
+
354
+
355
+ def strip_code(text):
356
+ text = re.sub(r"(?ms)^ {0,3}(```|~~~).*?^ {0,3}\1[^\n]*$", "", text)
357
+ return re.sub(r"`[^`\n]*`", "", text)
358
+
359
+
360
+ def placeholders(path):
361
+ counts = {}
362
+ with root_directory(path) as root:
363
+ metadata = project_metadata(root)
364
+ for name in sorted(metadata["managed_files"]):
365
+ if not name.endswith(".md"):
366
+ continue
367
+ try:
368
+ text = read_file(root, name).decode("utf-8", errors="replace")
369
+ except Issue as error:
370
+ if error.key == "missing_file":
371
+ continue
372
+ raise
373
+ count = len(re.findall(r"\{\{pending:", strip_code(text)))
374
+ if count:
375
+ counts[name] = count
376
+ return counts
377
+
378
+
379
+ def pr_size(path, base, limit):
380
+ def git(*args):
381
+ try:
382
+ result = subprocess.run(["git", *args], cwd=path, capture_output=True, text=True, timeout=60)
383
+ except (OSError, subprocess.SubprocessError):
384
+ raise Issue("pr_size_git", 2, base=base) from None
385
+ if result.returncode != 0:
386
+ raise Issue("pr_size_git", 2, base=base)
387
+ return result.stdout
388
+
389
+ git("rev-parse", "--verify", "--quiet", f"{base}^{{commit}}")
390
+ size = {"base": base, "counted": 0, "tests": 0, "excluded": 0, "max": limit}
391
+ for line in git("diff", "--numstat", "--no-renames", f"{base}...HEAD").splitlines():
392
+ parts = line.split("\t", 2)
393
+ if len(parts) != 3:
394
+ continue
395
+ lines = sum(int(value) for value in parts[:2] if value.isdigit())
396
+ name = parts[2]
397
+ key = "tests" if TEST_PATH.search(name) else "excluded" if EXCLUDED_PATH.search(name) else "counted"
398
+ size[key] += lines
399
+ return size