hammerkit 1.6.0 → 1.7.0

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 (256) hide show
  1. package/README.md +4 -4
  2. package/build.schema.json +49 -2
  3. package/dist/cache/backends/local-cache-backend.js +58 -1
  4. package/dist/cache/backends/registry/registry-client.js +264 -0
  5. package/dist/cache/backends/registry/registry-credentials.js +81 -0
  6. package/dist/cache/backends/registry/registry-reference.js +36 -0
  7. package/dist/cache/backends/registry-cache-backend.js +145 -0
  8. package/dist/cache/backends/s3-cache-backend.js +99 -46
  9. package/dist/cache/cache-backend-registry.js +2 -0
  10. package/dist/cache/cache-inventory.js +84 -0
  11. package/dist/cache/cache-sync.js +77 -0
  12. package/dist/cache/explain.js +214 -0
  13. package/dist/cache/last-resolved.js +48 -0
  14. package/dist/cache/read-only.js +15 -0
  15. package/dist/cache/retention.js +61 -0
  16. package/dist/cli.js +43 -0
  17. package/dist/docker/using-container.js +5 -1
  18. package/dist/executer/archive-task-entry.js +21 -0
  19. package/dist/executer/await-completed-dependencies.js +32 -14
  20. package/dist/executer/cache-metadata.js +9 -2
  21. package/dist/executer/docker-service.js +2 -1
  22. package/dist/executer/docker-task.js +2 -1
  23. package/dist/executer/dry-run.js +73 -0
  24. package/dist/executer/event-cache.js +6 -5
  25. package/dist/executer/execute-command.js +21 -3
  26. package/dist/executer/execute-work-service.js +10 -1
  27. package/dist/executer/execute-work-task.js +95 -25
  28. package/dist/executer/execute-work-tree.js +26 -1
  29. package/dist/executer/get-scheduler-execute-result.js +4 -1
  30. package/dist/executer/lazy-resolver.js +15 -3
  31. package/dist/executer/reset-work-tree.js +2 -0
  32. package/dist/executer/run-summary.js +102 -0
  33. package/dist/executer/scheduler/enqueue-next.js +15 -60
  34. package/dist/executer/scheduler/state-key.js +78 -0
  35. package/dist/kubernetes/await-running-state.js +73 -19
  36. package/dist/log.js +16 -6
  37. package/dist/logging/live-logger.js +2 -1
  38. package/dist/optimizer/calculate-checksum.js +8 -2
  39. package/dist/optimizer/get-work-cache-stats.js +66 -16
  40. package/dist/optimizer/work-task-cache-description.js +34 -5
  41. package/dist/planner/project-root.js +26 -0
  42. package/dist/planner/utils/append-work-service.js +2 -1
  43. package/dist/planner/utils/append-work-task.js +7 -1
  44. package/dist/planner/utils/parse-work-source.js +35 -30
  45. package/dist/planner/utils/portable-path.js +30 -0
  46. package/dist/planner/work-cache-id.js +2 -2
  47. package/dist/planner/work-graph-serializer.js +103 -0
  48. package/dist/planner/work-instance-id.js +15 -0
  49. package/dist/planner/work-runtime-docker.js +53 -15
  50. package/dist/planner/work-runtime-kubernetes.js +35 -3
  51. package/dist/planner/work-runtime-local.js +9 -3
  52. package/dist/planner/work-service-id.js +16 -4
  53. package/dist/program.js +235 -1
  54. package/dist/schema/build-file-base-task-schema.js +4 -0
  55. package/dist/schema/cache-schema.js +21 -2
  56. package/dist/schema/duration-schema.js +18 -0
  57. package/dist/schema/reference-parser.js +3 -0
  58. package/dist/schema/size-schema.js +18 -0
  59. package/dist/schema/work-scope-parser.js +15 -2
  60. package/dist/utils/units.js +87 -0
  61. package/package.json +12 -1
  62. package/.agents/FEEDBACK.md +0 -74
  63. package/.agents/skills/before-commit/SKILL.md +0 -101
  64. package/.agents/skills/do-the-work/SKILL.md +0 -64
  65. package/.agents/skills/fix-ci/SKILL.md +0 -98
  66. package/.agents/skills/speckit-git-commit/SKILL.md +0 -53
  67. package/.agents/skills/speckit-git-feature/SKILL.md +0 -72
  68. package/.agents/skills/speckit-git-initialize/SKILL.md +0 -54
  69. package/.agents/skills/speckit-git-remote/SKILL.md +0 -50
  70. package/.agents/skills/speckit-git-validate/SKILL.md +0 -54
  71. package/.devcontainer/Dockerfile +0 -5
  72. package/.devcontainer/devcontainer.json +0 -40
  73. package/.gitbook.yaml +0 -5
  74. package/.specify/extensions/.registry +0 -37
  75. package/.specify/extensions/git/README.md +0 -100
  76. package/.specify/extensions/git/commands/speckit.git.commit.md +0 -48
  77. package/.specify/extensions/git/commands/speckit.git.feature.md +0 -67
  78. package/.specify/extensions/git/commands/speckit.git.initialize.md +0 -49
  79. package/.specify/extensions/git/commands/speckit.git.remote.md +0 -45
  80. package/.specify/extensions/git/commands/speckit.git.validate.md +0 -49
  81. package/.specify/extensions/git/config-template.yml +0 -62
  82. package/.specify/extensions/git/extension.yml +0 -140
  83. package/.specify/extensions/git/git-config.yml +0 -62
  84. package/.specify/extensions.yml +0 -149
  85. package/.specify/feature.json +0 -3
  86. package/.specify/init-options.json +0 -10
  87. package/.specify/integration.json +0 -15
  88. package/.specify/integrations/claude.manifest.json +0 -16
  89. package/.specify/integrations/speckit.manifest.json +0 -17
  90. package/.specify/memory/constitution.md +0 -162
  91. package/.specify/templates/checklist-template.md +0 -40
  92. package/.specify/templates/constitution-template.md +0 -50
  93. package/.specify/templates/plan-template.md +0 -113
  94. package/.specify/templates/spec-template.md +0 -131
  95. package/.specify/templates/tasks-template.md +0 -252
  96. package/.specify/workflows/speckit/workflow.yml +0 -77
  97. package/.specify/workflows/workflow-registry.json +0 -13
  98. package/AGENTS.md +0 -94
  99. package/Dockerfile +0 -32
  100. package/FOLLOWUPS.md +0 -34
  101. package/SUMMARY.md +0 -68
  102. package/VALUES.md +0 -53
  103. package/dist/cache/auto-pull.spec.js +0 -123
  104. package/dist/cache/backends/local-cache-backend.spec.js +0 -72
  105. package/dist/cache/backends/s3-cache-backend.spec.js +0 -118
  106. package/dist/cache/cache-backend-registry.spec.js +0 -22
  107. package/dist/cache/resolve-cache.spec.js +0 -52
  108. package/dist/cli.spec.js +0 -23
  109. package/dist/console/get-logger.spec.js +0 -23
  110. package/dist/docker/get-default-platform.spec.js +0 -29
  111. package/dist/docker/longest-common-prefix.spec.js +0 -26
  112. package/dist/docker/package.spec.js +0 -145
  113. package/dist/docker/remove-container.spec.js +0 -32
  114. package/dist/docker/using-container.spec.js +0 -90
  115. package/dist/environment/merge-environment-variables.spec.js +0 -24
  116. package/dist/environment/replace-env-variables.spec.js +0 -47
  117. package/dist/executer/abort.spec.js +0 -18
  118. package/dist/executer/environment-mock.spec.js +0 -22
  119. package/dist/executer/execute.spec.js +0 -51
  120. package/dist/executer/get-service-containers.spec.js +0 -59
  121. package/dist/executer/get-service-env-hints.spec.js +0 -65
  122. package/dist/executer/label-values.spec.js +0 -61
  123. package/dist/executer/lazy-resolver.spec.js +0 -20
  124. package/dist/executer/process-manager.spec.js +0 -54
  125. package/dist/executer/scheduler/enqueue-next.spec.js +0 -136
  126. package/dist/executer/state-resolver.spec.js +0 -37
  127. package/dist/executer/state.spec.js +0 -66
  128. package/dist/executer/states.spec.js +0 -14
  129. package/dist/file/get-file-context.spec.js +0 -178
  130. package/dist/file/move-files.spec.js +0 -48
  131. package/dist/kubernetes/ensure-http-route.spec.js +0 -70
  132. package/dist/kubernetes/ensure-namespace.spec.js +0 -39
  133. package/dist/kubernetes/resolve-pod-name.spec.js +0 -81
  134. package/dist/log.spec.js +0 -131
  135. package/dist/logging/grouped-logger.spec.js +0 -84
  136. package/dist/logging/interactive-logger.spec.js +0 -57
  137. package/dist/logging/live-logger.spec.js +0 -37
  138. package/dist/logging/loggers.spec.js +0 -154
  139. package/dist/optimizer/calculate-checksum.spec.js +0 -34
  140. package/dist/optimizer/get-cache-directory.spec.js +0 -59
  141. package/dist/optimizer/get-work-cache-stats.spec.js +0 -79
  142. package/dist/optimizer/work-task-cache-description.spec.js +0 -45
  143. package/dist/parser/default-build-file.spec.js +0 -48
  144. package/dist/parser/parse-label-arguments.spec.js +0 -27
  145. package/dist/parser/read-build-file.spec.js +0 -89
  146. package/dist/parser/read-env-file.spec.js +0 -42
  147. package/dist/planner/utils/append-work-service.spec.js +0 -71
  148. package/dist/planner/utils/get-container-user.spec.js +0 -30
  149. package/dist/planner/utils/get-default-kube-config.spec.js +0 -11
  150. package/dist/planner/utils/normalize-path.spec.js +0 -24
  151. package/dist/planner/utils/parse-work-command.spec.js +0 -21
  152. package/dist/planner/utils/parse-work-generate.spec.js +0 -45
  153. package/dist/planner/utils/parse-work-mount.spec.js +0 -62
  154. package/dist/planner/utils/parse-work-mounts.spec.js +0 -19
  155. package/dist/planner/utils/parse-work-port.spec.js +0 -24
  156. package/dist/planner/utils/parse-work-ports.spec.js +0 -24
  157. package/dist/planner/utils/parse-work-source.spec.js +0 -58
  158. package/dist/planner/utils/parse-work-volume.spec.js +0 -18
  159. package/dist/planner/utils/plan-work-tasks.spec.js +0 -30
  160. package/dist/planner/utils/plan-work-volume.spec.js +0 -33
  161. package/dist/planner/utils/split-name.spec.js +0 -16
  162. package/dist/planner/utils/template-value.spec.js +0 -14
  163. package/dist/planner/validate.spec.js +0 -251
  164. package/dist/planner/work-cache-id.spec.js +0 -173
  165. package/dist/planner/work-runtime-local.spec.js +0 -193
  166. package/dist/program-commands.spec.js +0 -84
  167. package/dist/program.spec.js +0 -43
  168. package/dist/schema/build-file-schema.spec.js +0 -61
  169. package/dist/schema/doc-build-files.spec.js +0 -223
  170. package/dist/schema/parse-error.spec.js +0 -18
  171. package/dist/schema/reference-parser.spec.js +0 -83
  172. package/dist/schema/schema-parser.spec.js +0 -80
  173. package/dist/schema/type-guards.spec.js +0 -23
  174. package/dist/schema/work-scope-parser.spec.js +0 -66
  175. package/dist/service/update-service-status.spec.js +0 -27
  176. package/dist/testing/ensure-local-registry.js +0 -134
  177. package/dist/testing/example-test-suite.js +0 -63
  178. package/dist/testing/expect.js +0 -82
  179. package/dist/testing/get-test-suite.js +0 -9
  180. package/dist/testing/http-get.js +0 -21
  181. package/dist/testing/integration/cache.spec.js +0 -49
  182. package/dist/testing/integration/cancellation.spec.js +0 -45
  183. package/dist/testing/integration/clean.spec.js +0 -43
  184. package/dist/testing/integration/cmd.spec.js +0 -15
  185. package/dist/testing/integration/concurrency.spec.js +0 -19
  186. package/dist/testing/integration/docker-package-registry.spec.js +0 -44
  187. package/dist/testing/integration/docker-service-crash.spec.js +0 -36
  188. package/dist/testing/integration/docker.spec.js +0 -18
  189. package/dist/testing/integration/env.spec.js +0 -48
  190. package/dist/testing/integration/environment.spec.js +0 -97
  191. package/dist/testing/integration/error.spec.js +0 -19
  192. package/dist/testing/integration/export.spec.js +0 -22
  193. package/dist/testing/integration/extend.spec.js +0 -29
  194. package/dist/testing/integration/glob.spec.js +0 -40
  195. package/dist/testing/integration/include.spec.js +0 -31
  196. package/dist/testing/integration/invalid.spec.js +0 -17
  197. package/dist/testing/integration/invalid_loop.spec.js +0 -56
  198. package/dist/testing/integration/k8s-state-cache.spec.js +0 -41
  199. package/dist/testing/integration/kubernetes-service.spec.js +0 -148
  200. package/dist/testing/integration/kubernetes.spec.js +0 -99
  201. package/dist/testing/integration/labels.spec.js +0 -42
  202. package/dist/testing/integration/local.spec.js +0 -14
  203. package/dist/testing/integration/monorepo.spec.js +0 -15
  204. package/dist/testing/integration/multi-line.spec.js +0 -17
  205. package/dist/testing/integration/reference.spec.js +0 -21
  206. package/dist/testing/integration/services.spec.js +0 -38
  207. package/dist/testing/integration/store.spec.js +0 -52
  208. package/dist/testing/integration/unknown.spec.js +0 -28
  209. package/dist/testing/integration/validate.spec.js +0 -160
  210. package/dist/testing/integration/watch-dependency.spec.js +0 -33
  211. package/dist/testing/integration/watch.spec.js +0 -45
  212. package/dist/testing/requires-kubernetes.js +0 -18
  213. package/dist/testing/requires-linux-containers.js +0 -18
  214. package/dist/testing/requires-windows-containers.js +0 -18
  215. package/dist/testing/test-case.js +0 -75
  216. package/dist/testing/test-streams.js +0 -28
  217. package/dist/testing/test-suite-setup.js +0 -3
  218. package/dist/testing/test-suite.js +0 -3
  219. package/dist/testing/testing-timeout.js +0 -32
  220. package/dist/utils/abort-event.spec.js +0 -46
  221. package/dist/utils/buffer-context.spec.js +0 -38
  222. package/dist/utils/ci.spec.js +0 -53
  223. package/dist/utils/debouncer.spec.js +0 -58
  224. package/dist/utils/emitter.spec.js +0 -34
  225. package/dist/utils/empty-writable.spec.js +0 -18
  226. package/dist/utils/environment-config.spec.js +0 -26
  227. package/dist/utils/fail-never.spec.js +0 -9
  228. package/dist/utils/sleep.spec.js +0 -22
  229. package/dist/version.spec.js +0 -12
  230. package/specs/build-file/caches/spec.md +0 -114
  231. package/specs/build-file/environment-variables/spec.md +0 -82
  232. package/specs/build-file/includes/spec.md +0 -60
  233. package/specs/build-file/references/spec.md +0 -56
  234. package/specs/build-file/spec.md +0 -62
  235. package/specs/cli/clean/spec.md +0 -85
  236. package/specs/cli/down/spec.md +0 -85
  237. package/specs/cli/execute/spec.md +0 -101
  238. package/specs/cli/init/spec.md +0 -64
  239. package/specs/cli/ls/spec.md +0 -66
  240. package/specs/cli/package/spec.md +0 -110
  241. package/specs/cli/spec.md +0 -73
  242. package/specs/cli/store-restore/spec.md +0 -74
  243. package/specs/cli/up/spec.md +0 -80
  244. package/specs/cli/validate/spec.md +0 -70
  245. package/specs/labels/spec.md +0 -91
  246. package/specs/service/container/spec.md +0 -120
  247. package/specs/service/kubernetes/spec.md +0 -97
  248. package/specs/service/spec.md +0 -105
  249. package/specs/task/caching/spec.md +0 -107
  250. package/specs/task/container/spec.md +0 -118
  251. package/specs/task/dependencies/spec.md +0 -70
  252. package/specs/task/extending/spec.md +0 -74
  253. package/specs/task/kubernetes/spec.md +0 -125
  254. package/specs/task/needs/spec.md +0 -59
  255. package/specs/task/spec.md +0 -87
  256. package/specs/task/watching/spec.md +0 -69
@@ -1,149 +0,0 @@
1
- installed:
2
- - git
3
- settings:
4
- auto_execute_hooks: true
5
- hooks:
6
- before_constitution:
7
- - extension: git
8
- command: speckit.git.initialize
9
- enabled: true
10
- optional: false
11
- prompt: Execute speckit.git.initialize?
12
- description: Initialize Git repository before constitution setup
13
- condition: null
14
- before_specify:
15
- - extension: git
16
- command: speckit.git.feature
17
- enabled: true
18
- optional: false
19
- prompt: Execute speckit.git.feature?
20
- description: Create feature branch before specification
21
- condition: null
22
- before_clarify:
23
- - extension: git
24
- command: speckit.git.commit
25
- enabled: true
26
- optional: true
27
- prompt: Commit outstanding changes before clarification?
28
- description: Auto-commit before spec clarification
29
- condition: null
30
- before_plan:
31
- - extension: git
32
- command: speckit.git.commit
33
- enabled: true
34
- optional: true
35
- prompt: Commit outstanding changes before planning?
36
- description: Auto-commit before implementation planning
37
- condition: null
38
- before_tasks:
39
- - extension: git
40
- command: speckit.git.commit
41
- enabled: true
42
- optional: true
43
- prompt: Commit outstanding changes before task generation?
44
- description: Auto-commit before task generation
45
- condition: null
46
- before_implement:
47
- - extension: git
48
- command: speckit.git.commit
49
- enabled: true
50
- optional: true
51
- prompt: Commit outstanding changes before implementation?
52
- description: Auto-commit before implementation
53
- condition: null
54
- before_checklist:
55
- - extension: git
56
- command: speckit.git.commit
57
- enabled: true
58
- optional: true
59
- prompt: Commit outstanding changes before checklist?
60
- description: Auto-commit before checklist generation
61
- condition: null
62
- before_analyze:
63
- - extension: git
64
- command: speckit.git.commit
65
- enabled: true
66
- optional: true
67
- prompt: Commit outstanding changes before analysis?
68
- description: Auto-commit before analysis
69
- condition: null
70
- before_taskstoissues:
71
- - extension: git
72
- command: speckit.git.commit
73
- enabled: true
74
- optional: true
75
- prompt: Commit outstanding changes before issue sync?
76
- description: Auto-commit before tasks-to-issues conversion
77
- condition: null
78
- after_constitution:
79
- - extension: git
80
- command: speckit.git.commit
81
- enabled: true
82
- optional: true
83
- prompt: Commit constitution changes?
84
- description: Auto-commit after constitution update
85
- condition: null
86
- after_specify:
87
- - extension: git
88
- command: speckit.git.commit
89
- enabled: true
90
- optional: true
91
- prompt: Commit specification changes?
92
- description: Auto-commit after specification
93
- condition: null
94
- after_clarify:
95
- - extension: git
96
- command: speckit.git.commit
97
- enabled: true
98
- optional: true
99
- prompt: Commit clarification changes?
100
- description: Auto-commit after spec clarification
101
- condition: null
102
- after_plan:
103
- - extension: git
104
- command: speckit.git.commit
105
- enabled: true
106
- optional: true
107
- prompt: Commit plan changes?
108
- description: Auto-commit after implementation planning
109
- condition: null
110
- after_tasks:
111
- - extension: git
112
- command: speckit.git.commit
113
- enabled: true
114
- optional: true
115
- prompt: Commit task changes?
116
- description: Auto-commit after task generation
117
- condition: null
118
- after_implement:
119
- - extension: git
120
- command: speckit.git.commit
121
- enabled: true
122
- optional: true
123
- prompt: Commit implementation changes?
124
- description: Auto-commit after implementation
125
- condition: null
126
- after_checklist:
127
- - extension: git
128
- command: speckit.git.commit
129
- enabled: true
130
- optional: true
131
- prompt: Commit checklist changes?
132
- description: Auto-commit after checklist generation
133
- condition: null
134
- after_analyze:
135
- - extension: git
136
- command: speckit.git.commit
137
- enabled: true
138
- optional: true
139
- prompt: Commit analysis results?
140
- description: Auto-commit after analysis
141
- condition: null
142
- after_taskstoissues:
143
- - extension: git
144
- command: speckit.git.commit
145
- enabled: true
146
- optional: true
147
- prompt: Commit after syncing issues?
148
- description: Auto-commit after tasks-to-issues conversion
149
- condition: null
@@ -1,3 +0,0 @@
1
- {
2
- "feature_directory": "specs"
3
- }
@@ -1,10 +0,0 @@
1
- {
2
- "ai": "claude",
3
- "ai_skills": true,
4
- "branch_numbering": "sequential",
5
- "context_file": "CLAUDE.md",
6
- "here": false,
7
- "integration": "claude",
8
- "script": "sh",
9
- "speckit_version": "0.8.18"
10
- }
@@ -1,15 +0,0 @@
1
- {
2
- "version": "0.8.18",
3
- "integration_state_schema": 1,
4
- "installed_integrations": [
5
- "claude"
6
- ],
7
- "integration_settings": {
8
- "claude": {
9
- "script": "sh",
10
- "invoke_separator": "-"
11
- }
12
- },
13
- "integration": "claude",
14
- "default_integration": "claude"
15
- }
@@ -1,16 +0,0 @@
1
- {
2
- "integration": "claude",
3
- "version": "0.8.18",
4
- "installed_at": "2026-05-30T06:27:46.809754+00:00",
5
- "files": {
6
- ".claude/skills/speckit-analyze/SKILL.md": "2eef0fbff6cad15c9d4714d8986192387811c971a82a1135ab0404f3db0c5e90",
7
- ".claude/skills/speckit-checklist/SKILL.md": "26419fc118dcd9c4e1e977460696a04b7757b8fb0a2d1ff9c64732669deb7977",
8
- ".claude/skills/speckit-clarify/SKILL.md": "35795a017d6d2ed3ace35a333b22e450788e539e24ed5c756d815aa34cd5b6f5",
9
- ".claude/skills/speckit-constitution/SKILL.md": "c1a044aba243ca6aff627fb5e4404feb6f1108d4f7dd174631bee3ae477d6c15",
10
- ".claude/skills/speckit-implement/SKILL.md": "042a0415ce60a5b66adf039da431d9a98cb4897ff330635e0bab0becbbaf3cd2",
11
- ".claude/skills/speckit-plan/SKILL.md": "bad923f08ffd0e61e37da038626bff374386541fb4c69858a5473d6dc302ee17",
12
- ".claude/skills/speckit-specify/SKILL.md": "4cb1cb21f598288859e84cbf29052c1c41f213a2ca42b79b3a6d6293dde99d02",
13
- ".claude/skills/speckit-tasks/SKILL.md": "ca048fadbe29d761c05b497605789656d112a3a9db5f774efcf84503e77a684e",
14
- ".claude/skills/speckit-taskstoissues/SKILL.md": "99bf5ffd90dcb57b63007c7f659a5160a18ce6feb82889895808e2d277abe83b"
15
- }
16
- }
@@ -1,17 +0,0 @@
1
- {
2
- "integration": "speckit",
3
- "version": "0.8.18",
4
- "installed_at": "2026-05-30T06:27:46.820090+00:00",
5
- "files": {
6
- ".specify/scripts/bash/common.sh": "0ac0b422fecf41a172a21dc163be1558a87e8a8b885cb48eb9307c99427c4102",
7
- ".specify/scripts/bash/setup-plan.sh": "b23cca3d769a217ab812a6059adb549622471f6893af234cf98ca2019ac4e1a1",
8
- ".specify/scripts/bash/setup-tasks.sh": "7aeee15192a5ab3ba9ff3c3ae450d9994043bf0493c1eabc840da72a9742fc87",
9
- ".specify/scripts/bash/check-prerequisites.sh": "f4541a00257f035aa55a9fede6d964e51e6851c3dc2f81d0a6f367db18944765",
10
- ".specify/scripts/bash/create-new-feature.sh": "bcf4964ca0c6c78717bb42d9e66b8c7e5ee82779cd96afc5aa7b08b75abe5790",
11
- ".specify/templates/constitution-template.md": "ce7549540fa45543cca797a150201d868e64495fdff39dc38246fb17bd4024b3",
12
- ".specify/templates/checklist-template.md": "c37695297e5d3153d64f82c21223509940b13932046c7961c42d1d669516130c",
13
- ".specify/templates/tasks-template.md": "fc29a233f6f5a27ca31f1aa46b596af6500c627441c6e62b2bc4a1d721525842",
14
- ".specify/templates/spec-template.md": "3945437fc35cd30a5b2bf7beea680337c3516826d3efa5a6b92c4a7eca1ba28e",
15
- ".specify/templates/plan-template.md": "cc7f7979cf8d8836ec26492785affd80791d3422a2b745062ec695be8c985ef7"
16
- }
17
- }
@@ -1,162 +0,0 @@
1
- <!--
2
- SYNC IMPACT REPORT
3
- Version change: (uninitialized template) → 1.0.0
4
- Rationale: Initial ratification. Constitution materialized from the canonical
5
- VALUES.md; no prior versioned principles existed.
6
-
7
- Modified principles: none (all newly defined)
8
- Added principles:
9
- - I. Local-First
10
- - II. Platform-Agnostic
11
- - III. One Config, Many Tools
12
- - IV. Caching Reduces Waste
13
- - V. Stable Contracts (NON-NEGOTIABLE)
14
- - VI. Simplicity & Composability
15
- - VII. Pragmatic Typing
16
- - VIII. Tests Carry Their Weight (NON-NEGOTIABLE)
17
- Added sections:
18
- - Decision Heuristics
19
- - Development Workflow & Quality Gates
20
- - Governance
21
- Removed sections: none
22
-
23
- Templates reviewed for alignment:
24
- - .specify/templates/plan-template.md ............ ✅ Constitution Check gate is
25
- generic ("Gates determined based on constitution file"); Complexity Tracking
26
- already supports Principle VI / "Add nothing speculative". No edit required.
27
- - .specify/templates/spec-template.md ............ ✅ No principle conflict. No edit.
28
- - .specify/templates/tasks-template.md ........... ✅ Tests-optional wording does
29
- not contradict Principle VIII (which governs the product, not generated
30
- task lists). No edit required.
31
- - .specify/templates/checklist-template.md ....... ✅ No principle conflict. No edit.
32
-
33
- Follow-up TODOs: none. RATIFICATION_DATE set to 2026-05-30 (initial adoption).
34
- -->
35
-
36
- # Hammerkit Constitution
37
-
38
- ## Core Principles
39
-
40
- ### I. Local-First
41
-
42
- Every hammerkit build MUST run on a developer's laptop, not only in CI. A feature that
43
- functions exclusively inside a CI environment is incomplete. Local execution is the
44
- primary target; CI is one consumer among many.
45
-
46
- **Rationale**: A build tool that only runs on CI is broken.
47
-
48
- ### II. Platform-Agnostic
49
-
50
- Hammerkit MUST NOT couple its core to any single CI/CD provider (GitHub Actions, GitLab
51
- CI, or otherwise). The same build MUST run anywhere a container runs. Provider-specific
52
- behavior is prohibited in core and, where genuinely needed, MUST sit behind a clear
53
- boundary.
54
-
55
- **Rationale**: Portability across environments is a core promise, not a configuration
56
- option.
57
-
58
- ### III. One Config, Many Tools
59
-
60
- A single hammerkit build file MUST be able to replace many tool-specific configs. Changes
61
- SHOULD reduce config sprawl, not add to it; any new configuration surface MUST justify its
62
- existence against this goal.
63
-
64
- **Rationale**: Reducing config sprawl is a feature, not a side effect.
65
-
66
- ### IV. Caching Reduces Waste
67
-
68
- Caching MUST be evaluated for compute and cost savings, not only wall-clock speed.
69
- Distributed and smart caching is a first-class concern. Cache-key correctness is
70
- non-negotiable: a false cache hit (serving stale output as fresh) is a defect, never an
71
- acceptable trade for speed.
72
-
73
- **Rationale**: Smart caching saves compute — that matters for cost and footprint, not only
74
- build time.
75
-
76
- ### V. Stable Contracts (NON-NEGOTIABLE)
77
-
78
- The CLI surface and the build-file schema are public contracts. Backward-incompatible
79
- changes to either MUST be deliberate and versioned — never an incidental side effect of a
80
- refactor. A breaking change requires a MAJOR version bump and migration notes.
81
-
82
- **Rationale**: Users depend on these contracts; silent breakage erodes trust in the tool.
83
-
84
- ### VI. Simplicity & Composability
85
-
86
- Prefer small, composable pieces over clever abstractions. If two features can be one, make
87
- them one. Abstractions, features, and config knobs MUST NOT land without a concrete present
88
- need (YAGNI).
89
-
90
- **Rationale**: Composable simplicity keeps the system maintainable and keeps the surface
91
- area honest.
92
-
93
- ### VII. Pragmatic Typing
94
-
95
- TypeScript strict mode MUST stay enabled. `any` is permitted where it pulls its weight;
96
- type purity is a means, not the goal. Type-level cleverness MUST NOT be bought at the cost
97
- of readability or delivery velocity.
98
-
99
- **Rationale**: Types exist to serve correctness and developer experience, not the reverse.
100
-
101
- ### VIII. Tests Carry Their Weight (NON-NEGOTIABLE)
102
-
103
- Quality and coverage are non-negotiable. New behavior ships with tests that would fail
104
- without it. Slow integration tests are accepted because they buy real confidence. Tests
105
- MUST NOT be skipped, muted, excluded, `xfail`-ed, or weakened to make a check pass; close
106
- gaps, do not exclude them.
107
-
108
- **Rationale**: Real confidence beats a green checkmark earned by lowering the bar.
109
-
110
- ## Decision Heuristics
111
-
112
- When a judgment call is not settled by a principle above, apply these heuristics (verbatim
113
- from `VALUES.md`):
114
-
115
- - **Fix root causes, not symptoms** — A red check is fixed by repairing what's broken, not
116
- by removing, muting, or weakening the check (no skipped tests, no relaxed lint/prettier
117
- config to dodge an error).
118
- - **Real integrations over mocks** — Where feasible, exercise real Docker / real registries
119
- / real Kubernetes. Mocks are a last resort, not a default.
120
- - **Add nothing speculative** — Features, abstractions, and config knobs land when a
121
- concrete need exists, not for hypothetical futures.
122
-
123
- ## Development Workflow & Quality Gates
124
-
125
- Every change MUST pass the same gates CI enforces before it merges. Locally these are:
126
-
127
- - **Formatting** — `prettier --check 'src/**'` (strict: no semicolons, single quotes, 120
128
- columns, 2-space indent, `es5` trailing commas). `npm run format` to fix.
129
- - **Linting** — `eslint . --ext .ts`. `no-console` is an error; output MUST route through
130
- the `Environment` (`stdout`/`stderr`/`console`/`status`), never `console.*` in `src/`.
131
- - **Typecheck / build** — `tsc -b tsconfig.json` (this also typechecks spec files).
132
- - **Unit suite** — `CI=true npm test`. The `CI=true` flag matches CI; container/k8s suites
133
- gate themselves on their env flags and no-op when unset.
134
- - **Integration suite** — `jest --config jest.integration.config.ts` exercises real
135
- Docker / registries / Kubernetes per Principle VIII and the Decision Heuristics.
136
-
137
- Coverage MUST NOT regress. Code review MUST verify compliance with these principles, and
138
- any added complexity MUST be justified (see the plan template's Complexity Tracking).
139
-
140
- ## Governance
141
-
142
- This constitution supersedes ad-hoc practice. When guidance conflicts, the constitution
143
- wins; deviations require explicit justification in the pull request.
144
-
145
- **Amendments** MUST be proposed via pull request, recorded in the Sync Impact Report at the
146
- top of this file, and version-bumped per the policy below. Material principle changes SHOULD
147
- note migration impact for dependent templates and docs.
148
-
149
- **Versioning policy** (for this constitution):
150
-
151
- - **MAJOR** — Backward-incompatible governance or principle removal/redefinition.
152
- - **MINOR** — A new principle or section, or materially expanded guidance.
153
- - **PATCH** — Clarifications, wording, and non-semantic refinements.
154
-
155
- **Compliance**: PRs and reviews MUST verify alignment with these principles. Unjustified
156
- violations block merge.
157
-
158
- **Runtime guidance**: `VALUES.md` is the canonical statement of intent and the source of
159
- these principles. Day-to-day agent operating rules live in `AGENTS.md`; durable corrections
160
- live in `.agents/FEEDBACK.md`. Read those for operational detail; this document governs.
161
-
162
- **Version**: 1.0.0 | **Ratified**: 2026-05-30 | **Last Amended**: 2026-05-30
@@ -1,40 +0,0 @@
1
- # [CHECKLIST TYPE] Checklist: [FEATURE NAME]
2
-
3
- **Purpose**: [Brief description of what this checklist covers]
4
- **Created**: [DATE]
5
- **Feature**: [Link to spec.md or relevant documentation]
6
-
7
- **Note**: This checklist is generated by the `/speckit-checklist` command based on feature context and requirements.
8
-
9
- <!--
10
- ============================================================================
11
- IMPORTANT: The checklist items below are SAMPLE ITEMS for illustration only.
12
-
13
- The /speckit-checklist command MUST replace these with actual items based on:
14
- - User's specific checklist request
15
- - Feature requirements from spec.md
16
- - Technical context from plan.md
17
- - Implementation details from tasks.md
18
-
19
- DO NOT keep these sample items in the generated checklist file.
20
- ============================================================================
21
- -->
22
-
23
- ## [Category 1]
24
-
25
- - [ ] CHK001 First checklist item with clear action
26
- - [ ] CHK002 Second checklist item
27
- - [ ] CHK003 Third checklist item
28
-
29
- ## [Category 2]
30
-
31
- - [ ] CHK004 Another category item
32
- - [ ] CHK005 Item with specific criteria
33
- - [ ] CHK006 Final item in this category
34
-
35
- ## Notes
36
-
37
- - Check items off as completed: `[x]`
38
- - Add comments or findings inline
39
- - Link to relevant resources or documentation
40
- - Items are numbered sequentially for easy reference
@@ -1,50 +0,0 @@
1
- # [PROJECT_NAME] Constitution
2
- <!-- Example: Spec Constitution, TaskFlow Constitution, etc. -->
3
-
4
- ## Core Principles
5
-
6
- ### [PRINCIPLE_1_NAME]
7
- <!-- Example: I. Library-First -->
8
- [PRINCIPLE_1_DESCRIPTION]
9
- <!-- Example: Every feature starts as a standalone library; Libraries must be self-contained, independently testable, documented; Clear purpose required - no organizational-only libraries -->
10
-
11
- ### [PRINCIPLE_2_NAME]
12
- <!-- Example: II. CLI Interface -->
13
- [PRINCIPLE_2_DESCRIPTION]
14
- <!-- Example: Every library exposes functionality via CLI; Text in/out protocol: stdin/args → stdout, errors → stderr; Support JSON + human-readable formats -->
15
-
16
- ### [PRINCIPLE_3_NAME]
17
- <!-- Example: III. Test-First (NON-NEGOTIABLE) -->
18
- [PRINCIPLE_3_DESCRIPTION]
19
- <!-- Example: TDD mandatory: Tests written → User approved → Tests fail → Then implement; Red-Green-Refactor cycle strictly enforced -->
20
-
21
- ### [PRINCIPLE_4_NAME]
22
- <!-- Example: IV. Integration Testing -->
23
- [PRINCIPLE_4_DESCRIPTION]
24
- <!-- Example: Focus areas requiring integration tests: New library contract tests, Contract changes, Inter-service communication, Shared schemas -->
25
-
26
- ### [PRINCIPLE_5_NAME]
27
- <!-- Example: V. Observability, VI. Versioning & Breaking Changes, VII. Simplicity -->
28
- [PRINCIPLE_5_DESCRIPTION]
29
- <!-- Example: Text I/O ensures debuggability; Structured logging required; Or: MAJOR.MINOR.BUILD format; Or: Start simple, YAGNI principles -->
30
-
31
- ## [SECTION_2_NAME]
32
- <!-- Example: Additional Constraints, Security Requirements, Performance Standards, etc. -->
33
-
34
- [SECTION_2_CONTENT]
35
- <!-- Example: Technology stack requirements, compliance standards, deployment policies, etc. -->
36
-
37
- ## [SECTION_3_NAME]
38
- <!-- Example: Development Workflow, Review Process, Quality Gates, etc. -->
39
-
40
- [SECTION_3_CONTENT]
41
- <!-- Example: Code review requirements, testing gates, deployment approval process, etc. -->
42
-
43
- ## Governance
44
- <!-- Example: Constitution supersedes all other practices; Amendments require documentation, approval, migration plan -->
45
-
46
- [GOVERNANCE_RULES]
47
- <!-- Example: All PRs/reviews must verify compliance; Complexity must be justified; Use [GUIDANCE_FILE] for runtime development guidance -->
48
-
49
- **Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE]
50
- <!-- Example: Version: 2.1.1 | Ratified: 2025-06-13 | Last Amended: 2025-07-16 -->
@@ -1,113 +0,0 @@
1
- # Implementation Plan: [FEATURE]
2
-
3
- **Branch**: `[###-feature-name]` | **Date**: [DATE] | **Spec**: [link]
4
-
5
- **Input**: Feature specification from `/specs/[###-feature-name]/spec.md`
6
-
7
- **Note**: This template is filled in by the `/speckit-plan` command. See `.specify/templates/plan-template.md` for the execution workflow.
8
-
9
- ## Summary
10
-
11
- [Extract from feature spec: primary requirement + technical approach from research]
12
-
13
- ## Technical Context
14
-
15
- <!--
16
- ACTION REQUIRED: Replace the content in this section with the technical details
17
- for the project. The structure here is presented in advisory capacity to guide
18
- the iteration process.
19
- -->
20
-
21
- **Language/Version**: [e.g., Python 3.11, Swift 5.9, Rust 1.75 or NEEDS CLARIFICATION]
22
-
23
- **Primary Dependencies**: [e.g., FastAPI, UIKit, LLVM or NEEDS CLARIFICATION]
24
-
25
- **Storage**: [if applicable, e.g., PostgreSQL, CoreData, files or N/A]
26
-
27
- **Testing**: [e.g., pytest, XCTest, cargo test or NEEDS CLARIFICATION]
28
-
29
- **Target Platform**: [e.g., Linux server, iOS 15+, WASM or NEEDS CLARIFICATION]
30
-
31
- **Project Type**: [e.g., library/cli/web-service/mobile-app/compiler/desktop-app or NEEDS CLARIFICATION]
32
-
33
- **Performance Goals**: [domain-specific, e.g., 1000 req/s, 10k lines/sec, 60 fps or NEEDS CLARIFICATION]
34
-
35
- **Constraints**: [domain-specific, e.g., <200ms p95, <100MB memory, offline-capable or NEEDS CLARIFICATION]
36
-
37
- **Scale/Scope**: [domain-specific, e.g., 10k users, 1M LOC, 50 screens or NEEDS CLARIFICATION]
38
-
39
- ## Constitution Check
40
-
41
- *GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
42
-
43
- [Gates determined based on constitution file]
44
-
45
- ## Project Structure
46
-
47
- ### Documentation (this feature)
48
-
49
- ```text
50
- specs/[###-feature]/
51
- ├── plan.md # This file (/speckit-plan command output)
52
- ├── research.md # Phase 0 output (/speckit-plan command)
53
- ├── data-model.md # Phase 1 output (/speckit-plan command)
54
- ├── quickstart.md # Phase 1 output (/speckit-plan command)
55
- ├── contracts/ # Phase 1 output (/speckit-plan command)
56
- └── tasks.md # Phase 2 output (/speckit-tasks command - NOT created by /speckit-plan)
57
- ```
58
-
59
- ### Source Code (repository root)
60
- <!--
61
- ACTION REQUIRED: Replace the placeholder tree below with the concrete layout
62
- for this feature. Delete unused options and expand the chosen structure with
63
- real paths (e.g., apps/admin, packages/something). The delivered plan must
64
- not include Option labels.
65
- -->
66
-
67
- ```text
68
- # [REMOVE IF UNUSED] Option 1: Single project (DEFAULT)
69
- src/
70
- ├── models/
71
- ├── services/
72
- ├── cli/
73
- └── lib/
74
-
75
- tests/
76
- ├── contract/
77
- ├── integration/
78
- └── unit/
79
-
80
- # [REMOVE IF UNUSED] Option 2: Web application (when "frontend" + "backend" detected)
81
- backend/
82
- ├── src/
83
- │ ├── models/
84
- │ ├── services/
85
- │ └── api/
86
- └── tests/
87
-
88
- frontend/
89
- ├── src/
90
- │ ├── components/
91
- │ ├── pages/
92
- │ └── services/
93
- └── tests/
94
-
95
- # [REMOVE IF UNUSED] Option 3: Mobile + API (when "iOS/Android" detected)
96
- api/
97
- └── [same as backend above]
98
-
99
- ios/ or android/
100
- └── [platform-specific structure: feature modules, UI flows, platform tests]
101
- ```
102
-
103
- **Structure Decision**: [Document the selected structure and reference the real
104
- directories captured above]
105
-
106
- ## Complexity Tracking
107
-
108
- > **Fill ONLY if Constitution Check has violations that must be justified**
109
-
110
- | Violation | Why Needed | Simpler Alternative Rejected Because |
111
- |-----------|------------|-------------------------------------|
112
- | [e.g., 4th project] | [current need] | [why 3 projects insufficient] |
113
- | [e.g., Repository pattern] | [specific problem] | [why direct DB access insufficient] |