specfact-cli 0.21.0__tar.gz → 0.22.0__tar.gz

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 (195) hide show
  1. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/PKG-INFO +302 -209
  2. specfact_cli-0.22.0/README.md +455 -0
  3. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/pyproject.toml +1 -1
  4. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.sync-backlog.md +64 -6
  5. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/__init__.py +1 -1
  6. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/__init__.py +1 -1
  7. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/adapters/__init__.py +5 -1
  8. specfact_cli-0.22.0/src/specfact_cli/adapters/base.py +217 -0
  9. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/adapters/github.py +206 -1
  10. specfact_cli-0.22.0/src/specfact_cli/adapters/openspec.py +805 -0
  11. specfact_cli-0.22.0/src/specfact_cli/adapters/openspec_parser.py +427 -0
  12. specfact_cli-0.22.0/src/specfact_cli/adapters/speckit.py +1100 -0
  13. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/code_analyzer.py +8 -1
  14. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/cli.py +3 -15
  15. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/__init__.py +0 -4
  16. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/generate.py +5 -244
  17. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/import_cmd.py +271 -111
  18. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/plan.py +34 -16
  19. specfact_cli-0.21.0/src/specfact_cli/commands/bridge.py → specfact_cli-0.22.0/src/specfact_cli/commands/sdd.py +140 -23
  20. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/sync.py +528 -176
  21. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/importers/speckit_converter.py +8 -5
  22. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/importers/speckit_scanner.py +24 -5
  23. specfact_cli-0.22.0/src/specfact_cli/migrations/__init__.py +20 -0
  24. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/migrations/plan_migrator.py +24 -0
  25. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/__init__.py +12 -0
  26. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/bridge.py +128 -1
  27. specfact_cli-0.22.0/src/specfact_cli/models/capabilities.py +20 -0
  28. specfact_cli-0.22.0/src/specfact_cli/models/change.py +118 -0
  29. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/project.py +99 -0
  30. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/source_tracking.py +8 -0
  31. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/__init__.py +3 -5
  32. specfact_cli-0.22.0/src/specfact_cli/sync/bridge_probe.py +196 -0
  33. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/bridge_sync.py +353 -164
  34. specfact_cli-0.22.0/src/specfact_cli/utils/code_change_detector.py +290 -0
  35. specfact_cli-0.21.0/README.md +0 -362
  36. specfact_cli-0.21.0/src/specfact_cli/adapters/base.py +0 -105
  37. specfact_cli-0.21.0/src/specfact_cli/commands/implement.py +0 -417
  38. specfact_cli-0.21.0/src/specfact_cli/commands/sdd.py +0 -139
  39. specfact_cli-0.21.0/src/specfact_cli/migrations/__init__.py +0 -10
  40. specfact_cli-0.21.0/src/specfact_cli/sync/bridge_probe.py +0 -364
  41. specfact_cli-0.21.0/src/specfact_cli/sync/speckit_sync.py +0 -388
  42. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/.gitignore +0 -0
  43. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/LICENSE.md +0 -0
  44. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/mappings/node-async.yaml +0 -0
  45. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/mappings/python-async.yaml +0 -0
  46. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/mappings/speckit-default.yaml +0 -0
  47. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/shared/cli-enforcement.md +0 -0
  48. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.01-import.md +0 -0
  49. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.02-plan.md +0 -0
  50. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.03-review.md +0 -0
  51. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.04-sdd.md +0 -0
  52. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.05-enforce.md +0 -0
  53. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.06-sync.md +0 -0
  54. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.07-contracts.md +0 -0
  55. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.compare.md +0 -0
  56. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/prompts/specfact.validate.md +0 -0
  57. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/schemas/deviation.schema.json +0 -0
  58. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/schemas/plan.schema.json +0 -0
  59. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/schemas/protocol.schema.json +0 -0
  60. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/github-action.yml.j2 +0 -0
  61. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/persona/architect.md.j2 +0 -0
  62. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/persona/developer.md.j2 +0 -0
  63. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/persona/product-owner.md.j2 +0 -0
  64. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/plan.bundle.yaml.j2 +0 -0
  65. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/pr-template.md.j2 +0 -0
  66. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/protocol.yaml.j2 +0 -0
  67. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/README.md +0 -0
  68. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/__init__.py +0 -0
  69. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/adapters.py +0 -0
  70. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/bindings.yaml +0 -0
  71. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/bindings.yaml.example +0 -0
  72. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/crosshair_django_wrapper.py +0 -0
  73. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/crosshair_plugin.py +0 -0
  74. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/django_form_extractor.py +0 -0
  75. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/django_url_extractor.py +0 -0
  76. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/generate_harness.py +0 -0
  77. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/harness_contracts.py +0 -0
  78. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/populate_contracts.py +0 -0
  79. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/run_sidecar.sh +0 -0
  80. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/sidecar/sidecar-init.sh +0 -0
  81. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/resources/templates/telemetry.yaml.example +0 -0
  82. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/adapters/registry.py +0 -0
  83. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/agents/__init__.py +0 -0
  84. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/agents/analyze_agent.py +0 -0
  85. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/agents/base.py +0 -0
  86. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/agents/plan_agent.py +0 -0
  87. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/agents/registry.py +0 -0
  88. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/agents/sync_agent.py +0 -0
  89. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/__init__.py +0 -0
  90. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
  91. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
  92. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
  93. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
  94. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/graph_analyzer.py +0 -0
  95. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/relationship_mapper.py +0 -0
  96. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
  97. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
  98. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/analyze.py +0 -0
  99. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/contract_cmd.py +0 -0
  100. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/drift.py +0 -0
  101. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/enforce.py +0 -0
  102. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/init.py +0 -0
  103. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/migrate.py +0 -0
  104. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/project_cmd.py +0 -0
  105. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/repro.py +0 -0
  106. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/commands/spec.py +0 -0
  107. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/common/__init__.py +0 -0
  108. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/common/logger_setup.py +0 -0
  109. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/common/logging_utils.py +0 -0
  110. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/common/text_utils.py +0 -0
  111. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/common/utils.py +0 -0
  112. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/comparators/__init__.py +0 -0
  113. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/comparators/plan_comparator.py +0 -0
  114. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
  115. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
  116. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/__init__.py +0 -0
  117. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/contract_generator.py +0 -0
  118. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/openapi_extractor.py +0 -0
  119. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/persona_exporter.py +0 -0
  120. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/plan_generator.py +0 -0
  121. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/protocol_generator.py +0 -0
  122. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/report_generator.py +0 -0
  123. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/task_generator.py +0 -0
  124. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/test_to_openapi.py +0 -0
  125. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/generators/workflow_generator.py +0 -0
  126. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/importers/__init__.py +0 -0
  127. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/integrations/__init__.py +0 -0
  128. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/integrations/specmatic.py +0 -0
  129. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/merge/__init__.py +0 -0
  130. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/merge/resolver.py +0 -0
  131. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/contract.py +0 -0
  132. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/deviation.py +0 -0
  133. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/enforcement.py +0 -0
  134. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/persona_template.py +0 -0
  135. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/plan.py +0 -0
  136. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/protocol.py +0 -0
  137. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/quality.py +0 -0
  138. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/sdd.py +0 -0
  139. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/models/task.py +0 -0
  140. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/modes/__init__.py +0 -0
  141. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/modes/detector.py +0 -0
  142. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/modes/router.py +0 -0
  143. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/parsers/__init__.py +0 -0
  144. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/parsers/persona_importer.py +0 -0
  145. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/resources/semgrep/async.yml +0 -0
  146. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
  147. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
  148. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/runtime.py +0 -0
  149. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/bridge_watch.py +0 -0
  150. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/change_detector.py +0 -0
  151. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/code_to_spec.py +0 -0
  152. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/drift_detector.py +0 -0
  153. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/repository_sync.py +0 -0
  154. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/spec_to_code.py +0 -0
  155. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/spec_to_tests.py +0 -0
  156. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/watcher.py +0 -0
  157. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
  158. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/telemetry.py +0 -0
  159. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/templates/__init__.py +0 -0
  160. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/templates/bridge_templates.py +0 -0
  161. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/templates/specification_templates.py +0 -0
  162. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/__init__.py +0 -0
  163. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
  164. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/bundle_loader.py +0 -0
  165. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/console.py +0 -0
  166. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/content_sanitizer.py +0 -0
  167. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/context_detection.py +0 -0
  168. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/enrichment_context.py +0 -0
  169. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/enrichment_parser.py +0 -0
  170. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/env_manager.py +0 -0
  171. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/feature_keys.py +0 -0
  172. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/git.py +0 -0
  173. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/github_annotations.py +0 -0
  174. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/ide_setup.py +0 -0
  175. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/incremental_check.py +0 -0
  176. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/optional_deps.py +0 -0
  177. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/performance.py +0 -0
  178. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/progress.py +0 -0
  179. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
  180. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/prompts.py +0 -0
  181. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/sdd_discovery.py +0 -0
  182. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/source_scanner.py +0 -0
  183. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/structure.py +0 -0
  184. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/structured_io.py +0 -0
  185. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/suggestions.py +0 -0
  186. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/utils/yaml_utils.py +0 -0
  187. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/validators/__init__.py +0 -0
  188. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/validators/agile_validation.py +0 -0
  189. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/validators/cli_first_validator.py +0 -0
  190. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/validators/contract_validator.py +0 -0
  191. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/validators/fsm.py +0 -0
  192. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/validators/repro_checker.py +0 -0
  193. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/validators/schema.py +0 -0
  194. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/versioning/__init__.py +0 -0
  195. {specfact_cli-0.21.0 → specfact_cli-0.22.0}/src/specfact_cli/versioning/analyzer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specfact-cli
3
- Version: 0.21.0
3
+ Version: 0.22.0
4
4
  Summary: Brownfield-first CLI: Reverse engineer legacy Python → specs → enforced contracts. Automate legacy code documentation and prevent modernization regressions.
5
5
  Project-URL: Homepage, https://github.com/nold-ai/specfact-cli
6
6
  Project-URL: Repository, https://github.com/nold-ai/specfact-cli.git
@@ -275,8 +275,10 @@ Description-Content-Type: text/markdown
275
275
 
276
276
  # SpecFact CLI
277
277
 
278
- > **Stop vibe coding. Start shipping quality code with contracts.**
279
- > Brownfield-first CLI: Analyze legacy Python → find gaps → enforce contracts
278
+ > **Brownfield-first legacy code modernization with runtime contract enforcement.**
279
+ > Analyze existing Python code Extract specs → Find gaps → Enforce contracts → Prevent regressions
280
+
281
+ **No API keys required. Works offline. Zero vendor lock-in.**
280
282
 
281
283
  [![PyPI version](https://img.shields.io/pypi/v/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
282
284
  [![Python versions](https://img.shields.io/pypi/pyversions/specfact-cli.svg)](https://pypi.org/project/specfact-cli/)
@@ -285,311 +287,407 @@ Description-Content-Type: text/markdown
285
287
 
286
288
  <div align="center">
287
289
 
288
- **[🌐 Learn More at noldai.com](https://noldai.com)** • **[📚 Documentation](https://nold-ai.github.io/specfact-cli)** • **[💬 Support](mailto:hello@noldai.com)**
290
+ **[🌐 Website](https://noldai.com)** • **[📚 Documentation](https://nold-ai.github.io/specfact-cli)** • **[💬 Support](mailto:hello@noldai.com)**
289
291
 
290
292
  </div>
291
293
 
292
294
  ---
293
295
 
294
- ## 📋 Current Version: 0.21.0
295
-
296
- **🎉 v0.21.0** introduces DevOps backlog tracking integration and OpenSpec bridge adapter support, expanding SpecFact's capabilities for team collaboration and specification management.
297
-
298
- **SpecFact 0.21.0 focuses on what it does best: analyzing legacy code, enforcing contracts, and integrating with modern DevOps workflows.** This release is production-ready and continues to receive regular updates.
296
+ ## What is SpecFact?
299
297
 
300
- | Capability | Status | Description |
301
- |------------|--------|-------------|
302
- | **Code Analysis** | ✅ Stable | Reverse engineer legacy code into documented specs |
303
- | **Gap Detection** | ✅ Stable | Find missing tests, contracts, and documentation |
304
- | **Contract Enforcement** | ✅ Stable | Prevent regressions with runtime validation |
305
- | **API Contract Testing** | ✅ Stable | Validate OpenAPI specs with Specmatic |
306
- | **AI IDE Bridge** | ✅ Stable | Generate prompts for Cursor, Copilot, Claude |
307
- | **DevOps Backlog Tracking** | ✅ New | Export OpenSpec change proposals to GitHub Issues, ADO, Linear, Jira |
308
- | **OpenSpec Integration** | ✅ New | Bridge adapter for OpenSpec change proposals and specifications |
309
- | **Code Generation** | ⚠️ Deprecated | Coming in v1.0 with AI-assisted workflow |
298
+ **SpecFact CLI analyzes your existing Python code** to automatically extract specifications, find missing tests and contracts, and enforce them to prevent bugs during modernization.
310
299
 
311
- **Need code generation?** Use the new bridge commands to get AI-ready prompts:
300
+ **Perfect for:** Teams modernizing legacy Python systems who can't afford production bugs during migration.
312
301
 
313
- ```bash
314
- # Get AI prompt to fix a gap
315
- specfact generate fix-prompt GAP-001 --bundle legacy-api
302
+ ### Why SpecFact?
316
303
 
317
- # Get AI prompt to generate tests
318
- specfact generate test-prompt src/auth/login.py
319
- ```
304
+ AI coding assistants are powerful but unpredictable when requirements live in chat history. SpecFact adds a **brownfield-first analysis workflow** that understands existing code, extracts specs automatically, and enforces them as runtime contracts, giving you deterministic, reviewable outputs.
320
305
 
321
- These prompts work with any AI IDE (Cursor, Copilot, Claude Code, etc.) - you control the code generation, SpecFact validates the results.
306
+ **Key outcomes:**
322
307
 
323
- ---
308
+ * **Understand legacy code** in minutes, not weeks (automatic spec extraction)
309
+ * **Find gaps** in tests, contracts, and documentation automatically
310
+ * **Prevent regressions** with runtime contract enforcement during modernization
311
+ * **Works with the tools you already use**: VS Code, Cursor, GitHub Actions, pre-commit hooks
312
+ * **No API keys required** - Works completely offline
324
313
 
325
- ## 🚀 Quick Start in 60 Seconds
314
+ ## How SpecFact Compares (at a glance)
326
315
 
327
- ### Install in 10 seconds
316
+ **New to spec-driven development?** Here's how SpecFact compares to other tools:
328
317
 
329
- ```bash
330
- # Zero-install (recommended)
331
- uvx specfact-cli
318
+ | Tool | Best For | SpecFact's Focus |
319
+ |------|----------|------------------|
320
+ | **GitHub Spec-Kit** | Greenfield specs, multi-language, interactive authoring | **Brownfield analysis**, runtime enforcement, formal verification |
321
+ | **OpenSpec** | Specification anchoring, change tracking, cross-repo workflows | **Code analysis**, contract enforcement, DevOps integration |
322
+ | **Traditional Testing** | Manual test writing, code review | **Automated gap detection**, contract-first validation, CI/CD gates |
332
323
 
333
- # Or install with pip (upgrade if already installed)
334
- pip install -U specfact-cli
335
- ```
324
+ **Key Differentiators:**
336
325
 
337
- ### Your first command (< 60 seconds)
326
+ * **Brownfield-first** - Reverse engineers existing code (primary use case)
327
+ * ✅ **Runtime enforcement** - Contracts prevent regressions automatically
328
+ * ✅ **Formal verification** - CrossHair symbolic execution (not just LLM suggestions)
329
+ * ✅ **Team collaboration** - Role-based workflows for agile/scrum teams
330
+ * ✅ **Works offline** - No API keys, no cloud, zero vendor lock-in
338
331
 
339
- ```bash
340
- # Modernizing legacy code? (Recommended)
341
- specfact import from-code legacy-api --repo .
332
+ **Compared to spec-kit & OpenSpec**: Those shine for brand-new features (0→1) and change tracking. SpecFact also excels when modernizing existing behavior (1→n), especially when you need runtime safety nets.
342
333
 
343
- # Starting a new project?
344
- specfact plan init legacy-api --interactive
334
+ 👉 **[See detailed comparison guide](docs/guides/speckit-comparison.md)** - Understand when to use SpecFact, Spec-Kit, OpenSpec, or all together
345
335
 
346
- # Using GitHub Spec-Kit or other tools?
347
- specfact import from-bridge --repo . --adapter speckit --write
348
- ```
336
+ ### The Problem It Solves
349
337
 
350
- That's it! 🎉
338
+ * **Legacy code** with no documentation or outdated specs
339
+ * ❌ **Missing tests** and contracts that should exist
340
+ * ❌ **Regressions** introduced during refactoring/modernization
341
+ * ❌ **No safety net** to catch bugs before production
351
342
 
352
- > **Need machine-readable artifacts?** Use `specfact --output-format json …` (or the per-command `--output-format` flag) to emit plan bundles and reports as JSON instead of YAML.
343
+ ### The Solution
353
344
 
354
- ---
345
+ SpecFact CLI:
355
346
 
356
- ## What is SpecFact CLI?
347
+ 1. **Analyzes** your existing code → Extracts specs automatically
348
+ 2. **Finds gaps** → Missing tests, contracts, documentation
349
+ 3. **Enforces contracts** → Prevents regressions with runtime validation
350
+ 4. **Integrates** → Works with VS Code, Cursor, GitHub Actions, pre-commit hooks
357
351
 
358
- A brownfield-first CLI that **analyzes your legacy code** to find gaps, then **enforces contracts** to prevent regressions during modernization.
352
+ **Works offline. No account required. Zero vendor lock-in.**
359
353
 
360
- **Stop vibe coding. Start shipping quality code with contracts.** SpecFact automatically extracts specs from existing code, finds missing tests and contracts, then enforces them as you modernize—preventing bugs before they reach production.
354
+ ### How It Works
361
355
 
362
- **Perfect for:** Teams modernizing legacy Python systems, data pipelines, DevOps scripts
356
+ SpecFact follows a simple workflow that analyzes existing code and enforces contracts to prevent regressions:
363
357
 
364
- **For teams that can't afford production bugs during migration.**
365
-
366
- ### 🎯 Built for Real-World Agile Teams
367
-
368
- SpecFact isn't just a technical tool—it's designed for **real-world agile/scrum teams** with role-based workflows:
358
+ ```
359
+ ┌────────────────────┐
360
+ Analyze Legacy │
361
+ │ Code │
362
+ └────────┬───────────┘
363
+ │ extract specs automatically
364
+
365
+ ┌────────────────────┐
366
+ │ Find Gaps │
367
+ │ (tests, contracts) │◀──── feedback loop ──────┐
368
+ └────────┬───────────┘ │
369
+ │ add contracts │
370
+ ▼ │
371
+ ┌────────────────────┐ │
372
+ │ Enforce Contracts │──────────────────────────┘
373
+ │ (runtime validation)│
374
+ └────────┬───────────┘
375
+ │ modernize safely
376
+
377
+ ┌────────────────────┐
378
+ │ Prevent Regressions│
379
+ │ (safety net) │
380
+ └────────────────────┘
381
+
382
+ 1. Analyze your existing code to extract specs automatically
383
+ 2. Find gaps in tests, contracts, and documentation
384
+ 3. Add contracts to critical paths for runtime enforcement
385
+ 4. Modernize safely knowing contracts will catch regressions
386
+ ```
369
387
 
370
- - 👤 **Product Owners** → Export backlog with DoR checklists, prioritization, dependencies, and sprint planning
371
- - 🏗️ **Architects** → Export technical constraints, protocols, contracts, architectural decisions, and risk assessments
372
- - 💻 **Developers** → Export implementation tasks, code mappings, test scenarios, and Definition of Done criteria
388
+ ```mermaid
389
+ graph TB
390
+ subgraph "Your Legacy Code"
391
+ LC[Legacy Python Code<br/>No docs, no tests]
392
+ end
393
+
394
+ subgraph "SpecFact Analysis"
395
+ A1[import from-code<br/>Extract specs]
396
+ A2[Find Gaps<br/>Missing tests & contracts]
397
+ A3[Generate Plan Bundle<br/>Features & Stories]
398
+ end
399
+
400
+ subgraph "Contract Enforcement"
401
+ E1[Add Contracts<br/>Runtime validation]
402
+ E2[Enforce SDD<br/>Quality gates]
403
+ E3[CI/CD Integration<br/>Block bad code]
404
+ end
405
+
406
+ subgraph "Team Collaboration"
407
+ T1[Export by Role<br/>PO, Architect, Dev]
408
+ T2[Markdown Workflows<br/>No YAML editing]
409
+ T3[Sync to DevOps<br/>GitHub, Linear, Jira]
410
+ end
411
+
412
+ subgraph "Safety Net"
413
+ S1[Prevent Regressions<br/>Catch bugs early]
414
+ S2[Modernize Safely<br/>Refactor with confidence]
415
+ end
416
+
417
+ LC -->|Step 1| A1
418
+ A1 --> A2
419
+ A2 --> A3
420
+ A3 -->|Step 2| E1
421
+ E1 --> E2
422
+ E2 --> E3
423
+ E3 -->|Step 3| S1
424
+ S1 --> S2
425
+
426
+ A3 -->|Optional| T1
427
+ T1 --> T2
428
+ T2 --> T3
429
+
430
+ style LC fill:#ef4444,stroke:#dc2626,stroke-width:2px,color:#fff
431
+ style A1 fill:#f97316,stroke:#c2410c,stroke-width:2px,color:#fff
432
+ style A2 fill:#f97316,stroke:#c2410c,stroke-width:2px,color:#fff
433
+ style A3 fill:#f97316,stroke:#c2410c,stroke-width:2px,color:#fff
434
+ style E1 fill:#3b82f6,stroke:#1e40af,stroke-width:2px,color:#fff
435
+ style E2 fill:#3b82f6,stroke:#1e40af,stroke-width:2px,color:#fff
436
+ style E3 fill:#3b82f6,stroke:#1e40af,stroke-width:2px,color:#fff
437
+ style T1 fill:#10b981,stroke:#047857,stroke-width:2px,color:#fff
438
+ style T2 fill:#10b981,stroke:#047857,stroke-width:2px,color:#fff
439
+ style T3 fill:#10b981,stroke:#047857,stroke-width:2px,color:#fff
440
+ style S1 fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
441
+ style S2 fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
442
+ ```
373
443
 
374
- **Each role works in their own Markdown files** (no YAML editing), and SpecFact syncs everything together automatically. Perfect for teams using agile/scrum practices with clear role separation.
444
+ ### Typical Workflow
445
+
446
+ ```mermaid
447
+ sequenceDiagram
448
+ participant Dev as Developer
449
+ participant SF as SpecFact CLI
450
+ participant Code as Legacy Code
451
+ participant CI as CI/CD
452
+
453
+ Note over Dev,CI: Step 1: Analyze Legacy Code
454
+ Dev->>SF: specfact import from-code my-project
455
+ SF->>Code: Analyze Python files
456
+ Code-->>SF: Extract features & stories
457
+ SF-->>Dev: Plan bundle created
458
+
459
+ Note over Dev,CI: Step 2: Find & Fix Gaps
460
+ Dev->>SF: specfact analyze gaps my-project
461
+ SF-->>Dev: Missing tests & contracts found
462
+ Dev->>Dev: Add tests & contracts
463
+
464
+ Note over Dev,CI: Step 3: Enforce Contracts
465
+ Dev->>SF: specfact enforce sdd my-project
466
+ SF->>SF: Validate contracts
467
+ SF-->>Dev: Quality gates configured
468
+
469
+ Note over Dev,CI: Step 4: Modernize Safely
470
+ Dev->>Code: Refactor code
471
+ Code->>CI: Push changes
472
+ CI->>SF: Run contract validation
473
+ SF-->>CI: ✅ Pass or ❌ Block
474
+
475
+ alt Contracts Pass
476
+ CI-->>Dev: ✅ Merge allowed
477
+ else Contracts Fail
478
+ CI-->>Dev: ❌ Merge blocked
479
+ Dev->>Code: Fix violations
480
+ end
481
+ ```
375
482
 
376
483
  ---
377
484
 
378
- ## Why SpecFact?
379
-
380
- ### **Love GitHub Spec-Kit or OpenSpec? SpecFact Adds What's Missing**
381
-
382
- **Use together:** Keep using Spec-Kit for new features, OpenSpec for change tracking, add SpecFact for legacy code modernization.
485
+ ## 🚀 Quick Start
383
486
 
384
- | What You Need | Spec-Kit / OpenSpec | SpecFact CLI |
385
- |---------------|---------------------|--------------|
386
- | **Work with existing code** | ⚠️ Designed for new features | ✅ **Reverse-engineer legacy code** |
387
- | **Prevent regressions** | ⚠️ Documentation only | ✅ **Runtime contract enforcement** |
388
- | **Find hidden bugs** | ⚠️ LLM suggestions (may miss) | ✅ **Symbolic execution** (CrossHair) |
389
- | **Automated safety net** | ⚠️ Manual code review | ✅ **CI/CD gates** (GitHub Actions) |
390
- | **DevOps integration** | ⚠️ Manual export | ✅ **Bridge adapters** (GitHub, ADO, Linear, Jira) |
487
+ ### Install (10 seconds)
391
488
 
392
- **Perfect together:**
489
+ ```bash
490
+ # Zero-install (recommended - no setup needed)
491
+ uvx specfact-cli@latest
393
492
 
394
- - **Spec-Kit** for new features → Fast spec generation with Copilot
395
- - **OpenSpec** for change tracking → Specification anchoring and delta tracking
396
- - ✅ **SpecFact** for legacy code → Runtime enforcement prevents regressions
397
- - ✅ **Bridge adapters** → Sync between all tools automatically (New in 0.21.0)
398
- - ✅ **GitHub Actions** → SpecFact integrates with your existing GitHub workflows
493
+ # Or install globally
494
+ pip install -U specfact-cli
495
+ ```
399
496
 
400
- **Bottom line:** Spec-Kit is great for documenting new features. OpenSpec excels at change tracking. SpecFact is essential for modernizing legacy code safely. Use all three together for the best of all worlds.
497
+ ### Your First Command (< 60 seconds)
401
498
 
402
- ---
499
+ **Analyze your existing code:**
403
500
 
404
- ## 💡 Key Capabilities
501
+ ```bash
502
+ # Analyze legacy codebase (most common use case)
503
+ specfact import from-code my-project --repo .
405
504
 
406
- ### Technical Capabilities
505
+ # Or start a new project
506
+ specfact plan init my-project --interactive
507
+ ```
407
508
 
408
- - ✅ **Reverse engineer legacy code** → Extract specs automatically from existing code
409
- - ✅ **Runtime contract enforcement** → Prevent regressions during modernization
410
- - ✅ **Symbolic execution** → Discover hidden edge cases with CrossHair
411
- - ✅ **API contract testing** → Validate OpenAPI/AsyncAPI specs with Specmatic integration
412
- - ✅ **Works offline** → No cloud required, fully local
413
- - ✅ **CLI integrations** → Works seamlessly with VS Code, Cursor, GitHub Actions, and any agentic workflow
509
+ **That's it!** SpecFact will:
414
510
 
415
- ### Team Collaboration Capabilities
511
+ * Extract features and stories from your code
512
+ * Find missing tests and contracts
513
+ * Generate a plan bundle you can enforce
416
514
 
417
- - **Persona-based workflows** Product Owners, Architects, and Developers work in parallel on their own sections
418
- - ✅ **Agile/scrum alignment** → Definition of Ready (DoR), story points, dependencies, prioritization, sprint planning
419
- - ✅ **Role-specific exports** → Each persona gets a tailored Markdown view with only what they need
420
- - ✅ **Git-native collaboration** → Conflicts resolved in human-readable Markdown, not brittle YAML
421
- - ✅ **Real-world templates** → Templates designed by agile coaches to match actual team expectations
515
+ 👉 **[Getting Started Guide](docs/getting-started/README.md)** - Complete walkthrough with examples
422
516
 
423
517
  ---
424
518
 
425
- ## 👥 Team Collaboration: Persona-Based Workflows
519
+ ## Key Features
426
520
 
427
- SpecFact enables **real-world agile/scrum teams** to work together seamlessly with role-based workflows:
521
+ ### 🔍 Code Analysis
428
522
 
429
- ```bash
430
- # Product Owner: Export backlog for sprint planning
431
- specfact project export --bundle legacy-api --persona product-owner
432
- # → Exports: DoR checklists, prioritization, dependencies, business value, sprint planning
523
+ * **Reverse engineer** legacy code into documented specs
524
+ * **Find gaps** in tests, contracts, and documentation
525
+ * **Works with** any Python project (no special setup required)
433
526
 
434
- # Architect: Export technical design
435
- specfact project export --bundle legacy-api --persona architect
436
- # → Exports: Technical constraints, protocols, contracts, architectural decisions, NFRs
527
+ ### 🛡️ Contract Enforcement
437
528
 
438
- # Developer: Export implementation details
439
- specfact project export --bundle legacy-api --persona developer
440
- # Exports: Tasks, code mappings, test scenarios, Definition of Done
529
+ * **Prevent regressions** with runtime contract validation
530
+ * **CI/CD integration** - Block bad code from merging
531
+ * **Works offline** - No cloud required
441
532
 
442
- # Each role edits their Markdown, then imports back
443
- specfact project import --bundle legacy-api --persona product-owner --source backlog.md
444
- ```
533
+ ### 👥 Team Collaboration
445
534
 
446
- **Why this matters:**
535
+ * **Role-based workflows** - Product Owners, Architects, Developers work in parallel
536
+ * **Markdown-based** - No YAML editing required
537
+ * **Agile/scrum ready** - DoR checklists, story points, dependencies
447
538
 
448
- - **No YAML editing** → Everyone works in familiar Markdown
449
- - ✅ **Parallel workflows** → Product Owners, Architects, and Developers work simultaneously
450
- - ✅ **Git-native** → Conflicts resolved in Markdown (human-readable), not YAML
451
- - ✅ **Agile/scrum ready** → Built-in DoR validation, dependency tracking, sprint planning
452
- - ✅ **Real-world templates** → Designed by agile coaches to match actual team expectations
539
+ ### 🔌 Integrations
453
540
 
454
- 👉 **[Agile/Scrum Workflows Guide](docs/guides/agile-scrum-workflows.md)** - Complete guide to persona-based team collaboration
541
+ * **VS Code, Cursor** - Catch bugs before you commit
542
+ * **GitHub Actions** - Automated quality gates
543
+ * **AI IDEs** - Generate prompts for fixing gaps
544
+ * **DevOps tools** - Sync with GitHub Issues, Linear, Jira
455
545
 
456
546
  ---
457
547
 
458
- ## 🔌 CLI Integrations
548
+ ## Common Use Cases
459
549
 
460
- SpecFact CLI works with your existing tools—no new platform to learn. See real bugs that were caught and fixed through different integrations:
550
+ ### 1. Modernizing Legacy Code **Most Common**
461
551
 
462
- - ✅ **VS Code** - Catch async bugs before you commit
463
- - ✅ **Cursor** - Prevent regressions during AI-assisted refactoring
464
- - ✅ **GitHub Actions** - Block bad code from merging
465
- - ✅ **Pre-commit Hooks** - Validate code locally before pushing
466
- - ✅ **AI Assistants** - Find edge cases AI might miss
552
+ **Problem:** Existing codebase with no specs or outdated documentation
467
553
 
468
- 👉 **[Integration Showcases](docs/examples/integration-showcases/)** - Real examples of bugs fixed via CLI integrations
554
+ ```bash
555
+ # Step 1: Analyze your code
556
+ specfact import from-code my-project --repo .
469
557
 
470
- **Core USP**: Pure CLI-first approach—works offline, no account required, zero vendor lock-in. Regularly showcases successful integrations that fix bugs not detected by other tools.
558
+ # Step 2: Review what was found
559
+ specfact plan review my-project
471
560
 
472
- ### 🔗 Bridge Adapter Integrations (New in 0.21.0)
561
+ # Step 3: Enforce contracts to prevent regressions
562
+ specfact enforce sdd my-project
563
+ ```
473
564
 
474
- SpecFact now supports bridge adapters for seamless integration with external tools and specification frameworks:
565
+ 👉 **[Brownfield Modernization Guide](docs/guides/brownfield-engineer.md)** - Complete walkthrough
475
566
 
476
- - **OpenSpec Integration** - Sync OpenSpec change proposals and specifications
477
- - Export change proposals to DevOps tools (GitHub Issues, ADO, Linear, Jira)
478
- - Read OpenSpec specifications for validation and alignment
479
- - Bidirectional sync between OpenSpec and SpecFact project bundles
480
- - Content sanitization for public repositories
481
- - ✅ **GitHub Spec-Kit** - Bidirectional sync with Spec-Kit projects
482
- - ✅ **Generic Markdown** - Import/export from any markdown-based specification format
567
+ ### 2. Working with a Team
483
568
 
484
- ### Example: OpenSpec DevOps Backlog Tracking
569
+ **Problem:** Need team collaboration with role-based workflows
485
570
 
486
571
  ```bash
487
- # Export OpenSpec change proposals to GitHub Issues
488
- specfact sync bridge --adapter github --mode export-only \
489
- --repo-owner nold-ai --repo-name specfact-cli \
490
- --sanitize --target-repo nold-ai/specfact-cli
572
+ # Product Owner: Export backlog
573
+ specfact project export --bundle my-project --persona product-owner
491
574
 
492
- # Sync OpenSpec specifications (read-only)
493
- specfact sync bridge --adapter openspec --mode read-only --bundle legacy-api
575
+ # Architect: Export technical design
576
+ specfact project export --bundle my-project --persona architect
577
+
578
+ # Developer: Export implementation tasks
579
+ specfact project export --bundle my-project --persona developer
494
580
  ```
495
581
 
496
- 👉 **[Command Reference - Sync Bridge](docs/reference/commands.md#sync-bridge)** - Complete bridge adapter documentation
582
+ 👉 **[Agile/Scrum Workflows Guide](docs/guides/agile-scrum-workflows.md)** - Team collaboration guide
497
583
 
498
- ### 🤖 AI IDE Bridge (New in 0.17)
584
+ ### 3. Using AI IDEs (Cursor, Copilot, Claude)
499
585
 
500
- SpecFact now generates prompts you can use with any AI IDE for code generation:
586
+ **Problem:** Want AI to fix gaps, but need validation
501
587
 
502
588
  ```bash
503
- # 1. Analyze your code to find gaps
504
- specfact analyze gaps --bundle legacy-api
589
+ # Step 1: Find gaps
590
+ specfact analyze gaps --bundle my-project
505
591
 
506
- # 2. Generate AI prompt to fix a specific gap
507
- specfact generate fix-prompt GAP-001
592
+ # Step 2: Generate AI prompt
593
+ specfact generate fix-prompt GAP-001 --bundle my-project
508
594
 
509
- # 3. Copy prompt to your AI IDE (Cursor, Copilot, Claude)
510
- # 4. AI generates the fix
511
- # 5. Validate with SpecFact
512
- specfact enforce sdd --bundle legacy-api
595
+ # Step 3: Copy to AI IDE AI fixes → Validate
596
+ specfact enforce sdd --bundle my-project
513
597
  ```
514
598
 
515
- **Why this approach?**
516
-
517
- - ✅ **You control the AI** - Use your preferred AI IDE and model
518
- - ✅ **SpecFact validates** - Ensure AI-generated code meets contracts
519
- - ✅ **No lock-in** - Works with Cursor, Copilot, Claude Code, or any AI tool
520
- - ✅ **Quality gates** - Prevent AI hallucinations from reaching production
599
+ 👉 **[AI IDE Integration](docs/guides/ide-integration.md)** - Setup guide
521
600
 
522
601
  ---
523
602
 
524
603
  ## See It In Action
525
604
 
526
- We ran SpecFact CLI **on itself** to prove it works with legacy code:
605
+ We ran SpecFact CLI **on itself** to prove it works:
527
606
 
528
- - ⚡ Analyzed 32 legacy Python files → Discovered **32 features** and **81 stories** in **3 seconds**
529
- - 🚫 Set enforcement to "balanced" → **Blocked 2 HIGH violations** (as configured)
530
- - 📊 Compared manual vs auto-derived plans → Found **24 deviations** in **5 seconds**
607
+ * ⚡ Analyzed 32 legacy Python files → Found **32 features** and **81 stories** in **3 seconds**
608
+ * 🚫 Set enforcement → **Blocked 2 HIGH violations** automatically
609
+ * 📊 Compared plans → Found **24 deviations** in **5 seconds**
531
610
 
532
- **Total time**: < 10 seconds | **Total value**: Found real naming inconsistencies and undocumented features in legacy codebase
611
+ **Total time**: < 10 seconds | **Result**: Found real bugs and inconsistencies
533
612
 
534
- 👉 **[Read the complete example](docs/examples/dogfooding-specfact-cli.md)** with actual commands and outputs
613
+ 👉 **[Read the complete example](docs/examples/dogfooding-specfact-cli.md)** - See actual commands and outputs
535
614
 
536
615
  ---
537
616
 
538
617
  ## Documentation
539
618
 
540
- **New to SpecFact?** Start with the [Getting Started Guide](docs/getting-started/README.md)
619
+ ### 🎯 Find Your Path
541
620
 
542
- **Working with a team?** See [Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md) - Persona-based team collaboration with Product Owners, Architects, and Developers
621
+ **New to SpecFact?**
543
622
 
544
- **Want to see integrations?** Check out [Integration Showcases](docs/examples/integration-showcases/) - Real bugs fixed via VS Code, Cursor, GitHub Actions
623
+ 1. **[Getting Started](docs/getting-started/README.md)** - Install and first commands
624
+ 2. **[Tutorial: Using SpecFact with OpenSpec or Spec-Kit](docs/getting-started/tutorial-openspec-speckit.md)** ⭐ **NEW** - Complete beginner-friendly tutorial
625
+ 3. **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** ⭐ - Complete guide
626
+ 4. **[Use Cases](docs/guides/use-cases.md)** - Common scenarios
627
+ 5. **[Command Reference](docs/reference/commands.md)** - All commands
545
628
 
546
- **Tried Spec-Kit?** See [How SpecFact Compares to Spec-Kit](docs/guides/speckit-comparison.md) and [The Journey: From Spec-Kit to SpecFact](docs/guides/speckit-journey.md)
629
+ **Working with a Team?**
547
630
 
548
- **Need help?** Browse the [Documentation Hub](docs/README.md)
631
+ * **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Persona-based collaboration
632
+ * **[Project Commands](docs/reference/commands.md#project---project-bundle-management)** - Export/import workflows
549
633
 
550
- ---
634
+ **Want Integrations?**
635
+
636
+ * **[IDE Integration](docs/guides/ide-integration.md)** - VS Code, Cursor setup
637
+ * **[Integration Showcases](docs/examples/integration-showcases/)** - Real bugs fixed
638
+ * **[GitHub Actions](docs/guides/use-cases.md#use-case-4-cicd-integration)** - CI/CD setup
639
+
640
+ **Advanced Topics**
551
641
 
552
- ## Optional Telemetry (Opt-In)
642
+ * **[Architecture](docs/reference/architecture.md)** - How it works
643
+ * **[Schema Versioning](docs/reference/schema-versioning.md)** - Bundle schemas
644
+ * **[Testing Guide](docs/technical/testing.md)** - Development setup
553
645
 
554
- - Telemetry is **off by default** and only activates if you set `SPECFACT_TELEMETRY_OPT_IN=true` or create `~/.specfact/telemetry.opt-in`.
555
- - When enabled, SpecFact records anonymized metrics (e.g., number of features detected, contract violations blocked) to help us publish aggregate stats such as “contracts prevented 70% of the bugs surfaced during modernization.”
556
- - Data is stored locally in `~/.specfact/telemetry.log`, and you can route it to your own OpenTelemetry collector via `SPECFACT_TELEMETRY_ENDPOINT`.
557
- - Learn more in [`docs/reference/telemetry.md`](docs/reference/telemetry.md).
646
+ 👉 **[Full Documentation Index](docs/README.md)** - Browse all documentation
558
647
 
559
648
  ---
560
649
 
561
- ## Project Documentation
650
+ ## Version 0.22.0
562
651
 
563
- ### 📚 Online Documentation
652
+ **Latest release** introduces bridge adapter architecture refactoring and OpenSpec integration.
564
653
 
565
- **GitHub Pages**: Full documentation is available at `https://nold-ai.github.io/specfact-cli/`
654
+ **What's New:**
566
655
 
567
- The documentation includes:
656
+ * **Bridge Adapter Architecture** - Plugin-based adapter registry pattern for extensible tool integration
657
+ * ✅ **OpenSpec Adapter** - Read-only sync from OpenSpec to SpecFact (v0.22.0+)
658
+ * ✅ **SpecKitAdapter** - Refactored Spec-Kit integration using adapter pattern
659
+ * ✅ **Command Updates** - Constitution commands moved to `specfact sdd constitution`
660
+ * ✅ **Breaking Changes** - Removed `specfact bridge` command group, `implement`, and `generate tasks` commands
568
661
 
569
- - Getting Started guides
570
- - Complete command reference
571
- - IDE integration setup
572
- - Use cases and examples
573
- - Architecture overview
574
- - Testing procedures
662
+ 👉 **[Changelog](CHANGELOG.md)** - Complete release history
575
663
 
576
- **Note**: The GitHub Pages workflow is configured and will automatically deploy when changes are pushed to the `main` branch. Enable GitHub Pages in your repository settings to activate the site.
664
+ ---
665
+
666
+ ## Why SpecFact?
577
667
 
578
- ### 📖 Local Documentation
668
+ ### Works with Your Existing Tools
579
669
 
580
- All documentation is in the [`docs/`](docs/) directory:
670
+ * **No new platform** - Pure CLI, works offline
671
+ * ✅ **No account required** - Fully local, zero vendor lock-in
672
+ * ✅ **Integrates everywhere** - VS Code, Cursor, GitHub Actions, pre-commit hooks
581
673
 
582
- - **[Documentation Index](docs/README.md)** - Complete documentation overview
583
- - **[Getting Started](docs/getting-started/installation.md)** - Installation and setup
584
- - **[Command Reference](docs/reference/commands.md)** - All available commands
585
- - **[IDE Integration](docs/guides/ide-integration.md)** - Set up slash commands
586
- - **[Use Cases](docs/guides/use-cases.md)** - Real-world scenarios
674
+ ### Built for Real Teams
675
+
676
+ * **Role-based workflows** - Product Owners, Architects, Developers work in parallel
677
+ * **Markdown-based** - No YAML editing, human-readable conflicts
678
+ * **Agile/scrum ready** - DoR checklists, story points, sprint planning
679
+
680
+ ### Proven Results
681
+
682
+ * ✅ **Catches real bugs** - See [Integration Showcases](docs/examples/integration-showcases/)
683
+ * ✅ **Prevents regressions** - Runtime contract enforcement
684
+ * ✅ **Works on legacy code** - Analyzed itself successfully
587
685
 
588
686
  ---
589
687
 
590
688
  ## Contributing
591
689
 
592
- We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
690
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
593
691
 
594
692
  ```bash
595
693
  git clone https://github.com/nold-ai/specfact-cli.git
@@ -604,25 +702,20 @@ hatch run contract-test-full
604
702
 
605
703
  **Apache License 2.0** - Open source and enterprise-friendly
606
704
 
607
- SpecFact CLI is licensed under the Apache License 2.0, which means:
608
-
609
- -**Free to use** for any purpose (commercial or non-commercial)
610
- - ✅ **Modify and distribute** as needed
611
- - ✅ **Enterprise-friendly** with explicit patent grant
612
- - ✅ **Build commercial products** on top of SpecFact CLI
613
-
614
- **Full license**: [LICENSE.md](LICENSE.md)
705
+ * Free to use for any purpose (commercial or non-commercial)
706
+ * ✅ Modify and distribute as needed
707
+ *Enterprise-friendly with explicit patent grant
615
708
 
616
- **Note**: The Apache 2.0 license is ideal for enterprise brownfield modernization projects, as it provides legal clarity and patent protection that many enterprises require.
709
+ [Full license](LICENSE.md)
617
710
 
618
711
  ---
619
712
 
620
713
  ## Support
621
714
 
622
- - 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
623
- - 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
624
- - 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
625
- - 🌐 **Learn more:** [noldai.com](https://noldai.com)
715
+ * 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
716
+ * 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
717
+ * 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
718
+ * 🌐 **Learn more:** [noldai.com](https://noldai.com)
626
719
 
627
720
  ---
628
721
 
@@ -630,7 +723,7 @@ SpecFact CLI is licensed under the Apache License 2.0, which means:
630
723
 
631
724
  **Built with ❤️ by [NOLD AI](https://noldai.com)**
632
725
 
633
- Copyright © 2025 Nold AI (Owner: Dominikus Nold)
726
+ Copyright © 2025-2026 Nold AI (Owner: Dominikus Nold)
634
727
 
635
728
  **Trademarks**: NOLD AI (NOLDAI) is a registered trademark (wordmark) at the European Union Intellectual Property Office (EUIPO). All other trademarks mentioned in this project are the property of their respective owners. See [TRADEMARKS.md](TRADEMARKS.md) for more information.
636
729