selftune 0.2.22 → 0.2.24

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 (270) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +95 -15
  3. package/apps/local-dashboard/dist/assets/index-DgY2KGP-.css +1 -0
  4. package/apps/local-dashboard/dist/assets/index-Dmx7LPVX.js +15 -0
  5. package/apps/local-dashboard/dist/assets/vendor-react-C5oyHiV1.js +11 -0
  6. package/apps/local-dashboard/dist/assets/{vendor-table-BIiI3YhS.js → vendor-table-Bc_bbKd8.js} +1 -1
  7. package/apps/local-dashboard/dist/assets/vendor-ui-B3BPIYy7.js +1 -0
  8. package/apps/local-dashboard/dist/index.html +5 -5
  9. package/cli/selftune/adapters/codex/install.ts +310 -78
  10. package/cli/selftune/adapters/opencode/install.ts +3 -4
  11. package/cli/selftune/adapters/pi/hook.ts +273 -0
  12. package/cli/selftune/adapters/pi/install.ts +207 -0
  13. package/cli/selftune/alpha-upload/build-payloads.ts +3 -3
  14. package/cli/selftune/alpha-upload/stage-canonical.ts +17 -11
  15. package/cli/selftune/auto-update.ts +200 -8
  16. package/cli/selftune/canonical-export.ts +55 -25
  17. package/cli/selftune/command-surface.ts +397 -0
  18. package/cli/selftune/constants.ts +10 -1
  19. package/cli/selftune/contribute/contribute.ts +64 -13
  20. package/cli/selftune/contribution-config.ts +57 -3
  21. package/cli/selftune/contribution-preferences.ts +117 -0
  22. package/cli/selftune/contribution-signals.ts +8 -4
  23. package/cli/selftune/contribution-staging.ts +13 -2
  24. package/cli/selftune/contributions.ts +55 -121
  25. package/cli/selftune/creator-contributions.ts +29 -10
  26. package/cli/selftune/cron/setup.ts +7 -3
  27. package/cli/selftune/dashboard-contract.ts +87 -0
  28. package/cli/selftune/dashboard-server.ts +168 -17
  29. package/cli/selftune/dashboard.ts +350 -17
  30. package/cli/selftune/eval/baseline.ts +21 -5
  31. package/cli/selftune/eval/execution-eval.ts +170 -0
  32. package/cli/selftune/eval/family-overlap.ts +2 -2
  33. package/cli/selftune/eval/hooks-to-evals.ts +228 -82
  34. package/cli/selftune/eval/import-skillsbench.ts +2 -2
  35. package/cli/selftune/eval/invocation-classifier.ts +56 -0
  36. package/cli/selftune/eval/synthetic-evals.ts +5 -3
  37. package/cli/selftune/eval/unit-test-cli.ts +7 -4
  38. package/cli/selftune/evolution/apply-proposal.ts +295 -0
  39. package/cli/selftune/evolution/engines/judge-engine.ts +96 -0
  40. package/cli/selftune/evolution/engines/replay-engine.ts +180 -0
  41. package/cli/selftune/evolution/evidence.ts +2 -6
  42. package/cli/selftune/evolution/evolve-body.ts +152 -38
  43. package/cli/selftune/evolution/evolve.ts +244 -52
  44. package/cli/selftune/evolution/rollback.ts +0 -1
  45. package/cli/selftune/evolution/validate-body.ts +111 -49
  46. package/cli/selftune/evolution/validate-host-replay.ts +510 -60
  47. package/cli/selftune/evolution/validate-proposal.ts +11 -150
  48. package/cli/selftune/evolution/validate-routing.ts +51 -108
  49. package/cli/selftune/evolution/validation-contract.ts +91 -0
  50. package/cli/selftune/grading/auto-grade.ts +11 -7
  51. package/cli/selftune/grading/grade-session.ts +10 -16
  52. package/cli/selftune/hooks/skill-eval.ts +2 -1
  53. package/cli/selftune/hooks-shared/types.ts +1 -0
  54. package/cli/selftune/index.ts +58 -15
  55. package/cli/selftune/ingestors/claude-replay.ts +15 -10
  56. package/cli/selftune/ingestors/codex-wrapper.ts +3 -3
  57. package/cli/selftune/ingestors/opencode-ingest.ts +2 -2
  58. package/cli/selftune/ingestors/pi-ingest.ts +727 -0
  59. package/cli/selftune/init.ts +38 -4
  60. package/cli/selftune/localdb/direct-write.ts +120 -1
  61. package/cli/selftune/localdb/materialize.ts +6 -7
  62. package/cli/selftune/localdb/queries/cron.ts +34 -0
  63. package/cli/selftune/localdb/queries/dashboard.ts +834 -0
  64. package/cli/selftune/localdb/queries/evolution.ts +158 -0
  65. package/cli/selftune/localdb/queries/execution.ts +133 -0
  66. package/cli/selftune/localdb/queries/json.ts +18 -0
  67. package/cli/selftune/localdb/queries/monitoring.ts +263 -0
  68. package/cli/selftune/localdb/queries/raw.ts +95 -0
  69. package/cli/selftune/localdb/queries/staging.ts +270 -0
  70. package/cli/selftune/localdb/queries/trust.ts +392 -0
  71. package/cli/selftune/localdb/queries.ts +60 -2162
  72. package/cli/selftune/localdb/schema.ts +59 -0
  73. package/cli/selftune/monitoring/watch.ts +96 -29
  74. package/cli/selftune/normalization.ts +3 -0
  75. package/cli/selftune/observability.ts +12 -3
  76. package/cli/selftune/orchestrate/cli.ts +161 -0
  77. package/cli/selftune/orchestrate/execute.ts +295 -0
  78. package/cli/selftune/orchestrate/finalize.ts +157 -0
  79. package/cli/selftune/orchestrate/locks.ts +40 -0
  80. package/cli/selftune/orchestrate/plan.ts +131 -0
  81. package/cli/selftune/orchestrate/post-run.ts +59 -0
  82. package/cli/selftune/orchestrate/prepare.ts +334 -0
  83. package/cli/selftune/orchestrate/report.ts +182 -0
  84. package/cli/selftune/orchestrate/runtime.ts +120 -0
  85. package/cli/selftune/orchestrate/signals.ts +48 -0
  86. package/cli/selftune/orchestrate.ts +162 -1142
  87. package/cli/selftune/registry/client.ts +74 -0
  88. package/cli/selftune/registry/history.ts +54 -0
  89. package/cli/selftune/registry/index.ts +90 -0
  90. package/cli/selftune/registry/install.ts +141 -0
  91. package/cli/selftune/registry/list.ts +44 -0
  92. package/cli/selftune/registry/push.ts +171 -0
  93. package/cli/selftune/registry/rollback.ts +49 -0
  94. package/cli/selftune/registry/status.ts +62 -0
  95. package/cli/selftune/registry/sync.ts +125 -0
  96. package/cli/selftune/repair/skill-usage.ts +9 -3
  97. package/cli/selftune/routes/overview.ts +5 -2
  98. package/cli/selftune/routes/skill-report.ts +15 -2
  99. package/cli/selftune/schedule.ts +5 -5
  100. package/cli/selftune/status.ts +70 -2
  101. package/cli/selftune/sync.ts +127 -23
  102. package/cli/selftune/testing-readiness.ts +597 -0
  103. package/cli/selftune/types.ts +46 -5
  104. package/cli/selftune/uninstall.ts +2 -1
  105. package/cli/selftune/utils/canonical-log.ts +1 -9
  106. package/cli/selftune/utils/cli-error.ts +9 -0
  107. package/cli/selftune/utils/jsonl.ts +1 -30
  108. package/cli/selftune/utils/llm-call.ts +126 -6
  109. package/cli/selftune/utils/skill-discovery.ts +24 -0
  110. package/cli/selftune/workflows/proposals.ts +184 -0
  111. package/cli/selftune/workflows/skill-scaffold.ts +241 -0
  112. package/cli/selftune/workflows/workflows.ts +100 -26
  113. package/node_modules/@selftune/telemetry-contract/fixtures/complete-push.ts +1 -1
  114. package/node_modules/@selftune/telemetry-contract/fixtures/evidence-only-push.ts +2 -2
  115. package/node_modules/@selftune/telemetry-contract/fixtures/golden.test.ts +0 -1
  116. package/node_modules/@selftune/telemetry-contract/fixtures/partial-push-no-sessions.ts +1 -1
  117. package/node_modules/@selftune/telemetry-contract/fixtures/partial-push-unresolved-parents.ts +2 -2
  118. package/node_modules/@selftune/telemetry-contract/package.json +1 -1
  119. package/node_modules/@selftune/telemetry-contract/src/index.ts +1 -0
  120. package/node_modules/@selftune/telemetry-contract/src/schemas.ts +63 -5
  121. package/node_modules/@selftune/telemetry-contract/src/types.ts +97 -7
  122. package/node_modules/@selftune/telemetry-contract/tests/compatibility.test.ts +0 -1
  123. package/package.json +25 -9
  124. package/packages/dashboard-core/AGENTS.md +18 -0
  125. package/packages/dashboard-core/README.md +30 -0
  126. package/packages/dashboard-core/index.ts +3 -0
  127. package/packages/dashboard-core/package.json +39 -0
  128. package/packages/dashboard-core/src/chrome/DashboardChrome.tsx +74 -0
  129. package/packages/dashboard-core/src/chrome/DashboardHeader.tsx +200 -0
  130. package/packages/dashboard-core/src/chrome/DashboardSidebar.tsx +219 -0
  131. package/packages/dashboard-core/src/chrome/RuntimeBadge.tsx +46 -0
  132. package/packages/dashboard-core/src/chrome/index.ts +14 -0
  133. package/packages/dashboard-core/src/chrome/types.ts +81 -0
  134. package/packages/dashboard-core/src/chrome/utils.ts +23 -0
  135. package/packages/dashboard-core/src/gates/FeatureGate.tsx +11 -0
  136. package/packages/dashboard-core/src/gates/LockedRoute.tsx +29 -0
  137. package/packages/dashboard-core/src/gates/UpgradeCard.tsx +89 -0
  138. package/packages/dashboard-core/src/gates/index.ts +3 -0
  139. package/packages/dashboard-core/src/host/DashboardHostProvider.tsx +62 -0
  140. package/packages/dashboard-core/src/host/adapter.ts +47 -0
  141. package/packages/dashboard-core/src/host/capabilities.ts +55 -0
  142. package/packages/dashboard-core/src/host/index.ts +3 -0
  143. package/packages/dashboard-core/src/models/analytics.ts +39 -0
  144. package/packages/dashboard-core/src/models/index.ts +4 -0
  145. package/packages/dashboard-core/src/models/overview.ts +98 -0
  146. package/packages/dashboard-core/src/models/runtime.ts +7 -0
  147. package/packages/dashboard-core/src/models/skills.ts +34 -0
  148. package/packages/dashboard-core/src/routes/index.ts +2 -0
  149. package/packages/dashboard-core/src/routes/manifest.test.ts +70 -0
  150. package/packages/dashboard-core/src/routes/manifest.ts +451 -0
  151. package/packages/dashboard-core/src/routes/types.ts +39 -0
  152. package/packages/dashboard-core/src/screens/analytics/AnalyticsScreen.tsx +278 -0
  153. package/packages/dashboard-core/src/screens/analytics/index.ts +1 -0
  154. package/packages/dashboard-core/src/screens/index.ts +37 -0
  155. package/packages/dashboard-core/src/screens/overview/OverviewComparisonSurface.test.ts +101 -0
  156. package/packages/dashboard-core/src/screens/overview/OverviewComparisonSurface.tsx +393 -0
  157. package/packages/dashboard-core/src/screens/overview/OverviewCompositionSurface.test.tsx +113 -0
  158. package/packages/dashboard-core/src/screens/overview/OverviewCompositionSurface.tsx +72 -0
  159. package/packages/dashboard-core/src/screens/overview/OverviewCoreSurface.tsx +71 -0
  160. package/packages/dashboard-core/src/screens/overview/OverviewOnboardingBanner.tsx +90 -0
  161. package/packages/dashboard-core/src/screens/overview/OverviewRunSummary.tsx +40 -0
  162. package/packages/dashboard-core/src/screens/overview/index.ts +16 -0
  163. package/packages/dashboard-core/src/screens/overview/types.ts +13 -0
  164. package/packages/dashboard-core/src/screens/skill-report/SkillReportDailyBreakdownSection.tsx +99 -0
  165. package/packages/dashboard-core/src/screens/skill-report/SkillReportDataQualityTabContent.tsx +35 -0
  166. package/packages/dashboard-core/src/screens/skill-report/SkillReportEvidenceRail.tsx +71 -0
  167. package/packages/dashboard-core/src/screens/skill-report/SkillReportEvidenceSection.tsx +63 -0
  168. package/packages/dashboard-core/src/screens/skill-report/SkillReportEvidenceTabContent.tsx +25 -0
  169. package/packages/dashboard-core/src/screens/skill-report/SkillReportInvocationsSection.tsx +24 -0
  170. package/packages/dashboard-core/src/screens/skill-report/SkillReportMissedQueriesSection.tsx +79 -0
  171. package/packages/dashboard-core/src/screens/skill-report/SkillReportScaffold.tsx +150 -0
  172. package/packages/dashboard-core/src/screens/skill-report/SkillReportSections.test.tsx +224 -0
  173. package/packages/dashboard-core/src/screens/skill-report/SkillReportTabs.test.tsx +76 -0
  174. package/packages/dashboard-core/src/screens/skill-report/SkillReportTabs.tsx +88 -0
  175. package/packages/dashboard-core/src/screens/skill-report/SkillReportTrendSection.tsx +33 -0
  176. package/packages/dashboard-core/src/screens/skill-report/SkillReportTrustBadge.tsx +67 -0
  177. package/packages/dashboard-core/src/screens/skill-report/index.ts +45 -0
  178. package/packages/dashboard-core/src/screens/skills/SkillsLibraryScreen.tsx +162 -0
  179. package/packages/dashboard-core/src/screens/skills/index.ts +6 -0
  180. package/packages/telemetry-contract/fixtures/complete-push.ts +1 -1
  181. package/packages/telemetry-contract/fixtures/evidence-only-push.ts +2 -2
  182. package/packages/telemetry-contract/fixtures/golden.test.ts +0 -1
  183. package/packages/telemetry-contract/fixtures/partial-push-no-sessions.ts +1 -1
  184. package/packages/telemetry-contract/fixtures/partial-push-unresolved-parents.ts +2 -2
  185. package/packages/telemetry-contract/package.json +1 -1
  186. package/packages/telemetry-contract/src/index.ts +1 -0
  187. package/packages/telemetry-contract/src/schemas.ts +63 -5
  188. package/packages/telemetry-contract/src/types.ts +97 -7
  189. package/packages/telemetry-contract/tests/compatibility.test.ts +0 -1
  190. package/packages/ui/AGENTS.md +16 -0
  191. package/packages/ui/README.md +1 -1
  192. package/packages/ui/package.json +1 -1
  193. package/packages/ui/src/components/ActivityTimeline.tsx +152 -168
  194. package/packages/ui/src/components/AnalyticsCharts.tsx +344 -0
  195. package/packages/ui/src/components/EvidenceViewer.tsx +229 -464
  196. package/packages/ui/src/components/EvolutionTimeline.tsx +34 -87
  197. package/packages/ui/src/components/InfoTip.tsx +1 -2
  198. package/packages/ui/src/components/InvocationsPanel.tsx +413 -0
  199. package/packages/ui/src/components/JobHistoryTimeline.tsx +156 -0
  200. package/packages/ui/src/components/OrchestrateRunsPanel.tsx +18 -36
  201. package/packages/ui/src/components/OverviewPanels.tsx +693 -0
  202. package/packages/ui/src/components/PipelineStatusBar.tsx +65 -0
  203. package/packages/ui/src/components/SkillReportGuide.tsx +215 -0
  204. package/packages/ui/src/components/SkillReportPanels.tsx +919 -0
  205. package/packages/ui/src/components/SkillsLibrary.tsx +437 -0
  206. package/packages/ui/src/components/index.ts +56 -1
  207. package/packages/ui/src/components/section-cards.tsx +18 -35
  208. package/packages/ui/src/components/skill-health-grid.tsx +47 -37
  209. package/packages/ui/src/lib/constants.tsx +0 -1
  210. package/packages/ui/src/primitives/card.tsx +1 -1
  211. package/packages/ui/src/primitives/checkbox.tsx +1 -1
  212. package/packages/ui/src/primitives/dropdown-menu.tsx +2 -2
  213. package/packages/ui/src/primitives/select.tsx +2 -2
  214. package/packages/ui/src/primitives/tabs.tsx +7 -6
  215. package/packages/ui/src/types.ts +182 -4
  216. package/skill/SKILL.md +130 -318
  217. package/skill/agents/diagnosis-analyst.md +3 -3
  218. package/skill/agents/evolution-reviewer.md +3 -3
  219. package/skill/agents/integration-guide.md +3 -3
  220. package/skill/agents/pattern-analyst.md +2 -2
  221. package/skill/references/cli-quick-reference.md +89 -0
  222. package/skill/references/creator-playbook.md +131 -0
  223. package/skill/references/examples.md +48 -0
  224. package/skill/references/troubleshooting.md +47 -0
  225. package/skill/references/version-history.md +1 -1
  226. package/skill/selftune.contribute.json +11 -0
  227. package/skill/{Workflows → workflows}/Baseline.md +20 -1
  228. package/skill/{Workflows → workflows}/Contribute.md +23 -10
  229. package/skill/{Workflows → workflows}/Contributions.md +13 -5
  230. package/skill/workflows/CreateTestDeploy.md +170 -0
  231. package/skill/{Workflows → workflows}/CreatorContributions.md +18 -6
  232. package/skill/{Workflows → workflows}/Cron.md +1 -1
  233. package/skill/{Workflows → workflows}/Dashboard.md +20 -0
  234. package/skill/{Workflows → workflows}/Doctor.md +1 -1
  235. package/skill/{Workflows → workflows}/Evals.md +67 -2
  236. package/skill/{Workflows → workflows}/Evolve.md +119 -30
  237. package/skill/{Workflows → workflows}/EvolveBody.md +41 -1
  238. package/skill/{Workflows → workflows}/Grade.md +1 -1
  239. package/skill/{Workflows → workflows}/Ingest.md +60 -2
  240. package/skill/{Workflows → workflows}/Initialize.md +16 -9
  241. package/skill/{Workflows → workflows}/Orchestrate.md +13 -3
  242. package/skill/{Workflows → workflows}/PlatformHooks.md +19 -3
  243. package/skill/workflows/Registry.md +99 -0
  244. package/skill/{Workflows → workflows}/Schedule.md +3 -3
  245. package/skill/workflows/SignalsDashboard.md +87 -0
  246. package/skill/{Workflows → workflows}/Sync.md +3 -1
  247. package/skill/{Workflows → workflows}/UnitTest.md +19 -0
  248. package/skill/{Workflows → workflows}/Watch.md +42 -2
  249. package/skill/{Workflows → workflows}/Workflows.md +39 -2
  250. package/apps/local-dashboard/dist/assets/index-D8O-RG1I.js +0 -60
  251. package/apps/local-dashboard/dist/assets/index-_EcLywDg.css +0 -1
  252. package/apps/local-dashboard/dist/assets/vendor-react-CKkiCskZ.js +0 -11
  253. package/apps/local-dashboard/dist/assets/vendor-ui-CGEmUayx.js +0 -12
  254. package/cli/selftune/utils/html.ts +0 -27
  255. package/packages/ui/src/components/RecentActivityFeed.tsx +0 -117
  256. /package/skill/{Workflows → workflows}/AlphaUpload.md +0 -0
  257. /package/skill/{Workflows → workflows}/AutoActivation.md +0 -0
  258. /package/skill/{Workflows → workflows}/Badge.md +0 -0
  259. /package/skill/{Workflows → workflows}/Composability.md +0 -0
  260. /package/skill/{Workflows → workflows}/EvolutionMemory.md +0 -0
  261. /package/skill/{Workflows → workflows}/ExportCanonical.md +0 -0
  262. /package/skill/{Workflows → workflows}/Hook.md +0 -0
  263. /package/skill/{Workflows → workflows}/ImportSkillsBench.md +0 -0
  264. /package/skill/{Workflows → workflows}/Quickstart.md +0 -0
  265. /package/skill/{Workflows → workflows}/Recover.md +0 -0
  266. /package/skill/{Workflows → workflows}/RepairSkillUsage.md +0 -0
  267. /package/skill/{Workflows → workflows}/Replay.md +0 -0
  268. /package/skill/{Workflows → workflows}/Rollback.md +0 -0
  269. /package/skill/{Workflows → workflows}/Telemetry.md +0 -0
  270. /package/skill/{Workflows → workflows}/Uninstall.md +0 -0
@@ -0,0 +1,89 @@
1
+ # CLI Quick Reference
2
+
3
+ Full flag reference for all selftune commands. Run `selftune <command> --help`
4
+ for the most up-to-date flags.
5
+
6
+ ```bash
7
+ # Ingest group
8
+ selftune ingest claude [--since DATE] [--dry-run] [--force] [--verbose]
9
+ selftune ingest codex # (experimental)
10
+ selftune ingest opencode # (experimental)
11
+ selftune ingest openclaw [--agents-dir PATH] [--since DATE] [--dry-run] [--force] [--verbose] # (experimental)
12
+ selftune ingest pi [--sessions-dir PATH] [--since DATE] [--dry-run] [--force] [--verbose] # (experimental)
13
+ selftune ingest wrap-codex -- <codex args> # (experimental)
14
+
15
+ # Grade group
16
+ selftune grade auto --skill <name> [--expectations "..."] [--agent <name>]
17
+ selftune grade baseline --skill <name> --skill-path <path> [--eval-set <path>] [--agent <name>]
18
+
19
+ # Evolve group
20
+ selftune evolve --skill <name> --skill-path <path> [--dry-run] [--validation-mode auto|replay|judge]
21
+ selftune evolve body --skill <name> --skill-path <path> --target <body|routing> [--dry-run]
22
+ selftune evolve rollback --skill <name> --skill-path <path> [--proposal-id <id>]
23
+
24
+ # Eval group
25
+ selftune eval generate --skill <name> [--list-skills] [--stats] [--max N] [--seed N] [--output PATH] [--blend]
26
+ selftune eval unit-test --skill <name> --tests <path> [--run-agent] [--generate]
27
+ selftune eval import --dir <path> --skill <name> --output <path> [--match-strategy exact|fuzzy]
28
+ selftune eval composability --skill <name> [--window N] [--telemetry-log <path>]
29
+ selftune eval family-overlap --prefix <family-> | --skills <a,b,c> [--parent-skill <name>] [--min-overlap 0.3] [--min-shared 2]
30
+
31
+ # Other commands
32
+ selftune watch --skill <name> --skill-path <path> [--auto-rollback] [--grade-threshold N] [--no-grade-watch]
33
+ selftune status
34
+ selftune last
35
+ selftune doctor
36
+ selftune dashboard [--port <port>] [--no-open]
37
+ selftune contributions [status|preview <skill>|upload [--dry-run]|approve <skill>|revoke <skill>|default <ask|always|never>|reset]
38
+ selftune creator-contributions [status|enable --skill <name>|enable --all [--prefix <value>]|disable --skill <name>]
39
+ selftune contribute [--skill NAME] [--preview] [--sanitize LEVEL] [--submit]
40
+ selftune cron setup [--dry-run] # auto-detect platform (cron/launchd/systemd)
41
+ selftune cron setup --platform openclaw [--dry-run] [--tz <timezone>] # OpenClaw-specific
42
+ selftune cron list
43
+ selftune cron remove [--dry-run]
44
+ selftune telemetry [status|enable|disable]
45
+ selftune export [TABLE...] [--output/-o DIR] [--since DATE]
46
+
47
+ # Autonomous loop
48
+ selftune orchestrate [--dry-run] [--review-required] [--auto-approve] [--skill NAME] [--max-skills N] [--recent-window HOURS] [--sync-force] [--max-auto-grade N] [--loop] [--loop-interval SECS]
49
+ selftune sync [--since DATE] [--dry-run] [--force] [--no-claude] [--no-codex] [--no-opencode] [--no-openclaw] [--no-pi] [--no-repair] [--json]
50
+
51
+ # Discovery + badges
52
+ selftune workflows [--skill NAME] [--skill-path PATH] [--min-occurrences N] [--window N] [--json] [save <name-or-index> --skill-path PATH] [scaffold <name-or-index> --output-dir PATH --skill-name NAME --description TEXT --write --force]
53
+ selftune badge --skill <name> [--format svg|markdown|url] [--output PATH]
54
+
55
+ # Maintenance
56
+ selftune quickstart
57
+ selftune repair-skill-usage [--since DATE] [--dry-run]
58
+ selftune recover [--full] [--force] [--since DATE]
59
+ selftune export-canonical [--out FILE] [--platform NAME] [--record-kind KIND] [--pretty] [--push-payload]
60
+ selftune uninstall [--dry-run] [--keep-logs] [--npm-uninstall]
61
+
62
+ # Hook dispatch (for debugging/manual invocation)
63
+ selftune hook <name> # prompt-log | session-stop | skill-eval | auto-activate | skill-change-guard | evolution-guard
64
+
65
+ # Platform hooks (non-Claude-Code agents)
66
+ selftune codex hook
67
+ selftune codex install [--dry-run] [--uninstall]
68
+ selftune opencode hook
69
+ selftune opencode install [--dry-run] [--uninstall]
70
+ selftune cline hook
71
+ selftune cline install [--dry-run] [--uninstall]
72
+ selftune pi hook
73
+ selftune pi install [--dry-run] [--uninstall]
74
+
75
+ # Registry (team skill distribution)
76
+ selftune registry push [name] [--version=<semver>] [--summary=<text>]
77
+ selftune registry install <name> [--global]
78
+ selftune registry sync
79
+ selftune registry status
80
+ selftune registry rollback <name> [--to=<version>] [--reason=<text>]
81
+ selftune registry history <name>
82
+ selftune registry list
83
+
84
+ # Alpha enrollment (device-code flow — browser opens automatically)
85
+ selftune init --alpha --alpha-email <email>
86
+ selftune alpha upload [--dry-run]
87
+ selftune alpha relink
88
+ selftune status # shows cloud link state + upload readiness
89
+ ```
@@ -0,0 +1,131 @@
1
+ # Creator Playbook
2
+
3
+ Use this when you are publishing a skill other people will install.
4
+
5
+ If the user wants the operational step-by-step loop from cold start to deploy,
6
+ route first to `workflows/CreateTestDeploy.md`. Use this reference for the
7
+ packaging and after-ship interpretation layer around that loop.
8
+
9
+ The goal is simple:
10
+
11
+ 1. ship a skill that routes cleanly on day one
12
+ 2. collect privacy-safe signal after launch
13
+ 3. turn that signal into a safe improvement loop
14
+
15
+ ## Before Ship
16
+
17
+ ### Decide what belongs where
18
+
19
+ | Put it in... | When it belongs there |
20
+ | --- | --- |
21
+ | `description` / routing section | The user intent that should trigger the skill |
22
+ | `workflows/` | Ordered procedures the agent should follow once routed |
23
+ | `references/` | Background knowledge, checklists, examples, or taxonomy the agent may need during execution |
24
+ | `scripts/` or tools | Deterministic mechanics the agent should not reinvent every run |
25
+
26
+ Rule of thumb:
27
+
28
+ - If the agent needs to **recognize** a request, fix the router.
29
+ - If the agent needs to **follow steps**, add or split a workflow.
30
+ - If the agent needs **context**, add a reference.
31
+ - If the agent keeps redoing the same exact logic, make it code.
32
+
33
+ ### Keep the routing surface small
34
+
35
+ - Start router-first. Add only the trigger phrases and negative examples needed to call the right skill.
36
+ - Keep workflow detail out of the top-level description.
37
+ - Split into separate workflows when the execution path meaningfully changes.
38
+ - Add negative examples whenever a nearby intent should not trigger the skill.
39
+
40
+ ### Cold-start test and deploy the skill before publishing
41
+
42
+ The default creator loop is now:
43
+
44
+ ```bash
45
+ selftune eval generate --skill my-skill
46
+ selftune eval unit-test --skill my-skill --generate --skill-path path/to/SKILL.md
47
+ selftune evolve --skill my-skill --skill-path path/to/SKILL.md --dry-run --validation-mode replay
48
+ selftune grade baseline --skill my-skill --skill-path path/to/SKILL.md
49
+ selftune evolve --skill my-skill --skill-path path/to/SKILL.md --with-baseline
50
+ selftune watch --skill my-skill
51
+ ```
52
+
53
+ That same sequence is now packaged as the dedicated `CreateTestDeploy`
54
+ workflow in the shipped selftune skill, while `Evals`, `UnitTest`, `Baseline`,
55
+ `Evolve`, and `Watch` remain the atomic workflow docs for each individual step.
56
+
57
+ The dashboard overview, per-skill report, and `selftune status` all read from that loop and show
58
+ the next missing step directly, then flip to deploy-ready and watching states once the skill is shipped.
59
+
60
+ Ship only after you can explain:
61
+
62
+ - what should trigger the skill
63
+ - what should not
64
+ - where the body depends on references versus tools
65
+
66
+ ### Bundle creator-directed contribution config
67
+
68
+ If you want post-ship creator signal:
69
+
70
+ ```bash
71
+ selftune creator-contributions enable --skill my-skill --creator-id <cloud-user-uuid>
72
+ ```
73
+
74
+ This writes `selftune.contribute.json` into the skill package so end users can opt in to privacy-safe creator-directed sharing.
75
+
76
+ The `creator_id` must be your cloud user UUID. Supported signals today are:
77
+
78
+ - `trigger`
79
+ - `grade`
80
+ - `miss_category`
81
+
82
+ ## After Ship
83
+
84
+ ### Tell users what to opt into
85
+
86
+ There are two different community paths:
87
+
88
+ - `selftune contributions approve <skill>`: creator-directed relay signals for your dashboard
89
+ - `selftune contribute --skill <skill> --submit`: sanitized community bundle submission
90
+
91
+ Relay is the lightweight always-on loop. Bundles are the deeper periodic export.
92
+
93
+ ### Watch the right surfaces
94
+
95
+ After launch, the loop is:
96
+
97
+ 1. open the cloud Community page or the skill detail Community tab
98
+ 2. check whether the skill is still low-signal or has crossed the actionable threshold
99
+ 3. inspect missed categories and grade distribution
100
+ 4. create a contributor proposal only when the signal is coherent
101
+ 5. approve/apply the proposal through the normal proposals flow
102
+ 6. watch the skill after apply
103
+
104
+ Actionable threshold today:
105
+
106
+ - at least `10` total signals
107
+ - at least `3` distinct contributor cohorts
108
+
109
+ ### Interpret signal correctly
110
+
111
+ - High missed counts with concentrated categories usually mean the **description/router** is wrong.
112
+ - Low grades with decent trigger rate usually mean the **body/workflow/reference/tool split** is wrong.
113
+ - Low-signal skills need more contributors before you trust a proposal.
114
+
115
+ ## Fast Checklist
116
+
117
+ Before ship:
118
+
119
+ - router describes when to use the skill
120
+ - workflows describe how to do the job
121
+ - references carry durable context
122
+ - tools/scripts carry deterministic mechanics
123
+ - evals cover both your language and other likely phrasings
124
+ - `selftune.contribute.json` is bundled if you want creator-directed signal
125
+
126
+ After ship:
127
+
128
+ - community overview shows your skill by name
129
+ - per-skill community page shows missed categories and grades
130
+ - contributor proposals are reviewed before apply
131
+ - watch is run after meaningful changes
@@ -0,0 +1,48 @@
1
+ # Examples
2
+
3
+ ## Scenario 1: First-time setup
4
+
5
+ User says: "Set up selftune" or "Install selftune"
6
+
7
+ Actions:
8
+
9
+ 1. Read `workflows/Initialize.md`
10
+ 2. Run `selftune init` to bootstrap config (hooks are installed automatically)
11
+ 3. Run `selftune doctor` to verify
12
+
13
+ Result: Config at `~/.selftune/config.json`, hooks active, ready for session capture.
14
+
15
+ ## Scenario 2: Improve a skill
16
+
17
+ User says: "Make the pptx skill catch more queries" or "Evolve the Research skill"
18
+
19
+ Actions:
20
+
21
+ 1. `selftune eval generate --skill pptx` to find missed triggers
22
+ 2. `selftune evolve --skill pptx --skill-path <path>` to propose changes
23
+ 3. `selftune watch --skill pptx --skill-path <path>` to monitor post-deploy
24
+
25
+ Result: Skill description updated to match real user language, with rollback available.
26
+
27
+ ## Scenario 3: Check skill health
28
+
29
+ User says: "How are my skills doing?" or "Run selftune"
30
+
31
+ Actions:
32
+
33
+ 1. `selftune status` for overall health summary
34
+ 2. `selftune last` for most recent session insight
35
+ 3. `selftune doctor` if issues detected
36
+
37
+ Result: Pass rates, trend data, and actionable recommendations.
38
+
39
+ ## Scenario 4: Autonomous operation
40
+
41
+ User says: "Set up cron jobs" or "Run selftune automatically"
42
+
43
+ Actions:
44
+
45
+ 1. `selftune cron setup` to install OS-level scheduling
46
+ 2. Orchestrate loop runs: ingest -> grade -> evolve -> watch
47
+
48
+ Result: Skills improve continuously without manual intervention.
@@ -0,0 +1,47 @@
1
+ # Troubleshooting
2
+
3
+ ## CLI not found
4
+
5
+ Error: `command not found: selftune`
6
+
7
+ Cause: CLI not installed or not on PATH.
8
+
9
+ Solution:
10
+
11
+ 1. Reinstall or refresh with `npx skills add selftune-dev/selftune`
12
+ 2. If you manage the CLI directly, use `npm install -g selftune` or `bun add -g selftune`
13
+ 3. Check `bin/selftune.cjs` exists if running from a source checkout
14
+ 4. Verify with `which selftune`
15
+ 5. If using bun from a source checkout: `bun link` in the repo root
16
+
17
+ ## No sessions to grade
18
+
19
+ Error: `selftune grade` returns empty results.
20
+
21
+ Cause: Hooks not capturing sessions, or no sessions since last ingest.
22
+
23
+ Solution:
24
+
25
+ 1. Run `selftune doctor` to verify hook installation
26
+ 2. Run `selftune ingest claude --force` to re-ingest
27
+ 3. Run `selftune doctor` to check database health and telemetry record counts
28
+
29
+ ## Evolution proposes no changes
30
+
31
+ Cause: Eval set too small or skill already well-tuned.
32
+
33
+ Solution:
34
+
35
+ 1. Run `selftune eval generate --skill <name> --max 50` for a larger eval set
36
+ 2. Check `selftune status` — if pass rate is >90%, evolution may not be needed
37
+ 3. Try `selftune evolve body` for deeper structural changes
38
+
39
+ ## Dashboard won't serve
40
+
41
+ Error: Port already in use or blank page.
42
+
43
+ Solution:
44
+
45
+ 1. Try a different port: `selftune dashboard --port 3142`
46
+ 2. Check if another process holds the port: `lsof -i :3141`
47
+ 3. Use `--no-open` to start the server without opening a browser
@@ -32,7 +32,7 @@ agent execution.
32
32
 
33
33
  - Added first-class routing and quick-reference coverage for
34
34
  `selftune workflows`
35
- - Added a dedicated `Workflows/Workflows.md` guide for workflow discovery and
35
+ - Added a dedicated `workflows/Workflows.md` guide for workflow discovery and
36
36
  codification
37
37
  - Updated composability guidance to reflect synergy, conflicts, and workflow
38
38
  candidates
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 1,
3
+ "creator_id": "43c960c1-9b02-4020-96f0-6fdd8f030b5a",
4
+ "skill_name": "selftune",
5
+ "contribution": {
6
+ "enabled": true,
7
+ "signals": ["trigger", "grade", "miss_category"],
8
+ "message": "Help improve selftune by sharing anonymous usage signals with the selftune creator.",
9
+ "privacy_url": "https://docs.selftune.dev/privacy/contributor-signals"
10
+ }
11
+ }
@@ -26,7 +26,7 @@ selftune grade baseline --skill <name> --skill-path <path> [options]
26
26
  | `--skill <name>` | Skill name | Required |
27
27
  | `--skill-path <path>` | Path to the skill's SKILL.md | Required |
28
28
  | `--eval-set <path>` | Pre-built eval set JSON | Auto-generated from logs |
29
- | `--agent <name>` | Agent CLI to use | Auto-detected |
29
+ | `--agent <name>` | Agent CLI to use (claude, codex, opencode, pi) | Auto-detected |
30
30
 
31
31
  ## Output Format
32
32
 
@@ -42,6 +42,9 @@ selftune grade baseline --skill <name> --skill-path <path> [options]
42
42
  }
43
43
  ```
44
44
 
45
+ Every baseline run is also written into SQLite (`grading_baselines`) so the dashboard and
46
+ `selftune status` can show whether the skill has cleared the no-skill comparison step.
47
+
45
48
  ## How It Works
46
49
 
47
50
  1. Loads the eval set (from `--eval-set` or auto-generated from logs)
@@ -85,6 +88,7 @@ Ask one `AskUserQuestion` at a time in this order:
85
88
  - `claude`
86
89
  - `codex`
87
90
  - `opencode`
91
+ - `pi`
88
92
 
89
93
  If `AskUserQuestion` is not available or Claude does not invoke it, fall back to presenting the same choices as inline numbered options.
90
94
 
@@ -134,6 +138,21 @@ Report the interpretation to the user based on the lift value.
134
138
  Add `--with-baseline` to evolve commands to prevent wasting evolution
135
139
  cycles on skills that don't add value.
136
140
 
141
+ ### 4. Canonical creator loop position
142
+
143
+ Baseline is the last pre-deploy check in the default creator loop:
144
+
145
+ ```bash
146
+ selftune eval generate --skill <name>
147
+ selftune eval unit-test --skill <name> --generate --skill-path <path>
148
+ selftune evolve --skill <name> --skill-path <path> --dry-run --validation-mode replay
149
+ selftune grade baseline --skill <name> --skill-path <path>
150
+ selftune evolve --skill <name> --skill-path <path> --with-baseline
151
+ selftune watch --skill <name>
152
+ ```
153
+
154
+ After that, the skill is ready for live deploy and then watch with much clearer trust evidence.
155
+
137
156
  ## Common Patterns
138
157
 
139
158
  **User asks whether a skill adds value (e.g., "does the Research skill help?"):**
@@ -1,11 +1,13 @@
1
1
  # selftune Contribute Workflow
2
2
 
3
- Export anonymized skill observability data as a JSON bundle for **community**
4
- contribution. Helps improve selftune's skill routing without exposing private data.
3
+ Export an anonymized **export bundle** of skill observability data for
4
+ community contribution. Helps improve selftune's skill routing without
5
+ exposing private data.
5
6
 
6
- This is **not** the same as `selftune contributions`, which manages per-skill
7
- creator-directed sharing preferences, or `selftune creator-contributions`,
8
- which manages the creator-side bundled config file.
7
+ This is **not** the same as:
8
+ - `selftune contributions` — managing your **sharing preferences** for creator-directed signals
9
+ - `selftune creator-contributions` — managing the **creator sharing setup** file (`selftune.contribute.json`)
10
+ - The signals dashboard — viewing aggregated **contributor signal data** from all contributors
9
11
 
10
12
  ## When to Use
11
13
 
@@ -28,7 +30,9 @@ selftune contribute --skill selftune
28
30
  | `--preview` | Show what would be shared without writing |
29
31
  | `--sanitize <level>` | `conservative` (default) or `aggressive` |
30
32
  | `--since <date>` | Only include data from this date onward |
31
- | `--submit` | Auto-create GitHub Issue via `gh` CLI |
33
+ | `--submit` | Submit bundle to the cloud endpoint (falls back to GitHub if it fails) |
34
+ | `--endpoint <url>` | Override the default cloud API endpoint |
35
+ | `--github` | Submit via GitHub Issue instead of the cloud endpoint |
32
36
 
33
37
  ## Sanitization Levels
34
38
 
@@ -68,8 +72,12 @@ No raw transcripts, file contents, or identifiable information is included.
68
72
 
69
73
  ## Submission
70
74
 
71
- - Default: writes JSON file to `~/.selftune/contributions/`
72
- - `--submit`: creates a GitHub Issue with the bundle
75
+ - Default: writes the export bundle JSON file to `~/.selftune/contributions/`
76
+ - `--submit`: submits the export bundle to the cloud endpoint (`POST /api/v1/community/bundles`)
77
+ - Requires a `selftune.contribute.json` with a valid `creator_id` in the skill directory
78
+ - Uses the local alpha API key for authentication when available
79
+ - Falls back to GitHub Issue submission if the cloud endpoint is unreachable
80
+ - `--github`: explicitly submits via GitHub Issue instead of the cloud endpoint
73
81
  - Small bundles (< 50KB): inlined in issue body
74
82
  - Large bundles (>= 50KB): uploaded as a gist
75
83
 
@@ -94,8 +102,13 @@ No raw transcripts, file contents, or identifiable information is included.
94
102
 
95
103
  **User wants to submit directly**
96
104
 
97
- > Run `selftune contribute --submit`. This creates a GitHub Issue via `gh`
98
- > CLI with the bundle inlined or uploaded as a gist.
105
+ > Run `selftune contribute --submit`. This submits the export bundle to the
106
+ > cloud endpoint. If the cloud endpoint fails, it falls back to GitHub.
107
+
108
+ **User wants to submit via GitHub explicitly**
109
+
110
+ > Run `selftune contribute --submit --github`. This creates a GitHub Issue
111
+ > via `gh` CLI with the bundle inlined or uploaded as a gist.
99
112
 
100
113
  **User wants to limit to recent data**
101
114
 
@@ -1,11 +1,11 @@
1
1
  # selftune Contributions Workflow
2
2
 
3
- Manage local preferences for future creator-directed contribution flows.
3
+ Manage local **sharing preferences** for creator-directed contribution flows.
4
4
 
5
- This is **not** the same as `selftune contribute`:
6
- - `selftune contributions` manages per-skill opt-in choices for creator-directed sharing
7
- - `selftune contribute` exports a community contribution bundle
8
- - `selftune creator-contributions` manages the creator-side `selftune.contribute.json` file
5
+ This is **not** the same as:
6
+ - `selftune contribute` exporting an anonymized **export bundle** for the community
7
+ - `selftune creator-contributions` managing the **creator sharing setup** file (`selftune.contribute.json`)
8
+ - The signals dashboard viewing aggregated **contributor signal data** from all contributors
9
9
 
10
10
  ## When to Use
11
11
 
@@ -54,6 +54,14 @@ selftune contributions upload [--dry-run] [--retry-failed] [--limit <n>]
54
54
  | `--retry-failed` | Boolean | Requeue failed rows before attempting upload |
55
55
  | `--limit <n>` | Integer | Maximum number of staged rows to upload in one run |
56
56
 
57
+ ## Automatic Flush via Orchestrate
58
+
59
+ When `selftune orchestrate` runs, it automatically flushes any staged
60
+ creator-directed relay signals as Step 10 (after alpha upload). This means
61
+ users who have opted in don't need to run `selftune contributions upload`
62
+ manually — orchestrate handles it. The flush is fail-open and never blocks
63
+ the orchestrate loop. An API key is required (alpha enrolled).
64
+
57
65
  ## Notes
58
66
 
59
67
  - This workflow now shows which installed skills are requesting creator-directed sharing via `selftune.contribute.json`.
@@ -0,0 +1,170 @@
1
+ # selftune Create, Test, and Deploy Workflow
2
+
3
+ Use this when the user wants one guided path from a new or shaky skill to a
4
+ safe shipped skill.
5
+
6
+ This is a composed workflow. It does not replace the atomic `Evals`,
7
+ `UnitTest`, `Baseline`, `Evolve`, or `Watch` workflows. It decides which one
8
+ comes next and keeps the creator trust loop in order.
9
+
10
+ ## When to Use
11
+
12
+ - The user says "create, test, and deploy"
13
+ - The user wants the full creator loop end to end
14
+ - The user asks "how do I know this skill works?" before shipping
15
+ - The user asks whether a skill is ready to deploy
16
+ - The user wants one recommended path from cold start to live watch
17
+
18
+ ## Default Path
19
+
20
+ There is no single `selftune create-test-deploy` command yet. Run the loop
21
+ step by step:
22
+
23
+ ```bash
24
+ selftune eval generate --skill <name> --skill-path <path>
25
+ selftune eval unit-test --skill <name> --generate --skill-path <path>
26
+ selftune evolve --skill <name> --skill-path <path> --dry-run --validation-mode replay
27
+ selftune grade baseline --skill <name> --skill-path <path>
28
+ selftune evolve --skill <name> --skill-path <path> --with-baseline
29
+ selftune watch --skill <name>
30
+ ```
31
+
32
+ ## How to Run It
33
+
34
+ ### 1. Resolve the current loop position
35
+
36
+ Start with one of these surfaces:
37
+
38
+ ```bash
39
+ selftune status
40
+ ```
41
+
42
+ or
43
+
44
+ ```bash
45
+ selftune dashboard
46
+ ```
47
+
48
+ Use the readiness summary to find which step is missing:
49
+
50
+ - missing evals
51
+ - missing unit tests
52
+ - missing replay validation
53
+ - missing baseline
54
+ - ready to deploy
55
+ - already deployed and under watch
56
+
57
+ ### 2. Run only the next missing step
58
+
59
+ Do not blindly rerun the whole loop if the dashboard or status already shows a
60
+ later step is complete.
61
+
62
+ #### Missing evals
63
+
64
+ Run:
65
+
66
+ ```bash
67
+ selftune eval generate --skill <name> --skill-path <path>
68
+ ```
69
+
70
+ If the skill is cold-start and there are no trusted triggers yet, prefer:
71
+
72
+ ```bash
73
+ selftune eval generate --skill <name> --auto-synthetic --skill-path <path>
74
+ ```
75
+
76
+ Then continue to `UnitTest`.
77
+
78
+ #### Missing unit tests
79
+
80
+ Run:
81
+
82
+ ```bash
83
+ selftune eval unit-test --skill <name> --generate --skill-path <path>
84
+ ```
85
+
86
+ Then continue to replay dry-run validation.
87
+
88
+ #### Missing replay validation
89
+
90
+ Run:
91
+
92
+ ```bash
93
+ selftune evolve --skill <name> --skill-path <path> --dry-run --validation-mode replay
94
+ ```
95
+
96
+ This is the pre-deploy proof step. It validates against runtime-style routing
97
+ without mutating the skill.
98
+
99
+ Then continue to baseline.
100
+
101
+ #### Missing baseline
102
+
103
+ Run:
104
+
105
+ ```bash
106
+ selftune grade baseline --skill <name> --skill-path <path>
107
+ ```
108
+
109
+ Then continue to live deploy.
110
+
111
+ #### Ready to deploy
112
+
113
+ Run:
114
+
115
+ ```bash
116
+ selftune evolve --skill <name> --skill-path <path> --with-baseline
117
+ ```
118
+
119
+ This is the recommended creator ship command because it deploys only after the
120
+ candidate clears the earlier trust gates.
121
+
122
+ Then continue to watch.
123
+
124
+ #### Already deployed and under watch
125
+
126
+ Run:
127
+
128
+ ```bash
129
+ selftune watch --skill <name>
130
+ ```
131
+
132
+ Use this state to explain whether the skill is stable, regressing, or ready for
133
+ another iteration.
134
+
135
+ ## Which workflow to read next
136
+
137
+ Load the atomic workflow that matches the next missing step:
138
+
139
+ - eval generation -> `workflows/Evals.md`
140
+ - unit tests -> `workflows/UnitTest.md`
141
+ - replay dry-run / deploy -> `workflows/Evolve.md`
142
+ - baseline -> `workflows/Baseline.md`
143
+ - live monitoring -> `workflows/Watch.md`
144
+
145
+ Use `references/creator-playbook.md` when the user is publishing a skill other
146
+ people will install and needs before-ship versus after-ship guidance.
147
+
148
+ ## Common Patterns
149
+
150
+ **User asks for one end-to-end shipping path**
151
+
152
+ > Use this workflow. Check the current readiness surface first, then run the
153
+ > next missing creator-loop step instead of dumping every command at once.
154
+
155
+ **User asks whether a skill is safe to ship**
156
+
157
+ > Use `selftune status` or the dashboard to confirm evals, unit tests, replay
158
+ > validation, and baseline exist. If all four are complete, run `selftune
159
+ > evolve --with-baseline`. Otherwise run the missing step first.
160
+
161
+ **User already shipped the skill**
162
+
163
+ > Do not send them back to eval generation unless the evidence is stale or
164
+ > missing. Route to `Watch` and explain whether the skill is stable.
165
+
166
+ **User wants to understand why the loop is ordered this way**
167
+
168
+ > Explain the progression:
169
+ > router coverage -> workflow correctness -> runtime proof -> no-skill value ->
170
+ > live deploy -> watch.