xtrm-tools 0.7.15 → 0.7.17

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 (218) hide show
  1. package/.xtrm/registry.json +419 -411
  2. package/.xtrm/skills/default/update-specialists/SKILL.md +204 -77
  3. package/.xtrm/skills/default/using-kpi/SKILL.md +86 -0
  4. package/.xtrm/skills/default/using-specialists-v2/SKILL.md +1 -1
  5. package/.xtrm/skills/default/using-specialists-v3/SKILL.md +562 -0
  6. package/.xtrm/skills/default/using-specialists-v3/evals/evals.json +89 -0
  7. package/CHANGELOG.md +14 -0
  8. package/cli/dist/index.cjs +8 -0
  9. package/cli/dist/index.cjs.map +1 -1
  10. package/cli/package.json +1 -1
  11. package/package.json +1 -1
  12. package/packages/pi-extensions/extensions/xtrm-ui/index.ts +76 -1
  13. package/packages/pi-extensions/package.json +1 -1
  14. package/.xtrm/config/pi/extensions/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.combined.log +0 -7
  15. package/.xtrm/config/pi/extensions/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.stderr.log +0 -0
  16. package/.xtrm/config/pi/extensions/custom-footer/.pi/structured-returns/83051fe4-97da-4e2c-bdaa-343b32f4e714.stdout.log +0 -7
  17. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/LICENSE +0 -22
  18. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/README.md +0 -29
  19. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts +0 -3
  20. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.d.ts.map +0 -1
  21. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js +0 -2
  22. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/index.js.map +0 -1
  23. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts +0 -8
  24. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.d.ts.map +0 -1
  25. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js +0 -27
  26. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chrome.js.map +0 -1
  27. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts +0 -11
  28. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.d.ts.map +0 -1
  29. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js +0 -100
  30. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/crypto.js.map +0 -1
  31. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts +0 -25
  32. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.d.ts.map +0 -1
  33. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js +0 -104
  34. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/linuxKeyring.js.map +0 -1
  35. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts +0 -10
  36. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.d.ts.map +0 -1
  37. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js +0 -293
  38. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/shared.js.map +0 -1
  39. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts +0 -10
  40. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.d.ts.map +0 -1
  41. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js +0 -26
  42. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqlite/windowsDpapi.js.map +0 -1
  43. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts +0 -7
  44. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.d.ts.map +0 -1
  45. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js +0 -51
  46. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteLinux.js.map +0 -1
  47. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts +0 -7
  48. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.d.ts.map +0 -1
  49. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js +0 -60
  50. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteMac.js.map +0 -1
  51. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts +0 -7
  52. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.d.ts.map +0 -1
  53. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js +0 -38
  54. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromeSqliteWindows.js.map +0 -1
  55. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts +0 -5
  56. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.d.ts.map +0 -1
  57. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js +0 -33
  58. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/linuxPaths.js.map +0 -1
  59. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts +0 -24
  60. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.d.ts.map +0 -1
  61. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js +0 -30
  62. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/macosKeychain.js.map +0 -1
  63. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts +0 -11
  64. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.d.ts.map +0 -1
  65. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js +0 -43
  66. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/paths.js.map +0 -1
  67. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts +0 -8
  68. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.d.ts.map +0 -1
  69. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js +0 -41
  70. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsMasterKey.js.map +0 -1
  71. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts +0 -8
  72. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.d.ts.map +0 -1
  73. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js +0 -53
  74. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/chromium/windowsPaths.js.map +0 -1
  75. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts +0 -8
  76. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.d.ts.map +0 -1
  77. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js +0 -27
  78. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edge.js.map +0 -1
  79. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts +0 -7
  80. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.d.ts.map +0 -1
  81. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js +0 -53
  82. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteLinux.js.map +0 -1
  83. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts +0 -8
  84. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.d.ts.map +0 -1
  85. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js +0 -60
  86. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteMac.js.map +0 -1
  87. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts +0 -7
  88. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.d.ts.map +0 -1
  89. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js +0 -38
  90. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/edgeSqliteWindows.js.map +0 -1
  91. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts +0 -6
  92. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.d.ts.map +0 -1
  93. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js +0 -257
  94. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/firefoxSqlite.js.map +0 -1
  95. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts +0 -8
  96. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.d.ts.map +0 -1
  97. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js +0 -71
  98. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/inline.js.map +0 -1
  99. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts +0 -6
  100. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.d.ts.map +0 -1
  101. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js +0 -173
  102. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/providers/safariBinaryCookies.js.map +0 -1
  103. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts +0 -26
  104. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.d.ts.map +0 -1
  105. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js +0 -195
  106. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/public.js.map +0 -1
  107. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts +0 -121
  108. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.d.ts.map +0 -1
  109. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js +0 -2
  110. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/types.js.map +0 -1
  111. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts +0 -2
  112. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.d.ts.map +0 -1
  113. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js +0 -18
  114. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/base64.js.map +0 -1
  115. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts +0 -8
  116. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.d.ts.map +0 -1
  117. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js +0 -110
  118. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/exec.js.map +0 -1
  119. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts +0 -2
  120. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.d.ts.map +0 -1
  121. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js +0 -32
  122. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/expire.js.map +0 -1
  123. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts +0 -2
  124. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.d.ts.map +0 -1
  125. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js +0 -13
  126. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/fs.js.map +0 -1
  127. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts +0 -2
  128. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.d.ts.map +0 -1
  129. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js +0 -7
  130. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/hostMatch.js.map +0 -1
  131. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts +0 -5
  132. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.d.ts.map +0 -1
  133. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js +0 -58
  134. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/nodeSqlite.js.map +0 -1
  135. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts +0 -2
  136. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.d.ts.map +0 -1
  137. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js +0 -27
  138. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/origins.js.map +0 -1
  139. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts +0 -2
  140. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.d.ts.map +0 -1
  141. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js +0 -8
  142. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/dist/util/runtime.js.map +0 -1
  143. package/.xtrm/skills/default/last30days/scripts/lib/vendor/bird-search/node_modules/@steipete/sweet-cookie/package.json +0 -40
  144. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.json +0 -293
  145. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/benchmark.md +0 -13
  146. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/eval_metadata.json +0 -27
  147. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/outputs/result.md +0 -210
  148. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/grading.json +0 -28
  149. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/with_skill/run-1/timing.json +0 -1
  150. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/outputs/result.md +0 -101
  151. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/grading.json +0 -28
  152. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/run-1/timing.json +0 -5
  153. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-doc-audit/without_skill/timing.json +0 -5
  154. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/eval_metadata.json +0 -27
  155. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/outputs/result.md +0 -198
  156. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/grading.json +0 -28
  157. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/with_skill/run-1/timing.json +0 -1
  158. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/outputs/result.md +0 -94
  159. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/grading.json +0 -28
  160. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-fix-mode/without_skill/run-1/timing.json +0 -1
  161. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/eval_metadata.json +0 -27
  162. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/outputs/result.md +0 -237
  163. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/grading.json +0 -28
  164. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/with_skill/run-1/timing.json +0 -1
  165. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/outputs/result.md +0 -134
  166. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/grading.json +0 -28
  167. package/.xtrm/skills/default/sync-docs-workspace/iteration-1/eval-sprint-closeout/without_skill/run-1/timing.json +0 -1
  168. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.json +0 -297
  169. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/benchmark.md +0 -13
  170. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/eval_metadata.json +0 -27
  171. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/outputs/result.md +0 -137
  172. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/grading.json +0 -92
  173. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/with_skill/run-1/timing.json +0 -1
  174. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/outputs/result.md +0 -134
  175. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/grading.json +0 -86
  176. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-doc-audit/without_skill/run-1/timing.json +0 -1
  177. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/eval_metadata.json +0 -27
  178. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/outputs/result.md +0 -193
  179. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/grading.json +0 -72
  180. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/with_skill/run-1/timing.json +0 -1
  181. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/outputs/result.md +0 -211
  182. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/grading.json +0 -91
  183. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-fix-mode/without_skill/run-1/timing.json +0 -5
  184. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/eval_metadata.json +0 -27
  185. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/outputs/result.md +0 -182
  186. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/grading.json +0 -95
  187. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/with_skill/run-1/timing.json +0 -1
  188. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/outputs/result.md +0 -222
  189. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/grading.json +0 -88
  190. package/.xtrm/skills/default/sync-docs-workspace/iteration-2/eval-sprint-closeout/without_skill/run-1/timing.json +0 -5
  191. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.json +0 -298
  192. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/benchmark.md +0 -13
  193. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/eval_metadata.json +0 -27
  194. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/outputs/result.md +0 -125
  195. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/grading.json +0 -97
  196. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/with_skill/run-1/timing.json +0 -5
  197. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/outputs/result.md +0 -144
  198. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/grading.json +0 -78
  199. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-doc-audit/without_skill/run-1/timing.json +0 -5
  200. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/eval_metadata.json +0 -27
  201. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/outputs/result.md +0 -104
  202. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/grading.json +0 -91
  203. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/with_skill/run-1/timing.json +0 -5
  204. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/outputs/result.md +0 -79
  205. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/grading.json +0 -82
  206. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-fix-mode/without_skill/run-1/timing.json +0 -5
  207. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/eval_metadata.json +0 -27
  208. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase1_context.json +0 -302
  209. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase2_drift.txt +0 -33
  210. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase3_analysis.json +0 -114
  211. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase4_fix.txt +0 -118
  212. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/phase5_validate.txt +0 -38
  213. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/outputs/result.md +0 -158
  214. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/grading.json +0 -95
  215. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/with_skill/run-1/timing.json +0 -5
  216. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/outputs/result.md +0 -71
  217. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/grading.json +0 -90
  218. package/.xtrm/skills/default/sync-docs-workspace/iteration-3/eval-sprint-closeout/without_skill/run-1/timing.json +0 -5
@@ -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.
@@ -143,6 +143,92 @@ sp db stats --with-payload --format json \
143
143
  end'
144
144
  ```
145
145
 
146
+ ## Recipe 7 — payload component breakdown per specialist
147
+
148
+ **Truth source first.** The actual prompt size billed by the API is the first turn's `input_tokens` from `token_trajectory_json[0]`. Use it as the ground truth — `payload_breakdown` events undercount (tool definitions and harness framing are not captured) and historical rows before the rule N× fix overcount mandatory_rule by attached-rule count.
149
+
150
+ ```bash
151
+ DB=.specialists/db/observability.db
152
+ sqlite3 "$DB" "SELECT specialist, model, AVG(json_extract(token_trajectory_json, '\$[0].token_usage.input_tokens')) AS avg_first_in, COUNT(*) AS n FROM specialist_job_metrics WHERE token_trajectory_json IS NOT NULL AND status='done' GROUP BY specialist, model ORDER BY avg_first_in DESC"
153
+ ```
154
+
155
+ Use this number for cost decisions. Use `payload_breakdown` only for *relative* component analysis (which knob to tune), not absolute sizing.
156
+
157
+ `sp db stats --with-payload` only surfaces total `payload_kb` / `payload_tokens`. To audit *what* fills the prompt (system_prompt vs mandatory rules vs skills vs bead_context vs memory), query `payload_breakdown` events directly. Use this for eager-load bloat investigations, prompt/rule consolidation planning, or duplication hunts — but cross-check against the truth source above.
158
+
159
+ ```bash
160
+ DB=.specialists/db/observability.db
161
+ sqlite3 "$DB" "SELECT specialist, event_json FROM specialist_events WHERE type='payload_breakdown' GROUP BY specialist ORDER BY t DESC" \
162
+ | python3 -c '
163
+ import json, sys
164
+ rows = []
165
+ for line in sys.stdin:
166
+ if "|" not in line: continue
167
+ spec, js = line.split("|", 1)
168
+ d = json.loads(js)
169
+ agg = {}
170
+ for c in d["payload_breakdown"]["components"]:
171
+ a = agg.setdefault(c["kind"], {"tokens":0,"n":0})
172
+ a["tokens"] += c["tokens"]; a["n"] += 1
173
+ rows.append((spec, d["payload_breakdown"]["totals"]["tokens"], agg))
174
+ rows.sort(key=lambda r: -r[1])
175
+ print(f"{\"specialist\":<22}{\"total\":>8}{\"rules\":>8}{\"rules_n\":>8}{\"sys\":>8}{\"skills\":>8}{\"bead\":>8}{\"mem\":>8}")
176
+ for s, t, a in rows:
177
+ g = lambda k: a.get(k, {"tokens":0,"n":0})
178
+ print(f"{s:<22}{t:>8}{g(\"mandatory_rule\")[\"tokens\"]:>8}{g(\"mandatory_rule\")[\"n\"]:>8}{g(\"system_prompt\")[\"tokens\"]:>8}{g(\"skill\")[\"tokens\"]:>8}{g(\"bead_context\")[\"tokens\"]:>8}{g(\"memory\")[\"tokens\"]:>8}")
179
+ '
180
+ ```
181
+
182
+ Component kinds: `system_prompt`, `mandatory_rule` (one event entry per attached rule), `skill` (path/description label only — full bodies are eagerly injected at runtime but NOT counted here), `task_template`, `bead_context`, `memory`.
183
+
184
+ **Important:** `skill` entries in `payload_breakdown` show only the path/description label (~10-40 tokens). The full skill body is forcefully injected via `skills.paths` on every run and IS billed as input tokens. To measure the real eager-skill cost, see Recipe 8.
185
+
186
+ Optimization signals (from breakdown alone):
187
+ - `mandatory_rule` total dominates: audit wrapper inflation by comparing `bytes` per rule in the event vs `wc -c config/mandatory-rules/<id>.md`. Mismatch >5x means a wrapper or richer source is adding hidden cost.
188
+ - `bead_context` huge: bead description is bloated — orchestrator should write more concise contracts.
189
+ - `memory` huge: stale or noisy memories — run `bd memories` cleanup or consolidation.
190
+
191
+ ## Recipe 8 — eager skill-body cost per specialist
192
+
193
+ `skills.paths` are eagerly injected on every run; the bodies appear in the API-billed prompt but the `payload_breakdown` event records only the path label. To derive the real eager-skill cost:
194
+
195
+ ```
196
+ eager_skill_cost ≈ first_turn_input_tokens − sum(payload_breakdown non-skill components)
197
+ − constant per-specialist framing/tool-defs overhead
198
+ ```
199
+
200
+ Two-step audit:
201
+
202
+ ```bash
203
+ # Step 1: real first-turn input tokens per specialist (truth)
204
+ DB=.specialists/db/observability.db
205
+ sqlite3 "$DB" "
206
+ SELECT specialist, AVG(json_extract(token_trajectory_json, '\$[0].token_usage.input_tokens')) AS avg_first_in, COUNT(*) AS n
207
+ FROM specialist_job_metrics
208
+ WHERE token_trajectory_json IS NOT NULL AND status='done'
209
+ GROUP BY specialist ORDER BY avg_first_in DESC"
210
+
211
+ # Step 2: per-specialist measured non-skill components (post-kdl4n)
212
+ sqlite3 "$DB" "SELECT specialist, event_json FROM specialist_events WHERE type='payload_breakdown' GROUP BY specialist ORDER BY t DESC" \
213
+ | python3 -c '
214
+ import json, sys
215
+ for line in sys.stdin:
216
+ if "|" not in line: continue
217
+ spec, js = line.split("|", 1)
218
+ d = json.loads(js)
219
+ non_skill = sum(c["tokens"] for c in d["payload_breakdown"]["components"] if c["kind"] != "skill")
220
+ print(f"{spec:<22}{non_skill:>10}")
221
+ '
222
+ ```
223
+
224
+ Then `delta = first_in − non_skill_total`. The framing/tool-defs constant is roughly the same across specialists with the same model — you can estimate it by running a specialist with NO `skills.paths` attached as a baseline.
225
+
226
+ Per-skill body weight: `wc -c <skill-path>/SKILL.md` divided by 4 (cl100k_base approximation). High-frequency, large-body skills are the inlining candidates; low-frequency or small ones stay attached.
227
+
228
+ Optimization signals (skills):
229
+ - `delta` >> sum of attached skill body bytes/4: framing/tool defs are the bulk — leave skills alone.
230
+ - `delta` ≈ sum of skill body weights: skills dominate eager cost — inline frequently-used hot guidance into `system_prompt`, keep rare deep references as skills, consider splitting big mixed skills.
231
+
146
232
  ## References
147
233
 
148
234
  - `docs/observability-metrics.md`
@@ -272,7 +272,7 @@ sp epic abandon <epic-id> --reason "..."
272
272
  sp end
273
273
  ```
274
274
 
275
- `sp result <job-id>` returns the most recent completed turn for `waiting` jobs with a `Session is waiting for your input` footer — use it to inspect a keep-alive job before deciding whether to resume. For `running` jobs, `sp feed <job-id>` is the right tool; `sp poll` is deprecated. Avoid `specialists status --job` for normal monitoring; prefer `sp ps <job-id>`.
275
+ `sp result <job-id>` returns the most recent completed turn for `waiting` jobs with a `Session is waiting for your input` footer — use it to inspect a keep-alive job before deciding whether to resume. For `running` jobs, `sp feed <job-id>` is the right tool. Avoid `specialists status --job` for normal monitoring; prefer `sp ps <job-id>`.
276
276
 
277
277
  ## Flag Semantics
278
278