mixdog 1.4.0 → 1.4.2

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 (493) hide show
  1. package/package.json +3 -2
  2. package/scripts/build-shipped-history.mjs +115 -33
  3. package/scripts/check-voice-runtime-inputs.mjs +25 -0
  4. package/scripts/gate-local.mjs +183 -63
  5. package/scripts/latest-guard.mjs +21 -9
  6. package/scripts/lib/gate-scheduler.mjs +138 -32
  7. package/scripts/lib/gate-timing-reporter.mjs +16 -0
  8. package/scripts/lib/isolated-test-env.mjs +10 -5
  9. package/scripts/lib/run-node-tests.mjs +91 -66
  10. package/scripts/lib/scoped-temp.d.mts +16 -0
  11. package/scripts/lib/scoped-temp.mjs +124 -0
  12. package/scripts/lib/stale-temp.mjs +44 -0
  13. package/scripts/lib/test-failure-records.mjs +14 -1
  14. package/scripts/lib/test-failure-summary.mjs +16 -4
  15. package/scripts/lib/test-spawn-ledger.mjs +12 -3
  16. package/scripts/post-release-check.mjs +1 -6
  17. package/scripts/pptx-kit-index.mjs +17 -5
  18. package/scripts/suite-health.mjs +115 -24
  19. package/scripts/test-data-dir.mjs +10 -7
  20. package/scripts/test.mjs +9 -14
  21. package/src/agents/advisor/AGENT.md +4 -4
  22. package/src/agents/advisor/agent.json +1 -1
  23. package/src/agents/explore/AGENT.md +22 -0
  24. package/src/agents/explore/agent.json +6 -0
  25. package/src/app.mjs +4 -0
  26. package/src/cli.mjs +7 -0
  27. package/src/defaults/agents.json +7 -0
  28. package/src/defaults/shipped-history.json +23 -2
  29. package/src/defaults/skills/browser-use/SKILL.md +10 -5
  30. package/src/defaults/skills/code-tidy/SKILL.md +71 -102
  31. package/src/defaults/skills/code-tidy/references/agent-cleanup.md +66 -114
  32. package/src/defaults/skills/code-tidy/references/cleanup-report.md +19 -35
  33. package/src/defaults/skills/code-tidy/references/dead-code.md +3 -9
  34. package/src/defaults/skills/code-tidy/references/test-suite-slop.md +16 -27
  35. package/src/defaults/skills/computer-use/SKILL.md +16 -4
  36. package/src/defaults/skills/goal-management/SKILL.md +1 -1
  37. package/src/defaults/skills/setup/references/actions.md +12 -6
  38. package/src/defaults/skills/setup/references/surfaces.md +2 -2
  39. package/src/defaults/skills/setup-guide/SKILL.md +5 -2
  40. package/src/defaults/skills/setup-guide/model-recommendations.json +13 -0
  41. package/src/defaults/skills/skill-creator/SKILL.md +85 -190
  42. package/src/defaults/skills/skill-creator/references/design.md +70 -162
  43. package/src/defaults/skills/skill-creator/references/evaluation.md +33 -92
  44. package/src/defaults/skills/test-suite/SKILL.md +194 -0
  45. package/src/defaults/skills/test-suite/references/case-management.md +51 -0
  46. package/src/defaults/skills/test-suite/references/flaky-policy.md +39 -0
  47. package/src/defaults/skills/test-suite/references/reliability.md +49 -0
  48. package/src/defaults/skills/test-suite/references/suite-design.md +78 -0
  49. package/src/defaults/skills/test-suite/scripts/inventory.mjs +335 -0
  50. package/src/defaults/skills/visualize/SKILL.md +6 -2
  51. package/src/lib/rules-builder.cjs +35 -42
  52. package/src/output-styles/common.md +2 -2
  53. package/src/output-styles/simple.md +1 -1
  54. package/src/rules/agent/AGENT.md +5 -4
  55. package/src/rules/lead/LEAD.md +12 -7
  56. package/src/rules/shared/10-tool-workflow.md +3 -1
  57. package/src/rules/shared/20-research.md +3 -6
  58. package/src/rules/shared/40-editing.md +1 -0
  59. package/src/rules/shared/45-destructive.md +0 -2
  60. package/src/rules/shared/50-execution.md +2 -0
  61. package/src/rules/shared/60-verification.md +10 -9
  62. package/src/rules/shared/70-delivery.md +8 -9
  63. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/abort-link.mjs +5 -1
  64. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +10 -1
  65. package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +156 -24
  66. package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +13 -0
  67. package/src/runtime/agent/orchestrator/agent-runtime/maintenance-route.mjs +4 -1
  68. package/src/runtime/agent/orchestrator/cache-break-trace.mjs +2 -0
  69. package/src/runtime/agent/orchestrator/config.mjs +12 -7
  70. package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +8 -8
  71. package/src/runtime/agent/orchestrator/context/role-instructions.mjs +5 -26
  72. package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +3 -1
  73. package/src/runtime/agent/orchestrator/internal-agents.mjs +3 -14
  74. package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +122 -12
  75. package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +5 -3
  76. package/src/runtime/agent/orchestrator/mcp/client-config.mjs +13 -2
  77. package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +152 -58
  78. package/src/runtime/agent/orchestrator/mcp/client.mjs +51 -18
  79. package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +88 -54
  80. package/src/runtime/agent/orchestrator/mcp/oauth.mjs +42 -26
  81. package/src/runtime/agent/orchestrator/providers/account-pool.mjs +54 -8
  82. package/src/runtime/agent/orchestrator/providers/anthropic-api-recovery.mjs +1 -1
  83. package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +37 -31
  84. package/src/runtime/agent/orchestrator/providers/anthropic-api-transport.mjs +8 -2
  85. package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens-recovery.mjs +6 -2
  86. package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +2 -2
  87. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
  88. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +31 -21
  89. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request/initial-status.mjs +3 -1
  90. package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +14 -3
  91. package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +6 -0
  92. package/src/runtime/agent/orchestrator/providers/anthropic-turn-result.mjs +2 -2
  93. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +3 -1
  94. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +2 -2
  95. package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
  96. package/src/runtime/agent/orchestrator/providers/command-code-oauth-login.mjs +1 -10
  97. package/src/runtime/agent/orchestrator/providers/command-code-oauth.mjs +1 -1
  98. package/src/runtime/agent/orchestrator/providers/cursor.mjs +3 -0
  99. package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +40 -0
  100. package/src/runtime/agent/orchestrator/providers/custom-provider-keys.mjs +34 -0
  101. package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +3 -0
  102. package/src/runtime/agent/orchestrator/providers/devin-auth.mjs +14 -7
  103. package/src/runtime/agent/orchestrator/providers/devin-wire-transport.mjs +3 -2
  104. package/src/runtime/agent/orchestrator/providers/devin.mjs +3 -0
  105. package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +2 -2
  106. package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +4 -1
  107. package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +248 -41
  108. package/src/runtime/agent/orchestrator/providers/lib/anthropic-prefix-trace.mjs +76 -11
  109. package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +45 -6
  110. package/src/runtime/agent/orchestrator/providers/lib/first-output-window.mjs +58 -0
  111. package/src/runtime/agent/orchestrator/providers/lib/listen-on.mjs +14 -0
  112. package/src/runtime/agent/orchestrator/providers/lib/oauth-page.mjs +0 -18
  113. package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +138 -6
  114. package/src/runtime/agent/orchestrator/providers/mimo-oauth-login.mjs +1 -10
  115. package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +1 -1
  116. package/src/runtime/agent/orchestrator/providers/model-cache.mjs +100 -33
  117. package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +1 -1
  118. package/src/runtime/agent/orchestrator/providers/oauth-secret-fields.fixtures.mjs +45 -0
  119. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +1 -0
  120. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/chunk-events.mjs +9 -2
  121. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +7 -0
  122. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +14 -3
  123. package/src/runtime/agent/orchestrator/providers/openai-compat-responses-events.mjs +4 -2
  124. package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +1 -0
  125. package/src/runtime/agent/orchestrator/providers/openai-compat-stream-common.mjs +5 -3
  126. package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +16 -3
  127. package/src/runtime/agent/orchestrator/providers/openai-compat-xai-send.mjs +1 -0
  128. package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events/output-items.mjs +5 -2
  129. package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events.mjs +13 -3
  130. package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state.mjs +13 -2
  131. package/src/runtime/agent/orchestrator/providers/openai-http-sse-watchdogs.mjs +81 -42
  132. package/src/runtime/agent/orchestrator/providers/openai-oauth-http-sse.mjs +8 -0
  133. package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +160 -31
  134. package/src/runtime/agent/orchestrator/providers/openai-ws-stream/event-switch.mjs +22 -12
  135. package/src/runtime/agent/orchestrator/providers/openai-ws-stream.mjs +7 -1
  136. package/src/runtime/agent/orchestrator/providers/openai-ws-watchdogs.mjs +49 -22
  137. package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +1 -1
  138. package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +3 -1
  139. package/src/runtime/agent/orchestrator/providers/registry.mjs +45 -2
  140. package/src/runtime/agent/orchestrator/providers/vertex-ai-auth.mjs +622 -0
  141. package/src/runtime/agent/orchestrator/providers/vertex-ai-maas.mjs +185 -0
  142. package/src/runtime/agent/orchestrator/providers/vertex-ai-models.mjs +445 -0
  143. package/src/runtime/agent/orchestrator/providers/vertex-ai.mjs +567 -0
  144. package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +41 -13
  145. package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +2 -0
  146. package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +8 -6
  147. package/src/runtime/agent/orchestrator/runtime-core/session-text.mjs +7 -3
  148. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +3 -0
  149. package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +6 -1
  150. package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +14 -5
  151. package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +1 -0
  152. package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +5 -2
  153. package/src/runtime/agent/orchestrator/session/agent-room.d.mts +30 -5
  154. package/src/runtime/agent/orchestrator/session/agent-room.mjs +171 -37
  155. package/src/runtime/agent/orchestrator/session/cache/scoped-cache.mjs +1 -3
  156. package/src/runtime/agent/orchestrator/session/cache-warm.mjs +102 -12
  157. package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +4 -1
  158. package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +1 -8
  159. package/src/runtime/agent/orchestrator/session/compact/messages.mjs +23 -0
  160. package/src/runtime/agent/orchestrator/session/compact/observation-supersession.mjs +103 -23
  161. package/src/runtime/agent/orchestrator/session/compact/runner.mjs +160 -36
  162. package/src/runtime/agent/orchestrator/session/context-utils.mjs +13 -1
  163. package/src/runtime/agent/orchestrator/session/conversation-import/claude.mjs +164 -23
  164. package/src/runtime/agent/orchestrator/session/conversation-import/codex.mjs +139 -19
  165. package/src/runtime/agent/orchestrator/session/conversation-import/convert.mjs +38 -7
  166. package/src/runtime/agent/orchestrator/session/conversation-import/imported-session.mjs +3 -0
  167. package/src/runtime/agent/orchestrator/session/conversation-import/turns.mjs +100 -22
  168. package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +4 -3
  169. package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +36 -6
  170. package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +33 -3
  171. package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +9 -2
  172. package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +1 -1
  173. package/src/runtime/agent/orchestrator/session/loop/provider-tool-exclusions.mjs +13 -5
  174. package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +14 -0
  175. package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +13 -1
  176. package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +23 -4
  177. package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +2 -0
  178. package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +23 -1
  179. package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +39 -21
  180. package/src/runtime/agent/orchestrator/session/loop/turn-limits.mjs +13 -8
  181. package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +50 -28
  182. package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +3 -3
  183. package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +3 -1
  184. package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +2 -2
  185. package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +1 -0
  186. package/src/runtime/agent/orchestrator/session/manager/route-fallback-chain.mjs +2 -1
  187. package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +30 -13
  188. package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +63 -6
  189. package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +7 -0
  190. package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +15 -0
  191. package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +35 -13
  192. package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +24 -14
  193. package/src/runtime/agent/orchestrator/session/manager/session-scratch-environment.mjs +70 -0
  194. package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +0 -3
  195. package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +10 -6
  196. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-context.mjs +4 -0
  197. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +3 -0
  198. package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +56 -29
  199. package/src/runtime/agent/orchestrator/session/manager/turn-reap.mjs +125 -0
  200. package/src/runtime/agent/orchestrator/session/mixy-name.mjs +11 -5
  201. package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +5 -1
  202. package/src/runtime/agent/orchestrator/session/prompt-cache-touch-store.mjs +30 -7
  203. package/src/runtime/agent/orchestrator/session/restart-prefix-parity.fixture.mjs +154 -0
  204. package/src/runtime/agent/orchestrator/session/store/session-delete.mjs +7 -0
  205. package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +4 -0
  206. package/src/runtime/agent/orchestrator/session/store-summary-fields.mjs +15 -0
  207. package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +37 -8
  208. package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +252 -39
  209. package/src/runtime/agent/orchestrator/session/store-transcript-cache.mjs +163 -64
  210. package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +164 -4
  211. package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +142 -18
  212. package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +61 -2
  213. package/src/runtime/agent/orchestrator/stall-policy.mjs +23 -0
  214. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +6 -2
  215. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/invocation-plan.mjs +2 -2
  216. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/spawn-env.mjs +4 -2
  217. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +6 -1
  218. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +46 -20
  219. package/src/runtime/agent/orchestrator/tools/builtin/cache-layers.mjs +7 -1
  220. package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +67 -31
  221. package/src/runtime/agent/orchestrator/tools/builtin/git-worktree-tool.mjs +25 -13
  222. package/src/runtime/agent/orchestrator/tools/builtin/lib/scoped-search-flight.mjs +9 -5
  223. package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +58 -20
  224. package/src/runtime/agent/orchestrator/tools/builtin/read-single-stream.mjs +7 -1
  225. package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +6 -3
  226. package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-dispatch.mjs +1 -1
  227. package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-publication.mjs +23 -12
  228. package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-snapshot.mjs +6 -1
  229. package/src/runtime/agent/orchestrator/tools/builtin/read-tool.mjs +1 -8
  230. package/src/runtime/agent/orchestrator/tools/builtin/runtime-capabilities.mjs +20 -15
  231. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +96 -20
  232. package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +59 -10
  233. package/src/runtime/agent/orchestrator/tools/code-graph/dispatch/federation.mjs +3 -1
  234. package/src/runtime/agent/orchestrator/tools/code-graph-tool-defs.mjs +1 -1
  235. package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
  236. package/src/runtime/agent/orchestrator/tools/lib/isolated-test-env.mjs +4 -3
  237. package/src/runtime/agent/orchestrator/tools/lib/native-spawn-client.mjs +99 -2
  238. package/src/runtime/agent/orchestrator/tools/lib/owned-shell-trees.mjs +2 -0
  239. package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +103 -13
  240. package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +3 -1
  241. package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +49 -15
  242. package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +45 -27
  243. package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +34 -10
  244. package/src/runtime/agent/orchestrator/tools/lib/shell-warm-standby.mjs +28 -4
  245. package/src/runtime/agent/orchestrator/tools/lib/wait-until-fixture.mjs +26 -0
  246. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +7 -2
  247. package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +13 -13
  248. package/src/runtime/channels/lib/webhook/signature.mjs +4 -1
  249. package/src/runtime/channels/lib/whisper-port.mjs +29 -11
  250. package/src/runtime/channels/lib/whisper-server.mjs +10 -1
  251. package/src/runtime/computer-bridge/action-schema.mjs +2 -2
  252. package/src/runtime/computer-bridge/core-actions.mjs +2 -2
  253. package/src/runtime/computer-bridge/error-recovery.mjs +5 -4
  254. package/src/runtime/computer-bridge/linux-action-capabilities.mjs +24 -5
  255. package/src/runtime/computer-bridge/linux-readiness.d.mts +7 -2
  256. package/src/runtime/connectors/connector-accounts-mcp.mjs +236 -103
  257. package/src/runtime/connectors/gmail-app-password.mjs +3 -3
  258. package/src/runtime/explore/explorer.mjs +93 -0
  259. package/src/runtime/explore/tool-defs.mjs +35 -0
  260. package/src/runtime/explore/tool.mjs +123 -0
  261. package/src/runtime/local-provider/server-process.mjs +2 -1
  262. package/src/runtime/media/adapters/gemini-video.mjs +4 -1
  263. package/src/runtime/media/adapters/xai-media.mjs +2 -1
  264. package/src/runtime/memory/index.mjs +4 -0
  265. package/src/runtime/memory/lib/embedding-provider.mjs +4 -1
  266. package/src/runtime/memory/lib/embedding-worker.mjs +10 -3
  267. package/src/runtime/memory/lib/memory-action-handlers/cycle-backfill-action.mjs +1 -7
  268. package/src/runtime/memory/lib/memory-chunk-quality.mjs +1 -6
  269. package/src/runtime/office/authoring/pdf-author-action.mjs +1 -6
  270. package/src/runtime/office/design/design-art-direction.mjs +29 -27
  271. package/src/runtime/office/pdf/pdf-writer.mjs +6 -1
  272. package/src/runtime/office/portable/portable-snapshot-docx.mjs +7 -1
  273. package/src/runtime/office/portable/portable-snapshot-shared.mjs +6 -1
  274. package/src/runtime/office/quality/assurance-rendered.mjs +9 -2
  275. package/src/runtime/office/quality/assurance-structure-docx.mjs +4 -2
  276. package/src/runtime/office/quality/design-review.mjs +1 -5
  277. package/src/runtime/office/quality/document-brief.mjs +1 -5
  278. package/src/runtime/office/quality/forced-break-pages.mjs +9 -6
  279. package/src/runtime/office/quality/quality-pipeline.mjs +1 -1
  280. package/src/runtime/shared/agent-route-config.mjs +17 -2
  281. package/src/runtime/shared/atomic-file.mjs +103 -2
  282. package/src/runtime/shared/background-tasks.mjs +15 -6
  283. package/src/runtime/shared/bot-owned-work.mjs +56 -0
  284. package/src/runtime/shared/connector-accounts.mjs +5 -5
  285. package/src/runtime/shared/connector-catalog.d.mts +11 -4
  286. package/src/runtime/shared/connector-catalog.mjs +60 -52
  287. package/src/runtime/shared/custom-provider-keys.mjs +20 -0
  288. package/src/runtime/shared/defaults-separation.mjs +1 -4
  289. package/src/runtime/shared/fetch-safe-listen.d.mts +16 -0
  290. package/src/runtime/shared/fetch-safe-listen.mjs +50 -0
  291. package/src/runtime/shared/file-has-data.mjs +26 -2
  292. package/src/runtime/shared/file-lock.mjs +13 -15
  293. package/src/runtime/shared/git-launch.d.mts +9 -0
  294. package/src/runtime/shared/git-launch.mjs +213 -0
  295. package/src/runtime/shared/git-runner-worker.mjs +2 -1
  296. package/src/runtime/shared/handoff-artifacts.d.mts +2 -1
  297. package/src/runtime/shared/handoff-artifacts.mjs +18 -8
  298. package/src/runtime/shared/idle-auto-clear-gate.mjs +29 -7
  299. package/src/runtime/shared/llm/cost.mjs +11 -2
  300. package/src/runtime/shared/llm/http-agent.mjs +313 -29
  301. package/src/runtime/shared/llm/model-catalog-projection.mjs +3 -2
  302. package/src/runtime/shared/llm/model-catalog.mjs +46 -6
  303. package/src/runtime/shared/llm/provider-catalog-registry.mjs +3 -0
  304. package/src/runtime/shared/llm/system-proxy.mjs +452 -0
  305. package/src/runtime/shared/loopback-listener.mjs +25 -2
  306. package/src/runtime/shared/model-route-chain.d.mts +7 -2
  307. package/src/runtime/shared/model-route-chain.mjs +22 -4
  308. package/src/runtime/shared/open-url.mjs +10 -0
  309. package/src/runtime/shared/provider-accounts.mjs +52 -2
  310. package/src/runtime/shared/session-activity-signal.mjs +14 -0
  311. package/src/runtime/shared/session-scratch.mjs +37 -0
  312. package/src/runtime/shared/staged-install-worker.mjs +5 -0
  313. package/src/runtime/shared/staged-update.mjs +47 -2
  314. package/src/runtime/shared/tool-card-model/agent-surface.mjs +1 -3
  315. package/src/runtime/shared/tool-card-model/card-status.mjs +15 -2
  316. package/src/runtime/shared/tool-result-summary.mjs +1 -1
  317. package/src/runtime/shared/tool-surface.mjs +113 -36
  318. package/src/runtime/shared/tool-work-units.mjs +6 -0
  319. package/src/runtime/shared/turn-snapshot-store.mjs +13 -6
  320. package/src/runtime/shared/turn-worktree-snapshot.mjs +414 -54
  321. package/src/runtime/shared/worktrees/activity-gate.mjs +215 -318
  322. package/src/runtime/shared/worktrees/activity-ledger-worker.mjs +56 -0
  323. package/src/runtime/shared/worktrees/activity-ledger.mjs +391 -0
  324. package/src/runtime/shared/worktrees/branch-management.mjs +9 -3
  325. package/src/runtime/shared/worktrees/contract.mjs +4 -1
  326. package/src/runtime/shared/worktrees/git.mjs +72 -0
  327. package/src/runtime/shared/worktrees/manager.mjs +285 -168
  328. package/src/runtime/shared/worktrees/test-support.mjs +6 -10
  329. package/src/runtime/tidy/install.mjs +95 -15
  330. package/src/runtime/tidy/languages.mjs +17 -15
  331. package/src/runtime/tidy/process.mjs +7 -4
  332. package/src/runtime/tidy/resolve.mjs +19 -16
  333. package/src/runtime/tidy/runners/biome.mjs +3 -3
  334. package/src/runtime/tidy/tool.mjs +1 -1
  335. package/src/runtime/tidy/worktree.mjs +10 -6
  336. package/src/runtime/visualize-bridge/client.mjs +6 -1
  337. package/src/runtime/visualize-bridge/tool-defs.mjs +7 -2
  338. package/src/runtime/web-search/index.mjs +1 -1
  339. package/src/session-runtime/agent-home-delivery.mjs +41 -0
  340. package/src/session-runtime/agent-task-sessions.mjs +458 -312
  341. package/src/session-runtime/agent-tool-routing.mjs +8 -41
  342. package/src/session-runtime/boot/tools.mjs +7 -1
  343. package/src/session-runtime/bot-status.mjs +107 -101
  344. package/src/session-runtime/bot-target.mjs +38 -0
  345. package/src/session-runtime/channel-config-api.mjs +6 -1
  346. package/src/session-runtime/connector-merge-migration.mjs +18 -15
  347. package/src/session-runtime/conversation-import/codex-titles.mjs +88 -0
  348. package/src/session-runtime/conversation-import/discovery.mjs +401 -36
  349. package/src/session-runtime/conversation-import/service.mjs +35 -8
  350. package/src/session-runtime/handoff-attachments.mjs +82 -31
  351. package/src/session-runtime/held-requests.mjs +3 -1
  352. package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +12 -13
  353. package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +1 -0
  354. package/src/session-runtime/internal-tool-executor/feature-tools.mjs +2 -0
  355. package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +8 -0
  356. package/src/session-runtime/internal-tool-executor/reaction-tool.mjs +4 -1
  357. package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +145 -112
  358. package/src/session-runtime/lifecycle/cold-heir.mjs +11 -6
  359. package/src/session-runtime/lifecycle/session-catalog.mjs +9 -1
  360. package/src/session-runtime/lifecycle/teardown/session-close.mjs +6 -1
  361. package/src/session-runtime/lifecycle/teardown.mjs +1 -1
  362. package/src/session-runtime/mcp-glue/server-catalog.mjs +16 -10
  363. package/src/session-runtime/mcp-glue/server-input.mjs +4 -1
  364. package/src/session-runtime/mixy-heartbeat.mjs +1 -1
  365. package/src/session-runtime/model-route/set-route.mjs +11 -2
  366. package/src/session-runtime/provider-auth/login.mjs +2 -2
  367. package/src/session-runtime/provider-catalog-cache.mjs +82 -36
  368. package/src/session-runtime/provider-models/catalog-load.mjs +23 -6
  369. package/src/session-runtime/provider-models.mjs +4 -2
  370. package/src/session-runtime/resource-mcp-api.mjs +98 -35
  371. package/src/session-runtime/resource-mcp-connector-accounts.mjs +44 -31
  372. package/src/session-runtime/resource-mcp-secrets.mjs +28 -11
  373. package/src/session-runtime/resource-mcp-servers.mjs +5 -4
  374. package/src/session-runtime/resource-recall-api.mjs +6 -1
  375. package/src/session-runtime/runtime-feature-gates.mjs +5 -1
  376. package/src/session-runtime/services/agent-tool/execute.mjs +14 -9
  377. package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +20 -4
  378. package/src/session-runtime/services/agent-tool/model-select.mjs +48 -7
  379. package/src/session-runtime/services/agent-tool/render.mjs +71 -17
  380. package/src/session-runtime/services/agent-tool/send-flow.mjs +10 -2
  381. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +8 -3
  382. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +4 -1
  383. package/src/session-runtime/services/agent-tool/spawn-preset.mjs +6 -2
  384. package/src/session-runtime/services/agent-tool/tool-def.mjs +9 -9
  385. package/src/session-runtime/services/agent-watchdog-registry.mjs +32 -4
  386. package/src/session-runtime/services/channel-worker/daemon-spawn.mjs +2 -0
  387. package/src/session-runtime/services/daemon-candidate.mjs +4 -1
  388. package/src/session-runtime/services/memory-runtime-proxy/daemon-spawn.mjs +4 -0
  389. package/src/session-runtime/services/plugin-admin.mjs +10 -6
  390. package/src/session-runtime/services/provider-admin.mjs +283 -11
  391. package/src/session-runtime/session-turn-api.mjs +2 -0
  392. package/src/session-runtime/settings-builtin-tools-api.mjs +4 -1
  393. package/src/session-runtime/settings-system-api.mjs +1 -1
  394. package/src/session-runtime/setup-tool/agent-settings-actions.mjs +13 -3
  395. package/src/session-runtime/setup-tool/connector-widen-approval.mjs +96 -0
  396. package/src/session-runtime/setup-tool/executor.mjs +6 -2
  397. package/src/session-runtime/setup-tool/tool-defs.mjs +2 -1
  398. package/src/session-runtime/tool-policy/policy-stage.mjs +1 -0
  399. package/src/session-runtime/turn/agent-ops.mjs +23 -0
  400. package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +49 -11
  401. package/src/session-runtime/workflow-agents-api/agent-editor.mjs +5 -1
  402. package/src/session-runtime/workflow-agents-api/agent-route.mjs +25 -5
  403. package/src/session-runtime/workflow-agents-api/onboarding.mjs +3 -3
  404. package/src/session-runtime/workspace/activity-guards.mjs +176 -0
  405. package/src/session-runtime/workspace/session-view.mjs +149 -0
  406. package/src/session-runtime/workspace/side-checkouts.mjs +203 -0
  407. package/src/session-runtime/workspace/transition-runner.mjs +188 -0
  408. package/src/session-runtime/workspace/transitions.mjs +108 -1041
  409. package/src/session-runtime/workspace/workspace-merge.mjs +132 -0
  410. package/src/session-runtime/workspace/worktree-intents.mjs +242 -0
  411. package/src/session-runtime/workspace/worktree-maintenance.mjs +80 -0
  412. package/src/session-runtime/workspace/worktree-setup.mjs +85 -0
  413. package/src/session-runtime/workspace/worktree-tool.mjs +73 -56
  414. package/src/standalone/daemon-desktop-runtime.mjs +2 -0
  415. package/src/standalone/daemon-session-control.mjs +169 -138
  416. package/src/standalone/daemon.mjs +7 -0
  417. package/src/standalone/desktop-service-registry.mjs +9 -0
  418. package/src/standalone/local-session-runtime.mjs +5 -1
  419. package/src/standalone/session-client/daemon-unavailable.mjs +3 -0
  420. package/src/standalone/session-client.mjs +5 -1
  421. package/src/standalone/session-frame-stream.mjs +83 -11
  422. package/src/standalone/session-protocol.mjs +4 -0
  423. package/src/standalone/session-service/agent-tree/agent-turns.mjs +16 -12
  424. package/src/standalone/session-service/agent-tree.mjs +45 -9
  425. package/src/standalone/session-service/projection/transcript-window.mjs +700 -64
  426. package/src/standalone/session-service/session-calls/session-action.mjs +10 -3
  427. package/src/standalone/session-service/session-calls/session-views.mjs +160 -104
  428. package/src/standalone/session-service/stored-reader.mjs +127 -40
  429. package/src/standalone/session-transport/client-registry/client-grace.mjs +12 -9
  430. package/src/tui/App.jsx +154 -164
  431. package/src/tui/app/app-view/floating-panel.jsx +10 -4
  432. package/src/tui/app/app-view/text-entry-labels.mjs +1 -0
  433. package/src/tui/app/clipboard.mjs +21 -10
  434. package/src/tui/app/model-picker/route-selection/fast-parameters.mjs +1 -3
  435. package/src/tui/app/model-picker/route-selection.mjs +5 -6
  436. package/src/tui/app/prompt-handlers/use-prompt-history-nav.mjs +1 -1
  437. package/src/tui/app/prompt-handlers/use-prompt-interrupt.mjs +3 -0
  438. package/src/tui/app/prompt-submit/provider-prompts.mjs +3 -1
  439. package/src/tui/app/provider-setup/api-key-actions.mjs +31 -1
  440. package/src/tui/app/provider-setup/oauth-actions.mjs +58 -21
  441. package/src/tui/app/provider-setup/provider-items.mjs +8 -2
  442. package/src/tui/app/provider-setup-picker.mjs +29 -18
  443. package/src/tui/app/shell-layout/row-budgets.mjs +12 -10
  444. package/src/tui/app/slash-commands.mjs +1 -0
  445. package/src/tui/app/slash-dispatch/session-commands.mjs +46 -0
  446. package/src/tui/app/slash-dispatch.mjs +1 -1
  447. package/src/tui/app/use-btw-panel.mjs +29 -0
  448. package/src/tui/app/use-context-panel-refresh.mjs +31 -0
  449. package/src/tui/app/use-model-catalog-cache.mjs +13 -10
  450. package/src/tui/app/use-mouse-input.mjs +11 -0
  451. package/src/tui/app/use-onboarding-start.mjs +8 -3
  452. package/src/tui/app/use-panel-transition.mjs +10 -1
  453. package/src/tui/app/use-pasted-buffers.mjs +28 -20
  454. package/src/tui/app/use-prompt-draft-flow.mjs +7 -0
  455. package/src/tui/app/use-prompt-layout-rows.mjs +3 -3
  456. package/src/tui/app/use-prompt-queue-history.mjs +3 -2
  457. package/src/tui/app/use-selection-focus.mjs +11 -2
  458. package/src/tui/app/use-selection-geometry.mjs +18 -9
  459. package/src/tui/app/use-selection-paint.mjs +4 -4
  460. package/src/tui/app/use-selection-stitch.mjs +3 -3
  461. package/src/tui/app/use-slash-palette.mjs +62 -0
  462. package/src/tui/app/use-terminal-chrome.mjs +2 -2
  463. package/src/tui/app/use-transcript-activity.mjs +47 -32
  464. package/src/tui/app/use-transcript-follow.mjs +12 -4
  465. package/src/tui/app/use-transcript-scroll.mjs +46 -17
  466. package/src/tui/app/use-transcript-swap-reset.mjs +27 -0
  467. package/src/tui/app/use-transcript-window/geometry.mjs +19 -5
  468. package/src/tui/app/use-transcript-window/instance-state.mjs +4 -0
  469. package/src/tui/app/use-transcript-window/selection-shift.mjs +5 -1
  470. package/src/tui/app/use-transcript-window.mjs +21 -11
  471. package/src/tui/app/use-tui-ready.mjs +18 -0
  472. package/src/tui/app/use-welcome-prompt-hint.mjs +5 -0
  473. package/src/tui/app/use-workflow-tab-cycle.mjs +5 -3
  474. package/src/tui/components/Picker.jsx +27 -3
  475. package/src/tui/components/QuestionPanel.jsx +13 -4
  476. package/src/tui/components/SignInUrl.jsx +68 -0
  477. package/src/tui/components/TextEntryPanel.jsx +76 -46
  478. package/src/tui/components/sign-in-url-layout.mjs +24 -0
  479. package/src/tui/dist/index.mjs +1963 -1361
  480. package/src/tui/session/goal-turn-state.mjs +6 -2
  481. package/src/tui/session/session-api/controls.mjs +4 -0
  482. package/src/tui/session/session-api/extensions.mjs +8 -0
  483. package/src/tui/session/session-api/intake/abort.mjs +2 -1
  484. package/src/tui/session/session-api/intake.mjs +2 -0
  485. package/src/tui/session/session-api/integrations.mjs +2 -2
  486. package/src/tui/session/session-api/routes-agent-definitions.mjs +1 -0
  487. package/src/tui/session/session-api/settings.mjs +2 -2
  488. package/src/tui/session/session-flow/queue/take-entries.mjs +11 -0
  489. package/src/tui/session/transcript-spill/spill-writer.mjs +15 -0
  490. package/src/tui/session/transcript-spill.mjs +92 -4
  491. package/src/tui/session/transcript-store.mjs +2 -0
  492. package/src/ui/statusline-agents.mjs +1 -3
  493. package/src/defaults/skills/skill-creator/references/source-review.md +0 -94
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: skill-creator
3
- description: Create, audit, repair, or simplify a Mixdog Agent Skill and its SKILL.md.
3
+ description: Create, audit, repair, or simplify your Mixdog skills and their SKILL.md.
4
4
  when_to_use: 'Create, audit, repair, or edit skills, including activation failures; not ordinary feature work.'
5
5
  dependencies:
6
6
  tools:
@@ -12,195 +12,90 @@ dependencies:
12
12
 
13
13
  # Skill Creator
14
14
 
15
- Build a compact operating guide that makes recurring agent work more reliable.
16
- The result should encode useful decisions and recovery behavior, not narrate
17
- everything a capable model or a tool schema already knows.
15
+ Manages the skills a user keeps in Mixdog: turning a recurring workflow into a
16
+ skill, repairing one that misfires, and keeping the whole set small and tidy.
17
+ A skill earns its place by changing results — decisions, procedure, recovery
18
+ and a way to prove completion — not by narrating what the model or a tool
19
+ schema already knows.
18
20
 
19
- ## Select the right deliverable
21
+ ## Pick the deliverable
20
22
 
21
- Before writing files, classify the request:
22
-
23
- | Need | Best home |
23
+ | Need | Home |
24
24
  |---|---|
25
- | Reusable judgement or a repeatable procedure using existing tools | Skill |
26
- | Precise new runtime capability, authentication, streaming, or binary handling | Tool or product code |
27
- | Repository facts and contributor conventions | Project documentation |
28
- | A user-specific standing preference or constraint | Memory, with approval |
29
- | A single task unlikely to recur | Complete the task without a skill |
30
-
31
- Do not create a routing-only skill whose main job is listing other skills.
32
- Improve an existing owner when the requested capability already fits there.
33
-
34
- ## Choose scope before content
35
-
36
- - **Machine-global** — personal workflows useful across Projects.
37
- - **Plugin** — capability that ships with an independently installed extension.
38
- - **Built-in** — broadly useful Mixdog behavior with low context and dependency
39
- cost. Niche or heavy workflows do not belong here.
40
-
41
- Mixdog does not discover project-local `.mixdog/skills` directories. Read
42
- `references/design.md` before choosing placement or file structure.
43
-
44
- ## Creation loop
45
-
46
- ### 1. Recover the real workflow
47
-
48
- Use the conversation, successful tool calls, corrections, failure recovery, and
49
- produced artifacts as evidence. Ask only about gaps that would change the
50
- design.
51
-
52
- Capture:
53
-
54
- - one recurring outcome;
55
- - phrases and situations that should activate the skill;
56
- - nearby requests that another capability should own;
57
- - inputs, outputs, dependencies, side effects, and approvals;
58
- - completion evidence and important failure recovery.
59
-
60
- Completion criterion: another agent could identify when to use the skill and
61
- what successful completion looks like without guessing.
62
-
63
- ### 2. Check local constraints
64
-
65
- Inspect the target skill when modifying one. For a new skill, inspect only the
66
- runtime rules and nearest comparable skills needed to settle naming, placement,
67
- and integration.
68
-
69
- Treat system instructions and current tool schemas as higher authority than any
70
- skill. A skill may explain selection and workflow but must not redefine tool
71
- arguments or permission boundaries.
72
-
73
- Completion criterion: every proposed dependency and path exists in the target
74
- environment or is explicitly part of the implementation.
75
-
76
- ### 3. Review external candidates when useful
77
-
78
- Read `references/source-review.md` when the user asks to find, import, borrow
79
- from, or compare public skills.
80
-
81
- Extract requirements and design lessons rather than copying prose. If exact
82
- third-party content is genuinely needed, surface its license obligations before
83
- editing. Prefer a clean local implementation when a small compatible design can
84
- provide the same behavior.
85
-
86
- Completion criterion: the adopt, reimplement, or reject decision is supported
87
- by compatibility, maintenance, executable-content, and license evidence.
88
-
89
- ### 4. Draft the smallest complete skill
90
-
91
- Read the "Listing line" section of `references/design.md` before writing
92
- frontmatter; it owns the `description` and `when_to_use` budgets and wording.
93
- Write instructions and listing text in English, describing user intent
94
- across languages rather than listing translated keywords. Preserve exact
95
- literals and language-specific examples when needed.
96
-
97
- Write the body in the section order from `references/design.md`: intro,
98
- boundary or mode selection, prerequisites, procedure with an observable result
99
- per important step, pitfalls, verification, resource links. Body text never
100
- routes the skill. Put capabilities, tool usage, prerequisites, operating rules,
101
- and recovery details here, not in the trigger or UI description. Keep only
102
- selection conditions in the trigger; the body must stand on its own when loaded.
103
-
104
- Move conditional detail into directly referenced files. Add scripts only for
105
- deterministic work that would otherwise be rebuilt on repeated invocations.
106
-
107
- Completion criterion: the listing line fits its budget with the trigger
108
- intact, and removing any remaining body section would lose judgement,
109
- execution, recovery, or verification value.
110
-
111
- ### 5. Validate structure
112
-
113
- Run:
114
-
115
- ```text
116
- node "${MIXDOG_SKILL_DIR}/scripts/validate-skill.mjs" "<skill-directory>"
117
- ```
118
-
119
- Then run checks required by the target repository. The validator catches
120
- portable structure, code-fence, and path problems and warns when the listing line exceeds
121
- its budget; the runtime parser remains authoritative for loading behavior.
122
-
123
- Completion criterion: validation passes, warnings are reviewed at their
124
- reported severity, resources resolve, and the folder name matches the manifest.
125
-
126
- ### 6. Exercise behavior
127
-
128
- Read `references/evaluation.md`. Test realistic requests, including an implicit
129
- positive case, an edge case, and a close negative case. For a modified skill,
130
- preserve the prior version before editing and compare the same scenarios.
131
-
132
- Judge generated artifacts by observable outcomes. Use deterministic assertions
133
- for mechanical properties and user review for subjective quality.
134
-
135
- Completion criterion: required scenarios pass without task-specific harness
136
- hints, and failures have either been fixed or clearly reported.
137
-
138
- ### 7. Tighten
139
-
140
- Remove duplicated rules, generic advice, stale examples, and branches that did
141
- not affect evaluation. When adding a corrected rule, replace the obsolete rule
142
- instead of accumulating exceptions.
143
-
144
- Completion criterion: the final skill is smaller or clearer than the draft
145
- without losing proven behavior.
146
-
147
- ## Updating an existing skill
148
-
149
- - Keep its name and scope unless the user requests a change.
150
- - Diagnose whether the defect is routing, instructions, resources, integration,
151
- or the underlying tool before editing.
152
- - Preserve warnings, resource bounds, user approvals, and recovery paths.
153
- - Read only references implicated by the defect.
154
- - Re-run checks affected by the edit; do not repeat checks already closed by
155
- unchanged evidence.
156
-
157
- ## Auditing the skill set
158
-
159
- When asked to audit, review, or tidy skills rather than fix one defect:
160
-
161
- 1. List every skill directory in scope: machine-global
162
- (`<mixdog-data>/skills`), enabled plugin skills, and built-ins
163
- (`src/defaults/skills` in the Mixdog repository).
164
- 2. Run `scripts/validate-skill.mjs` on each directory and collect the errors
165
- and warnings; they cover the listing line, code fences, and resource paths
166
- mechanically.
167
- 3. Read each trigger and body against the audit checklist in
168
- `references/design.md`: trigger content, section order, completion
169
- results, duplication, and stale instructions.
170
- 4. Report findings as one table (skill, check, current value, proposed fix)
171
- before editing. Edit only after the user approves the scope.
172
- 5. Re-run the validator on every edited directory.
173
-
174
- Completion criterion: every skill in scope validates; report unresolved
175
- findings with reasons, without promoting warnings to failures.
176
-
177
- ## Mixdog loading facts
178
-
179
- - Discovery precedence is machine-global, enabled plugin, then built-in.
180
- - The directory name must equal frontmatter `name`.
181
- - The model sees one listing line per skill (`references/design.md`
182
- "Listing line" owns its form and budget); UI descriptions are not
183
- injected, and the body loads once through `Skill`.
184
- - `${MIXDOG_SKILL_DIR}` resolves to the active skill directory.
185
- - `metadata.requires` names a mandatory Mixdog built-in feature. Add it only
186
- when the skill cannot function without that feature.
187
- - Optional frontmatter has no effect unless the current runtime implements it.
188
- - `dependencies.tools` declares tools loaded with the skill, without granting
189
- permissions. Use `type: tool` with the exact tool name or `type: mcp` with
190
- an existing server name. Keep optional tools out; `allowed-tools` is not
191
- interpreted as dependencies. Imported `agents/openai.yaml` dependencies
192
- are also read, but never authorize installation or activation.
193
-
194
- ## Final review
195
-
196
- - Is this genuinely a reusable skill rather than another deliverable?
197
- - Does the trigger say only when to load the skill, strongest situation first?
198
- - Does every major step end in evidence, not “be careful”?
199
- - Are platform assumptions, external programs, network access, and secrets
200
- visible?
201
- - Are pitfalls based on plausible or observed failures?
202
- - Can subjective outputs reach the user for review?
203
- - Are temporary evaluation files excluded from the shipped skill?
204
- - Were commit, publish, install, deployment, and restart left to explicit user
205
- requests?
206
-
25
+ | Reusable judgement or a repeatable procedure with existing tools | Skill |
26
+ | A new runtime capability, authentication, streaming, binary handling | Tool or product code |
27
+ | Facts and conventions of one repository | That repository's docs |
28
+ | A standing personal preference or constraint | Memory, with approval |
29
+ | A one-off task | Do the task; no skill |
30
+
31
+ Never create a skill whose job is to list other skills. When an existing skill
32
+ already owns the outcome, extend it instead.
33
+
34
+ ## Where skills live
35
+
36
+ - The user's skills: `<mixdog-data>/skills/<name>/SKILL.md`, available in
37
+ every project.
38
+ - Enabled plugins and Mixdog's built-ins are read in place. A user skill with
39
+ the same name replaces them and stops following their updates, so pick a new
40
+ name unless replacing is the point.
41
+ - The folder name equals the frontmatter `name`.
42
+
43
+ ## Create a skill
44
+
45
+ 1. **Recover the workflow.** From the conversation, successful tool calls,
46
+ corrections and produced artifacts, capture the one recurring outcome; the
47
+ requests that should select the skill and the nearby requests another skill
48
+ or tool owns; inputs, side effects and approvals; completion evidence and
49
+ recovery. Ask only about gaps that change the design. Result: another agent
50
+ could tell when to use it and what done looks like.
51
+ 2. **Draft** with `references/design.md`: the listing line first, then the
52
+ body in its section order; detail that loads only in some cases goes to
53
+ `references/`, deterministic repeated work to `scripts/`. Every tool, path
54
+ and dependency it names exists. Result: the trigger fits its budget, and
55
+ removing any section would lose judgement, execution, recovery or
56
+ verification.
57
+ 3. **Validate:**
58
+ `node "${MIXDOG_SKILL_DIR}/scripts/validate-skill.mjs" "<skill-directory>"`.
59
+ Result: no errors; each warning fixed or kept on purpose.
60
+ 4. **Exercise** with `references/evaluation.md`: realistic requests, including
61
+ an implicit positive and a near-miss negative. Result: the scenarios pass
62
+ without hints, or the failures are reported.
63
+ 5. **Tighten:** delete duplicated rules, generic advice, stale examples and
64
+ rules no scenario needed; replace an obsolete rule instead of adding an
65
+ exception. Result: smaller or clearer, with the same proven behaviour.
66
+
67
+ ## Repair or update a skill
68
+
69
+ - Keep its name and scope unless the user asks otherwise.
70
+ - Classify the defect first (`references/evaluation.md`) and edit the part
71
+ that owns it: a trigger that never selects the skill is not fixed in the
72
+ body, and more prose does not fix a broken tool.
73
+ - Keep a copy of the prior version and rerun the same scenarios against both.
74
+ - Keep its approvals, bounds, warnings and recovery paths.
75
+ - Rerun only the checks the edit affects.
76
+
77
+ ## Audit the set
78
+
79
+ When asked to review or tidy skills rather than fix one:
80
+
81
+ 1. List the skills in scope: the user's (`<mixdog-data>/skills`), enabled
82
+ plugins, built-ins.
83
+ 2. Run the validator on each and collect its errors and warnings.
84
+ 3. Read each against the audit checklist in `references/design.md` and give a
85
+ verdict: **Keep**; **Improve** (name the defect); **Merge** into another
86
+ (name it); **Retire** (name what covers the need instead).
87
+ 4. Report one table — skill, verdict, finding, proposed fix — and edit only
88
+ what the user approves. Plugin and built-in skills are never edited in
89
+ place.
90
+ 5. Rerun the validator on every edited skill.
91
+
92
+ Result: every edited skill validates; unresolved findings are reported with
93
+ their reason.
94
+
95
+ ## Resources
96
+
97
+ - `references/design.md` — read before drafting or auditing: ownership,
98
+ frontmatter, listing line, body, resources, audit checklist.
99
+ - `references/evaluation.md` — read when exercising a skill or diagnosing a
100
+ failure.
101
+ - `scripts/validate-skill.mjs` — run on every created or edited skill.
@@ -1,203 +1,111 @@
1
1
  # Skill design
2
2
 
3
- Use this reference after deciding that the requested outcome belongs in a
4
- skill.
3
+ ## One owner
5
4
 
6
- ## Start from behavior
5
+ Before writing, name the result the skill makes more reliable, the decisions
6
+ the agent misses without it, the evidence that proves completion, the failures
7
+ that need recovery, and the nearby request it must leave alone.
7
8
 
8
- Define the behavior before naming files:
9
+ Extend an existing skill that owns the outcome; create a new one only for a
10
+ distinct trigger, workflow and verification. Avoid skills that redirect to
11
+ other skills, several skills competing for one request, one skill covering a
12
+ whole technology, and product features written as prose.
9
13
 
10
- - What recurring result should become more reliable?
11
- - Which decisions does the agent currently miss?
12
- - What evidence proves completion?
13
- - Which failures need recovery rather than a hard stop?
14
- - Which adjacent task must remain outside this skill?
15
-
16
- A skill earns its context cost by supplying judgement or procedure that changes
17
- results. Generic encouragement and tool documentation do not qualify.
18
-
19
- ## Pick one owner
20
-
21
- Prefer extending an existing skill when it already owns the outcome. Create a
22
- new skill when it has a distinct trigger, workflow, and verification boundary.
23
-
24
- Avoid:
25
-
26
- - umbrella skills that merely redirect to narrower skills;
27
- - several skills competing for the same user intent;
28
- - one skill that attempts to cover an entire profession or technology family;
29
- - product features represented as prose because implementing code is harder.
30
-
31
- ## Choose where it lives
32
-
33
- | Scope | Use when |
34
- |---|---|
35
- | Machine-global | The user wants the workflow available across Projects |
36
- | Plugin | The workflow depends on and ships with an extension |
37
- | Built-in | The workflow is broadly useful, stable, and inexpensive to expose |
38
-
39
- A workflow specific to one repository may be better owned by project
40
- documentation than by a machine-global skill.
14
+ System instructions and tool schemas outrank a skill: it explains when and how
15
+ to use tools, never redefines their arguments or permissions.
41
16
 
42
17
  ## Frontmatter
43
18
 
44
- Required:
19
+ - `name`: lowercase letters, digits and hyphens, no leading, trailing or
20
+ repeated hyphen, at most 64 characters, equal to the folder name.
21
+ - `description`: one plain capability sentence for the UI, at most 100
22
+ characters. The model never sees it.
23
+ - `when_to_use`: the trigger (Listing line below).
24
+ - `dependencies.tools`: tools loaded with the skill. `type: tool` takes an
25
+ exact tool name, `type: mcp` a connected server's name. A missing or
26
+ disabled tool is reported, never installed or enabled, and nothing grants
27
+ permissions. Leave optional tools out.
45
28
 
46
- - `name`: lowercase letters, digits, and hyphens; no edge or repeated hyphen;
47
- at most 64 characters; identical to the parent directory.
48
- - `description`: one sentence naming the capability.
29
+ ```yaml
30
+ dependencies:
31
+ tools:
32
+ - type: tool
33
+ value: office
34
+ ```
49
35
 
50
- Recommended:
36
+ - `metadata.requires`: a Mixdog built-in feature the skill cannot work without.
51
37
 
52
- - `when_to_use`: the trigger line — phrases and situations that should select
53
- the skill, then the boundary against the nearest neighbour.
54
-
55
- Optional portable fields include `license`, `compatibility`, `metadata`, and
56
- `allowed-tools`. A parsed field is not automatically an implemented feature.
57
- Confirm runtime support before assigning it operational meaning.
58
-
59
- Declare mandatory tools in `dependencies.tools`, either in `SKILL.md`
60
- frontmatter or an imported `agents/openai.yaml`:
61
-
62
- ```yaml
63
- dependencies:
64
- tools:
65
- - type: tool
66
- value: office
67
- - type: mcp
68
- value: existing-server
69
- ```
70
-
71
- `mcp` resolves the available tools of an already connected server. Missing,
72
- disabled, and policy-blocked tools are reported, never installed or enabled.
73
-
74
- The skill editor keeps tool-link overrides in Mixdog's data directory so
75
- updating a downloaded skill does not erase local links or rewrite its source.
76
- An empty override disconnects all tools; restoring the declaration removes
77
- the override. Changing the instruction text still requires an editable skill.
38
+ Other fields have no effect in Mixdog.
78
39
 
79
40
  ## Listing line
80
41
 
81
- The model never sees the body until it calls `Skill()`. Selection happens on
82
- one listing line per skill:
42
+ The model sees one line per skill and loads the body only by calling `Skill`:
83
43
 
84
44
  ```text
85
45
  - <name>: <when_to_use> [tools: <linked tool names>]
86
46
  ```
87
47
 
88
- The runtime cuts the trigger at 100 characters on a word boundary, and when
89
- many skills share the listing budget it shrinks every trigger evenly toward
90
- 60; text past the cut never routes the skill. The tool suffix comes from effective dependencies, not
91
- handwritten trigger text; `mcp:<server>` denotes a server's tools. Keep these
92
- three responsibilities separate:
93
-
94
- | Field | Job | Budget | Write | Avoid |
95
- |---|---|---|---|---|
96
- | `description` | UI-only summary | ≤ 100 chars | One plain capability sentence | Operating rules or selection conditions found nowhere else |
97
- | `when_to_use` | When to load the skill | ≤ 100 chars, core in the first 60 | English descriptions of user intents across languages, implicit situations, then `not …` naming the neighbouring owner | How to use it — procedures, rules, constraints, commands, tool arguments; translated keyword lists |
98
- | Body | Loaded operating instructions | As needed | Capability, prerequisites, procedure, constraints, recovery, and verification | Depending on UI copy to supply an instruction |
48
+ The trigger is cut at 100 characters on a word boundary, and shrinks evenly
49
+ toward 60 when many skills share the listing; text past the cut never selects
50
+ the skill. The tool suffix comes from `dependencies`, never from the trigger.
99
51
 
100
- Put the strongest trigger first in `when_to_use`. A boundary is worth writing
101
- only when a neighbouring skill or plain tool could plausibly win the request.
52
+ | Field | Job | Write | Avoid |
53
+ |---|---|---|---|
54
+ | `when_to_use` | When to load the skill; core in the first 60 characters | The user intents and situations, strongest first, in English for every language, then `not …` naming the nearest other owner | How to do it: steps, rules, commands, tool arguments; translated keyword lists |
55
+ | Body | Everything after selection | Capability, prerequisites, procedure, recovery, verification | Relying on the trigger or the UI description for an instruction |
102
56
 
103
- Example:
57
+ Never summarise the procedure in the trigger: a model that reads a workflow
58
+ there may follow it instead of loading the body. Add the `not …` boundary only
59
+ when a nearby skill or a plain tool could plausibly win the request.
104
60
 
105
61
  ```yaml
106
- description: Deploy Mixdog to the installed app, VPS, or a live release.
107
- when_to_use: 'Deploy, redeploy, or update the installed app, VPS, or a live release; not builds or tests alone.'
62
+ when_to_use: 'Deploy or update the installed app or a live release; not builds or tests alone.'
108
63
  ```
109
64
 
110
65
  ## Body
111
66
 
112
- The body loads once, after selection, so it owns everything the listing line
113
- left out. Use only the sections the workflow needs, in this order:
67
+ Only the sections the workflow needs, in this order:
114
68
 
115
- 1. **Intro** — two or three sentences: what the skill produces, what it does
116
- not do, and the key dependency stance.
69
+ 1. **Intro** — two or three sentences: what it produces and what it does not.
117
70
  2. **Boundary or mode selection** — the decision that picks a path or hands
118
71
  the request to another owner.
119
- 3. **Prerequisites** — exact tools, features, environment, and approvals.
72
+ 3. **Prerequisites** — exact tools, environment and approvals.
120
73
  4. **Procedure** — numbered steps; each important step ends with the
121
- observable result that proves it is done, and an irreversible step names
122
- the user checkpoint before it.
74
+ observable result that proves it, and an irreversible step names the user
75
+ checkpoint before it.
123
76
  5. **Pitfalls** — observed failures and their recovery, not generic caution.
124
77
  6. **Verification** — the check that proves the outcome.
125
- 7. **Resource links** — each `references/` or `scripts/` file with the
126
- condition for reading or running it.
78
+ 7. **Resource links** — each file with the condition for reading or running it.
127
79
 
128
- Write in the imperative. Explain why a rule exists when the reason changes
129
- behaviour; drop rules the model already follows without being told.
80
+ Write in the imperative; give a reason only when it changes behaviour, and drop
81
+ rules the model already follows. About 100 lines for a simple workflow, about
82
+ 200 for a complex one, never over 500. Split by loading condition, not by
83
+ length.
130
84
 
131
- Size: about 100 lines for a simple workflow, about 200 for a complex one, and
132
- below 500 in every case. Split content because it has a different loading
133
- condition, not simply because the file became long.
85
+ ## Resources
134
86
 
135
- ## Bundled resources
136
-
137
- ### References
138
-
139
- Put detailed rules or domain material in `references/`. Link each file directly
140
- from `SKILL.md` and state the condition for reading it. Do not create chains in
141
- which one reference points the agent to another.
142
-
143
- ### Scripts
144
-
145
- Use `scripts/` for deterministic repeated work. Every executable should:
146
-
147
- - validate inputs before side effects;
148
- - operate on explicit paths;
149
- - bound time, memory, retries, and output;
150
- - return actionable errors and a non-zero failure status;
151
- - avoid hidden network, installation, deletion, or credential behavior;
152
- - work on every claimed platform or declare the limitation;
153
- - have a behavioral test separate from the prose.
154
-
155
- Reference executable paths through `${MIXDOG_SKILL_DIR}` so installation
156
- location does not matter.
157
-
158
- ### Assets
159
-
160
- Use `assets/` for templates and static material consumed by outputs. Guidance
161
- belongs in Markdown, not in files that the agent will not load as instructions.
162
-
163
- ## Portability audit
164
-
165
- Inspect prose and scripts for:
166
-
167
- - POSIX-only commands or paths on Windows;
168
- - Windows-only shell syntax on other platforms;
169
- - machine-specific absolute paths;
170
- - undeclared external programs and environment variables;
171
- - assumptions about a vendor CLI, model, or authentication state;
172
- - output paths that overwrite user files by default.
173
-
174
- Prefer portable implementation first. Restrict compatibility only when the
175
- dependency cannot reasonably be removed.
176
-
177
- ## Editing discipline
178
-
179
- - Preserve identity and public behavior unless change is requested.
180
- - Replace outdated guidance instead of appending exceptions.
181
- - Keep safety and recovery behavior during simplification.
182
- - Do not duplicate a rule across the body, reference, script help, and tool
183
- schema; choose the component that owns it.
184
- - End with a pass that removes instructions that did not influence outcomes.
87
+ - `references/` — detailed rules read only in some cases. Link each directly
88
+ from `SKILL.md` with its read condition; no file points to another.
89
+ - `scripts/` — deterministic work that would otherwise be redone each time.
90
+ Validate inputs before side effects, use explicit paths, bound time, output
91
+ and retries, fail with an actionable message and a non-zero status, and do
92
+ no hidden network, installs, deletion or credential access. Give it a
93
+ behavioural test, and call it through `${MIXDOG_SKILL_DIR}`.
94
+ - `assets/` — templates and static material the output uses; guidance stays
95
+ in Markdown.
185
96
 
186
97
  ## Audit checklist
187
98
 
188
- Apply to every skill when asked to audit, review, or tidy the skill set.
189
-
190
99
  | Check | Failure looks like | Fix |
191
100
  |---|---|---|
192
- | Field separation | UI `description` over 100 chars, `when_to_use` over 100, or operating details present only in metadata | Keep the UI summary short, selection conditions in the trigger, and all execution details in the body |
193
- | Trigger presence | `when_to_use` empty while a neighbour competes | Add the phrases users actually write and the `not …` boundary |
194
- | Trigger content | `when_to_use` says how rather than when: rules, constraints, commands, tool names or arguments | Move them to the body; keep the request situations and the `not …` boundary |
195
- | Body order | Sections out of the order above, a `When to use` section in the body, steps without a completion result | Reorder; delete body triggers (they never route); add the observable result |
196
- | Resources | A referenced file missing, a chain of references, a script without an input check | Fix the path, flatten the chain, add validation |
197
- | Duplication | The same rule in the body, a reference, and a script help text | Keep it in the owner; delete the copies |
198
- | Staleness | Paths, tools, or flags that no longer exist | Replace or remove; never leave an instruction that cannot succeed |
199
-
200
- Run `scripts/validate-skill.mjs` on each directory; it reports the listing-line,
201
- code-fence, and resource checks mechanically, and the rest is a read of the body against
202
- this reference.
203
-
101
+ | Fields | `description` or `when_to_use` over 100 characters; an instruction found only in metadata | Short UI summary, selection in the trigger, execution in the body |
102
+ | Trigger | Empty while a neighbour competes; says how instead of when | The phrases users write plus the `not …` boundary; move the how to the body |
103
+ | Body | Out of order, a "when to use" section, steps without a result | Reorder, delete body triggers, add the observable result |
104
+ | Resources | A missing file, a chain of references, a script without input checks | Fix the path, flatten, validate inputs |
105
+ | Side effects | External programs, network, secrets or irreversible steps (commit, deploy, publish, restart) not visible or not waiting for the user | Name them in prerequisites; checkpoint before the step |
106
+ | Duplication | One rule in the body, a reference and a script's help | Keep it in its owner, delete the copies |
107
+ | Staleness | Paths, tools or flags that no longer exist | Replace or remove |
108
+ | Value | A rule or section that no scenario needed | Delete it |
109
+
110
+ The validator checks fields, fences and resource paths; the rest is a read
111
+ against this table.