xtrm-tools 2.0.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 (447) hide show
  1. package/CHANGELOG.md +496 -0
  2. package/README.md +762 -0
  3. package/cli/dist/index.cjs +55245 -0
  4. package/cli/dist/index.cjs.map +1 -0
  5. package/cli/dist/index.d.cts +2 -0
  6. package/cli/package.json +43 -0
  7. package/config/.env.example +40 -0
  8. package/config/hooks.json +36 -0
  9. package/config/mcp_servers.json +46 -0
  10. package/config/mcp_servers_optional.json +53 -0
  11. package/config/settings.json +70 -0
  12. package/hooks/README.md +156 -0
  13. package/hooks/__pycache__/agent_context.cpython-314.pyc +0 -0
  14. package/hooks/agent_context.py +105 -0
  15. package/hooks/gitnexus/gitnexus-hook.cjs +133 -0
  16. package/hooks/serena-workflow-reminder.py +74 -0
  17. package/hooks/skill-discovery.py +90 -0
  18. package/hooks/skill-suggestion.py +112 -0
  19. package/hooks/test_agent_context.py +112 -0
  20. package/hooks/type-safety-enforcement.py +107 -0
  21. package/package.json +48 -0
  22. package/project-skills/main-guard/.claude/hooks/main-guard.cjs +188 -0
  23. package/project-skills/main-guard/.claude/settings.json +16 -0
  24. package/project-skills/main-guard/.claude/skills/using-main-guard/SKILL.md +135 -0
  25. package/project-skills/main-guard/README.md +163 -0
  26. package/project-skills/py-quality-gate/.claude/hooks/quality-check.py +311 -0
  27. package/project-skills/py-quality-gate/.claude/settings.json +16 -0
  28. package/project-skills/py-quality-gate/.claude/skills/using-py-quality-gate/SKILL.md +112 -0
  29. package/project-skills/py-quality-gate/README.md +147 -0
  30. package/project-skills/service-skills-set/.claude/git-hooks/__pycache__/doc_reminder.cpython-314.pyc +0 -0
  31. package/project-skills/service-skills-set/.claude/git-hooks/__pycache__/skill_staleness.cpython-314.pyc +0 -0
  32. package/project-skills/service-skills-set/.claude/git-hooks/doc_reminder.py +67 -0
  33. package/project-skills/service-skills-set/.claude/git-hooks/skill_staleness.py +194 -0
  34. package/project-skills/service-skills-set/.claude/service-registry.json +4 -0
  35. package/project-skills/service-skills-set/.claude/settings.json +37 -0
  36. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/SKILL.md +433 -0
  37. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/references/script_quality_standards.md +412 -0
  38. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/references/service_skill_system_guide.md +264 -0
  39. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/scripts/bootstrap.py +308 -0
  40. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/scripts/deep_dive.py +304 -0
  41. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/scripts/scaffolder.py +482 -0
  42. package/project-skills/service-skills-set/.claude/skills/scoping-service-skills/SKILL.md +231 -0
  43. package/project-skills/service-skills-set/.claude/skills/scoping-service-skills/scripts/scope.py +74 -0
  44. package/project-skills/service-skills-set/.claude/skills/updating-service-skills/SKILL.md +136 -0
  45. package/project-skills/service-skills-set/.claude/skills/updating-service-skills/scripts/__pycache__/drift_detector.cpython-314.pyc +0 -0
  46. package/project-skills/service-skills-set/.claude/skills/updating-service-skills/scripts/drift_detector.py +222 -0
  47. package/project-skills/service-skills-set/.claude/skills/using-service-skills/SKILL.md +108 -0
  48. package/project-skills/service-skills-set/.claude/skills/using-service-skills/scripts/__pycache__/cataloger.cpython-314.pyc +0 -0
  49. package/project-skills/service-skills-set/.claude/skills/using-service-skills/scripts/__pycache__/skill_activator.cpython-314.pyc +0 -0
  50. package/project-skills/service-skills-set/.claude/skills/using-service-skills/scripts/cataloger.py +74 -0
  51. package/project-skills/service-skills-set/.claude/skills/using-service-skills/scripts/skill_activator.py +152 -0
  52. package/project-skills/service-skills-set/README.md +93 -0
  53. package/project-skills/service-skills-set/__pycache__/install-service-skills.cpython-314.pyc +0 -0
  54. package/project-skills/service-skills-set/install-service-skills.py +163 -0
  55. package/project-skills/service-skills-set/service-skills-readme.md +236 -0
  56. package/project-skills/tdd-guard/.claude/settings.json +38 -0
  57. package/project-skills/tdd-guard/.claude/skills/using-tdd-guard/SKILL.md +74 -0
  58. package/project-skills/tdd-guard/CLAUDE.md +98 -0
  59. package/project-skills/tdd-guard/CONTRIBUTING.md +38 -0
  60. package/project-skills/tdd-guard/DEVELOPMENT.md +127 -0
  61. package/project-skills/tdd-guard/LICENSE +21 -0
  62. package/project-skills/tdd-guard/README.md +396 -0
  63. package/project-skills/tdd-guard/docs/adr/001-claude-session-subdirectory.md +52 -0
  64. package/project-skills/tdd-guard/docs/adr/002-secure-claude-binary-path.md +56 -0
  65. package/project-skills/tdd-guard/docs/adr/003-remove-configurable-data-directory.md +56 -0
  66. package/project-skills/tdd-guard/docs/adr/004-monorepo-architecture.md +64 -0
  67. package/project-skills/tdd-guard/docs/adr/005-claude-project-dir-support.md +55 -0
  68. package/project-skills/tdd-guard/docs/adr/006-phpunit-separate-repository.md +93 -0
  69. package/project-skills/tdd-guard/docs/adr/007-golangci-lint-path-support.md +83 -0
  70. package/project-skills/tdd-guard/docs/adr/008-storybook-reporter-design.md +182 -0
  71. package/project-skills/tdd-guard/docs/assets/tdd-guard-demo-screenshot.gif +0 -0
  72. package/project-skills/tdd-guard/docs/config-migration.md +143 -0
  73. package/project-skills/tdd-guard/docs/configuration.md +137 -0
  74. package/project-skills/tdd-guard/docs/custom-instructions.md +43 -0
  75. package/project-skills/tdd-guard/docs/enforcement.md +46 -0
  76. package/project-skills/tdd-guard/docs/ignore-patterns.md +81 -0
  77. package/project-skills/tdd-guard/docs/linting.md +109 -0
  78. package/project-skills/tdd-guard/docs/quick-commands.md +52 -0
  79. package/project-skills/tdd-guard/docs/session-management.md +75 -0
  80. package/project-skills/tdd-guard/docs/storybook-vitest-addon.md +120 -0
  81. package/project-skills/tdd-guard/docs/validation-model.md +63 -0
  82. package/project-skills/tdd-guard/eslint.config.mjs +140 -0
  83. package/project-skills/tdd-guard/package-lock.json +16937 -0
  84. package/project-skills/tdd-guard/package.json +102 -0
  85. package/project-skills/tdd-guard/reporters/go/README.md +67 -0
  86. package/project-skills/tdd-guard/reporters/go/cmd/tdd-guard-go/main.go +127 -0
  87. package/project-skills/tdd-guard/reporters/go/cmd/tdd-guard-go/main_test.go +280 -0
  88. package/project-skills/tdd-guard/reporters/go/go.mod +3 -0
  89. package/project-skills/tdd-guard/reporters/go/go.sum +0 -0
  90. package/project-skills/tdd-guard/reporters/go/internal/formatter/formatter.go +126 -0
  91. package/project-skills/tdd-guard/reporters/go/internal/formatter/formatter_test.go +264 -0
  92. package/project-skills/tdd-guard/reporters/go/internal/io/tee_reader.go +26 -0
  93. package/project-skills/tdd-guard/reporters/go/internal/io/tee_reader_test.go +37 -0
  94. package/project-skills/tdd-guard/reporters/go/internal/parser/mixed_reader.go +94 -0
  95. package/project-skills/tdd-guard/reporters/go/internal/parser/mixed_reader_test.go +198 -0
  96. package/project-skills/tdd-guard/reporters/go/internal/parser/parser.go +245 -0
  97. package/project-skills/tdd-guard/reporters/go/internal/parser/parser_test.go +547 -0
  98. package/project-skills/tdd-guard/reporters/go/internal/storage/storage.go +35 -0
  99. package/project-skills/tdd-guard/reporters/go/internal/storage/storage_test.go +113 -0
  100. package/project-skills/tdd-guard/reporters/go/internal/transformer/transformer.go +103 -0
  101. package/project-skills/tdd-guard/reporters/go/internal/transformer/transformer_test.go +303 -0
  102. package/project-skills/tdd-guard/reporters/jest/README.md +102 -0
  103. package/project-skills/tdd-guard/reporters/jest/package.json +38 -0
  104. package/project-skills/tdd-guard/reporters/phpunit/.php-cs-fixer.php +28 -0
  105. package/project-skills/tdd-guard/reporters/phpunit/README.md +97 -0
  106. package/project-skills/tdd-guard/reporters/phpunit/SYNC_README.md +29 -0
  107. package/project-skills/tdd-guard/reporters/phpunit/composer.json +55 -0
  108. package/project-skills/tdd-guard/reporters/phpunit/phpunit.xml.dist +19 -0
  109. package/project-skills/tdd-guard/reporters/phpunit/psalm.xml +44 -0
  110. package/project-skills/tdd-guard/reporters/phpunit/src/Event/ErroredTestSubscriber.php +28 -0
  111. package/project-skills/tdd-guard/reporters/phpunit/src/Event/FailedTestSubscriber.php +28 -0
  112. package/project-skills/tdd-guard/reporters/phpunit/src/Event/IncompleteTestSubscriber.php +28 -0
  113. package/project-skills/tdd-guard/reporters/phpunit/src/Event/PassedTestSubscriber.php +27 -0
  114. package/project-skills/tdd-guard/reporters/phpunit/src/Event/SkippedTestSubscriber.php +28 -0
  115. package/project-skills/tdd-guard/reporters/phpunit/src/Event/TestRunnerFinishedSubscriber.php +24 -0
  116. package/project-skills/tdd-guard/reporters/phpunit/src/PathValidator.php +88 -0
  117. package/project-skills/tdd-guard/reporters/phpunit/src/Storage.php +26 -0
  118. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardExtension.php +33 -0
  119. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardListener.php +158 -0
  120. package/project-skills/tdd-guard/reporters/phpunit/src/TddGuardSubscriber.php +35 -0
  121. package/project-skills/tdd-guard/reporters/phpunit/src/TestResultCollector.php +105 -0
  122. package/project-skills/tdd-guard/reporters/phpunit/tests/PathValidatorTest.php +74 -0
  123. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardExtensionFailedTest.php +241 -0
  124. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardExtensionTest.php +84 -0
  125. package/project-skills/tdd-guard/reporters/phpunit/tests/TddGuardStorageLocationTest.php +71 -0
  126. package/project-skills/tdd-guard/reporters/pytest/README.md +77 -0
  127. package/project-skills/tdd-guard/reporters/pytest/pyproject.toml +43 -0
  128. package/project-skills/tdd-guard/reporters/pytest/pytest.ini.example +7 -0
  129. package/project-skills/tdd-guard/reporters/pytest/tdd_guard_pytest/__init__.py +1 -0
  130. package/project-skills/tdd-guard/reporters/pytest/tdd_guard_pytest/pytest_reporter.py +134 -0
  131. package/project-skills/tdd-guard/reporters/pytest/tests/__init__.py +1 -0
  132. package/project-skills/tdd-guard/reporters/pytest/tests/conftest.py +3 -0
  133. package/project-skills/tdd-guard/reporters/pytest/tests/helpers.py +293 -0
  134. package/project-skills/tdd-guard/reporters/pytest/tests/test_config_option.py +38 -0
  135. package/project-skills/tdd-guard/reporters/pytest/tests/test_path_validation.py +59 -0
  136. package/project-skills/tdd-guard/reporters/pytest/tests/test_plugin_config.py +32 -0
  137. package/project-skills/tdd-guard/reporters/pytest/tests/test_project_root.py +296 -0
  138. package/project-skills/tdd-guard/reporters/pytest/tests/test_pytest_reporter.py +137 -0
  139. package/project-skills/tdd-guard/reporters/rspec/Gemfile +3 -0
  140. package/project-skills/tdd-guard/reporters/rust/Cargo.lock +458 -0
  141. package/project-skills/tdd-guard/reporters/rust/Cargo.toml +33 -0
  142. package/project-skills/tdd-guard/reporters/rust/Makefile.example +95 -0
  143. package/project-skills/tdd-guard/reporters/rust/README.md +88 -0
  144. package/project-skills/tdd-guard/reporters/rust/src/error_parser.rs +309 -0
  145. package/project-skills/tdd-guard/reporters/rust/src/main.rs +464 -0
  146. package/project-skills/tdd-guard/reporters/rust/src/parser.rs +225 -0
  147. package/project-skills/tdd-guard/reporters/rust/src/transformer.rs +409 -0
  148. package/project-skills/tdd-guard/reporters/storybook/README.md +108 -0
  149. package/project-skills/tdd-guard/reporters/storybook/package-lock.json +9482 -0
  150. package/project-skills/tdd-guard/reporters/storybook/package.json +43 -0
  151. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.test-data.ts +22 -0
  152. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.test.ts +190 -0
  153. package/project-skills/tdd-guard/reporters/storybook/src/StorybookReporter.ts +88 -0
  154. package/project-skills/tdd-guard/reporters/storybook/src/index.ts +12 -0
  155. package/project-skills/tdd-guard/reporters/storybook/src/types.ts +37 -0
  156. package/project-skills/tdd-guard/reporters/storybook/tsconfig.json +11 -0
  157. package/project-skills/tdd-guard/reporters/test/artifacts/go/failing/go.mod +3 -0
  158. package/project-skills/tdd-guard/reporters/test/artifacts/go/failing/single_failing_test.go +13 -0
  159. package/project-skills/tdd-guard/reporters/test/artifacts/go/import/go.mod +3 -0
  160. package/project-skills/tdd-guard/reporters/test/artifacts/go/import/single_import_error_test.go +17 -0
  161. package/project-skills/tdd-guard/reporters/test/artifacts/go/passing/go.mod +3 -0
  162. package/project-skills/tdd-guard/reporters/test/artifacts/go/passing/single_passing_test.go +13 -0
  163. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-failing.test.js +5 -0
  164. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-import-error.test.js +8 -0
  165. package/project-skills/tdd-guard/reporters/test/artifacts/jest/single-passing.test.js +5 -0
  166. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SingleFailingTest.php +11 -0
  167. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SingleImportErrorTest.php +14 -0
  168. package/project-skills/tdd-guard/reporters/test/artifacts/phpunit/SinglePassingTest.php +11 -0
  169. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_failing.py +3 -0
  170. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_import_error.py +6 -0
  171. package/project-skills/tdd-guard/reporters/test/artifacts/pytest/test_single_passing.py +3 -0
  172. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/Cargo.lock +7 -0
  173. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/Cargo.toml +4 -0
  174. package/project-skills/tdd-guard/reporters/test/artifacts/rust/failing/src/lib.rs +14 -0
  175. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/Cargo.lock +7 -0
  176. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/Cargo.toml +4 -0
  177. package/project-skills/tdd-guard/reporters/test/artifacts/rust/import/src/lib.rs +13 -0
  178. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/Cargo.lock +7 -0
  179. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/Cargo.toml +4 -0
  180. package/project-skills/tdd-guard/reporters/test/artifacts/rust/passing/src/lib.rs +14 -0
  181. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/Calculator.js +4 -0
  182. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-failing.stories.js +15 -0
  183. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-import-error.stories.js +14 -0
  184. package/project-skills/tdd-guard/reporters/test/artifacts/storybook/single-passing.stories.js +15 -0
  185. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-failing.test.js +7 -0
  186. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-import-error.test.js +9 -0
  187. package/project-skills/tdd-guard/reporters/test/artifacts/vitest/single-passing.test.js +7 -0
  188. package/project-skills/tdd-guard/reporters/test/factories/go.ts +59 -0
  189. package/project-skills/tdd-guard/reporters/test/factories/helpers.ts +48 -0
  190. package/project-skills/tdd-guard/reporters/test/factories/index.ts +7 -0
  191. package/project-skills/tdd-guard/reporters/test/factories/jest.ts +51 -0
  192. package/project-skills/tdd-guard/reporters/test/factories/phpunit.ts +63 -0
  193. package/project-skills/tdd-guard/reporters/test/factories/pytest.ts +41 -0
  194. package/project-skills/tdd-guard/reporters/test/factories/rust.ts +158 -0
  195. package/project-skills/tdd-guard/reporters/test/factories/storybook.ts +198 -0
  196. package/project-skills/tdd-guard/reporters/test/factories/vitest.ts +51 -0
  197. package/project-skills/tdd-guard/reporters/test/reporters.integration.test.ts +735 -0
  198. package/project-skills/tdd-guard/reporters/test/types.ts +28 -0
  199. package/project-skills/tdd-guard/reporters/vitest/README.md +64 -0
  200. package/project-skills/tdd-guard/reporters/vitest/package.json +35 -0
  201. package/project-skills/tdd-guard/src/cli/buildContext.test.ts +200 -0
  202. package/project-skills/tdd-guard/src/cli/buildContext.ts +48 -0
  203. package/project-skills/tdd-guard/src/cli/tdd-guard.test.ts +159 -0
  204. package/project-skills/tdd-guard/src/cli/tdd-guard.ts +48 -0
  205. package/project-skills/tdd-guard/src/config/Config.test.ts +538 -0
  206. package/project-skills/tdd-guard/src/config/Config.ts +172 -0
  207. package/project-skills/tdd-guard/src/contracts/schemas/guardSchemas.test.ts +58 -0
  208. package/project-skills/tdd-guard/src/contracts/schemas/guardSchemas.ts +8 -0
  209. package/project-skills/tdd-guard/src/contracts/schemas/lintSchemas.test.ts +347 -0
  210. package/project-skills/tdd-guard/src/contracts/schemas/lintSchemas.ts +61 -0
  211. package/project-skills/tdd-guard/src/contracts/schemas/pytestSchemas.test.ts +24 -0
  212. package/project-skills/tdd-guard/src/contracts/schemas/pytestSchemas.ts +7 -0
  213. package/project-skills/tdd-guard/src/contracts/schemas/reporterSchemas.test.ts +377 -0
  214. package/project-skills/tdd-guard/src/contracts/schemas/reporterSchemas.ts +75 -0
  215. package/project-skills/tdd-guard/src/contracts/schemas/toolSchemas.test.ts +563 -0
  216. package/project-skills/tdd-guard/src/contracts/schemas/toolSchemas.ts +140 -0
  217. package/project-skills/tdd-guard/src/contracts/types/ClientType.ts +1 -0
  218. package/project-skills/tdd-guard/src/contracts/types/ConfigOptions.ts +12 -0
  219. package/project-skills/tdd-guard/src/contracts/types/Context.ts +16 -0
  220. package/project-skills/tdd-guard/src/contracts/types/ModelClient.ts +3 -0
  221. package/project-skills/tdd-guard/src/contracts/types/ValidationResult.ts +6 -0
  222. package/project-skills/tdd-guard/src/guard/GuardManager.test.ts +336 -0
  223. package/project-skills/tdd-guard/src/guard/GuardManager.ts +83 -0
  224. package/project-skills/tdd-guard/src/hooks/HookEvents.test.ts +107 -0
  225. package/project-skills/tdd-guard/src/hooks/HookEvents.ts +39 -0
  226. package/project-skills/tdd-guard/src/hooks/fileTypeDetection.ts +16 -0
  227. package/project-skills/tdd-guard/src/hooks/postToolLint.test.ts +327 -0
  228. package/project-skills/tdd-guard/src/hooks/postToolLint.ts +165 -0
  229. package/project-skills/tdd-guard/src/hooks/processHookData.test.ts +465 -0
  230. package/project-skills/tdd-guard/src/hooks/processHookData.ts +203 -0
  231. package/project-skills/tdd-guard/src/hooks/sessionHandler.test.ts +136 -0
  232. package/project-skills/tdd-guard/src/hooks/sessionHandler.ts +31 -0
  233. package/project-skills/tdd-guard/src/hooks/userPromptHandler.test.ts +131 -0
  234. package/project-skills/tdd-guard/src/hooks/userPromptHandler.ts +55 -0
  235. package/project-skills/tdd-guard/src/index.ts +19 -0
  236. package/project-skills/tdd-guard/src/linters/Linter.ts +5 -0
  237. package/project-skills/tdd-guard/src/linters/eslint/ESLint.test.ts +183 -0
  238. package/project-skills/tdd-guard/src/linters/eslint/ESLint.ts +82 -0
  239. package/project-skills/tdd-guard/src/linters/golangci/GolangciLint.test.ts +170 -0
  240. package/project-skills/tdd-guard/src/linters/golangci/GolangciLint.ts +148 -0
  241. package/project-skills/tdd-guard/src/processors/index.ts +1 -0
  242. package/project-skills/tdd-guard/src/processors/lintProcessor.ts +77 -0
  243. package/project-skills/tdd-guard/src/processors/testResults/TestResultsProcessor.test.ts +303 -0
  244. package/project-skills/tdd-guard/src/processors/testResults/TestResultsProcessor.ts +255 -0
  245. package/project-skills/tdd-guard/src/providers/LinterProvider.test.ts +43 -0
  246. package/project-skills/tdd-guard/src/providers/LinterProvider.ts +20 -0
  247. package/project-skills/tdd-guard/src/providers/ModelClientProvider.test.ts +68 -0
  248. package/project-skills/tdd-guard/src/providers/ModelClientProvider.ts +22 -0
  249. package/project-skills/tdd-guard/src/storage/FileStorage.test.ts +76 -0
  250. package/project-skills/tdd-guard/src/storage/FileStorage.ts +108 -0
  251. package/project-skills/tdd-guard/src/storage/MemoryStorage.ts +57 -0
  252. package/project-skills/tdd-guard/src/storage/Storage.test.ts +227 -0
  253. package/project-skills/tdd-guard/src/storage/Storage.ts +17 -0
  254. package/project-skills/tdd-guard/src/validation/context/context.test.ts +364 -0
  255. package/project-skills/tdd-guard/src/validation/context/context.ts +155 -0
  256. package/project-skills/tdd-guard/src/validation/models/AnthropicApi.test.ts +171 -0
  257. package/project-skills/tdd-guard/src/validation/models/AnthropicApi.ts +49 -0
  258. package/project-skills/tdd-guard/src/validation/models/ClaudeAgentSdk.test.ts +167 -0
  259. package/project-skills/tdd-guard/src/validation/models/ClaudeAgentSdk.ts +54 -0
  260. package/project-skills/tdd-guard/src/validation/models/ClaudeCli.test.ts +239 -0
  261. package/project-skills/tdd-guard/src/validation/models/ClaudeCli.ts +57 -0
  262. package/project-skills/tdd-guard/src/validation/prompts/file-types.ts +52 -0
  263. package/project-skills/tdd-guard/src/validation/prompts/operations/edit.ts +58 -0
  264. package/project-skills/tdd-guard/src/validation/prompts/operations/multi-edit.ts +54 -0
  265. package/project-skills/tdd-guard/src/validation/prompts/operations/write.ts +54 -0
  266. package/project-skills/tdd-guard/src/validation/prompts/response.ts +40 -0
  267. package/project-skills/tdd-guard/src/validation/prompts/rules.ts +51 -0
  268. package/project-skills/tdd-guard/src/validation/prompts/system-prompt.ts +10 -0
  269. package/project-skills/tdd-guard/src/validation/prompts/tools/lint-results.ts +15 -0
  270. package/project-skills/tdd-guard/src/validation/prompts/tools/test-output.ts +14 -0
  271. package/project-skills/tdd-guard/src/validation/prompts/tools/todos.ts +9 -0
  272. package/project-skills/tdd-guard/src/validation/validator.test.ts +268 -0
  273. package/project-skills/tdd-guard/src/validation/validator.ts +159 -0
  274. package/project-skills/tdd-guard/test/artifacts/go/.golangci.yml +6 -0
  275. package/project-skills/tdd-guard/test/artifacts/go/with-issues/file-with-issues.go +12 -0
  276. package/project-skills/tdd-guard/test/artifacts/go/with-issues/go.mod +3 -0
  277. package/project-skills/tdd-guard/test/artifacts/go/without-issues/file-without-issues.go +7 -0
  278. package/project-skills/tdd-guard/test/artifacts/go/without-issues/go.mod +3 -0
  279. package/project-skills/tdd-guard/test/artifacts/javascript/eslint.config.js +20 -0
  280. package/project-skills/tdd-guard/test/artifacts/javascript/file-with-issues.js +12 -0
  281. package/project-skills/tdd-guard/test/artifacts/javascript/file-without-issues.js +10 -0
  282. package/project-skills/tdd-guard/test/hooks/fileTypeDetection.test.ts +26 -0
  283. package/project-skills/tdd-guard/test/hooks/processHookData.fileType.test.ts +46 -0
  284. package/project-skills/tdd-guard/test/hooks/processHookData.python.test.ts +68 -0
  285. package/project-skills/tdd-guard/test/integration/test-context.test.ts +66 -0
  286. package/project-skills/tdd-guard/test/integration/validator.core.test.ts +96 -0
  287. package/project-skills/tdd-guard/test/integration/validator.scenarios.test.ts +497 -0
  288. package/project-skills/tdd-guard/test/utils/assertions.ts +29 -0
  289. package/project-skills/tdd-guard/test/utils/factories/contextFactory.ts +30 -0
  290. package/project-skills/tdd-guard/test/utils/factories/editFactory.ts +82 -0
  291. package/project-skills/tdd-guard/test/utils/factories/helpers.test.ts +46 -0
  292. package/project-skills/tdd-guard/test/utils/factories/helpers.ts +46 -0
  293. package/project-skills/tdd-guard/test/utils/factories/lintFactory.ts +352 -0
  294. package/project-skills/tdd-guard/test/utils/factories/modelClientProviderFactory.ts +21 -0
  295. package/project-skills/tdd-guard/test/utils/factories/multiEditFactory.ts +79 -0
  296. package/project-skills/tdd-guard/test/utils/factories/operations.ts +57 -0
  297. package/project-skills/tdd-guard/test/utils/factories/reporterFactory.ts +55 -0
  298. package/project-skills/tdd-guard/test/utils/factories/scenarios/index.ts +22 -0
  299. package/project-skills/tdd-guard/test/utils/factories/scenarios/languages/python.ts +745 -0
  300. package/project-skills/tdd-guard/test/utils/factories/scenarios/languages/typescript.ts +767 -0
  301. package/project-skills/tdd-guard/test/utils/factories/scenarios/types.ts +77 -0
  302. package/project-skills/tdd-guard/test/utils/factories/scenarios/utils.ts +15 -0
  303. package/project-skills/tdd-guard/test/utils/factories/sessionStartFactory.ts +36 -0
  304. package/project-skills/tdd-guard/test/utils/factories/testDefaults.ts +90 -0
  305. package/project-skills/tdd-guard/test/utils/factories/testResultsFactory.ts +234 -0
  306. package/project-skills/tdd-guard/test/utils/factories/todoFactory.ts +99 -0
  307. package/project-skills/tdd-guard/test/utils/factories/userPromptSubmitFactory.ts +39 -0
  308. package/project-skills/tdd-guard/test/utils/factories/writeFactory.ts +70 -0
  309. package/project-skills/tdd-guard/test/utils/index.ts +131 -0
  310. package/project-skills/tdd-guard/tsconfig.build.json +16 -0
  311. package/project-skills/tdd-guard/tsconfig.eslint.json +17 -0
  312. package/project-skills/tdd-guard/tsconfig.json +32 -0
  313. package/project-skills/tdd-guard/tsconfig.node.json +10 -0
  314. package/project-skills/tdd-guard/vitest.config.ts +85 -0
  315. package/project-skills/ts-quality-gate/.claude/hooks/hook-config.json +66 -0
  316. package/project-skills/ts-quality-gate/.claude/hooks/quality-check.cjs +1251 -0
  317. package/project-skills/ts-quality-gate/.claude/settings.json +16 -0
  318. package/project-skills/ts-quality-gate/.claude/skills/using-ts-quality-gate/SKILL.md +81 -0
  319. package/project-skills/ts-quality-gate/README.md +115 -0
  320. package/skills/README.txt +31 -0
  321. package/skills/clean-code/SKILL.md +201 -0
  322. package/skills/delegating/SKILL.md +196 -0
  323. package/skills/delegating/config.yaml +210 -0
  324. package/skills/delegating/references/orchestration-protocols.md +41 -0
  325. package/skills/docker-expert/SKILL.md +409 -0
  326. package/skills/documenting/CHANGELOG.md +23 -0
  327. package/skills/documenting/README.md +148 -0
  328. package/skills/documenting/SKILL.md +113 -0
  329. package/skills/documenting/examples/example_pattern.md +70 -0
  330. package/skills/documenting/examples/example_reference.md +70 -0
  331. package/skills/documenting/examples/example_ssot_analytics.md +64 -0
  332. package/skills/documenting/examples/example_workflow.md +141 -0
  333. package/skills/documenting/references/changelog-format.md +97 -0
  334. package/skills/documenting/references/metadata-schema.md +136 -0
  335. package/skills/documenting/references/taxonomy.md +81 -0
  336. package/skills/documenting/references/versioning-rules.md +78 -0
  337. package/skills/documenting/scripts/__pycache__/drift_detector.cpython-314.pyc +0 -0
  338. package/skills/documenting/scripts/__pycache__/orchestrator.cpython-314.pyc +0 -0
  339. package/skills/documenting/scripts/__pycache__/validate_metadata.cpython-314.pyc +0 -0
  340. package/skills/documenting/scripts/bump_version.sh +60 -0
  341. package/skills/documenting/scripts/changelog/__init__.py +0 -0
  342. package/skills/documenting/scripts/changelog/__pycache__/__init__.cpython-314.pyc +0 -0
  343. package/skills/documenting/scripts/changelog/__pycache__/add_entry.cpython-314.pyc +0 -0
  344. package/skills/documenting/scripts/changelog/__pycache__/bump_release.cpython-314.pyc +0 -0
  345. package/skills/documenting/scripts/changelog/__pycache__/validate_changelog.cpython-314.pyc +0 -0
  346. package/skills/documenting/scripts/changelog/add_entry.py +216 -0
  347. package/skills/documenting/scripts/changelog/bump_release.py +117 -0
  348. package/skills/documenting/scripts/changelog/init_changelog.py +54 -0
  349. package/skills/documenting/scripts/changelog/validate_changelog.py +128 -0
  350. package/skills/documenting/scripts/drift_detector.py +266 -0
  351. package/skills/documenting/scripts/generate_template.py +311 -0
  352. package/skills/documenting/scripts/list_by_category.sh +84 -0
  353. package/skills/documenting/scripts/orchestrator.py +255 -0
  354. package/skills/documenting/scripts/validate_metadata.py +242 -0
  355. package/skills/documenting/templates/CHANGELOG.md.template +13 -0
  356. package/skills/documenting/tests/__pycache__/test_changelog.cpython-314-pytest-9.0.2.pyc +0 -0
  357. package/skills/documenting/tests/__pycache__/test_drift_detector.cpython-314-pytest-9.0.2.pyc +0 -0
  358. package/skills/documenting/tests/__pycache__/test_orchestrator.cpython-314-pytest-9.0.2.pyc +0 -0
  359. package/skills/documenting/tests/__pycache__/test_validate_metadata.cpython-314-pytest-9.0.2.pyc +0 -0
  360. package/skills/documenting/tests/integration_test.sh +70 -0
  361. package/skills/documenting/tests/test_changelog.py +201 -0
  362. package/skills/documenting/tests/test_drift_detector.py +80 -0
  363. package/skills/documenting/tests/test_orchestrator.py +52 -0
  364. package/skills/documenting/tests/test_validate_metadata.py +64 -0
  365. package/skills/find-skills/SKILL.md +133 -0
  366. package/skills/gitnexus-debugging/SKILL.md +85 -0
  367. package/skills/gitnexus-exploring/SKILL.md +75 -0
  368. package/skills/gitnexus-impact-analysis/SKILL.md +94 -0
  369. package/skills/gitnexus-refactoring/SKILL.md +113 -0
  370. package/skills/hook-development/SKILL.md +797 -0
  371. package/skills/hook-development/examples/load-context.sh +55 -0
  372. package/skills/hook-development/examples/quality-check.js +1168 -0
  373. package/skills/hook-development/examples/validate-bash.sh +43 -0
  374. package/skills/hook-development/examples/validate-write.sh +38 -0
  375. package/skills/hook-development/references/advanced.md +527 -0
  376. package/skills/hook-development/references/migration.md +369 -0
  377. package/skills/hook-development/references/patterns.md +412 -0
  378. package/skills/hook-development/scripts/README.md +164 -0
  379. package/skills/hook-development/scripts/hook-linter.sh +153 -0
  380. package/skills/hook-development/scripts/test-hook.sh +252 -0
  381. package/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
  382. package/skills/obsidian-cli/SKILL.md +106 -0
  383. package/skills/orchestrating-agents/SKILL.md +135 -0
  384. package/skills/orchestrating-agents/config.yaml +45 -0
  385. package/skills/orchestrating-agents/references/agent-context-integration.md +37 -0
  386. package/skills/orchestrating-agents/references/examples.md +45 -0
  387. package/skills/orchestrating-agents/references/handover-protocol.md +31 -0
  388. package/skills/orchestrating-agents/references/workflows.md +42 -0
  389. package/skills/orchestrating-agents/scripts/detect_neighbors.py +23 -0
  390. package/skills/prompt-improving/README.md +162 -0
  391. package/skills/prompt-improving/SKILL.md +74 -0
  392. package/skills/prompt-improving/references/analysis_commands.md +24 -0
  393. package/skills/prompt-improving/references/chain_of_thought.md +24 -0
  394. package/skills/prompt-improving/references/mcp_definitions.md +20 -0
  395. package/skills/prompt-improving/references/multishot.md +23 -0
  396. package/skills/prompt-improving/references/xml_core.md +60 -0
  397. package/skills/python-testing/SKILL.md +815 -0
  398. package/skills/senior-backend/SKILL.md +209 -0
  399. package/skills/senior-backend/references/api_design_patterns.md +103 -0
  400. package/skills/senior-backend/references/backend_security_practices.md +103 -0
  401. package/skills/senior-backend/references/database_optimization_guide.md +103 -0
  402. package/skills/senior-backend/scripts/api_load_tester.py +114 -0
  403. package/skills/senior-backend/scripts/api_scaffolder.py +114 -0
  404. package/skills/senior-backend/scripts/database_migration_tool.py +114 -0
  405. package/skills/senior-data-scientist/SKILL.md +226 -0
  406. package/skills/senior-data-scientist/references/experiment_design_frameworks.md +80 -0
  407. package/skills/senior-data-scientist/references/feature_engineering_patterns.md +80 -0
  408. package/skills/senior-data-scientist/references/statistical_methods_advanced.md +80 -0
  409. package/skills/senior-data-scientist/scripts/experiment_designer.py +100 -0
  410. package/skills/senior-data-scientist/scripts/feature_engineering_pipeline.py +100 -0
  411. package/skills/senior-data-scientist/scripts/model_evaluation_suite.py +100 -0
  412. package/skills/senior-devops/SKILL.md +209 -0
  413. package/skills/senior-devops/references/cicd_pipeline_guide.md +103 -0
  414. package/skills/senior-devops/references/deployment_strategies.md +103 -0
  415. package/skills/senior-devops/references/infrastructure_as_code.md +103 -0
  416. package/skills/senior-devops/scripts/deployment_manager.py +114 -0
  417. package/skills/senior-devops/scripts/pipeline_generator.py +114 -0
  418. package/skills/senior-devops/scripts/terraform_scaffolder.py +114 -0
  419. package/skills/senior-security/SKILL.md +209 -0
  420. package/skills/senior-security/references/cryptography_implementation.md +103 -0
  421. package/skills/senior-security/references/penetration_testing_guide.md +103 -0
  422. package/skills/senior-security/references/security_architecture_patterns.md +103 -0
  423. package/skills/senior-security/scripts/pentest_automator.py +114 -0
  424. package/skills/senior-security/scripts/security_auditor.py +114 -0
  425. package/skills/senior-security/scripts/threat_modeler.py +114 -0
  426. package/skills/skill-creator/LICENSE.txt +202 -0
  427. package/skills/skill-creator/SKILL.md +479 -0
  428. package/skills/skill-creator/agents/analyzer.md +274 -0
  429. package/skills/skill-creator/agents/comparator.md +202 -0
  430. package/skills/skill-creator/agents/grader.md +223 -0
  431. package/skills/skill-creator/assets/eval_review.html +146 -0
  432. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  433. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  434. package/skills/skill-creator/references/schemas.md +430 -0
  435. package/skills/skill-creator/scripts/__init__.py +0 -0
  436. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  437. package/skills/skill-creator/scripts/generate_report.py +326 -0
  438. package/skills/skill-creator/scripts/improve_description.py +248 -0
  439. package/skills/skill-creator/scripts/package_skill.py +136 -0
  440. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  441. package/skills/skill-creator/scripts/run_eval.py +310 -0
  442. package/skills/skill-creator/scripts/run_loop.py +332 -0
  443. package/skills/skill-creator/scripts/utils.py +47 -0
  444. package/skills/using-TDD/SKILL.md +410 -0
  445. package/skills/using-serena-lsp/README.md +8 -0
  446. package/skills/using-serena-lsp/REFERENCE.md +194 -0
  447. package/skills/using-serena-lsp/SKILL.md +82 -0
@@ -0,0 +1,136 @@
1
+ # SSOT Metadata Schema
2
+
3
+ This reference defines the required and optional YAML frontmatter fields for Serena memories.
4
+
5
+ ## Schema Overview
6
+
7
+ Every markdown file in the memories directory **MUST** start with a YAML frontmatter block enclosed in `---`.
8
+
9
+ ```yaml
10
+ ---
11
+ title: Human Readable Title
12
+ version: 1.0.0
13
+ updated: 2026-01-20T10:00:00Z
14
+ scope: identifier-slug
15
+ category: ssot
16
+ subcategory: component
17
+ domain: [tag1, tag2]
18
+ ---
19
+ ```
20
+
21
+ ## Field Definitions
22
+
23
+ ### Required Fields (All Categories)
24
+
25
+ | Field | Type | Description | Example |
26
+ |-------|------|-------------|---------|
27
+ | `title` | string | Clear, descriptive title of the document | "Analytics Volatility SSOT" |
28
+ | `scope` | string | Unique slug identifying the document's scope | "analytics-volatility" |
29
+ | `category` | enum | One of the standard categories | "ssot" |
30
+
31
+ ### Category-Specific Requirements
32
+
33
+ #### SSOT (`ssot_`)
34
+ | Field | Type | Requirement | Description |
35
+ |-------|------|-------------|-------------|
36
+ | `version` | semver | **Required** | Semantic version (x.y.z) |
37
+ | `updated` | timestamp | **Required** | ISO8601 timestamp of last update |
38
+ | `subcategory` | string | **Required** | Specific component name |
39
+ | `domain` | array | **Required** | List of relevant domain tags |
40
+ | `changelog` | array | **Required** | List of version history entries |
41
+ | `tracks` | array | Optional | Glob patterns (fnmatch) for files this memory documents. Used by drift_detector.py to detect documentation drift. |
42
+
43
+ #### Pattern (`pattern_`)
44
+ | Field | Type | Requirement | Description |
45
+ |-------|------|-------------|-------------|
46
+ | `version` | semver | **Required** | Pattern version |
47
+ | `updated` | timestamp | **Required** | ISO8601 timestamp |
48
+ | `domain` | array | **Required** | Tags for applicability |
49
+ | `tracks` | array | Optional | Glob patterns for files this memory documents. Used by drift_detector.py. |
50
+
51
+ #### Plan (`plan_`)
52
+ | Field | Type | Requirement | Description |
53
+ |-------|------|-------------|-------------|
54
+ | `status` | enum | **Required** | draft, in-progress, completed, abandoned |
55
+ | `plan_ref` | string | Optional | ID of related ticket/issue |
56
+ | `tracks` | array | Optional | Glob patterns for files this memory documents. Used by drift_detector.py. |
57
+
58
+ #### Reference (`reference_`)
59
+
60
+ No required category-specific fields beyond the common required fields. The `tracks` field is also available as an optional field (glob patterns for files this memory documents, used by drift_detector.py).
61
+
62
+ #### Archive (`archive_`)
63
+ | Field | Type | Requirement | Description |
64
+ |-------|------|-------------|-------------|
65
+ | `archived_date` | date | **Required** | When it was archived (YYYY-MM-DD) |
66
+ | `replacement` | string | Optional | Link to replacement SSOT |
67
+
68
+ ## Valid Values
69
+
70
+ ### Categories
71
+ - `ssot`
72
+ - `pattern`
73
+ - `plan`
74
+ - `reference`
75
+ - `archive`
76
+ - `troubleshoot`
77
+
78
+ ### Status (for Plans)
79
+ - `draft`
80
+ - `review`
81
+ - `approved`
82
+ - `in-progress`
83
+ - `completed`
84
+ - `on-hold`
85
+ - `cancelled`
86
+
87
+ ## Example Frontmatter
88
+
89
+ ### Complete SSOT Example
90
+ ```yaml
91
+ ---
92
+ title: Volatility Surface Analytics SSOT
93
+ version: 2.1.0
94
+ updated: 2026-01-14T15:30:00+00:00
95
+ scope: analytics-volatility
96
+ category: ssot
97
+ subcategory: volatility
98
+ domain: [analytics, math, options]
99
+ applicability: core-pricing-engine
100
+ tracks:
101
+ - "src/analytics/**/*.py"
102
+ - "src/analytics/config.yaml"
103
+ changelog:
104
+ - 2.1.0 (2026-01-14): Added SABR model details.
105
+ - 2.0.0 (2025-12-20): Major refactor of surface construction.
106
+ - 1.0.0 (2025-11-01): Initial baseline.
107
+ ---
108
+ ```
109
+
110
+ ### Plan Example
111
+ ```yaml
112
+ ---
113
+ title: Migration to FastAPI
114
+ version: 0.5.0
115
+ updated: 2025-12-28T10:00:00Z
116
+ scope: infra-api-migration
117
+ category: plan
118
+ subcategory: api
119
+ status: in-progress
120
+ domain: [infra, backend]
121
+ ---
122
+ ```
123
+
124
+ ### Archive Example
125
+ ```yaml
126
+ ---
127
+ title: Legacy Flask API Documentation
128
+ version: 1.2.0
129
+ updated: 2025-10-15T00:00:00Z
130
+ scope: legacy-api
131
+ category: archive
132
+ subcategory: api
133
+ archived_date: 2025-12-28
134
+ replacement: ssot_infra_api_architecture_2025-12-28.md
135
+ ---
136
+ ```
@@ -0,0 +1,81 @@
1
+ # SSOT Taxonomy & Naming Conventions
2
+
3
+ This reference defines the standard naming conventions and categorization hierarchy for Serena memories and SSOT documentation.
4
+
5
+ ## Naming Convention
6
+ All memory files must follow the pattern:
7
+ `[subject]_[category].md`
8
+
9
+ ### Components
10
+
11
+ - --subject--: The primary system, component, or area (e.g., `analytics_volatility`, `infra_docker_ops`
12
+ sion).
13
+ - --category--: The type of document (see Category Suffixes below)
14
+
15
+ ### Category Suffixes
16
+
17
+ | Category | Suffix | Purpose | Example |
18
+ |-----------|----------|------------------------------------|-------------------------------|
19
+ | **SSOT** | `_ssot` | Single Source of Truth for a component/system | `analytics_stir_ssot.md` |
20
+ | **Pattern** | `_pattern` | Reusable design pattern or standard | `refactoring_security_pattern.md` |
21
+ | **Plan** | `_plan` | Implementation plan or roadmap | `implementation_curve_feed_plan.md` |
22
+ | **Reference** | `_reference` | Look-up tables, cheat sheets, API docs | `database_query_patterns_reference.md` |
23
+ | **Troubleshoot** | `_troubleshoot` | Guide for resolving specific issues | `docker_port_config_troubleshoot.md` |
24
+ | **Archive** | `_archive` | Deprecated documentation (kept for history) | `meta_project_overview_archive.md` |
25
+
26
+
27
+ ## Subject Hierarchy (Domains)
28
+
29
+ Use these standard domains as prefixes for the **subject** part to group documentation:
30
+
31
+ ### Analytics (`analytics_*`)
32
+ - [volatility]: Volatility surface and modeling
33
+ - [curve]: Yield curve construction
34
+ - [stir]: Short Term Interest Rates
35
+ - [reporting]: End-of-day and ad-hoc reporting
36
+ - [correlation]: Asset correlation matrices
37
+ - [amt]: Automated Market Trading components
38
+ - [path]: Path-dependent option pricing
39
+ - [snapshot_feed]: Real-time data snapshots
40
+
41
+ ### Data (`data_*`)
42
+ - [config]: Instrument and system configuration
43
+ - [ingestion_reliability]: Data pipeline health and monitoring
44
+ - [ingestion_sr3]: SR3 specjfic ingestion
45
+ - [ingestion_tick]: Tick data capture
46
+
47
+
48
+ ### Infrastructure (`infra_*`)
49
+ - [docker_ops]: Container orchestration and operations
50
+ - [security_migrations]: Security updates and user migration
51
+ - [mcp_server]: Model Context Protocol server configuration
52
+ - [api_architecture]: FastAPI/Backend architecture
53
+
54
+
55
+ ### Meta (`meta_*`)
56
+ - [update_guidelines]: Documentation standards (this document)
57
+ - [project_overview]: High-level project goals and status
58
+ - [project_structure]: Codebase organization
59
+
60
+
61
+ ### Testing (`testing_*`)
62
+ - [qa]: Quality Assurance processes
63
+ - [integration]: Integration test patterns
64
+
65
+ ## Tagging Strategy
66
+ Use the `domain` frontmatter field (array) for cross-cutting concerns.
67
+
68
+ **Common Tags:**
69
+ - `fastapi`
70
+ - `docker`
71
+ - `security`
72
+ - `performance`
73
+ - `database`J
74
+ - `refactoring`
75
+ - `deprecation`
76
+
77
+ ## Directory Structure
78
+
79
+ While all memories currently reside in a flat structure in `.serena/memories/`, the naming convention allows for virtual folder organization.
80
+
81
+ Future agents may implement physical subdirectories if the flat list exceeds manageable limits (e.g., >200 active SSOTs).
@@ -0,0 +1,78 @@
1
+ # Versioning Rules for SSOT
2
+
3
+ This reference defines the semantic versioning rules for maintaining Serena memories.
4
+
5
+ ## Core Principle
6
+
7
+ Treat documentation versioning with the same rigor as software versioning. This allows agents to determine if their context is outdated and understand the magnitude of changes.
8
+
9
+ ## Version Format
10
+
11
+ Use Semantic Versioning 2.0.0: `MAJOR.MINOR.PATCH`
12
+
13
+ ### Format: `x.y.z`
14
+
15
+ - **x (Major)**: Breaking changes / Rewrite
16
+ - **y (Minor)**: New features / Significant additions
17
+ - **z (Patch)**: Corrections / Clarifications / Minor updates
18
+
19
+ ## Bumping Rules
20
+
21
+ ### Patch (x.y.Z) -> (x.y.Z+1)
22
+ Increment the patch version for:
23
+ - Typos and grammar fixes
24
+ - Clarifications of existing content
25
+ - Adding examples
26
+ - Updating links or references
27
+ - Minor formatting changes
28
+ - Metadata updates (e.g., adding a tag)
29
+
30
+ ### Minor (x.Y.0) -> (x.Y+1.0)
31
+ Increment the minor version for:
32
+ - Adding a new section or component description
33
+ - Extending the scope of the document
34
+ - Documenting new features added to the system
35
+ - Significant rewrites of specific sections that don't change the overall architecture
36
+ - Adding a new known limitation or workaround
37
+
38
+ ### Major (X.0.0) -> (X+1.0.0)
39
+ Increment the major version for:
40
+ - Complete rewrite of the document
41
+ - Major architectural changes to the system described
42
+ - Fundamental change in the document's purpose or scope
43
+ - Marking large sections as deprecated/removed
44
+ - Changing the "Single Source of Truth" authority (e.g., merging two SSOTs)
45
+
46
+ ## Changelog Maintenance
47
+
48
+ Every SSOT document must have a `changelog` list in the frontmatter.
49
+
50
+ ### Format
51
+ ```yaml
52
+ changelog:
53
+ - VERSION (DATE): SUMMARY
54
+ ```
55
+
56
+ ### Guidelines
57
+ - **Reverse Chronological Order**: Newest entries first.
58
+ - **Concise**: Keep summaries under 140 characters if possible.
59
+ - **Date Format**: YYYY-MM-DD.
60
+
61
+ ### Example
62
+ ```yaml
63
+ changelog:
64
+ - 1.2.0 (2026-01-20): Added section on Redis caching strategy.
65
+ - 1.1.1 (2026-01-15): Fixed typos in configuration examples.
66
+ - 1.1.0 (2026-01-10): Documented new async processing pipeline.
67
+ - 1.0.0 (2026-01-01): Initial release.
68
+ ```
69
+
70
+ ## Workflow for Updating
71
+
72
+ 1. **Assess Change**: Determine if it's Patch, Minor, or Major.
73
+ 2. **Update Content**: Make the changes in the markdown body.
74
+ 3. **Update Frontmatter**:
75
+ - Update `version` field.
76
+ - Update `updated` timestamp (ISO8601).
77
+ - Add entry to top of `changelog`.
78
+ 4. **Commit**: Save the file.
@@ -0,0 +1,60 @@
1
+ #!/bin/bash
2
+ # Semantic version bumping utility for SSOT memories
3
+ #
4
+ # Usage: bump_version.sh <current_version> <bump_type>
5
+ # bump_type: major | minor | patch
6
+ #
7
+ # Examples:
8
+ # bump_version.sh 1.2.3 patch -> 1.2.4
9
+ # bump_version.sh 1.2.3 minor -> 1.3.0
10
+ # bump_version.sh 1.2.3 major -> 2.0.0
11
+
12
+ set -e
13
+
14
+ if [ $# -ne 2 ]; then
15
+ echo "Usage: $0 <current_version> <bump_type>"
16
+ echo "bump_type: major | minor | patch"
17
+ echo ""
18
+ echo "Examples:"
19
+ echo " $0 1.2.3 patch -> 1.2.4"
20
+ echo " $0 1.2.3 minor -> 1.3.0"
21
+ echo " $0 1.2.3 major -> 2.0.0"
22
+ exit 1
23
+ fi
24
+
25
+ CURRENT_VERSION=$1
26
+ BUMP_TYPE=$2
27
+
28
+ # Validate version format
29
+ if ! echo "$CURRENT_VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
30
+ echo "ERROR: Invalid version format: $CURRENT_VERSION"
31
+ echo "Expected format: x.y.z (e.g., 1.2.3)"
32
+ exit 1
33
+ fi
34
+
35
+ # Parse version components
36
+ IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
37
+
38
+ # Bump version based on type
39
+ case "$BUMP_TYPE" in
40
+ major)
41
+ MAJOR=$((MAJOR + 1))
42
+ MINOR=0
43
+ PATCH=0
44
+ ;;
45
+ minor)
46
+ MINOR=$((MINOR + 1))
47
+ PATCH=0
48
+ ;;
49
+ patch)
50
+ PATCH=$((PATCH + 1))
51
+ ;;
52
+ *)
53
+ echo "ERROR: Invalid bump type: $BUMP_TYPE"
54
+ echo "Must be one of: major, minor, patch"
55
+ exit 1
56
+ ;;
57
+ esac
58
+
59
+ NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
60
+ echo "$NEW_VERSION"
@@ -0,0 +1,216 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Add entry to CHANGELOG.md [Unreleased] section.
4
+
5
+ Automatically:
6
+ - Places entry in correct category
7
+ - Creates category if missing
8
+ - Maintains category ordering per Keep a Changelog
9
+ - Preserves existing entries
10
+ """
11
+
12
+ import re
13
+ import sys
14
+ from enum import Enum
15
+ from pathlib import Path
16
+ from typing import Optional
17
+
18
+
19
+ class ChangeCategory(Enum):
20
+ """Keep a Changelog categories in proper order."""
21
+ ADDED = "Added"
22
+ CHANGED = "Changed"
23
+ DEPRECATED = "Deprecated"
24
+ REMOVED = "Removed"
25
+ FIXED = "Fixed"
26
+ SECURITY = "Security"
27
+
28
+
29
+ CATEGORY_ORDER = [cat.value for cat in ChangeCategory]
30
+
31
+
32
+ def add_entry(changelog_content: str, category: ChangeCategory, description: str) -> str:
33
+ """
34
+ Add entry to [Unreleased] section under specified category.
35
+
36
+ Args:
37
+ changelog_content: Full CHANGELOG.md content
38
+ category: ChangeCategory enum value
39
+ description: Entry text (without leading "- ")
40
+
41
+ Returns:
42
+ Updated changelog content
43
+ """
44
+ lines = changelog_content.splitlines()
45
+
46
+ # Find [Unreleased] section
47
+ unreleased_idx = None
48
+ for i, line in enumerate(lines):
49
+ if re.match(r"^## \[Unreleased\]", line):
50
+ unreleased_idx = i
51
+ break
52
+
53
+ if unreleased_idx is None:
54
+ raise ValueError("CHANGELOG missing [Unreleased] section")
55
+
56
+ # Find next version section (end of Unreleased)
57
+ next_version_idx = len(lines)
58
+ for i in range(unreleased_idx + 1, len(lines)):
59
+ if re.match(r"^## \[.+\]", lines[i]):
60
+ next_version_idx = i
61
+ break
62
+
63
+ # Find or create category section
64
+ category_name = category.value
65
+ category_idx = None
66
+
67
+ for i in range(unreleased_idx + 1, next_version_idx):
68
+ if lines[i].strip() == f"### {category_name}":
69
+ category_idx = i
70
+ break
71
+
72
+ if category_idx is None:
73
+ # Category doesn't exist, create it in proper order
74
+ category_idx = _insert_category_in_order(
75
+ lines,
76
+ unreleased_idx,
77
+ next_version_idx,
78
+ category_name
79
+ )
80
+ # Update next_version_idx as lines shifted
81
+ # Wait, if I insert, I need to know how many lines.
82
+ # _insert_category_in_order returns the index of the new category header.
83
+ # But if it inserted blank lines, the indices after it shifted.
84
+ # But next_version_idx is an index, so if I insert BEFORE it, it shifts.
85
+ # Let's check _insert_category_in_order implementation logic.
86
+ # It mutates 'lines' list.
87
+ # If it inserts 2 lines, next_version_idx should increase by 2.
88
+ # But wait, next_version_idx was calculated based on initial list.
89
+ # I should probably re-calculate or just use the return value.
90
+ # But wait, the function mutates the list.
91
+ # Let's look at the implementation below.
92
+
93
+ # Recalculate next_version_idx to be safe?
94
+ # Or rely on finding the category index.
95
+ pass
96
+
97
+ # Re-find next version idx just to be safe if lines shifted
98
+ for i in range(unreleased_idx + 1, len(lines)):
99
+ if re.match(r"^## \[.+\]", lines[i]):
100
+ next_version_idx = i
101
+ break
102
+ else:
103
+ next_version_idx = len(lines)
104
+
105
+ # Re-find category index
106
+ for i in range(unreleased_idx + 1, next_version_idx):
107
+ if lines[i].strip() == f"### {category_name}":
108
+ category_idx = i
109
+ break
110
+
111
+ # Find where to insert the entry (after category header)
112
+ insert_idx = category_idx + 1
113
+
114
+ # Skip existing entries to add at end of category
115
+ while insert_idx < len(lines) and insert_idx < next_version_idx and lines[insert_idx].strip().startswith("- "):
116
+ insert_idx += 1
117
+
118
+ # Insert the new entry
119
+ entry_line = f"- {description}"
120
+ lines.insert(insert_idx, entry_line)
121
+
122
+ return '\n'.join(lines)
123
+
124
+
125
+ def _insert_category_in_order(
126
+ lines: list,
127
+ unreleased_idx: int,
128
+ next_version_idx: int,
129
+ category_name: str
130
+ ) -> int:
131
+ """
132
+ Insert category header in proper Keep a Changelog order.
133
+
134
+ Returns:
135
+ Index where category header was inserted
136
+ """
137
+ category_order_idx = CATEGORY_ORDER.index(category_name)
138
+
139
+ # Find existing categories in Unreleased section
140
+ existing_categories = []
141
+ # Note: next_version_idx is based on current lines state
142
+ for i in range(unreleased_idx + 1, next_version_idx):
143
+ match = re.match(r"^### (.+)$", lines[i])
144
+ if match:
145
+ cat = match.group(1)
146
+ if cat in CATEGORY_ORDER:
147
+ existing_categories.append((i, cat))
148
+
149
+ # Find insertion point
150
+ insert_idx = next_version_idx
151
+ for idx, cat in existing_categories:
152
+ cat_order_idx = CATEGORY_ORDER.index(cat)
153
+ if category_order_idx < cat_order_idx:
154
+ # Insert before this category
155
+ insert_idx = idx
156
+ break
157
+
158
+ # Insert category header with blank line before if not first
159
+ if existing_categories:
160
+ lines.insert(insert_idx, "")
161
+ insert_idx += 1
162
+ else:
163
+ # First category, add blank line after [Unreleased]
164
+ lines.insert(unreleased_idx + 1, "")
165
+ insert_idx = unreleased_idx + 2
166
+
167
+ lines.insert(insert_idx, f"### {category_name}")
168
+
169
+ return insert_idx
170
+
171
+
172
+ def add_entry_to_file(
173
+ filepath: Path,
174
+ category: ChangeCategory,
175
+ description: str
176
+ ) -> None:
177
+ """Add entry to CHANGELOG file."""
178
+ if not filepath.exists():
179
+ raise FileNotFoundError(f"CHANGELOG not found: {filepath}")
180
+
181
+ content = filepath.read_text(encoding='utf-8')
182
+ updated = add_entry(content, category, description)
183
+ filepath.write_text(updated, encoding='utf-8')
184
+
185
+ print(f"✅ Added to {filepath.name}:")
186
+ print(f" [{category.value}] {description}")
187
+
188
+
189
+ def main():
190
+ """CLI entry point."""
191
+ if len(sys.argv) != 4:
192
+ print("Usage: add_entry.py <changelog_file> <category> <description>")
193
+ print("")
194
+ print("Categories: Added, Changed, Deprecated, Removed, Fixed, Security")
195
+ print("")
196
+ print("Example:")
197
+ print(' add_entry.py CHANGELOG.md Added "New semantic search feature"')
198
+ sys.exit(1)
199
+
200
+ filepath = Path(sys.argv[1])
201
+ category_str = sys.argv[2]
202
+ description = sys.argv[3]
203
+
204
+ # Validate category
205
+ try:
206
+ category = ChangeCategory[category_str.upper()]
207
+ except KeyError:
208
+ print(f"ERROR: Invalid category '{category_str}'")
209
+ print(f"Valid: {', '.join(CATEGORY_ORDER)}")
210
+ sys.exit(1)
211
+
212
+ add_entry_to_file(filepath, category, description)
213
+
214
+
215
+ if __name__ == "__main__":
216
+ main()