specfact-cli 0.22.1__tar.gz → 0.23.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.
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/PKG-INFO +157 -282
- specfact_cli-0.23.0/README.md +330 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/pyproject.toml +1 -1
- specfact_cli-0.23.0/resources/templates/sidecar/STRUCTURE.md +70 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/common}/README.md +21 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/common}/adapters.py +295 -1
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/common}/generate_harness.py +1 -1
- specfact_cli-0.23.0/resources/templates/sidecar/common/populate_contracts.py +1013 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/common}/run_sidecar.sh +101 -34
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/common}/sidecar-init.sh +2 -1
- specfact_cli-0.23.0/resources/templates/sidecar/frameworks/django/__init__.py +0 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/frameworks/django}/django_url_extractor.py +50 -16
- specfact_cli-0.23.0/resources/templates/sidecar/frameworks/drf/__init__.py +0 -0
- specfact_cli-0.23.0/resources/templates/sidecar/frameworks/drf/drf_serializer_extractor.py +372 -0
- specfact_cli-0.23.0/resources/templates/sidecar/frameworks/fastapi/__init__.py +0 -0
- specfact_cli-0.23.0/resources/templates/sidecar/frameworks/fastapi/fastapi_route_extractor.py +643 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/__init__.py +1 -1
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/__init__.py +1 -1
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/code_analyzer.py +23 -3
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/graph_analyzer.py +58 -6
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/relationship_mapper.py +112 -41
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/import_cmd.py +735 -229
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/project.py +81 -13
- specfact_cli-0.23.0/src/specfact_cli/utils/source_scanner.py +594 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/yaml_utils.py +32 -3
- specfact_cli-0.22.1/README.md +0 -455
- specfact_cli-0.22.1/resources/templates/sidecar/bindings.yaml +0 -26
- specfact_cli-0.22.1/resources/templates/sidecar/populate_contracts.py +0 -543
- specfact_cli-0.22.1/src/specfact_cli/utils/source_scanner.py +0 -315
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/.gitignore +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/LICENSE.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/mappings/node-async.yaml +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/mappings/python-async.yaml +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/mappings/speckit-default.yaml +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/shared/cli-enforcement.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.01-import.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.02-plan.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.03-review.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.04-sdd.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.05-enforce.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.06-sync.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.07-contracts.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.compare.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.sync-backlog.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/prompts/specfact.validate.md +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/schemas/deviation.schema.json +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/schemas/plan.schema.json +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/schemas/protocol.schema.json +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/github-action.yml.j2 +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/persona/architect.md.j2 +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/persona/developer.md.j2 +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/persona/product-owner.md.j2 +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/plan.bundle.yaml.j2 +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/pr-template.md.j2 +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/protocol.yaml.j2 +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/sidecar/__init__.py +0 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/common}/bindings.yaml.example +0 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/common}/crosshair_plugin.py +0 -0
- /specfact_cli-0.22.1/resources/templates/sidecar/harness_contracts.py → /specfact_cli-0.23.0/resources/templates/sidecar/common/harness_contracts.py.example +0 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/frameworks/django}/crosshair_django_wrapper.py +0 -0
- {specfact_cli-0.22.1/resources/templates/sidecar → specfact_cli-0.23.0/resources/templates/sidecar/frameworks/django}/django_form_extractor.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/resources/templates/telemetry.yaml.example +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/adapters/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/adapters/base.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/adapters/github.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/adapters/openspec.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/adapters/openspec_parser.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/adapters/registry.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/adapters/speckit.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/agents/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/agents/analyze_agent.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/agents/base.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/agents/plan_agent.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/agents/registry.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/agents/sync_agent.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/cli.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/analyze.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/contract_cmd.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/drift.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/enforce.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/generate.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/init.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/migrate.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/plan.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/project_cmd.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/repro.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/sdd.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/spec.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/commands/sync.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/common/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/common/logger_setup.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/common/logging_utils.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/common/text_utils.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/common/utils.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/comparators/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/comparators/plan_comparator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/contract_generator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/openapi_extractor.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/persona_exporter.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/plan_generator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/protocol_generator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/report_generator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/task_generator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/test_to_openapi.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/generators/workflow_generator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/importers/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/importers/speckit_converter.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/importers/speckit_scanner.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/integrations/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/integrations/specmatic.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/merge/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/merge/resolver.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/migrations/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/migrations/plan_migrator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/bridge.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/capabilities.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/change.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/contract.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/deviation.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/enforcement.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/persona_template.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/plan.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/protocol.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/quality.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/sdd.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/source_tracking.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/models/task.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/modes/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/modes/detector.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/modes/router.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/parsers/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/parsers/persona_importer.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/resources/semgrep/async.yml +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/runtime.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/bridge_probe.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/bridge_sync.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/bridge_watch.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/change_detector.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/code_to_spec.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/drift_detector.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/repository_sync.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/spec_to_code.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/spec_to_tests.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/watcher.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/telemetry.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/templates/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/templates/bridge_templates.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/templates/specification_templates.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/bundle_loader.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/code_change_detector.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/console.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/content_sanitizer.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/context_detection.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/enrichment_context.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/enrichment_parser.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/env_manager.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/feature_keys.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/git.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/github_annotations.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/ide_setup.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/incremental_check.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/optional_deps.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/performance.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/progress.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/prompts.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/sdd_discovery.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/structure.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/structured_io.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/suggestions.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/utils/terminal.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/validators/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/validators/agile_validation.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/validators/cli_first_validator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/validators/contract_validator.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/validators/fsm.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/validators/repro_checker.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/validators/schema.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.0}/src/specfact_cli/versioning/__init__.py +0 -0
- {specfact_cli-0.22.1 → specfact_cli-0.23.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.
|
|
3
|
+
Version: 0.23.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
|
|
@@ -287,10 +287,17 @@ Description-Content-Type: text/markdown
|
|
|
287
287
|
|
|
288
288
|
<div align="center">
|
|
289
289
|
|
|
290
|
-
**[🌐
|
|
290
|
+
**[🌐 specfact.com](https://specfact.com)** • **[📚 specfact.io](https://specfact.io)** • **[👨💻 specfact.dev](https://specfact.dev)** • **[📖 Documentation](https://docs.specfact.io/)** • **[💬 Support](mailto:hello@noldai.com)**
|
|
291
291
|
|
|
292
292
|
</div>
|
|
293
293
|
|
|
294
|
+
## 🌐 SpecFact Domains
|
|
295
|
+
|
|
296
|
+
- **[specfact.com](https://specfact.com)** - Commercial landing page (marketing, pricing, enterprise)
|
|
297
|
+
- **[specfact.io](https://specfact.io)** - Product ecosystem hub (CLI reference, integrations, changelog, product docs)
|
|
298
|
+
- **[specfact.dev](https://specfact.dev)** - Developer community (tutorials, guides, blog, community content) ⭐ **For developers**
|
|
299
|
+
- **[docs.specfact.io](https://docs.specfact.io/)** - Complete online documentation
|
|
300
|
+
|
|
294
301
|
---
|
|
295
302
|
|
|
296
303
|
## What is SpecFact?
|
|
@@ -305,214 +312,108 @@ AI coding assistants are powerful but unpredictable when requirements live in ch
|
|
|
305
312
|
|
|
306
313
|
**Key outcomes:**
|
|
307
314
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
## How SpecFact Compares (at a glance)
|
|
315
|
+
- **Understand legacy code** in minutes, not weeks (automatic spec extraction)
|
|
316
|
+
- **Find gaps** in tests, contracts, and documentation automatically
|
|
317
|
+
- **Prevent regressions** with runtime contract enforcement during modernization
|
|
318
|
+
- **Works with the tools you already use**: VS Code, Cursor, GitHub Actions, pre-commit hooks
|
|
319
|
+
- **No API keys required** - Works completely offline
|
|
315
320
|
|
|
316
|
-
|
|
321
|
+
---
|
|
317
322
|
|
|
318
|
-
|
|
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 |
|
|
323
|
+
## 🚀 Quick Start
|
|
323
324
|
|
|
324
|
-
|
|
325
|
+
### Step 1: Install SpecFact CLI
|
|
325
326
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
* ✅ **Team collaboration** - Role-based workflows for agile/scrum teams
|
|
330
|
-
* ✅ **Works offline** - No API keys, no cloud, zero vendor lock-in
|
|
327
|
+
```bash
|
|
328
|
+
# Zero-install (recommended - no setup needed)
|
|
329
|
+
uvx specfact-cli@latest
|
|
331
330
|
|
|
332
|
-
|
|
331
|
+
# Or install globally
|
|
332
|
+
pip install -U specfact-cli
|
|
333
|
+
```
|
|
333
334
|
|
|
334
|
-
|
|
335
|
+
### Step 2: Initialize IDE Integration
|
|
335
336
|
|
|
336
|
-
|
|
337
|
+
**Set up slash commands in your IDE (Cursor, VS Code, Copilot, etc.):**
|
|
337
338
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
* ❌ **No safety net** to catch bugs before production
|
|
339
|
+
```bash
|
|
340
|
+
# Auto-detect IDE and initialize
|
|
341
|
+
specfact init
|
|
342
342
|
|
|
343
|
-
|
|
343
|
+
# Or specify IDE explicitly
|
|
344
|
+
specfact init --ide cursor
|
|
345
|
+
specfact init --ide vscode
|
|
344
346
|
|
|
345
|
-
|
|
347
|
+
# Install required packages for contract enhancement
|
|
348
|
+
specfact init --ide cursor --install-deps
|
|
349
|
+
```
|
|
346
350
|
|
|
347
|
-
|
|
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
|
|
351
|
+
**What this does:**
|
|
351
352
|
|
|
352
|
-
|
|
353
|
+
- Copies prompt templates to your IDE
|
|
354
|
+
- Makes slash commands available in your IDE's AI chat
|
|
355
|
+
- Optionally installs required packages (`beartype`, `icontract`, `crosshair-tool`, `pytest`)
|
|
353
356
|
|
|
354
|
-
###
|
|
357
|
+
### Step 3: Run Your First Analysis
|
|
355
358
|
|
|
356
|
-
|
|
359
|
+
**In your IDE's AI chat, use the slash command:**
|
|
357
360
|
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
|
|
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
|
|
361
|
+
```bash
|
|
362
|
+
# In IDE chat (Cursor, VS Code, Copilot, etc.)
|
|
363
|
+
/specfact.01-import my-project --repo .
|
|
386
364
|
```
|
|
387
365
|
|
|
388
|
-
|
|
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
|
-
```
|
|
366
|
+
**Or use the CLI directly:**
|
|
443
367
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
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
|
|
368
|
+
```bash
|
|
369
|
+
# Analyze legacy codebase (most common use case)
|
|
370
|
+
specfact import from-code my-project --repo .
|
|
481
371
|
```
|
|
482
372
|
|
|
373
|
+
**⏱️ Timing:** Analysis typically takes **10-15 minutes** for typical repositories (e.g., `specfact-cli` itself with several hundred features & contracts). Smaller codebases may complete in 2-5 minutes. Large codebases (3000+ features) may take 15-30 minutes, but progress reporting shows real-time status. The analysis performs AST parsing, Semgrep pattern detection, and Specmatic integration.
|
|
374
|
+
|
|
375
|
+
**💾 Checkpointing:** Features are saved immediately after initial analysis, so you can safely interrupt and resume the import process without losing progress.
|
|
376
|
+
|
|
377
|
+
**⚡ Performance:** Optimized for large codebases with pre-computed AST parsing and file hashes (5-15x faster than previous versions).
|
|
378
|
+
|
|
379
|
+
**That's it!** SpecFact will extract features and stories from your code, find missing tests and contracts, and generate a plan bundle you can enforce.
|
|
380
|
+
|
|
381
|
+
👉 **[Getting Started Guide](docs/getting-started/README.md)** - Complete walkthrough with examples
|
|
382
|
+
👉 **[AI IDE Workflow Guide](docs/guides/ai-ide-workflow.md)** ⭐ - Complete AI-assisted development workflow
|
|
383
|
+
|
|
483
384
|
---
|
|
484
385
|
|
|
485
|
-
##
|
|
386
|
+
## 🎯 Find Your Path
|
|
486
387
|
|
|
487
|
-
###
|
|
388
|
+
### New to SpecFact?
|
|
488
389
|
|
|
489
|
-
|
|
490
|
-
# Zero-install (recommended - no setup needed)
|
|
491
|
-
uvx specfact-cli@latest
|
|
390
|
+
**Primary Goal**: Analyze legacy Python → find gaps → enforce contracts
|
|
492
391
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
392
|
+
1. **[Getting Started](docs/getting-started/README.md)** - Install and run your first command
|
|
393
|
+
2. **[Command Chains Reference](docs/guides/command-chains.md)** ⭐ **NEW** - Complete workflows from start to finish
|
|
394
|
+
3. **[Common Tasks Quick Reference](docs/guides/common-tasks.md)** ⭐ **NEW** - Quick answers to "How do I X?"
|
|
395
|
+
4. **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** ⭐ - Brownfield-first guide
|
|
396
|
+
5. **[The Brownfield Journey](docs/guides/brownfield-journey.md)** ⭐ - Complete modernization workflow
|
|
496
397
|
|
|
497
|
-
|
|
398
|
+
**Time**: < 10 minutes | **Result**: Running your first brownfield analysis
|
|
498
399
|
|
|
499
|
-
|
|
400
|
+
### Using AI IDEs? (Cursor, Copilot, Claude)
|
|
500
401
|
|
|
501
|
-
|
|
502
|
-
# Analyze legacy codebase (most common use case)
|
|
503
|
-
specfact import from-code my-project --repo .
|
|
402
|
+
**Primary Goal**: Let SpecFact find gaps, use your AI IDE to fix them
|
|
504
403
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
404
|
+
👉 **[AI IDE Workflow Guide](docs/guides/ai-ide-workflow.md)** ⭐ **NEW** - Complete AI-assisted development workflow
|
|
405
|
+
|
|
406
|
+
### Working with a Team?
|
|
407
|
+
|
|
408
|
+
**Primary Goal**: Enable team collaboration with role-based workflows
|
|
508
409
|
|
|
509
|
-
**
|
|
410
|
+
👉 **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Persona-based team collaboration
|
|
510
411
|
|
|
511
|
-
|
|
512
|
-
* Find missing tests and contracts
|
|
513
|
-
* Generate a plan bundle you can enforce
|
|
412
|
+
### Need Integrations?
|
|
514
413
|
|
|
515
|
-
|
|
414
|
+
**Primary Goal**: Integrate with Spec-Kit, OpenSpec, Specmatic, or DevOps tools
|
|
415
|
+
|
|
416
|
+
👉 **[Integrations Overview](docs/guides/integrations-overview.md)** ⭐ **NEW** - Complete guide to all integrations
|
|
516
417
|
|
|
517
418
|
---
|
|
518
419
|
|
|
@@ -520,28 +421,37 @@ specfact plan init my-project --interactive
|
|
|
520
421
|
|
|
521
422
|
### 🔍 Code Analysis
|
|
522
423
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
424
|
+
- **Reverse engineer** legacy code into documented specs
|
|
425
|
+
- **Find gaps** in tests, contracts, and documentation
|
|
426
|
+
- **Works with** any Python project (no special setup required)
|
|
427
|
+
|
|
428
|
+
👉 **[Command Chains](docs/guides/command-chains.md)** - See complete workflows
|
|
526
429
|
|
|
527
430
|
### 🛡️ Contract Enforcement
|
|
528
431
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
432
|
+
- **Prevent regressions** with runtime contract validation
|
|
433
|
+
- **CI/CD integration** - Block bad code from merging
|
|
434
|
+
- **Works offline** - No cloud required
|
|
435
|
+
|
|
436
|
+
👉 **[Command Reference](docs/reference/commands.md)** - All enforcement commands
|
|
532
437
|
|
|
533
438
|
### 👥 Team Collaboration
|
|
534
439
|
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
440
|
+
- **Role-based workflows** - Product Owners, Architects, Developers work in parallel
|
|
441
|
+
- **Markdown-based** - No YAML editing required
|
|
442
|
+
- **Agile/scrum ready** - DoR checklists, story points, dependencies
|
|
443
|
+
|
|
444
|
+
👉 **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** - Team collaboration guide
|
|
538
445
|
|
|
539
446
|
### 🔌 Integrations
|
|
540
447
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
448
|
+
- **VS Code, Cursor** - Catch bugs before you commit
|
|
449
|
+
- **GitHub Actions** - Automated quality gates
|
|
450
|
+
- **AI IDEs** - Generate prompts for fixing gaps
|
|
451
|
+
- **DevOps tools** - Sync with GitHub Issues, Linear, Jira
|
|
452
|
+
- **Spec-Kit, OpenSpec, Specmatic** - Works with your existing tools
|
|
453
|
+
|
|
454
|
+
👉 **[Integrations Overview](docs/guides/integrations-overview.md)** - All integration options
|
|
545
455
|
|
|
546
456
|
---
|
|
547
457
|
|
|
@@ -551,137 +461,102 @@ specfact plan init my-project --interactive
|
|
|
551
461
|
|
|
552
462
|
**Problem:** Existing codebase with no specs or outdated documentation
|
|
553
463
|
|
|
554
|
-
```bash
|
|
555
|
-
# Step 1: Analyze your code
|
|
556
|
-
specfact import from-code my-project --repo .
|
|
557
|
-
|
|
558
|
-
# Step 2: Review what was found
|
|
559
|
-
specfact plan review my-project
|
|
560
|
-
|
|
561
|
-
# Step 3: Enforce contracts to prevent regressions
|
|
562
|
-
specfact enforce sdd my-project
|
|
563
|
-
```
|
|
564
|
-
|
|
565
464
|
👉 **[Brownfield Modernization Guide](docs/guides/brownfield-engineer.md)** - Complete walkthrough
|
|
566
465
|
|
|
567
466
|
### 2. Working with a Team
|
|
568
467
|
|
|
569
468
|
**Problem:** Need team collaboration with role-based workflows
|
|
570
469
|
|
|
571
|
-
```bash
|
|
572
|
-
# Product Owner: Export backlog
|
|
573
|
-
specfact project export --bundle my-project --persona product-owner
|
|
574
|
-
|
|
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
|
|
580
|
-
```
|
|
581
|
-
|
|
582
470
|
👉 **[Agile/Scrum Workflows Guide](docs/guides/agile-scrum-workflows.md)** - Team collaboration guide
|
|
583
471
|
|
|
584
472
|
### 3. Using AI IDEs (Cursor, Copilot, Claude)
|
|
585
473
|
|
|
586
474
|
**Problem:** Want AI to fix gaps, but need validation
|
|
587
475
|
|
|
588
|
-
|
|
589
|
-
# Step 1: Find gaps
|
|
590
|
-
specfact analyze gaps --bundle my-project
|
|
591
|
-
|
|
592
|
-
# Step 2: Generate AI prompt
|
|
593
|
-
specfact generate fix-prompt GAP-001 --bundle my-project
|
|
594
|
-
|
|
595
|
-
# Step 3: Copy to AI IDE → AI fixes → Validate
|
|
596
|
-
specfact enforce sdd --bundle my-project
|
|
597
|
-
```
|
|
598
|
-
|
|
599
|
-
👉 **[AI IDE Integration](docs/guides/ide-integration.md)** - Setup guide
|
|
600
|
-
|
|
601
|
-
---
|
|
602
|
-
|
|
603
|
-
## See It In Action
|
|
604
|
-
|
|
605
|
-
We ran SpecFact CLI **on itself** to prove it works:
|
|
476
|
+
👉 **[AI IDE Workflow Guide](docs/guides/ai-ide-workflow.md)** - Complete AI-assisted workflow
|
|
606
477
|
|
|
607
|
-
|
|
608
|
-
* 🚫 Set enforcement → **Blocked 2 HIGH violations** automatically
|
|
609
|
-
* 📊 Compared plans → Found **24 deviations** in **5 seconds**
|
|
478
|
+
### 4. Integrating with Other Tools
|
|
610
479
|
|
|
611
|
-
**
|
|
480
|
+
**Problem:** Want to use SpecFact with Spec-Kit, OpenSpec, or Specmatic
|
|
612
481
|
|
|
613
|
-
👉 **[
|
|
482
|
+
👉 **[Integrations Overview](docs/guides/integrations-overview.md)** - Choose the right integration
|
|
614
483
|
|
|
615
484
|
---
|
|
616
485
|
|
|
617
486
|
## Documentation
|
|
618
487
|
|
|
619
|
-
###
|
|
488
|
+
### Quick References
|
|
620
489
|
|
|
621
|
-
**
|
|
490
|
+
- **[Command Chains](docs/guides/command-chains.md)** ⭐ **NEW** - Complete workflows from start to finish
|
|
491
|
+
- **[Common Tasks](docs/guides/common-tasks.md)** ⭐ **NEW** - Quick answers to "How do I X?"
|
|
492
|
+
- **[Command Reference](docs/reference/commands.md)** - All commands documented
|
|
622
493
|
|
|
623
|
-
|
|
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
|
|
494
|
+
### Getting Started
|
|
628
495
|
|
|
629
|
-
**
|
|
496
|
+
- **[Getting Started Guide](docs/getting-started/README.md)** - Install and first commands
|
|
497
|
+
- **[Modernizing Legacy Code?](docs/guides/brownfield-engineer.md)** ⭐ - Brownfield-first guide
|
|
498
|
+
- **[The Brownfield Journey](docs/guides/brownfield-journey.md)** ⭐ - Complete modernization workflow
|
|
630
499
|
|
|
631
|
-
|
|
632
|
-
* **[Project Commands](docs/reference/commands.md#project---project-bundle-management)** - Export/import workflows
|
|
500
|
+
### Guides
|
|
633
501
|
|
|
634
|
-
**
|
|
502
|
+
- **[AI IDE Workflow](docs/guides/ai-ide-workflow.md)** ⭐ **NEW** - AI-assisted development
|
|
503
|
+
- **[Agile/Scrum Workflows](docs/guides/agile-scrum-workflows.md)** ⭐ - Team collaboration
|
|
504
|
+
- **[Integrations Overview](docs/guides/integrations-overview.md)** ⭐ **NEW** - All integrations
|
|
505
|
+
- **[Use Cases](docs/guides/use-cases.md)** - Common scenarios
|
|
635
506
|
|
|
636
|
-
|
|
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
|
|
507
|
+
### Integration Guides
|
|
639
508
|
|
|
640
|
-
**
|
|
509
|
+
- **[Spec-Kit Journey](docs/guides/speckit-journey.md)** - From Spec-Kit to SpecFact
|
|
510
|
+
- **[OpenSpec Journey](docs/guides/openspec-journey.md)** - OpenSpec integration
|
|
511
|
+
- **[Specmatic Integration](docs/guides/specmatic-integration.md)** - API contract testing
|
|
512
|
+
- **[DevOps Adapter Integration](docs/guides/devops-adapter-integration.md)** - GitHub Issues, Linear, Jira
|
|
641
513
|
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
* **[Testing Guide](docs/technical/testing.md)** - Development setup
|
|
645
|
-
|
|
646
|
-
👉 **[Full Documentation Index](docs/README.md)** - Browse all documentation
|
|
514
|
+
👉 **[Full Documentation Index](docs/README.md)** - Browse all documentation
|
|
515
|
+
👉 **[Online Documentation](https://docs.specfact.io/)** - Complete documentation site
|
|
647
516
|
|
|
648
517
|
---
|
|
649
518
|
|
|
650
|
-
##
|
|
519
|
+
## How SpecFact Compares
|
|
520
|
+
|
|
521
|
+
**New to spec-driven development?** Here's how SpecFact compares to other tools:
|
|
651
522
|
|
|
652
|
-
|
|
523
|
+
| Tool | Best For | SpecFact's Focus |
|
|
524
|
+
|------|----------|------------------|
|
|
525
|
+
| **GitHub Spec-Kit** | Greenfield specs, multi-language, interactive authoring | **Brownfield analysis**, runtime enforcement, formal verification |
|
|
526
|
+
| **OpenSpec** | Specification anchoring, change tracking, cross-repo workflows | **Code analysis**, contract enforcement, DevOps integration |
|
|
527
|
+
| **Traditional Testing** | Manual test writing, code review | **Automated gap detection**, contract-first validation, CI/CD gates |
|
|
653
528
|
|
|
654
|
-
**
|
|
529
|
+
**Key Differentiators:**
|
|
655
530
|
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
531
|
+
- ✅ **Brownfield-first** - Reverse engineers existing code (primary use case)
|
|
532
|
+
- ✅ **Runtime enforcement** - Contracts prevent regressions automatically
|
|
533
|
+
- ✅ **Formal verification** - CrossHair symbolic execution (not just LLM suggestions)
|
|
534
|
+
- ✅ **Team collaboration** - Role-based workflows for agile/scrum teams
|
|
535
|
+
- ✅ **Works offline** - No API keys, no cloud, zero vendor lock-in
|
|
661
536
|
|
|
662
|
-
👉 **[
|
|
537
|
+
👉 **[See detailed comparison guide](docs/guides/speckit-comparison.md)** - Understand when to use SpecFact, Spec-Kit, OpenSpec, or all together
|
|
663
538
|
|
|
664
539
|
---
|
|
665
540
|
|
|
666
|
-
##
|
|
541
|
+
## Benefits
|
|
667
542
|
|
|
668
543
|
### Works with Your Existing Tools
|
|
669
544
|
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
545
|
+
- ✅ **No new platform** - Pure CLI, works offline
|
|
546
|
+
- ✅ **No account required** - Fully local, zero vendor lock-in
|
|
547
|
+
- ✅ **Integrates everywhere** - VS Code, Cursor, GitHub Actions, pre-commit hooks
|
|
673
548
|
|
|
674
549
|
### Built for Real Teams
|
|
675
550
|
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
551
|
+
- ✅ **Role-based workflows** - Product Owners, Architects, Developers work in parallel
|
|
552
|
+
- ✅ **Markdown-based** - No YAML editing, human-readable conflicts
|
|
553
|
+
- ✅ **Agile/scrum ready** - DoR checklists, story points, sprint planning
|
|
679
554
|
|
|
680
555
|
### Proven Results
|
|
681
556
|
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
557
|
+
- ✅ **Catches real bugs** - See [Integration Showcases](docs/examples/integration-showcases/)
|
|
558
|
+
- ✅ **Prevents regressions** - Runtime contract enforcement
|
|
559
|
+
- ✅ **Works on legacy code** - Analyzed itself successfully
|
|
685
560
|
|
|
686
561
|
---
|
|
687
562
|
|
|
@@ -702,9 +577,9 @@ hatch run contract-test-full
|
|
|
702
577
|
|
|
703
578
|
**Apache License 2.0** - Open source and enterprise-friendly
|
|
704
579
|
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
580
|
+
- ✅ Free to use for any purpose (commercial or non-commercial)
|
|
581
|
+
- ✅ Modify and distribute as needed
|
|
582
|
+
- ✅ Enterprise-friendly with explicit patent grant
|
|
708
583
|
|
|
709
584
|
[Full license](LICENSE.md)
|
|
710
585
|
|
|
@@ -712,10 +587,10 @@ hatch run contract-test-full
|
|
|
712
587
|
|
|
713
588
|
## Support
|
|
714
589
|
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
590
|
+
- 💬 **Questions?** [GitHub Discussions](https://github.com/nold-ai/specfact-cli/discussions)
|
|
591
|
+
- 🐛 **Found a bug?** [GitHub Issues](https://github.com/nold-ai/specfact-cli/issues)
|
|
592
|
+
- 📧 **Need help?** [hello@noldai.com](mailto:hello@noldai.com)
|
|
593
|
+
- 🌐 **Learn more:** [specfact.com](https://specfact.com) • [specfact.io](https://specfact.io) • [specfact.dev](https://specfact.dev)
|
|
719
594
|
|
|
720
595
|
---
|
|
721
596
|
|