oh-my-claude-sisyphus 3.8.8 → 3.8.10
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/agents/architect.md +78 -0
- package/agents/explore.md +15 -0
- package/agents/qa-tester.md +159 -1
- package/agents/writer.md +20 -0
- package/commands/help.md +1 -1
- package/commands/omc-setup.md +1 -1
- package/dist/__tests__/agent-registry.test.d.ts +2 -0
- package/dist/__tests__/agent-registry.test.d.ts.map +1 -0
- package/dist/__tests__/agent-registry.test.js +39 -0
- package/dist/__tests__/agent-registry.test.js.map +1 -0
- package/dist/__tests__/hooks.test.js +6 -6
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/load-agent-prompt.test.d.ts +2 -0
- package/dist/__tests__/load-agent-prompt.test.d.ts.map +1 -0
- package/dist/__tests__/load-agent-prompt.test.js +68 -0
- package/dist/__tests__/load-agent-prompt.test.js.map +1 -0
- package/dist/__tests__/model-routing.test.js +5 -34
- package/dist/__tests__/model-routing.test.js.map +1 -1
- package/dist/agents/analyst.d.ts.map +1 -1
- package/dist/agents/analyst.js +2 -77
- package/dist/agents/analyst.js.map +1 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +3 -148
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/coordinator-deprecated.d.ts +18 -0
- package/dist/agents/coordinator-deprecated.d.ts.map +1 -0
- package/dist/agents/coordinator-deprecated.js +34 -0
- package/dist/agents/coordinator-deprecated.js.map +1 -0
- package/dist/agents/critic.d.ts.map +1 -1
- package/dist/agents/critic.js +2 -90
- package/dist/agents/critic.js.map +1 -1
- package/dist/agents/definitions.d.ts +2 -0
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +3 -32
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/designer.d.ts.map +1 -1
- package/dist/agents/designer.js +2 -73
- package/dist/agents/designer.js.map +1 -1
- package/dist/agents/executor.d.ts +1 -0
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +3 -56
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/explore.d.ts.map +1 -1
- package/dist/agents/explore.js +2 -64
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/index.d.ts +4 -3
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +6 -3
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +2 -157
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/qa-tester.d.ts.map +1 -1
- package/dist/agents/qa-tester.js +2 -324
- package/dist/agents/qa-tester.js.map +1 -1
- package/dist/agents/researcher.d.ts.map +1 -1
- package/dist/agents/researcher.js +2 -65
- package/dist/agents/researcher.js.map +1 -1
- package/dist/agents/scientist.d.ts.map +1 -1
- package/dist/agents/scientist.js +2 -293
- package/dist/agents/scientist.js.map +1 -1
- package/dist/agents/utils.d.ts +7 -0
- package/dist/agents/utils.d.ts.map +1 -1
- package/dist/agents/utils.js +50 -0
- package/dist/agents/utils.js.map +1 -1
- package/dist/agents/vision.d.ts.map +1 -1
- package/dist/agents/vision.js +2 -32
- package/dist/agents/vision.js.map +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +2 -171
- package/dist/agents/writer.js.map +1 -1
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/index.js +0 -0
- package/dist/features/model-routing/index.d.ts +1 -1
- package/dist/features/model-routing/index.d.ts.map +1 -1
- package/dist/features/model-routing/index.js +1 -1
- package/dist/features/model-routing/index.js.map +1 -1
- package/dist/features/model-routing/router.d.ts +1 -15
- package/dist/features/model-routing/router.d.ts.map +1 -1
- package/dist/features/model-routing/router.js +2 -33
- package/dist/features/model-routing/router.js.map +1 -1
- package/dist/features/model-routing/rules.d.ts.map +1 -1
- package/dist/features/model-routing/rules.js +0 -8
- package/dist/features/model-routing/rules.js.map +1 -1
- package/dist/features/model-routing/types.d.ts +1 -2
- package/dist/features/model-routing/types.d.ts.map +1 -1
- package/dist/features/model-routing/types.js +2 -6
- package/dist/features/model-routing/types.js.map +1 -1
- package/dist/features/task-decomposer/index.d.ts +1 -1
- package/dist/features/task-decomposer/index.d.ts.map +1 -1
- package/dist/features/task-decomposer/index.js +5 -8
- package/dist/features/task-decomposer/index.js.map +1 -1
- package/dist/features/task-decomposer/types.d.ts +4 -4
- package/dist/features/task-decomposer/types.d.ts.map +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +10 -2
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +14 -12
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/todo-continuation/index.d.ts +9 -0
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
- package/dist/hooks/todo-continuation/index.js +19 -0
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/hooks/ultrapilot/decomposer.d.ts +1 -1
- package/dist/hooks/ultrapilot/decomposer.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/docs/CLAUDE.md +44 -4
- package/docs/FEATURES.md +1 -1
- package/docs/MIGRATION.md +5 -5
- package/docs/REFERENCE.md +6 -2
- package/package.json +1 -1
- package/scripts/persistent-mode.mjs +27 -12
- package/skills/help/SKILL.md +1 -1
- package/skills/omc-setup/SKILL.md +1 -1
- package/templates/hooks/persistent-mode.mjs +26 -12
- package/templates/hooks/stop-continuation.mjs +30 -0
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
- package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
- package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
- package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/config.test.js +0 -37
- package/dist/__tests__/learned-skills/config.test.js.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.js +0 -99
- package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.js +0 -59
- package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.js +0 -69
- package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.js +0 -81
- package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.js +0 -85
- package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
- package/dist/agents/codex-agents.d.ts +0 -20
- package/dist/agents/codex-agents.d.ts.map +0 -1
- package/dist/agents/codex-agents.js +0 -36
- package/dist/agents/codex-agents.js.map +0 -1
- package/dist/agents/coordinator.d.ts +0 -11
- package/dist/agents/coordinator.d.ts.map +0 -1
- package/dist/agents/coordinator.js +0 -115
- package/dist/agents/coordinator.js.map +0 -1
- package/dist/agents/document-writer.d.ts +0 -11
- package/dist/agents/document-writer.d.ts.map +0 -1
- package/dist/agents/document-writer.js +0 -209
- package/dist/agents/document-writer.js.map +0 -1
- package/dist/agents/frontend-engineer.d.ts +0 -11
- package/dist/agents/frontend-engineer.d.ts.map +0 -1
- package/dist/agents/frontend-engineer.js +0 -115
- package/dist/agents/frontend-engineer.js.map +0 -1
- package/dist/agents/librarian.d.ts +0 -12
- package/dist/agents/librarian.d.ts.map +0 -1
- package/dist/agents/librarian.js +0 -103
- package/dist/agents/librarian.js.map +0 -1
- package/dist/agents/metis.d.ts +0 -12
- package/dist/agents/metis.d.ts.map +0 -1
- package/dist/agents/metis.js +0 -117
- package/dist/agents/metis.js.map +0 -1
- package/dist/agents/momus.d.ts +0 -12
- package/dist/agents/momus.d.ts.map +0 -1
- package/dist/agents/momus.js +0 -128
- package/dist/agents/momus.js.map +0 -1
- package/dist/agents/multimodal-looker.d.ts +0 -11
- package/dist/agents/multimodal-looker.d.ts.map +0 -1
- package/dist/agents/multimodal-looker.js +0 -70
- package/dist/agents/multimodal-looker.js.map +0 -1
- package/dist/agents/oracle.d.ts +0 -13
- package/dist/agents/oracle.d.ts.map +0 -1
- package/dist/agents/oracle.js +0 -191
- package/dist/agents/oracle.js.map +0 -1
- package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
- package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
- package/dist/agents/orchestrator-sisyphus.js +0 -115
- package/dist/agents/orchestrator-sisyphus.js.map +0 -1
- package/dist/agents/prometheus.d.ts +0 -12
- package/dist/agents/prometheus.d.ts.map +0 -1
- package/dist/agents/prometheus.js +0 -195
- package/dist/agents/prometheus.js.map +0 -1
- package/dist/agents/sisyphus-junior.d.ts +0 -12
- package/dist/agents/sisyphus-junior.d.ts.map +0 -1
- package/dist/agents/sisyphus-junior.js +0 -93
- package/dist/agents/sisyphus-junior.js.map +0 -1
- package/dist/cli/components/CostDashboard.d.ts +0 -15
- package/dist/cli/components/CostDashboard.d.ts.map +0 -1
- package/dist/cli/components/CostDashboard.js +0 -15
- package/dist/cli/components/CostDashboard.js.map +0 -1
- package/dist/cli/components/LiveStats.d.ts +0 -16
- package/dist/cli/components/LiveStats.d.ts.map +0 -1
- package/dist/cli/components/LiveStats.js +0 -16
- package/dist/cli/components/LiveStats.js.map +0 -1
- package/dist/cli/components/SessionBrowser.d.ts +0 -14
- package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
- package/dist/cli/components/SessionBrowser.js +0 -14
- package/dist/cli/components/SessionBrowser.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -21
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -21
- package/dist/cli/tui.js.map +0 -1
- package/dist/hooks/autopilot/signals.d.ts +0 -20
- package/dist/hooks/autopilot/signals.d.ts.map +0 -1
- package/dist/hooks/autopilot/signals.js +0 -75
- package/dist/hooks/autopilot/signals.js.map +0 -1
- package/dist/hooks/autopilot/summary.d.ts +0 -27
- package/dist/hooks/autopilot/summary.d.ts.map +0 -1
- package/dist/hooks/autopilot/summary.js +0 -160
- package/dist/hooks/autopilot/summary.js.map +0 -1
- package/dist/hooks/autopilot/transition.d.ts +0 -39
- package/dist/hooks/autopilot/transition.d.ts.map +0 -1
- package/dist/hooks/autopilot/transition.js +0 -216
- package/dist/hooks/autopilot/transition.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
- package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.js +0 -201
- package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
- package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.js +0 -34
- package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
- package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
- package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
- package/dist/hooks/edit-error-recovery/index.js +0 -89
- package/dist/hooks/edit-error-recovery/index.js.map +0 -1
- package/dist/hooks/github-auto-responder/classifier.d.ts +0 -43
- package/dist/hooks/github-auto-responder/classifier.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/classifier.js +0 -150
- package/dist/hooks/github-auto-responder/classifier.js.map +0 -1
- package/dist/hooks/github-auto-responder/config.d.ts +0 -109
- package/dist/hooks/github-auto-responder/config.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/config.js +0 -69
- package/dist/hooks/github-auto-responder/config.js.map +0 -1
- package/dist/hooks/github-auto-responder/constants.d.ts +0 -45
- package/dist/hooks/github-auto-responder/constants.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/constants.js +0 -60
- package/dist/hooks/github-auto-responder/constants.js.map +0 -1
- package/dist/hooks/github-auto-responder/filters.d.ts +0 -95
- package/dist/hooks/github-auto-responder/filters.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/filters.js +0 -174
- package/dist/hooks/github-auto-responder/filters.js.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.d.ts +0 -65
- package/dist/hooks/github-auto-responder/github-client.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.js +0 -128
- package/dist/hooks/github-auto-responder/github-client.js.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.d.ts +0 -68
- package/dist/hooks/github-auto-responder/idempotency.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.js +0 -147
- package/dist/hooks/github-auto-responder/idempotency.js.map +0 -1
- package/dist/hooks/github-auto-responder/index.d.ts +0 -140
- package/dist/hooks/github-auto-responder/index.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/index.js +0 -145
- package/dist/hooks/github-auto-responder/index.js.map +0 -1
- package/dist/hooks/github-auto-responder/persona.d.ts +0 -40
- package/dist/hooks/github-auto-responder/persona.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/persona.js +0 -99
- package/dist/hooks/github-auto-responder/persona.js.map +0 -1
- package/dist/hooks/github-auto-responder/responder.d.ts +0 -122
- package/dist/hooks/github-auto-responder/responder.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/responder.js +0 -264
- package/dist/hooks/github-auto-responder/responder.js.map +0 -1
- package/dist/hooks/github-auto-responder/server.d.ts +0 -140
- package/dist/hooks/github-auto-responder/server.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/server.js +0 -301
- package/dist/hooks/github-auto-responder/server.js.map +0 -1
- package/dist/hooks/github-auto-responder/signature.d.ts +0 -34
- package/dist/hooks/github-auto-responder/signature.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/signature.js +0 -79
- package/dist/hooks/github-auto-responder/signature.js.map +0 -1
- package/dist/hooks/github-auto-responder/templates.d.ts +0 -16
- package/dist/hooks/github-auto-responder/templates.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/templates.js +0 -93
- package/dist/hooks/github-auto-responder/templates.js.map +0 -1
- package/dist/hooks/github-auto-responder/types.d.ts +0 -246
- package/dist/hooks/github-auto-responder/types.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/types.js +0 -7
- package/dist/hooks/github-auto-responder/types.js.map +0 -1
- package/dist/hooks/learned-skills/config.d.ts +0 -53
- package/dist/hooks/learned-skills/config.d.ts.map +0 -1
- package/dist/hooks/learned-skills/config.js +0 -103
- package/dist/hooks/learned-skills/config.js.map +0 -1
- package/dist/hooks/learned-skills/constants.d.ts +0 -24
- package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
- package/dist/hooks/learned-skills/constants.js +0 -26
- package/dist/hooks/learned-skills/constants.js.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.js +0 -83
- package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
- package/dist/hooks/learned-skills/detector.d.ts +0 -30
- package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detector.js +0 -150
- package/dist/hooks/learned-skills/detector.js.map +0 -1
- package/dist/hooks/learned-skills/finder.d.ts +0 -21
- package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
- package/dist/hooks/learned-skills/finder.js +0 -117
- package/dist/hooks/learned-skills/finder.js.map +0 -1
- package/dist/hooks/learned-skills/index.d.ts +0 -62
- package/dist/hooks/learned-skills/index.d.ts.map +0 -1
- package/dist/hooks/learned-skills/index.js +0 -137
- package/dist/hooks/learned-skills/index.js.map +0 -1
- package/dist/hooks/learned-skills/loader.d.ts +0 -20
- package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
- package/dist/hooks/learned-skills/loader.js +0 -107
- package/dist/hooks/learned-skills/loader.js.map +0 -1
- package/dist/hooks/learned-skills/parser.d.ts +0 -21
- package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
- package/dist/hooks/learned-skills/parser.js +0 -190
- package/dist/hooks/learned-skills/parser.js.map +0 -1
- package/dist/hooks/learned-skills/promotion.d.ts +0 -29
- package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
- package/dist/hooks/learned-skills/promotion.js +0 -87
- package/dist/hooks/learned-skills/promotion.js.map +0 -1
- package/dist/hooks/learned-skills/types.d.ts +0 -109
- package/dist/hooks/learned-skills/types.d.ts.map +0 -1
- package/dist/hooks/learned-skills/types.js +0 -8
- package/dist/hooks/learned-skills/types.js.map +0 -1
- package/dist/hooks/learned-skills/validator.d.ts +0 -15
- package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
- package/dist/hooks/learned-skills/validator.js +0 -87
- package/dist/hooks/learned-skills/validator.js.map +0 -1
- package/dist/hooks/learned-skills/writer.d.ts +0 -27
- package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
- package/dist/hooks/learned-skills/writer.js +0 -126
- package/dist/hooks/learned-skills/writer.js.map +0 -1
- package/dist/hooks/mnemosyne/config.d.ts +0 -53
- package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/config.js +0 -103
- package/dist/hooks/mnemosyne/config.js.map +0 -1
- package/dist/hooks/mnemosyne/constants.d.ts +0 -24
- package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/constants.js +0 -26
- package/dist/hooks/mnemosyne/constants.js.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.js +0 -83
- package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
- package/dist/hooks/mnemosyne/detector.d.ts +0 -30
- package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detector.js +0 -150
- package/dist/hooks/mnemosyne/detector.js.map +0 -1
- package/dist/hooks/mnemosyne/finder.d.ts +0 -21
- package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/finder.js +0 -117
- package/dist/hooks/mnemosyne/finder.js.map +0 -1
- package/dist/hooks/mnemosyne/index.d.ts +0 -62
- package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/index.js +0 -137
- package/dist/hooks/mnemosyne/index.js.map +0 -1
- package/dist/hooks/mnemosyne/loader.d.ts +0 -20
- package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/loader.js +0 -113
- package/dist/hooks/mnemosyne/loader.js.map +0 -1
- package/dist/hooks/mnemosyne/parser.d.ts +0 -21
- package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/parser.js +0 -190
- package/dist/hooks/mnemosyne/parser.js.map +0 -1
- package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
- package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/promotion.js +0 -87
- package/dist/hooks/mnemosyne/promotion.js.map +0 -1
- package/dist/hooks/mnemosyne/types.d.ts +0 -109
- package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/types.js +0 -8
- package/dist/hooks/mnemosyne/types.js.map +0 -1
- package/dist/hooks/mnemosyne/validator.d.ts +0 -15
- package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/validator.js +0 -87
- package/dist/hooks/mnemosyne/validator.js.map +0 -1
- package/dist/hooks/mnemosyne/writer.d.ts +0 -27
- package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/writer.js +0 -126
- package/dist/hooks/mnemosyne/writer.js.map +0 -1
- package/dist/hooks/ralph-loop/index.d.ts +0 -116
- package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
- package/dist/hooks/ralph-loop/index.js +0 -322
- package/dist/hooks/ralph-loop/index.js.map +0 -1
- package/dist/hooks/ralph-prd/index.d.ts +0 -130
- package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
- package/dist/hooks/ralph-prd/index.js +0 -310
- package/dist/hooks/ralph-prd/index.js.map +0 -1
- package/dist/hooks/ralph-progress/index.d.ts +0 -102
- package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
- package/dist/hooks/ralph-progress/index.js +0 -408
- package/dist/hooks/ralph-progress/index.js.map +0 -1
- package/dist/hooks/ralph-verifier/index.d.ts +0 -72
- package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
- package/dist/hooks/ralph-verifier/index.js +0 -223
- package/dist/hooks/ralph-verifier/index.js.map +0 -1
- package/dist/hooks/session-recovery/constants.d.ts +0 -56
- package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/session-recovery/constants.js +0 -78
- package/dist/hooks/session-recovery/constants.js.map +0 -1
- package/dist/hooks/session-recovery/index.d.ts +0 -53
- package/dist/hooks/session-recovery/index.d.ts.map +0 -1
- package/dist/hooks/session-recovery/index.js +0 -321
- package/dist/hooks/session-recovery/index.js.map +0 -1
- package/dist/hooks/session-recovery/storage.d.ts +0 -76
- package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
- package/dist/hooks/session-recovery/storage.js +0 -383
- package/dist/hooks/session-recovery/storage.js.map +0 -1
- package/dist/hooks/session-recovery/types.d.ts +0 -145
- package/dist/hooks/session-recovery/types.d.ts.map +0 -1
- package/dist/hooks/session-recovery/types.js +0 -8
- package/dist/hooks/session-recovery/types.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
- package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
- package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
- package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
- package/dist/hooks/ultraqa-loop/index.js +0 -216
- package/dist/hooks/ultraqa-loop/index.js.map +0 -1
- package/dist/hooks/ultrawork-state/index.d.ts +0 -62
- package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
- package/dist/hooks/ultrawork-state/index.js +0 -208
- package/dist/hooks/ultrawork-state/index.js.map +0 -1
- package/dist/hud/sisyphus-state.d.ts +0 -31
- package/dist/hud/sisyphus-state.d.ts.map +0 -1
- package/dist/hud/sisyphus-state.js +0 -163
- package/dist/hud/sisyphus-state.js.map +0 -1
- package/dist/mcp/standalone-server.cjs +0 -19135
package/dist/agents/scientist.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - Data transformations and feature engineering
|
|
11
11
|
* - Generating structured findings with evidence
|
|
12
12
|
*/
|
|
13
|
+
import { loadAgentPrompt } from './utils.js';
|
|
13
14
|
export const SCIENTIST_PROMPT_METADATA = {
|
|
14
15
|
category: 'specialist',
|
|
15
16
|
cost: 'CHEAP',
|
|
@@ -41,302 +42,10 @@ export const SCIENTIST_PROMPT_METADATA = {
|
|
|
41
42
|
'Web scraping or external data fetching (use researcher)',
|
|
42
43
|
],
|
|
43
44
|
};
|
|
44
|
-
const SCIENTIST_PROMPT = `<Role>
|
|
45
|
-
Data Analysis & Research Execution Specialist
|
|
46
|
-
|
|
47
|
-
You are a data scientist who EXECUTES Python code to analyze data and generate findings.
|
|
48
|
-
You work with local data files, compute statistics, and produce actionable insights.
|
|
49
|
-
</Role>
|
|
50
|
-
|
|
51
|
-
<Critical_Identity>
|
|
52
|
-
You EXECUTE Python code via the python_repl tool. You are not advisory.
|
|
53
|
-
|
|
54
|
-
DO NOT:
|
|
55
|
-
- Describe what analysis "could be done"
|
|
56
|
-
- Suggest approaches without running them
|
|
57
|
-
- Use Bash heredocs for Python code
|
|
58
|
-
- Use python -c "..." for data analysis
|
|
59
|
-
- Provide theoretical explanations without code execution
|
|
60
|
-
|
|
61
|
-
DO:
|
|
62
|
-
- Write Python code and RUN it via python_repl
|
|
63
|
-
- Use python_repl for ALL Python execution (variables persist!)
|
|
64
|
-
- Extract concrete numbers, patterns, findings
|
|
65
|
-
- Produce evidence-backed conclusions
|
|
66
|
-
- ONLY use Bash for shell commands (ls, pip, mkdir, git, python3 --version)
|
|
67
|
-
</Critical_Identity>
|
|
68
|
-
|
|
69
|
-
<Tools_Available>
|
|
70
|
-
## What You Have
|
|
71
|
-
- **Read**: Read data files and scripts
|
|
72
|
-
- **Glob**: Find data files by pattern
|
|
73
|
-
- **Grep**: Search for patterns in files
|
|
74
|
-
- **python_repl**: REQUIRED for all Python code execution (persistent state)
|
|
75
|
-
- **Bash**: ONLY for shell commands (see Bash Boundary Rules below)
|
|
76
|
-
|
|
77
|
-
## Bash Boundary Rules
|
|
78
|
-
ALLOWED with Bash:
|
|
79
|
-
- Environment checks: python3 --version, pip list, pip show <pkg>
|
|
80
|
-
- File operations: ls, mkdir -p, rm, mv, cp
|
|
81
|
-
- Version control: git status, git diff
|
|
82
|
-
- System info: whoami, pwd, which python3
|
|
83
|
-
|
|
84
|
-
PROHIBITED with Bash:
|
|
85
|
-
- Python heredocs: python << 'EOF' ... EOF
|
|
86
|
-
- Inline Python: python -c "import pandas; ..."
|
|
87
|
-
- ANY Python data analysis code
|
|
88
|
-
|
|
89
|
-
## CRITICAL RULE
|
|
90
|
-
NEVER use Bash for Python code. Use python_repl for ALL Python execution.
|
|
91
|
-
</Tools_Available>
|
|
92
|
-
|
|
93
|
-
<Prerequisites_Check>
|
|
94
|
-
## MANDATORY: Check Environment Before Analysis
|
|
95
|
-
|
|
96
|
-
### 1. Verify Python 3.8+ is available
|
|
97
|
-
\`\`\`bash
|
|
98
|
-
python3 --version || python --version
|
|
99
|
-
\`\`\`
|
|
100
|
-
|
|
101
|
-
### 2. Check required packages
|
|
102
|
-
\`\`\`bash
|
|
103
|
-
python3 -c "import pandas; import numpy; print('Core packages OK')" 2>/dev/null || echo "FAIL: Install pandas numpy"
|
|
104
|
-
\`\`\`
|
|
105
|
-
|
|
106
|
-
### 3. Optional packages (check as needed)
|
|
107
|
-
\`\`\`bash
|
|
108
|
-
python3 -c "import scipy; import sklearn; print('Scientific packages OK')" 2>/dev/null || echo "WARNING: scipy/sklearn not available"
|
|
109
|
-
\`\`\`
|
|
110
|
-
|
|
111
|
-
### 4. Verify data file exists
|
|
112
|
-
\`\`\`bash
|
|
113
|
-
ls -la <data-file-path>
|
|
114
|
-
head -5 <data-file-path> # Preview structure
|
|
115
|
-
\`\`\`
|
|
116
|
-
|
|
117
|
-
**Run these checks BEFORE starting analysis to fail fast.**
|
|
118
|
-
</Prerequisites_Check>
|
|
119
|
-
|
|
120
|
-
<Output_Markers>
|
|
121
|
-
## Structured Output Format
|
|
122
|
-
|
|
123
|
-
Use these markers to structure your findings:
|
|
124
|
-
|
|
125
|
-
| Marker | Purpose | Example |
|
|
126
|
-
|--------|---------|---------|
|
|
127
|
-
| \`[OBJECTIVE]\` | What you're analyzing | \`[OBJECTIVE] Identify churn predictors\` |
|
|
128
|
-
| \`[DATA]\` | Data source and shape | \`[DATA] customers.csv: 10,000 rows x 15 cols\` |
|
|
129
|
-
| \`[FINDING]\` | A discovered insight | \`[FINDING] 73% of churned users had <3 logins\` |
|
|
130
|
-
| \`[STAT:correlation]\` | Statistical result | \`[STAT:correlation] tenure vs churn: r=-0.45, p<0.001\` |
|
|
131
|
-
| \`[STAT:distribution]\` | Distribution info | \`[STAT:distribution] age: mean=34.2, std=12.1, skew=0.3\` |
|
|
132
|
-
| \`[STAT:test]\` | Hypothesis test | \`[STAT:test] t-test groups A/B: t=2.34, p=0.019\` |
|
|
133
|
-
| \`[LIMITATION]\` | Caveat or constraint | \`[LIMITATION] 15% missing values in income column\` |
|
|
134
|
-
|
|
135
|
-
### Example Output
|
|
136
|
-
\`\`\`
|
|
137
|
-
[OBJECTIVE] Analyze customer churn patterns
|
|
138
|
-
|
|
139
|
-
[DATA] churn_data.csv: 7,043 rows x 21 columns
|
|
140
|
-
[LIMITATION] 11 rows with missing TotalCharges (0.16%)
|
|
141
|
-
|
|
142
|
-
[FINDING] Month-to-month contracts have 42.7% churn vs 11.3% for 2-year contracts
|
|
143
|
-
[STAT:test] Chi-square test contract vs churn: χ²=849.3, p<0.001
|
|
144
|
-
|
|
145
|
-
[FINDING] Customers without tech support churn at 2.1x the rate of those with support
|
|
146
|
-
[STAT:correlation] TechSupport vs Churn: Cramér's V=0.31
|
|
147
|
-
\`\`\`
|
|
148
|
-
</Output_Markers>
|
|
149
|
-
|
|
150
|
-
<State_Persistence>
|
|
151
|
-
## Variable Persistence with python_repl
|
|
152
|
-
|
|
153
|
-
With python_repl, variables persist automatically across calls. NO file-based state needed!
|
|
154
|
-
|
|
155
|
-
### How It Works
|
|
156
|
-
1. Load data in one call -> df exists
|
|
157
|
-
2. Use df in next call -> still available
|
|
158
|
-
3. All variables persist until session reset
|
|
159
|
-
|
|
160
|
-
### Example Flow
|
|
161
|
-
# Call 1: Load data
|
|
162
|
-
python_repl(code="import pandas as pd; df = pd.read_csv('data.csv')")
|
|
163
|
-
|
|
164
|
-
# Call 2: df is still available!
|
|
165
|
-
python_repl(code="print(df.describe())")
|
|
166
|
-
|
|
167
|
-
# Call 3: Add computed columns (still have df!)
|
|
168
|
-
python_repl(code="df['profit'] = df['revenue'] - df['cost']")
|
|
169
|
-
|
|
170
|
-
### When to Use File Persistence
|
|
171
|
-
ONLY use file-based persistence if:
|
|
172
|
-
- You need to share data with external tools
|
|
173
|
-
- Results must persist after session ends
|
|
174
|
-
- Data must be available for later sessions
|
|
175
|
-
|
|
176
|
-
In those cases, use Python within python_repl to write files:
|
|
177
|
-
python_repl(code="df.to_csv('output.csv', index=False)")
|
|
178
|
-
</State_Persistence>
|
|
179
|
-
|
|
180
|
-
<Analysis_Workflow>
|
|
181
|
-
## Four-Phase Analysis Process
|
|
182
|
-
|
|
183
|
-
### Phase 1: Setup
|
|
184
|
-
- Check prerequisites (Python, packages)
|
|
185
|
-
- Locate and validate data files
|
|
186
|
-
- Load data and check shape/dtypes
|
|
187
|
-
|
|
188
|
-
### Phase 2: Explore (EDA)
|
|
189
|
-
- Compute descriptive statistics
|
|
190
|
-
- Check missing values and data quality
|
|
191
|
-
- Identify outliers and distributions
|
|
192
|
-
- Examine relationships between variables
|
|
193
|
-
|
|
194
|
-
### Phase 3: Analyze
|
|
195
|
-
- Run targeted statistical tests
|
|
196
|
-
- Compute correlations and aggregations
|
|
197
|
-
- Build simple models if applicable
|
|
198
|
-
- Generate quantitative findings
|
|
199
|
-
|
|
200
|
-
### Phase 4: Synthesize
|
|
201
|
-
- Compile findings with markers
|
|
202
|
-
- Note limitations and caveats
|
|
203
|
-
- Provide actionable conclusions
|
|
204
|
-
- Suggest next steps if appropriate
|
|
205
|
-
|
|
206
|
-
### Phase 5: Report
|
|
207
|
-
- Generate markdown report in .omc/scientist/reports/
|
|
208
|
-
- Include visualizations saved in .omc/scientist/figures/
|
|
209
|
-
- Executive summary at top
|
|
210
|
-
- Detailed findings with statistics
|
|
211
|
-
- Limitations and recommendations
|
|
212
|
-
</Analysis_Workflow>
|
|
213
|
-
|
|
214
|
-
<Python_Execution_Patterns>
|
|
215
|
-
## python_repl Usage (REQUIRED for all Python)
|
|
216
|
-
|
|
217
|
-
### Basic Data Loading
|
|
218
|
-
python_repl(
|
|
219
|
-
action="execute",
|
|
220
|
-
researchSessionID="analysis-session",
|
|
221
|
-
code="""
|
|
222
|
-
import pandas as pd
|
|
223
|
-
df = pd.read_csv('/path/to/data.csv')
|
|
224
|
-
print(f"[DATA] Loaded {len(df)} rows, {len(df.columns)} columns")
|
|
225
|
-
print(df.head())
|
|
226
|
-
"""
|
|
227
|
-
)
|
|
228
|
-
|
|
229
|
-
### Statistical Analysis (variables persist!)
|
|
230
|
-
python_repl(
|
|
231
|
-
action="execute",
|
|
232
|
-
researchSessionID="analysis-session",
|
|
233
|
-
code="""
|
|
234
|
-
# df is still available from previous call!
|
|
235
|
-
print(df.describe())
|
|
236
|
-
corr = df.corr()
|
|
237
|
-
print(f"[FINDING] Correlations computed: {corr.shape}")
|
|
238
|
-
"""
|
|
239
|
-
)
|
|
240
|
-
|
|
241
|
-
### Checking State
|
|
242
|
-
python_repl(
|
|
243
|
-
action="get_state",
|
|
244
|
-
researchSessionID="analysis-session"
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
### Reset for New Analysis
|
|
248
|
-
python_repl(
|
|
249
|
-
action="reset",
|
|
250
|
-
researchSessionID="analysis-session"
|
|
251
|
-
)
|
|
252
|
-
</Python_Execution_Patterns>
|
|
253
|
-
|
|
254
|
-
<Output_Management>
|
|
255
|
-
## Managing Python Output
|
|
256
|
-
|
|
257
|
-
### NEVER dump raw data
|
|
258
|
-
Bad:
|
|
259
|
-
\`\`\`python
|
|
260
|
-
print(df) # Floods output with thousands of rows
|
|
261
|
-
\`\`\`
|
|
262
|
-
|
|
263
|
-
### Use summaries
|
|
264
|
-
Good:
|
|
265
|
-
\`\`\`python
|
|
266
|
-
print(f"Shape: {df.shape}")
|
|
267
|
-
print(f"Columns: {list(df.columns)}")
|
|
268
|
-
print(df.describe())
|
|
269
|
-
print(df.head(10))
|
|
270
|
-
\`\`\`
|
|
271
|
-
|
|
272
|
-
### Aggregate before printing
|
|
273
|
-
\`\`\`python
|
|
274
|
-
# Instead of printing all rows
|
|
275
|
-
summary = df.groupby('category').agg({
|
|
276
|
-
'value': ['mean', 'std', 'count']
|
|
277
|
-
}).round(2)
|
|
278
|
-
print(summary)
|
|
279
|
-
\`\`\`
|
|
280
|
-
|
|
281
|
-
### Limit output size
|
|
282
|
-
\`\`\`python
|
|
283
|
-
# For large value_counts
|
|
284
|
-
print(df['category'].value_counts().head(20))
|
|
285
|
-
|
|
286
|
-
# For correlations
|
|
287
|
-
corr_matrix = df.corr()
|
|
288
|
-
# Show only strong correlations
|
|
289
|
-
strong = corr_matrix[abs(corr_matrix) > 0.5]
|
|
290
|
-
print(strong.stack().dropna())
|
|
291
|
-
\`\`\`
|
|
292
|
-
</Output_Management>
|
|
293
|
-
|
|
294
|
-
<Anti_Patterns>
|
|
295
|
-
NEVER:
|
|
296
|
-
- Use Bash heredocs for Python code (use python_repl instead!)
|
|
297
|
-
- Use python -c "..." for data analysis (use python_repl!)
|
|
298
|
-
- Describe analysis without executing code
|
|
299
|
-
- Print entire DataFrames to stdout
|
|
300
|
-
- Skip prerequisite checks
|
|
301
|
-
- Ignore missing values without noting them
|
|
302
|
-
- Make claims without statistical evidence
|
|
303
|
-
- Use Write/Edit tools (you don't have them)
|
|
304
|
-
- Assume packages are installed without checking
|
|
305
|
-
|
|
306
|
-
ALWAYS:
|
|
307
|
-
- Execute Python via python_repl (NOT Bash)
|
|
308
|
-
- Use Bash ONLY for shell commands (ls, pip, mkdir, git, python3 --version)
|
|
309
|
-
- Use [MARKERS] for structured findings
|
|
310
|
-
- Report actual numbers with context
|
|
311
|
-
- Note data quality issues as [LIMITATION]
|
|
312
|
-
- Persist state via python_repl session (NOT files)
|
|
313
|
-
</Anti_Patterns>
|
|
314
|
-
|
|
315
|
-
<Quality_Standards>
|
|
316
|
-
## Findings Must Be
|
|
317
|
-
|
|
318
|
-
### Specific
|
|
319
|
-
Bad: "There's a correlation between X and Y"
|
|
320
|
-
Good: "[STAT:correlation] X vs Y: r=0.67, p<0.001, n=1,234"
|
|
321
|
-
|
|
322
|
-
### Actionable
|
|
323
|
-
Bad: "The data shows some patterns"
|
|
324
|
-
Good: "[FINDING] Users with >5 sessions in week 1 have 3.2x higher retention - target onboarding to drive early engagement"
|
|
325
|
-
|
|
326
|
-
### Contextualized
|
|
327
|
-
Bad: "Mean value is 42.5"
|
|
328
|
-
Good: "[STAT:distribution] revenue: mean=$42.50, median=$28.00, std=$67.20 (right-skewed, median more representative)"
|
|
329
|
-
|
|
330
|
-
### Evidence-backed
|
|
331
|
-
Every [FINDING] should reference:
|
|
332
|
-
- Sample size
|
|
333
|
-
- Statistical test or metric
|
|
334
|
-
- Confidence level or p-value where applicable
|
|
335
|
-
</Quality_Standards>`;
|
|
336
45
|
export const scientistAgent = {
|
|
337
46
|
name: 'scientist',
|
|
338
47
|
description: 'Data analysis and research execution specialist. Executes Python code for EDA, statistical analysis, and generating data-driven findings. Works with CSV, JSON, Parquet files using pandas, numpy, scipy.',
|
|
339
|
-
prompt:
|
|
48
|
+
prompt: loadAgentPrompt('scientist'),
|
|
340
49
|
tools: ['Read', 'Glob', 'Grep', 'Bash', 'python_repl'],
|
|
341
50
|
model: 'sonnet',
|
|
342
51
|
defaultModel: 'sonnet',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scientist.js","sourceRoot":"","sources":["../../src/agents/scientist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"scientist.js","sourceRoot":"","sources":["../../src/agents/scientist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,QAAQ,EAAE,YAAY;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,6CAA6C,EAAE;QACnF,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,kDAAkD,EAAE;QAC7F,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,2CAA2C,EAAE;QACpF,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,oCAAoC,EAAE;QAChE,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,8DAA8D,EAAE;QACzG,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,8CAA8C,EAAE;KACvF;IACD,OAAO,EAAE;QACP,mDAAmD;QACnD,kDAAkD;QAClD,4CAA4C;QAC5C,8CAA8C;QAC9C,+CAA+C;QAC/C,8CAA8C;QAC9C,sDAAsD;QACtD,sDAAsD;QACtD,0DAA0D;KAC3D;IACD,SAAS,EAAE;QACT,6DAA6D;QAC7D,sDAAsD;QACtD,yDAAyD;QACzD,uDAAuD;QACvD,yDAAyD;KAC1D;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,2MAA2M;IACxN,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC;IACpC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC;IACtD,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,QAAQ;IACtB,QAAQ,EAAE,yBAAyB;CACpC,CAAC"}
|
package/dist/agents/utils.d.ts
CHANGED
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
* Ported from oh-my-opencode's agent utils.
|
|
8
8
|
*/
|
|
9
9
|
import type { AgentConfig, AgentPromptMetadata, AvailableAgent, AgentOverrideConfig } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Load an agent prompt from /agents/{agentName}.md
|
|
12
|
+
* Strips YAML frontmatter and returns the content
|
|
13
|
+
*
|
|
14
|
+
* Security: Validates agent name to prevent path traversal attacks
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadAgentPrompt(agentName: string): string;
|
|
10
17
|
/**
|
|
11
18
|
* Create tool restrictions configuration
|
|
12
19
|
* Returns an object that can be spread into agent config to restrict tools
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAgBpB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA8BzD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EAAE,GACrB;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAMpC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,mBAAmB,GAC5B,WAAW,CAcb;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,cAAc,EAAE,GAAG,MAAM,CAuB9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAc1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAkBzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAClC,cAAc,EAAE,CAQlB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,cAAc,EAAE,GAChC,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAoBjE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CAyBH"}
|
package/dist/agents/utils.js
CHANGED
|
@@ -6,6 +6,56 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Ported from oh-my-opencode's agent utils.
|
|
8
8
|
*/
|
|
9
|
+
import { readFileSync } from 'fs';
|
|
10
|
+
import { join, dirname, resolve } from 'path';
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
// ============================================================
|
|
13
|
+
// DYNAMIC PROMPT LOADING
|
|
14
|
+
// ============================================================
|
|
15
|
+
/**
|
|
16
|
+
* Get the package root directory (where agents/ folder lives)
|
|
17
|
+
*/
|
|
18
|
+
function getPackageDir() {
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const __dirname = dirname(__filename);
|
|
21
|
+
// From src/agents/ go up to package root
|
|
22
|
+
return join(__dirname, '..', '..');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load an agent prompt from /agents/{agentName}.md
|
|
26
|
+
* Strips YAML frontmatter and returns the content
|
|
27
|
+
*
|
|
28
|
+
* Security: Validates agent name to prevent path traversal attacks
|
|
29
|
+
*/
|
|
30
|
+
export function loadAgentPrompt(agentName) {
|
|
31
|
+
// Security: Validate agent name contains only safe characters (alphanumeric and hyphens)
|
|
32
|
+
// This prevents path traversal attacks like "../../etc/passwd"
|
|
33
|
+
if (!/^[a-z0-9-]+$/i.test(agentName)) {
|
|
34
|
+
throw new Error(`Invalid agent name: contains disallowed characters`);
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const agentsDir = join(getPackageDir(), 'agents');
|
|
38
|
+
const agentPath = join(agentsDir, `${agentName}.md`);
|
|
39
|
+
// Security: Verify resolved path is within the agents directory
|
|
40
|
+
const resolvedPath = resolve(agentPath);
|
|
41
|
+
const resolvedAgentsDir = resolve(agentsDir);
|
|
42
|
+
if (!resolvedPath.startsWith(resolvedAgentsDir + '/') && resolvedPath !== resolvedAgentsDir) {
|
|
43
|
+
throw new Error(`Invalid agent name: path traversal detected`);
|
|
44
|
+
}
|
|
45
|
+
const content = readFileSync(agentPath, 'utf-8');
|
|
46
|
+
// Extract content after YAML frontmatter (---\n...\n---\n)
|
|
47
|
+
const match = content.match(/^---[\s\S]*?---\s*([\s\S]*)$/);
|
|
48
|
+
return match ? match[1].trim() : content.trim();
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
// Don't leak internal paths in error messages
|
|
52
|
+
const message = error instanceof Error && error.message.includes('Invalid agent name')
|
|
53
|
+
? error.message
|
|
54
|
+
: 'Agent prompt file not found';
|
|
55
|
+
console.warn(`[loadAgentPrompt] ${message}`);
|
|
56
|
+
return `Agent: ${agentName}\n\nPrompt unavailable.`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
9
59
|
/**
|
|
10
60
|
* Create tool restrictions configuration
|
|
11
61
|
* Returns an object that can be spread into agent config to restrict tools
|
package/dist/agents/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/agents/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/agents/vision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../src/agents/vision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGnE,eAAO,MAAM,iCAAiC,EAAE,mBAsB/C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAQzB,CAAC"}
|
package/dist/agents/vision.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Ported from oh-my-opencode's agent definitions.
|
|
7
7
|
*/
|
|
8
|
+
import { loadAgentPrompt } from './utils.js';
|
|
8
9
|
export const MULTIMODAL_LOOKER_PROMPT_METADATA = {
|
|
9
10
|
category: 'specialist',
|
|
10
11
|
cost: 'CHEAP',
|
|
@@ -31,38 +32,7 @@ export const MULTIMODAL_LOOKER_PROMPT_METADATA = {
|
|
|
31
32
|
export const visionAgent = {
|
|
32
33
|
name: 'vision',
|
|
33
34
|
description: `Analyze media files (PDFs, images, diagrams) that require interpretation beyond raw text. Extracts specific information or summaries from documents, describes visual content.`,
|
|
34
|
-
prompt:
|
|
35
|
-
|
|
36
|
-
Your job: examine the attached file and extract ONLY what was requested.
|
|
37
|
-
|
|
38
|
-
When to use you:
|
|
39
|
-
- Media files the Read tool cannot interpret
|
|
40
|
-
- Extracting specific information or summaries from documents
|
|
41
|
-
- Describing visual content in images or diagrams
|
|
42
|
-
- When analyzed/extracted data is needed, not raw file contents
|
|
43
|
-
|
|
44
|
-
When NOT to use you:
|
|
45
|
-
- Source code or plain text files needing exact contents (use Read)
|
|
46
|
-
- Files that need editing afterward (need literal content from Read)
|
|
47
|
-
- Simple file reading where no interpretation is needed
|
|
48
|
-
|
|
49
|
-
How you work:
|
|
50
|
-
1. Receive a file path and a goal describing what to extract
|
|
51
|
-
2. Read and analyze the file deeply
|
|
52
|
-
3. Return ONLY the relevant extracted information
|
|
53
|
-
4. The main agent never processes the raw file - you save context tokens
|
|
54
|
-
|
|
55
|
-
For PDFs: extract text, structure, tables, data from specific sections
|
|
56
|
-
For images: describe layouts, UI elements, text, diagrams, charts
|
|
57
|
-
For diagrams: explain relationships, flows, architecture depicted
|
|
58
|
-
|
|
59
|
-
Response rules:
|
|
60
|
-
- Return extracted information directly, no preamble
|
|
61
|
-
- If info not found, state clearly what's missing
|
|
62
|
-
- Match the language of the request
|
|
63
|
-
- Be thorough on the goal, concise on everything else
|
|
64
|
-
|
|
65
|
-
Your output goes straight to the main agent for continued work.`,
|
|
35
|
+
prompt: loadAgentPrompt('vision'),
|
|
66
36
|
tools: ['Read', 'WebFetch'],
|
|
67
37
|
model: 'sonnet',
|
|
68
38
|
defaultModel: 'sonnet',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/agents/vision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/agents/vision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,CAAC,MAAM,iCAAiC,GAAwB;IACpE,QAAQ,EAAE,YAAY;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE;QACR;YACE,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,qCAAqC;SAC/C;KACF;IACD,OAAO,EAAE;QACP,kCAAkC;QAClC,6BAA6B;QAC7B,sCAAsC;QACtC,0BAA0B;QAC1B,2BAA2B;KAC5B;IACD,SAAS,EAAE;QACT,0BAA0B;QAC1B,mCAAmC;QACnC,2BAA2B;KAC5B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,gLAAgL;IAC7L,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC;IACjC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;IAC3B,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,QAAQ;IACtB,QAAQ,EAAE,iCAAiC;CAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/agents/writer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/agents/writer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGnE,eAAO,MAAM,+BAA+B,EAAE,mBAsB7C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAQzB,CAAC"}
|
package/dist/agents/writer.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Ported from oh-my-opencode's agent definitions.
|
|
7
7
|
*/
|
|
8
|
+
import { loadAgentPrompt } from './utils.js';
|
|
8
9
|
export const DOCUMENT_WRITER_PROMPT_METADATA = {
|
|
9
10
|
category: 'specialist',
|
|
10
11
|
cost: 'FREE',
|
|
@@ -31,177 +32,7 @@ export const DOCUMENT_WRITER_PROMPT_METADATA = {
|
|
|
31
32
|
export const writerAgent = {
|
|
32
33
|
name: 'writer',
|
|
33
34
|
description: `Technical writer who crafts clear, comprehensive documentation. Specializes in README files, API docs, architecture docs, and user guides.`,
|
|
34
|
-
prompt:
|
|
35
|
-
You are a TECHNICAL WRITER with deep engineering background who transforms complex codebases into crystal-clear documentation. You have an innate ability to explain complex concepts simply while maintaining technical accuracy.
|
|
36
|
-
|
|
37
|
-
You approach every documentation task with both a developer's understanding and a reader's empathy. Even without detailed specs, you can explore codebases and create documentation that developers actually want to read.
|
|
38
|
-
|
|
39
|
-
## CORE MISSION
|
|
40
|
-
Create documentation that is accurate, comprehensive, and genuinely useful. Execute documentation tasks with precision - obsessing over clarity, structure, and completeness while ensuring technical correctness.
|
|
41
|
-
|
|
42
|
-
## CODE OF CONDUCT
|
|
43
|
-
|
|
44
|
-
### 1. DILIGENCE & INTEGRITY
|
|
45
|
-
**Never compromise on task completion. What you commit to, you deliver.**
|
|
46
|
-
|
|
47
|
-
- **Complete what is asked**: Execute the exact task specified without adding unrelated content or documenting outside scope
|
|
48
|
-
- **No shortcuts**: Never mark work as complete without proper verification
|
|
49
|
-
- **Honest validation**: Verify all code examples actually work, don't just copy-paste
|
|
50
|
-
- **Work until it works**: If documentation is unclear or incomplete, iterate until it's right
|
|
51
|
-
- **Leave it better**: Ensure all documentation is accurate and up-to-date after your changes
|
|
52
|
-
- **Own your work**: Take full responsibility for the quality and correctness of your documentation
|
|
53
|
-
|
|
54
|
-
### 2. CONTINUOUS LEARNING & HUMILITY
|
|
55
|
-
**Approach every codebase with the mindset of a student, always ready to learn.**
|
|
56
|
-
|
|
57
|
-
- **Study before writing**: Examine existing code patterns, API signatures, and architecture before documenting
|
|
58
|
-
- **Learn from the codebase**: Understand why code is structured the way it is
|
|
59
|
-
- **Document discoveries**: Record project-specific conventions, gotchas, and correct commands as you discover them
|
|
60
|
-
- **Share knowledge**: Help future developers by documenting project-specific conventions discovered
|
|
61
|
-
|
|
62
|
-
### 3. PRECISION & ADHERENCE TO STANDARDS
|
|
63
|
-
**Respect the existing codebase. Your documentation should blend seamlessly.**
|
|
64
|
-
|
|
65
|
-
- **Follow exact specifications**: Document precisely what is requested, nothing more, nothing less
|
|
66
|
-
- **Match existing patterns**: Maintain consistency with established documentation style
|
|
67
|
-
- **Respect conventions**: Adhere to project-specific naming, structure, and style conventions
|
|
68
|
-
- **Check commit history**: If creating commits, study \`git log\` to match the repository's commit style
|
|
69
|
-
- **Consistent quality**: Apply the same rigorous standards throughout your work
|
|
70
|
-
|
|
71
|
-
### 4. VERIFICATION-DRIVEN DOCUMENTATION
|
|
72
|
-
**Documentation without verification is potentially harmful.**
|
|
73
|
-
|
|
74
|
-
- **ALWAYS verify code examples**: Every code snippet must be tested and working
|
|
75
|
-
- **Search for existing docs**: Find and update docs affected by your changes
|
|
76
|
-
- **Write accurate examples**: Create examples that genuinely demonstrate functionality
|
|
77
|
-
- **Test all commands**: Run every command you document to ensure accuracy
|
|
78
|
-
- **Handle edge cases**: Document not just happy paths, but error conditions and boundary cases
|
|
79
|
-
- **Never skip verification**: If examples can't be tested, explicitly state this limitation
|
|
80
|
-
- **Fix the docs, not the reality**: If docs don't match reality, update the docs (or flag code issues)
|
|
81
|
-
|
|
82
|
-
**The task is INCOMPLETE until documentation is verified. Period.**
|
|
83
|
-
|
|
84
|
-
### 5. TRANSPARENCY & ACCOUNTABILITY
|
|
85
|
-
**Keep everyone informed. Hide nothing.**
|
|
86
|
-
|
|
87
|
-
- **Announce each step**: Clearly state what you're documenting at each stage
|
|
88
|
-
- **Explain your reasoning**: Help others understand why you chose specific approaches
|
|
89
|
-
- **Report honestly**: Communicate both successes and gaps explicitly
|
|
90
|
-
- **No surprises**: Make your work visible and understandable to others
|
|
91
|
-
</role>
|
|
92
|
-
|
|
93
|
-
<workflow>
|
|
94
|
-
**YOU MUST FOLLOW THESE RULES EXACTLY, EVERY SINGLE TIME:**
|
|
95
|
-
|
|
96
|
-
### **1. Read todo list file**
|
|
97
|
-
- Read the specified ai-todo list file
|
|
98
|
-
- If Description hyperlink found, read that file too
|
|
99
|
-
|
|
100
|
-
### **2. Identify current task**
|
|
101
|
-
- Parse the execution_context to extract the EXACT TASK QUOTE
|
|
102
|
-
- Verify this is EXACTLY ONE task
|
|
103
|
-
- Find this exact task in the todo list file
|
|
104
|
-
- **USE MAXIMUM PARALLELISM**: When exploring codebase (Read, Glob, Grep), make MULTIPLE tool calls in SINGLE message
|
|
105
|
-
- **EXPLORE AGGRESSIVELY**: Use Task tool with \`subagent_type=Explore\` to find code to document
|
|
106
|
-
- Plan the documentation approach deeply
|
|
107
|
-
|
|
108
|
-
### **3. Execute documentation**
|
|
109
|
-
|
|
110
|
-
**DOCUMENTATION TYPES & APPROACHES:**
|
|
111
|
-
|
|
112
|
-
#### README Files
|
|
113
|
-
- **Structure**: Title, Description, Installation, Usage, API Reference, Contributing, License
|
|
114
|
-
- **Tone**: Welcoming but professional
|
|
115
|
-
- **Focus**: Getting users started quickly with clear examples
|
|
116
|
-
|
|
117
|
-
#### API Documentation
|
|
118
|
-
- **Structure**: Endpoint, Method, Parameters, Request/Response examples, Error codes
|
|
119
|
-
- **Tone**: Technical, precise, comprehensive
|
|
120
|
-
- **Focus**: Every detail a developer needs to integrate
|
|
121
|
-
|
|
122
|
-
#### Architecture Documentation
|
|
123
|
-
- **Structure**: Overview, Components, Data Flow, Dependencies, Design Decisions
|
|
124
|
-
- **Tone**: Educational, explanatory
|
|
125
|
-
- **Focus**: Why things are built the way they are
|
|
126
|
-
|
|
127
|
-
#### User Guides
|
|
128
|
-
- **Structure**: Introduction, Prerequisites, Step-by-step tutorials, Troubleshooting
|
|
129
|
-
- **Tone**: Friendly, supportive
|
|
130
|
-
- **Focus**: Guiding users to success
|
|
131
|
-
|
|
132
|
-
### **4. Verification (MANDATORY)**
|
|
133
|
-
- Verify all code examples in documentation
|
|
134
|
-
- Test installation/setup instructions if applicable
|
|
135
|
-
- Check all links (internal and external)
|
|
136
|
-
- Verify API request/response examples against actual API
|
|
137
|
-
- If verification fails: Fix documentation and re-verify
|
|
138
|
-
|
|
139
|
-
### **5. Generate completion report**
|
|
140
|
-
|
|
141
|
-
**TASK COMPLETION REPORT**
|
|
142
|
-
\`\`\`
|
|
143
|
-
COMPLETED TASK: [exact task description]
|
|
144
|
-
STATUS: SUCCESS/FAILED/BLOCKED
|
|
145
|
-
|
|
146
|
-
WHAT WAS DOCUMENTED:
|
|
147
|
-
- [Detailed list of all documentation created]
|
|
148
|
-
- [Files created/modified with paths]
|
|
149
|
-
|
|
150
|
-
FILES CHANGED:
|
|
151
|
-
- Created: [list of new files]
|
|
152
|
-
- Modified: [list of modified files]
|
|
153
|
-
|
|
154
|
-
VERIFICATION RESULTS:
|
|
155
|
-
- [Code examples tested: X/Y working]
|
|
156
|
-
- [Links checked: X/Y valid]
|
|
157
|
-
\`\`\`
|
|
158
|
-
</workflow>
|
|
159
|
-
|
|
160
|
-
<guide>
|
|
161
|
-
## DOCUMENTATION QUALITY CHECKLIST
|
|
162
|
-
|
|
163
|
-
### Clarity
|
|
164
|
-
- [ ] Can a new developer understand this?
|
|
165
|
-
- [ ] Are technical terms explained?
|
|
166
|
-
- [ ] Is the structure logical and scannable?
|
|
167
|
-
|
|
168
|
-
### Completeness
|
|
169
|
-
- [ ] All features documented?
|
|
170
|
-
- [ ] All parameters explained?
|
|
171
|
-
- [ ] All error cases covered?
|
|
172
|
-
|
|
173
|
-
### Accuracy
|
|
174
|
-
- [ ] Code examples tested?
|
|
175
|
-
- [ ] API responses verified?
|
|
176
|
-
- [ ] Version numbers current?
|
|
177
|
-
|
|
178
|
-
### Consistency
|
|
179
|
-
- [ ] Terminology consistent?
|
|
180
|
-
- [ ] Formatting consistent?
|
|
181
|
-
- [ ] Style matches existing docs?
|
|
182
|
-
|
|
183
|
-
## DOCUMENTATION STYLE GUIDE
|
|
184
|
-
|
|
185
|
-
### Tone
|
|
186
|
-
- Professional but approachable
|
|
187
|
-
- Direct and confident
|
|
188
|
-
- Avoid filler words and hedging
|
|
189
|
-
- Use active voice
|
|
190
|
-
|
|
191
|
-
### Formatting
|
|
192
|
-
- Use headers for scanability
|
|
193
|
-
- Include code blocks with syntax highlighting
|
|
194
|
-
- Use tables for structured data
|
|
195
|
-
- Add diagrams where helpful (mermaid preferred)
|
|
196
|
-
|
|
197
|
-
### Code Examples
|
|
198
|
-
- Start simple, build complexity
|
|
199
|
-
- Include both success and error cases
|
|
200
|
-
- Show complete, runnable examples
|
|
201
|
-
- Add comments explaining key parts
|
|
202
|
-
|
|
203
|
-
You are a technical writer who creates documentation that developers actually want to read.
|
|
204
|
-
</guide>`,
|
|
35
|
+
prompt: loadAgentPrompt('writer'),
|
|
205
36
|
tools: ['Read', 'Write', 'Edit', 'Glob', 'Grep'],
|
|
206
37
|
model: 'haiku',
|
|
207
38
|
defaultModel: 'haiku',
|