mixdog 1.4.1 → 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.
- package/package.json +3 -2
- package/scripts/build-shipped-history.mjs +115 -33
- package/scripts/gate-local.mjs +172 -61
- package/scripts/lib/gate-scheduler.mjs +138 -32
- package/scripts/lib/gate-timing-reporter.mjs +16 -0
- package/scripts/lib/run-node-tests.mjs +54 -29
- package/scripts/lib/scoped-temp.mjs +1 -0
- package/scripts/lib/test-failure-records.mjs +14 -1
- package/scripts/lib/test-failure-summary.mjs +16 -4
- package/scripts/lib/test-spawn-ledger.mjs +12 -3
- package/scripts/pptx-kit-index.mjs +5 -6
- package/scripts/suite-health.mjs +110 -28
- package/scripts/test.mjs +9 -14
- package/src/agents/advisor/AGENT.md +4 -4
- package/src/agents/advisor/agent.json +1 -1
- package/src/agents/explore/AGENT.md +22 -0
- package/src/agents/explore/agent.json +6 -0
- package/src/cli.mjs +7 -0
- package/src/defaults/agents.json +7 -0
- package/src/defaults/shipped-history.json +18 -2
- package/src/defaults/skills/browser-use/SKILL.md +4 -1
- package/src/defaults/skills/code-tidy/SKILL.md +71 -102
- package/src/defaults/skills/code-tidy/references/agent-cleanup.md +66 -114
- package/src/defaults/skills/code-tidy/references/cleanup-report.md +19 -35
- package/src/defaults/skills/code-tidy/references/dead-code.md +3 -9
- package/src/defaults/skills/code-tidy/references/test-suite-slop.md +16 -27
- package/src/defaults/skills/computer-use/SKILL.md +12 -2
- package/src/defaults/skills/goal-management/SKILL.md +1 -1
- package/src/defaults/skills/setup/references/actions.md +12 -6
- package/src/defaults/skills/setup/references/surfaces.md +2 -2
- package/src/defaults/skills/setup-guide/SKILL.md +5 -2
- package/src/defaults/skills/setup-guide/model-recommendations.json +13 -0
- package/src/defaults/skills/skill-creator/SKILL.md +85 -190
- package/src/defaults/skills/skill-creator/references/design.md +70 -162
- package/src/defaults/skills/skill-creator/references/evaluation.md +33 -92
- package/src/defaults/skills/test-suite/SKILL.md +194 -0
- package/src/defaults/skills/test-suite/references/case-management.md +51 -0
- package/src/defaults/skills/test-suite/references/flaky-policy.md +39 -0
- package/src/defaults/skills/test-suite/references/reliability.md +49 -0
- package/src/defaults/skills/test-suite/references/suite-design.md +78 -0
- package/src/defaults/skills/test-suite/scripts/inventory.mjs +335 -0
- package/src/defaults/skills/visualize/SKILL.md +6 -2
- package/src/lib/rules-builder.cjs +6 -30
- package/src/rules/lead/LEAD.md +3 -3
- package/src/rules/shared/20-research.md +3 -6
- package/src/rules/shared/40-editing.md +1 -0
- package/src/rules/shared/60-verification.md +10 -9
- package/src/rules/shared/70-delivery.md +4 -3
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/abort-link.mjs +5 -1
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +10 -1
- package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +130 -21
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +13 -0
- package/src/runtime/agent/orchestrator/agent-runtime/maintenance-route.mjs +4 -1
- package/src/runtime/agent/orchestrator/config.mjs +12 -7
- package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +7 -7
- package/src/runtime/agent/orchestrator/context/role-instructions.mjs +5 -26
- package/src/runtime/agent/orchestrator/internal-agents.mjs +3 -14
- package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +122 -12
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +5 -3
- package/src/runtime/agent/orchestrator/mcp/client-config.mjs +13 -2
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +152 -58
- package/src/runtime/agent/orchestrator/mcp/client.mjs +51 -18
- package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +83 -52
- package/src/runtime/agent/orchestrator/mcp/oauth.mjs +42 -26
- package/src/runtime/agent/orchestrator/providers/account-pool.mjs +43 -8
- package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +30 -28
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +31 -21
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/command-code-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +40 -0
- package/src/runtime/agent/orchestrator/providers/custom-provider-keys.mjs +34 -0
- package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/devin-auth.mjs +14 -7
- package/src/runtime/agent/orchestrator/providers/devin-wire-transport.mjs +3 -2
- package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +48 -31
- package/src/runtime/agent/orchestrator/providers/lib/oauth-page.mjs +0 -18
- package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +138 -6
- package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/model-cache.mjs +100 -33
- package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/oauth-secret-fields.fixtures.mjs +45 -0
- package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +26 -28
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream/event-switch.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws-watchdogs.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/registry.mjs +33 -2
- package/src/runtime/agent/orchestrator/providers/vertex-ai-auth.mjs +622 -0
- package/src/runtime/agent/orchestrator/providers/vertex-ai-maas.mjs +185 -0
- package/src/runtime/agent/orchestrator/providers/vertex-ai-models.mjs +445 -0
- package/src/runtime/agent/orchestrator/providers/vertex-ai.mjs +567 -0
- package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +2 -0
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +2 -1
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +3 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +3 -0
- package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +14 -5
- package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/agent-room.d.mts +30 -5
- package/src/runtime/agent/orchestrator/session/agent-room.mjs +171 -37
- package/src/runtime/agent/orchestrator/session/cache-warm.mjs +94 -10
- package/src/runtime/agent/orchestrator/session/conversation-import/claude.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/conversation-import/codex.mjs +10 -5
- package/src/runtime/agent/orchestrator/session/conversation-import/convert.mjs +5 -5
- package/src/runtime/agent/orchestrator/session/conversation-import/turns.mjs +11 -1
- package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +4 -3
- package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +36 -6
- package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +5 -3
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +21 -2
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +23 -1
- package/src/runtime/agent/orchestrator/session/loop/turn-limits.mjs +13 -8
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +50 -28
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +3 -4
- package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +2 -0
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +7 -0
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +15 -0
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +25 -14
- package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +17 -14
- package/src/runtime/agent/orchestrator/session/manager/session-scratch-environment.mjs +70 -0
- package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +0 -3
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +7 -3
- package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +47 -29
- package/src/runtime/agent/orchestrator/session/manager/turn-reap.mjs +125 -0
- package/src/runtime/agent/orchestrator/session/mixy-name.mjs +11 -5
- package/src/runtime/agent/orchestrator/session/restart-prefix-parity.fixture.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +243 -38
- package/src/runtime/agent/orchestrator/session/store-transcript-cache.mjs +163 -64
- package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +164 -4
- package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +142 -18
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +6 -2
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +36 -26
- package/src/runtime/agent/orchestrator/tools/builtin/git-worktree-tool.mjs +3 -5
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +58 -20
- package/src/runtime/agent/orchestrator/tools/builtin/runtime-capabilities.mjs +20 -15
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +96 -20
- package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +59 -10
- package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
- package/src/runtime/agent/orchestrator/tools/lib/native-spawn-client.mjs +99 -2
- package/src/runtime/agent/orchestrator/tools/lib/owned-shell-trees.mjs +2 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +103 -13
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +3 -1
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +49 -15
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +45 -27
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +34 -10
- package/src/runtime/agent/orchestrator/tools/lib/shell-warm-standby.mjs +2 -0
- package/src/runtime/agent/orchestrator/tools/lib/wait-until-fixture.mjs +26 -0
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +7 -2
- package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +13 -13
- package/src/runtime/channels/lib/whisper-port.mjs +19 -10
- package/src/runtime/channels/lib/whisper-server.mjs +10 -1
- package/src/runtime/connectors/connector-accounts-mcp.mjs +236 -103
- package/src/runtime/connectors/gmail-app-password.mjs +3 -3
- package/src/runtime/explore/explorer.mjs +93 -0
- package/src/runtime/explore/tool-defs.mjs +35 -0
- package/src/runtime/explore/tool.mjs +123 -0
- package/src/runtime/memory/index.mjs +4 -0
- package/src/runtime/memory/lib/embedding-provider.mjs +4 -1
- package/src/runtime/memory/lib/embedding-worker.mjs +4 -0
- package/src/runtime/office/quality/assurance-structure-docx.mjs +1 -1
- package/src/runtime/shared/agent-route-config.mjs +17 -2
- package/src/runtime/shared/atomic-file.mjs +103 -2
- package/src/runtime/shared/background-tasks.mjs +15 -6
- package/src/runtime/shared/connector-accounts.mjs +5 -5
- package/src/runtime/shared/connector-catalog.d.mts +11 -4
- package/src/runtime/shared/connector-catalog.mjs +60 -52
- package/src/runtime/shared/custom-provider-keys.mjs +20 -0
- package/src/runtime/shared/file-has-data.mjs +26 -2
- package/src/runtime/shared/file-lock.mjs +13 -15
- package/src/runtime/shared/git-launch.d.mts +9 -0
- package/src/runtime/shared/git-launch.mjs +213 -0
- package/src/runtime/shared/git-runner-worker.mjs +2 -1
- package/src/runtime/shared/llm/cost.mjs +6 -1
- package/src/runtime/shared/llm/http-agent.mjs +313 -29
- package/src/runtime/shared/llm/model-catalog-projection.mjs +3 -2
- package/src/runtime/shared/llm/model-catalog.mjs +46 -6
- package/src/runtime/shared/llm/provider-catalog-registry.mjs +3 -0
- package/src/runtime/shared/llm/system-proxy.mjs +452 -0
- package/src/runtime/shared/provider-accounts.mjs +52 -2
- package/src/runtime/shared/staged-install-worker.mjs +5 -0
- package/src/runtime/shared/staged-update.mjs +47 -2
- package/src/runtime/shared/tool-surface.mjs +110 -36
- package/src/runtime/shared/tool-work-units.mjs +4 -0
- package/src/runtime/shared/turn-worktree-snapshot.mjs +414 -54
- package/src/runtime/shared/worktrees/activity-gate.mjs +215 -318
- package/src/runtime/shared/worktrees/activity-ledger-worker.mjs +56 -0
- package/src/runtime/shared/worktrees/activity-ledger.mjs +391 -0
- package/src/runtime/shared/worktrees/branch-management.mjs +9 -3
- package/src/runtime/shared/worktrees/git.mjs +57 -0
- package/src/runtime/shared/worktrees/manager.mjs +205 -137
- package/src/runtime/tidy/install.mjs +95 -15
- package/src/runtime/tidy/languages.mjs +17 -15
- package/src/runtime/tidy/process.mjs +7 -4
- package/src/runtime/tidy/resolve.mjs +19 -16
- package/src/runtime/tidy/runners/biome.mjs +3 -3
- package/src/runtime/tidy/tool.mjs +1 -1
- package/src/runtime/tidy/worktree.mjs +10 -6
- package/src/runtime/visualize-bridge/client.mjs +4 -1
- package/src/runtime/visualize-bridge/tool-defs.mjs +7 -2
- package/src/runtime/web-search/index.mjs +1 -1
- package/src/session-runtime/agent-task-sessions.mjs +410 -353
- package/src/session-runtime/boot/tools.mjs +2 -0
- package/src/session-runtime/bot-status.mjs +103 -103
- package/src/session-runtime/connector-merge-migration.mjs +18 -15
- package/src/session-runtime/conversation-import/discovery.mjs +159 -40
- package/src/session-runtime/conversation-import/service.mjs +9 -3
- package/src/session-runtime/handoff-attachments.mjs +1 -1
- package/src/session-runtime/held-requests.mjs +3 -1
- package/src/session-runtime/internal-tool-executor/feature-tools.mjs +2 -0
- package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +8 -0
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +143 -116
- package/src/session-runtime/lifecycle/teardown/session-close.mjs +6 -1
- package/src/session-runtime/lifecycle/teardown.mjs +1 -1
- package/src/session-runtime/mcp-glue/server-catalog.mjs +16 -10
- package/src/session-runtime/mcp-glue/server-input.mjs +4 -1
- package/src/session-runtime/mixy-heartbeat.mjs +1 -1
- package/src/session-runtime/provider-auth/login.mjs +2 -2
- package/src/session-runtime/resource-mcp-api.mjs +98 -35
- package/src/session-runtime/resource-mcp-connector-accounts.mjs +44 -31
- package/src/session-runtime/resource-mcp-secrets.mjs +28 -11
- package/src/session-runtime/resource-mcp-servers.mjs +5 -4
- package/src/session-runtime/services/agent-tool/send-flow.mjs +10 -2
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +8 -3
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +4 -1
- package/src/session-runtime/services/agent-watchdog-registry.mjs +32 -4
- package/src/session-runtime/services/channel-worker/daemon-spawn.mjs +2 -0
- package/src/session-runtime/services/daemon-candidate.mjs +4 -1
- package/src/session-runtime/services/memory-runtime-proxy/daemon-spawn.mjs +4 -0
- package/src/session-runtime/services/plugin-admin.mjs +10 -6
- package/src/session-runtime/services/provider-admin.mjs +281 -10
- package/src/session-runtime/session-turn-api.mjs +2 -0
- package/src/session-runtime/settings-builtin-tools-api.mjs +4 -1
- package/src/session-runtime/settings-system-api.mjs +1 -1
- package/src/session-runtime/setup-tool/agent-settings-actions.mjs +13 -3
- package/src/session-runtime/setup-tool/connector-widen-approval.mjs +96 -0
- package/src/session-runtime/setup-tool/executor.mjs +6 -2
- package/src/session-runtime/setup-tool/tool-defs.mjs +2 -1
- package/src/session-runtime/turn/agent-ops.mjs +23 -0
- package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +49 -11
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +10 -1
- package/src/session-runtime/workspace/activity-guards.mjs +176 -0
- package/src/session-runtime/workspace/session-view.mjs +149 -0
- package/src/session-runtime/workspace/side-checkouts.mjs +203 -0
- package/src/session-runtime/workspace/transition-runner.mjs +188 -0
- package/src/session-runtime/workspace/transitions.mjs +108 -1066
- package/src/session-runtime/workspace/workspace-merge.mjs +132 -0
- package/src/session-runtime/workspace/worktree-intents.mjs +242 -0
- package/src/session-runtime/workspace/worktree-maintenance.mjs +80 -0
- package/src/session-runtime/workspace/worktree-setup.mjs +85 -0
- package/src/session-runtime/workspace/worktree-tool.mjs +54 -54
- package/src/standalone/daemon-desktop-runtime.mjs +2 -0
- package/src/standalone/daemon-session-control.mjs +151 -136
- package/src/standalone/daemon.mjs +7 -0
- package/src/standalone/desktop-service-registry.mjs +9 -0
- package/src/standalone/local-session-runtime.mjs +5 -1
- package/src/standalone/session-client/daemon-unavailable.mjs +3 -0
- package/src/standalone/session-client.mjs +5 -1
- package/src/standalone/session-frame-stream.mjs +83 -11
- package/src/standalone/session-protocol.mjs +4 -0
- package/src/standalone/session-service/agent-tree.mjs +45 -9
- package/src/standalone/session-service/projection/transcript-window.mjs +700 -64
- package/src/standalone/session-service/session-calls/session-views.mjs +160 -104
- package/src/standalone/session-service/stored-reader.mjs +127 -40
- package/src/tui/App.jsx +154 -164
- package/src/tui/app/app-view/floating-panel.jsx +3 -0
- package/src/tui/app/app-view/text-entry-labels.mjs +1 -0
- package/src/tui/app/clipboard.mjs +21 -10
- package/src/tui/app/prompt-handlers/use-prompt-history-nav.mjs +1 -1
- package/src/tui/app/prompt-handlers/use-prompt-interrupt.mjs +3 -0
- package/src/tui/app/prompt-submit/provider-prompts.mjs +3 -1
- package/src/tui/app/provider-setup/api-key-actions.mjs +31 -1
- package/src/tui/app/provider-setup/oauth-actions.mjs +25 -6
- package/src/tui/app/provider-setup-picker.mjs +20 -13
- package/src/tui/app/shell-layout/row-budgets.mjs +12 -10
- package/src/tui/app/slash-commands.mjs +1 -0
- package/src/tui/app/slash-dispatch/session-commands.mjs +46 -0
- package/src/tui/app/slash-dispatch.mjs +1 -1
- package/src/tui/app/use-btw-panel.mjs +29 -0
- package/src/tui/app/use-context-panel-refresh.mjs +31 -0
- package/src/tui/app/use-model-catalog-cache.mjs +13 -10
- package/src/tui/app/use-mouse-input.mjs +11 -0
- package/src/tui/app/use-onboarding-start.mjs +8 -3
- package/src/tui/app/use-panel-transition.mjs +10 -1
- package/src/tui/app/use-pasted-buffers.mjs +28 -20
- package/src/tui/app/use-prompt-draft-flow.mjs +7 -0
- package/src/tui/app/use-prompt-layout-rows.mjs +3 -3
- package/src/tui/app/use-prompt-queue-history.mjs +3 -2
- package/src/tui/app/use-selection-focus.mjs +11 -2
- package/src/tui/app/use-selection-geometry.mjs +18 -9
- package/src/tui/app/use-selection-paint.mjs +4 -4
- package/src/tui/app/use-selection-stitch.mjs +3 -3
- package/src/tui/app/use-slash-palette.mjs +62 -0
- package/src/tui/app/use-terminal-chrome.mjs +2 -2
- package/src/tui/app/use-transcript-activity.mjs +47 -32
- package/src/tui/app/use-transcript-follow.mjs +12 -4
- package/src/tui/app/use-transcript-scroll.mjs +46 -17
- package/src/tui/app/use-transcript-swap-reset.mjs +27 -0
- package/src/tui/app/use-transcript-window/geometry.mjs +19 -5
- package/src/tui/app/use-transcript-window/instance-state.mjs +4 -0
- package/src/tui/app/use-transcript-window/selection-shift.mjs +5 -1
- package/src/tui/app/use-transcript-window.mjs +21 -11
- package/src/tui/app/use-tui-ready.mjs +18 -0
- package/src/tui/app/use-welcome-prompt-hint.mjs +5 -0
- package/src/tui/app/use-workflow-tab-cycle.mjs +5 -3
- package/src/tui/components/Picker.jsx +27 -3
- package/src/tui/components/SignInUrl.jsx +68 -0
- package/src/tui/components/TextEntryPanel.jsx +76 -46
- package/src/tui/components/sign-in-url-layout.mjs +24 -0
- package/src/tui/dist/index.mjs +1896 -1341
- package/src/tui/session/goal-turn-state.mjs +6 -2
- package/src/tui/session/session-api/controls.mjs +4 -0
- package/src/tui/session/session-api/extensions.mjs +8 -0
- package/src/tui/session/session-api/intake/abort.mjs +2 -1
- package/src/tui/session/session-api/intake.mjs +2 -0
- package/src/tui/session/session-api/integrations.mjs +2 -2
- package/src/tui/session/session-api/routes-agent-definitions.mjs +1 -0
- package/src/tui/session/session-api/settings.mjs +2 -2
- package/src/tui/session/transcript-spill/spill-writer.mjs +15 -0
- package/src/tui/session/transcript-spill.mjs +92 -4
- package/src/tui/session/transcript-store.mjs +2 -0
- package/src/defaults/skills/skill-creator/references/source-review.md +0 -94
|
@@ -1,31 +1,20 @@
|
|
|
1
1
|
# Test-suite slop
|
|
2
2
|
|
|
3
|
-
Read this when tests are in scope
|
|
4
|
-
|
|
3
|
+
Read this when tests are in scope. Pruning rules and the test workflow belong
|
|
4
|
+
to the `test-suite` skill (Prune); this file only adds the cleanup gate.
|
|
5
5
|
|
|
6
|
-
First
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
First tell redundant coverage from removing a supported behavior. Keep
|
|
7
|
+
distinct observable success, rejection, error, and compatibility cases. Before
|
|
8
|
+
removing a behavior and its tests, require independent evidence from current
|
|
9
|
+
requirements, real callers, or a specification; a test existing only for that
|
|
10
|
+
branch is neither proof of necessity nor permission to delete it. A closed
|
|
11
|
+
loop (a fallback justified by its test, a test justified by the fallback) is
|
|
12
|
+
no evidence either; unresolved intent blocks deletion.
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
distinct regressions, and a permutation only where it marks a real boundary.
|
|
20
|
-
- **Tautological assertions** — assertions that cannot fail: `assert True`,
|
|
21
|
-
two equal literals compared, a state the fixture itself guarantees, a mock
|
|
22
|
-
verifying the setup that fed it. Delete, or rewrite against the observable
|
|
23
|
-
result.
|
|
24
|
-
- **Verification theater** — checksums, receipts, validators, or
|
|
25
|
-
recomputation where producer and verifier share the same information and
|
|
26
|
-
failure domain. They cannot fail independently; delete.
|
|
27
|
-
- **Closed justification loop** — a fallback exists because a test exercises
|
|
28
|
-
it and the test exists because the fallback was added. Neither is evidence
|
|
29
|
-
for deleting the pair. Apply the independent-evidence gate above first;
|
|
30
|
-
unresolved intent blocks deletion. A distinct externally observable
|
|
31
|
-
rejection, error, or compatibility test is not a loop; preserve its coverage.
|
|
14
|
+
Delete a test only when it is dominated (same branch and result as a stronger
|
|
15
|
+
test), tautological (cannot fail), a permutation crossing no new branch, or
|
|
16
|
+
verification theater (verifier and producer share one failure domain), or it
|
|
17
|
+
asserts a removal, a restated constant or copied production logic, and name
|
|
18
|
+
the test that still owns the contract. Deleting a contract test needs the
|
|
19
|
+
user's approval. Merging into an owner, rewriting source-text assertions, and
|
|
20
|
+
everything else follows `test-suite`.
|
|
@@ -182,13 +182,21 @@ GNOME with Mixdog's own shell extension, which the app sets up); prefer accessib
|
|
|
182
182
|
the turn, like any session exit, releases what the session pressed, and a
|
|
183
183
|
failed release is reported rather than assumed.
|
|
184
184
|
Execution stops at the first failure or when the target transitions
|
|
185
|
-
(popup, dialog, window change
|
|
185
|
+
(a popup, dialog, or window change present at the settle check, about
|
|
186
|
+
150 ms after the input) and returns one fresh observation. An act
|
|
186
187
|
whose first action uses a `ref` returns accessibility only (`ax`) unless
|
|
187
188
|
that tree is unusable; pass `observe: "state"` when the next step needs
|
|
188
189
|
pixels, a `frame_id`, or visual confirmation.
|
|
189
190
|
4. Read the returned observation, including any successor target. It replaces
|
|
190
191
|
the pre-action state: continue from it without another capture when usable.
|
|
191
192
|
Recapture only when evidence is missing, failed, expired, or invalidated.
|
|
193
|
+
That observation shows one window, never the others on screen. Windows the
|
|
194
|
+
settle check saw are in `window_transition.opened_windows`; a window that
|
|
195
|
+
opened later is named by the next command's
|
|
196
|
+
`windows_opened_since_last_action` (since, not necessarily caused by, your
|
|
197
|
+
last action). After a click that may open a popup (sign-in, OAuth,
|
|
198
|
+
connect, continue, authorize), run `list` (kind windows, `query` with the
|
|
199
|
+
app or expected title) before concluding nothing opened.
|
|
192
200
|
|
|
193
201
|
Prefer semantic `ref` > SOM/OCR `element` > coordinates. When pixels are
|
|
194
202
|
reported `pixel_unavailable`, coordinate input fails closed but fresh semantic
|
|
@@ -253,7 +261,9 @@ and a trailing short `wait`; verify with `verify` rather than another capture.
|
|
|
253
261
|
`alt+f4` is blocked in every delivery mode. To close a window, obtain the
|
|
254
262
|
user's go-ahead and use `window` with the `close` operation.
|
|
255
263
|
|
|
256
|
-
**Dialog appears mid-sequence** — `act` halts
|
|
264
|
+
**Dialog appears mid-sequence** — `act` halts when the settle check sees it; a
|
|
265
|
+
dialog that opens later arrives in the next command's
|
|
266
|
+
`windows_opened_since_last_action`. Use its successful
|
|
257
267
|
successor observation to handle the dialog; capture only if it is unusable.
|
|
258
268
|
Returning to the original window also requires a fresh observation, whether
|
|
259
269
|
returned by the action or obtained through `capture`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: goal-management
|
|
3
3
|
description: Manage the task list of approved work carried across turns, its progress, approvals, and completion.
|
|
4
|
-
when_to_use: '
|
|
4
|
+
when_to_use: 'Goal requests or approved multi-turn work in progress; not one-turn tasks or recurring schedules.'
|
|
5
5
|
dependencies:
|
|
6
6
|
tools:
|
|
7
7
|
- type: tool
|
|
@@ -52,7 +52,7 @@ Read this when choosing a `setup` mutation.
|
|
|
52
52
|
| Permanently delete confirmed, unchanged, unused model files | `delete_local_model` |
|
|
53
53
|
| TUI system shell | `set_system_shell` |
|
|
54
54
|
| Automatic updates | `set_auto_update` |
|
|
55
|
-
| Mixy's heartbeat: a regular check that wakes her only when something needs attention and only after the user had no operation for 30 minutes (no sent turn, no keyboard/mouse/wheel input in the desktop app's windows) (
|
|
55
|
+
| Mixy's heartbeat: a regular check that wakes her only when something needs attention and only after the user had no operation for 30 minutes (no sent turn, no keyboard/mouse/wheel input in the desktop app's windows) (off by default; `status features` reports `heartbeat.enabled` and `heartbeat.intervalMinutes`) | `set_heartbeat_enabled` |
|
|
56
56
|
| How often the heartbeat checks: `minutes` 30, 60 (default), 120 or 240; applies from the next tick, counted from the last check | `set_heartbeat_interval` |
|
|
57
57
|
| Bots' emoji reactions on the user's messages (on by default; `status features` reports `reactions.enabled`) | `set_reactions_enabled` |
|
|
58
58
|
| Worktree defaults: new tasks on the current branch or a new worktree, branch prefix, large-repository warning size, automatic cleanup | `set_worktree_settings` |
|
|
@@ -103,7 +103,7 @@ Read this when choosing a `setup` mutation.
|
|
|
103
103
|
| Read a Project's connector switches | `read_project_connectors` |
|
|
104
104
|
| An agent's action permission (block/ask per action kind) | `set_agent_permission` |
|
|
105
105
|
| Switch a connector off for an agent / a Project (switching it back on is done in the desktop app) | `set_agent_connector`, `set_project_connector` |
|
|
106
|
-
| One connector tool of an agent to needs_approval or
|
|
106
|
+
| One connector tool of an agent to disabled, needs_approval or auto (a widening asks the user on an approval card) | `set_agent_connector_tool` |
|
|
107
107
|
| Bring back an archived bot or agent (`definitionKind: "agent"`) | `restore_definition` |
|
|
108
108
|
| Bot display order (Bots page, Sessions bot section; `status agents` `botOrder`) | `set_bot_order` |
|
|
109
109
|
|
|
@@ -344,10 +344,16 @@ markers are read with `status desktop`.
|
|
|
344
344
|
`status mcp` afterwards. `add_mcp_server` with the service URL is not the
|
|
345
345
|
sign-in flow; never use it for a catalog service.
|
|
346
346
|
- Agent permissions and connector switches change only toward less: `block`
|
|
347
|
-
or `ask`, a connector off, a tool to `
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
347
|
+
or `ask`, a connector off, a tool to `disabled`. An action permission
|
|
348
|
+
`allow` or a connector back on is refused ("make it on the desktop");
|
|
349
|
+
`open agents` and let the person do it. One connector tool's widening
|
|
350
|
+
(`set_agent_connector_tool` from `disabled` to `needs_approval`/`auto`, or
|
|
351
|
+
`needs_approval` to `auto`) asks the user instead: the call waits on an
|
|
352
|
+
approval card (on the desktop or a paired phone) offering "needs approval",
|
|
353
|
+
"auto" or Deny, whatever level was asked; the result's `permission` and
|
|
354
|
+
`note` say what was applied. Only a press on that card decides it: never
|
|
355
|
+
treat a chat reply as approval, and ask again for each change. Payments and
|
|
356
|
+
permanent deletes always ask regardless.
|
|
351
357
|
Connector ids are MCP server names from `read_agent_settings`; a bot's
|
|
352
358
|
thread changes only its own bot.
|
|
353
359
|
- `enable_plugin_mcp` turns every server the plugin declares back on and
|
|
@@ -134,8 +134,8 @@ The setup tool does not mutate:
|
|
|
134
134
|
browser action confirmations (`MIXDOG_BROWSER_CONFIRM_ACTIONS`,
|
|
135
135
|
`MIXDOG_BROWSER_CONFIRM_SUBMIT`; see the browser-use skill);
|
|
136
136
|
- widening an agent's authority: action permission `allow`, a connector
|
|
137
|
-
switched back on for an agent or Project
|
|
138
|
-
|
|
137
|
+
switched back on for an agent or Project (setup only narrows them; a
|
|
138
|
+
single connector tool's widening asks the user on an approval card);
|
|
139
139
|
- the remote-access switch ("Use this PC from other devices") and this PC's
|
|
140
140
|
name: turning it off from a phone would cut that phone off mid-session;
|
|
141
141
|
- permanently deleting an archived bot (Sessions → Archived → delete);
|
|
@@ -106,6 +106,8 @@ done. Take the first open step, explain it in a sentence or two, ask, then act.
|
|
|
106
106
|
provider. Give the reason in one line: a different model family catches what
|
|
107
107
|
the main one misses. Suggest turning on the Maintainer with
|
|
108
108
|
a cheap model at the lowest effort; it also decides turns in group rooms.
|
|
109
|
+
Offer Explore the same way, from its own picks: a cheap model that
|
|
110
|
+
searches code for the Lead in separate parallel sessions.
|
|
109
111
|
A pick may carry `plans`: when the Lead provider's plan (`plan` in
|
|
110
112
|
`status providers`) is listed there, recommend that model instead. A null or
|
|
111
113
|
unlisted plan keeps the pick as is; never fail on an unknown plan.
|
|
@@ -152,8 +154,9 @@ step; do not insist.
|
|
|
152
154
|
does part of a task. Users add their own on the Workflows page with the
|
|
153
155
|
"에이전트 +" button. Bots are people-facing; agents work behind a task.
|
|
154
156
|
- Default agents (기본 에이전트): built-in helpers listed on Workflows, such as
|
|
155
|
-
Web Search (runs the web search tool)
|
|
156
|
-
session titles). They need a model
|
|
157
|
+
Web Search (runs the web search tool), the Maintainer (memory upkeep and
|
|
158
|
+
session titles) and Explore (code search for the Lead). They need a model
|
|
159
|
+
route to work.
|
|
157
160
|
- Agent mode (에이전트 모드): a coding work session run by Lead and agents.
|
|
158
161
|
A session a bot starts for a job is an agent task session (에이전트 작업
|
|
159
162
|
세션); others are just sessions (세션).
|
|
@@ -328,6 +328,19 @@
|
|
|
328
328
|
"source": "https://www.benchleader.com/best/llm-for-coding"
|
|
329
329
|
}
|
|
330
330
|
]
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"roles": ["Explore"],
|
|
334
|
+
"note": "Measured on Mixdog code searches: Haiku found the key locations; cheaper models tested missed about half on unseen questions. With no qualifying pick, leave Explore off.",
|
|
335
|
+
"picks": [
|
|
336
|
+
{
|
|
337
|
+
"provider": "Anthropic",
|
|
338
|
+
"model": "Claude Haiku 5.5",
|
|
339
|
+
"effort": "low",
|
|
340
|
+
"checkedAt": "2026-10-29",
|
|
341
|
+
"source": "https://benchlm.ai/anthropic/api-pricing"
|
|
342
|
+
}
|
|
343
|
+
]
|
|
331
344
|
}
|
|
332
345
|
]
|
|
333
346
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-creator
|
|
3
|
-
description: Create, audit, repair, or simplify
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
##
|
|
21
|
+
## Pick the deliverable
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
| Need | Best home |
|
|
23
|
+
| Need | Home |
|
|
24
24
|
|---|---|
|
|
25
|
-
| Reusable judgement or a repeatable procedure
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
| A
|
|
29
|
-
| A
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
##
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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.
|