xtrm-tools 0.5.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 (333) hide show
  1. package/CHANGELOG.md +504 -0
  2. package/README.md +201 -0
  3. package/cli/dist/index.cjs +57378 -0
  4. package/cli/dist/index.cjs.map +1 -0
  5. package/cli/dist/index.d.cts +2 -0
  6. package/cli/package.json +47 -0
  7. package/config/.env.example +40 -0
  8. package/config/hooks.json +72 -0
  9. package/config/instructions/agents-top.md +30 -0
  10. package/config/instructions/claude-top.md +30 -0
  11. package/config/mcp_servers.json +57 -0
  12. package/config/mcp_servers_optional.json +53 -0
  13. package/config/pi/auth.json.template +14 -0
  14. package/config/pi/extensions/auto-session-name/index.ts +29 -0
  15. package/config/pi/extensions/auto-session-name/package.json +16 -0
  16. package/config/pi/extensions/auto-update/index.ts +71 -0
  17. package/config/pi/extensions/auto-update/package.json +16 -0
  18. package/config/pi/extensions/beads/index.ts +166 -0
  19. package/config/pi/extensions/beads/package.json +16 -0
  20. package/config/pi/extensions/bg-process/index.ts +230 -0
  21. package/config/pi/extensions/bg-process/package.json +16 -0
  22. package/config/pi/extensions/compact-header/index.ts +69 -0
  23. package/config/pi/extensions/compact-header/package.json +16 -0
  24. package/config/pi/extensions/core/adapter.ts +52 -0
  25. package/config/pi/extensions/core/guard-rules.ts +102 -0
  26. package/config/pi/extensions/core/lib.ts +3 -0
  27. package/config/pi/extensions/core/logger.ts +45 -0
  28. package/config/pi/extensions/core/runner.ts +71 -0
  29. package/config/pi/extensions/core/session-state.ts +59 -0
  30. package/config/pi/extensions/custom-footer/index.ts +160 -0
  31. package/config/pi/extensions/custom-footer/package.json +16 -0
  32. package/config/pi/extensions/custom-provider-qwen-cli/index.ts +363 -0
  33. package/config/pi/extensions/custom-provider-qwen-cli/package.json +1 -0
  34. package/config/pi/extensions/git-checkpoint/index.ts +53 -0
  35. package/config/pi/extensions/git-checkpoint/package.json +16 -0
  36. package/config/pi/extensions/minimal-mode/index.ts +201 -0
  37. package/config/pi/extensions/minimal-mode/package.json +16 -0
  38. package/config/pi/extensions/plan-mode/README.md +65 -0
  39. package/config/pi/extensions/plan-mode/index.ts +417 -0
  40. package/config/pi/extensions/plan-mode/package.json +12 -0
  41. package/config/pi/extensions/plan-mode/utils.ts +324 -0
  42. package/config/pi/extensions/quality-gates/index.ts +67 -0
  43. package/config/pi/extensions/quality-gates/package.json +16 -0
  44. package/config/pi/extensions/service-skills/index.ts +108 -0
  45. package/config/pi/extensions/service-skills/package.json +16 -0
  46. package/config/pi/extensions/session-flow/index.ts +131 -0
  47. package/config/pi/extensions/session-flow/package.json +16 -0
  48. package/config/pi/extensions/todo/index.ts +299 -0
  49. package/config/pi/extensions/todo/package.json +16 -0
  50. package/config/pi/extensions/xtrm-loader/index.ts +89 -0
  51. package/config/pi/extensions/xtrm-loader/package.json +16 -0
  52. package/config/pi/install-schema.json +44 -0
  53. package/config/pi/models.json.template +76 -0
  54. package/config/pi/pi-worktrees-settings.json +6 -0
  55. package/config/pi/settings.json.template +16 -0
  56. package/config/settings.json +70 -0
  57. package/hooks/README.md +75 -0
  58. package/hooks/agent_context.py +105 -0
  59. package/hooks/beads-claim-sync.mjs +166 -0
  60. package/hooks/beads-commit-gate.mjs +55 -0
  61. package/hooks/beads-compact-restore.mjs +69 -0
  62. package/hooks/beads-compact-save.mjs +51 -0
  63. package/hooks/beads-edit-gate.mjs +45 -0
  64. package/hooks/beads-gate-core.mjs +215 -0
  65. package/hooks/beads-gate-messages.mjs +87 -0
  66. package/hooks/beads-gate-utils.mjs +185 -0
  67. package/hooks/beads-memory-gate.mjs +61 -0
  68. package/hooks/beads-stop-gate.mjs +32 -0
  69. package/hooks/branch-state.mjs +39 -0
  70. package/hooks/gitnexus/gitnexus-hook.cjs +222 -0
  71. package/hooks/guard-rules.mjs +118 -0
  72. package/hooks/hooks.json +116 -0
  73. package/hooks/main-guard-post-push.mjs +71 -0
  74. package/hooks/main-guard.mjs +119 -0
  75. package/hooks/quality-check.cjs +1286 -0
  76. package/hooks/quality-check.py +345 -0
  77. package/hooks/serena-workflow-reminder.py +74 -0
  78. package/package.json +77 -0
  79. package/project-skills/quality-gates/.claude/hooks/hook-config.json +66 -0
  80. package/project-skills/quality-gates/.claude/hooks/quality-check.cjs +1286 -0
  81. package/project-skills/quality-gates/.claude/hooks/quality-check.py +334 -0
  82. package/project-skills/quality-gates/.claude/settings.json +3 -0
  83. package/project-skills/quality-gates/.claude/skills/using-quality-gates/SKILL.md +254 -0
  84. package/project-skills/quality-gates/README.md +109 -0
  85. package/project-skills/quality-gates/evals/evals.json +181 -0
  86. package/project-skills/quality-gates/workspace/iteration-1/FINAL-EVAL-SUMMARY.md +75 -0
  87. package/project-skills/quality-gates/workspace/iteration-1/edge-case-auto-fix-verification/with_skill/outputs/response.md +59 -0
  88. package/project-skills/quality-gates/workspace/iteration-1/edge-case-mixed-language-project/with_skill/outputs/response.md +60 -0
  89. package/project-skills/quality-gates/workspace/iteration-1/eval-summary.md +105 -0
  90. package/project-skills/quality-gates/workspace/iteration-1/partial-install-python-only/with_skill/outputs/response.md +93 -0
  91. package/project-skills/quality-gates/workspace/iteration-1/python-refactor-request/with_skill/outputs/response.md +104 -0
  92. package/project-skills/quality-gates/workspace/iteration-1/quality-gate-error-fix/with_skill/outputs/response.md +74 -0
  93. package/project-skills/quality-gates/workspace/iteration-1/should-not-trigger-general-chat/with_skill/outputs/response.md +18 -0
  94. package/project-skills/quality-gates/workspace/iteration-1/should-not-trigger-math-question/with_skill/outputs/response.md +18 -0
  95. package/project-skills/quality-gates/workspace/iteration-1/should-not-trigger-unrelated-coding/with_skill/outputs/response.md +56 -0
  96. package/project-skills/quality-gates/workspace/iteration-1/tdd-guard-blocking-confusion/with_skill/outputs/response.md +67 -0
  97. package/project-skills/quality-gates/workspace/iteration-1/typescript-feature-with-tests/with_skill/outputs/response.md +97 -0
  98. package/project-skills/service-skills-set/.claude/git-hooks/doc_reminder.py +67 -0
  99. package/project-skills/service-skills-set/.claude/git-hooks/skill_staleness.py +194 -0
  100. package/project-skills/service-skills-set/.claude/service-registry.json +4 -0
  101. package/project-skills/service-skills-set/.claude/settings.json +37 -0
  102. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/SKILL.md +433 -0
  103. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/references/script_quality_standards.md +425 -0
  104. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/references/service_skill_system_guide.md +278 -0
  105. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/scripts/bootstrap.py +308 -0
  106. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/scripts/deep_dive.py +304 -0
  107. package/project-skills/service-skills-set/.claude/skills/creating-service-skills/scripts/scaffolder.py +482 -0
  108. package/project-skills/service-skills-set/.claude/skills/scoping-service-skills/SKILL.md +231 -0
  109. package/project-skills/service-skills-set/.claude/skills/scoping-service-skills/scripts/scope.py +74 -0
  110. package/project-skills/service-skills-set/.claude/skills/updating-service-skills/SKILL.md +136 -0
  111. package/project-skills/service-skills-set/.claude/skills/updating-service-skills/scripts/drift_detector.py +222 -0
  112. package/project-skills/service-skills-set/.claude/skills/using-service-skills/SKILL.md +108 -0
  113. package/project-skills/service-skills-set/.claude/skills/using-service-skills/scripts/cataloger.py +74 -0
  114. package/project-skills/service-skills-set/.claude/skills/using-service-skills/scripts/skill_activator.py +152 -0
  115. package/project-skills/service-skills-set/README.md +93 -0
  116. package/project-skills/service-skills-set/install-service-skills.py +193 -0
  117. package/project-skills/service-skills-set/service-skills-readme.md +236 -0
  118. package/skills/README.txt +31 -0
  119. package/skills/clean-code/SKILL.md +201 -0
  120. package/skills/creating-service-skills/SKILL.md +433 -0
  121. package/skills/creating-service-skills/references/script_quality_standards.md +425 -0
  122. package/skills/creating-service-skills/references/service_skill_system_guide.md +278 -0
  123. package/skills/creating-service-skills/scripts/bootstrap.py +326 -0
  124. package/skills/creating-service-skills/scripts/deep_dive.py +304 -0
  125. package/skills/creating-service-skills/scripts/scaffolder.py +482 -0
  126. package/skills/delegating/SKILL.md +196 -0
  127. package/skills/delegating/config.yaml +210 -0
  128. package/skills/delegating/references/orchestration-protocols.md +41 -0
  129. package/skills/docker-expert/SKILL.md +409 -0
  130. package/skills/documenting/CHANGELOG.md +23 -0
  131. package/skills/documenting/README.md +148 -0
  132. package/skills/documenting/SKILL.md +113 -0
  133. package/skills/documenting/examples/example_pattern.md +70 -0
  134. package/skills/documenting/examples/example_reference.md +70 -0
  135. package/skills/documenting/examples/example_ssot_analytics.md +64 -0
  136. package/skills/documenting/examples/example_workflow.md +141 -0
  137. package/skills/documenting/references/changelog-format.md +97 -0
  138. package/skills/documenting/references/metadata-schema.md +136 -0
  139. package/skills/documenting/references/taxonomy.md +81 -0
  140. package/skills/documenting/references/versioning-rules.md +78 -0
  141. package/skills/documenting/scripts/bump_version.sh +60 -0
  142. package/skills/documenting/scripts/changelog/__init__.py +0 -0
  143. package/skills/documenting/scripts/changelog/add_entry.py +216 -0
  144. package/skills/documenting/scripts/changelog/bump_release.py +117 -0
  145. package/skills/documenting/scripts/changelog/init_changelog.py +54 -0
  146. package/skills/documenting/scripts/changelog/validate_changelog.py +128 -0
  147. package/skills/documenting/scripts/drift_detector.py +266 -0
  148. package/skills/documenting/scripts/generate_template.py +311 -0
  149. package/skills/documenting/scripts/list_by_category.sh +84 -0
  150. package/skills/documenting/scripts/orchestrator.py +255 -0
  151. package/skills/documenting/scripts/validate_metadata.py +242 -0
  152. package/skills/documenting/templates/CHANGELOG.md.template +13 -0
  153. package/skills/find-skills/SKILL.md +133 -0
  154. package/skills/gitnexus-debugging/SKILL.md +85 -0
  155. package/skills/gitnexus-exploring/SKILL.md +75 -0
  156. package/skills/gitnexus-impact-analysis/SKILL.md +94 -0
  157. package/skills/gitnexus-refactoring/SKILL.md +113 -0
  158. package/skills/hook-development/SKILL.md +797 -0
  159. package/skills/hook-development/examples/load-context.sh +55 -0
  160. package/skills/hook-development/examples/quality-check.js +1168 -0
  161. package/skills/hook-development/examples/validate-bash.sh +43 -0
  162. package/skills/hook-development/examples/validate-write.sh +38 -0
  163. package/skills/hook-development/references/advanced.md +527 -0
  164. package/skills/hook-development/references/migration.md +369 -0
  165. package/skills/hook-development/references/patterns.md +412 -0
  166. package/skills/hook-development/scripts/README.md +164 -0
  167. package/skills/hook-development/scripts/hook-linter.sh +153 -0
  168. package/skills/hook-development/scripts/test-hook.sh +252 -0
  169. package/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
  170. package/skills/obsidian-cli/SKILL.md +106 -0
  171. package/skills/orchestrating-agents/SKILL.md +135 -0
  172. package/skills/orchestrating-agents/config.yaml +45 -0
  173. package/skills/orchestrating-agents/references/agent-context-integration.md +37 -0
  174. package/skills/orchestrating-agents/references/examples.md +45 -0
  175. package/skills/orchestrating-agents/references/handover-protocol.md +31 -0
  176. package/skills/orchestrating-agents/references/workflows.md +42 -0
  177. package/skills/orchestrating-agents/scripts/detect_neighbors.py +23 -0
  178. package/skills/prompt-improving/README.md +162 -0
  179. package/skills/prompt-improving/SKILL.md +74 -0
  180. package/skills/prompt-improving/references/analysis_commands.md +24 -0
  181. package/skills/prompt-improving/references/chain_of_thought.md +24 -0
  182. package/skills/prompt-improving/references/mcp_definitions.md +20 -0
  183. package/skills/prompt-improving/references/multishot.md +23 -0
  184. package/skills/prompt-improving/references/xml_core.md +60 -0
  185. package/skills/python-testing/SKILL.md +815 -0
  186. package/skills/scoping-service-skills/SKILL.md +231 -0
  187. package/skills/scoping-service-skills/scripts/scope.py +74 -0
  188. package/skills/senior-backend/SKILL.md +209 -0
  189. package/skills/senior-backend/references/api_design_patterns.md +103 -0
  190. package/skills/senior-backend/references/backend_security_practices.md +103 -0
  191. package/skills/senior-backend/references/database_optimization_guide.md +103 -0
  192. package/skills/senior-backend/scripts/api_load_tester.py +114 -0
  193. package/skills/senior-backend/scripts/api_scaffolder.py +114 -0
  194. package/skills/senior-backend/scripts/database_migration_tool.py +114 -0
  195. package/skills/senior-data-scientist/SKILL.md +226 -0
  196. package/skills/senior-data-scientist/references/experiment_design_frameworks.md +80 -0
  197. package/skills/senior-data-scientist/references/feature_engineering_patterns.md +80 -0
  198. package/skills/senior-data-scientist/references/statistical_methods_advanced.md +80 -0
  199. package/skills/senior-data-scientist/scripts/experiment_designer.py +100 -0
  200. package/skills/senior-data-scientist/scripts/feature_engineering_pipeline.py +100 -0
  201. package/skills/senior-data-scientist/scripts/model_evaluation_suite.py +100 -0
  202. package/skills/senior-devops/SKILL.md +209 -0
  203. package/skills/senior-devops/references/cicd_pipeline_guide.md +103 -0
  204. package/skills/senior-devops/references/deployment_strategies.md +103 -0
  205. package/skills/senior-devops/references/infrastructure_as_code.md +103 -0
  206. package/skills/senior-devops/scripts/deployment_manager.py +114 -0
  207. package/skills/senior-devops/scripts/pipeline_generator.py +114 -0
  208. package/skills/senior-devops/scripts/terraform_scaffolder.py +114 -0
  209. package/skills/senior-security/SKILL.md +209 -0
  210. package/skills/senior-security/references/cryptography_implementation.md +103 -0
  211. package/skills/senior-security/references/penetration_testing_guide.md +103 -0
  212. package/skills/senior-security/references/security_architecture_patterns.md +103 -0
  213. package/skills/senior-security/scripts/pentest_automator.py +114 -0
  214. package/skills/senior-security/scripts/security_auditor.py +114 -0
  215. package/skills/senior-security/scripts/threat_modeler.py +114 -0
  216. package/skills/skill-creator/LICENSE.txt +202 -0
  217. package/skills/skill-creator/SKILL.md +479 -0
  218. package/skills/skill-creator/agents/analyzer.md +274 -0
  219. package/skills/skill-creator/agents/comparator.md +202 -0
  220. package/skills/skill-creator/agents/grader.md +223 -0
  221. package/skills/skill-creator/assets/eval_review.html +146 -0
  222. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  223. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  224. package/skills/skill-creator/references/schemas.md +430 -0
  225. package/skills/skill-creator/scripts/__init__.py +0 -0
  226. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  227. package/skills/skill-creator/scripts/generate_report.py +326 -0
  228. package/skills/skill-creator/scripts/improve_description.py +248 -0
  229. package/skills/skill-creator/scripts/package_skill.py +136 -0
  230. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  231. package/skills/skill-creator/scripts/run_eval.py +310 -0
  232. package/skills/skill-creator/scripts/run_loop.py +332 -0
  233. package/skills/skill-creator/scripts/utils.py +47 -0
  234. package/skills/sync-docs/SKILL.md +132 -0
  235. package/skills/sync-docs/evals/evals.json +89 -0
  236. package/skills/sync-docs/references/doc-structure.md +99 -0
  237. package/skills/sync-docs/references/schema.md +103 -0
  238. package/skills/sync-docs/scripts/changelog/add_entry.py +216 -0
  239. package/skills/sync-docs/scripts/context_gatherer.py +240 -0
  240. package/skills/sync-docs/scripts/doc_structure_analyzer.py +495 -0
  241. package/skills/sync-docs/scripts/drift_detector.py +327 -0
  242. package/skills/sync-docs/scripts/validate_doc.py +365 -0
  243. package/skills/sync-docs/scripts/validate_metadata.py +185 -0
  244. package/skills/sync-docs-workspace/iteration-1/benchmark.json +293 -0
  245. package/skills/sync-docs-workspace/iteration-1/benchmark.md +13 -0
  246. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +27 -0
  247. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +210 -0
  248. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +28 -0
  249. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  250. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +101 -0
  251. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +28 -0
  252. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  253. package/skills/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +5 -0
  254. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +27 -0
  255. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +198 -0
  256. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +28 -0
  257. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  258. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +94 -0
  259. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +28 -0
  260. package/skills/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +1 -0
  261. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +27 -0
  262. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +237 -0
  263. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +28 -0
  264. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  265. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +134 -0
  266. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +28 -0
  267. package/skills/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +1 -0
  268. package/skills/sync-docs-workspace/iteration-2/benchmark.json +297 -0
  269. package/skills/sync-docs-workspace/iteration-2/benchmark.md +13 -0
  270. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +27 -0
  271. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +137 -0
  272. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +92 -0
  273. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  274. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +134 -0
  275. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +86 -0
  276. package/skills/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +1 -0
  277. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +27 -0
  278. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +193 -0
  279. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +72 -0
  280. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  281. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +211 -0
  282. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +91 -0
  283. package/skills/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  284. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +27 -0
  285. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +182 -0
  286. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  287. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  288. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +222 -0
  289. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +88 -0
  290. package/skills/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  291. package/skills/sync-docs-workspace/iteration-3/benchmark.json +298 -0
  292. package/skills/sync-docs-workspace/iteration-3/benchmark.md +13 -0
  293. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +27 -0
  294. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +125 -0
  295. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +97 -0
  296. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +5 -0
  297. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +144 -0
  298. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +78 -0
  299. package/skills/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  300. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +27 -0
  301. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +104 -0
  302. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +91 -0
  303. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +5 -0
  304. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +79 -0
  305. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +82 -0
  306. package/skills/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  307. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +27 -0
  308. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +302 -0
  309. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +33 -0
  310. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +114 -0
  311. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +118 -0
  312. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +38 -0
  313. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +158 -0
  314. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  315. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +5 -0
  316. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +71 -0
  317. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +90 -0
  318. package/skills/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  319. package/skills/test-planning/SKILL.md +208 -0
  320. package/skills/test-planning/evals/evals.json +23 -0
  321. package/skills/updating-service-skills/SKILL.md +136 -0
  322. package/skills/updating-service-skills/scripts/drift_detector.py +222 -0
  323. package/skills/using-TDD/SKILL.md +410 -0
  324. package/skills/using-quality-gates/SKILL.md +254 -0
  325. package/skills/using-serena-lsp/README.md +8 -0
  326. package/skills/using-serena-lsp/REFERENCE.md +194 -0
  327. package/skills/using-serena-lsp/SKILL.md +82 -0
  328. package/skills/using-service-skills/SKILL.md +108 -0
  329. package/skills/using-service-skills/scripts/cataloger.py +74 -0
  330. package/skills/using-service-skills/scripts/skill_activator.py +152 -0
  331. package/skills/using-service-skills/scripts/test_skill_activator.py +58 -0
  332. package/skills/using-xtrm/SKILL.md +245 -0
  333. package/skills/xt-end/SKILL.md +128 -0
@@ -0,0 +1,31 @@
1
+ # Local Agent Skills
2
+
3
+ This directory contains specialized agent skills designed for the Gemini CLI. These skills extend the agent's capabilities for specific workflows like debugging, security auditing, and cross-model orchestration.
4
+
5
+ ## Skill Discovery
6
+
7
+ All skills in this directory are automatically discovered by the `hooks/skill-discovery.py` hook at the start of each session. The hook injects a summarized list of these skills into the agent's initial context, ensuring the agent is aware of specialized tools from the first prompt.
8
+
9
+ ### How to Add a New Skill
10
+
11
+ To add a new skill that is automatically discovered:
12
+
13
+ 1. **Create a Directory**: Add a new folder in `skills/` (e.g., `skills/my-new-skill/`).
14
+ 2. **Add `SKILL.md`**: Create a `SKILL.md` file in the new folder.
15
+ 3. **Define Metadata**: The `SKILL.md` **MUST** start with YAML frontmatter containing `name` and `description`.
16
+ 4. **Keep it Concise**: The `description` should ideally start with a single, clear sentence explaining *what* the skill does and *when* to use it. The discovery hook will only show the first sentence to keep the initial context efficient.
17
+
18
+ #### Metadata Schema (Example)
19
+
20
+ ```yaml
21
+ ---
22
+ name: my-new-skill
23
+ description: Performs deep architectural analysis of the project's dependency graph. Use when planning major refactors or evaluating library updates.
24
+ version: 1.0.0
25
+ ---
26
+ ```
27
+
28
+ ## Maintenance
29
+
30
+ - **Update Descriptions**: If you significantly change a skill's purpose, ensure the first sentence of its description in `SKILL.md` is updated.
31
+ - **Workflow Integrity**: Avoid creating empty skill directories or `SKILL.md` files without proper frontmatter.
@@ -0,0 +1,201 @@
1
+ ---
2
+ name: clean-code
3
+ description: Pragmatic coding standards - concise, direct, no over-engineering, no unnecessary comments
4
+ allowed-tools: Read, Write, Edit
5
+ version: 2.0
6
+ priority: CRITICAL
7
+ ---
8
+
9
+ # Clean Code - Pragmatic AI Coding Standards
10
+
11
+ > **CRITICAL SKILL** - Be **concise, direct, and solution-focused**.
12
+
13
+ ---
14
+
15
+ ## Core Principles
16
+
17
+ | Principle | Rule |
18
+ |-----------|------|
19
+ | **SRP** | Single Responsibility - each function/class does ONE thing |
20
+ | **DRY** | Don't Repeat Yourself - extract duplicates, reuse |
21
+ | **KISS** | Keep It Simple - simplest solution that works |
22
+ | **YAGNI** | You Aren't Gonna Need It - don't build unused features |
23
+ | **Boy Scout** | Leave code cleaner than you found it |
24
+
25
+ ---
26
+
27
+ ## Naming Rules
28
+
29
+ | Element | Convention |
30
+ |---------|------------|
31
+ | **Variables** | Reveal intent: `userCount` not `n` |
32
+ | **Functions** | Verb + noun: `getUserById()` not `user()` |
33
+ | **Booleans** | Question form: `isActive`, `hasPermission`, `canEdit` |
34
+ | **Constants** | SCREAMING_SNAKE: `MAX_RETRY_COUNT` |
35
+
36
+ > **Rule:** If you need a comment to explain a name, rename it.
37
+
38
+ ---
39
+
40
+ ## Function Rules
41
+
42
+ | Rule | Description |
43
+ |------|-------------|
44
+ | **Small** | Max 20 lines, ideally 5-10 |
45
+ | **One Thing** | Does one thing, does it well |
46
+ | **One Level** | One level of abstraction per function |
47
+ | **Few Args** | Max 3 arguments, prefer 0-2 |
48
+ | **No Side Effects** | Don't mutate inputs unexpectedly |
49
+
50
+ ---
51
+
52
+ ## Code Structure
53
+
54
+ | Pattern | Apply |
55
+ |---------|-------|
56
+ | **Guard Clauses** | Early returns for edge cases |
57
+ | **Flat > Nested** | Avoid deep nesting (max 2 levels) |
58
+ | **Composition** | Small functions composed together |
59
+ | **Colocation** | Keep related code close |
60
+
61
+ ---
62
+
63
+ ## AI Coding Style
64
+
65
+ | Situation | Action |
66
+ |-----------|--------|
67
+ | User asks for feature | Write it directly |
68
+ | User reports bug | Fix it, don't explain |
69
+ | No clear requirement | Ask, don't assume |
70
+
71
+ ---
72
+
73
+ ## Anti-Patterns (DON'T)
74
+
75
+ | ❌ Pattern | ✅ Fix |
76
+ |-----------|-------|
77
+ | Comment every line | Delete obvious comments |
78
+ | Helper for one-liner | Inline the code |
79
+ | Factory for 2 objects | Direct instantiation |
80
+ | utils.ts with 1 function | Put code where used |
81
+ | "First we import..." | Just write code |
82
+ | Deep nesting | Guard clauses |
83
+ | Magic numbers | Named constants |
84
+ | God functions | Split by responsibility |
85
+
86
+ ---
87
+
88
+ ## 🔴 Before Editing ANY File (THINK FIRST!)
89
+
90
+ **Before changing a file, ask yourself:**
91
+
92
+ | Question | Why |
93
+ |----------|-----|
94
+ | **What imports this file?** | They might break |
95
+ | **What does this file import?** | Interface changes |
96
+ | **What tests cover this?** | Tests might fail |
97
+ | **Is this a shared component?** | Multiple places affected |
98
+
99
+ **Quick Check:**
100
+ ```
101
+ File to edit: UserService.ts
102
+ └── Who imports this? → UserController.ts, AuthController.ts
103
+ └── Do they need changes too? → Check function signatures
104
+ ```
105
+
106
+ > 🔴 **Rule:** Edit the file + all dependent files in the SAME task.
107
+ > 🔴 **Never leave broken imports or missing updates.**
108
+
109
+ ---
110
+
111
+ ## Summary
112
+
113
+ | Do | Don't |
114
+ |----|-------|
115
+ | Write code directly | Write tutorials |
116
+ | Let code self-document | Add obvious comments |
117
+ | Fix bugs immediately | Explain the fix first |
118
+ | Inline small things | Create unnecessary files |
119
+ | Name things clearly | Use abbreviations |
120
+ | Keep functions small | Write 100+ line functions |
121
+
122
+ > **Remember: The user wants working code, not a programming lesson.**
123
+
124
+ ---
125
+
126
+ ## 🔴 Self-Check Before Completing (MANDATORY)
127
+
128
+ **Before saying "task complete", verify:**
129
+
130
+ | Check | Question |
131
+ |-------|----------|
132
+ | ✅ **Goal met?** | Did I do exactly what user asked? |
133
+ | ✅ **Files edited?** | Did I modify all necessary files? |
134
+ | ✅ **Code works?** | Did I test/verify the change? |
135
+ | ✅ **No errors?** | Lint and TypeScript pass? |
136
+ | ✅ **Nothing forgotten?** | Any edge cases missed? |
137
+
138
+ > 🔴 **Rule:** If ANY check fails, fix it before completing.
139
+
140
+ ---
141
+
142
+ ## Verification Scripts (MANDATORY)
143
+
144
+ > 🔴 **CRITICAL:** Each agent runs ONLY their own skill's scripts after completing work.
145
+
146
+ ### Agent → Script Mapping
147
+
148
+ | Agent | Script | Command |
149
+ |-------|--------|---------|
150
+ | **frontend-specialist** | UX Audit | `python ~/.claude/skills/frontend-design/scripts/ux_audit.py .` |
151
+ | **frontend-specialist** | A11y Check | `python ~/.claude/skills/frontend-design/scripts/accessibility_checker.py .` |
152
+ | **backend-specialist** | API Validator | `python ~/.claude/skills/api-patterns/scripts/api_validator.py .` |
153
+ | **mobile-developer** | Mobile Audit | `python ~/.claude/skills/mobile-design/scripts/mobile_audit.py .` |
154
+ | **database-architect** | Schema Validate | `python ~/.claude/skills/database-design/scripts/schema_validator.py .` |
155
+ | **security-auditor** | Security Scan | `python ~/.claude/skills/vulnerability-scanner/scripts/security_scan.py .` |
156
+ | **seo-specialist** | SEO Check | `python ~/.claude/skills/seo-fundamentals/scripts/seo_checker.py .` |
157
+ | **seo-specialist** | GEO Check | `python ~/.claude/skills/geo-fundamentals/scripts/geo_checker.py .` |
158
+ | **performance-optimizer** | Lighthouse | `python ~/.claude/skills/performance-profiling/scripts/lighthouse_audit.py <url>` |
159
+ | **test-engineer** | Test Runner | `python ~/.claude/skills/testing-patterns/scripts/test_runner.py .` |
160
+ | **test-engineer** | Playwright | `python ~/.claude/skills/webapp-testing/scripts/playwright_runner.py <url>` |
161
+ | **Any agent** | Lint Check | `python ~/.claude/skills/lint-and-validate/scripts/lint_runner.py .` |
162
+ | **Any agent** | Type Coverage | `python ~/.claude/skills/lint-and-validate/scripts/type_coverage.py .` |
163
+ | **Any agent** | i18n Check | `python ~/.claude/skills/i18n-localization/scripts/i18n_checker.py .` |
164
+
165
+ > ❌ **WRONG:** `test-engineer` running `ux_audit.py`
166
+ > ✅ **CORRECT:** `frontend-specialist` running `ux_audit.py`
167
+
168
+ ---
169
+
170
+ ### 🔴 Script Output Handling (READ → SUMMARIZE → ASK)
171
+
172
+ **When running a validation script, you MUST:**
173
+
174
+ 1. **Run the script** and capture ALL output
175
+ 2. **Parse the output** - identify errors, warnings, and passes
176
+ 3. **Summarize to user** in this format:
177
+
178
+ ```markdown
179
+ ## Script Results: [script_name.py]
180
+
181
+ ### ❌ Errors Found (X items)
182
+ - [File:Line] Error description 1
183
+ - [File:Line] Error description 2
184
+
185
+ ### ⚠️ Warnings (Y items)
186
+ - [File:Line] Warning description
187
+
188
+ ### ✅ Passed (Z items)
189
+ - Check 1 passed
190
+ - Check 2 passed
191
+
192
+ **Should I fix the X errors?**
193
+ ```
194
+
195
+ 4. **Wait for user confirmation** before fixing
196
+ 5. **After fixing** → Re-run script to confirm
197
+
198
+ > 🔴 **VIOLATION:** Running script and ignoring output = FAILED task.
199
+ > 🔴 **VIOLATION:** Auto-fixing without asking = Not allowed.
200
+ > 🔴 **Rule:** Always READ output → SUMMARIZE → ASK → then fix.
201
+
@@ -0,0 +1,433 @@
1
+ ---
2
+ name: creating-service-skills
3
+ description: >-
4
+ Generate operational service skill packages for any service in the project.
5
+ Produces SKILL.md documentation, diagnostic scripts, and references through a
6
+ mandatory two-phase workflow. Use when onboarding to a new service, adding a
7
+ new skill, or when a skill is missing from the catalog.
8
+ allowed-tools: Bash(python3 *), Read, Grep, Glob
9
+ ---
10
+
11
+ # Creating Service Skills
12
+
13
+ ## Role: The Architect
14
+
15
+ You are the **Service Skills Architect**. Your job is to produce complete, operational
16
+ skill packages for project services — not stubs, not placeholders. The output must be
17
+ immediately useful to any agent working on the service.
18
+
19
+ ---
20
+
21
+ ## Mandatory Two-Phase Workflow
22
+
23
+ **Use both phases every time.** Phase 1 gives structure; Phase 2 grounds the skill in real service behavior.
24
+
25
+ ---
26
+
27
+ ### Phase 1: Automated Skeleton (Always First)
28
+
29
+ Run the scaffolder to build a structural skeleton from static analysis of
30
+ `docker-compose*.yml`, `Dockerfile`, and dependency files. It also detects
31
+ technologies and auto-populates official documentation links.
32
+
33
+ ```bash
34
+ # Create a skeleton for a service
35
+ python3 "$CLAUDE_PROJECT_DIR/.claude/skills/creating-service-skills/scripts/scaffolder.py" \
36
+ create <service-id> <territory-path> "<description>"
37
+
38
+ # Example
39
+ python3 "$CLAUDE_PROJECT_DIR/.claude/skills/creating-service-skills/scripts/scaffolder.py" \
40
+ create auth-service src/auth/ "JWT authentication and session management"
41
+ ```
42
+
43
+ The skeleton creates at `.claude/skills/<service-id>/`:
44
+ - `SKILL.md` with `[PENDING RESEARCH]` markers
45
+ - `scripts/health_probe.py` stub
46
+ - `scripts/log_hunter.py` stub
47
+ - `scripts/data_explorer.py` stub
48
+ - `references/deep_dive.md` research checklist
49
+
50
+ **The skeleton is never sufficient.** It has structural facts but no semantic knowledge.
51
+
52
+ Classify the service type to determine which specialist script to add:
53
+
54
+ ```bash
55
+ python3 "$CLAUDE_PROJECT_DIR/.claude/skills/creating-service-skills/scripts/deep_dive.py" \
56
+ classify <territory-path>
57
+ ```
58
+
59
+ Print the full Phase 2 research agenda:
60
+
61
+ ```bash
62
+ python3 "$CLAUDE_PROJECT_DIR/.claude/skills/creating-service-skills/scripts/deep_dive.py" \
63
+ questions <service-type>
64
+ ```
65
+
66
+ ---
67
+
68
+ ### Phase 2: Agentic Deep Dive
69
+
70
+ After the skeleton exists, answer every research question by reading the actual
71
+ source code. Use **Serena LSP tools exclusively** — never read entire files.
72
+
73
+ #### Serena Tool Protocol for Deep Dive
74
+
75
+ | What you need to find | Serena tool to use |
76
+ |---|---|
77
+ | Module/class structure | `get_symbols_overview(relative_path, depth=1)` |
78
+ | Body of a specific function | `find_symbol(name_path, include_body=True)` |
79
+ | Log/error message strings | `search_for_pattern("logger.error|raise|except")` |
80
+ | All SQL queries | `search_for_pattern("SELECT|INSERT|UPDATE|COPY")` |
81
+ | Env var usage | `search_for_pattern("os.getenv|os.environ|settings\\.")` |
82
+ | Data flow (who calls what) | `find_referencing_symbols(name_path, relative_path)` |
83
+ | Entry point detection | `search_for_pattern('if __name__|def main|async def main')` |
84
+ | Docker port mapping | `search_for_pattern("ports:|DB_PORT|POSTGRES_PORT")` |
85
+ | **Actual table names** | `execute_db_query("SELECT tablename FROM pg_tables WHERE schemaname='public'")` |
86
+ | **Actual column names** | `execute_db_query("SELECT column_name, data_type FROM information_schema.columns WHERE table_name='X'")` |
87
+
88
+ **Do NOT read entire files.** Map first → read only the symbols you need.
89
+
90
+ #### Required Research Sections
91
+
92
+ **Container & Runtime**
93
+ - Exact entry point (Dockerfile CMD + docker-compose `command:`)
94
+ - Critical env vars that crash the service if missing (no default)
95
+ - Volumes read from / written to
96
+ - Service type: daemon / one-shot / cron?
97
+ - Restart policy and `depends_on:` conditions
98
+
99
+ **Data Layer** — verify ALL of these against the live DB before writing any scripts:
100
+ - Run `SELECT tablename FROM pg_tables WHERE schemaname='public'` → get exact table list
101
+ - For each output table: run `SELECT column_name, data_type FROM information_schema.columns WHERE table_name='<table>'` → get exact column names
102
+ - Confirm which tables have a timestamp column and which do not (use `COUNT(*)` freshness check for tables with no timestamp)
103
+ - Which tables does it WRITE vs. only READ?
104
+ - Realistic stale threshold per table (in minutes)
105
+ - Redis/S3/file state usage
106
+ - SQL parameterization: flag any f-string SQL
107
+
108
+ **Failure Modes** — build this table with ≥5 rows from real exception handlers:
109
+
110
+ | Symptom | Likely Cause | Resolution |
111
+ |---------|-------------|------------|
112
+ | (log output) | (root cause) | (exact fix command) |
113
+
114
+ **Log Patterns** — source from actual codebase, not invented:
115
+ - `search_for_pattern("logger.info|logging.info")` → `info` patterns
116
+ - `search_for_pattern("logger.error|logger.warning")` → `error/warning`
117
+ - `search_for_pattern("logger.critical|panic!")` → `critical`
118
+
119
+ ---
120
+
121
+ ### Phase 2 Script Writing (Complete Implementation)
122
+
123
+ After research is complete, replace all `[PENDING RESEARCH]` stubs in `scripts/`.
124
+ Scripts should be ready to run end-to-end, without TODO markers or placeholder SQL.
125
+
126
+ #### Mandatory DB Connection Pattern (all scripts that touch the DB)
127
+
128
+ ```python
129
+ from dotenv import load_dotenv
130
+ from pathlib import Path
131
+ import sys
132
+
133
+ project_root = Path(__file__).resolve().parent.parent.parent.parent.parent
134
+ env_file = project_root / ".env"
135
+ if env_file.exists():
136
+ load_dotenv(str(env_file))
137
+
138
+ sys.path.insert(0, str(project_root))
139
+ from shared.db_pool_manager import execute_db_query
140
+ ```
141
+
142
+ Never use raw `psycopg2` or hardcoded credentials. Always use `execute_db_query` from
143
+ `shared.db_pool_manager`. The `.env` load is mandatory — scripts without it will fail
144
+ when the environment is clean.
145
+
146
+ #### Script Integrity Rules
147
+
148
+ 1. **Schema first** — query `information_schema` before writing any SQL. Never guess table or column names.
149
+ 2. **Every `try` has an `except`** — incomplete try/except blocks crash silently. Every DB call must be wrapped with a matching except that captures the error into the result.
150
+ 3. **Function names match call sites** — after renaming any function, search for all call sites and update them.
151
+ 4. **`qwen -y` for delegation** — when delegating Phase 2 to Qwen, always pass the `-y` flag (YOLO/non-interactive mode) otherwise Qwen will research but never write files.
152
+ 5. **No `ccs gemini`** — Gemini is invoked as `gemini -p "..."` directly; GLM is `env -u CLAUDECODE ccs glm -p "..."`; Qwen is `qwen -y "..."`.
153
+ 6. **`venv/bin/python3` for testing** — diagnostic scripts must be tested with the project venv, not system python, which may lack `dotenv` and other deps.
154
+
155
+ #### `scripts/health_probe.py`
156
+
157
+ Required features:
158
+ - `check_container()`: `docker inspect -f {{.State.Running}} <container>`
159
+ - `check_table_freshness()`: `SELECT MAX(<ts_col>) FROM <table>` — compare vs stale threshold
160
+ - Use **external mapped port** (e.g. 5433 for host), NOT container-internal port (5432)
161
+ - Print exact fix command on failure: `docker compose restart <service>` or SQL correction
162
+ - Support `--json` flag for machine-readable output
163
+
164
+ ```python
165
+ STALE_CHECKS = [
166
+ {"table": "actual_table", "ts_col": "created_at", "stale_minutes": 10},
167
+ ]
168
+ DB_PORT = 5433 # external mapped port — verify in docker-compose.yml
169
+ ```
170
+
171
+ #### `scripts/log_hunter.py`
172
+
173
+ Required features:
174
+ - PATTERNS list sourced from actual codebase error strings (not generic names)
175
+ - Severity bucketing: `critical → error → warning → info`
176
+ - `--tail N`, `--since <time>`, `--errors-only`, `--json` flags
177
+ - Print specific fix command when critical pattern detected
178
+
179
+ ```python
180
+ # RIGHT — from actual codebase
181
+ PATTERNS = [
182
+ ("OAuth expired", r"invalid_grant|token.*expired", "critical"),
183
+ ("PDF parse error", r"PdfReadError|pdf.*format.*changed", "error"),
184
+ ("Report saved", r"report.*ingested|saved.*DB", "info"),
185
+ ]
186
+ # WRONG — never use generic patterns
187
+ PATTERNS = [("Error", r"ERROR|Exception|ConnectionError", "error")]
188
+ ```
189
+
190
+ #### `scripts/data_explorer.py`
191
+
192
+ Required features:
193
+ - Real table name, correct external DB_PORT
194
+ - All queries parameterized: `WHERE symbol = %s` (never f-strings in SQL)
195
+ - `--limit`, `--json`, `--symbol` flags
196
+ - Read-only: no INSERT/UPDATE/DELETE
197
+
198
+ #### Specialist Script (based on service type)
199
+
200
+ | Service Type | Script | Core Logic |
201
+ |---|---|---|
202
+ | `continuous_db_writer` | `data_explorer.py` | DISTINCT ON latest-per-symbol |
203
+ | `http_api_server` | `endpoint_tester.py` | Probe real routes, check response codes |
204
+ | `one_shot_migration` | `coverage_checker.py` | Verify expected schema/table exists |
205
+ | `file_watcher` | `state_inspector.py` | Mount accessible + state file present |
206
+ | `scheduled_poller` | `auth_checker.py` | Token file present + not expired |
207
+
208
+ See [references/script_quality_standards.md](references/script_quality_standards.md) for complete templates.
209
+
210
+ #### `scripts/Makefile` (required)
211
+
212
+ The scaffolder creates a stub `Makefile` in Phase 1. In Phase 2, verify it is
213
+ correct and complete because it is the primary entry point for diagnostics.
214
+
215
+ **Standard template** (copy verbatim, replace `<service-id>` comment only):
216
+
217
+ ```makefile
218
+ # Skill diagnostic scripts for <service-id>
219
+ # Usage: make <target> (from this directory)
220
+ # Override python: make health PYTHON=/path/to/python3
221
+
222
+ # Auto-detect: prefer project venv (4 levels up), fall back to system python3
223
+ _VENV := $(wildcard ../../../../venv/bin/python3)
224
+ PYTHON ?= $(if $(_VENV),../../../../venv/bin/python3,python3)
225
+
226
+ .PHONY: health health-json data data-json logs errors db help
227
+
228
+ help:
229
+ @echo "Available targets:"
230
+ @echo " health - Run health probe (human readable)"
231
+ @echo " health-json - Run health probe (JSON output)"
232
+ @echo " data - Show latest DB records"
233
+ @echo " data-json - Show latest DB records (JSON, limit 5)"
234
+ @echo " logs - Tail and analyze recent logs"
235
+ @echo " errors - Show errors/criticals only"
236
+ @echo " db - Run DB helper example queries"
237
+ @echo ""
238
+ @echo "Python: $(PYTHON)"
239
+
240
+ health:
241
+ $(PYTHON) health_probe.py
242
+
243
+ health-json:
244
+ $(PYTHON) health_probe.py --json
245
+
246
+ data:
247
+ $(PYTHON) data_explorer.py
248
+
249
+ data-json:
250
+ $(PYTHON) data_explorer.py --json --limit 5
251
+
252
+ logs:
253
+ $(PYTHON) log_hunter.py --tail 50
254
+
255
+ errors:
256
+ $(PYTHON) log_hunter.py --errors-only --tail 50
257
+
258
+ db:
259
+ $(PYTHON) db_helper.py
260
+ ```
261
+
262
+ **Rules for the delegated Phase 2 agent:**
263
+
264
+ 1. **Keep standard targets stable** — avoid removing or renaming them because downstream workflows depend on them.
265
+ 2. **Add service-specific targets** below the standard block if the service needs them (e.g. `make auth`, `make schema`, `make backfill`).
266
+ 3. **Keep the `_VENV` auto-detect path (`../../../../venv/bin/python3`) unchanged** — it resolves from `scripts/` → service dir → `skills/` → `.claude/` → project root → `venv/`.
267
+ 4. **Use real tab characters in recipe lines** so Makefile parsing works consistently.
268
+ 5. **Run `make help` after updates** and confirm the Python path resolves to the project venv.
269
+
270
+ ---
271
+
272
+ ## Official Documentation Auto-Population
273
+
274
+ The scaffolder detects technologies from:
275
+ - `docker-compose*.yml` image tags
276
+ - `requirements.txt` / `pyproject.toml` package names
277
+ - `Cargo.toml` crate names
278
+ - `package.json` dependencies
279
+
280
+ And automatically adds relevant official documentation links to the `## References`
281
+ section of the generated SKILL.md. Verify these links are correct during Phase 2.
282
+
283
+ ---
284
+
285
+ ## Phase 3: Hook Registration (After Phase 2)
286
+
287
+ Once the skill is complete, verify that the `PreToolUse` skill activator hook is
288
+ wired in the project's `.claude/settings.json`. It should already be there if
289
+ you ran `install-service-skills.py` — but confirm it, and explain it to the user.
290
+
291
+ ### What the hook does
292
+
293
+ The `skill_activator.py` hook fires **before** any `Read`, `Write`, `Edit`, `Grep`,
294
+ `Glob`, or `Bash` operation. It checks whether the operation touches a registered
295
+ service territory (from `service-registry.json`). If it does, it injects:
296
+
297
+ ```
298
+ [Service Skill] You are about to work with the '<service-id>' service territory.
299
+ Load the expert skill before proceeding: Read .claude/skills/<service-id>/SKILL.md
300
+ The skill contains: operational knowledge, failure modes, diagnostic scripts,
301
+ and the correct methods for managing this service.
302
+ Do not use ad-hoc approaches (raw SQL, improvised docker commands) when the
303
+ skill defines the correct method.
304
+ ```
305
+
306
+ This means: from the moment the skill is registered, Claude will **automatically**
307
+ be reminded to load and apply it whenever working on relevant files or running
308
+ commands that mention the service — without you having to ask.
309
+
310
+ ### Verify hook is active
311
+
312
+ Check `.claude/settings.json` contains a `PreToolUse` entry:
313
+
314
+ ```json
315
+ "PreToolUse": [{
316
+ "matcher": "Read|Write|Edit|Glob|Grep|Bash",
317
+ "hooks": [{"type": "command",
318
+ "command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/skills/using-service-skills/scripts/skill_activator.py\""}]
319
+ }]
320
+ ```
321
+
322
+ If missing, run the installer again or add it manually.
323
+
324
+ ### Verify the service is registered
325
+
326
+ ```bash
327
+ python3 .claude/skills/using-service-skills/scripts/cataloger.py
328
+ ```
329
+
330
+ The service should appear in the output catalog. If not, the territory may not
331
+ be registered in `service-registry.json` — re-run the scaffolder for Phase 1.
332
+
333
+ ### Communicate to the user
334
+
335
+ After completing Phase 3, confirm:
336
+
337
+ ```
338
+ ✅ Hook registered: '<service-id>' skill is now auto-activated.
339
+
340
+ Whenever you (or I) work with files in <territory> or run commands mentioning
341
+ '<service-id>', I will automatically load .claude/skills/<service-id>/SKILL.md
342
+ and apply its expert knowledge — including using the correct diagnostic scripts
343
+ instead of ad-hoc queries.
344
+ ```
345
+
346
+ ---
347
+
348
+ ## Skill Completion Checklist
349
+
350
+ A skill is **complete** (not a draft) when ALL of these are true:
351
+
352
+ **Schema verification (before writing any script):**
353
+ - [ ] `SELECT tablename FROM pg_tables WHERE schemaname='public'` run — real table names confirmed
354
+ - [ ] `SELECT column_name, data_type FROM information_schema.columns WHERE table_name='X'` run per output table
355
+ - [ ] Tables with no timestamp column identified — `COUNT(*)` used for freshness check instead
356
+
357
+ **Script completeness:**
358
+ - [ ] No `[PENDING RESEARCH]` markers remain in SKILL.md
359
+ - [ ] Service type classified and documented
360
+ - [ ] All scripts use mandatory DB connection pattern (`dotenv` + `shared.db_pool_manager`)
361
+ - [ ] `health_probe.py`: real container check + actual table freshness + fix commands; every `try` has `except`
362
+ - [ ] `log_hunter.py`: patterns sourced from codebase, not invented; severity bucketed
363
+ - [ ] `data_explorer.py`: real table + real column names + parameterized SQL
364
+ - [ ] `db_helper.py`: example queries against real tables with correct column names
365
+ - [ ] At least one specialist script for the service type
366
+ - [ ] All function names consistent between definition and call sites
367
+ - [ ] Troubleshooting table has ≥5 rows from real failure modes
368
+ - [ ] All docker compose commands verified against actual config
369
+ - [ ] All scripts support `--json` flag
370
+ - [ ] `scripts/Makefile` generated with standard targets: `health`, `health-json`, `data`, `data-json`, `logs`, `errors`, `db`
371
+ - [ ] Scripts tested with `venv/bin/python3` (not system python3) — 0 import errors
372
+
373
+ **Registration:**
374
+ - [ ] `references/deep_dive.md` Phase 2 checklist completed
375
+ - [ ] Official docs links in References section verified
376
+ - [ ] Service registered in `.claude/skills/service-registry.json`
377
+ - [ ] `PreToolUse` skill activator hook confirmed in `.claude/settings.json`
378
+ - [ ] User informed: skill auto-activates on territory file access and service-name commands
379
+
380
+ ---
381
+
382
+ ## Output Format
383
+
384
+ After successful completion:
385
+
386
+ ```
387
+ ✅ Created expert skill: `<service-id>`
388
+
389
+ **Classification**: <service-type> (confidence: high/medium/low)
390
+ **Territory**: <file patterns>
391
+ **Specialist Script**: <script-name.py>
392
+ **Health Strategy**: <strategy>
393
+ **Skill Path**: `.claude/skills/<service-id>/SKILL.md`
394
+ **Official Docs**: <detected technologies>
395
+
396
+ **Phase 2 Status**: Complete
397
+ - [PENDING RESEARCH] markers: 0
398
+ - Scripts implemented: health_probe.py, log_hunter.py, data_explorer.py, <specialist>.py
399
+
400
+ **Phase 3 Status**: Hook registered
401
+ - PreToolUse activator: confirmed in settings.json
402
+ - Auto-activation: triggers on territory files + service name in commands
403
+
404
+ ⚠️ If Phase 2 is incomplete, the skill is NOT ready for use.
405
+ ⚠️ If Phase 3 is skipped, the skill exists but will not enforce itself.
406
+ ```
407
+
408
+ ---
409
+
410
+ ## Tool Restrictions
411
+
412
+ Write to:
413
+ - ✅ `.claude/skills/<service-id>/` (new skill packages)
414
+ - ✅ `.claude/skills/service-registry.json` (registration)
415
+
416
+ Do not:
417
+ - ❌ Modify source code outside `.claude/skills/`
418
+ - ❌ Delete existing skills or registry entries
419
+
420
+ ---
421
+
422
+ ## References
423
+
424
+ - [references/script_quality_standards.md](references/script_quality_standards.md) — Script templates and anti-patterns
425
+ - [references/service_skill_system_guide.md](references/service_skill_system_guide.md) — System architecture
426
+ - `scripts/scaffolder.py` — Phase 1 skeleton generator with official docs detection
427
+ - `scripts/deep_dive.py` — Service classifier + Phase 2 research agenda
428
+ - `scripts/bootstrap.py` — Registry CRUD and path resolution utilities
429
+
430
+ ## Related Skills
431
+
432
+ - `/using-service-skills` — Discover and activate expert personas at session start
433
+ - `/updating-service-skills` — Sync skills when implementation drifts