xtrm-tools 0.5.24 → 0.5.26

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 (261) hide show
  1. package/.claude-plugin/marketplace.json +19 -0
  2. package/.claude-plugin/plugin.json +9 -0
  3. package/README.md +9 -3
  4. package/cli/dist/index.cjs +182 -219
  5. package/cli/dist/index.cjs.map +1 -1
  6. package/cli/package.json +1 -1
  7. package/config/hooks.json +8 -0
  8. package/hooks/beads-claim-sync.mjs +2 -4
  9. package/hooks/beads-commit-gate.mjs +2 -2
  10. package/hooks/beads-edit-gate.mjs +3 -3
  11. package/hooks/beads-memory-gate.mjs +2 -2
  12. package/hooks/beads-stop-gate.mjs +2 -2
  13. package/hooks/xtrm-logger.mjs +84 -91
  14. package/hooks/xtrm-session-logger.mjs +27 -0
  15. package/hooks/xtrm-tool-logger.mjs +53 -0
  16. package/package.json +5 -1
  17. package/plugins/xtrm-tools/.claude-plugin/plugin.json +9 -0
  18. package/plugins/xtrm-tools/.mcp.json +18 -0
  19. package/plugins/xtrm-tools/hooks/README.md +61 -0
  20. package/plugins/xtrm-tools/hooks/beads-claim-sync.mjs +223 -0
  21. package/plugins/xtrm-tools/hooks/beads-commit-gate.mjs +70 -0
  22. package/plugins/xtrm-tools/hooks/beads-compact-restore.mjs +69 -0
  23. package/plugins/xtrm-tools/hooks/beads-compact-save.mjs +51 -0
  24. package/plugins/xtrm-tools/hooks/beads-edit-gate.mjs +85 -0
  25. package/plugins/xtrm-tools/hooks/beads-gate-core.mjs +236 -0
  26. package/plugins/xtrm-tools/hooks/beads-gate-messages.mjs +68 -0
  27. package/plugins/xtrm-tools/hooks/beads-gate-utils.mjs +194 -0
  28. package/plugins/xtrm-tools/hooks/beads-memory-gate.mjs +81 -0
  29. package/plugins/xtrm-tools/hooks/beads-stop-gate.mjs +53 -0
  30. package/plugins/xtrm-tools/hooks/gitnexus/gitnexus-hook.cjs +222 -0
  31. package/plugins/xtrm-tools/hooks/hooks.json +115 -0
  32. package/plugins/xtrm-tools/hooks/quality-check-env.mjs +79 -0
  33. package/plugins/xtrm-tools/hooks/quality-check.cjs +1286 -0
  34. package/plugins/xtrm-tools/hooks/quality-check.py +345 -0
  35. package/plugins/xtrm-tools/hooks/statusline.mjs +145 -0
  36. package/plugins/xtrm-tools/hooks/using-xtrm-reminder.mjs +35 -0
  37. package/plugins/xtrm-tools/hooks/worktree-boundary.mjs +33 -0
  38. package/plugins/xtrm-tools/hooks/xtrm-logger.mjs +123 -0
  39. package/plugins/xtrm-tools/hooks/xtrm-session-logger.mjs +27 -0
  40. package/plugins/xtrm-tools/hooks/xtrm-tool-logger.mjs +53 -0
  41. package/plugins/xtrm-tools/skills/README.txt +31 -0
  42. package/plugins/xtrm-tools/skills/clean-code/SKILL.md +201 -0
  43. package/plugins/xtrm-tools/skills/creating-service-skills/SKILL.md +433 -0
  44. package/plugins/xtrm-tools/skills/creating-service-skills/references/script_quality_standards.md +425 -0
  45. package/plugins/xtrm-tools/skills/creating-service-skills/references/service_skill_system_guide.md +278 -0
  46. package/plugins/xtrm-tools/skills/creating-service-skills/scripts/bootstrap.py +326 -0
  47. package/plugins/xtrm-tools/skills/creating-service-skills/scripts/deep_dive.py +304 -0
  48. package/plugins/xtrm-tools/skills/creating-service-skills/scripts/scaffolder.py +482 -0
  49. package/plugins/xtrm-tools/skills/delegating/SKILL.md +196 -0
  50. package/plugins/xtrm-tools/skills/delegating/config.yaml +210 -0
  51. package/plugins/xtrm-tools/skills/delegating/references/orchestration-protocols.md +41 -0
  52. package/plugins/xtrm-tools/skills/docker-expert/SKILL.md +409 -0
  53. package/plugins/xtrm-tools/skills/documenting/CHANGELOG.md +23 -0
  54. package/plugins/xtrm-tools/skills/documenting/README.md +148 -0
  55. package/plugins/xtrm-tools/skills/documenting/SKILL.md +113 -0
  56. package/plugins/xtrm-tools/skills/documenting/examples/example_pattern.md +70 -0
  57. package/plugins/xtrm-tools/skills/documenting/examples/example_reference.md +70 -0
  58. package/plugins/xtrm-tools/skills/documenting/examples/example_ssot_analytics.md +64 -0
  59. package/plugins/xtrm-tools/skills/documenting/examples/example_workflow.md +141 -0
  60. package/plugins/xtrm-tools/skills/documenting/references/changelog-format.md +97 -0
  61. package/plugins/xtrm-tools/skills/documenting/references/metadata-schema.md +136 -0
  62. package/plugins/xtrm-tools/skills/documenting/references/taxonomy.md +81 -0
  63. package/plugins/xtrm-tools/skills/documenting/references/versioning-rules.md +78 -0
  64. package/plugins/xtrm-tools/skills/documenting/scripts/bump_version.sh +60 -0
  65. package/plugins/xtrm-tools/skills/documenting/scripts/changelog/__init__.py +0 -0
  66. package/plugins/xtrm-tools/skills/documenting/scripts/changelog/add_entry.py +216 -0
  67. package/plugins/xtrm-tools/skills/documenting/scripts/changelog/bump_release.py +117 -0
  68. package/plugins/xtrm-tools/skills/documenting/scripts/changelog/init_changelog.py +54 -0
  69. package/plugins/xtrm-tools/skills/documenting/scripts/changelog/validate_changelog.py +128 -0
  70. package/plugins/xtrm-tools/skills/documenting/scripts/drift_detector.py +266 -0
  71. package/plugins/xtrm-tools/skills/documenting/scripts/generate_template.py +311 -0
  72. package/plugins/xtrm-tools/skills/documenting/scripts/list_by_category.sh +84 -0
  73. package/plugins/xtrm-tools/skills/documenting/scripts/orchestrator.py +255 -0
  74. package/plugins/xtrm-tools/skills/documenting/scripts/validate_metadata.py +242 -0
  75. package/plugins/xtrm-tools/skills/documenting/templates/CHANGELOG.md.template +13 -0
  76. package/plugins/xtrm-tools/skills/documenting/tests/integration_test.sh +70 -0
  77. package/plugins/xtrm-tools/skills/documenting/tests/test_changelog.py +201 -0
  78. package/plugins/xtrm-tools/skills/documenting/tests/test_drift_detector.py +80 -0
  79. package/plugins/xtrm-tools/skills/documenting/tests/test_orchestrator.py +52 -0
  80. package/plugins/xtrm-tools/skills/documenting/tests/test_validate_metadata.py +64 -0
  81. package/plugins/xtrm-tools/skills/find-skills/SKILL.md +133 -0
  82. package/plugins/xtrm-tools/skills/gitnexus-debugging/SKILL.md +85 -0
  83. package/plugins/xtrm-tools/skills/gitnexus-exploring/SKILL.md +75 -0
  84. package/plugins/xtrm-tools/skills/gitnexus-impact-analysis/SKILL.md +94 -0
  85. package/plugins/xtrm-tools/skills/gitnexus-refactoring/SKILL.md +113 -0
  86. package/plugins/xtrm-tools/skills/hook-development/SKILL.md +797 -0
  87. package/plugins/xtrm-tools/skills/hook-development/examples/load-context.sh +55 -0
  88. package/plugins/xtrm-tools/skills/hook-development/examples/quality-check.js +1168 -0
  89. package/plugins/xtrm-tools/skills/hook-development/examples/validate-bash.sh +43 -0
  90. package/plugins/xtrm-tools/skills/hook-development/examples/validate-write.sh +38 -0
  91. package/plugins/xtrm-tools/skills/hook-development/references/advanced.md +527 -0
  92. package/plugins/xtrm-tools/skills/hook-development/references/migration.md +369 -0
  93. package/plugins/xtrm-tools/skills/hook-development/references/patterns.md +412 -0
  94. package/plugins/xtrm-tools/skills/hook-development/scripts/README.md +164 -0
  95. package/plugins/xtrm-tools/skills/hook-development/scripts/hook-linter.sh +153 -0
  96. package/plugins/xtrm-tools/skills/hook-development/scripts/test-hook.sh +252 -0
  97. package/plugins/xtrm-tools/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
  98. package/plugins/xtrm-tools/skills/obsidian-cli/SKILL.md +106 -0
  99. package/plugins/xtrm-tools/skills/orchestrating-agents/SKILL.md +135 -0
  100. package/plugins/xtrm-tools/skills/orchestrating-agents/config.yaml +45 -0
  101. package/plugins/xtrm-tools/skills/orchestrating-agents/references/agent-context-integration.md +37 -0
  102. package/plugins/xtrm-tools/skills/orchestrating-agents/references/examples.md +45 -0
  103. package/plugins/xtrm-tools/skills/orchestrating-agents/references/handover-protocol.md +31 -0
  104. package/plugins/xtrm-tools/skills/orchestrating-agents/references/workflows.md +42 -0
  105. package/plugins/xtrm-tools/skills/orchestrating-agents/scripts/detect_neighbors.py +23 -0
  106. package/plugins/xtrm-tools/skills/prompt-improving/README.md +162 -0
  107. package/plugins/xtrm-tools/skills/prompt-improving/SKILL.md +74 -0
  108. package/plugins/xtrm-tools/skills/prompt-improving/references/analysis_commands.md +24 -0
  109. package/plugins/xtrm-tools/skills/prompt-improving/references/chain_of_thought.md +24 -0
  110. package/plugins/xtrm-tools/skills/prompt-improving/references/mcp_definitions.md +20 -0
  111. package/plugins/xtrm-tools/skills/prompt-improving/references/multishot.md +23 -0
  112. package/plugins/xtrm-tools/skills/prompt-improving/references/xml_core.md +60 -0
  113. package/plugins/xtrm-tools/skills/python-testing/SKILL.md +815 -0
  114. package/plugins/xtrm-tools/skills/scoping-service-skills/SKILL.md +231 -0
  115. package/plugins/xtrm-tools/skills/scoping-service-skills/scripts/scope.py +74 -0
  116. package/plugins/xtrm-tools/skills/senior-backend/SKILL.md +209 -0
  117. package/plugins/xtrm-tools/skills/senior-backend/references/api_design_patterns.md +103 -0
  118. package/plugins/xtrm-tools/skills/senior-backend/references/backend_security_practices.md +103 -0
  119. package/plugins/xtrm-tools/skills/senior-backend/references/database_optimization_guide.md +103 -0
  120. package/plugins/xtrm-tools/skills/senior-backend/scripts/api_load_tester.py +114 -0
  121. package/plugins/xtrm-tools/skills/senior-backend/scripts/api_scaffolder.py +114 -0
  122. package/plugins/xtrm-tools/skills/senior-backend/scripts/database_migration_tool.py +114 -0
  123. package/plugins/xtrm-tools/skills/senior-data-scientist/SKILL.md +226 -0
  124. package/plugins/xtrm-tools/skills/senior-data-scientist/references/experiment_design_frameworks.md +80 -0
  125. package/plugins/xtrm-tools/skills/senior-data-scientist/references/feature_engineering_patterns.md +80 -0
  126. package/plugins/xtrm-tools/skills/senior-data-scientist/references/statistical_methods_advanced.md +80 -0
  127. package/plugins/xtrm-tools/skills/senior-data-scientist/scripts/experiment_designer.py +100 -0
  128. package/plugins/xtrm-tools/skills/senior-data-scientist/scripts/feature_engineering_pipeline.py +100 -0
  129. package/plugins/xtrm-tools/skills/senior-data-scientist/scripts/model_evaluation_suite.py +100 -0
  130. package/plugins/xtrm-tools/skills/senior-devops/SKILL.md +209 -0
  131. package/plugins/xtrm-tools/skills/senior-devops/references/cicd_pipeline_guide.md +103 -0
  132. package/plugins/xtrm-tools/skills/senior-devops/references/deployment_strategies.md +103 -0
  133. package/plugins/xtrm-tools/skills/senior-devops/references/infrastructure_as_code.md +103 -0
  134. package/plugins/xtrm-tools/skills/senior-devops/scripts/deployment_manager.py +114 -0
  135. package/plugins/xtrm-tools/skills/senior-devops/scripts/pipeline_generator.py +114 -0
  136. package/plugins/xtrm-tools/skills/senior-devops/scripts/terraform_scaffolder.py +114 -0
  137. package/plugins/xtrm-tools/skills/senior-security/SKILL.md +209 -0
  138. package/plugins/xtrm-tools/skills/senior-security/references/cryptography_implementation.md +103 -0
  139. package/plugins/xtrm-tools/skills/senior-security/references/penetration_testing_guide.md +103 -0
  140. package/plugins/xtrm-tools/skills/senior-security/references/security_architecture_patterns.md +103 -0
  141. package/plugins/xtrm-tools/skills/senior-security/scripts/pentest_automator.py +114 -0
  142. package/plugins/xtrm-tools/skills/senior-security/scripts/security_auditor.py +114 -0
  143. package/plugins/xtrm-tools/skills/senior-security/scripts/threat_modeler.py +114 -0
  144. package/plugins/xtrm-tools/skills/skill-creator/LICENSE.txt +202 -0
  145. package/plugins/xtrm-tools/skills/skill-creator/SKILL.md +479 -0
  146. package/plugins/xtrm-tools/skills/skill-creator/agents/analyzer.md +274 -0
  147. package/plugins/xtrm-tools/skills/skill-creator/agents/comparator.md +202 -0
  148. package/plugins/xtrm-tools/skills/skill-creator/agents/grader.md +223 -0
  149. package/plugins/xtrm-tools/skills/skill-creator/assets/eval_review.html +146 -0
  150. package/plugins/xtrm-tools/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  151. package/plugins/xtrm-tools/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  152. package/plugins/xtrm-tools/skills/skill-creator/references/schemas.md +430 -0
  153. package/plugins/xtrm-tools/skills/skill-creator/scripts/__init__.py +0 -0
  154. package/plugins/xtrm-tools/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  155. package/plugins/xtrm-tools/skills/skill-creator/scripts/generate_report.py +326 -0
  156. package/plugins/xtrm-tools/skills/skill-creator/scripts/improve_description.py +248 -0
  157. package/plugins/xtrm-tools/skills/skill-creator/scripts/package_skill.py +136 -0
  158. package/plugins/xtrm-tools/skills/skill-creator/scripts/quick_validate.py +103 -0
  159. package/plugins/xtrm-tools/skills/skill-creator/scripts/run_eval.py +310 -0
  160. package/plugins/xtrm-tools/skills/skill-creator/scripts/run_loop.py +332 -0
  161. package/plugins/xtrm-tools/skills/skill-creator/scripts/utils.py +47 -0
  162. package/plugins/xtrm-tools/skills/sync-docs/SKILL.md +155 -0
  163. package/plugins/xtrm-tools/skills/sync-docs/evals/evals.json +89 -0
  164. package/plugins/xtrm-tools/skills/sync-docs/references/doc-structure.md +99 -0
  165. package/plugins/xtrm-tools/skills/sync-docs/references/schema.md +103 -0
  166. package/plugins/xtrm-tools/skills/sync-docs/scripts/changelog/add_entry.py +216 -0
  167. package/plugins/xtrm-tools/skills/sync-docs/scripts/context_gatherer.py +240 -0
  168. package/plugins/xtrm-tools/skills/sync-docs/scripts/doc_structure_analyzer.py +495 -0
  169. package/plugins/xtrm-tools/skills/sync-docs/scripts/drift_detector.py +563 -0
  170. package/plugins/xtrm-tools/skills/sync-docs/scripts/validate_doc.py +365 -0
  171. package/plugins/xtrm-tools/skills/sync-docs/scripts/validate_metadata.py +185 -0
  172. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/benchmark.json +293 -0
  173. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/benchmark.md +13 -0
  174. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +27 -0
  175. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +210 -0
  176. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +28 -0
  177. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  178. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +101 -0
  179. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +28 -0
  180. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  181. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +5 -0
  182. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +27 -0
  183. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +198 -0
  184. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +28 -0
  185. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  186. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +94 -0
  187. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +28 -0
  188. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +1 -0
  189. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +27 -0
  190. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +237 -0
  191. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +28 -0
  192. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  193. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +134 -0
  194. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +28 -0
  195. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +1 -0
  196. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/benchmark.json +297 -0
  197. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/benchmark.md +13 -0
  198. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +27 -0
  199. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +137 -0
  200. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +92 -0
  201. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  202. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +134 -0
  203. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +86 -0
  204. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +1 -0
  205. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +27 -0
  206. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +193 -0
  207. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +72 -0
  208. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  209. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +211 -0
  210. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +91 -0
  211. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  212. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +27 -0
  213. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +182 -0
  214. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  215. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  216. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +222 -0
  217. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +88 -0
  218. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  219. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/benchmark.json +298 -0
  220. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/benchmark.md +13 -0
  221. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +27 -0
  222. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +125 -0
  223. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +97 -0
  224. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +5 -0
  225. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +144 -0
  226. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +78 -0
  227. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  228. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +27 -0
  229. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +104 -0
  230. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +91 -0
  231. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +5 -0
  232. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +79 -0
  233. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +82 -0
  234. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  235. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +27 -0
  236. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +302 -0
  237. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +33 -0
  238. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +114 -0
  239. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +118 -0
  240. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +38 -0
  241. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +158 -0
  242. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  243. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +5 -0
  244. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +71 -0
  245. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +90 -0
  246. package/plugins/xtrm-tools/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  247. package/plugins/xtrm-tools/skills/test-planning/SKILL.md +208 -0
  248. package/plugins/xtrm-tools/skills/test-planning/evals/evals.json +23 -0
  249. package/plugins/xtrm-tools/skills/updating-service-skills/SKILL.md +136 -0
  250. package/plugins/xtrm-tools/skills/updating-service-skills/scripts/drift_detector.py +222 -0
  251. package/plugins/xtrm-tools/skills/using-TDD/SKILL.md +410 -0
  252. package/plugins/xtrm-tools/skills/using-quality-gates/SKILL.md +254 -0
  253. package/plugins/xtrm-tools/skills/using-serena-lsp/README.md +8 -0
  254. package/plugins/xtrm-tools/skills/using-serena-lsp/REFERENCE.md +194 -0
  255. package/plugins/xtrm-tools/skills/using-serena-lsp/SKILL.md +82 -0
  256. package/plugins/xtrm-tools/skills/using-service-skills/SKILL.md +108 -0
  257. package/plugins/xtrm-tools/skills/using-service-skills/scripts/cataloger.py +74 -0
  258. package/plugins/xtrm-tools/skills/using-service-skills/scripts/skill_activator.py +152 -0
  259. package/plugins/xtrm-tools/skills/using-service-skills/scripts/test_skill_activator.py +58 -0
  260. package/plugins/xtrm-tools/skills/using-xtrm/SKILL.md +124 -0
  261. package/plugins/xtrm-tools/skills/xt-end/SKILL.md +128 -0
@@ -0,0 +1,222 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * GitNexus Claude Code Hook — PostToolUse enrichment
4
+ *
5
+ * Fires AFTER Bash/Grep/Read/Glob/Serena tools complete.
6
+ * Extracts patterns from both tool input AND output, runs
7
+ * `gitnexus augment <pattern>`, and injects a [GitNexus: ...]
8
+ * block into Claude's context — mirroring pi-gitnexus behavior.
9
+ *
10
+ * Features:
11
+ * - PostToolUse (vs old PreToolUse) — enriches actual result
12
+ * - Session-keyed dedup cache (/tmp) — no redundant lookups
13
+ * - Pattern extraction from output content (grep-style scanning)
14
+ * - Serena tool support — extracts symbol names from name_path
15
+ * - Graceful failure — always exits 0
16
+ */
17
+
18
+ 'use strict';
19
+
20
+ const fs = require('fs');
21
+ const path = require('path');
22
+ const os = require('os');
23
+ const { spawnSync } = require('child_process');
24
+
25
+ const CODE_EXTS = new Set([
26
+ '.ts', '.tsx', '.js', '.mjs', '.cjs', '.py', '.go', '.rs',
27
+ '.java', '.kt', '.cpp', '.c', '.h', '.rb', '.php', '.cs',
28
+ ]);
29
+
30
+ const SERENA_SYMBOL_TOOLS = new Set([
31
+ 'mcp__serena__find_symbol',
32
+ 'mcp__serena__find_referencing_symbols',
33
+ 'mcp__serena__replace_symbol_body',
34
+ 'mcp__serena__insert_after_symbol',
35
+ 'mcp__serena__insert_before_symbol',
36
+ ]);
37
+
38
+ const SERENA_FILE_TOOLS = new Set([
39
+ 'mcp__serena__get_symbols_overview',
40
+ 'mcp__serena__search_for_pattern',
41
+ ]);
42
+
43
+ const SERENA_RENAME = 'mcp__serena__rename_symbol';
44
+
45
+ function readInput() {
46
+ try {
47
+ return JSON.parse(fs.readFileSync(0, 'utf-8'));
48
+ } catch {
49
+ return {};
50
+ }
51
+ }
52
+
53
+ function findGitNexusIndex(startDir) {
54
+ let dir = startDir || process.cwd();
55
+ for (let i = 0; i < 6; i++) {
56
+ if (fs.existsSync(path.join(dir, '.gitnexus'))) return true;
57
+ const parent = path.dirname(dir);
58
+ if (parent === dir) break;
59
+ dir = parent;
60
+ }
61
+ return false;
62
+ }
63
+
64
+ function getCacheFile(sessionId) {
65
+ const id = sessionId ? sessionId.replace(/[^a-zA-Z0-9_-]/g, '_') : 'default';
66
+ return path.join(os.tmpdir(), `gitnexus-aug-${id}`);
67
+ }
68
+
69
+ function loadCache(cacheFile) {
70
+ try {
71
+ return new Set(fs.readFileSync(cacheFile, 'utf-8').split('\n').filter(Boolean));
72
+ } catch {
73
+ return new Set();
74
+ }
75
+ }
76
+
77
+ function saveToCache(cacheFile, pattern) {
78
+ try {
79
+ fs.appendFileSync(cacheFile, pattern + '\n');
80
+ } catch { /* graceful */ }
81
+ }
82
+
83
+ function symbolFromNamePath(namePath) {
84
+ if (!namePath) return null;
85
+ const parts = namePath.split('/').filter(Boolean);
86
+ const last = parts[parts.length - 1];
87
+ return last ? last.replace(/\[\d+\]$/, '') : null;
88
+ }
89
+
90
+ function symbolFromFilePath(filePath) {
91
+ if (!filePath) return null;
92
+ const ext = path.extname(filePath);
93
+ if (!CODE_EXTS.has(ext)) return null;
94
+ return path.basename(filePath, ext);
95
+ }
96
+
97
+ function extractFilePatternsFromOutput(content) {
98
+ if (!content || typeof content !== 'string') return [];
99
+ const patterns = new Set();
100
+ const lines = content.split('\n').slice(0, 50);
101
+ for (const line of lines) {
102
+ const m = line.match(/^([^\s:]+\.[a-z]{1,5}):\d+:/);
103
+ if (m) {
104
+ const ext = path.extname(m[1]);
105
+ if (CODE_EXTS.has(ext)) patterns.add(path.basename(m[1], ext));
106
+ }
107
+ }
108
+ return [...patterns];
109
+ }
110
+
111
+ function extractPatterns(toolName, toolInput, toolResponse) {
112
+ const patterns = [];
113
+ const content = typeof toolResponse === 'string'
114
+ ? toolResponse
115
+ : (toolResponse?.content ?? toolResponse?.output ?? '');
116
+
117
+ if (toolName === 'Read') {
118
+ const sym = symbolFromFilePath(toolInput.file_path);
119
+ if (sym) patterns.push(sym);
120
+ }
121
+
122
+ if (toolName === 'Grep') {
123
+ const raw = toolInput.pattern || '';
124
+ const cleaned = raw.replace(/[.*+?^${}()|[\]\\]/g, '').trim();
125
+ if (cleaned.length >= 3) patterns.push(cleaned);
126
+ patterns.push(...extractFilePatternsFromOutput(content));
127
+ }
128
+
129
+ if (toolName === 'Glob') {
130
+ const raw = toolInput.pattern || '';
131
+ const m = raw.match(/([a-zA-Z][a-zA-Z0-9_-]{2,})/);
132
+ if (m) patterns.push(m[1]);
133
+ patterns.push(...extractFilePatternsFromOutput(
134
+ Array.isArray(toolResponse) ? toolResponse.join('\n') : String(toolResponse || '')
135
+ ));
136
+ }
137
+
138
+ if (toolName === 'Bash') {
139
+ const cmd = toolInput.command || '';
140
+ if (!/\brg\b|\bgrep\b/.test(cmd)) return [];
141
+ const tokens = cmd.split(/\s+/);
142
+ let foundCmd = false, skipNext = false;
143
+ const flagsWithValues = new Set(['-e','-f','-m','-A','-B','-C','-g','--glob','-t','--type','--include','--exclude']);
144
+ for (const token of tokens) {
145
+ if (skipNext) { skipNext = false; continue; }
146
+ if (!foundCmd) { if (/\brg$|\bgrep$/.test(token)) foundCmd = true; continue; }
147
+ if (token.startsWith('-')) { if (flagsWithValues.has(token)) skipNext = true; continue; }
148
+ const cleaned = token.replace(/['"]/g, '').replace(/[.*+?^${}()|[\]\\]/g, '').trim();
149
+ if (cleaned.length >= 3) { patterns.push(cleaned); break; }
150
+ }
151
+ patterns.push(...extractFilePatternsFromOutput(content));
152
+ }
153
+
154
+ if (SERENA_SYMBOL_TOOLS.has(toolName)) {
155
+ const sym = symbolFromNamePath(toolInput.name_path_pattern || toolInput.name_path);
156
+ if (sym) patterns.push(sym);
157
+ }
158
+
159
+ if (toolName === SERENA_RENAME) {
160
+ if (toolInput.symbol_name) patterns.push(toolInput.symbol_name);
161
+ }
162
+
163
+ if (SERENA_FILE_TOOLS.has(toolName)) {
164
+ const sym = symbolFromFilePath(toolInput.relative_path || toolInput.file_path);
165
+ if (sym) patterns.push(sym);
166
+ const sub = toolInput.substring || toolInput.pattern || '';
167
+ const cleaned = sub.replace(/[.*+?^${}()|[\]\\]/g, '').trim();
168
+ if (cleaned.length >= 3) patterns.push(cleaned);
169
+ }
170
+
171
+ return [...new Set(patterns.filter(p => p && p.length >= 3))];
172
+ }
173
+
174
+ function runAugment(pattern, cwd) {
175
+ try {
176
+ const child = spawnSync('gitnexus', ['augment', pattern], {
177
+ encoding: 'utf-8',
178
+ timeout: 8000,
179
+ cwd,
180
+ stdio: ['pipe', 'pipe', 'pipe'],
181
+ });
182
+ return (child.stderr || '').trim();
183
+ } catch {
184
+ return '';
185
+ }
186
+ }
187
+
188
+ function main() {
189
+ try {
190
+ const input = readInput();
191
+ if (input.hook_event_name !== 'PostToolUse') return;
192
+
193
+ const cwd = input.cwd || process.cwd();
194
+ if (!findGitNexusIndex(cwd)) return;
195
+
196
+ const toolName = input.tool_name || '';
197
+ const toolInput = input.tool_input || {};
198
+ const toolResponse = input.tool_response ?? input.tool_result ?? '';
199
+
200
+ const patterns = extractPatterns(toolName, toolInput, toolResponse);
201
+ if (patterns.length === 0) return;
202
+
203
+ const cacheFile = getCacheFile(input.session_id);
204
+ const cache = loadCache(cacheFile);
205
+
206
+ const results = [];
207
+ for (const pattern of patterns) {
208
+ if (cache.has(pattern)) continue;
209
+ const out = runAugment(pattern, cwd);
210
+ saveToCache(cacheFile, pattern);
211
+ if (out) results.push(out);
212
+ }
213
+
214
+ if (results.length > 0) {
215
+ process.stdout.write('[GitNexus]\n' + results.join('\n\n') + '\n');
216
+ }
217
+ } catch (err) {
218
+ process.stderr.write('GitNexus hook error: ' + err.message + '\n');
219
+ }
220
+ }
221
+
222
+ main();
@@ -0,0 +1,115 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/using-xtrm-reminder.mjs"
9
+ },
10
+ {
11
+ "type": "command",
12
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/beads-compact-restore.mjs",
13
+ "timeout": 5000
14
+ },
15
+ {
16
+ "type": "command",
17
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/quality-check-env.mjs",
18
+ "timeout": 5000
19
+ }
20
+ ]
21
+ }
22
+ ],
23
+ "PreToolUse": [
24
+ {
25
+ "matcher": "Edit|Write|MultiEdit|NotebookEdit|mcp__serena__rename_symbol|mcp__serena__replace_symbol_body|mcp__serena__insert_after_symbol|mcp__serena__insert_before_symbol",
26
+ "hooks": [
27
+ {
28
+ "type": "command",
29
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/worktree-boundary.mjs",
30
+ "timeout": 2000
31
+ },
32
+ {
33
+ "type": "command",
34
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/beads-edit-gate.mjs",
35
+ "timeout": 5000
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "matcher": "Bash",
41
+ "hooks": [
42
+ {
43
+ "type": "command",
44
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/beads-commit-gate.mjs",
45
+ "timeout": 5000
46
+ }
47
+ ]
48
+ }
49
+ ],
50
+ "PostToolUse": [
51
+ {
52
+ "matcher": "Bash|execute_shell_command|bash",
53
+ "hooks": [
54
+ {
55
+ "type": "command",
56
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/beads-claim-sync.mjs",
57
+ "timeout": 5000
58
+ }
59
+ ]
60
+ },
61
+ {
62
+ "matcher": "Edit|Write|MultiEdit|NotebookEdit|mcp__serena__rename_symbol|mcp__serena__replace_symbol_body|mcp__serena__insert_after_symbol|mcp__serena__insert_before_symbol",
63
+ "hooks": [
64
+ {
65
+ "type": "command",
66
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/quality-check.cjs",
67
+ "timeout": 30000
68
+ },
69
+ {
70
+ "type": "command",
71
+ "command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/quality-check.py",
72
+ "timeout": 30000
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "matcher": "Bash|Grep|Read|Glob|mcp__serena__find_symbol|mcp__serena__get_symbols_overview|mcp__serena__search_for_pattern|mcp__serena__find_referencing_symbols|mcp__serena__replace_symbol_body|mcp__serena__insert_after_symbol|mcp__serena__insert_before_symbol|mcp__serena__rename_symbol",
78
+ "hooks": [
79
+ {
80
+ "type": "command",
81
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/gitnexus/gitnexus-hook.cjs",
82
+ "timeout": 10000
83
+ }
84
+ ]
85
+ }
86
+ ],
87
+ "Stop": [
88
+ {
89
+ "hooks": [
90
+ {
91
+ "type": "command",
92
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/beads-stop-gate.mjs",
93
+ "timeout": 5000
94
+ },
95
+ {
96
+ "type": "command",
97
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/beads-memory-gate.mjs",
98
+ "timeout": 8000
99
+ }
100
+ ]
101
+ }
102
+ ],
103
+ "PreCompact": [
104
+ {
105
+ "hooks": [
106
+ {
107
+ "type": "command",
108
+ "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/beads-compact-save.mjs",
109
+ "timeout": 5000
110
+ }
111
+ ]
112
+ }
113
+ ]
114
+ }
115
+ }
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ // SessionStart hook — verify quality gate environment is intact.
3
+ // Checks for tsc, eslint, ruff so the agent knows early if enforcement
4
+ // is silently degraded. Exits 0 always (informational only).
5
+
6
+ import { readFileSync, existsSync } from 'node:fs';
7
+ import { execSync } from 'node:child_process';
8
+ import path from 'node:path';
9
+
10
+ let input;
11
+ try {
12
+ input = JSON.parse(readFileSync(0, 'utf8'));
13
+ } catch {
14
+ process.exit(0);
15
+ }
16
+
17
+ const cwd = input.cwd ?? process.env.CLAUDE_PROJECT_DIR ?? process.cwd();
18
+
19
+ // Only relevant in projects that have quality gates wired
20
+ const pluginRoot = process.env.CLAUDE_PLUGIN_ROOT ?? '';
21
+ const hookPresent =
22
+ existsSync(path.join(pluginRoot, 'hooks', 'quality-check.cjs')) ||
23
+ existsSync(path.join(cwd, '.claude', 'hooks', 'quality-check.cjs'));
24
+
25
+ if (!hookPresent) process.exit(0);
26
+
27
+ function which(cmd) {
28
+ try {
29
+ execSync(`which ${cmd}`, { stdio: 'ignore' });
30
+ return true;
31
+ } catch {
32
+ // fall through to local node_modules probe
33
+ }
34
+ // Check node_modules/.bin/ walking up from cwd
35
+ let dir = cwd;
36
+ while (true) {
37
+ if (existsSync(path.join(dir, 'node_modules', '.bin', cmd))) return true;
38
+ const parent = path.dirname(dir);
39
+ if (parent === dir) break;
40
+ dir = parent;
41
+ }
42
+ return false;
43
+ }
44
+
45
+ const warnings = [];
46
+
47
+ // CLAUDE_PROJECT_DIR check
48
+ if (!process.env.CLAUDE_PROJECT_DIR) {
49
+ warnings.push('CLAUDE_PROJECT_DIR is not set — quality gate may target wrong directory');
50
+ }
51
+
52
+ // TypeScript project checks
53
+ const hasTsConfig = existsSync(path.join(cwd, 'tsconfig.json')) ||
54
+ existsSync(path.join(cwd, 'cli', 'tsconfig.json'));
55
+
56
+ if (hasTsConfig) {
57
+ if (!which('tsc')) warnings.push('tsc not found — TypeScript compilation check will be skipped');
58
+ const hasEslintConfig = ['eslint.config.js', 'eslint.config.mjs', '.eslintrc.js', '.eslintrc.json', '.eslintrc.yml']
59
+ .some(f => existsSync(path.join(cwd, f)));
60
+ if (hasEslintConfig && !which('eslint')) warnings.push('eslint not found — ESLint check will be skipped');
61
+ }
62
+
63
+ // Python project checks
64
+ const hasPyFiles = existsSync(path.join(cwd, 'pyproject.toml')) ||
65
+ existsSync(path.join(cwd, 'setup.py')) ||
66
+ existsSync(path.join(cwd, 'requirements.txt'));
67
+
68
+ if (hasPyFiles) {
69
+ if (!which('ruff')) warnings.push('ruff not found — Python lint check will be skipped');
70
+ }
71
+
72
+ if (warnings.length === 0) process.exit(0);
73
+
74
+ const msg = `⚠️ Quality gate environment issue(s) detected:\n${warnings.map(w => ` • ${w}`).join('\n')}\nFix these to ensure quality gates enforce correctly.`;
75
+
76
+ process.stdout.write(JSON.stringify({
77
+ hookSpecificOutput: { additionalSystemPrompt: msg },
78
+ }));
79
+ process.exit(0);