arckit-cli 6.1.1__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 (482) hide show
  1. arckit_cli/__init__.py +1120 -0
  2. arckit_cli-6.1.1.data/data/share/arckit/.arckit/memory/sessions.md +293 -0
  3. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/_partials/RENDERING.md +22 -0
  4. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/_partials/document-control-uae.md +20 -0
  5. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/_partials/document-control-uk.md +16 -0
  6. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/adm-preliminary-template.md +135 -0
  7. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/adr-template.md +588 -0
  8. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-design-template.md +390 -0
  9. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-governance-template.md +90 -0
  10. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-integration-template.md +159 -0
  11. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-inventory-template.md +108 -0
  12. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-maturity-template.md +388 -0
  13. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-security-template.md +213 -0
  14. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/analysis-report-template.md +323 -0
  15. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/application-inventory-template.md +221 -0
  16. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-board-template.md +194 -0
  17. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-change-template.md +205 -0
  18. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-diagram-template.md +610 -0
  19. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-principles-template.md +632 -0
  20. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-repository-template.md +107 -0
  21. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-strategy-template.md +666 -0
  22. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/at-bvergg-template.md +252 -0
  23. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/at-dsgvo-template.md +354 -0
  24. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/at-nisg-template.md +236 -0
  25. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-aescsf-template.md +189 -0
  26. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ai-assurance-template.md +243 -0
  27. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-disp-attestation-template.md +297 -0
  28. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-dss-template.md +302 -0
  29. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-e8-posture-template.md +377 -0
  30. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-energy-compliance-template.md +189 -0
  31. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ism-controls-template.md +462 -0
  32. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ndb-playbook-template.md +288 -0
  33. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ot-security-template.md +204 -0
  34. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-pia-template.md +394 -0
  35. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-pspf-template.md +380 -0
  36. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-soci-cirmp-template.md +206 -0
  37. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/aws-research-template.md +605 -0
  38. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/azure-research-template.md +559 -0
  39. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/backlog-template.md +465 -0
  40. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-aia-template.md +206 -0
  41. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-atip-template.md +192 -0
  42. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-charter-template.md +190 -0
  43. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-cloud-residency-template.md +173 -0
  44. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-fitaa-template.md +156 -0
  45. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-gc-digital-standards-template.md +208 -0
  46. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-itsg-33-template.md +228 -0
  47. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-ocap-template.md +205 -0
  48. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-ola-template.md +171 -0
  49. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-pia-template.md +193 -0
  50. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-pspc-template.md +214 -0
  51. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-soia-template.md +219 -0
  52. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/capability-map-template.md +125 -0
  53. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/competitors-template.md +113 -0
  54. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/conformance-assessment-template.md +507 -0
  55. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/data-mesh-contract-template.md +851 -0
  56. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/data-model-template.md +1043 -0
  57. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/data-source-profile-template.md +80 -0
  58. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/datascout-template.md +546 -0
  59. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/devops-template.md +961 -0
  60. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dfd-template.md +161 -0
  61. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dld-review-template.md +427 -0
  62. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dos-requirements-template.md +506 -0
  63. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dpia-template.md +1200 -0
  64. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-ai-act-template.md +227 -0
  65. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-cra-template.md +176 -0
  66. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-data-act-template.md +175 -0
  67. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-dora-template.md +197 -0
  68. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-dsa-template.md +183 -0
  69. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-nis2-template.md +196 -0
  70. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-rgpd-template.md +198 -0
  71. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/evaluation-criteria-template.md +719 -0
  72. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/finops-template.md +662 -0
  73. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-algorithme-public-template.md +162 -0
  74. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-anssi-carto-template.md +196 -0
  75. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-anssi-template.md +190 -0
  76. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-code-reuse-template.md +190 -0
  77. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-dinum-template.md +195 -0
  78. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-dr-template.md +187 -0
  79. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-ebios-template.md +209 -0
  80. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-irn-template.md +311 -0
  81. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-marche-public-template.md +178 -0
  82. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-pssi-template.md +270 -0
  83. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-rgpd-template.md +195 -0
  84. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-secnumcloud-template.md +188 -0
  85. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/framework-overview-template.md +247 -0
  86. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gap-analysis-template.md +198 -0
  87. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gcloud-clarify-template.md +340 -0
  88. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gcloud-requirements-template.md +370 -0
  89. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gcp-research-template.md +585 -0
  90. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/glossary-template.md +117 -0
  91. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gov-code-search-template.md +213 -0
  92. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gov-landscape-template.md +271 -0
  93. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gov-reuse-template.md +214 -0
  94. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/grants-template.md +131 -0
  95. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/hld-review-template.md +760 -0
  96. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/jsp-936-template.md +1394 -0
  97. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/maturity-model-template.md +297 -0
  98. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/mlops-template.md +720 -0
  99. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/mod-secure-by-design-template.md +784 -0
  100. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/operationalize-template.md +1016 -0
  101. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/pages-template.html +5121 -0
  102. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/platform-design-template.md +1610 -0
  103. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/presentation-template.md +270 -0
  104. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/principles-compliance-assessment-template.md +389 -0
  105. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/project-plan-template.md +421 -0
  106. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/rationalization-template.md +208 -0
  107. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/requirements-template.md +1026 -0
  108. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/research-findings-template.md +939 -0
  109. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/risk-register-template.md +883 -0
  110. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/roadmap-template.md +787 -0
  111. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/service-assessment-prep-template.md +448 -0
  112. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/servicenow-design-template.md +273 -0
  113. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/sobc-template.md +1127 -0
  114. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/sow-template.md +785 -0
  115. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/stakeholder-drivers-template.md +493 -0
  116. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/story-template.md +889 -0
  117. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/tcop-review-template.md +593 -0
  118. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/tech-note-template.md +59 -0
  119. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/tenders-template.md +124 -0
  120. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/traceability-matrix-template.md +360 -0
  121. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/transition-architecture-template.md +286 -0
  122. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-ai-autonomy-tier-template.md +97 -0
  123. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-ai-charter-template.md +81 -0
  124. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-classification-template.md +86 -0
  125. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-cloud-residency-template.md +136 -0
  126. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-data-sharing-template.md +105 -0
  127. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-digital-records-template.md +97 -0
  128. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-ias-template.md +109 -0
  129. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-pdpl-template.md +105 -0
  130. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-priorities-alignment-template.md +99 -0
  131. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-procurement-template.md +115 -0
  132. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-uaepass-template.md +129 -0
  133. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-zero-bureaucracy-template.md +85 -0
  134. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-consumer-duty-board-report-template.md +49 -0
  135. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-consumer-duty-template.md +362 -0
  136. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-ctp-dependency-register-template.md +24 -0
  137. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-ctp-dependency-template.md +321 -0
  138. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-safeguarding-reconciliation-template.md +77 -0
  139. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-safeguarding-template.md +348 -0
  140. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-sca-rts-exemption-matrix-template.md +47 -0
  141. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-sca-rts-template.md +273 -0
  142. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-gov-ai-playbook-template.md +942 -0
  143. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-gov-atrs-template.md +1087 -0
  144. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-mdr-classification-template.md +307 -0
  145. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-case-template.md +214 -0
  146. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-hazard-template.md +217 -0
  147. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-safety-template.md +78 -0
  148. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-template.md +13 -0
  149. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-deployment-case-template.md +207 -0
  150. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-deployment-hazard-template.md +290 -0
  151. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-deployment-safety-template.md +81 -0
  152. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-template.md +13 -0
  153. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dtac-template.md +341 -0
  154. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ukgov-secure-by-design-template.md +1031 -0
  155. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-ai-impact-template.md +212 -0
  156. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-ai-rmf-template.md +232 -0
  157. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-fedramp-readiness-template.md +209 -0
  158. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-fedramp-ssp-template.md +352 -0
  159. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-fisma-categorization-template.md +145 -0
  160. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-icam-template.md +216 -0
  161. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-nist-800-53-template.md +222 -0
  162. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-privacy-pia-template.md +191 -0
  163. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-sbom-eo-14028-template.md +253 -0
  164. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-zero-trust-template.md +234 -0
  165. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/vendor-profile-template.md +88 -0
  166. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/vendor-scoring-template.md +332 -0
  167. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-climate-template.md +269 -0
  168. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-doctrine-template.md +299 -0
  169. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-gameplay-template.md +346 -0
  170. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-map-template.md +587 -0
  171. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-value-chain-template.md +256 -0
  172. arckit_cli-6.1.1.data/data/share/arckit/CHANGELOG.md +3554 -0
  173. arckit_cli-6.1.1.data/data/share/arckit/VERSION +1 -0
  174. arckit_cli-6.1.1.data/data/share/arckit/docs/DEPENDENCY-MATRIX.md +929 -0
  175. arckit_cli-6.1.1.data/data/share/arckit/docs/README.md +322 -0
  176. arckit_cli-6.1.1.data/data/share/arckit/docs/WORKFLOW-DIAGRAMS.md +1088 -0
  177. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/adm-preliminary.md +72 -0
  178. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/adr.md +60 -0
  179. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-design.md +71 -0
  180. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-governance.md +61 -0
  181. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-integration.md +59 -0
  182. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-inventory.md +60 -0
  183. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-maturity.md +84 -0
  184. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-security.md +63 -0
  185. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ai-playbook.md +103 -0
  186. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/analyze.md +57 -0
  187. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/application-inventory.md +71 -0
  188. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/application-rationalization.md +71 -0
  189. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/architecture-board.md +60 -0
  190. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/architecture-change.md +73 -0
  191. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/architecture-repository.md +62 -0
  192. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/artifact-health.md +228 -0
  193. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/at-bvergg.md +86 -0
  194. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/at-dsgvo.md +75 -0
  195. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/at-nisg.md +94 -0
  196. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/atrs.md +98 -0
  197. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-aescsf.md +45 -0
  198. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ai-assurance.md +84 -0
  199. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-disp-attestation.md +90 -0
  200. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-dss.md +76 -0
  201. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-e8-posture.md +73 -0
  202. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-energy-compliance.md +47 -0
  203. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-federal-overlay.md +199 -0
  204. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ism-controls.md +78 -0
  205. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ndb-playbook.md +80 -0
  206. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ot-security.md +39 -0
  207. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-pia.md +72 -0
  208. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-pspf.md +81 -0
  209. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-soci-cirmp.md +40 -0
  210. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/autoresearch.md +334 -0
  211. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/aws-research.md +160 -0
  212. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/azure-research.md +157 -0
  213. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/backlog.md +58 -0
  214. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/build.md +132 -0
  215. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/business-capability-map.md +68 -0
  216. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/business-case.md +68 -0
  217. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/c4-layout-science.md +280 -0
  218. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-aia.md +81 -0
  219. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-atip.md +79 -0
  220. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-charter.md +81 -0
  221. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-cloud-residency.md +91 -0
  222. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-fitaa.md +81 -0
  223. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-gc-digital-standards.md +93 -0
  224. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-itsg-33.md +80 -0
  225. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-ocap.md +91 -0
  226. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-ola.md +80 -0
  227. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-pia.md +83 -0
  228. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-pspc.md +96 -0
  229. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-soia.md +87 -0
  230. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/codes-of-practice.md +154 -0
  231. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/competitors.md +202 -0
  232. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/conformance.md +153 -0
  233. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/create.md +61 -0
  234. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/custom-commands.md +236 -0
  235. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/customize.md +108 -0
  236. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/data-mesh-contract.md +239 -0
  237. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/data-model.md +69 -0
  238. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/data-quality-framework.md +118 -0
  239. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/datascout.md +162 -0
  240. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/declaration.md +59 -0
  241. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/design-review.md +66 -0
  242. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/devops.md +96 -0
  243. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dfd.md +187 -0
  244. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/diagram.md +118 -0
  245. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dld-review.md +102 -0
  246. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dos.md +109 -0
  247. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dpia.md +80 -0
  248. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/enterprise-scale.md +260 -0
  249. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-ai-act.md +82 -0
  250. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-cra.md +90 -0
  251. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-data-act.md +85 -0
  252. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-dora.md +83 -0
  253. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-dsa.md +85 -0
  254. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-nis2.md +82 -0
  255. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-rgpd.md +76 -0
  256. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/evaluate.md +115 -0
  257. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/export-okf.md +70 -0
  258. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/finops.md +117 -0
  259. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-algorithme-public.md +86 -0
  260. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-anssi-carto.md +69 -0
  261. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-anssi.md +79 -0
  262. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-code-reuse.md +86 -0
  263. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-dinum.md +83 -0
  264. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-dr.md +88 -0
  265. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-ebios.md +84 -0
  266. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-irn.md +103 -0
  267. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-marche-public.md +94 -0
  268. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-pssi.md +87 -0
  269. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-rgpd.md +75 -0
  270. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-secnumcloud.md +80 -0
  271. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/framework.md +234 -0
  272. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gap-analysis.md +70 -0
  273. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcloud-clarify.md +108 -0
  274. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcloud-competitors.md +61 -0
  275. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcloud-search.md +106 -0
  276. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcp-research.md +169 -0
  277. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/glossary.md +190 -0
  278. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gov-code-search.md +119 -0
  279. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gov-landscape.md +114 -0
  280. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gov-reuse.md +112 -0
  281. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/govs-007-security.md +93 -0
  282. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/grants.md +106 -0
  283. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/graph-report.md +77 -0
  284. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/health.md +234 -0
  285. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/hld-review.md +110 -0
  286. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/hooks.md +121 -0
  287. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/impact.md +68 -0
  288. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/import-okf.md +67 -0
  289. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/init.md +159 -0
  290. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/jsp-936.md +60 -0
  291. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/knowledge-compounding.md +140 -0
  292. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/maturity-model.md +186 -0
  293. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/mcp-servers.md +329 -0
  294. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/migration.md +333 -0
  295. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/mlops.md +126 -0
  296. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/mod-secure.md +124 -0
  297. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/national-data-strategy.md +115 -0
  298. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/navigator.md +86 -0
  299. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/operationalize.md +143 -0
  300. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/pages.md +227 -0
  301. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/pinecone-mcp.md +128 -0
  302. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/plan.md +66 -0
  303. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/platform-design.md +600 -0
  304. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/presentation.md +137 -0
  305. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/pricing.md +62 -0
  306. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/principles-compliance.md +63 -0
  307. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/principles.md +55 -0
  308. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/procurement.md +57 -0
  309. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/productivity.md +217 -0
  310. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/remote-control.md +151 -0
  311. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/requirements.md +61 -0
  312. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/research.md +65 -0
  313. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/review.md +61 -0
  314. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/risk-management.md +70 -0
  315. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/risk.md +132 -0
  316. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roadmap.md +58 -0
  317. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/README.md +68 -0
  318. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/business-analyst.md +70 -0
  319. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/business-architect.md +70 -0
  320. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/cdo.md +59 -0
  321. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/ciso.md +61 -0
  322. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/cto-cdio.md +59 -0
  323. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/data-architect.md +68 -0
  324. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/data-governance-manager.md +59 -0
  325. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/delivery-manager.md +63 -0
  326. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/devops-engineer.md +55 -0
  327. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/enterprise-architect.md +84 -0
  328. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/it-service-manager.md +55 -0
  329. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/network-architect.md +58 -0
  330. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/performance-analyst.md +67 -0
  331. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/product-manager.md +62 -0
  332. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/security-architect.md +78 -0
  333. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/service-owner.md +58 -0
  334. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/solution-architect.md +75 -0
  335. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/technical-architect.md +68 -0
  336. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/score.md +91 -0
  337. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sdd-lot1.md +61 -0
  338. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sdd-lot2.md +62 -0
  339. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sdd-lot3.md +62 -0
  340. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/search.md +71 -0
  341. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/secure.md +181 -0
  342. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/security-hooks.md +200 -0
  343. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/security.md +62 -0
  344. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/service-assessment.md +47 -0
  345. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/service-design.md +71 -0
  346. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/servicenow.md +152 -0
  347. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/session-memory.md +100 -0
  348. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sobc.md +129 -0
  349. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sow.md +125 -0
  350. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/stakeholder-analysis.md +51 -0
  351. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/stakeholders.md +138 -0
  352. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/start.md +276 -0
  353. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/story.md +61 -0
  354. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/strategy.md +211 -0
  355. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/submission-pack.md +72 -0
  356. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/supplier-profile.md +70 -0
  357. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/tcop.md +124 -0
  358. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/template-builder.md +125 -0
  359. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/tenders.md +193 -0
  360. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/testing-plugin-branches.md +79 -0
  361. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/traceability.md +58 -0
  362. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/transition-architecture.md +69 -0
  363. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/trello.md +139 -0
  364. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-ai-autonomy-tier.md +84 -0
  365. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-ai-charter.md +89 -0
  366. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-classification.md +73 -0
  367. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-cloud-residency.md +84 -0
  368. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-data-sharing.md +84 -0
  369. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-digital-records.md +71 -0
  370. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-ias.md +93 -0
  371. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-overlay-maintenance.md +154 -0
  372. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-overlay.md +208 -0
  373. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-pdpl.md +73 -0
  374. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-priorities-alignment.md +82 -0
  375. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-procurement.md +71 -0
  376. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-uaepass.md +83 -0
  377. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-zero-bureaucracy.md +80 -0
  378. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-consumer-duty.md +178 -0
  379. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-ctp-dependency.md +181 -0
  380. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-payments-overlay.md +216 -0
  381. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-safeguarding.md +176 -0
  382. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-sca-rts.md +164 -0
  383. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/ai-playbook.md +56 -0
  384. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/algorithmic-transparency.md +44 -0
  385. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/digital-marketplace.md +55 -0
  386. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/secure-by-design.md +51 -0
  387. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/standards-map.md +108 -0
  388. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/technology-code-of-practice.md +63 -0
  389. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-mdr-classification.md +59 -0
  390. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-mod/secure-by-design.md +54 -0
  391. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-clinical-safety-overlay.md +214 -0
  392. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-dcb0129.md +64 -0
  393. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-dcb0160.md +62 -0
  394. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-dtac.md +55 -0
  395. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/upgrading.md +130 -0
  396. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-ai-impact.md +71 -0
  397. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-ai-rmf.md +70 -0
  398. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-federal-overlay.md +111 -0
  399. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-fedramp-readiness.md +69 -0
  400. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-fedramp-ssp.md +71 -0
  401. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-fisma-categorization.md +68 -0
  402. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-icam.md +70 -0
  403. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-nist-800-53.md +70 -0
  404. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-privacy-pia.md +74 -0
  405. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-sbom-eo-14028.md +71 -0
  406. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-zero-trust.md +68 -0
  407. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-climate.md +122 -0
  408. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-doctrine.md +120 -0
  409. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-gameplay.md +123 -0
  410. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-value-chain.md +130 -0
  411. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley.md +173 -0
  412. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/.agents/plugins/marketplace.json +20 -0
  413. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/README.md +325 -0
  414. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/VERSION +1 -0
  415. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/docs/DEPENDENCY-MATRIX.md +616 -0
  416. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/arckit-codex-hook.mjs +1270 -0
  417. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/graph-inject.mjs +1497 -0
  418. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/graph-rollups.mjs +247 -0
  419. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/graph-utils.mjs +363 -0
  420. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/hook-utils.mjs +383 -0
  421. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/hooks.json +80 -0
  422. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/okf-frontmatter.mjs +279 -0
  423. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/project-context-builder.mjs +168 -0
  424. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/sync-guides.mjs +1120 -0
  425. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-copilot/README.md +68 -0
  426. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-copilot/VERSION +1 -0
  427. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-copilot/docs/DEPENDENCY-MATRIX.md +616 -0
  428. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/LICENSE +21 -0
  429. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/README.md +65 -0
  430. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/VERSION +1 -0
  431. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/docs/DEPENDENCY-MATRIX.md +616 -0
  432. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/opencode.json +25 -0
  433. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/.mcp.json +63 -0
  434. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/LICENSE +26 -0
  435. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/README.md +407 -0
  436. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/VERSION +1 -0
  437. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/vibe-config.toml +62 -0
  438. arckit_cli-6.1.1.data/data/share/arckit/scripts/README.md +680 -0
  439. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/fixtures/000-global/ARC-000-PRIN-v1.0.md +120 -0
  440. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/fixtures/001-test-project/ARC-001-STKE-v1.0.md +100 -0
  441. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/fixtures/001-test-project/README.md +15 -0
  442. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/program-selfharness.md +748 -0
  443. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/program.md +269 -0
  444. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/check-prerequisites.sh +250 -0
  445. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/common.sh +359 -0
  446. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/create-project.sh +408 -0
  447. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/generate-document-id.sh +146 -0
  448. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/list-projects.sh +359 -0
  449. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/migrate-filenames.sh +553 -0
  450. arckit_cli-6.1.1.data/data/share/arckit/scripts/bump-version.sh +293 -0
  451. arckit_cli-6.1.1.data/data/share/arckit/scripts/check_doctype_collisions.py +30 -0
  452. arckit_cli-6.1.1.data/data/share/arckit/scripts/check_recipes.py +94 -0
  453. arckit_cli-6.1.1.data/data/share/arckit/scripts/check_references.py +144 -0
  454. arckit_cli-6.1.1.data/data/share/arckit/scripts/convert_vibe_agents.py +198 -0
  455. arckit_cli-6.1.1.data/data/share/arckit/scripts/convert_vibe_skills.py +499 -0
  456. arckit_cli-6.1.1.data/data/share/arckit/scripts/converter.py +2002 -0
  457. arckit_cli-6.1.1.data/data/share/arckit/scripts/create-sdg-repo.py +820 -0
  458. arckit_cli-6.1.1.data/data/share/arckit/scripts/generate-arckit-architecture-hero.py +317 -0
  459. arckit_cli-6.1.1.data/data/share/arckit/scripts/generate-arckit-hero.py +278 -0
  460. arckit_cli-6.1.1.data/data/share/arckit/scripts/generate-release-notes.sh +112 -0
  461. arckit_cli-6.1.1.data/data/share/arckit/scripts/managed-agents/README.md +105 -0
  462. arckit_cli-6.1.1.data/data/share/arckit/scripts/managed-agents/arckit-agent.py +418 -0
  463. arckit_cli-6.1.1.data/data/share/arckit/scripts/push-extensions.sh +424 -0
  464. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/apply_doc_control_marker.py +50 -0
  465. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/common.py +288 -0
  466. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/create-project.py +373 -0
  467. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/generate-document-id.py +96 -0
  468. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/list-projects.py +238 -0
  469. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/migrate_classification.py +94 -0
  470. arckit_cli-6.1.1.data/data/share/arckit/scripts/render-brand-pngs.py +72 -0
  471. arckit_cli-6.1.1.data/data/share/arckit/scripts/standardise-colon.py +128 -0
  472. arckit_cli-6.1.1.data/data/share/arckit/scripts/sync-claude-plugin-layout.py +159 -0
  473. arckit_cli-6.1.1.data/data/share/arckit/scripts/sync-shared-assets.py +132 -0
  474. arckit_cli-6.1.1.data/data/share/arckit/scripts/tag-plugins.sh +65 -0
  475. arckit_cli-6.1.1.data/data/share/arckit/scripts/tests/test-doc-types-dual-registration.mjs +57 -0
  476. arckit_cli-6.1.1.data/data/share/arckit/scripts/tests/test-fde-templates.mjs +100 -0
  477. arckit_cli-6.1.1.data/data/share/arckit/scripts/tests/test-regime-registration.mjs +65 -0
  478. arckit_cli-6.1.1.dist-info/METADATA +1966 -0
  479. arckit_cli-6.1.1.dist-info/RECORD +482 -0
  480. arckit_cli-6.1.1.dist-info/WHEEL +4 -0
  481. arckit_cli-6.1.1.dist-info/entry_points.txt +2 -0
  482. arckit_cli-6.1.1.dist-info/licenses/LICENSE +26 -0
arckit_cli/__init__.py ADDED
@@ -0,0 +1,1120 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ ArcKit CLI - The Enterprise Architecture Governance Harness
4
+
5
+ A toolkit for enterprise architects to manage:
6
+ - Architecture principles and governance
7
+ - Requirements documentation
8
+ - Vendor RFP/SOW generation
9
+ - Vendor evaluation and selection
10
+ - Design review processes (HLD/DLD)
11
+ - Requirements traceability
12
+ """
13
+
14
+ import os
15
+ import subprocess
16
+ import sys
17
+ import zipfile
18
+ import tempfile
19
+ import shutil
20
+ from pathlib import Path
21
+ from typing import Optional
22
+
23
+ import typer
24
+ import httpx
25
+ from rich.console import Console
26
+ from rich.panel import Panel
27
+ from rich.text import Text
28
+ from rich.align import Align
29
+
30
+ # For cross-platform keyboard input
31
+ import readchar
32
+ import ssl
33
+ import truststore
34
+ import platformdirs
35
+
36
+ ssl_context = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
37
+ client = httpx.Client(verify=ssl_context)
38
+
39
+ # Agent configuration for ArcKit
40
+ # Note: Claude Code support has moved to the ArcKit plugin (plugins/arckit-claude/).
41
+ # Gemini CLI support has moved to the ArcKit Gemini extension (extensions/arckit-gemini/).
42
+ # The CLI now only supports Codex.
43
+ AGENT_CONFIG = {
44
+ "codex": {
45
+ "name": "OpenAI Codex CLI",
46
+ "folder": ".codex/",
47
+ "install_url": "https://developers.openai.com/codex/cli/",
48
+ "requires_cli": True,
49
+ },
50
+ "opencode": {
51
+ "name": "OpenCode CLI",
52
+ "folder": ".opencode/",
53
+ "install_url": "https://opencode.net/cli/",
54
+ "requires_cli": True,
55
+ },
56
+ "copilot": {
57
+ "name": "GitHub Copilot",
58
+ "folder": ".github/",
59
+ "install_url": "https://github.com/features/copilot",
60
+ "requires_cli": False,
61
+ },
62
+ }
63
+
64
+ BANNER = """
65
+ █████╗ ██████╗ ██████╗██╗ ██╗██╗████████╗
66
+ ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██║╚══██╔══╝
67
+ ███████║██████╔╝██║ █████╔╝ ██║ ██║
68
+ ██╔══██║██╔══██╗██║ ██╔═██╗ ██║ ██║
69
+ ██║ ██║██║ ██║╚██████╗██║ ██╗██║ ██║
70
+ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝
71
+ """
72
+
73
+ TAGLINE = "The Enterprise Architecture Governance Harness"
74
+
75
+ console = Console()
76
+
77
+ app = typer.Typer(
78
+ name="arckit",
79
+ help="The Enterprise Architecture Governance Harness",
80
+ add_completion=False,
81
+ )
82
+
83
+
84
+ def show_banner():
85
+ """Display the ASCII art banner."""
86
+ banner_lines = BANNER.strip().split("\n")
87
+ colors = ["bright_blue", "blue", "cyan", "bright_cyan", "white", "bright_white"]
88
+
89
+ styled_banner = Text()
90
+ for i, line in enumerate(banner_lines):
91
+ color = colors[i % len(colors)]
92
+ styled_banner.append(line + "\n", style=color)
93
+
94
+ console.print(Align.center(styled_banner))
95
+ console.print(Align.center(Text(TAGLINE, style="italic bright_yellow")))
96
+ console.print()
97
+
98
+
99
+ def check_tool(tool: str) -> bool:
100
+ """Check if a tool is installed."""
101
+ return shutil.which(tool) is not None
102
+
103
+
104
+ def is_git_repo(path: Path = None) -> bool:
105
+ """Check if the specified path is inside a git repository."""
106
+ if path is None:
107
+ path = Path.cwd()
108
+
109
+ if not path.is_dir():
110
+ return False
111
+
112
+ try:
113
+ subprocess.run(
114
+ ["git", "rev-parse", "--is-inside-work-tree"],
115
+ check=True,
116
+ capture_output=True,
117
+ cwd=path,
118
+ )
119
+ return True
120
+ except (subprocess.CalledProcessError, FileNotFoundError):
121
+ return False
122
+
123
+
124
+ def init_git_repo(project_path: Path) -> bool:
125
+ """Initialize a git repository in the specified path."""
126
+ try:
127
+ original_cwd = Path.cwd()
128
+ os.chdir(project_path)
129
+ console.print("[cyan]Initializing git repository...[/cyan]")
130
+ subprocess.run(["git", "init"], check=True, capture_output=True, text=True)
131
+ subprocess.run(["git", "add", "."], check=True, capture_output=True, text=True)
132
+ subprocess.run(
133
+ ["git", "commit", "-m", "Initial commit from ArcKit"],
134
+ check=True,
135
+ capture_output=True,
136
+ text=True,
137
+ )
138
+ console.print("[green]✓[/green] Git repository initialized")
139
+ return True
140
+ except subprocess.CalledProcessError as e:
141
+ console.print(f"[red]Error initializing git repository:[/red] {e}")
142
+ return False
143
+ finally:
144
+ os.chdir(original_cwd)
145
+
146
+
147
+ def get_data_paths():
148
+ """Get paths to templates, scripts, and commands from installed package or source."""
149
+
150
+ def build_paths(base_path):
151
+ """Build the full paths dictionary from a base path."""
152
+ return {
153
+ "templates": base_path / ".arckit" / "templates",
154
+ "scripts": base_path / "scripts",
155
+ "opencode_root": base_path / "extensions" / "arckit-opencode",
156
+ "opencode_commands": base_path / "extensions" / "arckit-opencode" / "commands",
157
+ "opencode_agents": base_path / "extensions" / "arckit-opencode" / "agents",
158
+ "docs_guides": base_path / "docs" / "guides",
159
+ "docs_readme": base_path / "docs" / "README.md",
160
+ "dependency_matrix": base_path / "docs" / "DEPENDENCY-MATRIX.md",
161
+ "workflow_diagrams": base_path / "docs" / "WORKFLOW-DIAGRAMS.md",
162
+ "version": base_path / "VERSION",
163
+ "changelog": base_path / "CHANGELOG.md",
164
+ "codex_references": base_path / "extensions" / "arckit-codex" / "references",
165
+ "codex_skills": base_path / "extensions" / "arckit-codex" / "skills",
166
+ "codex_agents": base_path / "extensions" / "arckit-codex" / "agents",
167
+ "codex_hooks": base_path / "extensions" / "arckit-codex" / "hooks",
168
+ "codex_schemas": base_path / "extensions" / "arckit-codex" / "schemas",
169
+ "codex_validator": base_path / "extensions" / "arckit-codex" / "scripts" / "validate-handoff.mjs",
170
+ "codex_config": base_path / "extensions" / "arckit-codex" / "config.toml",
171
+ "copilot_prompts": base_path / "extensions" / "arckit-copilot" / "prompts",
172
+ "copilot_agents": base_path / "extensions" / "arckit-copilot" / "agents",
173
+ "copilot_instructions": base_path / "extensions" / "arckit-copilot" / "copilot-instructions.md",
174
+ }
175
+
176
+ # First, check if running from source (development mode)
177
+ # This allows testing local changes without re-installing
178
+ source_root = Path(__file__).parent.parent.parent
179
+ if (source_root / ".arckit").exists() and (source_root / "extensions" / "arckit-codex").exists():
180
+ return build_paths(source_root)
181
+
182
+ # Then try to find installed package data
183
+ try:
184
+ # Try to find the shared data directory for uv tool installs
185
+ # uv installs tools in ~/.local/share/uv/tools/{package-name}/share/{package}/
186
+ uv_tools_path = (
187
+ Path.home()
188
+ / ".local"
189
+ / "share"
190
+ / "uv"
191
+ / "tools"
192
+ / "arckit-cli"
193
+ / "share"
194
+ / "arckit"
195
+ )
196
+ if uv_tools_path.exists():
197
+ return build_paths(uv_tools_path)
198
+
199
+ # Try to find the shared data directory for regular pip installs
200
+ import site
201
+
202
+ for site_dir in site.getsitepackages() + [site.getusersitepackages()]:
203
+ if site_dir:
204
+ # Try site-packages/share/arckit
205
+ share_path = Path(site_dir) / "share" / "arckit"
206
+ if share_path.exists():
207
+ return build_paths(share_path)
208
+
209
+ # Try ../../../share/arckit from site-packages (for system installs)
210
+ share_path = Path(site_dir).parent.parent.parent / "share" / "arckit"
211
+ if share_path.exists():
212
+ return build_paths(share_path)
213
+
214
+ # Try platformdirs approach for other installs
215
+ data_dir = Path(platformdirs.user_data_dir("arckit"))
216
+ if data_dir.exists():
217
+ return build_paths(data_dir)
218
+
219
+ except Exception:
220
+ pass
221
+
222
+ # Fallback to source directory if installation check failed
223
+ return build_paths(source_root)
224
+
225
+
226
+ def create_project_structure(
227
+ project_path: Path, ai_assistant: str, all_ai: bool = False
228
+ ):
229
+ """Create the basic ArcKit project structure."""
230
+
231
+ console.print("[cyan]Creating project structure...[/cyan]")
232
+
233
+ # Create directory structure
234
+ directories = [
235
+ ".arckit/scripts/bash",
236
+ ".arckit/templates",
237
+ ".arckit/templates-custom",
238
+ "projects/000-global",
239
+ "projects/000-global/policies",
240
+ "projects/000-global/external",
241
+ ]
242
+
243
+ if all_ai:
244
+ # Create directories for all AI assistants (Codex and OpenCode)
245
+ directories.extend(
246
+ [
247
+ ".codex/agents",
248
+ ".codex/hooks",
249
+ ".agents/skills",
250
+ ".opencode/commands",
251
+ ".opencode/agents",
252
+ ]
253
+ )
254
+ else:
255
+ agent_folder = AGENT_CONFIG[ai_assistant]["folder"]
256
+ if ai_assistant == "codex":
257
+ directories.append(".agents/skills")
258
+ directories.append(f"{agent_folder}agents")
259
+ directories.append(f"{agent_folder}hooks")
260
+ elif ai_assistant == "opencode":
261
+ directories.append(f"{agent_folder}commands")
262
+ directories.append(f"{agent_folder}agents")
263
+ elif ai_assistant == "copilot":
264
+ directories.append(f"{agent_folder}prompts")
265
+ directories.append(f"{agent_folder}agents")
266
+
267
+ for directory in directories:
268
+ (project_path / directory).mkdir(parents=True, exist_ok=True)
269
+
270
+ # Add .gitkeep files to empty directories so git tracks them
271
+ gitkeep_dirs = [
272
+ "projects/000-global",
273
+ "projects/000-global/policies",
274
+ "projects/000-global/external",
275
+ ]
276
+ for directory in gitkeep_dirs:
277
+ gitkeep = project_path / directory / ".gitkeep"
278
+ if not gitkeep.exists():
279
+ gitkeep.touch()
280
+
281
+ # Create README for templates-custom directory
282
+ templates_custom_readme = (
283
+ project_path / ".arckit" / "templates-custom" / "README.md"
284
+ )
285
+ templates_custom_readme.write_text("""# Custom Templates
286
+
287
+ This directory is for your customized ArcKit templates.
288
+
289
+ ## How Template Customization Works
290
+
291
+ 1. **Default templates** are in `.arckit/templates/` (refreshed by `arckit init`)
292
+ 2. **Your customizations** go here in `.arckit/templates-custom/`
293
+ 3. Commands automatically check here first, falling back to defaults
294
+
295
+ ## Getting Started
296
+
297
+ Use the `/arckit:customize` command to copy templates for editing:
298
+
299
+ ```
300
+ /arckit:customize requirements # Copy requirements template
301
+ /arckit:customize all # Copy all templates
302
+ /arckit:customize list # See available templates
303
+ ```
304
+
305
+ ## Why This Pattern?
306
+
307
+ - Your customizations are preserved when running `arckit init` again
308
+ - Default templates can be updated without losing your changes
309
+ - Easy to see what you've customized vs defaults
310
+
311
+ ## Common Customizations
312
+
313
+ - Add organization-specific document control fields
314
+ - Include mandatory compliance sections (ISO 27001, PCI-DSS)
315
+ - Add department-specific approval workflows
316
+ - Customize UK Government classification banners
317
+ """, encoding='utf-8')
318
+
319
+ console.print("[green]✓[/green] Project structure created")
320
+
321
+ return project_path
322
+
323
+
324
+ @app.command()
325
+ def init(
326
+ project_name: str = typer.Argument(
327
+ None,
328
+ help="Name for your new project directory (optional, use '.' for current directory)",
329
+ ),
330
+ ai_assistant: str = typer.Option(None, "--ai", help="AI assistant to use: codex, opencode, copilot"),
331
+ no_git: bool = typer.Option(
332
+ False, "--no-git", help="Skip git repository initialization"
333
+ ),
334
+ here: bool = typer.Option(
335
+ False, "--here", help="Initialize project in the current directory"
336
+ ),
337
+ all_ai: bool = typer.Option(
338
+ False,
339
+ "--all-ai",
340
+ help="Install commands for all CLI-supported AI assistants (codex)",
341
+ ),
342
+ minimal: bool = typer.Option(
343
+ False, "--minimal", help="Minimal install: skip docs and guides"
344
+ ),
345
+ ):
346
+ """
347
+ Initialize a new ArcKit project for enterprise architecture governance.
348
+
349
+ This command will:
350
+ 1. Create project directory structure
351
+ 2. Copy templates for architecture principles, requirements, SOW, etc.
352
+ 3. Set up AI assistant commands
353
+ 4. Copy documentation and guides (unless --minimal)
354
+ 5. Initialize git repository (optional)
355
+
356
+ Examples:
357
+ arckit init my-architecture-project
358
+ arckit init my-project --ai codex
359
+ arckit init . --ai codex
360
+ arckit init --here --ai codex --minimal
361
+ """
362
+
363
+ show_banner()
364
+
365
+ if project_name == ".":
366
+ here = True
367
+ project_name = None
368
+
369
+ if here and project_name:
370
+ console.print(
371
+ "[red]Error:[/red] Cannot specify both project name and --here flag"
372
+ )
373
+ raise typer.Exit(1)
374
+
375
+ if not here and not project_name:
376
+ console.print(
377
+ "[red]Error:[/red] Must specify either a project name or use '.' / --here flag"
378
+ )
379
+ raise typer.Exit(1)
380
+
381
+ if here:
382
+ try:
383
+ project_name = Path.cwd().name
384
+ project_path = Path.cwd()
385
+ except (FileNotFoundError, OSError):
386
+ console.print(
387
+ "[red]Error:[/red] Current directory does not exist. Please cd to a valid directory first."
388
+ )
389
+ raise typer.Exit(1)
390
+ else:
391
+ try:
392
+ project_path = Path(project_name).resolve()
393
+ except (FileNotFoundError, OSError):
394
+ project_path = Path.home() / project_name
395
+ if project_path.exists():
396
+ console.print(
397
+ f"[red]Error:[/red] Directory '{project_name}' already exists"
398
+ )
399
+ raise typer.Exit(1)
400
+
401
+ console.print(f"[cyan]Initializing ArcKit project:[/cyan] {project_name}")
402
+ console.print(f"[cyan]Location:[/cyan] {project_path}")
403
+
404
+ # Check git
405
+ should_init_git = False
406
+ if not no_git:
407
+ should_init_git = check_tool("git")
408
+ if not should_init_git:
409
+ console.print(
410
+ "[yellow]Git not found - will skip repository initialization[/yellow]"
411
+ )
412
+
413
+ # Select AI assistant
414
+ if not ai_assistant:
415
+ console.print("\n[cyan]Select your AI assistant:[/cyan]")
416
+ console.print("1. codex (OpenAI Codex CLI)")
417
+ console.print("2. opencode (OpenCode CLI)")
418
+ console.print("3. copilot (GitHub Copilot in VS Code)")
419
+ console.print()
420
+ console.print("[dim]For Claude Code, use the ArcKit plugin instead:[/dim]")
421
+ console.print("[dim] /plugin marketplace add tractorjuice/arc-kit[/dim]")
422
+ console.print("[dim]For Gemini CLI, use the ArcKit extension instead:[/dim]")
423
+ console.print(
424
+ "[dim] gemini extensions install https://github.com/tractorjuice/arckit-gemini[/dim]"
425
+ )
426
+
427
+ choice = typer.prompt("Enter choice", default="1")
428
+ ai_map = {"1": "codex", "2": "opencode", "3": "copilot"}
429
+ ai_assistant = ai_map.get(choice, "codex")
430
+
431
+ if ai_assistant == "claude":
432
+ console.print(
433
+ "[yellow]Claude Code support has moved to the ArcKit plugin.[/yellow]"
434
+ )
435
+ console.print("Install in Claude Code with:")
436
+ console.print(" [cyan]/plugin marketplace add tractorjuice/arc-kit[/cyan]")
437
+ console.print("\nThen enable the plugin from the Discover tab.")
438
+ raise typer.Exit(0)
439
+
440
+ if ai_assistant == "gemini":
441
+ console.print(
442
+ "[yellow]Gemini CLI support has moved to the ArcKit Gemini extension.[/yellow]"
443
+ )
444
+ console.print("Install in Gemini CLI with:")
445
+ console.print(
446
+ " [cyan]gemini extensions install https://github.com/tractorjuice/arckit-gemini[/cyan]"
447
+ )
448
+ console.print("\nThe extension provides all 48 commands with zero config.")
449
+ console.print("Updates via: [cyan]gemini extensions update arckit[/cyan]")
450
+ raise typer.Exit(0)
451
+
452
+ if ai_assistant not in AGENT_CONFIG:
453
+ console.print(f"[red]Error:[/red] Invalid AI assistant '{ai_assistant}'")
454
+ console.print(f"Choose from: {', '.join(AGENT_CONFIG.keys())}")
455
+ raise typer.Exit(1)
456
+
457
+ if all_ai:
458
+ console.print(f"[cyan]Selected AI assistant:[/cyan] All (Codex)")
459
+ else:
460
+ console.print(
461
+ f"[cyan]Selected AI assistant:[/cyan] {AGENT_CONFIG[ai_assistant]['name']}"
462
+ )
463
+
464
+ # Create project structure
465
+ create_project_structure(project_path, ai_assistant, all_ai)
466
+
467
+ # Copy templates from installed package or source
468
+ console.print("[cyan]Setting up templates...[/cyan]")
469
+
470
+ data_paths = get_data_paths()
471
+ templates_src = data_paths["templates"]
472
+ scripts_src = data_paths["scripts"]
473
+
474
+ console.print(f"[dim]Debug: Resolved data paths:[/dim]")
475
+ console.print(f"[dim] templates: {templates_src}[/dim]")
476
+ console.print(f"[dim] scripts: {scripts_src}[/dim]")
477
+
478
+ templates_dst = project_path / ".arckit" / "templates"
479
+ scripts_dst = project_path / ".arckit" / "scripts"
480
+ agent_folder = AGENT_CONFIG[ai_assistant]["folder"]
481
+
482
+ # Determine destination subfolder based on assistant type
483
+ subfolder = "commands" if ai_assistant == "opencode" else "prompts"
484
+ commands_dst = project_path / agent_folder / subfolder
485
+
486
+ # Copy templates if they exist
487
+ if templates_src.exists():
488
+ console.print(f"[dim]Copying templates from: {templates_src}[/dim]")
489
+ template_count = 0
490
+ for template_file in templates_src.glob("*.md"):
491
+ shutil.copy2(template_file, templates_dst / template_file.name)
492
+ template_count += 1
493
+ console.print(f"[green]✓[/green] Copied {template_count} templates")
494
+ else:
495
+ console.print(
496
+ f"[yellow]Warning: Templates not found at {templates_src}[/yellow]"
497
+ )
498
+
499
+ # Copy scripts if they exist
500
+ if scripts_src.exists():
501
+ console.print(f"[dim]Copying scripts from: {scripts_src}[/dim]")
502
+ shutil.copytree(
503
+ scripts_src,
504
+ scripts_dst,
505
+ dirs_exist_ok=True,
506
+ ignore=shutil.ignore_patterns("__pycache__", "*.pyc"),
507
+ )
508
+ console.print(f"[green]✓[/green] Scripts copied")
509
+ else:
510
+ console.print(f"[yellow]Warning: Scripts not found at {scripts_src}[/yellow]")
511
+
512
+ # Copy references if they exist
513
+ references_src = data_paths.get("codex_references")
514
+ if references_src and references_src.exists():
515
+ references_dst = project_path / ".arckit" / "references"
516
+ references_dst.mkdir(parents=True, exist_ok=True)
517
+ shutil.copytree(references_src, references_dst, dirs_exist_ok=True)
518
+ console.print(f"[green]✓[/green] References copied")
519
+
520
+ # Copy slash commands
521
+ # Copy Codex prompts (all_ai and single-AI both install codex)
522
+ if ai_assistant == "codex" or all_ai:
523
+ # Copy Codex skills to .agents/skills/ (replaces deprecated .codex/prompts/)
524
+ codex_skills_src = data_paths.get("codex_skills")
525
+ if codex_skills_src and codex_skills_src.exists():
526
+ skills_dst = project_path / ".agents" / "skills"
527
+ skills_dst.mkdir(parents=True, exist_ok=True)
528
+ shutil.copytree(codex_skills_src, skills_dst, dirs_exist_ok=True)
529
+ skill_count = sum(
530
+ 1 for d in skills_dst.iterdir()
531
+ if d.is_dir() and not d.name.startswith(".")
532
+ )
533
+ console.print(f"[green]✓[/green] Copied {skill_count} skills to .agents/skills/")
534
+ else:
535
+ console.print(
536
+ f"[yellow]Warning: Codex skills not found at {codex_skills_src}[/yellow]"
537
+ )
538
+
539
+ # Copy Codex agent configs
540
+ codex_agents_src = data_paths.get("codex_agents")
541
+ if codex_agents_src and codex_agents_src.exists():
542
+ agents_dst = project_path / ".codex" / "agents"
543
+ agents_dst.mkdir(parents=True, exist_ok=True)
544
+ agent_count = 0
545
+ for agent_file in sorted(codex_agents_src.iterdir()):
546
+ if agent_file.suffix in (".toml", ".md"):
547
+ shutil.copy2(agent_file, agents_dst / agent_file.name)
548
+ agent_count += 1
549
+ console.print(f"[green]✓[/green] Copied {agent_count} agent configs to .codex/agents/")
550
+
551
+ # Copy Codex config.toml (MCP servers + agent roles)
552
+ codex_config_src = data_paths.get("codex_config")
553
+ if codex_config_src and codex_config_src.exists():
554
+ config_dst = project_path / ".codex" / "config.toml"
555
+ shutil.copy2(codex_config_src, config_dst)
556
+ console.print(f"[green]✓[/green] Copied config.toml (MCP servers + hooks + agent roles)")
557
+
558
+ # Copy Codex lifecycle hooks
559
+ codex_hooks_src = data_paths.get("codex_hooks")
560
+ if codex_hooks_src and codex_hooks_src.exists():
561
+ hooks_dst = project_path / ".codex" / "hooks"
562
+ hooks_dst.mkdir(parents=True, exist_ok=True)
563
+ for hook_file in sorted(codex_hooks_src.iterdir()):
564
+ if hook_file.is_file() and hook_file.name != "hooks.json":
565
+ shutil.copy2(hook_file, hooks_dst / hook_file.name)
566
+ console.print(f"[green]✓[/green] Copied Codex lifecycle hooks to .codex/hooks/")
567
+
568
+ # Copy Codex schemas and deterministic validators used by research workflows
569
+ codex_schemas_src = data_paths.get("codex_schemas")
570
+ if codex_schemas_src and codex_schemas_src.exists():
571
+ schemas_dst = project_path / ".arckit" / "schemas"
572
+ shutil.copytree(codex_schemas_src, schemas_dst, dirs_exist_ok=True)
573
+ console.print(f"[green]✓[/green] Copied Codex schemas to .arckit/schemas/")
574
+
575
+ codex_validator_src = data_paths.get("codex_validator")
576
+ if codex_validator_src and codex_validator_src.exists():
577
+ validator_dst = project_path / ".arckit" / "scripts" / "validate-handoff.mjs"
578
+ validator_dst.parent.mkdir(parents=True, exist_ok=True)
579
+ shutil.copy2(codex_validator_src, validator_dst)
580
+ console.print(f"[green]✓[/green] Copied handoff validator to .arckit/scripts/")
581
+
582
+ # Copy OpenCode commands and agents
583
+ if ai_assistant == "opencode" or all_ai:
584
+ # Copy commands
585
+ commands_src = data_paths["opencode_commands"]
586
+ if all_ai:
587
+ target_cmd_dst = project_path / ".opencode" / "commands"
588
+ target_agent_dst = project_path / ".opencode" / "agents"
589
+ else:
590
+ target_cmd_dst = project_path / agent_folder / "commands"
591
+ target_agent_dst = project_path / agent_folder / "agents"
592
+
593
+ if commands_src.exists():
594
+ console.print(f"[dim]Copying OpenCode commands from: {commands_src}[/dim]")
595
+ command_count = 0
596
+ target_cmd_dst.mkdir(parents=True, exist_ok=True)
597
+ for command_file in commands_src.glob("arckit.*.md"):
598
+ shutil.copy2(command_file, target_cmd_dst / command_file.name)
599
+ command_count += 1
600
+ console.print(f"[green]✓[/green] Copied {command_count} OpenCode commands")
601
+ else:
602
+ console.print(
603
+ f"[yellow]Warning: OpenCode commands not found at {commands_src}[/yellow]"
604
+ )
605
+
606
+ # Copy agents
607
+ agents_src = data_paths["opencode_agents"]
608
+ if agents_src.exists():
609
+ console.print(f"[dim]Copying OpenCode agents from: {agents_src}[/dim]")
610
+ agent_count = 0
611
+ target_agent_dst.mkdir(parents=True, exist_ok=True)
612
+ for agent_file in agents_src.glob("*.md"):
613
+ shutil.copy2(agent_file, target_agent_dst / agent_file.name)
614
+ agent_count += 1
615
+ console.print(f"[green]✓[/green] Copied {agent_count} OpenCode agents")
616
+ else:
617
+ console.print(
618
+ f"[yellow]Warning: OpenCode agents not found at {agents_src}[/yellow]"
619
+ )
620
+
621
+ # Copy Copilot prompt files and agents
622
+ if ai_assistant == "copilot":
623
+ console.print("[cyan]Setting up Copilot environment...[/cyan]")
624
+
625
+ # Copy prompt files to .github/prompts/
626
+ copilot_prompts_src = data_paths.get("copilot_prompts")
627
+ if copilot_prompts_src and copilot_prompts_src.exists():
628
+ prompts_dst = project_path / ".github" / "prompts"
629
+ prompts_dst.mkdir(parents=True, exist_ok=True)
630
+ prompt_count = 0
631
+ for prompt_file in copilot_prompts_src.glob("*.prompt.md"):
632
+ shutil.copy2(prompt_file, prompts_dst / prompt_file.name)
633
+ prompt_count += 1
634
+ console.print(f"[green]✓[/green] Copied {prompt_count} prompt files to .github/prompts/")
635
+ else:
636
+ console.print(
637
+ f"[yellow]Warning: Copilot prompts not found at {copilot_prompts_src}[/yellow]"
638
+ )
639
+
640
+ # Copy agent files to .github/agents/
641
+ copilot_agents_src = data_paths.get("copilot_agents")
642
+ if copilot_agents_src and copilot_agents_src.exists():
643
+ agents_dst = project_path / ".github" / "agents"
644
+ agents_dst.mkdir(parents=True, exist_ok=True)
645
+ agent_count = 0
646
+ for agent_file in copilot_agents_src.glob("*.agent.md"):
647
+ shutil.copy2(agent_file, agents_dst / agent_file.name)
648
+ agent_count += 1
649
+ console.print(f"[green]✓[/green] Copied {agent_count} agent files to .github/agents/")
650
+
651
+ # Copy copilot-instructions.md
652
+ copilot_instructions_src = data_paths.get("copilot_instructions")
653
+ if copilot_instructions_src and copilot_instructions_src.exists():
654
+ instructions_dst = project_path / ".github" / "copilot-instructions.md"
655
+ shutil.copy2(copilot_instructions_src, instructions_dst)
656
+ console.print(f"[green]✓[/green] Copied copilot-instructions.md")
657
+
658
+ console.print("[green]✓[/green] Copilot environment configured")
659
+
660
+ console.print("[green]✓[/green] Templates configured")
661
+
662
+ # Copy documentation (unless --minimal)
663
+ if not minimal:
664
+ console.print("[cyan]Setting up documentation...[/cyan]")
665
+
666
+ # Copy docs/guides/
667
+ docs_guides_src = data_paths["docs_guides"]
668
+ if docs_guides_src.exists():
669
+ docs_guides_dst = project_path / "docs" / "guides"
670
+ docs_guides_dst.mkdir(parents=True, exist_ok=True)
671
+ shutil.copytree(docs_guides_src, docs_guides_dst, dirs_exist_ok=True)
672
+ guide_count = len(list(docs_guides_dst.glob("*.md")))
673
+ console.print(f"[green]✓[/green] Copied {guide_count} command guides")
674
+
675
+ # Copy docs/README.md
676
+ docs_readme_src = data_paths["docs_readme"]
677
+ if docs_readme_src.exists():
678
+ docs_readme_dst = project_path / "docs" / "README.md"
679
+ docs_readme_dst.parent.mkdir(parents=True, exist_ok=True)
680
+ shutil.copy2(docs_readme_src, docs_readme_dst)
681
+ console.print(f"[green]✓[/green] Copied docs/README.md")
682
+
683
+ # Copy DEPENDENCY-MATRIX.md
684
+ dep_matrix_src = data_paths["dependency_matrix"]
685
+ if dep_matrix_src.exists():
686
+ shutil.copy2(dep_matrix_src, project_path / "docs" / "DEPENDENCY-MATRIX.md")
687
+ console.print(f"[green]✓[/green] Copied docs/DEPENDENCY-MATRIX.md")
688
+
689
+ # Copy WORKFLOW-DIAGRAMS.md
690
+ workflow_src = data_paths["workflow_diagrams"]
691
+ if workflow_src.exists():
692
+ shutil.copy2(workflow_src, project_path / "docs" / "WORKFLOW-DIAGRAMS.md")
693
+ console.print(f"[green]✓[/green] Copied docs/WORKFLOW-DIAGRAMS.md")
694
+
695
+ console.print("[green]✓[/green] Documentation configured")
696
+
697
+ # Copy VERSION and CHANGELOG.md (always, not gated by --minimal)
698
+ version_src = data_paths["version"]
699
+ if version_src.exists():
700
+ shutil.copy2(version_src, project_path / "VERSION")
701
+ console.print(f"[green]✓[/green] Copied VERSION")
702
+
703
+ changelog_src = data_paths["changelog"]
704
+ if changelog_src.exists():
705
+ shutil.copy2(changelog_src, project_path / "CHANGELOG.md")
706
+ console.print(f"[green]✓[/green] Copied CHANGELOG.md")
707
+
708
+ # Determine command prefix based on AI assistant
709
+ if ai_assistant == "codex":
710
+ p = "$arckit-" # skill invocation
711
+ elif ai_assistant == "copilot":
712
+ p = "/arckit-" # copilot prompt invocation
713
+ else:
714
+ p = "/arckit." # slash command
715
+
716
+ readme_content = f"""# {project_name}
717
+
718
+ Enterprise Architecture Governance Project
719
+
720
+ ## Getting Started
721
+
722
+ This project uses ArcKit — The Enterprise Architecture Governance Harness — for strategy, architecture, delivery, and assurance.
723
+
724
+ ### Available Commands
725
+
726
+ Once you start your AI assistant, you'll have access to these commands:
727
+
728
+ #### Project Planning
729
+ - `{p}plan` - Create project plan with timeline, phases, and gates
730
+
731
+ #### Core Workflow
732
+ - `{p}principles` - Create or update architecture principles
733
+ - `{p}stakeholders` - Analyze stakeholder drivers, goals, and outcomes
734
+ - `{p}risk` - Create comprehensive risk register (Orange Book)
735
+ - `{p}sobc` - Create Strategic Outline Business Case (Green Book 5-case)
736
+ - `{p}requirements` - Define comprehensive requirements
737
+ - `{p}data-model` - Create data model with ERD, GDPR compliance, data governance
738
+ - `{p}research` - Research technology, services, and products with build vs buy analysis
739
+ - `{p}wardley` - Create strategic Wardley Maps for build vs buy and procurement strategy
740
+
741
+ #### Vendor Procurement
742
+ - `{p}sow` - Generate Statement of Work (RFP)
743
+ - `{p}dos` - Digital Outcomes and Specialists (DOS) procurement (UK Digital Marketplace)
744
+ - `{p}gcloud-search` - Search G-Cloud services on UK Digital Marketplace
745
+ - `{p}gcloud-clarify` - Validate G-Cloud services and generate clarification questions
746
+ - `{p}evaluate` - Create vendor evaluation framework and score vendors
747
+
748
+ #### Design Review
749
+ - `{p}hld-review` - Review High-Level Design
750
+ - `{p}dld-review` - Review Detailed Design
751
+
752
+ #### Architecture Diagrams
753
+ - `{p}diagram` - Generate visual architecture diagrams using Mermaid
754
+
755
+ #### Sprint Planning
756
+ - `{p}backlog` - Generate prioritised product backlog with GDS user stories
757
+
758
+ #### Service Management
759
+ - `{p}servicenow` - Generate ServiceNow service design (CMDB, SLAs, incident/change management)
760
+
761
+ #### Traceability & Quality
762
+ - `{p}traceability` - Generate requirements traceability matrix
763
+ - `{p}analyze` - Comprehensive governance quality analysis
764
+
765
+ #### Template Customization
766
+ - `{p}customize` - Copy templates for customization (preserves across updates)
767
+
768
+ #### UK Government Compliance
769
+ - `{p}service-assessment` - GDS Service Standard assessment preparation
770
+ - `{p}tcop` - Technology Code of Practice assessment (all 13 points)
771
+ - `{p}ai-playbook` - AI Playbook compliance for responsible AI
772
+ - `{p}atrs` - Algorithmic Transparency Recording Standard (ATRS) record
773
+
774
+ #### Security Assessment
775
+ - `{p}secure` - UK Government Secure by Design (NCSC CAF, Cyber Essentials, UK GDPR)
776
+ - `{p}mod-secure` - MOD Secure by Design (JSP 440, IAMM, security clearances)
777
+ - `{p}jsp-936` - MOD JSP 936 AI assurance documentation
778
+
779
+ ## Project Structure
780
+
781
+ ```
782
+ {project_name}/
783
+ ├── .arckit/
784
+ │ ├── scripts/
785
+ │ │ └── bash/
786
+ │ ├── templates/ # Default templates (refreshed by arckit init)
787
+ │ └── templates-custom/ # Your customizations (preserved across updates)
788
+ ├── .agents/skills/ # Codex skills (auto-discovered)
789
+ ├── projects/
790
+ │ ├── 000-global/
791
+ │ │ └── ARC-000-PRIN-v1.0.md (global principles)
792
+ │ └── 001-project-name/
793
+ │ ├── requirements.md
794
+ │ ├── sow.md
795
+ │ └── vendors/
796
+ ```
797
+
798
+ ## Template Customization
799
+
800
+ ArcKit templates can be customized without modifying the defaults:
801
+
802
+ 1. Run `{p}customize <template-name>` to copy a template for editing
803
+ 2. Your customizations are stored in `.arckit/templates-custom/`
804
+ 3. Commands automatically use your custom templates when present
805
+ 4. Running `arckit init` again preserves your customizations
806
+
807
+ Example:
808
+ ```
809
+ {p}customize requirements # Copy requirements template
810
+ {p}customize all # Copy all templates
811
+ ```
812
+
813
+ ## Next Steps
814
+
815
+ 1. Start your AI assistant ({AGENT_CONFIG[ai_assistant]["name"]})
816
+ 2. Run `{p}principles` to establish architecture governance
817
+ 3. Create your first project with `{p}requirements`
818
+
819
+ ## Documentation
820
+
821
+ - [ArcKit Documentation](https://github.com/github/arc-kit)
822
+ - [Architecture Principles Guide](https://github.com/github/arc-kit/docs/principles.md)
823
+ - [Vendor Procurement Guide](https://github.com/github/arc-kit/docs/procurement.md)
824
+ """
825
+
826
+ (project_path / "README.md").write_text(readme_content, encoding='utf-8')
827
+ console.print("[green]✓[/green] README created")
828
+
829
+ # Initialize git if requested
830
+ if should_init_git and not is_git_repo(project_path):
831
+ init_git_repo(project_path)
832
+
833
+ # Set up .gitignore for Codex projects
834
+ if ai_assistant == "codex":
835
+ gitignore_path = project_path / ".gitignore"
836
+ codex_ignore_entries = [
837
+ "# Codex CLI",
838
+ ".codex/*",
839
+ "!.codex/agents/",
840
+ "!.codex/agents/**",
841
+ "!.codex/hooks/",
842
+ "!.codex/hooks/**",
843
+ "!.codex/config.toml",
844
+ ]
845
+
846
+ if gitignore_path.exists():
847
+ existing_content = gitignore_path.read_text(encoding='utf-8')
848
+ if ".codex" not in existing_content:
849
+ with open(gitignore_path, 'a', encoding='utf-8') as f:
850
+ f.write("\n" + "\n".join(codex_ignore_entries) + "\n")
851
+ else:
852
+ gitignore_path.write_text("\n".join(codex_ignore_entries) + "\n", encoding='utf-8')
853
+
854
+ console.print("[green]✓[/green] Codex environment configured")
855
+
856
+ # Create .envrc for OpenCode projects
857
+ if ai_assistant == "opencode":
858
+ console.print("[cyan]Setting up OpenCode environment...[/cyan]")
859
+
860
+ # Create .envrc
861
+ envrc_path = project_path / ".envrc"
862
+ envrc_content = f"""# Auto-generated by arckit CLI for OpenCode CLI support
863
+ # This file sets OPENCODE_HOME so OpenCode can discover project-specific commands
864
+
865
+ export OPENCODE_HOME="$PWD/.opencode"
866
+ """
867
+ envrc_path.write_text(envrc_content, encoding="utf-8")
868
+
869
+ # Copy .opencode/README.md if it exists
870
+ opencode_src = data_paths.get("opencode_root")
871
+ if opencode_src and opencode_src.exists():
872
+ opencode_readme_src = opencode_src / "README.md"
873
+ opencode_gitignore_src = opencode_src / ".gitignore"
874
+ opencode_dst = project_path / ".opencode"
875
+ opencode_dst.mkdir(parents=True, exist_ok=True)
876
+
877
+ if opencode_readme_src.exists():
878
+ shutil.copy2(opencode_readme_src, opencode_dst / "README.md")
879
+ console.print(f"[green]✓[/green] Copied .opencode/README.md")
880
+
881
+ if opencode_gitignore_src.exists():
882
+ shutil.copy2(opencode_gitignore_src, opencode_dst / ".gitignore")
883
+ console.print(f"[green]✓[/green] Copied .opencode/.gitignore")
884
+
885
+ # Create opencode.json with MCP configuration (workspace config)
886
+ # Using dictionary format with type="remote" matching SDK McpRemoteConfig
887
+ opencode_json_path = opencode_dst / "opencode.json"
888
+ opencode_json_content = """{
889
+ "$schema": "https://opencode.ai/config.json",
890
+ "mcp": {
891
+ "aws-knowledge": {
892
+ "type": "remote",
893
+ "url": "https://knowledge-mcp.global.api.aws/sse",
894
+ "enabled": true
895
+ },
896
+ "microsoft-learn": {
897
+ "type": "remote",
898
+ "url": "https://learn.microsoft.com/api/mcp/sse",
899
+ "enabled": true
900
+ },
901
+ "google-developer-knowledge": {
902
+ "type": "remote",
903
+ "url": "https://developerknowledge.googleapis.com/mcp/sse",
904
+ "headers": {
905
+ "X-Goog-Api-Key": "${GOOGLE_API_KEY}"
906
+ },
907
+ "enabled": false
908
+ }
909
+ }
910
+ }
911
+ """
912
+ opencode_json_path.write_text(opencode_json_content, encoding="utf-8")
913
+ console.print(
914
+ f"[green]✓[/green] Created .opencode/opencode.json with MCP servers"
915
+ )
916
+
917
+ # Copy skills if they exist
918
+ opencode_skills_src = opencode_src / "skills"
919
+ if opencode_skills_src.exists():
920
+ opencode_skills_dst = opencode_dst / "skills"
921
+ shutil.copytree(
922
+ opencode_skills_src, opencode_skills_dst, dirs_exist_ok=True
923
+ )
924
+ console.print(f"[green]✓[/green] Copied .opencode/skills")
925
+
926
+ # Create/update .gitignore
927
+
928
+ gitignore_path = project_path / ".gitignore"
929
+ opencode_ignore_entries = [
930
+ "# OpenCode CLI - exclude auth tokens but include commands",
931
+ ".opencode/*",
932
+ "!.opencode/commands/",
933
+ "!.opencode/README.md",
934
+ "!.opencode/.gitignore",
935
+ "",
936
+ "# direnv",
937
+ ".envrc.local",
938
+ ]
939
+
940
+ if gitignore_path.exists():
941
+ existing_content = gitignore_path.read_text(encoding="utf-8")
942
+ if ".opencode" not in existing_content:
943
+ with open(gitignore_path, "a", encoding="utf-8") as f:
944
+ f.write("\n" + "\n".join(opencode_ignore_entries) + "\n")
945
+ else:
946
+ gitignore_path.write_text("\n".join(opencode_ignore_entries) + "\n", encoding="utf-8")
947
+
948
+ console.print(
949
+ "[green]✓[/green] OpenCode environment configured (.envrc created)"
950
+ )
951
+
952
+ # Success message
953
+ console.print(
954
+ "\n[bold green]✓ ArcKit project initialized successfully![/bold green]\n"
955
+ )
956
+
957
+ next_steps = [
958
+ f"1. Navigate to project: [cyan]cd {project_name if not here else '.'}[/cyan]",
959
+ ]
960
+
961
+ if ai_assistant == "codex":
962
+ next_steps.append("2. Start Codex: [cyan]codex[/cyan]")
963
+ next_steps.append(
964
+ "3. Establish architecture principles: [cyan]$arckit-principles[/cyan]"
965
+ )
966
+ next_steps.append(
967
+ "4. Create your first project: [cyan]$arckit-requirements[/cyan]"
968
+ )
969
+ elif ai_assistant == "opencode":
970
+ next_steps.append("2. Set up OPENCODE_HOME environment variable:")
971
+ next_steps.append(
972
+ " [cyan]RECOMMENDED[/cyan]: Install direnv and run [cyan]direnv allow[/cyan]"
973
+ )
974
+ next_steps.append(
975
+ ' Alternative: Run [cyan]export OPENCODE_HOME="$PWD/.opencode"[/cyan]'
976
+ )
977
+ next_steps.append(f"3. Start OpenCode: [cyan]opencode[/cyan]")
978
+ next_steps.append(
979
+ "4. Establish architecture principles: [cyan]/arckit:principles[/cyan]"
980
+ )
981
+ next_steps.append("5. Create your first project: [cyan]/arckit:requirements[/cyan]"
982
+ )
983
+ elif ai_assistant == "copilot":
984
+ next_steps.append("2. Open in VS Code: [cyan]code .[/cyan]")
985
+ next_steps.append("3. Open Copilot Chat and type: [cyan]/arckit-principles[/cyan]")
986
+ next_steps.append(
987
+ "4. Create your first project: [cyan]/arckit-requirements[/cyan]"
988
+ )
989
+
990
+ console.print(Panel("\n".join(next_steps), title="Next Steps", border_style="cyan"))
991
+
992
+
993
+ @app.command(name="migrate-classification")
994
+ def migrate_classification(
995
+ apply: bool = typer.Option(
996
+ False,
997
+ "--apply",
998
+ help="Apply the proposed mappings (default: report only).",
999
+ ),
1000
+ root: str = typer.Option(
1001
+ "projects",
1002
+ "--root",
1003
+ help="Root directory to walk (default: projects).",
1004
+ ),
1005
+ ):
1006
+ """Migrate Document Control Classification from UK ladder to UAE Smart Data ladder.
1007
+
1008
+ One-time helper for projects switching to the UAE Federal Overlay (v4.10).
1009
+ Walks projects/ for ARC-* artefacts and proposes mappings:
1010
+
1011
+ PUBLIC -> Open, OFFICIAL -> Shared, OFFICIAL-SENSITIVE -> Confidential,
1012
+ SECRET -> Secret, TOP SECRET -> Top Secret
1013
+
1014
+ Default is report-only; pass --apply to write the changes.
1015
+ """
1016
+ # Locate the migration script (works for source/dev, pip install, uv tool install).
1017
+ here = Path(__file__).resolve()
1018
+ candidates = [
1019
+ here.parents[2] / "scripts" / "python" / "migrate_classification.py", # source/dev
1020
+ Path.cwd() / "scripts" / "python" / "migrate_classification.py", # cwd-relative
1021
+ ]
1022
+ # Also try the get_data_paths() fallback (covers pip and uv tool installs).
1023
+ try:
1024
+ data_paths = get_data_paths() # type: ignore[name-defined]
1025
+ if data_paths and "scripts" in data_paths:
1026
+ candidates.append(Path(data_paths["scripts"]) / "python" / "migrate_classification.py")
1027
+ except Exception:
1028
+ pass
1029
+
1030
+ script = next((c for c in candidates if c.is_file()), None)
1031
+ if script is None:
1032
+ console.print(
1033
+ "[red]Error:[/red] migrate_classification.py not found. "
1034
+ "Searched: " + ", ".join(str(c) for c in candidates)
1035
+ )
1036
+ raise typer.Exit(code=2)
1037
+
1038
+ cmd = [sys.executable, str(script), "--root", root]
1039
+ if apply:
1040
+ cmd.append("--apply")
1041
+
1042
+ result = subprocess.run(cmd)
1043
+ raise typer.Exit(code=result.returncode)
1044
+
1045
+
1046
+ @app.command()
1047
+ def check():
1048
+ """Check that all required tools are installed."""
1049
+ show_banner()
1050
+ console.print("[bold]Checking for installed tools...[/bold]\n")
1051
+
1052
+ tools = {
1053
+ "git": "Version control",
1054
+ "code": "Visual Studio Code",
1055
+ }
1056
+
1057
+ for tool, description in tools.items():
1058
+ if check_tool(tool):
1059
+ console.print(f"[green]✓[/green] {description} ({tool})")
1060
+ else:
1061
+ console.print(f"[red]✗[/red] {description} ({tool}) - not found")
1062
+
1063
+ console.print("\n[bold green]ArcKit CLI is ready to use![/bold green]")
1064
+
1065
+
1066
+ @app.callback()
1067
+ def callback(ctx: typer.Context):
1068
+ """Show banner when no subcommand is provided."""
1069
+ if (
1070
+ ctx.invoked_subcommand is None
1071
+ and "--help" not in sys.argv
1072
+ and "-h" not in sys.argv
1073
+ ):
1074
+ show_banner()
1075
+ console.print(
1076
+ Align.center("[dim]Run 'arckit --help' for usage information[/dim]")
1077
+ )
1078
+ console.print()
1079
+
1080
+
1081
+
1082
+ @app.callback()
1083
+ def callback(ctx: typer.Context):
1084
+ """Show banner when no subcommand is provided."""
1085
+ if (
1086
+ ctx.invoked_subcommand is None
1087
+ and "--help" not in sys.argv
1088
+ and "-h" not in sys.argv
1089
+ ):
1090
+ show_banner()
1091
+ console.print(
1092
+ Align.center("[dim]Run 'arckit --help' for usage information[/dim]")
1093
+ )
1094
+ console.print()
1095
+
1096
+
1097
+ @app.command()
1098
+ def version():
1099
+ """Show ArcKit version."""
1100
+ # Try to read version from VERSION file or package metadata
1101
+ version = "unknown"
1102
+ # Try package metadata first
1103
+ try:
1104
+ from importlib.metadata import version as get_version
1105
+ version = get_version("arckit-cli")
1106
+ except Exception:
1107
+ # Fallback to VERSION file
1108
+ version_path = Path(__file__).parent.parent.parent / "VERSION"
1109
+ if version_path.exists():
1110
+ version = version_path.read_text().strip()
1111
+ console.print(f"arckit {version}")
1112
+
1113
+
1114
+ def main():
1115
+ """Main entry point for the ArcKit CLI."""
1116
+ app()
1117
+
1118
+
1119
+ if __name__ == "__main__":
1120
+ main()