xtrm-tools 0.7.16 → 0.7.18

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 (264) hide show
  1. package/.xtrm/config/hooks.json +2 -0
  2. package/.xtrm/config/instructions/agents-top.md +2 -1
  3. package/.xtrm/registry.json +432 -707
  4. package/.xtrm/skills/default/creating-service-skills/scripts/bootstrap.py +82 -156
  5. package/.xtrm/skills/default/creating-service-skills/scripts/scaffolder.py +73 -121
  6. package/.xtrm/skills/default/hook-development/references/patterns.md +1 -1
  7. package/.xtrm/skills/default/last30days/scripts/test-v1-vs-v2.sh +2 -2
  8. package/.xtrm/skills/default/planning/SKILL.md +75 -29
  9. package/.xtrm/skills/default/releasing/SKILL.md +163 -57
  10. package/.xtrm/skills/default/security-pipeline/SKILL.md +192 -0
  11. package/.xtrm/skills/default/security-pipeline/scripts/security-bootstrap.sh +294 -0
  12. package/.xtrm/skills/default/security-pipeline/templates/.githooks/pre-push.template +39 -0
  13. package/.xtrm/skills/default/security-pipeline/templates/.github/workflows/gitleaks.yml +33 -0
  14. package/.xtrm/skills/default/security-pipeline/templates/.github/workflows/osv-scanner.yml +33 -0
  15. package/.xtrm/skills/default/security-pipeline/templates/.github/workflows/semgrep.yml +41 -0
  16. package/.xtrm/skills/default/security-pipeline/templates/.gitleaks.toml +44 -0
  17. package/.xtrm/skills/default/security-pipeline/templates/.pre-commit-config.yaml +67 -0
  18. package/.xtrm/skills/default/security-pipeline/templates/.semgrepignore +46 -0
  19. package/.xtrm/skills/default/security-pipeline/templates/scripts/security-scan.sh +57 -0
  20. package/.xtrm/skills/default/security-pipeline/templates/scripts/semgrep-diff.sh +68 -0
  21. package/.xtrm/skills/default/session-close-report/SKILL.md +167 -6
  22. package/.xtrm/skills/default/sync-docs/SKILL.md +1 -1
  23. package/.xtrm/skills/default/update-specialists/SKILL.md +204 -77
  24. package/.xtrm/skills/default/update-xt/SKILL.md +270 -4
  25. package/.xtrm/skills/default/updating-service-skills/scripts/drift_detector.py +22 -0
  26. package/.xtrm/skills/default/using-kpi/SKILL.md +47 -5
  27. package/.xtrm/skills/default/using-script-specialists/SKILL.md +7 -5
  28. package/.xtrm/skills/default/using-specialists/SKILL.md +13 -12
  29. package/.xtrm/skills/default/using-specialists-auto/SKILL.md +137 -0
  30. package/.xtrm/skills/default/using-specialists-v2/SKILL.md +15 -22
  31. package/.xtrm/skills/default/using-specialists-v3/SKILL.md +1074 -0
  32. package/.xtrm/skills/default/vaultctl/SKILL.md +2 -2
  33. package/CHANGELOG.md +91 -3
  34. package/cli/dist/index.cjs +12425 -3770
  35. package/cli/dist/index.cjs.map +1 -1
  36. package/cli/package.json +9 -3
  37. package/package.json +27 -7
  38. package/packages/pi-extensions/extensions/xtrm-ui/index.ts +76 -1
  39. package/packages/pi-extensions/package.json +1 -1
  40. package/.xtrm/config/pi/extensions/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.combined.log +0 -7
  41. package/.xtrm/config/pi/extensions/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.stderr.log +0 -0
  42. package/.xtrm/config/pi/extensions/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.stdout.log +0 -7
  43. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/LICENSE +0 -22
  44. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/README.md +0 -29
  45. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts +0 -3
  46. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts.map +0 -1
  47. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js +0 -2
  48. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js.map +0 -1
  49. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts +0 -8
  50. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts.map +0 -1
  51. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js +0 -27
  52. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js.map +0 -1
  53. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts +0 -11
  54. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts.map +0 -1
  55. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js +0 -100
  56. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js.map +0 -1
  57. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts +0 -25
  58. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts.map +0 -1
  59. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js +0 -104
  60. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js.map +0 -1
  61. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts +0 -10
  62. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts.map +0 -1
  63. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js +0 -293
  64. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js.map +0 -1
  65. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts +0 -10
  66. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts.map +0 -1
  67. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js +0 -26
  68. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js.map +0 -1
  69. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts +0 -7
  70. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts.map +0 -1
  71. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js +0 -51
  72. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js.map +0 -1
  73. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts +0 -7
  74. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts.map +0 -1
  75. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js +0 -60
  76. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js.map +0 -1
  77. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts +0 -7
  78. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts.map +0 -1
  79. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js +0 -38
  80. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js.map +0 -1
  81. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts +0 -5
  82. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts.map +0 -1
  83. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js +0 -33
  84. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js.map +0 -1
  85. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts +0 -24
  86. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts.map +0 -1
  87. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js +0 -30
  88. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js.map +0 -1
  89. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts +0 -11
  90. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts.map +0 -1
  91. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js +0 -43
  92. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js.map +0 -1
  93. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts +0 -8
  94. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts.map +0 -1
  95. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js +0 -41
  96. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js.map +0 -1
  97. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts +0 -8
  98. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts.map +0 -1
  99. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js +0 -53
  100. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js.map +0 -1
  101. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts +0 -8
  102. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts.map +0 -1
  103. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js +0 -27
  104. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js.map +0 -1
  105. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts +0 -7
  106. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts.map +0 -1
  107. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js +0 -53
  108. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js.map +0 -1
  109. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts +0 -8
  110. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts.map +0 -1
  111. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js +0 -60
  112. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js.map +0 -1
  113. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts +0 -7
  114. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts.map +0 -1
  115. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js +0 -38
  116. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js.map +0 -1
  117. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts +0 -6
  118. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts.map +0 -1
  119. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js +0 -257
  120. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js.map +0 -1
  121. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts +0 -8
  122. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts.map +0 -1
  123. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js +0 -71
  124. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js.map +0 -1
  125. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts +0 -6
  126. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts.map +0 -1
  127. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js +0 -173
  128. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js.map +0 -1
  129. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts +0 -26
  130. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts.map +0 -1
  131. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js +0 -195
  132. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js.map +0 -1
  133. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts +0 -121
  134. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts.map +0 -1
  135. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js +0 -2
  136. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js.map +0 -1
  137. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts +0 -2
  138. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts.map +0 -1
  139. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js +0 -18
  140. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js.map +0 -1
  141. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts +0 -8
  142. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts.map +0 -1
  143. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js +0 -110
  144. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js.map +0 -1
  145. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts +0 -2
  146. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts.map +0 -1
  147. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js +0 -32
  148. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js.map +0 -1
  149. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts +0 -2
  150. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts.map +0 -1
  151. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js +0 -13
  152. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js.map +0 -1
  153. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts +0 -2
  154. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts.map +0 -1
  155. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js +0 -7
  156. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js.map +0 -1
  157. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts +0 -5
  158. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts.map +0 -1
  159. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js +0 -58
  160. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js.map +0 -1
  161. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts +0 -2
  162. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts.map +0 -1
  163. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js +0 -27
  164. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js.map +0 -1
  165. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts +0 -2
  166. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts.map +0 -1
  167. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js +0 -8
  168. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js.map +0 -1
  169. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/package.json +0 -40
  170. package/.xtrm/skills/default/planning/evals/evals.json +0 -19
  171. package/.xtrm/skills/default/quality-gates/evals/evals.json +0 -181
  172. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/FINAL-EVAL-SUMMARY.md +0 -75
  173. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-auto-fix-verification/with_skill/outputs/response.md +0 -59
  174. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/edge-case-mixed-language-project/with_skill/outputs/response.md +0 -60
  175. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/eval-summary.md +0 -105
  176. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/partial-install-python-only/with_skill/outputs/response.md +0 -93
  177. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/python-refactor-request/with_skill/outputs/response.md +0 -104
  178. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/quality-gate-error-fix/with_skill/outputs/response.md +0 -74
  179. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-general-chat/with_skill/outputs/response.md +0 -18
  180. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-math-question/with_skill/outputs/response.md +0 -18
  181. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/should-not-trigger-unrelated-coding/with_skill/outputs/response.md +0 -56
  182. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/tdd-guard-blocking-confusion/with_skill/outputs/response.md +0 -67
  183. package/.xtrm/skills/default/quality-gates/workspace/iteration-1/typescript-feature-with-tests/with_skill/outputs/response.md +0 -97
  184. package/.xtrm/skills/default/sync-docs/evals/evals.json +0 -89
  185. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.json +0 -293
  186. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.md +0 -13
  187. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +0 -27
  188. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +0 -210
  189. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +0 -28
  190. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +0 -1
  191. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +0 -101
  192. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +0 -28
  193. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +0 -5
  194. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +0 -5
  195. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +0 -27
  196. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +0 -198
  197. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +0 -28
  198. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +0 -1
  199. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +0 -94
  200. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +0 -28
  201. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +0 -1
  202. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +0 -27
  203. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +0 -237
  204. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +0 -28
  205. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +0 -1
  206. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +0 -134
  207. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +0 -28
  208. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +0 -1
  209. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.json +0 -297
  210. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.md +0 -13
  211. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +0 -27
  212. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +0 -137
  213. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +0 -92
  214. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +0 -1
  215. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +0 -134
  216. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +0 -86
  217. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +0 -1
  218. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +0 -27
  219. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +0 -193
  220. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +0 -72
  221. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +0 -1
  222. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +0 -211
  223. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +0 -91
  224. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +0 -5
  225. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +0 -27
  226. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +0 -182
  227. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +0 -95
  228. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +0 -1
  229. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +0 -222
  230. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +0 -88
  231. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +0 -5
  232. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.json +0 -298
  233. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.md +0 -13
  234. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +0 -27
  235. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +0 -125
  236. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +0 -97
  237. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +0 -5
  238. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +0 -144
  239. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +0 -78
  240. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +0 -5
  241. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +0 -27
  242. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +0 -104
  243. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +0 -91
  244. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +0 -5
  245. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +0 -79
  246. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +0 -82
  247. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +0 -5
  248. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +0 -27
  249. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +0 -302
  250. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +0 -33
  251. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +0 -114
  252. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +0 -118
  253. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +0 -38
  254. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +0 -158
  255. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +0 -95
  256. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +0 -5
  257. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +0 -71
  258. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +0 -90
  259. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +0 -5
  260. package/.xtrm/skills/default/test-planning/evals/evals.json +0 -23
  261. package/.xtrm/skills/default/using-specialists/SKILL.safe.md +0 -1082
  262. package/.xtrm/skills/default/using-specialists/SKILL.ultra.md +0 -1082
  263. package/.xtrm/skills/default/using-specialists/evals/evals.json +0 -68
  264. package/packages/pi-extensions/.serena/project.yml +0 -130
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env bash
2
+ # Run semgrep against the diff between HEAD and origin/main.
3
+ # Used by pre-push hook so pre-existing debt doesn't block unrelated pushes.
4
+ # CI's full scan remains the source of truth for absolute findings.
5
+
6
+ set -euo pipefail
7
+
8
+ if ! command -v semgrep >/dev/null; then
9
+ echo "semgrep not installed — skipping (CI covers it)"
10
+ exit 0
11
+ fi
12
+
13
+ # Derive base ref dynamically. Order:
14
+ # 1. branch's tracked upstream ('@{u}') — most reliable
15
+ # 2. common default branches if their *remote* version exists (origin/*)
16
+ # 3. local default branches IF different from current branch
17
+ # We refuse to use the current branch as its own baseline because then
18
+ # merge-base resolves to HEAD and --baseline-commit=HEAD silently scans
19
+ # nothing on every push.
20
+ HEAD_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || true)
21
+ HEAD_SHA=$(git rev-parse HEAD)
22
+
23
+ upstream=$(git rev-parse --abbrev-ref --symbolic-full-name '@{u}' 2>/dev/null || true)
24
+ BASE_REF=""
25
+ if [ -n "$upstream" ]; then
26
+ BASE_REF="$upstream"
27
+ else
28
+ for cand in origin/main origin/master main master; do
29
+ git rev-parse --verify "$cand" >/dev/null 2>&1 || continue
30
+ # Skip a local-branch candidate that IS the current branch
31
+ [ "$cand" = "$HEAD_BRANCH" ] && continue
32
+ BASE_REF="$cand"
33
+ break
34
+ done
35
+ fi
36
+
37
+ [ -n "$BASE_REF" ] && git fetch "${BASE_REF%%/*}" "${BASE_REF#*/}" --quiet 2>/dev/null || true
38
+
39
+ SEMGREP_BASELINE_ARGS=()
40
+ if [ -n "$BASE_REF" ]; then
41
+ BASE=$(git merge-base HEAD "$BASE_REF" 2>/dev/null || true)
42
+ # merge-base==HEAD here means branch is at upstream tip — legitimate empty
43
+ # diff. Pass --baseline-commit so semgrep produces an empty result rather
44
+ # than falling back to a full scan.
45
+ [ -n "$BASE" ] && SEMGREP_BASELINE_ARGS=(--baseline-commit="$BASE")
46
+ fi
47
+ # Last-resort: no upstream resolved at all. rev-list can equal HEAD on single
48
+ # -commit histories; reject and full-scan in that case.
49
+ if [ ${#SEMGREP_BASELINE_ARGS[@]} -eq 0 ]; then
50
+ BASE=$(git rev-list HEAD --max-count=50 | tail -1)
51
+ if [ -n "$BASE" ] && [ "$BASE" != "$HEAD_SHA" ]; then
52
+ SEMGREP_BASELINE_ARGS=(--baseline-commit="$BASE")
53
+ else
54
+ echo "[semgrep-diff] no usable baseline (no upstream, single-commit branch, or pushing default branch directly) — running full scan"
55
+ fi
56
+ fi
57
+
58
+ exec semgrep scan \
59
+ --config=p/default \
60
+ --config=p/security-audit \
61
+ --config=p/secrets \
62
+ --config=p/python \
63
+ --config=p/dockerfile \
64
+ --config=p/github-actions \
65
+ "${SEMGREP_BASELINE_ARGS[@]}" \
66
+ --error \
67
+ --quiet \
68
+ --skip-unknown-extensions
@@ -41,6 +41,52 @@ are factually superseded.
41
41
 
42
42
  ## Workflow
43
43
 
44
+ ### 0. Cleanup before reporting (MANDATORY)
45
+
46
+ A report on a dirty session is misleading. Before selecting or generating any
47
+ report, verify and clean up everything this session opened. The report must
48
+ reflect a clean terminal state.
49
+
50
+ ```bash
51
+ # 0a. Worktrees opened during the session
52
+ git worktree list # any feature/fix/chore worktrees still here?
53
+ # Remove every worktree this session created (or that a stopped specialist left):
54
+ git worktree remove <path> # for each stale entry
55
+ git branch -D <branch> # only after confirming merged or abandoned
56
+ git worktree prune # drop stale metadata
57
+
58
+ # 0b. Specialist jobs still running or waiting
59
+ sp ps # MUST be empty (or only intentionally kept-alive jobs)
60
+ sp stop <job-id> # for any leftover running/waiting job
61
+ # After every sp stop, re-check sp ps and git worktree list — sp stop should
62
+ # clean its worktree, but verify.
63
+
64
+ # 0c. Stale background processes from the session
65
+ ps -ef | grep -E '(serena|gitnexus|specialists|sp-serve|sp-script|pi[ -]|claude)' | grep -v grep
66
+ # Kill anything you launched that is still running and no longer needed.
67
+ # Be especially careful with:
68
+ # - serena MCP servers (often leak when an MCP host crashes)
69
+ # - gitnexus index processes (`npx gitnexus analyze` can outlive its terminal)
70
+ # - sp-serve / sp-script tmux sessions
71
+ # - orphaned `pi` or `claude` processes from interactive sessions
72
+
73
+ tmux ls 2>/dev/null # any sp-* or xt-* tmux sessions left?
74
+ tmux kill-session -t <name> # for each stale session
75
+
76
+ # 0d. Tmp dirs the session created (only if large or sensitive)
77
+ ls -la /tmp/sp-serve-* /tmp/sp-script-* 2>/dev/null
78
+ ```
79
+
80
+ Do not skip any sub-step. If a process refuses to stop cleanly, document it in
81
+ the **Problems Encountered** section of the report so the next agent knows.
82
+
83
+ A clean session ends with:
84
+ - `git worktree list` showing only the main worktree (plus any intentional ones)
85
+ - `sp ps` showing 0 jobs (or only intentional keep-alive)
86
+ - no leaked `serena` / `gitnexus` / `specialists` / `sp-serve` / `sp-script`
87
+ processes from this session
88
+ - no orphaned tmux sessions matching `sp-*` or `xt-*`
89
+
44
90
  ### 1. Select report: update existing or generate new
45
91
 
46
92
  For same-day update:
@@ -115,8 +161,8 @@ delete this section. If prior dispatches exist, keep and extend them.
115
161
  #### Problems Encountered
116
162
  Every problem hit during the session. Root Cause and Resolution columns are
117
163
  mandatory. Include: bugs discovered, wrong approaches tried, blockers hit,
118
- tooling failures. If no problems exist anywhere in the same-day report, delete
119
- this section entirely.
164
+ tooling failures, and any cleanup-step failures from Step 0 above. If no
165
+ problems exist anywhere in the same-day report, delete this section entirely.
120
166
 
121
167
  #### Code Changes
122
168
  The skeleton lists files. Add narrative:
@@ -127,7 +173,8 @@ The skeleton lists files. Add narrative:
127
173
  to the final pushed stack
128
174
 
129
175
  #### Documentation Updates
130
- List doc changes, skill updates, memory saves, CHANGELOG entries.
176
+ List doc changes, skill updates, memory saves, CHANGELOG entries
177
+ (see Step 5 — due-diligence sweep — and Step 6 — CHANGELOG sync).
131
178
  Delete if no doc work happened.
132
179
 
133
180
  #### Open Issues with Context
@@ -162,12 +209,108 @@ Ensure all frontmatter counts are accurate after filling/updating:
162
209
  - `issues_closed` — actual closed issue count represented in the report
163
210
  - `commits` — commit count represented in the report, if known
164
211
 
165
- ### 5. Commit the report
212
+ ### 5. Due-diligence sweep (paranoid mode — assume you forgot something)
213
+
214
+ Step 0 cleaned the *process* state. This step audits the *content* state.
215
+ Cleanup work the orchestrator usually forgets at session close, ranked by
216
+ how often it gets missed:
217
+
218
+ - **Service skills**: did this session touch any code under a service
219
+ registered in `.claude/skills/service-registry.json` (or equivalent
220
+ registry)? If yes, the service skill's SKILL.md or diagnostic scripts
221
+ are likely drifted. Run `/updating-service-skills` (or
222
+ `service-skills-sync` specialist) and let it scan. If no registry exists,
223
+ skip — but check whether the project keeps service skills under
224
+ `.xtrm/skills/user/packs/<service>/` and treat them the same.
225
+ - **Docs SSOT**: did the session change architecture, migrations, public
226
+ APIs, or service ownership? If yes, run `/sync-docs` (or the
227
+ `sync-docs` specialist) for any drifted doc. Skip if changes are
228
+ pure-internal (refactors with no observable surface change).
229
+ - **Memories**: every `bd close` should have triggered a memory-gate ack.
230
+ Run `bd memories <topic>` to confirm anything genuinely novel landed.
231
+ If you saw a real surprise but acked "nothing novel" out of haste,
232
+ go back and `bd remember` it now.
233
+ - **CLAUDE.md / project guide**: did this session add or remove a
234
+ service, change a key port, change a top-level workflow command, or
235
+ change how tools are wired? If yes, append/correct in CLAUDE.md before
236
+ commit — the file is loaded automatically by every future session.
237
+ - **Evidence artifacts**: did the session generate reports, dashboards,
238
+ CSVs, or figures intended to be persisted (`scripts/outputs/`,
239
+ `docs/review/`, etc.)? Confirm they are committed; otherwise either
240
+ commit them or document in the report why they were not kept.
241
+ - **Decisions**: did the session make a non-obvious architectural call
242
+ (deprecating a service, schema choice, dependency swap)? Record via
243
+ `bd decision` if the project uses it, otherwise note in the report.
244
+ - **Tests**: did new behavior land without tests? If yes, file a test
245
+ follow-up bead (`discovered-from:<impl-id>`) before closing — do not
246
+ let untested behavior leave the session silent.
247
+ - **Skill packs (`.xtrm/skills/`)**: did you edit a skill in this
248
+ project? If the canonical version lives in xtrm-tools, mirror the edit
249
+ there too (or note that `xt update` will overwrite the local mirror on
250
+ next sync, which makes the local edit ephemeral).
251
+ - **Open beads created mid-session**: every bead filed this session
252
+ should be either closed, scheduled with a parent, or marked with clear
253
+ context. Run `bd list --status=open --created-by=me` (or equivalent)
254
+ and confirm none are floating without a parent or follow-up note.
255
+
256
+ If any item above turns up real work, do it now or file a follow-up bead
257
+ linked `discovered-from:<this-session-root>` so the next agent picks it up.
258
+ A clean session means none of these were forgotten — the report should be
259
+ able to honestly claim "due-diligence sweep clean."
260
+
261
+ ### 6. Sync CHANGELOG.md (MANDATORY when user-facing changes shipped)
262
+
263
+ The session report is for the next *agent*; CHANGELOG.md is for downstream
264
+ *consumers*. Both must stay in sync — the report alone is not enough.
265
+
266
+ ```bash
267
+ ls CHANGELOG.md 2>/dev/null # confirm the project keeps one
268
+ git tag --sort=-v:refname | head -3 # last release tag
269
+ git log <last-tag>..HEAD --oneline # what is missing
270
+ ```
166
271
 
167
- Reports are versioned handoff artifacts and should be tracked.
272
+ Decision tree:
273
+
274
+ - **A release was cut this session** (new tag, e.g. via `/releasing` or
275
+ `changelog-keeper`): the new version section already exists. Verify it
276
+ contains every user-facing change from the session and that
277
+ `[Unreleased]` is empty. Stop — release flow owns CHANGELOG.
278
+ - **No release was cut**: append every user-facing change from the session
279
+ to the existing `[Unreleased]` block at the top of CHANGELOG.md. Use
280
+ Keep a Changelog categories: `### Added` / `### Changed` / `### Deprecated`
281
+ / `### Removed` / `### Fixed` / `### Security`. One bullet per change,
282
+ lead with the affected subsystem or symbol, include the bead ID(s) when
283
+ available — same prose density as prior `[Unreleased]` entries.
284
+ - **No user-facing change shipped** (pure orchestration, doc-only edits to
285
+ internal-handoff files like reports/skills, refactors with no observable
286
+ effect): skip — do not pollute `[Unreleased]` with internal noise. Note
287
+ the skip in the Documentation Updates section so it is auditable.
288
+
289
+ What counts as user-facing for `[Unreleased]`:
290
+ - new or removed CLI flags, commands, env vars, config keys
291
+ - new or removed services / containers / jobs an operator deploys
292
+ - schema migrations that downstream consumers see
293
+ - new or removed API/MCP/REST endpoints, tools, or response fields
294
+ - bug fixes that change observable behavior
295
+ - security-relevant changes
296
+
297
+ What does NOT belong in `[Unreleased]`:
298
+ - session reports themselves
299
+ - skill or memory edits that only affect agents
300
+ - refactors with byte-identical observable behavior
301
+ - per-issue notes that already live in beads
302
+
303
+ If the project has no CHANGELOG.md, skip silently — do not create one
304
+ without operator direction.
305
+
306
+ ### 7. Commit the report (and CHANGELOG if updated)
307
+
308
+ Reports are versioned handoff artifacts and should be tracked. If Step 5
309
+ modified `CHANGELOG.md`, fold it into the same commit so the report and
310
+ changelog ship together.
168
311
 
169
312
  ```bash
170
- git add .xtrm/reports/
313
+ git add .xtrm/reports/ CHANGELOG.md # CHANGELOG.md only if changed
171
314
  git commit -m "session report: <date>"
172
315
  ```
173
316
 
@@ -175,11 +318,29 @@ If you updated an existing same-day report after an earlier report commit, commi
175
318
  that update with the same message style or fold it into the current final commit
176
319
  before push.
177
320
 
321
+ ### 8. Final cleanup verification (MANDATORY)
322
+
323
+ After committing, re-run the Step 0 checks one more time:
324
+
325
+ ```bash
326
+ git worktree list
327
+ sp ps
328
+ ps -ef | grep -E '(serena|gitnexus|specialists|sp-serve|sp-script)' | grep -v grep
329
+ tmux ls 2>/dev/null
330
+ ```
331
+
332
+ If any of these show session-leaked artifacts, stop them now or document them
333
+ in the report. Do not consider the session "closed" until this verification is
334
+ clean.
335
+
178
336
  ## Quality bar
179
337
 
180
338
  The reference is `~/projects/specialists/.xtrm/reports/2026-03-30-orchestration-session.md`.
181
339
  Every report must match that level of detail. Specifically:
182
340
 
341
+ - Step 0 cleanup performed before report generation; Step 8 verification clean.
342
+ - Step 5 due-diligence sweep performed; service skills, docs, memories, CLAUDE.md, evidence, decisions, tests, and skill mirrors checked (or skipped with reason).
343
+ - Step 6 CHANGELOG sync performed when user-facing changes shipped (or skip noted).
183
344
  - No empty `<!-- FILL -->` markers left in the final output
184
345
  - No duplicate same-day reports unless explicitly requested by the operator
185
346
  - Every closed issue has context, not just an ID
@@ -78,7 +78,7 @@ and stop.
78
78
 
79
79
  ```bash
80
80
  python3 .xtrm/skills/default/sync-docs/scripts/drift_detector.py scan --json \
81
- | jq '[.[] | select(.path == "<YOUR_DOC>")]'
81
+ | jq '[.stale[]? | select(.doc == "<YOUR_DOC>")]'
82
82
  ```
83
83
 
84
84
  If your doc reports stale, capture the list of commits since `synced_at` — those are your candidate commits for Phase 3.
@@ -1,35 +1,121 @@
1
1
  ---
2
2
  name: update-specialists
3
3
  description: >
4
- Reconcile all xtrm-managed asset drift across repos.
5
- Use this skill when user says "update specialists", "xtrm drift", "assets out of date",
6
- or when operator needs guided refresh across one repo or many.
7
- version: 2.0
4
+ Reconcile specialists runtime drift and xtrm-managed asset drift across one repo or many.
5
+ Use this skill when user says "update specialists", "specialists is out of date",
6
+ "xtrm drift", "skills not updating", "assets out of date", or when operator needs
7
+ guided refresh of specialists/xtrm state.
8
+ version: 2.1
8
9
  synced_at: 2026-05-05
9
10
  ---
10
11
 
11
12
  # update-specialists
12
13
 
13
- Interactive wrapper over `xt update` for xtrm-managed asset drift.
14
+ Interactive operator workflow for the two distribution tracks:
14
15
 
15
- Canonical-live model:
16
- - **Category A**: specialist runtime / loader-live surfaces. No refresh needed; verify only.
17
- - **Category B**: xtrm-managed snapshots under repos (`.xtrm/skills/default/`, `.xtrm/hooks/default/`, and related managed assets). These can drift and need operator-confirmed refresh.
16
+ - **Category A — specialists runtime / npm-live assets**
17
+ - specialist definitions
18
+ - mandatory rules
19
+ - tool catalogs
20
+ - node configs
21
+ - resolved by `sp` from the installed `@jaggerxtrm/specialists` package unless a repo intentionally overrides them
22
+ - **Category B — xtrm-managed filesystem assets**
23
+ - skills under `.xtrm/skills/default/`
24
+ - hooks under `.xtrm/hooks/default/`
25
+ - active `.claude/skills`, `.pi/skills`, hook settings, and related registry-managed files
26
+ - refreshed by `xt update`
18
27
 
19
- Skill goal:
20
- 1. find projects root,
21
- 2. inspect drift,
22
- 3. summarize per-repo state,
23
- 4. ask operator which repos to refresh,
24
- 5. run `xt update --apply`,
25
- 6. re-check,
26
- 7. report final state.
28
+ Do not collapse these flows. Category A is specialists-owned and uses `sp` commands. Category B is xtrm-owned and uses `xt` commands.
27
29
 
28
- No automatic execution. Always operator-confirmed.
30
+ No automatic destructive execution. Always summarize first and ask before applying refresh/prune actions.
29
31
 
30
- ## Operator Flow
32
+ ## Quick Decision Tree
31
33
 
32
- ### 1) Discover projects root
34
+ 1. User says **specialist configs/rules/catalog/node behavior is stale** → run Category A flow.
35
+ 2. User says **skills/hooks/Claude/Pi active files are stale** → run Category B flow.
36
+ 3. User says **update specialists** with no detail → run both diagnostics, then present a combined plan.
37
+ 4. User is in many repos → use root discovery and group results by repo.
38
+ 5. `xt` missing → Category A can still run; Category B falls back to install/update guidance.
39
+ 6. `sp` missing → tell user to install/upgrade `@jaggerxtrm/specialists`; do not claim runtime drift is fixed.
40
+
41
+ ## Category A — Specialists Runtime / npm-live Flow
42
+
43
+ ### A1) Verify package and command surface
44
+
45
+ Run in the target repo:
46
+
47
+ ```bash
48
+ sp --version
49
+ sp doctor
50
+ sp doctor --check-drift
51
+ ```
52
+
53
+ Use `specialists` instead of `sp` if the alias is unavailable.
54
+
55
+ Category A canonical source is the installed `@jaggerxtrm/specialists` npm package. To update it, upgrade/pin the package version:
56
+
57
+ ```bash
58
+ npm install -g @jaggerxtrm/specialists@latest
59
+ # or project-local/package-managed pin, depending on repo policy
60
+ npm install -D @jaggerxtrm/specialists@<version>
61
+ ```
62
+
63
+ Report the installed version and whether the repo is intentionally pinned.
64
+
65
+ ### A2) Interpret `sp doctor --check-drift`
66
+
67
+ This checks stale `.specialists/default/` snapshots against package-canonical assets.
68
+
69
+ Typical statuses:
70
+
71
+ | Finding | Meaning | Action |
72
+ |---|---|---|
73
+ | redundant / byte-identical default | Local default snapshot duplicates package canonical | Safe to prune after review |
74
+ | diverged default | Local default differs from package canonical | Treat as intentional until operator confirms migration |
75
+ | missing package canonical | Installed package or registry is incomplete/stale | Upgrade/reinstall specialists package |
76
+ | user overlay | `.specialists/user/` custom asset | Preserve; never overwrite automatically |
77
+
78
+ ### A3) Prune redundant Category A snapshots
79
+
80
+ Dry-run first:
81
+
82
+ ```bash
83
+ sp prune-stale-defaults --dry-run
84
+ sp prune-stale-defaults --root <repo>
85
+ ```
86
+
87
+ Only after operator confirmation, prune redundant defaults:
88
+
89
+ ```bash
90
+ sp prune-stale-defaults --root <repo>
91
+ ```
92
+
93
+ Rules:
94
+ - Never prune `.specialists/user/`.
95
+ - Never overwrite or delete diverged defaults without explicit operator approval.
96
+ - If a diverged default should become a customization, move/keep it as user-owned policy and document why.
97
+ - If the repo deliberately pins old behavior, leave `.specialists/default/` in place and record the pinned specialists version.
98
+
99
+ ### A4) Validate runtime resolution
100
+
101
+ For specialist definitions and tool policy:
102
+
103
+ ```bash
104
+ sp list --full
105
+ sp config show <specialist> --resolved
106
+ ```
107
+
108
+ For mandatory rules/skills references in custom specialists, verify resolution from package canonical or project override:
109
+
110
+ ```bash
111
+ sp config show <specialist> --resolved --from-source
112
+ ```
113
+
114
+ Use `--from-source` only in a specialists source/worktree context where installed dist may lag local source.
115
+
116
+ ## Category B — xtrm-managed Filesystem Asset Flow
117
+
118
+ ### B1) Discover projects root
33
119
 
34
120
  Ask for root if user did not name one.
35
121
 
@@ -41,7 +127,7 @@ Default order:
41
127
 
42
128
  If multiple candidate roots exist, ask which one to use.
43
129
 
44
- ### 2) Run doctor
130
+ ### B2) Run xtrm doctor
45
131
 
46
132
  Use:
47
133
 
@@ -49,106 +135,147 @@ Use:
49
135
  xt doctor --cwd <root> --json
50
136
  ```
51
137
 
52
- If `xt` is unavailable, stop and switch to fallback guidance below.
138
+ If `xt` is unavailable, stop Category B and use fallback guidance below. Do not invent xtrm bulk commands.
139
+
140
+ ### B3) Summarize Category B drift
53
141
 
54
- ### 3) Summarize drift
142
+ Render a clean table grouped by repo:
55
143
 
56
- Render clean table grouped by repo:
57
- - repo path
58
- - status
59
- - drift count
60
- - missing / extra / mismatched assets
61
- - suggested action
144
+ | repo | status | drift | missing | mismatched | suggested action |
145
+ |---|---|---:|---:|---:|---|
62
146
 
63
147
  Keep focus on operator action, not internal diagnostics.
64
148
 
65
- ### 4) Ask for confirm
149
+ ### B4) Ask for confirmation
66
150
 
67
151
  Offer three paths:
68
- - refresh all repos,
152
+ - dry-run only,
69
153
  - refresh specific repos,
70
- - dry-run only.
154
+ - refresh all repos.
71
155
 
72
156
  If user names one repo, keep flow narrow and confirm only that repo.
73
157
 
74
- ### 5) Apply refresh
158
+ ### B5) Apply xtrm refresh
75
159
 
76
- Use:
160
+ Dry-run:
77
161
 
78
162
  ```bash
79
- xt update --apply --root <root>
163
+ xt update --root <root>
164
+ xt update --repo <repo>
80
165
  ```
81
166
 
82
- Or for one repo:
167
+ Apply:
83
168
 
84
169
  ```bash
170
+ xt update --apply --root <root>
85
171
  xt update --apply --repo <repo>
86
172
  ```
87
173
 
88
- For dry-run, omit `--apply`.
174
+ ### B6) Re-run doctor
175
+
176
+ Run the same doctor command again after update:
177
+
178
+ ```bash
179
+ xt doctor --cwd <root> --json
180
+ ```
181
+
182
+ Confirm clean state or reduced-to-intentional drift.
183
+
184
+ ## Combined Multi-repo Flow
185
+
186
+ When the operator asks broadly to "update specialists" across repos:
187
+
188
+ 1. Choose projects root.
189
+ 2. For each repo with specialists state:
190
+ - run/record Category A status: `sp --version`, `sp doctor --check-drift` if available.
191
+ 3. For each repo with `.xtrm/registry.json`:
192
+ - run/record Category B status: `xt doctor --cwd <repo> --json`.
193
+ 4. Present one combined table:
194
+
195
+ | repo | specialists pkg | Category A status | Category B status | recommended action |
196
+ |---|---|---|---|---|
197
+
198
+ Recommended action examples:
199
+ - upgrade `@jaggerxtrm/specialists`, then re-run `sp doctor --check-drift`,
200
+ - prune redundant `.specialists/default/` snapshots,
201
+ - preserve `.specialists/user/` customization,
202
+ - run `xt update --repo <repo> --apply`,
203
+ - no action.
204
+
205
+ ## Fallbacks
206
+
207
+ ### `sp` missing
208
+
209
+ Say Category A cannot be verified until specialists is installed:
210
+
211
+ ```bash
212
+ npm install -g @jaggerxtrm/specialists@latest
213
+ ```
214
+
215
+ If project policy uses local dev dependency, recommend the project-local package manager command instead.
216
+
217
+ ### `xt` missing
89
218
 
90
- ### 6) Re-run doctor
219
+ Category A can still be checked with `sp`. For Category B, tell user:
91
220
 
92
- Run same doctor command again after update and confirm clean state.
221
+ ```bash
222
+ npm install -g xtrm-tools@latest
223
+ xt install
224
+ xt doctor --cwd <repo> --json
225
+ ```
93
226
 
94
- ### 7) Final report
227
+ Do not claim skills/hooks are synced without `xt` or a valid `.xtrm/registry.json`.
95
228
 
96
- State:
97
- - what drift existed,
98
- - what refreshed,
99
- - what stayed untouched,
100
- - any residual manual fixes.
229
+ ### `.xtrm/registry.json` missing
101
230
 
102
- ## Fallback When xt Missing
231
+ Report that xtrm-managed assets cannot be drift-checked in that repo until registry scaffold exists. Suggested action:
103
232
 
104
- If `xt` / `xtrm` not installed or doctor/update help unavailable:
105
- - do not block user,
106
- - switch to per-repo guidance,
107
- - tell user to run repo-local checks manually,
108
- - do not invent bulk repair commands.
233
+ ```bash
234
+ xt install
235
+ ```
109
236
 
110
- Fallback response shape:
111
- - identify likely drifted repos,
112
- - point user at repo-local `sp doctor` / package-specific checks already available in that repo,
113
- - say bulk refresh needs `xt` installed.
237
+ or pull a repo revision that tracks `.xtrm/registry.json`.
114
238
 
115
- ## Drift Review Rules
239
+ ## Safety Rules
116
240
 
117
- - Treat repo-custom overlays as intentional unless doctor marks them mismatched against managed snapshot.
118
- - Do not overwrite user-owned layers.
119
- - Prefer dry-run first when drift touches multiple repos.
120
- - If only one repo needs refresh, keep output narrow and use single-repo update path.
121
- - If doctor shows mixed drift across 3 repos, summarize each repo separately and ask which to refresh.
241
+ - Preserve `.specialists/user/` and any user-authored skill/hook layer.
242
+ - Treat `.specialists/default/` as compatibility/pinning surface, not normal fresh-repo state.
243
+ - Treat `.xtrm/skills/default/` and `.xtrm/hooks/default/` as managed output; do not hand-edit as the repair path.
244
+ - Prefer dry-run first when more than one repo will change.
245
+ - Keep Category A and Category B results separate in the final report.
122
246
 
123
247
  ## Output Shape
124
248
 
125
249
  Use this order:
126
- 1. root chosen
127
- 2. doctor summary
128
- 3. drift table
129
- 4. confirm prompt
130
- 5. update action
131
- 6. post-update doctor result
132
- 7. final status
250
+ 1. root/repo chosen,
251
+ 2. specialists package version and Category A summary,
252
+ 3. xtrm Category B summary,
253
+ 4. combined drift table,
254
+ 5. proposed actions,
255
+ 6. explicit confirmation request,
256
+ 7. commands run,
257
+ 8. post-action verification,
258
+ 9. residual manual work.
133
259
 
134
260
  ## Example Operator Loop
135
261
 
136
262
  ```text
137
263
  Root: ~/dev
138
- Doctor: 3 repos checked
139
264
 
140
- repo status drift
141
- repo-a drifted 4 assets
142
- repo-b in-sync 0 assets
143
- repo-c drifted 1 asset
265
+ repo sp version Category A Category B action
266
+ repo-a 3.13.0 redundant defaults: 4 skills drift: 2 prune A + xt update
267
+ repo-b 3.12.0 package behind latest in-sync upgrade sp only
268
+ repo-c 3.13.0 user overlay only hooks drift: 1 preserve user + xt update
144
269
 
145
- Refresh all / specific repos / dry-run?
270
+ Apply which actions? dry-run / selected repos / all
146
271
  ```
147
272
 
148
- ## Verification
273
+ ## Verification Checklist
149
274
 
150
- After refresh:
275
+ After work:
276
+ - `sp doctor --check-drift` clean or reduced to intentional pins/overrides,
277
+ - `sp prune-stale-defaults --dry-run` shows no redundant defaults unless intentionally retained,
278
+ - `sp list --full` and selected `sp config show <name> --resolved` reflect package-live runtime,
151
279
  - `xt doctor --cwd <root> --json` clean or reduced to intentional custom drift,
152
- - repo-specific follow-up actions called out only when needed,
153
280
  - single-repo case stays single-repo,
154
- - missing `xt` path falls back cleanly.
281
+ - missing-tool paths fall back cleanly.