spec-driver 0.1.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 (133) hide show
  1. spec_driver-0.1.0/.gitignore +222 -0
  2. spec_driver-0.1.0/LICENSE +21 -0
  3. spec_driver-0.1.0/PKG-INFO +140 -0
  4. spec_driver-0.1.0/README.md +114 -0
  5. spec_driver-0.1.0/example.envrc +10 -0
  6. spec_driver-0.1.0/pyproject.toml +120 -0
  7. spec_driver-0.1.0/supekku/AGENTS.md +28 -0
  8. spec_driver-0.1.0/supekku/__init__.py +7 -0
  9. spec_driver-0.1.0/supekku/agents/complete-initial-spec.md +89 -0
  10. spec_driver-0.1.0/supekku/agents/supekku.delta_plan.md +48 -0
  11. spec_driver-0.1.0/supekku/agents/supekku.revision_block.md +72 -0
  12. spec_driver-0.1.0/supekku/agents/supekku.spec_backfill.md +79 -0
  13. spec_driver-0.1.0/supekku/agents/supekku.template.md +5 -0
  14. spec_driver-0.1.0/supekku/docs/deterministic/calculator-all.md +13 -0
  15. spec_driver-0.1.0/supekku/docs/deterministic/calculator-public.md +11 -0
  16. spec_driver-0.1.0/supekku/docs/deterministic/calculator_test-tests.md +17 -0
  17. spec_driver-0.1.0/supekku/docs/deterministic/mymodule-public.md +12 -0
  18. spec_driver-0.1.0/supekku/docs/deterministic/utils-all.md +9 -0
  19. spec_driver-0.1.0/supekku/docs/deterministic/utils-public.md +9 -0
  20. spec_driver-0.1.0/supekku/just/backlog.just +44 -0
  21. spec_driver-0.1.0/supekku/just/py.just +89 -0
  22. spec_driver-0.1.0/supekku/just/registry.just +29 -0
  23. spec_driver-0.1.0/supekku/just/reqs.just +20 -0
  24. spec_driver-0.1.0/supekku/just/spec.just +39 -0
  25. spec_driver-0.1.0/supekku/just/validate.just +8 -0
  26. spec_driver-0.1.0/supekku/justfile +10 -0
  27. spec_driver-0.1.0/supekku/scripts/__init__.py +1 -0
  28. spec_driver-0.1.0/supekku/scripts/backlog/__init__.py +0 -0
  29. spec_driver-0.1.0/supekku/scripts/backlog/append.py +23 -0
  30. spec_driver-0.1.0/supekku/scripts/backlog/create_entry.py +27 -0
  31. spec_driver-0.1.0/supekku/scripts/change_registry.py +44 -0
  32. spec_driver-0.1.0/supekku/scripts/cli/__init__.py +1 -0
  33. spec_driver-0.1.0/supekku/scripts/cli/ast_doc_generator.py +179 -0
  34. spec_driver-0.1.0/supekku/scripts/cli/deterministic_ast_doc_generator.py +224 -0
  35. spec_driver-0.1.0/supekku/scripts/complete_delta.py +583 -0
  36. spec_driver-0.1.0/supekku/scripts/create_delta.py +56 -0
  37. spec_driver-0.1.0/supekku/scripts/create_new_spec.py +82 -0
  38. spec_driver-0.1.0/supekku/scripts/create_requirement.py +44 -0
  39. spec_driver-0.1.0/supekku/scripts/create_revision.py +55 -0
  40. spec_driver-0.1.0/supekku/scripts/decision_registry.py +328 -0
  41. spec_driver-0.1.0/supekku/scripts/lib/TODO.md +175 -0
  42. spec_driver-0.1.0/supekku/scripts/lib/__init__.py +61 -0
  43. spec_driver-0.1.0/supekku/scripts/lib/ast_doc_edge_case_fixtures.py +480 -0
  44. spec_driver-0.1.0/supekku/scripts/lib/ast_doc_edge_case_test.py +758 -0
  45. spec_driver-0.1.0/supekku/scripts/lib/ast_doc_integration_test.py +393 -0
  46. spec_driver-0.1.0/supekku/scripts/lib/ast_doc_test_fixtures.py +197 -0
  47. spec_driver-0.1.0/supekku/scripts/lib/backlog.py +178 -0
  48. spec_driver-0.1.0/supekku/scripts/lib/backlog_test.py +66 -0
  49. spec_driver-0.1.0/supekku/scripts/lib/change_artifacts.py +179 -0
  50. spec_driver-0.1.0/supekku/scripts/lib/change_artifacts_test.py +171 -0
  51. spec_driver-0.1.0/supekku/scripts/lib/change_lifecycle.py +57 -0
  52. spec_driver-0.1.0/supekku/scripts/lib/change_registry.py +84 -0
  53. spec_driver-0.1.0/supekku/scripts/lib/change_registry_test.py +69 -0
  54. spec_driver-0.1.0/supekku/scripts/lib/cli_utils.py +70 -0
  55. spec_driver-0.1.0/supekku/scripts/lib/completion_revision.py +196 -0
  56. spec_driver-0.1.0/supekku/scripts/lib/create_change.py +433 -0
  57. spec_driver-0.1.0/supekku/scripts/lib/create_change_test.py +86 -0
  58. spec_driver-0.1.0/supekku/scripts/lib/create_spec.py +231 -0
  59. spec_driver-0.1.0/supekku/scripts/lib/create_spec_test.py +111 -0
  60. spec_driver-0.1.0/supekku/scripts/lib/decision_registry.py +366 -0
  61. spec_driver-0.1.0/supekku/scripts/lib/decision_registry_test.py +788 -0
  62. spec_driver-0.1.0/supekku/scripts/lib/delta_blocks.py +112 -0
  63. spec_driver-0.1.0/supekku/scripts/lib/deterministic_ast_doc_generator_test.py +497 -0
  64. spec_driver-0.1.0/supekku/scripts/lib/docs/__init__.py +0 -0
  65. spec_driver-0.1.0/supekku/scripts/lib/docs/python/__init__.py +197 -0
  66. spec_driver-0.1.0/supekku/scripts/lib/docs/python/analyzer.py +253 -0
  67. spec_driver-0.1.0/supekku/scripts/lib/docs/python/cache.py +129 -0
  68. spec_driver-0.1.0/supekku/scripts/lib/docs/python/comments.py +65 -0
  69. spec_driver-0.1.0/supekku/scripts/lib/docs/python/generator.py +143 -0
  70. spec_driver-0.1.0/supekku/scripts/lib/docs/python/models.py +55 -0
  71. spec_driver-0.1.0/supekku/scripts/lib/docs/python/path_utils.py +59 -0
  72. spec_driver-0.1.0/supekku/scripts/lib/docs/python/variants.py +106 -0
  73. spec_driver-0.1.0/supekku/scripts/lib/frontmatter_schema.py +205 -0
  74. spec_driver-0.1.0/supekku/scripts/lib/lifecycle.py +26 -0
  75. spec_driver-0.1.0/supekku/scripts/lib/list_changes_test.py +208 -0
  76. spec_driver-0.1.0/supekku/scripts/lib/list_specs_test.py +102 -0
  77. spec_driver-0.1.0/supekku/scripts/lib/plan_blocks.py +125 -0
  78. spec_driver-0.1.0/supekku/scripts/lib/registry_migration.py +179 -0
  79. spec_driver-0.1.0/supekku/scripts/lib/registry_migration_test.py +139 -0
  80. spec_driver-0.1.0/supekku/scripts/lib/relations.py +107 -0
  81. spec_driver-0.1.0/supekku/scripts/lib/relations_test.py +80 -0
  82. spec_driver-0.1.0/supekku/scripts/lib/requirements.py +781 -0
  83. spec_driver-0.1.0/supekku/scripts/lib/requirements_test.py +385 -0
  84. spec_driver-0.1.0/supekku/scripts/lib/revision_blocks.py +918 -0
  85. spec_driver-0.1.0/supekku/scripts/lib/revision_blocks_test.py +123 -0
  86. spec_driver-0.1.0/supekku/scripts/lib/revision_discovery.py +102 -0
  87. spec_driver-0.1.0/supekku/scripts/lib/revision_discovery_test.py +179 -0
  88. spec_driver-0.1.0/supekku/scripts/lib/revision_updater.py +191 -0
  89. spec_driver-0.1.0/supekku/scripts/lib/revision_updater_test.py +203 -0
  90. spec_driver-0.1.0/supekku/scripts/lib/spec_blocks.py +109 -0
  91. spec_driver-0.1.0/supekku/scripts/lib/spec_index.py +135 -0
  92. spec_driver-0.1.0/supekku/scripts/lib/spec_index_test.py +468 -0
  93. spec_driver-0.1.0/supekku/scripts/lib/spec_models.py +41 -0
  94. spec_driver-0.1.0/supekku/scripts/lib/spec_registry.py +75 -0
  95. spec_driver-0.1.0/supekku/scripts/lib/spec_registry_test.py +96 -0
  96. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/__init__.py +17 -0
  97. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/__init__.py +10 -0
  98. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/base.py +192 -0
  99. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/go.py +410 -0
  100. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/go_test.py +194 -0
  101. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/python.py +391 -0
  102. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/python_test.py +333 -0
  103. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/typescript.py +247 -0
  104. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/adapters/typescript_test.py +297 -0
  105. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/engine.py +252 -0
  106. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/engine_test.py +282 -0
  107. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/models.py +64 -0
  108. spec_driver-0.1.0/supekku/scripts/lib/spec_sync/models_test.py +121 -0
  109. spec_driver-0.1.0/supekku/scripts/lib/spec_utils.py +80 -0
  110. spec_driver-0.1.0/supekku/scripts/lib/spec_utils_test.py +177 -0
  111. spec_driver-0.1.0/supekku/scripts/lib/sync_engine.py +435 -0
  112. spec_driver-0.1.0/supekku/scripts/lib/sync_engine_test.py +214 -0
  113. spec_driver-0.1.0/supekku/scripts/lib/test_base.py +34 -0
  114. spec_driver-0.1.0/supekku/scripts/lib/validator.py +165 -0
  115. spec_driver-0.1.0/supekku/scripts/lib/validator_test.py +353 -0
  116. spec_driver-0.1.0/supekku/scripts/lib/workspace.py +106 -0
  117. spec_driver-0.1.0/supekku/scripts/lib/workspace_test.py +230 -0
  118. spec_driver-0.1.0/supekku/scripts/list_changes.py +189 -0
  119. spec_driver-0.1.0/supekku/scripts/list_deltas.py +149 -0
  120. spec_driver-0.1.0/supekku/scripts/list_specs.py +161 -0
  121. spec_driver-0.1.0/supekku/scripts/requirements.py +174 -0
  122. spec_driver-0.1.0/supekku/scripts/sync_specs.py +561 -0
  123. spec_driver-0.1.0/supekku/scripts/sync_tech_specs.py +85 -0
  124. spec_driver-0.1.0/supekku/scripts/validate_revision_blocks.py +171 -0
  125. spec_driver-0.1.0/supekku/scripts/validate_workspace.py +64 -0
  126. spec_driver-0.1.0/supekku/templates/ADR.md +60 -0
  127. spec_driver-0.1.0/supekku/templates/audit-template.md +70 -0
  128. spec_driver-0.1.0/supekku/templates/implementation-plan-template.md +106 -0
  129. spec_driver-0.1.0/supekku/templates/phase-sheet-template.md +102 -0
  130. spec_driver-0.1.0/supekku/templates/product-spec-template.md +63 -0
  131. spec_driver-0.1.0/supekku/templates/spec-revision-template.md +59 -0
  132. spec_driver-0.1.0/supekku/templates/tech-spec-template.md +167 -0
  133. spec_driver-0.1.0/supekku/templates/tech-testing-template.md +71 -0
@@ -0,0 +1,222 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ # Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ # poetry.lock
109
+ # poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ # pdm.lock
116
+ # pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ # pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # Redis
135
+ *.rdb
136
+ *.aof
137
+ *.pid
138
+
139
+ # RabbitMQ
140
+ mnesia/
141
+ rabbitmq/
142
+ rabbitmq-data/
143
+
144
+ # ActiveMQ
145
+ activemq-data/
146
+
147
+ # SageMath parsed files
148
+ *.sage.py
149
+
150
+ # Environments
151
+ .env
152
+ .envrc
153
+ .venv
154
+ env/
155
+ venv/
156
+ ENV/
157
+ env.bak/
158
+ venv.bak/
159
+
160
+ # Spyder project settings
161
+ .spyderproject
162
+ .spyproject
163
+
164
+ # Rope project settings
165
+ .ropeproject
166
+
167
+ # mkdocs documentation
168
+ /site
169
+
170
+ # mypy
171
+ .mypy_cache/
172
+ .dmypy.json
173
+ dmypy.json
174
+
175
+ # Pyre type checker
176
+ .pyre/
177
+
178
+ # pytype static type analyzer
179
+ .pytype/
180
+
181
+ # Cython debug symbols
182
+ cython_debug/
183
+
184
+ # PyCharm
185
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
186
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
187
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
188
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
189
+ # .idea/
190
+
191
+ # Abstra
192
+ # Abstra is an AI-powered process automation framework.
193
+ # Ignore directories containing user credentials, local state, and settings.
194
+ # Learn more at https://abstra.io/docs
195
+ .abstra/
196
+
197
+ # Visual Studio Code
198
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
199
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
200
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
201
+ # you could uncomment the following to ignore the entire vscode folder
202
+ # .vscode/
203
+
204
+ # Ruff stuff:
205
+ .ruff_cache/
206
+
207
+ # PyPI configuration file
208
+ .pypirc
209
+
210
+ # Marimo
211
+ marimo/_static/
212
+ marimo/_lsp/
213
+ __marimo__/
214
+
215
+ # Streamlit
216
+ .streamlit/secrets.toml
217
+
218
+
219
+ # But include our source code in supekku/
220
+ !supekku/
221
+ !supekku/**
222
+ __pycache__
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 David Lee
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,140 @@
1
+ Metadata-Version: 2.4
2
+ Name: spec-driver
3
+ Version: 0.1.0
4
+ Summary: Specification-driven development toolkit with multi-language spec sync and documentation generation
5
+ Project-URL: Homepage, https://github.com/davidlee/spec-driver
6
+ Project-URL: Repository, https://github.com/davidlee/spec-driver
7
+ Project-URL: Issues, https://github.com/davidlee/spec-driver/issues
8
+ Author-email: David Lee <david@supekku.dev>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: adr,architecture-decision-records,documentation,spec-sync,specification
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Documentation
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Requires-Python: >=3.10
23
+ Requires-Dist: python-frontmatter>=1.1.0
24
+ Requires-Dist: pyyaml>=6.0.3
25
+ Description-Content-Type: text/markdown
26
+
27
+ # spec-driver
28
+
29
+ Specification-driven agentic development toolkit with multi-language spec sync and documentation generation.
30
+
31
+ Why?
32
+ - Maintain verifiably accurate, evergreen specs covering your _entire system_
33
+ - Use cheap, fast, deterministically generated docs to complement and audit the work of messy, stochastic agents
34
+ - The combination of markdown and YAML is a surprisingly powerful platform for structured, legible data
35
+ - Tooling joins related entities through a registry for fast lookup, validation, and relational data propagation
36
+ - Stop banging rocks together
37
+
38
+ ## Status
39
+
40
+ **Alpha** - Under active development. API and CLI may change.
41
+
42
+ ## Features
43
+
44
+ - **Multi-language spec sync**: Automatically sync specifications with Go and Python codebases
45
+ - **Architecture Decision Records (ADRs)**: Manage and track architectural decisions
46
+ - **Delta/Change tracking**: Track and manage specification changes and revisions
47
+ - **Documentation generation**: Generate documentation from code using AST analysis
48
+ - **Workspace validation**: Ensure consistency across specification artifacts
49
+
50
+ ## Installation
51
+
52
+ ### From GitHub (Development)
53
+
54
+ ```bash
55
+ # Install from latest commit
56
+ uv add git+https://github.com/davidlee/spec-driver
57
+
58
+ # Or use with uvx (no installation)
59
+ uvx --from git+https://github.com/davidlee/spec-driver spec-driver-sync --help
60
+ ```
61
+
62
+ ### From PyPI (Future)
63
+
64
+ ```bash
65
+ uv add spec-driver
66
+ ```
67
+
68
+ ## Usage
69
+
70
+ spec-driver provides multiple CLI commands:
71
+
72
+ ### Specification Sync
73
+
74
+ ```bash
75
+ # Sync specifications with codebase
76
+ spec-driver-sync
77
+
78
+ # Dry run to see what would be synced
79
+ spec-driver-sync --dry-run
80
+
81
+ # Sync specific language
82
+ spec-driver-sync --language python
83
+ ```
84
+
85
+ ### Architecture Decision Records
86
+
87
+ ```bash
88
+ # Create new ADR
89
+ spec-driver-adr new "Use event sourcing for audit trail"
90
+
91
+ # List ADRs
92
+ spec-driver-adr list
93
+
94
+ # Show ADR details
95
+ spec-driver-adr show ADR-001
96
+ ```
97
+
98
+ ### Deltas and Changes
99
+
100
+ ```bash
101
+ # Create delta
102
+ spec-driver-delta
103
+
104
+ # List deltas
105
+ spec-driver-delta-list
106
+
107
+ # Complete delta
108
+ spec-driver-delta-complete DELTA-001
109
+ ```
110
+
111
+ ### Other Commands
112
+
113
+ - `spec-driver-spec` - Create new specification
114
+ - `spec-driver-spec-list` - List specifications
115
+ - `spec-driver-requirement` - Manage requirements
116
+ - `spec-driver-revision` - Create revision blocks
117
+ - `spec-driver-validate-workspace` - Validate workspace consistency
118
+
119
+ ## Project Integration
120
+
121
+ spec-driver is designed to be integrated into projects using:
122
+
123
+ 1. **Directory structure**: `specify/` and `change/` directories for artifacts
124
+ 2. **Justfile module**: Integration with project build tools
125
+ 3. **Agent instructions**: Claude Code integration via agent files
126
+
127
+ Installation script (future):
128
+ ```bash
129
+ uvx spec-driver install
130
+ ```
131
+
132
+ ## Development
133
+
134
+ This package is under active development and API stability is not yet guaranteed.
135
+
136
+ Current development happens in the [vice](https://github.com/davidlee/vice) repository.
137
+
138
+ ## License
139
+
140
+ MIT
@@ -0,0 +1,114 @@
1
+ # spec-driver
2
+
3
+ Specification-driven agentic development toolkit with multi-language spec sync and documentation generation.
4
+
5
+ Why?
6
+ - Maintain verifiably accurate, evergreen specs covering your _entire system_
7
+ - Use cheap, fast, deterministically generated docs to complement and audit the work of messy, stochastic agents
8
+ - The combination of markdown and YAML is a surprisingly powerful platform for structured, legible data
9
+ - Tooling joins related entities through a registry for fast lookup, validation, and relational data propagation
10
+ - Stop banging rocks together
11
+
12
+ ## Status
13
+
14
+ **Alpha** - Under active development. API and CLI may change.
15
+
16
+ ## Features
17
+
18
+ - **Multi-language spec sync**: Automatically sync specifications with Go and Python codebases
19
+ - **Architecture Decision Records (ADRs)**: Manage and track architectural decisions
20
+ - **Delta/Change tracking**: Track and manage specification changes and revisions
21
+ - **Documentation generation**: Generate documentation from code using AST analysis
22
+ - **Workspace validation**: Ensure consistency across specification artifacts
23
+
24
+ ## Installation
25
+
26
+ ### From GitHub (Development)
27
+
28
+ ```bash
29
+ # Install from latest commit
30
+ uv add git+https://github.com/davidlee/spec-driver
31
+
32
+ # Or use with uvx (no installation)
33
+ uvx --from git+https://github.com/davidlee/spec-driver spec-driver-sync --help
34
+ ```
35
+
36
+ ### From PyPI (Future)
37
+
38
+ ```bash
39
+ uv add spec-driver
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ spec-driver provides multiple CLI commands:
45
+
46
+ ### Specification Sync
47
+
48
+ ```bash
49
+ # Sync specifications with codebase
50
+ spec-driver-sync
51
+
52
+ # Dry run to see what would be synced
53
+ spec-driver-sync --dry-run
54
+
55
+ # Sync specific language
56
+ spec-driver-sync --language python
57
+ ```
58
+
59
+ ### Architecture Decision Records
60
+
61
+ ```bash
62
+ # Create new ADR
63
+ spec-driver-adr new "Use event sourcing for audit trail"
64
+
65
+ # List ADRs
66
+ spec-driver-adr list
67
+
68
+ # Show ADR details
69
+ spec-driver-adr show ADR-001
70
+ ```
71
+
72
+ ### Deltas and Changes
73
+
74
+ ```bash
75
+ # Create delta
76
+ spec-driver-delta
77
+
78
+ # List deltas
79
+ spec-driver-delta-list
80
+
81
+ # Complete delta
82
+ spec-driver-delta-complete DELTA-001
83
+ ```
84
+
85
+ ### Other Commands
86
+
87
+ - `spec-driver-spec` - Create new specification
88
+ - `spec-driver-spec-list` - List specifications
89
+ - `spec-driver-requirement` - Manage requirements
90
+ - `spec-driver-revision` - Create revision blocks
91
+ - `spec-driver-validate-workspace` - Validate workspace consistency
92
+
93
+ ## Project Integration
94
+
95
+ spec-driver is designed to be integrated into projects using:
96
+
97
+ 1. **Directory structure**: `specify/` and `change/` directories for artifacts
98
+ 2. **Justfile module**: Integration with project build tools
99
+ 3. **Agent instructions**: Claude Code integration via agent files
100
+
101
+ Installation script (future):
102
+ ```bash
103
+ uvx spec-driver install
104
+ ```
105
+
106
+ ## Development
107
+
108
+ This package is under active development and API stability is not yet guaranteed.
109
+
110
+ Current development happens in the [vice](https://github.com/davidlee/vice) repository.
111
+
112
+ ## License
113
+
114
+ MIT
@@ -0,0 +1,10 @@
1
+ export NIXPKGS_ALLOW_UNFREE=1
2
+ export UV_CACHE_DIR=$(pwd)/.uv-cache
3
+
4
+ # silence, nix-direnv
5
+ export DIRENV_LOG_FORMAT="$(printf "\033[2mdirenv: %%s\033[0m")"
6
+ _direnv_hook() {
7
+ eval "$(direnv export zsh 2> >(egrep -v -e '^....direnv: export' >&2))"
8
+ }
9
+
10
+ use flake . --impure # --show-trace
@@ -0,0 +1,120 @@
1
+ [project]
2
+ name = "spec-driver"
3
+ version = "0.1.0"
4
+ description = "Specification-driven development toolkit with multi-language spec sync and documentation generation"
5
+ authors = [
6
+ { name = "David Lee", email = "david@supekku.dev" }
7
+ ]
8
+ readme = "README.md"
9
+ license = { text = "MIT" }
10
+ requires-python = ">=3.10"
11
+ dependencies = [
12
+ "pyyaml>=6.0.3",
13
+ "python-frontmatter>=1.1.0",
14
+ ]
15
+ keywords = ["specification", "documentation", "adr", "architecture-decision-records", "spec-sync"]
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Intended Audience :: Developers",
19
+ "License :: OSI Approved :: MIT License",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Programming Language :: Python :: 3.13",
25
+ "Topic :: Software Development :: Documentation",
26
+ "Topic :: Software Development :: Libraries :: Python Modules",
27
+ ]
28
+
29
+ [project.urls]
30
+ Homepage = "https://github.com/davidlee/spec-driver"
31
+ Repository = "https://github.com/davidlee/spec-driver"
32
+ Issues = "https://github.com/davidlee/spec-driver/issues"
33
+
34
+ [project.scripts]
35
+ spec-driver-sync = "supekku.scripts.sync_specs:main"
36
+ spec-driver-adr = "supekku.scripts.decision_registry:main"
37
+ spec-driver-delta = "supekku.scripts.create_delta:main"
38
+ spec-driver-delta-complete = "supekku.scripts.complete_delta:main"
39
+ spec-driver-delta-list = "supekku.scripts.list_deltas:main"
40
+ spec-driver-change-registry = "supekku.scripts.change_registry:main"
41
+ spec-driver-change-list = "supekku.scripts.list_changes:main"
42
+ spec-driver-spec = "supekku.scripts.create_new_spec:main"
43
+ spec-driver-spec-list = "supekku.scripts.list_specs:main"
44
+ spec-driver-spec-sync = "supekku.scripts.sync_tech_specs:main"
45
+ spec-driver-requirement = "supekku.scripts.create_requirement:main"
46
+ spec-driver-requirements = "supekku.scripts.requirements:main"
47
+ spec-driver-revision = "supekku.scripts.create_revision:main"
48
+ spec-driver-validate-revision = "supekku.scripts.validate_revision_blocks:main"
49
+ spec-driver-validate-workspace = "supekku.scripts.validate_workspace:main"
50
+
51
+ [build-system]
52
+ requires = ["hatchling"]
53
+ build-backend = "hatchling.build"
54
+
55
+ [tool.hatch.build.targets.wheel]
56
+ packages = ["supekku"]
57
+ exclude = [
58
+ "supekku/CLAUDE.md",
59
+ ".direnv/",
60
+ ".envrc",
61
+ ".venv/",
62
+ "flake.nix",
63
+ "flake.lock",
64
+ ".uv-",
65
+ ".uv-cache/",
66
+ ".pytest_cache/",
67
+ "**/__pycache__/",
68
+ "**/*.pyc",
69
+ "**/*.pyo",
70
+ "about/",
71
+ ]
72
+ # Force-include lib/ since it's in .gitignore (meant for build artifacts, not source)
73
+ #force-include = { "supekku/scripts/lib" = "supekku/scripts/lib" }
74
+
75
+ [tool.hatch.build.targets.sdist]
76
+ exclude = [
77
+ "supekku/CLAUDE.md",
78
+ ".direnv/",
79
+ ".envrc",
80
+ ".venv/",
81
+ "flake.nix",
82
+ "flake.lock",
83
+ ".uv-",
84
+ ".uv-cache/",
85
+ ".pytest_cache/",
86
+ "**/__pycache__/",
87
+ "**/*.pyc",
88
+ "**/*.pyo",
89
+ "about/", ## fixme
90
+ ]
91
+ #force-include = { "supekku/scripts/lib" = "supekku/scripts/lib" }
92
+
93
+ [dependency-groups]
94
+ dev = [
95
+ "pytest>=8.4.2",
96
+ "ruff>=0.14.0",
97
+ "pylint>=3.3.9",
98
+ ]
99
+
100
+ [tool.pytest.ini_options]
101
+ minversion = "6.0"
102
+ addopts = "-ra"
103
+ testpaths = [
104
+ "supekku/scripts",
105
+ "supekku/scripts/lib",
106
+ ]
107
+
108
+ [tool.ruff]
109
+ line-length = 88
110
+ target-version = "py310"
111
+
112
+ [tool.ruff.lint]
113
+ select = ["E", "F", "W", "I", "N", "UP"]
114
+ ignore = []
115
+
116
+ [tool.pylint.main]
117
+ disable = [
118
+ "C0114", # missing-module-docstring
119
+ "C0116", # missing-function-docstring
120
+ ]
@@ -0,0 +1,28 @@
1
+ # justfile
2
+
3
+ From the project root, run
4
+ `just --list supekku`
5
+
6
+ before submitting code for user approval, run
7
+ `just supekku::all`
8
+
9
+ ensure all tests and lint warnings are green - no exceptions(*).
10
+
11
+ You cannot suppress lint warnings without user approval.
12
+
13
+ `just supekku::lint`
14
+
15
+ The point of linting is to improve the quality of the code.
16
+
17
+ `uv run pylint supekku/scripts/lib/spec_sync` to run pylint on a particular module only.
18
+
19
+ NEVER prioritise task completion over technical quality or delivering value to users.
20
+
21
+ (*) - exception: we are currently working towards "lint zero". for this to be
22
+ practical, you must fix all lint warnings in any file you touch, but can leave
23
+ untouched files.
24
+
25
+ # python
26
+
27
+ we use uv because nixos. `uv run python`
28
+
@@ -0,0 +1,7 @@
1
+ """
2
+ Supekku: Specification-driven development toolkit.
3
+
4
+ Multi-language specification sync and documentation generation.
5
+ """
6
+
7
+ __version__ = "0.1.0"