xtrm-tools 0.7.3 → 0.7.4

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 (527) hide show
  1. package/.xtrm/config/pi/extensions/xtrm-ui/format.ts +189 -0
  2. package/.xtrm/config/pi/extensions/xtrm-ui/index.ts +76 -17
  3. package/.xtrm/config/pi/extensions/xtrm-ui/package.json +16 -5
  4. package/.xtrm/hooks/specialists/specialists-complete.mjs +70 -0
  5. package/.xtrm/hooks/specialists/specialists-session-start.mjs +105 -0
  6. package/.xtrm/registry.json +397 -409
  7. package/.xtrm/skills/default/README.txt +31 -0
  8. package/.xtrm/skills/default/clean-code/SKILL.md +201 -0
  9. package/.xtrm/skills/default/creating-service-skills/SKILL.md +433 -0
  10. package/.xtrm/skills/default/creating-service-skills/references/script_quality_standards.md +425 -0
  11. package/.xtrm/skills/default/creating-service-skills/references/service_skill_system_guide.md +278 -0
  12. package/.xtrm/skills/default/creating-service-skills/scripts/bootstrap.py +326 -0
  13. package/.xtrm/skills/default/creating-service-skills/scripts/deep_dive.py +304 -0
  14. package/.xtrm/skills/default/creating-service-skills/scripts/scaffolder.py +482 -0
  15. package/.xtrm/skills/default/deepwiki/SKILL.md +50 -0
  16. package/.xtrm/skills/default/delegating/SKILL.md +196 -0
  17. package/.xtrm/skills/default/delegating/config.yaml +210 -0
  18. package/.xtrm/skills/default/delegating/references/orchestration-protocols.md +41 -0
  19. package/.xtrm/skills/default/documenting/CHANGELOG.md +23 -0
  20. package/.xtrm/skills/default/documenting/README.md +148 -0
  21. package/.xtrm/skills/default/documenting/SKILL.md +113 -0
  22. package/.xtrm/skills/default/documenting/examples/example_pattern.md +70 -0
  23. package/.xtrm/skills/default/documenting/examples/example_reference.md +70 -0
  24. package/.xtrm/skills/default/documenting/examples/example_ssot_analytics.md +64 -0
  25. package/.xtrm/skills/default/documenting/examples/example_workflow.md +141 -0
  26. package/.xtrm/skills/default/documenting/references/changelog-format.md +97 -0
  27. package/.xtrm/skills/default/documenting/references/metadata-schema.md +136 -0
  28. package/.xtrm/skills/default/documenting/references/taxonomy.md +81 -0
  29. package/.xtrm/skills/default/documenting/references/versioning-rules.md +78 -0
  30. package/.xtrm/skills/default/documenting/scripts/bump_version.sh +60 -0
  31. package/.xtrm/skills/default/documenting/scripts/changelog/__init__.py +0 -0
  32. package/.xtrm/skills/default/documenting/scripts/changelog/add_entry.py +216 -0
  33. package/.xtrm/skills/default/documenting/scripts/changelog/bump_release.py +117 -0
  34. package/.xtrm/skills/default/documenting/scripts/changelog/init_changelog.py +54 -0
  35. package/.xtrm/skills/default/documenting/scripts/changelog/validate_changelog.py +128 -0
  36. package/.xtrm/skills/default/documenting/scripts/drift_detector.py +266 -0
  37. package/.xtrm/skills/default/documenting/scripts/generate_template.py +311 -0
  38. package/.xtrm/skills/default/documenting/scripts/list_by_category.sh +84 -0
  39. package/.xtrm/skills/default/documenting/scripts/orchestrator.py +255 -0
  40. package/.xtrm/skills/default/documenting/scripts/validate_metadata.py +242 -0
  41. package/.xtrm/skills/default/documenting/templates/CHANGELOG.md.template +13 -0
  42. package/.xtrm/skills/default/find-docs/SKILL.md +175 -0
  43. package/.xtrm/skills/default/find-skills/SKILL.md +133 -0
  44. package/.xtrm/skills/default/github-search/SKILL.md +49 -0
  45. package/.xtrm/skills/default/gitnexus-debugging/SKILL.md +89 -0
  46. package/.xtrm/skills/default/gitnexus-impact-analysis/SKILL.md +97 -0
  47. package/.xtrm/skills/default/gitnexus-pr-review/SKILL.md +163 -0
  48. package/.xtrm/skills/default/gitnexus-refactoring/SKILL.md +121 -0
  49. package/.xtrm/skills/default/hook-development/SKILL.md +797 -0
  50. package/.xtrm/skills/default/hook-development/examples/load-context.sh +55 -0
  51. package/.xtrm/skills/default/hook-development/examples/quality-check.js +1168 -0
  52. package/.xtrm/skills/default/hook-development/examples/validate-bash.sh +43 -0
  53. package/.xtrm/skills/default/hook-development/examples/validate-write.sh +38 -0
  54. package/.xtrm/skills/default/hook-development/references/advanced.md +527 -0
  55. package/.xtrm/skills/default/hook-development/references/migration.md +369 -0
  56. package/.xtrm/skills/default/hook-development/references/patterns.md +412 -0
  57. package/.xtrm/skills/default/hook-development/scripts/README.md +164 -0
  58. package/.xtrm/skills/default/hook-development/scripts/hook-linter.sh +153 -0
  59. package/.xtrm/skills/default/hook-development/scripts/test-hook.sh +252 -0
  60. package/.xtrm/skills/default/hook-development/scripts/validate-hook-schema.sh +159 -0
  61. package/.xtrm/skills/default/init-session/SKILL.md +69 -0
  62. package/.xtrm/skills/default/last30days/SKILL.md +881 -0
  63. package/.xtrm/skills/default/last30days/scripts/briefing.py +260 -0
  64. package/.xtrm/skills/default/last30days/scripts/evaluate-synthesis.py +120 -0
  65. package/.xtrm/skills/default/last30days/scripts/evaluate_search_quality.py +641 -0
  66. package/.xtrm/skills/default/last30days/scripts/generate-synthesis-inputs.py +53 -0
  67. package/.xtrm/skills/default/last30days/scripts/last30days.py +2137 -0
  68. package/.xtrm/skills/default/last30days/scripts/lib/__init__.py +1 -0
  69. package/.xtrm/skills/default/last30days/scripts/lib/bird_x.py +458 -0
  70. package/.xtrm/skills/default/last30days/scripts/lib/bluesky.py +225 -0
  71. package/.xtrm/skills/default/last30days/scripts/lib/brave_search.py +329 -0
  72. package/.xtrm/skills/default/last30days/scripts/lib/cache.py +165 -0
  73. package/.xtrm/skills/default/last30days/scripts/lib/chrome_cookies.py +265 -0
  74. package/.xtrm/skills/default/last30days/scripts/lib/cookie_extract.py +295 -0
  75. package/.xtrm/skills/default/last30days/scripts/lib/dates.py +124 -0
  76. package/.xtrm/skills/default/last30days/scripts/lib/dedupe.py +290 -0
  77. package/.xtrm/skills/default/last30days/scripts/lib/entity_extract.py +127 -0
  78. package/.xtrm/skills/default/last30days/scripts/lib/env.py +807 -0
  79. package/.xtrm/skills/default/last30days/scripts/lib/exa_search.py +176 -0
  80. package/.xtrm/skills/default/last30days/scripts/lib/hackernews.py +266 -0
  81. package/.xtrm/skills/default/last30days/scripts/lib/http.py +174 -0
  82. package/.xtrm/skills/default/last30days/scripts/lib/instagram.py +365 -0
  83. package/.xtrm/skills/default/last30days/scripts/lib/models.py +221 -0
  84. package/.xtrm/skills/default/last30days/scripts/lib/normalize.py +489 -0
  85. package/.xtrm/skills/default/last30days/scripts/lib/openai_reddit.py +631 -0
  86. package/.xtrm/skills/default/last30days/scripts/lib/openrouter_search.py +216 -0
  87. package/.xtrm/skills/default/last30days/scripts/lib/parallel_search.py +139 -0
  88. package/.xtrm/skills/default/last30days/scripts/lib/polymarket.py +580 -0
  89. package/.xtrm/skills/default/last30days/scripts/lib/quality_nudge.py +201 -0
  90. package/.xtrm/skills/default/last30days/scripts/lib/query.py +117 -0
  91. package/.xtrm/skills/default/last30days/scripts/lib/query_type.py +111 -0
  92. package/.xtrm/skills/default/last30days/scripts/lib/reddit.py +617 -0
  93. package/.xtrm/skills/default/last30days/scripts/lib/reddit_enrich.py +325 -0
  94. package/.xtrm/skills/default/last30days/scripts/lib/reddit_public.py +259 -0
  95. package/.xtrm/skills/default/last30days/scripts/lib/relevance.py +148 -0
  96. package/.xtrm/skills/default/last30days/scripts/lib/render.py +1018 -0
  97. package/.xtrm/skills/default/last30days/scripts/lib/safari_cookies.py +182 -0
  98. package/.xtrm/skills/default/last30days/scripts/lib/schema.py +843 -0
  99. package/.xtrm/skills/default/last30days/scripts/lib/score.py +775 -0
  100. package/.xtrm/skills/default/last30days/scripts/lib/scrapecreators_x.py +182 -0
  101. package/.xtrm/skills/default/last30days/scripts/lib/setup_wizard.py +186 -0
  102. package/.xtrm/skills/default/last30days/scripts/lib/tiktok.py +349 -0
  103. package/.xtrm/skills/default/last30days/scripts/lib/truthsocial.py +183 -0
  104. package/.xtrm/skills/default/last30days/scripts/lib/ui.py +620 -0
  105. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/LICENSE +21 -0
  106. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/bird-search.mjs +134 -0
  107. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/cookies.js +191 -0
  108. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/features.json +17 -0
  109. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/paginate-cursor.js +37 -0
  110. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/query-ids.json +20 -0
  111. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/runtime-features.js +151 -0
  112. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/runtime-query-ids.js +264 -0
  113. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-base.js +129 -0
  114. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-constants.js +50 -0
  115. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-features.js +347 -0
  116. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-search.js +157 -0
  117. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-types.js +2 -0
  118. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/lib/twitter-client-utils.js +511 -0
  119. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/LICENSE +22 -0
  120. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/README.md +29 -0
  121. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts +3 -0
  122. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts.map +1 -0
  123. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js +2 -0
  124. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js.map +1 -0
  125. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts +8 -0
  126. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts.map +1 -0
  127. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js +27 -0
  128. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js.map +1 -0
  129. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts +11 -0
  130. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts.map +1 -0
  131. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js +100 -0
  132. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js.map +1 -0
  133. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts +25 -0
  134. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts.map +1 -0
  135. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js +104 -0
  136. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js.map +1 -0
  137. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts +10 -0
  138. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts.map +1 -0
  139. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js +293 -0
  140. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js.map +1 -0
  141. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts +10 -0
  142. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts.map +1 -0
  143. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js +26 -0
  144. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js.map +1 -0
  145. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts +7 -0
  146. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts.map +1 -0
  147. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js +51 -0
  148. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js.map +1 -0
  149. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts +7 -0
  150. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts.map +1 -0
  151. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js +60 -0
  152. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js.map +1 -0
  153. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts +7 -0
  154. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts.map +1 -0
  155. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js +38 -0
  156. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js.map +1 -0
  157. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts +5 -0
  158. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts.map +1 -0
  159. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js +33 -0
  160. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js.map +1 -0
  161. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts +24 -0
  162. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts.map +1 -0
  163. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js +30 -0
  164. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js.map +1 -0
  165. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts +11 -0
  166. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts.map +1 -0
  167. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js +43 -0
  168. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js.map +1 -0
  169. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts +8 -0
  170. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts.map +1 -0
  171. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js +41 -0
  172. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js.map +1 -0
  173. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts +8 -0
  174. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts.map +1 -0
  175. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js +53 -0
  176. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js.map +1 -0
  177. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts +8 -0
  178. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts.map +1 -0
  179. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js +27 -0
  180. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js.map +1 -0
  181. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts +7 -0
  182. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts.map +1 -0
  183. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js +53 -0
  184. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js.map +1 -0
  185. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts +8 -0
  186. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts.map +1 -0
  187. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js +60 -0
  188. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js.map +1 -0
  189. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts +7 -0
  190. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts.map +1 -0
  191. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js +38 -0
  192. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js.map +1 -0
  193. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts +6 -0
  194. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts.map +1 -0
  195. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js +257 -0
  196. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js.map +1 -0
  197. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts +8 -0
  198. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts.map +1 -0
  199. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js +71 -0
  200. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js.map +1 -0
  201. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts +6 -0
  202. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts.map +1 -0
  203. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js +173 -0
  204. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js.map +1 -0
  205. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts +26 -0
  206. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts.map +1 -0
  207. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js +195 -0
  208. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js.map +1 -0
  209. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts +121 -0
  210. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts.map +1 -0
  211. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js +2 -0
  212. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js.map +1 -0
  213. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts +2 -0
  214. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts.map +1 -0
  215. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js +18 -0
  216. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js.map +1 -0
  217. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts +8 -0
  218. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts.map +1 -0
  219. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js +110 -0
  220. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js.map +1 -0
  221. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts +2 -0
  222. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts.map +1 -0
  223. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js +32 -0
  224. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js.map +1 -0
  225. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts +2 -0
  226. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts.map +1 -0
  227. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js +13 -0
  228. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js.map +1 -0
  229. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts +2 -0
  230. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts.map +1 -0
  231. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js +7 -0
  232. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js.map +1 -0
  233. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts +5 -0
  234. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts.map +1 -0
  235. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js +58 -0
  236. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js.map +1 -0
  237. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts +2 -0
  238. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts.map +1 -0
  239. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js +27 -0
  240. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js.map +1 -0
  241. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts +2 -0
  242. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts.map +1 -0
  243. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js +8 -0
  244. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js.map +1 -0
  245. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/package.json +40 -0
  246. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/package.json +13 -0
  247. package/.xtrm/skills/default/last30days/scripts/lib/websearch.py +401 -0
  248. package/.xtrm/skills/default/last30days/scripts/lib/xai_x.py +217 -0
  249. package/.xtrm/skills/default/last30days/scripts/lib/xiaohongshu_api.py +162 -0
  250. package/.xtrm/skills/default/last30days/scripts/lib/youtube_yt.py +538 -0
  251. package/.xtrm/skills/default/last30days/scripts/store.py +654 -0
  252. package/.xtrm/skills/default/last30days/scripts/sync.sh +50 -0
  253. package/.xtrm/skills/default/last30days/scripts/test-v1-vs-v2.sh +219 -0
  254. package/.xtrm/skills/default/last30days/scripts/watchlist.py +329 -0
  255. package/.xtrm/skills/default/planning/SKILL.md +405 -0
  256. package/.xtrm/skills/default/planning/evals/evals.json +19 -0
  257. package/.xtrm/skills/default/prompt-improving/README.md +162 -0
  258. package/.xtrm/skills/default/prompt-improving/SKILL.md +74 -0
  259. package/.xtrm/skills/default/prompt-improving/references/analysis_commands.md +24 -0
  260. package/.xtrm/skills/default/prompt-improving/references/chain_of_thought.md +24 -0
  261. package/.xtrm/skills/default/prompt-improving/references/mcp_definitions.md +20 -0
  262. package/.xtrm/skills/default/prompt-improving/references/multishot.md +23 -0
  263. package/.xtrm/skills/default/prompt-improving/references/xml_core.md +60 -0
  264. package/.xtrm/skills/default/quality-gates/.claude/hooks/hook-config.json +66 -0
  265. package/.xtrm/skills/default/quality-gates/.claude/hooks/quality-check.cjs +1286 -0
  266. package/.xtrm/skills/default/quality-gates/.claude/hooks/quality-check.py +334 -0
  267. package/.xtrm/skills/default/quality-gates/.claude/settings.json +3 -0
  268. package/.xtrm/skills/default/quality-gates/.claude/skills/using-quality-gates/SKILL.md +254 -0
  269. package/.xtrm/skills/default/quality-gates/README.md +109 -0
  270. package/.xtrm/skills/default/quality-gates/evals/evals.json +181 -0
  271. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/FINAL-EVAL-SUMMARY.md +75 -0
  272. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-auto-fix-verification/with_skill/outputs/response.md +59 -0
  273. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-mixed-language-project/with_skill/outputs/response.md +60 -0
  274. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/eval-summary.md +105 -0
  275. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/partial-install-python-only/with_skill/outputs/response.md +93 -0
  276. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/python-refactor-request/with_skill/outputs/response.md +104 -0
  277. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/quality-gate-error-fix/with_skill/outputs/response.md +74 -0
  278. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-general-chat/with_skill/outputs/response.md +18 -0
  279. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-math-question/with_skill/outputs/response.md +18 -0
  280. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-unrelated-coding/with_skill/outputs/response.md +56 -0
  281. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/tdd-guard-blocking-confusion/with_skill/outputs/response.md +67 -0
  282. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/typescript-feature-with-tests/with_skill/outputs/response.md +97 -0
  283. package/.xtrm/skills/default/scoping-service-skills/SKILL.md +231 -0
  284. package/.xtrm/skills/default/scoping-service-skills/scripts/scope.py +74 -0
  285. package/.xtrm/skills/default/service-skills-set/README.md +93 -0
  286. package/.xtrm/skills/default/service-skills-set/git-hooks/doc_reminder.py +67 -0
  287. package/.xtrm/skills/default/service-skills-set/git-hooks/skill_staleness.py +194 -0
  288. package/.xtrm/skills/default/service-skills-set/install-service-skills.py +193 -0
  289. package/.xtrm/skills/default/service-skills-set/service-registry.json +4 -0
  290. package/.xtrm/skills/default/service-skills-set/service-skills-readme.md +236 -0
  291. package/.xtrm/skills/default/service-skills-set/settings.json +37 -0
  292. package/.xtrm/skills/default/session-close-report/SKILL.md +131 -0
  293. package/.xtrm/skills/default/skill-creator/LICENSE.txt +202 -0
  294. package/.xtrm/skills/default/skill-creator/SKILL.md +479 -0
  295. package/.xtrm/skills/default/skill-creator/agents/analyzer.md +274 -0
  296. package/.xtrm/skills/default/skill-creator/agents/comparator.md +202 -0
  297. package/.xtrm/skills/default/skill-creator/agents/grader.md +223 -0
  298. package/.xtrm/skills/default/skill-creator/assets/eval_review.html +146 -0
  299. package/.xtrm/skills/default/skill-creator/eval-viewer/generate_review.py +471 -0
  300. package/.xtrm/skills/default/skill-creator/eval-viewer/viewer.html +1325 -0
  301. package/.xtrm/skills/default/skill-creator/references/schemas.md +430 -0
  302. package/.xtrm/skills/default/skill-creator/scripts/__init__.py +0 -0
  303. package/.xtrm/skills/default/skill-creator/scripts/aggregate_benchmark.py +401 -0
  304. package/.xtrm/skills/default/skill-creator/scripts/generate_report.py +326 -0
  305. package/.xtrm/skills/default/skill-creator/scripts/improve_description.py +248 -0
  306. package/.xtrm/skills/default/skill-creator/scripts/package_skill.py +136 -0
  307. package/.xtrm/skills/default/skill-creator/scripts/quick_validate.py +103 -0
  308. package/.xtrm/skills/default/skill-creator/scripts/run_eval.py +310 -0
  309. package/.xtrm/skills/default/skill-creator/scripts/run_loop.py +332 -0
  310. package/.xtrm/skills/default/skill-creator/scripts/utils.py +47 -0
  311. package/.xtrm/skills/default/specialists-creator/SKILL.md +705 -0
  312. package/.xtrm/skills/default/specialists-creator/scripts/validate-specialist.ts +41 -0
  313. package/.xtrm/skills/default/sync-docs/SKILL.md +262 -0
  314. package/.xtrm/skills/default/sync-docs/evals/evals.json +89 -0
  315. package/.xtrm/skills/default/sync-docs/references/doc-structure.md +99 -0
  316. package/.xtrm/skills/default/sync-docs/references/schema.md +103 -0
  317. package/.xtrm/skills/default/sync-docs/scripts/changelog/add_entry.py +216 -0
  318. package/.xtrm/skills/default/sync-docs/scripts/context_gatherer.py +405 -0
  319. package/.xtrm/skills/default/sync-docs/scripts/doc_structure_analyzer.py +495 -0
  320. package/.xtrm/skills/default/sync-docs/scripts/drift_detector.py +563 -0
  321. package/.xtrm/skills/default/sync-docs/scripts/validate_doc.py +365 -0
  322. package/.xtrm/skills/default/sync-docs/scripts/validate_metadata.py +185 -0
  323. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.json +293 -0
  324. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.md +13 -0
  325. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +27 -0
  326. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +210 -0
  327. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +28 -0
  328. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  329. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +101 -0
  330. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +28 -0
  331. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  332. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +5 -0
  333. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +27 -0
  334. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +198 -0
  335. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +28 -0
  336. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  337. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +94 -0
  338. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +28 -0
  339. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +1 -0
  340. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +27 -0
  341. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +237 -0
  342. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +28 -0
  343. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  344. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +134 -0
  345. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +28 -0
  346. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +1 -0
  347. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.json +297 -0
  348. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.md +13 -0
  349. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +27 -0
  350. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +137 -0
  351. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +92 -0
  352. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +1 -0
  353. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +134 -0
  354. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +86 -0
  355. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +1 -0
  356. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +27 -0
  357. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +193 -0
  358. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +72 -0
  359. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +1 -0
  360. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +211 -0
  361. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +91 -0
  362. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  363. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +27 -0
  364. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +182 -0
  365. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  366. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +1 -0
  367. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +222 -0
  368. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +88 -0
  369. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  370. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.json +298 -0
  371. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.md +13 -0
  372. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +27 -0
  373. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +125 -0
  374. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +97 -0
  375. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +5 -0
  376. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +144 -0
  377. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +78 -0
  378. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +5 -0
  379. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +27 -0
  380. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +104 -0
  381. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +91 -0
  382. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +5 -0
  383. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +79 -0
  384. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +82 -0
  385. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +5 -0
  386. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +27 -0
  387. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +302 -0
  388. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +33 -0
  389. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +114 -0
  390. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +118 -0
  391. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +38 -0
  392. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +158 -0
  393. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +95 -0
  394. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +5 -0
  395. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +71 -0
  396. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +90 -0
  397. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +5 -0
  398. package/.xtrm/skills/default/test-planning/SKILL.md +465 -0
  399. package/.xtrm/skills/default/test-planning/evals/evals.json +23 -0
  400. package/.xtrm/skills/default/updating-service-skills/SKILL.md +136 -0
  401. package/.xtrm/skills/default/updating-service-skills/scripts/drift_detector.py +222 -0
  402. package/.xtrm/skills/default/using-nodes/SKILL.md +333 -0
  403. package/.xtrm/skills/default/using-quality-gates/SKILL.md +254 -0
  404. package/.xtrm/skills/default/using-service-skills/SKILL.md +108 -0
  405. package/.xtrm/skills/default/using-service-skills/scripts/cataloger.py +74 -0
  406. package/.xtrm/skills/default/using-service-skills/scripts/skill_activator.py +152 -0
  407. package/.xtrm/skills/default/using-specialists/SKILL.md +848 -0
  408. package/.xtrm/skills/default/using-specialists/evals/evals.json +68 -0
  409. package/.xtrm/skills/default/using-tdd/SKILL.md +410 -0
  410. package/.xtrm/skills/default/using-xtrm/SKILL.md +127 -0
  411. package/.xtrm/skills/default/xt-debugging/SKILL.md +149 -0
  412. package/.xtrm/skills/default/xt-end/SKILL.md +297 -0
  413. package/.xtrm/skills/default/xt-merge/SKILL.md +326 -0
  414. package/.xtrm/skills/optional/README.txt +2 -0
  415. package/.xtrm/skills/optional/architecture-design/PACK.json +11 -0
  416. package/.xtrm/skills/optional/architecture-design/architecture-patterns/SKILL.md +494 -0
  417. package/.xtrm/skills/optional/architecture-design/architecture-patterns/references/advanced-patterns.md +391 -0
  418. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/SKILL.md +473 -0
  419. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  420. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/assets/prompt-template-library.md +264 -0
  421. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/chain-of-thought.md +412 -0
  422. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/few-shot-learning.md +386 -0
  423. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/prompt-optimization.md +428 -0
  424. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/prompt-templates.md +484 -0
  425. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/references/system-prompts.md +195 -0
  426. package/.xtrm/skills/optional/architecture-design/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  427. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/SKILL.md +277 -0
  428. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  429. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/implementer-prompt.md +113 -0
  430. package/.xtrm/skills/optional/architecture-design/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  431. package/.xtrm/skills/optional/code-quality/PACK.json +12 -0
  432. package/.xtrm/skills/optional/code-quality/code-review-excellence/SKILL.md +529 -0
  433. package/.xtrm/skills/optional/code-quality/multi-reviewer-patterns/SKILL.md +127 -0
  434. package/.xtrm/skills/optional/code-quality/systematic-debugging/SKILL.md +296 -0
  435. package/.xtrm/skills/optional/code-quality/verification-before-completion/SKILL.md +139 -0
  436. package/.xtrm/skills/optional/data-engineering/PACK.json +9 -0
  437. package/.xtrm/skills/optional/data-engineering/data-analyst/SKILL.md +57 -0
  438. package/.xtrm/skills/optional/research-methods/PACK.json +12 -0
  439. package/.xtrm/skills/optional/research-methods/academic-researcher/SKILL.md +269 -0
  440. package/.xtrm/skills/optional/research-methods/brainstorming/SKILL.md +164 -0
  441. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/frame-template.html +214 -0
  442. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/helper.js +88 -0
  443. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/server.cjs +354 -0
  444. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/start-server.sh +148 -0
  445. package/.xtrm/skills/optional/research-methods/brainstorming/scripts/stop-server.sh +56 -0
  446. package/.xtrm/skills/optional/research-methods/brainstorming/spec-document-reviewer-prompt.md +49 -0
  447. package/.xtrm/skills/optional/research-methods/brainstorming/visual-companion.md +287 -0
  448. package/.xtrm/skills/optional/research-methods/deep-research/SKILL.md +192 -0
  449. package/.xtrm/skills/optional/research-methods/fact-checker/SKILL.md +182 -0
  450. package/.xtrm/skills/optional/security-ops/PACK.json +9 -0
  451. package/.xtrm/skills/optional/security-ops/security-auditor/SKILL.md +165 -0
  452. package/.xtrm/skills/optional/xt-optional/PACK.json +16 -0
  453. package/.xtrm/skills/optional/xt-optional/docker-expert/SKILL.md +409 -0
  454. package/.xtrm/skills/optional/xt-optional/obsidian-cli/SKILL.md +106 -0
  455. package/.xtrm/skills/optional/xt-optional/python-testing/SKILL.md +815 -0
  456. package/.xtrm/skills/optional/xt-optional/senior-backend/SKILL.md +209 -0
  457. package/.xtrm/skills/optional/xt-optional/senior-backend/references/api_design_patterns.md +103 -0
  458. package/.xtrm/skills/optional/xt-optional/senior-backend/references/backend_security_practices.md +103 -0
  459. package/.xtrm/skills/optional/xt-optional/senior-backend/references/database_optimization_guide.md +103 -0
  460. package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/api_load_tester.py +114 -0
  461. package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/api_scaffolder.py +114 -0
  462. package/.xtrm/skills/optional/xt-optional/senior-backend/scripts/database_migration_tool.py +114 -0
  463. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/SKILL.md +226 -0
  464. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/experiment_design_frameworks.md +80 -0
  465. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/feature_engineering_patterns.md +80 -0
  466. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/references/statistical_methods_advanced.md +80 -0
  467. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/experiment_designer.py +100 -0
  468. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/feature_engineering_pipeline.py +100 -0
  469. package/.xtrm/skills/optional/xt-optional/senior-data-scientist/scripts/model_evaluation_suite.py +100 -0
  470. package/.xtrm/skills/optional/xt-optional/senior-devops/SKILL.md +209 -0
  471. package/.xtrm/skills/optional/xt-optional/senior-devops/references/cicd_pipeline_guide.md +103 -0
  472. package/.xtrm/skills/optional/xt-optional/senior-devops/references/deployment_strategies.md +103 -0
  473. package/.xtrm/skills/optional/xt-optional/senior-devops/references/infrastructure_as_code.md +103 -0
  474. package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/deployment_manager.py +114 -0
  475. package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/pipeline_generator.py +114 -0
  476. package/.xtrm/skills/optional/xt-optional/senior-devops/scripts/terraform_scaffolder.py +114 -0
  477. package/.xtrm/skills/optional/xt-optional/senior-security/SKILL.md +209 -0
  478. package/.xtrm/skills/optional/xt-optional/senior-security/references/cryptography_implementation.md +103 -0
  479. package/.xtrm/skills/optional/xt-optional/senior-security/references/penetration_testing_guide.md +103 -0
  480. package/.xtrm/skills/optional/xt-optional/senior-security/references/security_architecture_patterns.md +103 -0
  481. package/.xtrm/skills/optional/xt-optional/senior-security/scripts/pentest_automator.py +114 -0
  482. package/.xtrm/skills/optional/xt-optional/senior-security/scripts/security_auditor.py +114 -0
  483. package/.xtrm/skills/optional/xt-optional/senior-security/scripts/threat_modeler.py +114 -0
  484. package/CHANGELOG.md +16 -0
  485. package/README.md +5 -0
  486. package/cli/dist/index.cjs +798 -612
  487. package/cli/dist/index.cjs.map +1 -1
  488. package/cli/package.json +1 -1
  489. package/package.json +3 -1
  490. package/.xtrm/extensions/auto-session-name/index.ts +0 -29
  491. package/.xtrm/extensions/auto-session-name/package.json +0 -16
  492. package/.xtrm/extensions/auto-update/index.ts +0 -71
  493. package/.xtrm/extensions/auto-update/package.json +0 -16
  494. package/.xtrm/extensions/beads/index.ts +0 -232
  495. package/.xtrm/extensions/beads/package.json +0 -19
  496. package/.xtrm/extensions/compact-header/index.ts +0 -69
  497. package/.xtrm/extensions/compact-header/package.json +0 -16
  498. package/.xtrm/extensions/core/adapter.ts +0 -52
  499. package/.xtrm/extensions/core/guard-rules.ts +0 -100
  500. package/.xtrm/extensions/core/lib.ts +0 -3
  501. package/.xtrm/extensions/core/logger.ts +0 -45
  502. package/.xtrm/extensions/core/package.json +0 -18
  503. package/.xtrm/extensions/core/runner.ts +0 -71
  504. package/.xtrm/extensions/core/session-state.ts +0 -59
  505. package/.xtrm/extensions/custom-footer/index.ts +0 -398
  506. package/.xtrm/extensions/custom-footer/package.json +0 -19
  507. package/.xtrm/extensions/custom-provider-qwen-cli/index.ts +0 -363
  508. package/.xtrm/extensions/custom-provider-qwen-cli/package.json +0 -1
  509. package/.xtrm/extensions/git-checkpoint/index.ts +0 -53
  510. package/.xtrm/extensions/git-checkpoint/package.json +0 -16
  511. package/.xtrm/extensions/lsp-bootstrap/index.ts +0 -134
  512. package/.xtrm/extensions/lsp-bootstrap/package.json +0 -17
  513. package/.xtrm/extensions/pi-serena-compact/index.ts +0 -121
  514. package/.xtrm/extensions/pi-serena-compact/package.json +0 -16
  515. package/.xtrm/extensions/quality-gates/index.ts +0 -66
  516. package/.xtrm/extensions/quality-gates/package.json +0 -19
  517. package/.xtrm/extensions/service-skills/index.ts +0 -108
  518. package/.xtrm/extensions/service-skills/package.json +0 -19
  519. package/.xtrm/extensions/session-flow/index.ts +0 -96
  520. package/.xtrm/extensions/session-flow/package.json +0 -19
  521. package/.xtrm/extensions/xtrm-loader/index.ts +0 -152
  522. package/.xtrm/extensions/xtrm-loader/package.json +0 -19
  523. package/.xtrm/extensions/xtrm-ui/format.ts +0 -93
  524. package/.xtrm/extensions/xtrm-ui/index.ts +0 -1053
  525. package/.xtrm/extensions/xtrm-ui/package.json +0 -10
  526. package/.xtrm/extensions/xtrm-ui/themes/pidex-dark.json +0 -85
  527. package/.xtrm/extensions/xtrm-ui/themes/pidex-light.json +0 -85
@@ -0,0 +1,848 @@
1
+ ---
2
+ name: using-specialists
3
+ description: >
4
+ Use this skill whenever you're about to start a substantial task — pause first and
5
+ route the work through specialists instead of doing discovery or implementation
6
+ yourself. Consult before any: code review, security audit, deep bug investigation,
7
+ test generation, multi-file refactor, architecture analysis, or multi-wave
8
+ specialist orchestration. Also use for the mechanics of delegation: --bead
9
+ workflow, --context-depth, background jobs, MCP tool (`use_specialist`),
10
+ or specialists doctor. Don't wait for the user to say
11
+ "use a specialist" — proactively evaluate whether delegation makes sense.
12
+ version: 4.4
13
+ synced_at: a1e9f935
14
+ ---
15
+
16
+ # Specialists Usage
17
+
18
+ When this skill is loaded, you are an **orchestrator** — think CEO or CTO. You set direction, route work, unblock specialists, and synthesize outcomes. You do not implement.
19
+
20
+ Specialists handle **99% of tasks**. The only things you do yourself are things that are genuinely trivial (one-liner, quick config) or require a global overview only you can provide. Everything else goes to a specialist. When in doubt, delegate.
21
+
22
+ Your job is routing, sequencing, monitoring, and synthesis — not exploration or implementation. Do **ZERO implementation** yourself for substantial work: no file reads, no code writing, no docs, no self-investigation. If you catch yourself doing discovery, stop and dispatch explorer instead.
23
+
24
+ > **Sleep timers**: When you dispatch a specialist for a longer task, set a sleep timer and step back. Don't poll manually — set a timer appropriate to the expected run time, sleep, then check results. This lets you work independently and iterate without babysitting jobs.
25
+
26
+ Specialists are autonomous AI agents that run independently — fresh context, different model, no prior bias. The reason isn't just speed — it's quality. A specialist has no competing context, leaves a tracked record via beads, and can run in the background while you stay unblocked.
27
+
28
+ > **Session start**: Run `sp --help` once to see the full command surface. `sp` is the short alias for `specialists` — `sp run`, `sp feed`, `sp resume` etc. all work. Also useful: `sp run --help`, `sp resume --help`, `sp feed --help` for flag details.
29
+
30
+ ---
31
+
32
+ ## Hard Rules
33
+
34
+ 1. **Zero implementation by orchestrator.** When this skill is active for substantial work, you do not implement the solution yourself.
35
+ 2. **Never explore yourself.** All discovery, codebase mapping, and read-only investigation go through **explorer** (or **debugger** for root-cause analysis).
36
+ 3. **Run explorer before executor when context is lacking.** If the bead already has clear scope — files, symbols, approach — send executor directly. Only run explorer first when the issue lacks a clear track.
37
+ 4. **For tracked work, the bead is the prompt.** The bead description, notes, and parent context are the instruction surface.
38
+ 5. **`--bead` and `--prompt` are mutually exclusive.** If you need to refine instructions, update the bead notes; do not add `--prompt`.
39
+ 6. **Wave sequencing is strict.** Never start wave N+1 before wave N is complete AND merged. Within-wave parallelism is fine only for independent jobs.
40
+ 7. **Merge between waves is mandatory.** Executor worktree branches must be merged into master before the next wave starts. Use `sp merge <epic-id>` or `sp merge <chain-root-bead>` — never manual git merge. See "Merge Protocol" below.
41
+ 8. **No destructive operations by specialists.** No `rm -rf`, no force pushes, no database drops, no credential rotation, no mass deletes, no history rewrites. Surface destructive requirements to the user.
42
+ 9. **Executor does not run tests.** Executor runs lint + tsc only. Tests are the reviewer's and test-runner's responsibility in the chained pipeline.
43
+
44
+ ---
45
+
46
+ ## When to Use This Skill
47
+
48
+ **Default: always delegate.** Specialists handle 99% of tasks. The orchestrator only acts directly for things that are genuinely trivial (one-liner, quick config tweak) or require a global overview that only you can provide.
49
+
50
+ **Do it yourself only when:**
51
+ - It's a one-liner or formatting fix
52
+ - It's a quick config change that needs no investigation
53
+ - It genuinely requires high-level synthesis only you can do (e.g. reading results across multiple jobs and forming a next-step decision)
54
+
55
+ Everything else — investigation, implementation, review, testing, docs, planning, design — goes to a specialist.
56
+
57
+ ---
58
+
59
+ ## Canonical Workflow
60
+
61
+ ### CLI commands
62
+
63
+ ```bash
64
+ # Discovery
65
+ specialists list # discover available specialists
66
+ specialists doctor # health check: hooks, MCP, zombie jobs
67
+
68
+ # Running
69
+ specialists run <name> --bead <id> # foreground run (streams output)
70
+ specialists run <name> --bead <id> --background # background run
71
+ specialists run <name> --bead <id> --worktree # isolated worktree (edit-capable specialists)
72
+ specialists run <name> --bead <id> --job <job-id> # reuse another job's worktree
73
+ specialists run <name> --prompt "..." # ad-hoc (no bead tracking)
74
+ specialists run <name> --bead <id> --keep-alive # keep session alive after first turn
75
+ specialists run <name> --bead <id> --context-depth 2 # inject parent bead context
76
+
77
+ # Monitoring
78
+ specialists ps # list all jobs (status, specialist, elapsed, bead)
79
+ specialists ps <job-id> # inspect single job (full detail + ctx% badge)
80
+ specialists feed -f # tail merged feed (all jobs) — shows [ctx%] context window usage
81
+ specialists feed <job-id> # events for a specific job
82
+ specialists result <job-id> # final output text
83
+ specialists status --job <job-id> # single-job detail view (legacy — prefer `sp ps <id>`)
84
+
85
+ # Interaction
86
+ specialists steer <job-id> "new direction" # redirect ANY running job mid-run
87
+ specialists resume <job-id> "next task" # resume a waiting keep-alive job
88
+ specialists stop <job-id> # cancel a job
89
+
90
+ # Management
91
+ specialists edit <name> # edit specialist config (dot-path, --preset)
92
+ specialists clean # purge old job dirs + worktree GC
93
+ specialists clean --processes # kill all running/starting specialist jobs
94
+ specialists init --sync-skills # re-sync skills only (no full init)
95
+ specialists init --no-xtrm-check # skip xtrm prerequisite check (CI/testing)
96
+ ```
97
+
98
+ ---
99
+
100
+ ## Chained Bead Pipeline
101
+
102
+ This is the **standard for ALL tracked work**. Every specialist run gets its own child bead.
103
+ Each step's output accumulates on its bead. Downstream steps see upstream output automatically
104
+ via `--context-depth 2`. The bead chain IS the context chain — zero manual wiring needed.
105
+
106
+ ```
107
+ task-abc: "Fix auth token refresh"
108
+ └── abc-exp: explorer (READ_ONLY — auto-appends output to abc-exp notes)
109
+ └── abc-impl: executor (self-appends output to abc-impl notes, closes bead)
110
+ └── abc-rev: reviewer (READ_ONLY — auto-appends verdict via --job <exec-job>)
111
+ └── abc-fix: executor (if reviewer PARTIAL — fix bead, same worktree via --job)
112
+ ```
113
+
114
+ **How context flows (`--context-depth 2` = own + parent + grandparent = 3 beads):**
115
+
116
+ | Step | Specialist sees | Via |
117
+ |------|----------------|-----|
118
+ | abc-exp | abc-exp (own) + task-abc (parent) | `--bead abc-exp --context-depth 2` |
119
+ | abc-impl | abc-impl (own) + abc-exp (explorer findings in notes) + task-abc | `--bead abc-impl --context-depth 2` |
120
+ | reviewer | abc-impl bead (with executor output + reviewer verdict in notes) | `--bead abc-impl --job <exec-job>` |
121
+ | abc-fix | abc-fix (own) + abc-impl (executor output + reviewer verdict) + abc-exp | `--bead abc-fix --job <exec-job> --context-depth 2` |
122
+
123
+ - No copy-paste, no manual note injection between steps
124
+ - Every step has a full audit trail on its own bead
125
+ - The dep graph IS the context graph — self-documenting
126
+
127
+ ### Complete flow example
128
+
129
+ ```bash
130
+ # 1. Create the task bead
131
+ bd create --title "Fix auth token refresh bug" --type bug --priority 2
132
+ # -> unitAI-abc
133
+
134
+ # 2. Create chained child beads (create all upfront for clarity)
135
+ bd create --title "Explore: map token refresh code paths" --type task --priority 2
136
+ # -> unitAI-abc-exp
137
+ bd dep add abc-exp abc
138
+
139
+ bd create --title "Implement: fix token refresh retry on 401" --type task --priority 2
140
+ # -> unitAI-abc-impl
141
+ bd dep add abc-impl abc-exp
142
+
143
+ # 3. Wave 1 — Explorer
144
+ specialists run explorer --bead abc-exp --context-depth 2 --background
145
+ # -> Job started: e1f2g3
146
+ # Explorer output auto-appends to abc-exp notes (READ_ONLY behavior)
147
+ specialists result e1f2g3
148
+
149
+ # 4. [MERGE] Merge any worktree branches from Wave 1 into master
150
+ # READ_ONLY waves have no worktrees to merge
151
+
152
+ # 5. Wave 2 — Executor
153
+ specialists run executor --worktree --bead abc-impl --context-depth 2 --background
154
+ # -> Job started: a1b2c3
155
+ # Executor sees: abc-impl + abc-exp (with explorer notes) + abc via context-depth
156
+ # Executor self-appends output to abc-impl notes, closes abc-impl on completion
157
+
158
+ # 6. [MERGE] Merge impl worktree branch into master
159
+ sp merge abc-impl --rebuild
160
+
161
+ # 7. Wave 3 — Reviewer (no separate bead — uses --job + --prompt to enter executor's worktree)
162
+ specialists run reviewer --job a1b2c3 --keep-alive --background --prompt "Review the token refresh fix"
163
+ # -> Job started: r4v5w6
164
+ # Reviewer reads task bead from job a1b2c3's status.json automatically
165
+ # Reviewer auto-appends verdict to bead notes (READ_ONLY)
166
+ specialists result r4v5w6
167
+ # -> PASS: close task bead. PARTIAL/FAIL: go to step 8.
168
+
169
+ # 8. If PARTIAL — fix loop (same worktree, new child bead)
170
+ bd create --title "Fix: reviewer gaps on abc-impl" --type bug --priority 1
171
+ # -> unitAI-abc-fix
172
+ bd dep add abc-fix abc-impl
173
+
174
+ specialists run executor --bead abc-fix --job a1b2c3 --context-depth 2 --background
175
+ # Fixer runs in same worktree (via --job a1b2c3)
176
+ # Sees: abc-fix + abc-impl (executor output + reviewer verdict) + abc-exp via context-depth
177
+ # Repeat reviewer --job → fix loop until PASS
178
+
179
+ # 9. Close when reviewer says PASS
180
+ bd close abc --reason "Fixed: token refresh retries on 401. Reviewer PASS."
181
+ ```
182
+
183
+ **Why chaining matters:**
184
+ - Every step's output is preserved — full audit trail on each bead
185
+ - `--context-depth 2` gives each specialist the previous step's findings automatically
186
+ - No copy-pasting results between steps
187
+ - The orchestrator only creates beads and dispatches — zero context injection
188
+
189
+ ---
190
+
191
+ ## --job and --worktree Semantics
192
+
193
+ These flags control **workspace isolation**. Executors run in isolated git worktrees so
194
+ concurrent jobs don't corrupt shared files.
195
+
196
+ | Flag | Semantics | Creates worktree? |
197
+ |------|-----------|:-:|
198
+ | `--worktree` | Provision a new isolated workspace; requires `--bead` | Yes |
199
+ | `--job <id>` | Reuse the workspace of an existing job | No |
200
+
201
+ `--worktree` and `--job` are **mutually exclusive**. Specifying both exits with an error.
202
+
203
+ ### `--worktree`
204
+
205
+ Provisions a new git worktree + branch for the specialist run. Branch name is derived
206
+ deterministically from the bead id: `feature/<beadId>-<specialist-slug>`.
207
+
208
+ ```bash
209
+ specialists run executor --worktree --bead hgpu.3
210
+ # stderr: [worktree created: /repo/.worktrees/hgpu.3/hgpu.3-executor branch: feature/hgpu.3-executor]
211
+ ```
212
+
213
+ If the worktree already exists (interrupted run), it is **reused**, not recreated.
214
+
215
+ ### `--job <id>`
216
+
217
+ Reads `worktree_path` from the target job's `status.json` and uses that directory as `cwd`.
218
+ The caller's own `--bead` remains authoritative — `--job` only selects the workspace.
219
+
220
+ ```bash
221
+ # Reviewer enters executor's worktree to review exactly what was written
222
+ specialists run reviewer --job 49adda --keep-alive --background
223
+
224
+ # Fix executor re-enters same worktree (--bead provides new fix bead, --job provides workspace)
225
+ specialists run executor --bead hgpu.3-fix --job 49adda --context-depth 2 --background
226
+ ```
227
+
228
+ **Concurrency guard (MEDIUM/HIGH specialists):**
229
+
230
+ Blocked from entering while target job is `starting` or `running` — prevents concurrent file corruption.
231
+
232
+ | Target status | MEDIUM/HIGH | READ_ONLY/LOW |
233
+ |---------------|:-----------:|:-------------:|
234
+ | `starting` | ✗ Blocked | ✓ Allowed |
235
+ | `running` | ✗ Blocked | ✓ Allowed |
236
+ | `waiting` | ✓ Allowed | ✓ Allowed |
237
+ | `done`/`error`/`cancelled` | ✓ Allowed | ✓ Allowed |
238
+ | Unknown | ✗ Blocked (conservative) | ✓ Allowed |
239
+
240
+ **Bypass with `--force-job`:**
241
+
242
+ ```bash
243
+ specialists run executor --job 49adda --force-job --bead fix-123
244
+ ```
245
+
246
+ Use when the caller explicitly accepts concurrent write risk (e.g., target job known to be stalled but not yet terminal, emergency fix entry).
247
+
248
+ ### When to use each flag
249
+
250
+ | Scenario | Flag to use |
251
+ |----------|------------|
252
+ | First executor run for a task | `--worktree --bead <impl-bead>` |
253
+ | Reviewer on executor's output | `--job <exec-job-id>` (no `--worktree`) |
254
+ | Fix executor after reviewer PARTIAL | `--bead <fix-bead> --job <exec-job-id>` |
255
+ | Force entry to blocked worktree | `--bead <fix-bead> --job <exec-job-id> --force-job` |
256
+ | Explorer (READ_ONLY) | Neither — explorers don't need worktrees |
257
+ | Overthinker, planner, debugger | Neither — read-only and interactive specialists |
258
+
259
+ ---
260
+
261
+ ### Worktree write-boundary enforcement
262
+
263
+ Specialists running in worktrees are **prevented from writing outside their boundary**. The session generates a Pi extension that hooks `tool_call` events and blocks `edit`/`write`/`multiEdit`/`notebookEdit` tools with absolute paths outside the worktree.
264
+
265
+ **What's blocked:**
266
+ - `edit` with `/absolute/path/outside/worktree/file.ts`
267
+ - `write` with `/absolute/path/outside/worktree/new-file.ts`
268
+
269
+ **What's allowed:**
270
+ - Relative paths (`src/file.ts`) — resolve within worktree cwd
271
+ - Absolute paths inside the worktree boundary
272
+
273
+ This enforcement is automatic when `--worktree` is used. No configuration required. If the extension fails to generate (tmpdir permissions), a warning is logged and the session proceeds without protection.
274
+
275
+ ---
276
+
277
+ ## Dependency Mapping
278
+
279
+ Map bead dependencies to match the execution pipeline. The dep graph IS the wave plan.
280
+
281
+ ### Simple bug fix
282
+ ```
283
+ task → explore → impl
284
+ └── reviewer via --job (no own bead needed)
285
+ └── fix (if PARTIAL) → child of impl
286
+ ```
287
+ ```bash
288
+ bd dep add explore task
289
+ bd dep add impl explore
290
+ # reviewer: specialists run reviewer --job <impl-job>
291
+ # fix: bd dep add fix impl
292
+ ```
293
+
294
+ ### Complex feature (overthinker)
295
+ ```
296
+ task → explore → design → impl → [reviewer via --job] → [fix if PARTIAL]
297
+ ```
298
+ ```bash
299
+ bd dep add explore task
300
+ bd dep add design explore
301
+ bd dep add impl design
302
+ # reviewer: specialists run reviewer --job <impl-job>
303
+ ```
304
+
305
+ ### Epic with N children
306
+ Each child gets its own explore → impl chain. Reviewer runs via `--job` per impl.
307
+ ```
308
+ epic
309
+ ├── child-1 → explore-1 → impl-1 (reviewer via --job impl-1-job)
310
+ ├── child-2 → explore-2 → impl-2 (reviewer via --job impl-2-job)
311
+ └── child-N → explore-N → impl-N (reviewer via --job impl-N-job)
312
+ ```
313
+ Children within the same wave can run **in parallel** if they own disjoint files.
314
+
315
+ ### Parallel beads (same wave)
316
+ Beads in the same wave share no intra-wave dependencies. They depend on the previous wave's
317
+ output (same parent), not on each other.
318
+ ```
319
+ # Wave 2 parallel executors (after shared Wave 1 explorer):
320
+ bd dep add impl-a explore # impl-a depends on explore, NOT on impl-b
321
+ bd dep add impl-b explore # impl-b depends on explore, NOT on impl-a
322
+ ```
323
+ Each runs in its own `--worktree`. Merge both branches before Wave 3.
324
+
325
+ ### Test beads (batched)
326
+ Tests are **batched** — one test bead covers all impls in a wave, not per-impl.
327
+ The test bead depends on **all** impl beads it covers.
328
+ ```
329
+ bd dep add tests impl-a
330
+ bd dep add tests impl-b
331
+ bd dep add tests impl-c
332
+ # specialists run test-runner --bead tests --context-depth 2
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Review and Fix Loop
338
+
339
+ The review → fix loop is the mechanism for iterative quality improvement within a single worktree.
340
+
341
+ ### Standard loop
342
+
343
+ ```
344
+ 1. Executor claims impl bead, provisions --worktree, implements, closes bead.
345
+ -> Job: exec-job
346
+
347
+ 2. Reviewer enters same worktree via --job exec-job.
348
+ -> Reads task bead from exec-job status.json automatically.
349
+ -> Auto-appends verdict (PASS/PARTIAL/FAIL) to bead notes.
350
+
351
+ 3a. PASS: orchestrator closes parent task bead.
352
+
353
+ 3b. PARTIAL/FAIL:
354
+ -> Create fix bead as child of impl bead.
355
+ -> Run executor --bead fix-bead --job exec-job --context-depth 2.
356
+ -> Fix executor sees: fix-bead + impl (with reviewer verdict) + explore.
357
+ -> Fix executor closes fix-bead on completion.
358
+ -> Return to step 2 (reviewer on same job).
359
+
360
+ 4. Repeat until PASS.
361
+ ```
362
+
363
+ ### Commands
364
+
365
+ ```bash
366
+ # Step 1 — Executor with worktree
367
+ specialists run executor --worktree --bead unitAI-impl --context-depth 2 --background
368
+ # -> Job started: exec-job (e.g. 49adda)
369
+
370
+ # Step 2 — Reviewer enters same worktree (--prompt required when no --bead)
371
+ specialists run reviewer --job 49adda --keep-alive --background --prompt "Review impl changes"
372
+ # -> Job started: rev-job
373
+ specialists result rev-job
374
+ # PARTIAL → go to step 3b
375
+
376
+ # Step 3b — Create fix bead + run fix executor in same worktree
377
+ bd create --title "Fix: address reviewer findings on impl" --type bug --priority 1
378
+ # -> unitAI-fix1
379
+ bd dep add fix1 impl
380
+ specialists run executor --bead fix1 --job 49adda --context-depth 2 --background
381
+
382
+ # Re-review
383
+ specialists run reviewer --job 49adda --keep-alive --background --prompt "Re-review after fix"
384
+ # PASS → close parent
385
+ bd close unitAI-task --reason "Reviewer PASS. All findings addressed."
386
+ ```
387
+
388
+ ### Key invariants
389
+ - Reviewer never re-opens the impl bead — it was closed by the executor. The reviewer's verdict lives on the bead notes as appended output.
390
+ - Each fix iteration creates a **new child bead** — never reopen or re-claim the completed impl bead.
391
+ - The fix executor inherits the full context chain: fix-bead + impl (executor output + reviewer findings) + explore, via `--context-depth 2`.
392
+ - Multiple reviewer → fix cycles are expected for complex changes. The worktree is stable across all cycles.
393
+
394
+ ---
395
+
396
+ ## Merge Protocol — `sp merge`
397
+
398
+ The orchestrator owns merge timing, but **no longer performs manual git merges**. Use `sp merge <target>` instead.
399
+
400
+ ### When to merge vs when NOT to merge
401
+
402
+ **Do NOT merge within a chain.** A chain is a sequence of specialists sharing one worktree:
403
+ executor → reviewer → fix → re-review. The worktree stays live throughout. No merge until
404
+ the reviewer says PASS.
405
+
406
+ ```
407
+ executor --worktree --bead impl ← creates worktree
408
+ reviewer --job <exec-job> ← enters same worktree (no merge)
409
+ executor --bead fix --job <exec-job> ← re-enters same worktree (no merge)
410
+ reviewer --job <exec-job> ← re-enters same worktree (no merge)
411
+ PASS → NOW run sp merge <impl-bead>
412
+ ```
413
+
414
+ **DO merge between waves.** When the next wave's beads depend on this wave's code existing
415
+ on master, you must merge first. The dep graph tells you: beads connected by `--job` are
416
+ one chain (same worktree, no merge). Beads connected by `bd dep add` across different
417
+ file scopes are separate waves (different worktrees, merge between them).
418
+
419
+ ### `sp merge <target>` — the canonical path
420
+
421
+ `sp merge` handles the full merge workflow:
422
+
423
+ ```bash
424
+ # Merge a single chain (one executor's worktree branch)
425
+ sp merge unitAI-impl-bead
426
+
427
+ # Merge all chains under an epic (topological order, tsc gate after each)
428
+ sp merge unitAI-epic
429
+
430
+ # With rebuild after all merges complete
431
+ sp merge unitAI-epic --rebuild
432
+ ```
433
+
434
+ **What `sp merge` does:**
435
+
436
+ 1. Validates all target jobs are terminal (`done`/`error`/`cancelled`)
437
+ 2. Resolves chain-root jobs with worktree metadata
438
+ 3. Topologically sorts by bead dependencies (FIFO)
439
+ 4. For each branch: `git merge <branch> --no-ff --no-edit`
440
+ 5. Runs `bunx tsc --noEmit` after each merge (stops on type errors)
441
+ 6. Optionally rebuilds with `--rebuild` flag
442
+
443
+ **Why use `sp merge` instead of manual git:**
444
+
445
+ - Guarantees correct dependency order (bead deps → merge order)
446
+ - Catches type errors immediately after each merge
447
+ - Refuses merge if any chain job is still running
448
+ - Handles epic-level batch merge with one command
449
+
450
+ ### Planning context upfront
451
+
452
+ Before dispatching any wave, identify:
453
+ - **Chains** — beads that share a worktree via `--job` (executor → reviewer → fix → re-review)
454
+ - **Waves** — groups of independent chains that can run in parallel ("Wave 1" / "Wave 2b" are orchestrator speech for dispatch batches)
455
+ - **Merge points** — between waves, after all chains in the wave reach PASS
456
+ - **Epics** — the top merge-gated identity (bead epic) that owns chains across multiple waves
457
+
458
+ The dep graph encodes this. If bead B depends on bead A and they touch different files,
459
+ they're separate waves with a merge point between them.
460
+
461
+ ### Conflict handling
462
+
463
+ If `sp merge` hits a conflict:
464
+
465
+ 1. Command fails with list of conflicting files
466
+ 2. Resolve conflicts manually in your editor
467
+ 3. Run `bunx tsc --noEmit` to verify
468
+ 4. Continue with next chain (or re-run `sp merge <epic>` to resume)
469
+
470
+ **Common conflict pattern:** Parallel executors in the same wave may both create the same
471
+ utility file (e.g. `job-root.ts`). This is expected — implementations should be identical.
472
+ Keep one, delete the duplicate during conflict resolution.
473
+
474
+ ---
475
+
476
+ ## Bead-First Workflow (`--bead` is the prompt)
477
+
478
+ For tracked work, the bead is not just bookkeeping — it is the specialist's prompt.
479
+ The specialist reads:
480
+ - the bead title + description
481
+ - bead notes (including output appended by previous specialists in the chain)
482
+ - parent/ancestor bead context (controlled by `--context-depth`)
483
+
484
+ **Automatic context injection**: Runner injects ~3800 tokens of project memory at spawn:
485
+ - `.xtrm/memory.md` (SSOT: Do Not Repeat, How This Project Works, Active Context)
486
+ - `bd prime` output (workflow rules + all bd memories dump)
487
+ - GitNexus cheatsheet (when `.gitnexus/meta.json` exists — ~100 tokens)
488
+
489
+ This prevents specialists from rediscovering known gotchas on every run.
490
+
491
+ `--prompt` and `--bead` cannot be combined. When you need to give a specialist
492
+ specific instructions beyond what's in the bead description, update the bead notes first:
493
+
494
+ ```bash
495
+ bd update unitAI-abc --notes "INSTRUCTION: Rewrite docs/cli-reference.md from current
496
+ source. Read every command in src/cli/ and src/index.ts. Document all flags and examples."
497
+
498
+ specialists run executor --bead unitAI-abc --context-depth 2 --background
499
+ ```
500
+
501
+ **`--context-depth N`** — how many levels of parent-bead context to inject (default: 1).
502
+ Use **`--context-depth 2`** for all chained bead workflows. This gives each specialist its
503
+ own bead + the immediate predecessor's output + one more level of context.
504
+
505
+ **`--no-beads`** — skip creating an auto-tracking sub-bead, but still reads the `--bead` input.
506
+
507
+ **Edit gate access**: Specialists with `--bead` automatically set `bead-claim:<id>` KV key,
508
+ enabling write access in worktrees without session-scoped claims. Cleared on run completion.
509
+
510
+ ---
511
+
512
+ ## Choosing the Right Specialist
513
+
514
+ Run `specialists list` to see what's available. Match by task type:
515
+
516
+ | Task type | Best specialist | Why |
517
+ |-----------|----------------|-----|
518
+ | Architecture exploration / initial discovery | **explorer** (claude-haiku) | Fast codebase mapping, READ_ONLY. Output auto-appends to bead. |
519
+ | Live docs / library lookup / code discovery | **researcher** (claude-haiku) | Targeted (ctx7/deepwiki) or discovery (ghgrep → deepwiki) modes. `--keep-alive`. |
520
+ | Bug fix / feature implementation | **executor** (gpt-codex) | HIGH perms, writes code, runs lint+tsc, closes beads. `interactive: true` by default — enters `waiting` after first turn, orchestrator must stop explicitly. |
521
+ | Bug investigation / "why is X broken" | **debugger** (claude-sonnet) | 4-phase debug-fix-verify cycle. HIGH perms, keep-alive. GitNexus-first. |
522
+ | Complex design / tradeoff analysis | **overthinker** (gpt-4) | 4-phase: analysis → devil's advocate → synthesis → conclusion. `--keep-alive`. |
523
+ | Code review / compliance | **reviewer** (claude-sonnet) | PASS/PARTIAL/FAIL verdict. Use via `--job <exec-job>`. `--keep-alive`. |
524
+ | Multi-backend review | **parallel-review** (claude-sonnet) | Concurrent review across multiple backends |
525
+ | Planning / scoping | **planner** (claude-sonnet) | Structured issue breakdown with deps |
526
+ | Doc audit / drift detection / targeted sync | **sync-docs** (qwen3.5-plus) | 3-mode: targeted (named docs), area (time-window), full audit. MEDIUM perms, `--keep-alive`. |
527
+ | Doc writing / updates | **executor** (gpt-codex) | For heavy doc rewrites; sync-docs handles targeted updates directly |
528
+ | Test generation / suite execution | **test-runner** (claude-haiku) | Runs suites, interprets failures |
529
+ | Specialist authoring | **specialists-creator** (claude-sonnet) | Guides JSON creation against schema |
530
+
531
+ ### Specialist selection notes
532
+
533
+ - **executor does not run tests** — it runs `lint + tsc` only. Tests belong to the reviewer or test-runner phase.
534
+ - **executor enters `waiting` after first turn** — `interactive: true` is now default. If executor bails early (e.g. GitNexus CRITICAL risk warning), orchestrator can `resume` with "proceed, this is additive" instead of re-dispatching. Always `stop` executor explicitly when work is complete.
535
+ - **explorer** is READ_ONLY — its output auto-appends to the input bead's notes. No implementation.
536
+ - **reviewer** is best dispatched via `--job <exec-job> --prompt "..."` — it enters the same worktree to see exactly what was written. `--job` alone is not enough; `--prompt` or `--bead` is always required.
537
+ - **debugger** over **explorer** when you need root cause analysis — GitNexus call-chain tracing, ranked hypotheses, evidence-backed remediation.
538
+ - **overthinker** before **executor** for any non-trivial task — surfaces edge cases, challenges assumptions, produces solution direction. Cheap relative to wrong implementation.
539
+ - **researcher** is the docs specialist — never look up library docs yourself, delegate to researcher.
540
+ - **sync-docs** is interactive — always `--keep-alive`, use `resume` to approve/deny after audit.
541
+
542
+ ### Example dispatches
543
+
544
+ ```bash
545
+ specialists run explorer --bead unitAI-exp --context-depth 2 --background
546
+ specialists run researcher --bead unitAI-research --context-depth 2 --keep-alive --background
547
+ specialists run debugger --bead unitAI-bug --context-depth 2 --background
548
+ specialists run planner --bead unitAI-scope --context-depth 2 --background
549
+ specialists run overthinker --bead unitAI-design --context-depth 2 --keep-alive --background
550
+ specialists run executor --worktree --bead unitAI-impl --context-depth 2 --background
551
+ specialists run reviewer --job <exec-job-id> --keep-alive --background --prompt "Review the <feature> implementation"
552
+ specialists run sync-docs --bead unitAI-docs --context-depth 2 --keep-alive --background
553
+ specialists run test-runner --bead unitAI-tests --context-depth 2 --background
554
+ specialists run specialists-creator --bead unitAI-skill --context-depth 2 --background
555
+ ```
556
+
557
+ ### Overthinker-first pattern for complex tasks
558
+
559
+ ```bash
560
+ # Full chain: task → explore → design → impl
561
+ bd create --title "Redesign auth middleware" --type feature --priority 2 # -> unitAI-task
562
+ bd create --title "Explore: map auth middleware" --type task --priority 2 # -> unitAI-exp
563
+ bd dep add exp task
564
+ bd create --title "Design: auth middleware approach" --type task --priority 2 # -> unitAI-design
565
+ bd dep add design exp
566
+ bd create --title "Implement: auth middleware redesign" --type task --priority 2 # -> unitAI-impl
567
+ bd dep add impl design
568
+
569
+ # Wave 1: Explorer
570
+ specialists run explorer --bead unitAI-exp --context-depth 2 --background
571
+ # (output auto-appends to exp notes)
572
+
573
+ # Wave 2: Overthinker (sees exp findings via context-depth)
574
+ specialists run overthinker --bead unitAI-design --context-depth 2 --keep-alive --background
575
+ # enters waiting after Phase 4
576
+
577
+ specialists resume <job-id> "What about the edge case where X?"
578
+ specialists resume <job-id> "Is option B safer than option A here?"
579
+ specialists stop <job-id> # when satisfied
580
+ # (overthinker output is on unitAI-design notes)
581
+
582
+ # Wave 3: Executor (sees design + exp + task via context-depth — no manual wiring)
583
+ specialists run executor --worktree --bead unitAI-impl --context-depth 2 --background
584
+ ```
585
+
586
+ ### Monitoring with `sp ps` and `sp list --live`
587
+
588
+ Use `specialists ps` (alias `sp ps`) for job monitoring instead of manual JSON polling:
589
+
590
+ ```bash
591
+ # Quick overview — all jobs
592
+ specialists ps
593
+ # Output: ID, status, specialist, elapsed, bead, [ctx%] badge
594
+
595
+ # Inspect specific job
596
+ specialists ps <job-id>
597
+ # Shows: full status, worktree path, chain, ctx% (context window utilization)
598
+
599
+ # The ctx% in `sp feed` and `sp ps` shows context window utilization:
600
+ # - 0-40% = OK (plenty of room)
601
+ # - 40-65% = MONITOR
602
+ # - 65-80% = WARN (▲ indicator shown)
603
+ # - >80% = CRITICAL (▲ indicator shown)
604
+ ```
605
+
606
+ **Live tmux session selector (`sp list --live`):**
607
+
608
+ ```bash
609
+ # Interactive selector for running/waiting tmux sessions
610
+ specialists list --live
611
+ # Shows: tmux session name, specialist, elapsed, status
612
+ # Arrow keys to select, Enter to attach
613
+
614
+ # Include dead sessions (PID or tmux gone)
615
+ specialists list --live --show-dead
616
+ # Dead sessions shown with 'dead' status instead of filtered out
617
+ ```
618
+
619
+ Dead job detection (`is_dead`) is computed at read time — never persisted to avoid stale state. A job is dead when:
620
+ - PID no longer exists (`kill -0 <pid>` fails)
621
+ - tmux session gone (`tmux has-session -t <name>` fails or times out)
622
+
623
+ ---
624
+
625
+ ### Pi extensions and packages
626
+
627
+ Pi extensions are global at `~/.pi/agent/extensions/`. Pi packages are global npm installs.
628
+ Specialists run with `--no-extensions` and selectively re-enable:
629
+
630
+ - `quality-gates` — lint/typecheck enforcement (non-READ_ONLY only)
631
+ - `service-skills` — service catalog activation
632
+ - `pi-gitnexus` — call-chain tracing, blast radius analysis (resolved from global npm)
633
+ - `pi-serena-tools` — token-efficient LSP reads/edits (resolved from global npm)
634
+
635
+ When gitnexus tools are used during a run, the supervisor accumulates a `gitnexus_summary`
636
+ in the `run_complete` event: `files_touched`, `symbols_analyzed`, `highest_risk`,
637
+ `tool_invocations`.
638
+
639
+ ---
640
+
641
+ ## Steering and Resume
642
+
643
+ ### Steer — redirect any running job
644
+
645
+ `steer` sends a message to a running specialist. Delivered after the current tool call
646
+ finishes, before the next LLM call.
647
+
648
+ ```bash
649
+ specialists steer a1b2c3 "STOP what you are doing. Focus only on supervisor.ts"
650
+ specialists steer a1b2c3 "Do NOT audit. Write the actual file to disk now."
651
+ ```
652
+
653
+ ### Resume — continue a keep-alive session
654
+
655
+ `resume` sends a new prompt to a specialist in `waiting` state. Retains full conversation history.
656
+
657
+ **Specialists that always use `--keep-alive`:**
658
+
659
+ | Specialist | Enters `waiting` after | What to send via `resume` |
660
+ |-----------|----------------------|--------------------------|
661
+ | **executor** | First turn completion (may be partial if bailed early) | "proceed, this is additive", "address the risk warning and continue", or "done, close bead" |
662
+ | **researcher** | Delivering research findings | Follow-up question, new angle, or "done, thanks" |
663
+ | **reviewer** | Delivering verdict (PASS/PARTIAL/FAIL) | Your response, clarification, or "accepted, close out" |
664
+ | **overthinker** | Phase 4 conclusion | Follow-up question, counter-argument, or "done, thanks" |
665
+ | **debugger** | Phase 3 fix attempt or Phase 4 verify result | Follow-up fix, "try different approach", or "done" |
666
+ | **sync-docs** | Audit report or targeted update result | "approve", "deny", or specific instructions |
667
+
668
+ > **Warning:** A job in `waiting` looks identical to a stalled job. **Always check with `sp ps`
669
+ > before killing a keep-alive job.**
670
+
671
+ ```bash
672
+ # Check before stopping
673
+ specialists ps d4e5f6
674
+ # -> status: waiting ← healthy, expecting input
675
+
676
+ specialists resume d4e5f6 "What about backward compatibility?"
677
+ specialists stop d4e5f6 # only when truly done iterating
678
+ ```
679
+
680
+ ---
681
+
682
+ ## Wave Orchestration
683
+
684
+ For multi-step work, dispatch specialists in **waves**.
685
+
686
+ A **wave** is a set of specialist jobs that may run in parallel **only if they are independent**.
687
+ Waves are strictly sequential: **never start wave N+1 before wave N completes AND is merged**.
688
+
689
+ ### Wave rules
690
+
691
+ 1. **Sequence between waves.** Exploration → implementation → review → doc sync.
692
+ 2. **Parallelize only within a wave.** Jobs that don't depend on each other may run together.
693
+ 3. **Do not overlap waves.** Wait for every job, read results, update beads, merge.
694
+ 4. **Bead deps encode the pipeline.** The dependency graph should match wave order.
695
+ 5. **`--context-depth 2` for all chained runs.** Each specialist sees parent + predecessor.
696
+ 6. **Merge between waves is mandatory.** See Merge Protocol above.
697
+
698
+ ### Polling a wave
699
+
700
+ ```bash
701
+ specialists ps # list all jobs — shows status, specialist, elapsed, bead
702
+ specialists ps abc123 # inspect specific job (full detail)
703
+ specialists ps abc123 def456 ghi789 # inspect multiple jobs
704
+ ```
705
+
706
+ A wave is complete when every job is `completed` or `error` AND you have:
707
+ 1. Read results: `specialists result <job-id>` for each
708
+ 2. Updated/closed beads as needed
709
+ 3. Merged all worktree branches into master
710
+
711
+ ### Canonical multi-wave example
712
+
713
+ ```bash
714
+ # 0. Parent bead
715
+ bd create --title "Add worktree isolation to executor" --type feature --priority 1
716
+ # -> unitAI-root
717
+
718
+ # 1. Chained child beads
719
+ bd create --title "Explore: map job run architecture" --type task --priority 2 # -> unitAI-exp
720
+ bd dep add exp root
721
+ bd create --title "Implement: worktree isolation" --type task --priority 2 # -> unitAI-impl
722
+ bd dep add impl exp
723
+ # Note: reviewer runs via --job, test-runner gets its own bead
724
+
725
+ # Wave 1 — Explorer
726
+ specialists run explorer --bead unitAI-exp --context-depth 2 --background
727
+ # -> Job started: job1
728
+ specialists result job1
729
+
730
+ # [MERGE] Nothing to merge from READ_ONLY wave
731
+
732
+ # Wave 2 — Executor
733
+ specialists run executor --worktree --bead unitAI-impl --context-depth 2 --background
734
+ # -> Job started: job2 (worktree: .worktrees/unitAI-impl/unitAI-impl-executor)
735
+ specialists result job2
736
+
737
+ # [MERGE] Merge worktree branch into master (sp merge handles topological order + tsc gate)
738
+ sp merge unitAI-impl --rebuild
739
+
740
+ # Wave 3 — Reviewer (no bead, uses --job)
741
+ specialists run reviewer --job job2 --keep-alive --background
742
+ # -> Job started: job3
743
+ specialists result job3
744
+ # PASS → Wave 4. PARTIAL → fix loop.
745
+
746
+ # Wave 4 — Tests (if needed)
747
+ bd create --title "Test: worktree isolation" --type task --priority 2 # -> unitAI-tests
748
+ bd dep add tests impl
749
+ specialists run test-runner --bead unitAI-tests --context-depth 2 --background
750
+
751
+ # Close
752
+ bd close root --reason "Worktree isolation implemented. Reviewer PASS. Tests green."
753
+ ```
754
+
755
+ ### Within-wave parallelism
756
+
757
+ ```bash
758
+ # Parallel executors — disjoint files, same parent explorer
759
+ specialists run executor --worktree --bead unitAI-impl-a --context-depth 2 --background
760
+ specialists run executor --worktree --bead unitAI-impl-b --context-depth 2 --background
761
+ # Each runs in its own worktree.
762
+ # Do NOT start next wave until BOTH complete AND BOTH are merged.
763
+ ```
764
+
765
+ ---
766
+
767
+ ## Coordinator Responsibilities
768
+
769
+ ### 1. Route work — don't explore or implement yourself
770
+ Discovery goes to **explorer** first; implementation goes to **executor** only after discovery is done.
771
+
772
+ ### 2. Validate combined output after each wave
773
+ ```bash
774
+ npm run lint # project quality gate
775
+ npx tsc --noEmit # type check
776
+ git diff --stat # review what changed
777
+ ```
778
+
779
+ ### 3. Handle failures — don't silently fall back
780
+ ```bash
781
+ specialists feed <job-id> # see what happened
782
+ specialists doctor # check for systemic issues
783
+ ```
784
+
785
+ Options when a specialist fails:
786
+ - **Steer**: `specialists steer <id> "Focus on X instead"`
787
+ - **Switch**: e.g. sync-docs stalls → try executor
788
+ - **Stop and report** to the user before doing it yourself
789
+
790
+ ### 4. Merge between waves (CRITICAL)
791
+ See Merge Protocol above. No exceptions.
792
+
793
+ ### 5. Run drift detection after doc-heavy sessions
794
+ ```bash
795
+ python3 .xtrm/skills/default/sync-docs/scripts/drift_detector.py scan --json
796
+ python3 .xtrm/skills/default/sync-docs/scripts/drift_detector.py update-sync <file>
797
+ ```
798
+
799
+ ---
800
+
801
+ ## MCP Tools (Claude Code)
802
+
803
+ | Tool | Purpose |
804
+ |------|---------|
805
+ | `use_specialist` | Foreground run; pass `bead_id` for tracked work, get final output in conversation context |
806
+
807
+ MCP is intentionally minimal. Use CLI for orchestration, monitoring, steering, resume, and cancellation.
808
+
809
+ ---
810
+
811
+ ## Known Issues
812
+
813
+ - **READ_ONLY output auto-appends** to the input bead after completion (via Supervisor). Output also available via `specialists result`.
814
+ - **`--bead` and `--prompt` conflict** by design. For tracked work, update bead notes: `bd update <id> --notes "INSTRUCTION: ..."` then `--bead` only.
815
+ - **Job in `waiting` now shows magenta status** with resume hint in `status`, WAIT banner in `feed`, and resume footer in `result`. Always check before stopping a keep-alive job.
816
+ - **Explorer (qwen) may produce empty output** — the model sometimes completes tool calls but fails to emit a final text summary. The bead notes will be empty. If this happens, either re-run with a different model or do the investigation yourself.
817
+ - **`specialists init` requires xtrm** — `.xtrm/` directory and `xt` CLI must exist. Use `--no-xtrm-check` to bypass in CI/testing.
818
+ - **`specialists doctor` now detects skill drift** — compares `config/skills/` hashes against `.xtrm/skills/default/` and validates symlink chains.
819
+
820
+ ---
821
+
822
+ ## Troubleshooting
823
+
824
+ ```bash
825
+ specialists doctor # health check: hooks, MCP, zombie jobs, skill drift detection
826
+ specialists edit <name> # edit specialist config (dot-path, --preset)
827
+ specialists clean --processes # kill stale/zombie specialist processes
828
+ ```
829
+
830
+ - **RPC timeout on worktree job start** (30s, `command id=1`) → pi runs `npm install` in fresh
831
+ worktrees if `.pi/settings.json` lists local packages. Root cause: worktree gets a stale copy
832
+ of `.pi/settings.json` from the branch point. Fix: ensure `.pi/settings.json` has
833
+ `"packages": []` (packages are global now). `provisionWorktree()` also symlinks
834
+ `.pi/npm/node_modules` to the main repo's as a safety net.
835
+ - **RPC timeout on non-worktree job** → check for: (1) zombie vitest/tinypool processes
836
+ (`ps aux | grep vitest`, then `kill`), (2) stale dist (`npm run build`),
837
+ (3) model provider issues (try a different model to isolate).
838
+ - **"specialist not found"** → `specialists list` (project-scope only)
839
+ - **Job hangs** → `specialists steer <id> "finish up"` or `specialists stop <id>`
840
+ - **Config skipped** → stderr shows `[specialists] skipping <file>: <reason>`
841
+ - **Stall timeout** → specialist hit 120s inactivity. Check `specialists feed <id>`, then retry or switch.
842
+ - **`--prompt` and `--bead` conflict** → use bead notes: `bd update <id> --notes "INSTRUCTION: ..."` then `--bead` only.
843
+ - **Worktree already exists** → it will be reused (not recreated). Safe to re-run.
844
+ - **`--job` fails: worktree_path missing** → target job was not started with `--worktree`. Use `--worktree` on the next run.
845
+ - **`--job` without `--prompt` or `--bead`** → reviewer/executor requires one of these. Use `--prompt "Review the X implementation"` with `--job`.
846
+ - **Stale specialist processes** → SessionStart hook warns about old binary versions. Run `specialists clean --processes` to kill them all.
847
+ - **`specialists init` fails with xtrm error** → xtrm must be installed first: `npm install -g xtrm-tools && xt install`. Use `--no-xtrm-check` in CI.
848
+ - **Skill drift detected by doctor** → Run `specialists init --sync-skills` to re-sync canonical skills to `.xtrm/skills/default/` and refresh active symlinks.