@hivehub/rulebook 1.2.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 (379) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +539 -0
  3. package/dist/agents/claude-code.d.ts +69 -0
  4. package/dist/agents/claude-code.d.ts.map +1 -0
  5. package/dist/agents/claude-code.js +180 -0
  6. package/dist/agents/claude-code.js.map +1 -0
  7. package/dist/agents/cursor-agent.d.ts +184 -0
  8. package/dist/agents/cursor-agent.d.ts.map +1 -0
  9. package/dist/agents/cursor-agent.js +299 -0
  10. package/dist/agents/cursor-agent.js.map +1 -0
  11. package/dist/agents/gemini-cli.d.ts +69 -0
  12. package/dist/agents/gemini-cli.d.ts.map +1 -0
  13. package/dist/agents/gemini-cli.js +180 -0
  14. package/dist/agents/gemini-cli.js.map +1 -0
  15. package/dist/cli/commands.d.ts +57 -0
  16. package/dist/cli/commands.d.ts.map +1 -0
  17. package/dist/cli/commands.js +1370 -0
  18. package/dist/cli/commands.js.map +1 -0
  19. package/dist/cli/docs-prompts.d.ts +3 -0
  20. package/dist/cli/docs-prompts.d.ts.map +1 -0
  21. package/dist/cli/docs-prompts.js +45 -0
  22. package/dist/cli/docs-prompts.js.map +1 -0
  23. package/dist/cli/prompts.d.ts +6 -0
  24. package/dist/cli/prompts.d.ts.map +1 -0
  25. package/dist/cli/prompts.js +376 -0
  26. package/dist/cli/prompts.js.map +1 -0
  27. package/dist/core/agent-manager.d.ts +89 -0
  28. package/dist/core/agent-manager.d.ts.map +1 -0
  29. package/dist/core/agent-manager.js +546 -0
  30. package/dist/core/agent-manager.js.map +1 -0
  31. package/dist/core/auto-fixer.d.ts +14 -0
  32. package/dist/core/auto-fixer.d.ts.map +1 -0
  33. package/dist/core/auto-fixer.js +207 -0
  34. package/dist/core/auto-fixer.js.map +1 -0
  35. package/dist/core/changelog-generator.d.ts +44 -0
  36. package/dist/core/changelog-generator.d.ts.map +1 -0
  37. package/dist/core/changelog-generator.js +222 -0
  38. package/dist/core/changelog-generator.js.map +1 -0
  39. package/dist/core/cli-bridge.d.ts +113 -0
  40. package/dist/core/cli-bridge.d.ts.map +1 -0
  41. package/dist/core/cli-bridge.js +1094 -0
  42. package/dist/core/cli-bridge.js.map +1 -0
  43. package/dist/core/config-manager.d.ts +65 -0
  44. package/dist/core/config-manager.d.ts.map +1 -0
  45. package/dist/core/config-manager.js +266 -0
  46. package/dist/core/config-manager.js.map +1 -0
  47. package/dist/core/coverage-checker.d.ts +14 -0
  48. package/dist/core/coverage-checker.d.ts.map +1 -0
  49. package/dist/core/coverage-checker.js +176 -0
  50. package/dist/core/coverage-checker.js.map +1 -0
  51. package/dist/core/custom-templates.d.ts +27 -0
  52. package/dist/core/custom-templates.d.ts.map +1 -0
  53. package/dist/core/custom-templates.js +122 -0
  54. package/dist/core/custom-templates.js.map +1 -0
  55. package/dist/core/dependency-checker.d.ts +21 -0
  56. package/dist/core/dependency-checker.d.ts.map +1 -0
  57. package/dist/core/dependency-checker.js +247 -0
  58. package/dist/core/dependency-checker.js.map +1 -0
  59. package/dist/core/detector.d.ts +3 -0
  60. package/dist/core/detector.d.ts.map +1 -0
  61. package/dist/core/detector.js +1443 -0
  62. package/dist/core/detector.js.map +1 -0
  63. package/dist/core/docs-generator.d.ts +9 -0
  64. package/dist/core/docs-generator.d.ts.map +1 -0
  65. package/dist/core/docs-generator.js +531 -0
  66. package/dist/core/docs-generator.js.map +1 -0
  67. package/dist/core/generator.d.ts +16 -0
  68. package/dist/core/generator.d.ts.map +1 -0
  69. package/dist/core/generator.js +561 -0
  70. package/dist/core/generator.js.map +1 -0
  71. package/dist/core/gitignore-generator.d.ts +13 -0
  72. package/dist/core/gitignore-generator.d.ts.map +1 -0
  73. package/dist/core/gitignore-generator.js +307 -0
  74. package/dist/core/gitignore-generator.js.map +1 -0
  75. package/dist/core/health-scorer.d.ts +22 -0
  76. package/dist/core/health-scorer.d.ts.map +1 -0
  77. package/dist/core/health-scorer.js +395 -0
  78. package/dist/core/health-scorer.js.map +1 -0
  79. package/dist/core/logger.d.ts +116 -0
  80. package/dist/core/logger.d.ts.map +1 -0
  81. package/dist/core/logger.js +289 -0
  82. package/dist/core/logger.js.map +1 -0
  83. package/dist/core/merger.d.ts +6 -0
  84. package/dist/core/merger.d.ts.map +1 -0
  85. package/dist/core/merger.js +131 -0
  86. package/dist/core/merger.js.map +1 -0
  87. package/dist/core/migrator.d.ts +19 -0
  88. package/dist/core/migrator.d.ts.map +1 -0
  89. package/dist/core/migrator.js +102 -0
  90. package/dist/core/migrator.js.map +1 -0
  91. package/dist/core/minimal-scaffolder.d.ts +8 -0
  92. package/dist/core/minimal-scaffolder.d.ts.map +1 -0
  93. package/dist/core/minimal-scaffolder.js +51 -0
  94. package/dist/core/minimal-scaffolder.js.map +1 -0
  95. package/dist/core/modern-console-new.d.ts +81 -0
  96. package/dist/core/modern-console-new.d.ts.map +1 -0
  97. package/dist/core/modern-console-new.js +340 -0
  98. package/dist/core/modern-console-new.js.map +1 -0
  99. package/dist/core/modern-console.d.ts +99 -0
  100. package/dist/core/modern-console.d.ts.map +1 -0
  101. package/dist/core/modern-console.js +568 -0
  102. package/dist/core/modern-console.js.map +1 -0
  103. package/dist/core/openspec-manager.d.ts +133 -0
  104. package/dist/core/openspec-manager.d.ts.map +1 -0
  105. package/dist/core/openspec-manager.js +605 -0
  106. package/dist/core/openspec-manager.js.map +1 -0
  107. package/dist/core/openspec-migrator.d.ts +27 -0
  108. package/dist/core/openspec-migrator.d.ts.map +1 -0
  109. package/dist/core/openspec-migrator.js +255 -0
  110. package/dist/core/openspec-migrator.js.map +1 -0
  111. package/dist/core/task-manager.d.ts +65 -0
  112. package/dist/core/task-manager.d.ts.map +1 -0
  113. package/dist/core/task-manager.js +318 -0
  114. package/dist/core/task-manager.js.map +1 -0
  115. package/dist/core/test-task-manager.d.ts +49 -0
  116. package/dist/core/test-task-manager.d.ts.map +1 -0
  117. package/dist/core/test-task-manager.js +121 -0
  118. package/dist/core/test-task-manager.js.map +1 -0
  119. package/dist/core/validator.d.ts +21 -0
  120. package/dist/core/validator.d.ts.map +1 -0
  121. package/dist/core/validator.js +177 -0
  122. package/dist/core/validator.js.map +1 -0
  123. package/dist/core/version-bumper.d.ts +19 -0
  124. package/dist/core/version-bumper.d.ts.map +1 -0
  125. package/dist/core/version-bumper.js +180 -0
  126. package/dist/core/version-bumper.js.map +1 -0
  127. package/dist/core/watcher.d.ts +9 -0
  128. package/dist/core/watcher.d.ts.map +1 -0
  129. package/dist/core/watcher.js +22 -0
  130. package/dist/core/watcher.js.map +1 -0
  131. package/dist/core/workflow-generator.d.ts +10 -0
  132. package/dist/core/workflow-generator.d.ts.map +1 -0
  133. package/dist/core/workflow-generator.js +279 -0
  134. package/dist/core/workflow-generator.js.map +1 -0
  135. package/dist/index.d.ts +3 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +159 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/mcp/handlers/archive-task.d.ts +17 -0
  140. package/dist/mcp/handlers/archive-task.d.ts.map +1 -0
  141. package/dist/mcp/handlers/archive-task.js +36 -0
  142. package/dist/mcp/handlers/archive-task.js.map +1 -0
  143. package/dist/mcp/handlers/create-task.d.ts +17 -0
  144. package/dist/mcp/handlers/create-task.d.ts.map +1 -0
  145. package/dist/mcp/handlers/create-task.js +56 -0
  146. package/dist/mcp/handlers/create-task.js.map +1 -0
  147. package/dist/mcp/handlers/list-tasks.d.ts +22 -0
  148. package/dist/mcp/handlers/list-tasks.d.ts.map +1 -0
  149. package/dist/mcp/handlers/list-tasks.js +42 -0
  150. package/dist/mcp/handlers/list-tasks.js.map +1 -0
  151. package/dist/mcp/handlers/show-task.d.ts +25 -0
  152. package/dist/mcp/handlers/show-task.d.ts.map +1 -0
  153. package/dist/mcp/handlers/show-task.js +43 -0
  154. package/dist/mcp/handlers/show-task.js.map +1 -0
  155. package/dist/mcp/handlers/update-task.d.ts +17 -0
  156. package/dist/mcp/handlers/update-task.d.ts.map +1 -0
  157. package/dist/mcp/handlers/update-task.js +35 -0
  158. package/dist/mcp/handlers/update-task.js.map +1 -0
  159. package/dist/mcp/handlers/validate-task.d.ts +15 -0
  160. package/dist/mcp/handlers/validate-task.d.ts.map +1 -0
  161. package/dist/mcp/handlers/validate-task.js +27 -0
  162. package/dist/mcp/handlers/validate-task.js.map +1 -0
  163. package/dist/mcp/rulebook-config.d.ts +22 -0
  164. package/dist/mcp/rulebook-config.d.ts.map +1 -0
  165. package/dist/mcp/rulebook-config.js +65 -0
  166. package/dist/mcp/rulebook-config.js.map +1 -0
  167. package/dist/mcp/rulebook-server.d.ts +4 -0
  168. package/dist/mcp/rulebook-server.d.ts.map +1 -0
  169. package/dist/mcp/rulebook-server.js +246 -0
  170. package/dist/mcp/rulebook-server.js.map +1 -0
  171. package/dist/types.d.ts +190 -0
  172. package/dist/types.d.ts.map +1 -0
  173. package/dist/types.js +2 -0
  174. package/dist/types.js.map +1 -0
  175. package/dist/utils/file-system.d.ts +9 -0
  176. package/dist/utils/file-system.d.ts.map +1 -0
  177. package/dist/utils/file-system.js +51 -0
  178. package/dist/utils/file-system.js.map +1 -0
  179. package/dist/utils/git-hooks.d.ts +8 -0
  180. package/dist/utils/git-hooks.d.ts.map +1 -0
  181. package/dist/utils/git-hooks.js +440 -0
  182. package/dist/utils/git-hooks.js.map +1 -0
  183. package/dist/utils/rulesignore.d.ts +9 -0
  184. package/dist/utils/rulesignore.d.ts.map +1 -0
  185. package/dist/utils/rulesignore.js +42 -0
  186. package/dist/utils/rulesignore.js.map +1 -0
  187. package/package.json +106 -0
  188. package/templates/cli/AIDER.md +49 -0
  189. package/templates/cli/AMAZON_Q.md +25 -0
  190. package/templates/cli/AUGGIE.md +32 -0
  191. package/templates/cli/CLAUDE.md +32 -0
  192. package/templates/cli/CLAUDE_CODE.md +35 -0
  193. package/templates/cli/CLINE.md +32 -0
  194. package/templates/cli/CODEBUDDY.md +20 -0
  195. package/templates/cli/CODEIUM.md +20 -0
  196. package/templates/cli/CODEX.md +21 -0
  197. package/templates/cli/CONTINUE.md +34 -0
  198. package/templates/cli/CURSOR_CLI.md +28 -0
  199. package/templates/cli/FACTORY.md +18 -0
  200. package/templates/cli/GEMINI.md +35 -0
  201. package/templates/cli/KILOCODE.md +18 -0
  202. package/templates/cli/OPENCODE.md +18 -0
  203. package/templates/cli/_GENERIC_TEMPLATE.md +29 -0
  204. package/templates/commands/rulebook-task-apply.md +67 -0
  205. package/templates/commands/rulebook-task-archive.md +70 -0
  206. package/templates/commands/rulebook-task-create.md +93 -0
  207. package/templates/commands/rulebook-task-list.md +42 -0
  208. package/templates/commands/rulebook-task-show.md +52 -0
  209. package/templates/commands/rulebook-task-validate.md +53 -0
  210. package/templates/core/AGENT_AUTOMATION.md +184 -0
  211. package/templates/core/DAG.md +304 -0
  212. package/templates/core/DOCUMENTATION_RULES.md +37 -0
  213. package/templates/core/QUALITY_ENFORCEMENT.md +68 -0
  214. package/templates/core/RULEBOOK.md +1874 -0
  215. package/templates/frameworks/ANGULAR.md +36 -0
  216. package/templates/frameworks/DJANGO.md +83 -0
  217. package/templates/frameworks/ELECTRON.md +147 -0
  218. package/templates/frameworks/FLASK.md +38 -0
  219. package/templates/frameworks/FLUTTER.md +55 -0
  220. package/templates/frameworks/JQUERY.md +32 -0
  221. package/templates/frameworks/LARAVEL.md +38 -0
  222. package/templates/frameworks/NESTJS.md +43 -0
  223. package/templates/frameworks/NEXTJS.md +127 -0
  224. package/templates/frameworks/NUXT.md +40 -0
  225. package/templates/frameworks/RAILS.md +66 -0
  226. package/templates/frameworks/REACT.md +38 -0
  227. package/templates/frameworks/REACT_NATIVE.md +47 -0
  228. package/templates/frameworks/SPRING.md +39 -0
  229. package/templates/frameworks/SYMFONY.md +36 -0
  230. package/templates/frameworks/VUE.md +36 -0
  231. package/templates/frameworks/ZEND.md +35 -0
  232. package/templates/git/CI_CD_PATTERNS.md +661 -0
  233. package/templates/git/GITHUB_ACTIONS.md +728 -0
  234. package/templates/git/GITLAB_CI.md +730 -0
  235. package/templates/git/GIT_WORKFLOW.md +1157 -0
  236. package/templates/git/SECRETS_MANAGEMENT.md +585 -0
  237. package/templates/hooks/COMMIT_MSG.md +530 -0
  238. package/templates/hooks/POST_CHECKOUT.md +546 -0
  239. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -0
  240. package/templates/hooks/PRE_COMMIT.md +414 -0
  241. package/templates/hooks/PRE_PUSH.md +601 -0
  242. package/templates/hooks/csharp-pre-commit.sh +23 -0
  243. package/templates/hooks/csharp-pre-push.sh +23 -0
  244. package/templates/hooks/dart-pre-commit.sh +30 -0
  245. package/templates/hooks/dart-pre-push.sh +25 -0
  246. package/templates/hooks/elixir-pre-commit.sh +32 -0
  247. package/templates/hooks/elixir-pre-push.sh +31 -0
  248. package/templates/hooks/erlang-pre-commit.sh +30 -0
  249. package/templates/hooks/erlang-pre-push.sh +37 -0
  250. package/templates/hooks/go-pre-commit.sh +40 -0
  251. package/templates/hooks/go-pre-push.sh +31 -0
  252. package/templates/hooks/haskell-pre-commit.sh +41 -0
  253. package/templates/hooks/haskell-pre-push.sh +37 -0
  254. package/templates/hooks/java-pre-commit.sh +34 -0
  255. package/templates/hooks/java-pre-push.sh +24 -0
  256. package/templates/hooks/kotlin-pre-commit.sh +32 -0
  257. package/templates/hooks/kotlin-pre-push.sh +16 -0
  258. package/templates/hooks/php-pre-commit.sh +36 -0
  259. package/templates/hooks/php-pre-push.sh +26 -0
  260. package/templates/hooks/python-pre-commit.sh +51 -0
  261. package/templates/hooks/python-pre-push.sh +25 -0
  262. package/templates/hooks/ruby-pre-commit.sh +33 -0
  263. package/templates/hooks/ruby-pre-push.sh +32 -0
  264. package/templates/hooks/rust-pre-commit.sh +30 -0
  265. package/templates/hooks/rust-pre-push.sh +30 -0
  266. package/templates/hooks/scala-pre-commit.sh +32 -0
  267. package/templates/hooks/scala-pre-push.sh +24 -0
  268. package/templates/hooks/swift-pre-commit.sh +25 -0
  269. package/templates/hooks/swift-pre-push.sh +23 -0
  270. package/templates/hooks/typescript-pre-commit.sh +37 -0
  271. package/templates/hooks/typescript-pre-push.sh +36 -0
  272. package/templates/ides/COPILOT.md +37 -0
  273. package/templates/ides/CURSOR.md +43 -0
  274. package/templates/ides/JETBRAINS_AI.md +35 -0
  275. package/templates/ides/REPLIT.md +36 -0
  276. package/templates/ides/TABNINE.md +29 -0
  277. package/templates/ides/VSCODE.md +40 -0
  278. package/templates/ides/WINDSURF.md +36 -0
  279. package/templates/ides/ZED.md +32 -0
  280. package/templates/languages/ADA.md +58 -0
  281. package/templates/languages/C.md +333 -0
  282. package/templates/languages/CPP.md +743 -0
  283. package/templates/languages/CSHARP.md +417 -0
  284. package/templates/languages/DART.md +332 -0
  285. package/templates/languages/ELIXIR.md +454 -0
  286. package/templates/languages/ERLANG.md +361 -0
  287. package/templates/languages/GO.md +645 -0
  288. package/templates/languages/HASKELL.md +177 -0
  289. package/templates/languages/JAVA.md +607 -0
  290. package/templates/languages/JAVASCRIPT.md +631 -0
  291. package/templates/languages/JULIA.md +97 -0
  292. package/templates/languages/KOTLIN.md +511 -0
  293. package/templates/languages/LISP.md +100 -0
  294. package/templates/languages/LUA.md +74 -0
  295. package/templates/languages/OBJECTIVEC.md +90 -0
  296. package/templates/languages/PHP.md +416 -0
  297. package/templates/languages/PYTHON.md +682 -0
  298. package/templates/languages/R.md +350 -0
  299. package/templates/languages/RUBY.md +421 -0
  300. package/templates/languages/RUST.md +477 -0
  301. package/templates/languages/SAS.md +73 -0
  302. package/templates/languages/SCALA.md +348 -0
  303. package/templates/languages/SOLIDITY.md +580 -0
  304. package/templates/languages/SQL.md +137 -0
  305. package/templates/languages/SWIFT.md +466 -0
  306. package/templates/languages/TYPESCRIPT.md +591 -0
  307. package/templates/languages/ZIG.md +265 -0
  308. package/templates/modules/ATLASSIAN.md +255 -0
  309. package/templates/modules/CONTEXT7.md +54 -0
  310. package/templates/modules/FIGMA.md +267 -0
  311. package/templates/modules/GITHUB_MCP.md +64 -0
  312. package/templates/modules/GRAFANA.md +328 -0
  313. package/templates/modules/NOTION.md +247 -0
  314. package/templates/modules/PLAYWRIGHT.md +90 -0
  315. package/templates/modules/RULEBOOK_MCP.md +156 -0
  316. package/templates/modules/SERENA.md +337 -0
  317. package/templates/modules/SUPABASE.md +223 -0
  318. package/templates/modules/SYNAP.md +69 -0
  319. package/templates/modules/VECTORIZER.md +63 -0
  320. package/templates/services/AZURE_BLOB.md +184 -0
  321. package/templates/services/CASSANDRA.md +239 -0
  322. package/templates/services/DYNAMODB.md +308 -0
  323. package/templates/services/ELASTICSEARCH.md +347 -0
  324. package/templates/services/GCS.md +178 -0
  325. package/templates/services/INFLUXDB.md +265 -0
  326. package/templates/services/KAFKA.md +341 -0
  327. package/templates/services/MARIADB.md +183 -0
  328. package/templates/services/MEMCACHED.md +242 -0
  329. package/templates/services/MINIO.md +201 -0
  330. package/templates/services/MONGODB.md +268 -0
  331. package/templates/services/MYSQL.md +358 -0
  332. package/templates/services/NEO4J.md +247 -0
  333. package/templates/services/ORACLE.md +290 -0
  334. package/templates/services/POSTGRESQL.md +326 -0
  335. package/templates/services/RABBITMQ.md +286 -0
  336. package/templates/services/REDIS.md +292 -0
  337. package/templates/services/S3.md +298 -0
  338. package/templates/services/SQLITE.md +294 -0
  339. package/templates/services/SQLSERVER.md +294 -0
  340. package/templates/workflows/codespell.yml +31 -0
  341. package/templates/workflows/cpp-lint.yml +47 -0
  342. package/templates/workflows/cpp-publish.yml +119 -0
  343. package/templates/workflows/cpp-test.yml +77 -0
  344. package/templates/workflows/dotnet-lint.yml +29 -0
  345. package/templates/workflows/dotnet-publish.yml +40 -0
  346. package/templates/workflows/dotnet-test.yml +41 -0
  347. package/templates/workflows/elixir-lint.yml +45 -0
  348. package/templates/workflows/elixir-publish.yml +49 -0
  349. package/templates/workflows/elixir-test.yml +54 -0
  350. package/templates/workflows/erlang-lint.yml +47 -0
  351. package/templates/workflows/erlang-test.yml +62 -0
  352. package/templates/workflows/go-lint.yml +39 -0
  353. package/templates/workflows/go-publish.yml +95 -0
  354. package/templates/workflows/go-test.yml +59 -0
  355. package/templates/workflows/java-lint.yml +60 -0
  356. package/templates/workflows/java-publish.yml +120 -0
  357. package/templates/workflows/java-test.yml +85 -0
  358. package/templates/workflows/kotlin-lint.yml +34 -0
  359. package/templates/workflows/kotlin-publish.yml +56 -0
  360. package/templates/workflows/kotlin-test.yml +48 -0
  361. package/templates/workflows/php-lint.yml +39 -0
  362. package/templates/workflows/php-publish.yml +50 -0
  363. package/templates/workflows/php-test.yml +54 -0
  364. package/templates/workflows/python-lint.yml +47 -0
  365. package/templates/workflows/python-publish.yml +91 -0
  366. package/templates/workflows/python-test.yml +59 -0
  367. package/templates/workflows/rust-lint.yml +54 -0
  368. package/templates/workflows/rust-publish.yml +66 -0
  369. package/templates/workflows/rust-test.yml +75 -0
  370. package/templates/workflows/solidity-lint.yml +41 -0
  371. package/templates/workflows/solidity-test.yml +47 -0
  372. package/templates/workflows/swift-lint.yml +32 -0
  373. package/templates/workflows/swift-publish.yml +58 -0
  374. package/templates/workflows/swift-test.yml +44 -0
  375. package/templates/workflows/typescript-lint.yml +61 -0
  376. package/templates/workflows/typescript-publish.yml +60 -0
  377. package/templates/workflows/typescript-test.yml +73 -0
  378. package/templates/workflows/zig-lint.yml +27 -0
  379. package/templates/workflows/zig-test.yml +40 -0
@@ -0,0 +1,59 @@
1
+ name: Go Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
15
+ go-version: [ '1.21', '1.22' ]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Set up Go ${{ matrix.go-version }}
21
+ uses: actions/setup-go@v5
22
+ with:
23
+ go-version: ${{ matrix.go-version }}
24
+ cache: true
25
+
26
+ - name: Download dependencies
27
+ run: go mod download
28
+
29
+ - name: Verify dependencies
30
+ run: go mod verify
31
+
32
+ - name: Build
33
+ run: go build -v ./...
34
+
35
+ - name: Run tests
36
+ run: go test -v -race -coverprofile=coverage.out ./...
37
+
38
+ - name: Generate coverage report
39
+ if: matrix.os == 'ubuntu-latest' && matrix.go-version == '1.22'
40
+ run: |
41
+ go tool cover -func=coverage.out
42
+ go tool cover -html=coverage.out -o coverage.html
43
+
44
+ - name: Upload coverage to Codecov
45
+ uses: codecov/codecov-action@v4
46
+ if: matrix.os == 'ubuntu-latest' && matrix.go-version == '1.22'
47
+ with:
48
+ files: ./coverage.out
49
+ flags: unittests
50
+ fail_ci_if_error: false
51
+
52
+ - name: Security audit
53
+ run: |
54
+ echo "Running security audit..."
55
+ go install github.com/sonatypecommunity/nancy@latest
56
+ go list -json -m all | nancy sleuth || true
57
+ echo "Checking for outdated modules..."
58
+ go list -u -m all || true
59
+
@@ -0,0 +1,60 @@
1
+ name: Java Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint-maven:
11
+ runs-on: ubuntu-latest
12
+ if: hashFiles('**/pom.xml') != ''
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Set up JDK 21
18
+ uses: actions/setup-java@v4
19
+ with:
20
+ java-version: '21'
21
+ distribution: 'temurin'
22
+ cache: maven
23
+
24
+ - name: Run Checkstyle
25
+ run: mvn checkstyle:check
26
+ continue-on-error: true
27
+
28
+ - name: Run PMD
29
+ run: mvn pmd:check
30
+ continue-on-error: true
31
+
32
+ - name: Run SpotBugs
33
+ run: mvn spotbugs:check
34
+ continue-on-error: true
35
+
36
+ lint-gradle:
37
+ runs-on: ubuntu-latest
38
+ if: hashFiles('**/build.gradle*') != ''
39
+
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - name: Set up JDK 21
44
+ uses: actions/setup-java@v4
45
+ with:
46
+ java-version: '21'
47
+ distribution: 'temurin'
48
+ cache: gradle
49
+
50
+ - name: Grant execute permission for gradlew
51
+ run: chmod +x gradlew
52
+
53
+ - name: Run Checkstyle
54
+ run: ./gradlew checkstyleMain checkstyleTest
55
+ continue-on-error: true
56
+
57
+ - name: Run SpotBugs
58
+ run: ./gradlew spotbugsMain spotbugsTest
59
+ continue-on-error: true
60
+
@@ -0,0 +1,120 @@
1
+ name: Publish Java Package
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: 'Tag to publish (e.g., v1.0.0)'
10
+ required: true
11
+
12
+ jobs:
13
+ publish-maven:
14
+ runs-on: ubuntu-latest
15
+ if: hashFiles('**/pom.xml') != ''
16
+ permissions:
17
+ contents: read
18
+ packages: write
19
+
20
+ steps:
21
+ - uses: actions/checkout@v5
22
+ with:
23
+ ref: ${{ github.event.inputs.tag || github.ref }}
24
+
25
+ - name: Set up JDK
26
+ uses: actions/setup-java@v4
27
+ with:
28
+ java-version: '21'
29
+ distribution: 'temurin'
30
+ cache: 'maven'
31
+ server-id: central # For Maven Central
32
+ server-username: MAVEN_USERNAME
33
+ server-password: MAVEN_PASSWORD
34
+ gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
35
+ gpg-passphrase: MAVEN_GPG_PASSPHRASE
36
+
37
+ - name: Verify version matches tag
38
+ run: |
39
+ TAG="${{ github.event.inputs.tag || github.ref_name }}"
40
+ TAG_VERSION="${TAG#v}"
41
+ POM_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
42
+ if [ "$POM_VERSION" != "$TAG_VERSION" ]; then
43
+ echo "Error: pom.xml version ($POM_VERSION) does not match tag ($TAG_VERSION)"
44
+ exit 1
45
+ fi
46
+ echo "Version check passed: $POM_VERSION"
47
+
48
+ - name: Run tests
49
+ run: mvn -B test
50
+
51
+ - name: Build package
52
+ run: mvn -B clean package -DskipTests
53
+
54
+ - name: Publish to GitHub Packages
55
+ run: mvn -B deploy -DskipTests
56
+ env:
57
+ MAVEN_USERNAME: ${{ github.actor }}
58
+ MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
59
+
60
+ - name: Publish to Maven Central
61
+ if: secrets.MAVEN_USERNAME != ''
62
+ run: mvn -B deploy -DskipTests -P release
63
+ env:
64
+ MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
65
+ MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
66
+ MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
67
+
68
+ publish-gradle:
69
+ runs-on: ubuntu-latest
70
+ if: hashFiles('**/build.gradle*') != ''
71
+ permissions:
72
+ contents: read
73
+ packages: write
74
+
75
+ steps:
76
+ - uses: actions/checkout@v5
77
+ with:
78
+ ref: ${{ github.event.inputs.tag || github.ref }}
79
+
80
+ - name: Set up JDK
81
+ uses: actions/setup-java@v4
82
+ with:
83
+ java-version: '21'
84
+ distribution: 'temurin'
85
+ cache: 'gradle'
86
+
87
+ - name: Grant execute permission for gradlew
88
+ run: chmod +x gradlew
89
+
90
+ - name: Verify version matches tag
91
+ run: |
92
+ TAG="${{ github.event.inputs.tag || github.ref_name }}"
93
+ TAG_VERSION="${TAG#v}"
94
+ GRADLE_VERSION=$(./gradlew properties -q | grep "^version:" | awk '{print $2}')
95
+ if [ "$GRADLE_VERSION" != "$TAG_VERSION" ]; then
96
+ echo "Error: build.gradle version ($GRADLE_VERSION) does not match tag ($TAG_VERSION)"
97
+ exit 1
98
+ fi
99
+ echo "Version check passed: $GRADLE_VERSION"
100
+
101
+ - name: Run tests
102
+ run: ./gradlew test
103
+
104
+ - name: Build package
105
+ run: ./gradlew build -x test
106
+
107
+ - name: Publish to GitHub Packages
108
+ run: ./gradlew publish
109
+ env:
110
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
111
+
112
+ - name: Publish to Maven Central
113
+ if: secrets.SIGNING_KEY != ''
114
+ run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
115
+ env:
116
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
117
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
118
+ SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
119
+ SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
120
+
@@ -0,0 +1,85 @@
1
+ name: Java Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test-maven:
11
+ runs-on: ${{ matrix.os }}
12
+ if: hashFiles('**/pom.xml') != ''
13
+ strategy:
14
+ matrix:
15
+ os: [ ubuntu-latest, windows-latest ]
16
+ java-version: [ '17', '21' ]
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Set up JDK ${{ matrix.java-version }}
22
+ uses: actions/setup-java@v4
23
+ with:
24
+ java-version: ${{ matrix.java-version }}
25
+ distribution: 'temurin'
26
+ cache: maven
27
+
28
+ - name: Build with Maven
29
+ run: mvn -B compile --file pom.xml
30
+
31
+ - name: Run tests
32
+ run: mvn -B test --file pom.xml
33
+
34
+ - name: Generate coverage report
35
+ if: matrix.os == 'ubuntu-latest' && matrix.java-version == '21'
36
+ run: mvn -B jacoco:report
37
+
38
+ - name: Upload coverage to Codecov
39
+ uses: codecov/codecov-action@v4
40
+ if: matrix.os == 'ubuntu-latest' && matrix.java-version == '21'
41
+ with:
42
+ files: ./target/site/jacoco/jacoco.xml
43
+ flags: unittests
44
+ fail_ci_if_error: false
45
+
46
+ test-gradle:
47
+ runs-on: ${{ matrix.os }}
48
+ if: hashFiles('**/build.gradle*') != ''
49
+ strategy:
50
+ matrix:
51
+ os: [ ubuntu-latest, windows-latest ]
52
+ java-version: [ '17', '21' ]
53
+
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+
57
+ - name: Set up JDK ${{ matrix.java-version }}
58
+ uses: actions/setup-java@v4
59
+ with:
60
+ java-version: ${{ matrix.java-version }}
61
+ distribution: 'temurin'
62
+ cache: gradle
63
+
64
+ - name: Grant execute permission for gradlew
65
+ if: runner.os != 'Windows'
66
+ run: chmod +x gradlew
67
+
68
+ - name: Build with Gradle
69
+ run: ./gradlew build -x test
70
+
71
+ - name: Run tests
72
+ run: ./gradlew test
73
+
74
+ - name: Generate coverage report
75
+ if: matrix.os == 'ubuntu-latest' && matrix.java-version == '21'
76
+ run: ./gradlew jacocoTestReport
77
+
78
+ - name: Upload coverage to Codecov
79
+ uses: codecov/codecov-action@v4
80
+ if: matrix.os == 'ubuntu-latest' && matrix.java-version == '21'
81
+ with:
82
+ files: ./build/reports/jacoco/test/jacocoTestReport.xml
83
+ flags: unittests
84
+ fail_ci_if_error: false
85
+
@@ -0,0 +1,34 @@
1
+ name: Kotlin Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v5
15
+
16
+ - name: Set up JDK
17
+ uses: actions/setup-java@v4
18
+ with:
19
+ java-version: '21'
20
+ distribution: 'temurin'
21
+ cache: gradle
22
+
23
+ - name: Grant execute permission for gradlew
24
+ run: chmod +x gradlew
25
+
26
+ - name: Run ktlint
27
+ run: ./gradlew ktlintCheck
28
+
29
+ - name: Run Detekt
30
+ run: ./gradlew detekt
31
+
32
+ - name: Build with warnings as errors
33
+ run: ./gradlew build -x test
34
+
@@ -0,0 +1,56 @@
1
+ name: Publish Kotlin Package
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: 'Tag to publish (e.g., v1.0.0)'
10
+ required: true
11
+
12
+ jobs:
13
+ publish:
14
+ runs-on: ubuntu-latest
15
+ permissions:
16
+ contents: read
17
+ packages: write
18
+
19
+ steps:
20
+ - uses: actions/checkout@v5
21
+ with:
22
+ ref: ${{ github.event.inputs.tag || github.ref }}
23
+
24
+ - name: Set up JDK
25
+ uses: actions/setup-java@v4
26
+ with:
27
+ java-version: '21'
28
+ distribution: 'temurin'
29
+ cache: gradle
30
+
31
+ - name: Grant execute permission for gradlew
32
+ run: chmod +x gradlew
33
+
34
+ - name: Run tests
35
+ run: ./gradlew test
36
+
37
+ - name: Run Detekt
38
+ run: ./gradlew detekt
39
+
40
+ - name: Build
41
+ run: ./gradlew build -x test
42
+
43
+ - name: Publish to GitHub Packages
44
+ run: ./gradlew publish
45
+ env:
46
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47
+
48
+ - name: Publish to Maven Central
49
+ if: secrets.SIGNING_KEY != ''
50
+ run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
51
+ env:
52
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
53
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
54
+ SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
55
+ SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
56
+
@@ -0,0 +1,48 @@
1
+ name: Kotlin Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ ubuntu-latest, windows-latest ]
15
+ java-version: [ '17', '21' ]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v5
19
+
20
+ - name: Set up JDK ${{ matrix.java-version }}
21
+ uses: actions/setup-java@v4
22
+ with:
23
+ java-version: ${{ matrix.java-version }}
24
+ distribution: 'temurin'
25
+ cache: gradle
26
+
27
+ - name: Grant execute permission for gradlew
28
+ if: runner.os != 'Windows'
29
+ run: chmod +x gradlew
30
+
31
+ - name: Build with Gradle
32
+ run: ./gradlew build -x test
33
+
34
+ - name: Run tests
35
+ run: ./gradlew test
36
+
37
+ - name: Generate coverage report
38
+ if: matrix.os == 'ubuntu-latest' && matrix.java-version == '21'
39
+ run: ./gradlew koverXmlReport
40
+
41
+ - name: Upload coverage to Codecov
42
+ uses: codecov/codecov-action@v4
43
+ if: matrix.os == 'ubuntu-latest' && matrix.java-version == '21'
44
+ with:
45
+ files: ./build/reports/kover/report.xml
46
+ flags: unittests
47
+ fail_ci_if_error: false
48
+
@@ -0,0 +1,39 @@
1
+ name: PHP Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v5
15
+
16
+ - name: Setup PHP
17
+ uses: shivammathur/setup-php@v2
18
+ with:
19
+ php-version: '8.3'
20
+ extensions: mbstring, xml, ctype, iconv, intl
21
+
22
+ - name: Cache Composer packages
23
+ uses: actions/cache@v4
24
+ with:
25
+ path: vendor
26
+ key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
27
+
28
+ - name: Install dependencies
29
+ run: composer install --prefer-dist --no-progress
30
+
31
+ - name: Run PHP-CS-Fixer
32
+ run: composer cs-check
33
+
34
+ - name: Run PHPStan
35
+ run: composer stan
36
+
37
+ - name: Run PHPCS
38
+ run: composer phpcs
39
+
@@ -0,0 +1,50 @@
1
+ name: Publish to Packagist
2
+
3
+ # Note: Packagist automatically updates from GitHub when you push tags.
4
+ # This workflow just validates the package before tagging.
5
+
6
+ on:
7
+ release:
8
+ types: [published]
9
+ workflow_dispatch:
10
+ inputs:
11
+ tag:
12
+ description: 'Tag to publish (e.g., v1.0.0)'
13
+ required: true
14
+
15
+ jobs:
16
+ validate:
17
+ runs-on: ubuntu-latest
18
+
19
+ steps:
20
+ - uses: actions/checkout@v5
21
+ with:
22
+ ref: ${{ github.event.inputs.tag || github.ref }}
23
+
24
+ - name: Setup PHP
25
+ uses: shivammathur/setup-php@v2
26
+ with:
27
+ php-version: '8.3'
28
+ extensions: mbstring, xml, ctype, iconv, intl
29
+
30
+ - name: Validate composer.json
31
+ run: composer validate --strict
32
+
33
+ - name: Install dependencies
34
+ run: composer install --prefer-dist --no-progress
35
+
36
+ - name: Run tests
37
+ run: composer test
38
+
39
+ - name: Run PHPStan
40
+ run: composer stan
41
+
42
+ - name: Run PHP-CS-Fixer
43
+ run: composer cs-check
44
+
45
+ - name: Package validated
46
+ run: |
47
+ echo "✅ Package validation successful"
48
+ echo "Packagist will automatically update from GitHub tag"
49
+ echo "View at: https://packagist.org/packages/${{ github.repository }}"
50
+
@@ -0,0 +1,54 @@
1
+ name: PHP Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ matrix:
14
+ os: [ ubuntu-latest, windows-latest ]
15
+ php-version: [ '8.2', '8.3' ]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v5
19
+
20
+ - name: Setup PHP
21
+ uses: shivammathur/setup-php@v2
22
+ with:
23
+ php-version: ${{ matrix.php-version }}
24
+ extensions: mbstring, xml, ctype, iconv, intl, pdo_sqlite, dom, filter, gd, json, pcov
25
+ coverage: pcov
26
+
27
+ - name: Validate composer.json
28
+ run: composer validate --strict
29
+
30
+ - name: Cache Composer packages
31
+ uses: actions/cache@v4
32
+ with:
33
+ path: vendor
34
+ key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
35
+ restore-keys: ${{ runner.os }}-php-
36
+
37
+ - name: Install dependencies
38
+ run: composer install --prefer-dist --no-progress
39
+
40
+ - name: Run tests
41
+ run: composer test
42
+
43
+ - name: Generate coverage report
44
+ if: matrix.os == 'ubuntu-latest' && matrix.php-version == '8.3'
45
+ run: ./vendor/bin/phpunit --coverage-clover coverage.xml
46
+
47
+ - name: Upload coverage to Codecov
48
+ uses: codecov/codecov-action@v4
49
+ if: matrix.os == 'ubuntu-latest' && matrix.php-version == '8.3'
50
+ with:
51
+ files: ./coverage.xml
52
+ flags: unittests
53
+ fail_ci_if_error: false
54
+
@@ -0,0 +1,47 @@
1
+ name: Python Lint
2
+
3
+ on:
4
+ push:
5
+ branches: [ master, main, develop ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v5
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: '3.12'
20
+ # MONOREPO: Uncomment and adjust path if in monorepo subdirectory
21
+ # cache: 'pip'
22
+ # cache-dependency-path: 'subdirectory/requirements.txt'
23
+ # Note: Cache may fail in monorepo - disable if you get path resolution errors
24
+
25
+ - name: Install dependencies
26
+ # MONOREPO: Add working-directory if in subdirectory
27
+ # working-directory: ./subdirectory
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install ruff mypy black
31
+
32
+ - name: Check code formatting with black
33
+ # MONOREPO: Add working-directory if in subdirectory
34
+ # working-directory: ./subdirectory
35
+ run: black --check .
36
+
37
+ - name: Run ruff linter
38
+ # MONOREPO: Add working-directory if in subdirectory
39
+ # working-directory: ./subdirectory
40
+ run: ruff check .
41
+
42
+ - name: Run mypy type checker
43
+ # MONOREPO: Add working-directory if in subdirectory
44
+ # working-directory: ./subdirectory
45
+ run: mypy . || echo "Type checking optional"
46
+ continue-on-error: true
47
+