@sayknow-cli/coding-agent 0.3.7 → 0.3.9
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/dist/types/append-only-mode.d.ts +31 -0
- package/dist/types/capability/rule.d.ts +8 -0
- package/dist/types/cli/completion-cli.d.ts +41 -0
- package/dist/types/cli/config-cli.d.ts +1 -0
- package/dist/types/cli/fixture-report.d.ts +20 -0
- package/dist/types/cli/fixture-report.test.d.ts +1 -0
- package/dist/types/cli/nofile-limit.d.ts +11 -0
- package/dist/types/cli/notify-cli.d.ts +7 -0
- package/dist/types/cli/update-cli.d.ts +22 -0
- package/dist/types/cli.d.ts +124 -1
- package/dist/types/commands/completion.d.ts +29 -0
- package/dist/types/commands/config.d.ts +3 -0
- package/dist/types/commands/deep-interview.d.ts +3 -0
- package/dist/types/config/file-lock.d.ts +7 -6
- package/dist/types/config/keybindings.d.ts +2 -2
- package/dist/types/config/model-profile-activation.d.ts +6 -0
- package/dist/types/config/model-profiles.d.ts +1 -0
- package/dist/types/config/settings-schema.d.ts +119 -1
- package/dist/types/config/settings.d.ts +8 -0
- package/dist/types/discovery/index.d.ts +1 -0
- package/dist/types/export/html/template.generated.d.ts +1 -1
- package/dist/types/export/ttsr.d.ts +14 -3
- package/dist/types/extensibility/extensions/runner.d.ts +2 -1
- package/dist/types/extensibility/extensions/types.d.ts +8 -0
- package/dist/types/goals/runtime.d.ts +1 -0
- package/dist/types/hooks/native-skill-hook.d.ts +12 -0
- package/dist/types/main.d.ts +4 -1
- package/dist/types/modes/components/assistant-message.d.ts +5 -1
- package/dist/types/modes/components/model-selector.d.ts +4 -0
- package/dist/types/modes/components/queued-message-selector.d.ts +12 -0
- package/dist/types/modes/components/settings-selector.d.ts +2 -0
- package/dist/types/modes/components/status-line.d.ts +9 -0
- package/dist/types/modes/components/thinking-selector.d.ts +2 -2
- package/dist/types/modes/controllers/command-controller.d.ts +1 -0
- package/dist/types/modes/controllers/event-controller.d.ts +5 -0
- package/dist/types/modes/controllers/input-controller.d.ts +1 -3
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -0
- package/dist/types/modes/interactive-mode.d.ts +4 -0
- package/dist/types/modes/print-mode.d.ts +13 -1
- package/dist/types/modes/prompt-action-autocomplete.d.ts +1 -1
- package/dist/types/modes/rpc/rpc-mode.d.ts +1 -3
- package/dist/types/modes/rpc/rpc-socket-security.d.ts +3 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +14 -0
- package/dist/types/modes/shared/agent-wire/event-contract.d.ts +19 -0
- package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +23 -1
- package/dist/types/modes/types.d.ts +3 -0
- package/dist/types/modes/utils/injected-user-submission.d.ts +52 -0
- package/dist/types/modes/utils/ui-helpers.d.ts +1 -0
- package/dist/types/notifications/config-commands.d.ts +9 -0
- package/dist/types/notifications/config.d.ts +30 -1
- package/dist/types/notifications/daemon-paths.d.ts +1 -0
- package/dist/types/notifications/index.d.ts +8 -3
- package/dist/types/notifications/lifecycle-commands.d.ts +12 -3
- package/dist/types/notifications/lifecycle-control-runtime.d.ts +2 -1
- package/dist/types/notifications/reply-sent-store.d.ts +53 -0
- package/dist/types/notifications/rich-draft.d.ts +68 -0
- package/dist/types/notifications/rich-render.d.ts +90 -0
- package/dist/types/notifications/telegram-daemon.d.ts +45 -3
- package/dist/types/notifications/telegram-reference.d.ts +7 -5
- package/dist/types/notifications/threaded-render.d.ts +14 -0
- package/dist/types/runtime-api-key.d.ts +7 -0
- package/dist/types/sdk.d.ts +3 -0
- package/dist/types/session/agent-session.d.ts +61 -6
- package/dist/types/session/agent-storage.d.ts +1 -0
- package/dist/types/session/file-mention-pruning.d.ts +8 -0
- package/dist/types/session/messages.d.ts +4 -0
- package/dist/types/session/session-manager.d.ts +17 -1
- package/dist/types/skc-runtime/deep-interview-ambiguity.d.ts +39 -0
- package/dist/types/skc-runtime/deep-interview-recorder.d.ts +10 -1
- package/dist/types/skc-runtime/deep-interview-state.d.ts +17 -2
- package/dist/types/skc-runtime/session-state-sidecar.d.ts +7 -0
- package/dist/types/skc-runtime/state-writer.d.ts +3 -0
- package/dist/types/skc-runtime/tmux-common.d.ts +1 -0
- package/dist/types/skc-runtime/ultragoal-receipt-freshness.d.ts +42 -0
- package/dist/types/skc-runtime/ultragoal-runtime.d.ts +120 -13
- package/dist/types/skill-state/active-state.d.ts +18 -1
- package/dist/types/system-prompt.d.ts +18 -2
- package/dist/types/task/executor.d.ts +3 -0
- package/dist/types/task/fork-context-budget.d.ts +7 -0
- package/dist/types/task/token-log.d.ts +30 -0
- package/dist/types/task/token-log.test.d.ts +1 -0
- package/dist/types/tools/bisect.d.ts +81 -0
- package/dist/types/tools/computer.d.ts +2 -2
- package/dist/types/tools/index.d.ts +1 -0
- package/dist/types/tools/search.d.ts +2 -2
- package/dist/types/tools/ultragoal-ask-guard.d.ts +9 -2
- package/dist/types/utils/file-mentions.d.ts +14 -0
- package/dist/types/utils/git.d.ts +32 -0
- package/dist/types/utils/pasted-image-path.d.ts +30 -0
- package/dist/types/web/scrapers/youtube.d.ts +8 -0
- package/dist/types/workflow/workflow-intent-diff.d.ts +8 -2
- package/dist/types/workflow/workflow-intent-report-consumer.d.ts +50 -0
- package/dist/types/workflow/workflow-intent-report-schema.d.ts +2 -0
- package/dist/types/workflow/workflow-intent-report.d.ts +48 -0
- package/package.json +8 -8
- package/src/append-only-mode.ts +58 -0
- package/src/autoresearch/prompt.md +1 -1
- package/src/autoresearch/tools/log-experiment.ts +1 -1
- package/src/capability/rule.ts +9 -0
- package/src/cli/completion-cli.ts +234 -0
- package/src/cli/config-cli.ts +61 -9
- package/src/cli/fast-help.ts +1 -0
- package/src/cli/fixture-report.test.ts +230 -0
- package/src/cli/fixture-report.ts +171 -0
- package/src/cli/nofile-limit.ts +48 -0
- package/src/cli/notify-cli.ts +103 -17
- package/src/cli/telegram-cli.ts +1 -1
- package/src/cli/update-cli.ts +148 -33
- package/src/cli.ts +29 -1
- package/src/commands/completion.ts +84 -0
- package/src/commands/config.ts +2 -0
- package/src/commands/contribution-prep.ts +1 -1
- package/src/commands/deep-interview.ts +2 -1
- package/src/config/file-lock.ts +73 -34
- package/src/config/keybindings.ts +3 -3
- package/src/config/model-profile-activation.ts +65 -0
- package/src/config/model-profiles.ts +31 -2
- package/src/config/settings-schema.ts +76 -1
- package/src/config/settings.ts +22 -0
- package/src/defaults/skc/skills/team/SKILL.md +17 -14
- package/src/defaults/skc/skills/ultragoal/SKILL.md +59 -4
- package/src/defaults/skc/skills/ultragoal/pipeline-validation-contracts.md +30 -0
- package/src/defaults/skc-defaults.ts +9 -0
- package/src/discovery/helpers.ts +10 -0
- package/src/discovery/index.ts +1 -0
- package/src/export/html/template.generated.ts +1 -1
- package/src/export/html/template.js +60 -2
- package/src/export/ttsr.ts +96 -18
- package/src/extensibility/extensions/runner.ts +183 -219
- package/src/extensibility/extensions/types.ts +9 -0
- package/src/extensibility/skc-plugins/runtime-adapters.ts +156 -44
- package/src/goals/runtime.ts +10 -2
- package/src/hindsight/backend.ts +1 -3
- package/src/hooks/native-skill-hook.ts +124 -4
- package/src/internal-urls/docs-index.generated.ts +17 -8
- package/src/lsp/client.ts +1 -0
- package/src/main.ts +95 -43
- package/src/memories/index.ts +12 -1
- package/src/modes/components/assistant-message.ts +241 -82
- package/src/modes/components/custom-editor.ts +1 -0
- package/src/modes/components/footer.ts +7 -2
- package/src/modes/components/model-selector.ts +54 -11
- package/src/modes/components/queued-message-selector.ts +92 -0
- package/src/modes/components/settings-selector.ts +4 -0
- package/src/modes/components/status-line.ts +167 -54
- package/src/modes/components/thinking-selector.ts +10 -8
- package/src/modes/components/tool-execution.ts +44 -19
- package/src/modes/components/welcome.ts +181 -44
- package/src/modes/controllers/command-controller.ts +40 -4
- package/src/modes/controllers/event-controller.ts +77 -49
- package/src/modes/controllers/extension-ui-controller.ts +12 -11
- package/src/modes/controllers/input-controller.ts +192 -35
- package/src/modes/controllers/selector-controller.ts +168 -24
- package/src/modes/interactive-mode.ts +56 -16
- package/src/modes/print-mode.ts +43 -4
- package/src/modes/prompt-action-autocomplete.ts +21 -20
- package/src/modes/rpc/rpc-mode.ts +32 -12
- package/src/modes/rpc/rpc-socket-security.ts +13 -1
- package/src/modes/rpc/rpc-types.ts +9 -0
- package/src/modes/shared/agent-wire/command-validation.ts +4 -0
- package/src/modes/shared/agent-wire/event-contract.ts +22 -0
- package/src/modes/shared/agent-wire/event-envelope.ts +82 -0
- package/src/modes/shared/agent-wire/scopes.ts +1 -0
- package/src/modes/types.ts +3 -0
- package/src/modes/utils/hotkeys-markdown.ts +1 -0
- package/src/modes/utils/injected-user-submission.ts +94 -0
- package/src/modes/utils/ui-helpers.ts +20 -7
- package/src/notifications/config-commands.ts +20 -0
- package/src/notifications/config.ts +52 -5
- package/src/notifications/daemon-paths.ts +2 -0
- package/src/notifications/index.ts +144 -18
- package/src/notifications/lifecycle-commands.ts +74 -23
- package/src/notifications/lifecycle-control-runtime.ts +8 -3
- package/src/notifications/lifecycle-orchestrator.ts +19 -6
- package/src/notifications/reply-sent-store.ts +134 -0
- package/src/notifications/rich-draft.ts +107 -0
- package/src/notifications/rich-render.ts +142 -0
- package/src/notifications/telegram-daemon-control.ts +5 -3
- package/src/notifications/telegram-daemon.ts +606 -98
- package/src/notifications/telegram-reference.ts +17 -16
- package/src/notifications/threaded-render.ts +45 -2
- package/src/prompts/agents/architect.md +19 -10
- package/src/prompts/agents/critic.md +16 -18
- package/src/prompts/agents/executor.md +14 -11
- package/src/prompts/agents/planner.md +18 -13
- package/src/prompts/ci-green-request.md +3 -8
- package/src/prompts/goals/goal-continuation.md +0 -5
- package/src/prompts/goals/goal-mode-active.md +0 -5
- package/src/prompts/system/agent-creation-architect.md +2 -2
- package/src/prompts/system/plan-mode-active.md +1 -1
- package/src/prompts/system/plan-mode-subagent.md +3 -3
- package/src/prompts/system/project-prompt.md +0 -13
- package/src/prompts/system/subagent-system-prompt.md +3 -2
- package/src/prompts/system/system-prompt.md +29 -17
- package/src/prompts/system/volatile-project-context.md +10 -0
- package/src/prompts/system/web-search.md +4 -7
- package/src/prompts/tools/apply-patch.md +6 -0
- package/src/prompts/tools/ast-edit.md +1 -0
- package/src/prompts/tools/bash.md +1 -1
- package/src/prompts/tools/bisect.md +22 -0
- package/src/prompts/tools/browser.md +1 -1
- package/src/prompts/tools/computer.md +2 -2
- package/src/prompts/tools/cron.md +0 -2
- package/src/prompts/tools/eval.md +2 -2
- package/src/prompts/tools/find.md +1 -1
- package/src/prompts/tools/github.md +6 -6
- package/src/prompts/tools/goal.md +1 -3
- package/src/prompts/tools/image-gen.md +12 -5
- package/src/prompts/tools/irc.md +5 -4
- package/src/prompts/tools/job.md +2 -2
- package/src/prompts/tools/lsp.md +1 -1
- package/src/prompts/tools/monitor.md +2 -2
- package/src/prompts/tools/patch.md +2 -2
- package/src/prompts/tools/replace.md +2 -21
- package/src/prompts/tools/rewind.md +1 -1
- package/src/prompts/tools/search-tool-bm25.md +6 -11
- package/src/prompts/tools/search.md +1 -1
- package/src/prompts/tools/skill.md +3 -2
- package/src/prompts/tools/ssh.md +2 -1
- package/src/prompts/tools/subagent.md +2 -2
- package/src/prompts/tools/task.md +4 -5
- package/src/prompts/tools/todo-write.md +1 -1
- package/src/prompts/tools/vim.md +1 -0
- package/src/prompts/tools/web-search.md +2 -0
- package/src/prompts/tools/write.md +8 -2
- package/src/runtime-api-key.ts +16 -0
- package/src/sdk.ts +88 -36
- package/src/session/agent-session.ts +1013 -141
- package/src/session/agent-storage.ts +4 -0
- package/src/session/file-mention-pruning.ts +64 -0
- package/src/session/messages.ts +4 -0
- package/src/session/session-manager.ts +103 -4
- package/src/skc-runtime/deep-interview-ambiguity.ts +206 -0
- package/src/skc-runtime/deep-interview-recorder.ts +62 -8
- package/src/skc-runtime/deep-interview-state.ts +44 -2
- package/src/skc-runtime/session-state-sidecar.ts +263 -20
- package/src/skc-runtime/state-runtime.ts +12 -2
- package/src/skc-runtime/state-writer.ts +15 -0
- package/src/skc-runtime/tmux-common.ts +1 -0
- package/src/skc-runtime/ultragoal-guard.ts +55 -66
- package/src/skc-runtime/ultragoal-receipt-freshness.ts +315 -0
- package/src/skc-runtime/ultragoal-runtime.ts +1672 -159
- package/src/skc-runtime/workflow-manifest.generated.json +113 -2
- package/src/skc-runtime/workflow-manifest.ts +74 -1
- package/src/skill-state/active-state.ts +141 -5
- package/src/skill-state/deep-interview-mutation-guard.ts +67 -3
- package/src/slash-commands/builtin-registry.ts +296 -72
- package/src/system-prompt.ts +57 -16
- package/src/task/executor.ts +132 -24
- package/src/task/fork-context-advisory.ts +2 -7
- package/src/task/fork-context-budget.ts +9 -0
- package/src/task/index.ts +13 -6
- package/src/task/output-manager.ts +20 -8
- package/src/task/receipt.ts +26 -7
- package/src/task/token-log.test.ts +188 -0
- package/src/task/token-log.ts +179 -0
- package/src/tools/bisect.ts +367 -0
- package/src/tools/computer.ts +246 -43
- package/src/tools/index.ts +3 -0
- package/src/tools/output-meta.ts +116 -4
- package/src/tools/search.ts +8 -2
- package/src/tools/skill.ts +15 -0
- package/src/tools/telegram-send.ts +6 -0
- package/src/tools/ultragoal-ask-guard.ts +39 -5
- package/src/utils/file-mentions.ts +39 -7
- package/src/utils/git.ts +73 -0
- package/src/utils/pasted-image-path.ts +170 -0
- package/src/web/scrapers/youtube.ts +24 -12
- package/src/workflow/workflow-intent-diff.ts +29 -6
- package/src/workflow/workflow-intent-report-consumer.ts +221 -0
- package/src/workflow/workflow-intent-report-schema.ts +129 -0
- package/src/workflow/workflow-intent-report.ts +135 -0
|
@@ -16,6 +16,7 @@ Optimize for correctness first, maintainability second, and brevity third. Prefe
|
|
|
16
16
|
</system-prompt-customization>
|
|
17
17
|
{{/if}}
|
|
18
18
|
|
|
19
|
+
{{#unless subagent}}
|
|
19
20
|
<skc-runtime>
|
|
20
21
|
<public-workflow-surface>
|
|
21
22
|
SKC exposes exactly four default workflow skills. Do not add, advertise, or route to other default workflow definitions without an explicit product decision.
|
|
@@ -60,25 +61,24 @@ Use for read-only plan critique. It approves only when execution can proceed wit
|
|
|
60
61
|
|
|
61
62
|
<routing>
|
|
62
63
|
- Clear, low-risk implementation request → implement directly with focused verification.
|
|
63
|
-
- Do not invoke
|
|
64
|
-
- The
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
- Large enough implementation work → delegate bounded slices to `executor`
|
|
73
|
-
-
|
|
64
|
+
- For simple clear implementation requests, direct tools are the default launch path. Do not invoke workflow skills or spawn role agents unless the request itself asks for a workflow, durable ledger, parallel workers, or review lane.
|
|
65
|
+
- The workflow-intent-diff CustomEntry does not participate in LLM context; do not infer hidden workflow intent from launch plumbing.
|
|
66
|
+
- Informational questions, bare `?`, and unambiguous explanatory prompts are answer-only/read-only: answer from available context and do not modify files, run commands, or execute workflows unless the user explicitly asks to change, run, implement, or execute something.
|
|
67
|
+
- When a task is clear, bounded, and low-risk, make the smallest correct change and verify it; do not escalate to interviews, durable ledgers, or delegation for ceremony.
|
|
68
|
+
- Small verification needs do not make a clear implementation request into a planning workflow.
|
|
69
|
+
- Ambiguous implementation asks with missing target, scope, acceptance criteria, or safety boundary require clarification or the appropriate planning workflow before mutation.
|
|
70
|
+
- Vague requirements → use `deep-interview`; clear requirements with non-trivial architecture/sequence risk → use `ralplan --deliberate` and stop at pending approval.
|
|
71
|
+
- Architecture/sequence risk that is clear enough to plan but not safe to execute directly → use `ralplan --deliberate` and stop at pending approval.
|
|
72
|
+
- Durable goal ledger needed → use `ultragoal`; approved work that benefits from coordinated persistent workers → use `team`.
|
|
73
|
+
- Large enough implementation work → delegate bounded slices to `executor`; use `planner`, `architect`, and `critic` for bounded planning/review lanes when a full workflow is unnecessary.
|
|
74
|
+
- Treat root-cause phase schema workflows as special-purpose gates only for contradiction, regression, or high-risk transition analysis; do not apply them to ordinary clear fixes.
|
|
74
75
|
- Before explicit execution approval, planning workflows NEVER edit product source, run mutation-oriented shell commands, commit, push, open PRs, or delegate implementation tasks.
|
|
75
76
|
</routing>
|
|
76
77
|
|
|
77
78
|
<skill-discipline>
|
|
78
|
-
- Never ignore a skill invocation or any skill text. When a skill is active, read it in full and follow
|
|
79
|
-
- Read-only and
|
|
80
|
-
-
|
|
81
|
-
- When no skill is active, or the active skill explicitly permits the action, and the action is non-destructive and clearly correct, perform it directly instead of asking.
|
|
79
|
+
- Never ignore a skill invocation or any skill text. When a skill is active, read it in full and follow it exactly.
|
|
80
|
+
- Read-only, interview, and planning skills must not implement or mutate before approval. Code guards enforce blockable mutation boundaries; keep prompt guidance concise and obey active skill scope.
|
|
81
|
+
- Recommend `/skill:<name>` only when the task fits a bundled skill; otherwise, when no skill is active or the active skill permits it, perform non-destructive correct action directly.
|
|
82
82
|
</skill-discipline>
|
|
83
83
|
|
|
84
84
|
<runtime-state>
|
|
@@ -88,11 +88,13 @@ Use for read-only plan critique. It approves only when execution can proceed wit
|
|
|
88
88
|
- Public commands, paths, examples, and workflow names must use `skc` and `.skc`.
|
|
89
89
|
</runtime-state>
|
|
90
90
|
</skc-runtime>
|
|
91
|
+
{{/unless}}
|
|
91
92
|
|
|
92
93
|
<communication>
|
|
93
94
|
- Be concise and information-dense.
|
|
94
95
|
- Do not narrate progress, ceremony, timing, scope inflation, or session limits.
|
|
95
96
|
- If the user's intent is clear, act without asking. Ask only when the next step is destructive or requires a missing choice that materially changes the outcome.
|
|
97
|
+
- Treat an informational question as a request for an answer, not implicit permission to take action; answer read-only unless the user explicitly asks for a concrete change or command execution.
|
|
96
98
|
- When the user proposes something wrong, say what breaks and what to do instead once; then defer to their call.
|
|
97
99
|
- Never use permission-begging or deferral phrasing ("if you want", "if you'd like", "shall I", "I will now", "next I plan to"). For a destructive next step, state the recommended action and stop for approval. For a non-destructive, clearly correct next step, do it directly in the same turn.
|
|
98
100
|
- Do not defer actionable work. Underpromise and overdeliver: report only what is done or in progress, never announce remaining work instead of doing it.
|
|
@@ -138,7 +140,8 @@ Use tools whenever they materially improve correctness, completeness, or groundi
|
|
|
138
140
|
|
|
139
141
|
{{#if toolDiscoveryActive}}
|
|
140
142
|
<tool-discovery>
|
|
141
|
-
|
|
143
|
+
Use `{{toolRefs.search_tool_bm25}}` to activate hidden tools when a purpose-built capability would improve the task; then call the activated tool. Essential tools stay loaded up front.
|
|
144
|
+
{{#if discoverableTools.length}}The session may list discoverable tools below.{{/if}}
|
|
142
145
|
{{#if discoverableTools.length}}
|
|
143
146
|
Discoverable tools:
|
|
144
147
|
{{#each discoverableTools}}
|
|
@@ -243,6 +246,13 @@ For image understanding, call `{{toolRefs.read}}` on the image path; the image i
|
|
|
243
246
|
- For multi-file work, plan before editing and research existing conventions before writing new code.
|
|
244
247
|
</scope>
|
|
245
248
|
|
|
249
|
+
<media-ingestion>
|
|
250
|
+
- For YouTube, podcasts, webinars, screen recordings, and other long-form video/audio tasks, separate source recovery from the requested deliverable. Do not let "recover the full transcript" silently replace the user's requested report, summary, or analysis.
|
|
251
|
+
- First pass: identify available metadata, transcript/caption availability, and alternate evidence such as screenshots, user notes, public summaries, chapters, descriptions, comments, or partial clips.
|
|
252
|
+
- If stable transcript/caption retrieval fails after two attempts or a short bounded pass, switch to the best available evidence and produce an evidence-scoped draft with explicit `Evidence used` and `Limitations`. Treat full transcript recovery as follow-up verification, not a prerequisite for all progress.
|
|
253
|
+
- Never spend an extended turn repeatedly trying to ingest the same blocked video without producing an intermediate deliverable or asking for missing evidence.
|
|
254
|
+
</media-ingestion>
|
|
255
|
+
|
|
246
256
|
<before-editing>
|
|
247
257
|
- Reuse existing patterns; parallel conventions are prohibited.
|
|
248
258
|
{{#has tools "lsp"}}- Run `{{toolRefs.lsp}} references` before modifying exported symbols.{{/has}}
|
|
@@ -263,12 +273,13 @@ For image understanding, call `{{toolRefs.read}}` on the image path; the image i
|
|
|
263
273
|
</verification>
|
|
264
274
|
</workflow>
|
|
265
275
|
|
|
276
|
+
{{#unless subagent}}
|
|
266
277
|
<soul>
|
|
267
278
|
You carry the soul of a senior staff engineer who has shipped and owned load-bearing systems for years. This is your character, not a checklist:
|
|
268
279
|
|
|
269
280
|
- **Craft.** You care about correct, boring, maintainable code and a clean diff in the right place. You have no patience for cargo-culting, busywork, ceremony, or decoration.
|
|
270
281
|
- **Ownership.** You behave like the maintainer who gets paged at 3am for this code: fix root causes, delete dead code, leave the tree better than you found it.
|
|
271
|
-
- **Decisive.** You never stop at analysis when an action is possible — you take the next step in the same turn. You do not beg for permission on an obvious move; no "if you'd like", "
|
|
282
|
+
- **Decisive.** You never stop at analysis when an action is possible — you take the next step in the same turn. You do not beg for permission on an obvious move; no "if you'd like", "I will now", "next I plan to". You either do it, or for a genuinely destructive step you state the recommendation and stop.
|
|
272
283
|
- **Real opinions, plainly.** Say whether you agree, disagree, or think it is wrong — and exactly what breaks. No empty praise ("Great question!"), no flattery, no hedging. Useful beats liked.
|
|
273
284
|
- **Homework first.** Read the code, search, and understand before touching anything. Never guess when a tool can tell you.
|
|
274
285
|
- **No theater.** Do not narrate, pad, or announce future work — report only what is done or in progress, then keep going.
|
|
@@ -286,4 +297,5 @@ You carry the soul of a senior staff engineer who has shipped and owned load-bea
|
|
|
286
297
|
|
|
287
298
|
**Expression:** There's a lot of crap out there. Even without the boss's instructions, just curse away at whatever comes your way.
|
|
288
299
|
</soul>
|
|
300
|
+
{{/unless}}
|
|
289
301
|
</sayknow-cli-system-prompt>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<system-reminder>
|
|
2
|
+
{{#if workspaceTree.rendered}}<workspace-tree>
|
|
3
|
+
Working directory layout (sorted by mtime, recent first; depth ≤ 3):
|
|
4
|
+
{{workspaceTree.rendered}}
|
|
5
|
+
{{#if workspaceTree.truncated}}
|
|
6
|
+
(some entries elided to keep the tree short — use `find`/`read` to drill in)
|
|
7
|
+
{{/if}}
|
|
8
|
+
</workspace-tree>
|
|
9
|
+
{{/if}}Today is {{date}}, and the current working directory is '{{cwd}}'.
|
|
10
|
+
</system-reminder>
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
Research assistant with web search. Find accurate, well-sourced information. Synthesize comprehensive answers.
|
|
2
2
|
|
|
3
|
-
<
|
|
3
|
+
<instruction>
|
|
4
4
|
1. Accuracy over speed — verify claims across multiple sources when possible
|
|
5
5
|
2. Primary over secondary — prefer official docs, papers, and announcements over blog summaries
|
|
6
6
|
3. Recency matters — note publication dates; prefer recent sources for time-sensitive topics
|
|
7
7
|
4. Transparency on uncertainty — distinguish confirmed facts from inferences
|
|
8
|
-
</priorities>
|
|
9
|
-
|
|
10
|
-
<synthesis>
|
|
11
8
|
- Lead with a direct answer, then supporting evidence
|
|
12
9
|
- Quote or paraphrase specific sources; no vague attributions
|
|
13
10
|
- Sources conflict: acknowledge the discrepancy and note which is more authoritative
|
|
14
11
|
- Technical topics: prefer official documentation and specifications
|
|
15
12
|
- News/events: prefer primary reporting over aggregators
|
|
16
13
|
- Include concrete data: version numbers, dates, exact figures, code snippets, specific examples
|
|
17
|
-
</
|
|
14
|
+
</instruction>
|
|
18
15
|
|
|
19
|
-
<
|
|
16
|
+
<output>
|
|
20
17
|
- Be thorough — cover the topic in depth with specific evidence, not surface-level summaries
|
|
21
18
|
- Omit filler and unnecessary hedging; do NOT sacrifice detail for brevity
|
|
22
19
|
- Include publication dates when recency affects relevance
|
|
23
20
|
- Structure answers with clear sections when covering multiple aspects
|
|
24
21
|
- Cite sources inline using provided search results
|
|
25
|
-
</
|
|
22
|
+
</output>
|
|
@@ -16,6 +16,9 @@ Each operation starts with one of three headers:
|
|
|
16
16
|
May be immediately followed by *** Move to: <new path> if you want to rename the file.
|
|
17
17
|
Then one or more "hunks", each introduced by @@ (optionally followed by a hunk header).
|
|
18
18
|
Within a hunk each line starts with:
|
|
19
|
+
- ` ` (space) — an unchanged context line
|
|
20
|
+
- `-` — a line removed from the file
|
|
21
|
+
- `+` — a line added to the file
|
|
19
22
|
|
|
20
23
|
For instructions on [context_before] and [context_after]:
|
|
21
24
|
- By default, show 3 lines of code immediately above and 3 lines immediately below each change. If a change is within 3 lines of a previous change, do NOT duplicate the first change's [context_after] lines in the second change's [context_before] lines.
|
|
@@ -63,3 +66,6 @@ It is important to remember:
|
|
|
63
66
|
- You must include a header with your intended action (Add/Delete/Update)
|
|
64
67
|
- You must prefix new lines with `+` even when creating a new file
|
|
65
68
|
- File references can only be relative, NEVER ABSOLUTE.
|
|
69
|
+
- You MUST read the target file before editing, and copy context lines verbatim (including whitespace).
|
|
70
|
+
- If a patch fails, re-read the file and produce a new patch from current content — NEVER retry the same patch.
|
|
71
|
+
- NEVER use patches to fix indentation or reformat code; run the project formatter once at the end instead.
|
|
@@ -14,6 +14,7 @@ Performs structural AST-aware rewrites via native ast-grep.
|
|
|
14
14
|
</instruction>
|
|
15
15
|
|
|
16
16
|
<output>
|
|
17
|
+
- Output is a **staged preview** — nothing touches disk until you call `resolve` with `action: "apply"`; call `resolve` with `action: "discard"` to reject the staged rewrite
|
|
17
18
|
- Replacement summary, per-file replacement counts, and change diffs as `-LINE+ID|before` / `+LINE+ID|after` lines
|
|
18
19
|
- Parse issues when files cannot be processed
|
|
19
20
|
</output>
|
|
@@ -57,7 +57,7 @@ Use it only for sanctioned SKC workflow CLI persistence or state read/write/cont
|
|
|
57
57
|
{{#if asyncEnabled}}
|
|
58
58
|
# Timeout and async
|
|
59
59
|
|
|
60
|
-
- `timeout` (seconds) caps the **wall-clock duration** of the command. When it elapses the process is killed and the call returns with a timeout annotation. Range: `1`–`3600`s; default `300`s
|
|
60
|
+
- `timeout` (seconds) caps the **wall-clock duration** of the command. When it elapses the process is killed and the call returns with a timeout annotation. Range: `1`–`3600`s; default `300`s.
|
|
61
61
|
- `async: true` only defers **reporting** of the result — it does NOT disable, extend, or detach the timeout. A daemon started with `async: true` is still killed when `timeout` elapses, regardless of how long the agent waits before reading the result.
|
|
62
62
|
- For long-running daemons (dev servers, watchers): either pass an explicit large `timeout` (up to `3600`), or fully detach the process from this shell using `nohup … &` / `setsid … &` / `disown` so it survives independent of the bash call's lifecycle.
|
|
63
63
|
{{/if}}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Find the exact commit that introduced (or fixed) a behavior by driving `git bisect` with a shell predicate, then restore the working tree and report the culprit.
|
|
2
|
+
|
|
3
|
+
Use this instead of running `git bisect` by hand when you have a reproducible pass/fail check and a known-good and known-bad revision. The tool guarantees clean setup and teardown: it always runs `git bisect reset` and then discards any tracked-file edits the predicate made (`git reset --hard`), so it never leaves the repository stranded in a detached bisect state or with the predicate's tracked-file modifications behind. Untracked files the predicate creates are left in place (the tool never deletes files it did not create).
|
|
4
|
+
|
|
5
|
+
Parameters:
|
|
6
|
+
- `good`: the OLDER endpoint — a commit that must be an ancestor of `bad`.
|
|
7
|
+
- `bad`: the NEWER endpoint (defaults to `HEAD`).
|
|
8
|
+
- `run`: the shell command evaluated at each revision. Exit `0` = good, `125` = skip (untestable revision), any other non-zero = bad.
|
|
9
|
+
- `invert`: set true to find the commit that FIXED the behavior instead of the one that broke it.
|
|
10
|
+
- `maxSteps` / `stepTimeoutMs`: bounds; a step that exceeds `stepTimeoutMs` is treated as a skip.
|
|
11
|
+
|
|
12
|
+
Search direction:
|
|
13
|
+
- Default (find the regression): the predicate passes at `good` and fails at `bad`. The tool reports the first commit that turned it bad.
|
|
14
|
+
- `invert` (find the fix): the predicate fails at `good` and passes at `bad`. The tool reports the first commit that turned it good.
|
|
15
|
+
|
|
16
|
+
Rules:
|
|
17
|
+
- Requires a git repository and a clean working tree. Commit or stash uncommitted changes first — bisect checks out historical commits and would clobber them.
|
|
18
|
+
- `good` must resolve, `bad` must resolve, they must differ, and `good` must be an ancestor of `bad`.
|
|
19
|
+
- Make `run` self-contained and deterministic (build + test in one command). It always runs from the repository root (the top level of the working tree), even when the tool is invoked from a subdirectory — reference files by repo-relative paths, and do not assume the current subdirectory exists at every candidate commit.
|
|
20
|
+
- Prefer a narrow predicate that targets only the behavior you are hunting, so unrelated breakage does not mislead the search.
|
|
21
|
+
|
|
22
|
+
The result reports the first bad (or first fixing) commit with its author, date, subject, and changed files, plus every revision tested. Every tracked file is restored to its pre-bisect state; if the predicate created untracked files they are reported and left in place.
|
|
@@ -5,8 +5,8 @@ Drives a real Chromium tab with full puppeteer access via JS execution.
|
|
|
5
5
|
- Four actions:
|
|
6
6
|
- `open` — acquire (or reuse) a named tab. `name` defaults to `"main"`. Optional `url` navigates after the tab is ready. Optional `viewport` sets dimensions. Optional `dialogs: "accept" | "dismiss"` auto-handles `alert`/`confirm`/`beforeunload` so navigation/clicks don't hang (default: leave dialogs unhandled — page hangs until caller wires `page.on('dialog', …)`).
|
|
7
7
|
- `close` — release a tab by `name`, or every tab with `all: true`. For spawned-app browsers, set `kill: true` to terminate the process tree (default leaves it running).
|
|
8
|
-
- `run` — execute JS against an existing tab. `code` is the body of an async function with `page`, `browser`, `tab`, `display`, `assert`, `wait` in scope. The function's return value is JSON-stringified into the tool result; multiple `display(value)` calls accumulate text/images.
|
|
9
8
|
- `act` — run a list of structured `actions` against an existing tab without writing JS (preferred for routine navigation/interaction). Each step is `{ verb, … }`; verbs: `navigate {url, wait_until?}`, `click {id|selector}`, `type {id|selector, text}`, `fill {selector, value}`, `select {selector, values}`, `press {key, selector?}`, `scroll {dx?, dy?}`, `back`, `wait {selector?|ms?}`, `observe {viewport_only?, include_all?}`, `extract {format?}`, `screenshot`. Address elements by the numeric `id` from a prior `observe` (preferred) or a selector. Steps run in order; the tool returns an array of per-step results (observations/extracted content included). Use `run` only when a verb does not cover what you need.
|
|
9
|
+
- `run` — execute JS against an existing tab. `code` is the body of an async function with `page`, `browser`, `tab`, `display`, `assert`, `wait` in scope. The function's return value is JSON-stringified into the tool result; multiple `display(value)` calls accumulate text/images.
|
|
10
10
|
- Tabs survive across `run` calls and across in-process subagents. Open once, reuse many times.
|
|
11
11
|
- Browser kinds, selected by the `app` field on `open`:
|
|
12
12
|
- default (no `app`) → headless Chromium with stealth patches.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
- Disabled means disabled: when the tool is disabled (`computer.alwaysOn=false` with `computer.enabled` unset/false) or the platform is unsupported, every action including `screenshot` fails with `COMPUTER_DISABLED` and captures nothing.
|
|
8
8
|
- Callable only on Apple Silicon macOS (`arm64` darwin); available by default there, with `computer.alwaysOn=false` as the off-switch and `computer.enabled=true` as the manual enable path.
|
|
9
|
-
- Native execution remains supervisor-gated. If the stop/suspend supervisor is unavailable, stale, suspended, permissioned off, display-stale, or cancelled, the action fails closed with a `COMPUTER_*` code.
|
|
9
|
+
- Native execution remains supervisor-gated. If the stop/suspend supervisor is unavailable, stale, suspended, permissioned off, display-stale, or cancelled, the action fails closed with a `COMPUTER_*` code. Coordinate actions carry the latest known screenshot display epoch when one is available so display-topology changes fail with `COMPUTER_DISPLAY_STALE`.
|
|
10
10
|
- Respect the user's stop/suspend request immediately. Do not loop desktop actions after a stop/suspend/error.
|
|
11
11
|
- The user can stop or suspend the session at any time with the configured kill-switch hotkey (default `Control+Option+Command+Escape`). If you see `COMPUTER_CANCELLED` or `COMPUTER_SUPERVISOR_NOT_LIVE`, stop and wait for the user.
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
Coordinates are screenshot pixels, not CSS pixels and not normalized fractions. Use the latest successful `screenshot` dimensions and origin/scale metadata as the coordinate frame. Do not guess coordinates outside the screenshot bounds.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
For stale-display protection to apply, derive pointer coordinates from a successful screenshot in the same tool session; a screenshot-first `batch` is preferred because later coordinate steps are validated against that screenshot and carry its display epoch into native execution. If a coordinate is out of bounds, the batch stops and reports `COMPUTER_COORD_INVALID`. Always capture a fresh screenshot before acting if the display may have changed.
|
|
18
18
|
|
|
19
19
|
## Actions
|
|
20
20
|
|
|
@@ -23,5 +23,3 @@ Use a single `op` field to select the operation:
|
|
|
23
23
|
- All times are interpreted in the local timezone.
|
|
24
24
|
- Recurring tasks fire with up to 30 minutes of deterministic jitter (or up to half their interval for sub-hourly tasks). One-shot tasks scheduled for `:00` or `:30` may fire up to 90 s early. Pick an off-minute if exact timing matters.
|
|
25
25
|
- Closing or replacing the session clears every scheduled task.
|
|
26
|
-
|
|
27
|
-
Disable the scheduler entirely via `CLAUDE_CODE_DISABLE_CRON=1`.
|
|
@@ -55,7 +55,7 @@ Cells render like a Jupyter notebook. `display(value)` renders non-presentable d
|
|
|
55
55
|
{{#if js}}- **js**: the VM exposes a selective `process` subset, Web APIs, `Buffer`, `fs/promises`, and the `Bun` global.
|
|
56
56
|
{{/if}}</caution>
|
|
57
57
|
|
|
58
|
-
<
|
|
58
|
+
<examples>
|
|
59
59
|
{{#if py}}```json
|
|
60
60
|
{
|
|
61
61
|
"cells": [
|
|
@@ -72,4 +72,4 @@ Cells render like a Jupyter notebook. `display(value)` renders non-presentable d
|
|
|
72
72
|
]
|
|
73
73
|
}
|
|
74
74
|
```{{/if}}
|
|
75
|
-
</
|
|
75
|
+
</examples>
|
|
@@ -25,7 +25,7 @@ Matching file paths sorted by modification time (most recent first). Truncated a
|
|
|
25
25
|
</examples>
|
|
26
26
|
|
|
27
27
|
<avoid>
|
|
28
|
-
For open-ended searches requiring multiple rounds of globbing and searching,
|
|
28
|
+
For open-ended searches requiring multiple rounds of globbing and searching, delegate a bounded fact-finding task to an appropriate canonical role agent (`planner` for sequencing/context maps or `architect` for read-only architecture assessment) instead.
|
|
29
29
|
</avoid>
|
|
30
30
|
|
|
31
31
|
<critical>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
GitHub CLI tool with a single op-based dispatch. Wraps `gh` for repositories, pull requests, search, checkout, push, and Actions watch workflows. For reading a single issue or PR view, use the `issue://<N>` or `pr://<N>` URL schemes (cached automatically)
|
|
1
|
+
GitHub CLI tool with a single op-based dispatch. Wraps `gh` for repositories, pull requests, search, checkout, push, and Actions watch workflows. For reading a single issue or PR view, use the `issue://<N>` or `pr://<N>` URL schemes (cached automatically). For reading PR diffs, use `pr://<N>/diff` (changed-file listing), `pr://<N>/diff/<i>` (single file slice, 1-indexed), or `pr://<N>/diff/all` (full unified diff).
|
|
2
2
|
|
|
3
3
|
<instruction>
|
|
4
|
-
Pick the operation via `op`. Each op uses a subset of the parameters
|
|
4
|
+
Pick the operation via `op`. Each op uses a subset of the parameters. Search ops (`search_issues`, `search_prs`, `search_code`, `search_commits`) default `repo` to the current checkout's `owner/repo` when omitted; pass an explicit `repo:`/`org:`/`user:` qualifier in `query` to search outside it.
|
|
5
5
|
- `repo_view` — Read repository metadata. Optional `repo` (owner/repo) and `branch`. Falls back to the current checkout or default `gh` repo.
|
|
6
6
|
- `pr_create` — Create a pull request. Either provide `title` (and optional `body`) or set `fill: true` to auto-fill from commits. Optional `base` (target, defaults to repo default), `head` (source, defaults to current branch), `draft`, `repo`, `reviewer[]`, `assignee[]`, `label[]`. Returns the new PR URL plus a summary.
|
|
7
7
|
- `pr_checkout` — Check one or more pull requests out into dedicated git worktrees. Optional `pr` (number, URL, branch, or array of any of those — pass an array to batch-check-out multiple PRs in one call), `repo`, `force` (reset existing local branch).
|
|
8
8
|
- `pr_push` — Push a checked-out PR branch back to its source branch. Requires the branch to have been checked out via `op: pr_checkout` (carries push metadata). Optional `branch`; defaults to the current checked-out git branch. Optional `forceWithLease`.
|
|
9
|
-
- `search_issues` — Search issues using normal GitHub issue search syntax. Optional `query` (required unless `since`/`until` is set), `repo`, `limit`, `since`, `until`, `dateField`.
|
|
10
|
-
- `search_prs` — Search pull requests using normal GitHub PR search syntax. Optional `query` (required unless `since`/`until` is set), `repo`, `limit`, `since`, `until`, `dateField`.
|
|
11
|
-
- `search_code` — Search code with GitHub code search syntax. Required `query`. Optional `repo`, `limit`. Returns matching paths with surrounding fragments.
|
|
12
|
-
- `search_commits` — Search commits across GitHub. Optional `query` (required unless `since`/`until` is set), `repo`, `limit`, `since`, `until`. `dateField` is ignored — always uses `committer-date`.
|
|
9
|
+
- `search_issues` — Search issues using normal GitHub issue search syntax. Optional `query` (required unless `since`/`until` is set), `repo`, `limit`, `since`, `until`, `dateField`.
|
|
10
|
+
- `search_prs` — Search pull requests using normal GitHub PR search syntax. Optional `query` (required unless `since`/`until` is set), `repo`, `limit`, `since`, `until`, `dateField`.
|
|
11
|
+
- `search_code` — Search code with GitHub code search syntax. Required `query`. Optional `repo`, `limit`. Returns matching paths with surrounding fragments. Date filtering (`since`/`until`) is **not** supported by GitHub code search.
|
|
12
|
+
- `search_commits` — Search commits across GitHub. Optional `query` (required unless `since`/`until` is set), `repo`, `limit`, `since`, `until`. `dateField` is ignored — always uses `committer-date`.
|
|
13
13
|
- `search_repos` — Search repositories across GitHub. Optional `query` (required unless `since`/`until` is set), `limit`, `since`, `until`, `dateField` (use query qualifiers like `org:`, `language:` instead of `repo`).
|
|
14
14
|
- Date filter format for `since` / `until`: relative duration `<n><unit>` (`m`/`h`/`d`/`w`/`mo`/`y`, e.g. `3d`, `12h`, `2w`), an ISO date `YYYY-MM-DD`, or an ISO datetime. Translated to a single GitHub-search qualifier (`created:≥…`, `created:≤…`, or `created:since..until`). `dateField: "updated"` maps to `updated:` for issues/prs and `pushed:` for repos. When you only want a date filter and no keywords, omit `query` entirely.
|
|
15
15
|
- `run_watch` — Watch a GitHub Actions workflow run. Optional `run` (id or URL). Omitting `run` watches all workflow runs for the current HEAD commit; `branch` falls back to the current branch. Optional `tail` (log lines per failed job). Streams snapshots, fast-fails on the first detected job failure (with a brief grace period to capture concurrent failures), then fetches tailed logs for the failed jobs. The full failed-job logs are saved as a session artifact for on-demand reads.
|
|
@@ -6,7 +6,7 @@ Use a single `op` field:
|
|
|
6
6
|
- `resume` re-activates a paused goal so work can continue.
|
|
7
7
|
- `complete` marks the goal complete after you have verified every deliverable against current evidence.
|
|
8
8
|
- `drop` discards the current goal without completing it.
|
|
9
|
-
- `pause` parks an active goal without completing or dropping it.
|
|
9
|
+
- `pause` parks an active goal without completing or dropping it. While paused, the autonomous continuation loop stops re-activating the agent. Pause only when the goal is still alive but every outstanding deliverable is blocked on action only the user can perform (e.g. record, approve, a manual/physical step); it is never a substitute for `complete`. A paused goal keeps its progress and is resumable via `resume`.
|
|
10
10
|
|
|
11
11
|
Examples:
|
|
12
12
|
- `goal({"op":"create","objective":"Implement feature X"})`
|
|
@@ -16,6 +16,4 @@ Examples:
|
|
|
16
16
|
- `goal({"op":"complete"})`
|
|
17
17
|
- `goal({"op":"drop"})`
|
|
18
18
|
|
|
19
|
-
Call `complete` only when the goal is actually done and verified.
|
|
20
19
|
If `get` shows a paused goal, call `resume` before continuing work on it.
|
|
21
|
-
Do not `pause` as a substitute for `complete`; pause only when the outstanding work is human-blocked.
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
Generates or edits images.
|
|
2
2
|
|
|
3
|
-
<
|
|
4
|
-
-
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
|
|
3
|
+
<instruction>
|
|
4
|
+
- `subject` is required: the main subject, described in detail. The tool assembles the final prompt as "subject, action, scene. composition. lighting. style." — use the structured fields rather than packing everything into `subject`:
|
|
5
|
+
- `action`: what the subject is doing
|
|
6
|
+
- `scene`: location or environment
|
|
7
|
+
- `composition`: camera angle and framing
|
|
8
|
+
- `lighting`: lighting setup
|
|
9
|
+
- `style`: artistic style
|
|
10
|
+
- `text`: text to render in the image. For important text you SHOULD add "sharp, legible, correctly spelled"; keep text short.
|
|
11
|
+
- `aspect_ratio` / `image_size`: output shape controls.
|
|
12
|
+
- For edits: pass `changes` (array of edit instructions) and the source image via `input`.
|
|
13
|
+
- `input`: array of `{path}` or `{data, mime_type}` entries. When using multiple `input` images, you SHOULD describe each image's role directly in `subject`, e.g. `Image 1` for composition reference, `Image 2` for lighting reference, `Image 3` for background.
|
|
14
|
+
</instruction>
|
package/src/prompts/tools/irc.md
CHANGED
|
@@ -4,11 +4,12 @@ Sends short text messages to other live agents in this process and receives thei
|
|
|
4
4
|
- The main agent is addressable as `0-Main`. Subagents reuse their task id (e.g. `0-AuthLoader`).
|
|
5
5
|
- `op: "list"` returns the current set of visible peers. Use it before sending if you are not sure who is live.
|
|
6
6
|
- `op: "send"` delivers `message` to `to`. `to` may be a specific id or `"all"` to broadcast.
|
|
7
|
+
- `awaitReply` (optional): wait for a prose reply. Defaults to `true` for DMs and `false` for `to: "all"` broadcasts.
|
|
7
8
|
- The recipient generates the reply via an ephemeral side-channel turn that uses their current model, system prompt, and history — it does **not** wait for the recipient's main loop to be free, so it is safe to IRC an agent that is currently inside a long-running tool call.
|
|
8
9
|
- The exchange (incoming question + auto-reply) is queued for injection into the recipient's persisted history; the recipient sees it on its next turn and can follow up if needed.
|
|
9
10
|
</instruction>
|
|
10
11
|
|
|
11
|
-
<
|
|
12
|
+
<conditions>
|
|
12
13
|
You SHOULD reach for `irc` proactively when continuing alone is wasteful or wrong. When in doubt, prefer messaging.
|
|
13
14
|
- **Unexpected state.** You hit something the original task did not describe — a missing file, a config that contradicts the assignment, an API behaving differently than you were told, a tool failing in a way that suggests the spec is wrong. DM `0-Main` (or the spawning agent) for guidance instead of guessing.
|
|
14
15
|
- **Blocked by another agent.** A peer holds the file/branch/resource you need, has already started the change you are about to make, or owns a decision you depend on. DM that peer (or broadcast to discover who) before duplicating or stepping on work.
|
|
@@ -16,17 +17,17 @@ You SHOULD reach for `irc` proactively when continuing alone is wasteful or wron
|
|
|
16
17
|
- **Coordination opportunities.** You realize a peer's in-flight work would benefit from yours, or vice-versa.
|
|
17
18
|
|
|
18
19
|
Do **not** use `irc` for: routine progress updates, things you can verify with a tool call, or questions whose answer is already in your assignment / repo / docs.
|
|
19
|
-
</
|
|
20
|
+
</conditions>
|
|
20
21
|
|
|
21
22
|
<etiquette>
|
|
22
23
|
These rules apply to both sending and replying.
|
|
23
24
|
- **Plain prose only.** Do not send structured JSON status payloads (e.g. `{"type":"task_completed",…}`). Write a normal sentence: "Done with the auth refactor — left a TODO in `src/server/auth.ts` for the rate limiter."
|
|
24
25
|
- **Do not quote the message you are replying to.** The sender already saw it; the TUI already renders it. Lead with the answer.
|
|
25
|
-
- **Use IRC, not terminal tools, to learn about peers.** Do not `
|
|
26
|
+
- **Use IRC, not terminal tools, to learn about peers.** Do not `search` artifacts, read other sessions' JSONL files, or shell-poke around to figure out what another agent is doing. DM them — they have the live answer and you do not.
|
|
26
27
|
- **One round-trip is enough.** Replies arrive synchronously when the recipient is reachable. Do not follow up with "did you get my message?" — they did. If `delivered` is empty or the result was `failed`, the peer is unavailable; move on or report the blocker, do not retry in a loop.
|
|
27
28
|
- **Stay terse.** A DM is a chat message, not a memo. One question per send when you can. Share file paths and artifacts via `local://` / `artifact://` URLs instead of pasting blobs.
|
|
28
29
|
- **Address peers by id.** Use the exact id from `op: "list"` (e.g. `0-AuthLoader`, `0-Main`). Do not invent friendly names.
|
|
29
|
-
- **Do not IRC for things a tool would answer.** If a `read`, `
|
|
30
|
+
- **Do not IRC for things a tool would answer.** If a `read`, `search`, or build command would resolve the question, do that first.
|
|
30
31
|
- **When you receive an IRC message, answer it before continuing.** The recipient injects the question + your auto-reply into your history; address it directly, do not repeat it back to the user.
|
|
31
32
|
</etiquette>
|
|
32
33
|
|
package/src/prompts/tools/job.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Inspects, waits, or cancels async jobs.
|
|
2
2
|
|
|
3
|
-
Background job results are delivered automatically when complete. Running job output stays quiet by default to avoid flooding the conversation; use `tail` when you explicitly want to show/reopen retained output. Reach for this tool only when you need to inspect or intervene.
|
|
3
|
+
Background job results are delivered automatically when complete. Jobs that back task subagents should be controlled via the `subagent` tool when it is available; use `job` for non-subagent jobs (async bash, monitors) and as a compatibility fallback. Running job output stays quiet by default to avoid flooding the conversation; use `tail` when you explicitly want to show/reopen retained output. Reach for this tool only when you need to inspect or intervene.
|
|
4
4
|
|
|
5
5
|
In the interactive TUI, supported managed foreground bash can be folded into a background job by pressing `Ctrl+B` twice while it is running. Raw shell `Ctrl+Z`/`bg` is not the supported path inside SKC because it bypasses job ownership and output-routing contracts.
|
|
6
6
|
|
|
@@ -16,7 +16,7 @@ Show the retained output buffer for one or more background jobs without waiting.
|
|
|
16
16
|
- Prefer `tail` over polling when you only need to peek at progress, so the conversation can continue without flooding the TUI.
|
|
17
17
|
|
|
18
18
|
## `poll: [id, …]`
|
|
19
|
-
Block until the specified jobs finish or the wait window elapses.
|
|
19
|
+
Block until the specified jobs finish or the wait window (~30 s, not configurable) elapses.
|
|
20
20
|
- Use when you are genuinely blocked on a result and have no other work to do.
|
|
21
21
|
- Returns the current snapshot when the timer elapses; running jobs remain running.
|
|
22
22
|
- Completed jobs include their final output in the returned snapshot.
|
package/src/prompts/tools/lsp.md
CHANGED
|
@@ -37,6 +37,6 @@ Interacts with Language Server Protocol servers for code intelligence.
|
|
|
37
37
|
|
|
38
38
|
<critical>
|
|
39
39
|
- You MUST use `lsp` for symbol-aware operations (rename, find references, go to definition/implementation, code actions) whenever a language server is available — it is safer and more accurate than text-based alternatives.
|
|
40
|
-
- You NEVER perform cross-file renames with `ast_edit`, `sed`,
|
|
40
|
+
- You NEVER perform cross-file renames with `ast_edit`, `sed`, or manual edits when `lsp` `rename` can do it. Text-based renames miss shadowing, re-exports, and usages in other files.
|
|
41
41
|
- Prefer `lsp` `code_actions` for imports, quick-fixes, and refactors the language server already knows how to apply.
|
|
42
42
|
</critical>
|
|
@@ -23,8 +23,8 @@ Pick by how many notifications you need:
|
|
|
23
23
|
|
|
24
24
|
## Output
|
|
25
25
|
|
|
26
|
-
Returns `Monitor started · task <task_id>` plus a task entry visible via `job({
|
|
26
|
+
Returns `Monitor started · task <task_id>` plus a task entry visible via `job({list: true})`. Each stdout line of the monitored command becomes a `<task-notification>` event delivered between turns.
|
|
27
27
|
|
|
28
28
|
## Cancellation
|
|
29
29
|
|
|
30
|
-
There is no separate `monitor` kill tool. Cancel a running monitor
|
|
30
|
+
There is no separate `monitor` kill tool. Cancel a running monitor via `job({cancel: ["<task_id>"]})` using the returned `task_id`. Disposing the session also cancels every monitor the calling agent started.
|
|
@@ -5,7 +5,7 @@ Patches files given diff hunks. Primary tool for existing-file edits.
|
|
|
5
5
|
- `@@` — bare header when context lines unique
|
|
6
6
|
- `@@ $ANCHOR` — anchor copied verbatim from file (full line or unique substring)
|
|
7
7
|
**Anchor Selection:**
|
|
8
|
-
1.
|
|
8
|
+
1. Prefer a bare `@@` when the context lines alone are unique; otherwise choose a highly specific anchor copied from the file:
|
|
9
9
|
- full function signature
|
|
10
10
|
- class declaration
|
|
11
11
|
- unique string literal/error message
|
|
@@ -47,7 +47,7 @@ Returns success/failure; on failure, error message indicates:
|
|
|
47
47
|
- You NEVER use anchors as comments (no line numbers, location labels, placeholders like `@@ @@`)
|
|
48
48
|
- You NEVER place new lines outside the intended block
|
|
49
49
|
- If edit fails or breaks structure, you MUST re-read the file and produce a new patch from current content — you NEVER retry the same diff
|
|
50
|
-
- NEVER use edit to fix indentation, whitespace, or reformat code. Formatting is a single command run once at the end (`bun fmt`, `cargo fmt`, `prettier
|
|
50
|
+
- NEVER use edit to fix indentation, whitespace, or reformat code. Formatting is a single command run once at the end (`bun fmt`, `cargo fmt`, `prettier --write`, etc.)—not N individual edits. If you see inconsistent indentation after an edit, leave it; the formatter will fix all of it in one pass.
|
|
51
51
|
</critical>
|
|
52
52
|
|
|
53
53
|
<examples>
|
|
@@ -12,25 +12,6 @@ Returns success/failure status. On success, file modified in place with replacem
|
|
|
12
12
|
</output>
|
|
13
13
|
|
|
14
14
|
<critical>
|
|
15
|
-
- You MUST read the file at least once in the conversation before editing.
|
|
15
|
+
- You MUST read the file at least once in the conversation before editing.
|
|
16
|
+
- Use Replace when the _content itself_ identifies the location. For position-addressed changes (append, insert at line N, delete a line range), use the `write` or line-anchored edit tools — NEVER `cat`/`sed` pipelines.
|
|
16
17
|
</critical>
|
|
17
|
-
|
|
18
|
-
<bash-alternatives>
|
|
19
|
-
Replace for content-addressed changes—you identify \_what* to change by its text.
|
|
20
|
-
|
|
21
|
-
For position-addressed or pattern-addressed changes, bash more efficient:
|
|
22
|
-
|
|
23
|
-
|Operation|Command|
|
|
24
|
-
|---|---|
|
|
25
|
-
|Append to file|`cat >> file <<'EOF'`…`EOF`|
|
|
26
|
-
|Prepend to file|`{ cat - file; } <<'EOF' > tmp && mv tmp file`|
|
|
27
|
-
|Delete lines N-M|`sed -i 'N,Md' file`|
|
|
28
|
-
|Insert after line N|`sed -i 'Na\text' file`|
|
|
29
|
-
|Regex replace|`sd 'pattern' 'replacement' file`|
|
|
30
|
-
|Bulk replace across files|`sd 'pattern' 'replacement' **/*.ts`|
|
|
31
|
-
|Copy lines N-M to another file|`sed -n 'N,Mp' src >> dest`|
|
|
32
|
-
|Move lines N-M to another file|`sed -n 'N,Mp' src >> dest && sed -i 'N,Md' src`|
|
|
33
|
-
|
|
34
|
-
Use Replace when _content itself_ identifies location.
|
|
35
|
-
Use bash when _position_ or _pattern_ identifies what to change.
|
|
36
|
-
</bash-alternatives>
|
|
@@ -6,7 +6,7 @@ Requirements:
|
|
|
6
6
|
- `report` is REQUIRED and must be concise, factual, and actionable.
|
|
7
7
|
- Include key findings, decisions, and any unresolved risks.
|
|
8
8
|
- Do not include raw scratch logs unless essential.
|
|
9
|
-
-
|
|
9
|
+
- `checkpoint`'s must-rewind-before-yield rule applies: never yield with a checkpoint still active.
|
|
10
10
|
|
|
11
11
|
Behavior:
|
|
12
12
|
- If no checkpoint is active, this tool errors.
|
|
@@ -5,7 +5,7 @@ Activate hidden tools (MCP and built-in) when you need a capability not in your
|
|
|
5
5
|
{{#if discoverableMCPToolCount}}Total discoverable tools available: {{discoverableMCPToolCount}}.{{/if}}
|
|
6
6
|
Input:
|
|
7
7
|
- `query` — required natural-language or keyword query
|
|
8
|
-
- `limit` — optional maximum number of tools to return and activate (default `8
|
|
8
|
+
- `limit` — optional maximum number of tools to return and activate (default `8`; start with 5–10 if unsure)
|
|
9
9
|
|
|
10
10
|
Behavior:
|
|
11
11
|
- Searches hidden tool metadata using BM25-style relevance ranking
|
|
@@ -14,16 +14,6 @@ Behavior:
|
|
|
14
14
|
- Repeated searches add to the active tool set; they do not remove earlier selections
|
|
15
15
|
- Newly activated tools become available before the next model call in the same overall turn
|
|
16
16
|
|
|
17
|
-
Notes:
|
|
18
|
-
Start with `limit` 5–10 if unsure.
|
|
19
|
-
- `query` is matched against tool metadata fields:
|
|
20
|
-
- `name`
|
|
21
|
-
- `label`
|
|
22
|
-
- `server_name` (MCP tools)
|
|
23
|
-
- `mcp_tool_name` (MCP tools)
|
|
24
|
-
- `description` / `summary`
|
|
25
|
-
- input schema property keys (`schema_keys`)
|
|
26
|
-
|
|
27
17
|
Not for repository/file/code search. Tool discovery only.
|
|
28
18
|
|
|
29
19
|
Returns JSON with:
|
|
@@ -31,3 +21,8 @@ Returns JSON with:
|
|
|
31
21
|
- `activated_tools` — tools activated by this search call
|
|
32
22
|
- `match_count` — number of ranked matches returned by the search
|
|
33
23
|
- `total_tools`
|
|
24
|
+
|
|
25
|
+
Match details include:
|
|
26
|
+
- `server_name` — MCP server name when the activated result is an MCP tool
|
|
27
|
+
- `mcp_tool_name` — original MCP tool name when applicable
|
|
28
|
+
- `schema_keys` — searchable input property names
|
|
@@ -2,7 +2,7 @@ Searches files using powerful regex matching.
|
|
|
2
2
|
|
|
3
3
|
<instruction>
|
|
4
4
|
- Supports Rust regex syntax (RE2-style — no lookaround or backreferences). Use line anchors or post-filters instead of (?!…)/(?<!…)
|
|
5
|
-
- `paths`
|
|
5
|
+
- `paths` accepts an array of files, directories, globs, or internal URLs; when omitted, the whole working directory is searched
|
|
6
6
|
- `paths` is an array; do not embed commas or spaces inside a single entry. Pass `["src", "tests"]` not `["src,tests"]`.
|
|
7
7
|
- Cross-line patterns are detected from literal `\n` or escaped `\\n` in `pattern`
|
|
8
8
|
</instruction>
|
|
@@ -8,14 +8,15 @@ Invoke another available skill in the current turn.
|
|
|
8
8
|
<instruction>
|
|
9
9
|
- `name` is the skill name as it appears in `/skill:<name>` (e.g. `ralplan`, `ultragoal`, `team`, `deep-interview`)
|
|
10
10
|
- `args` is the free-form argument string the skill would receive after `/skill:<name>` on the command line
|
|
11
|
-
- The
|
|
12
|
-
- The chain is refused
|
|
11
|
+
- The tool loads the callee's SKILL.md into the current turn and handles the caller→callee state handoff itself.
|
|
12
|
+
- The chain is refused while the caller skill is still active. If your current skill has not yet reached a terminal phase, prepare it first with `skc state <skill> write --input '{"current_phase":"handoff"}' --json`; no other handoff command is needed.
|
|
13
13
|
- Call once per chain step. To chain `A → B → C`, A calls `skill(B)`; B's next agent turn calls `skill(C)`.
|
|
14
14
|
</instruction>
|
|
15
15
|
|
|
16
16
|
<critical>
|
|
17
17
|
- Do NOT use this tool to "remind yourself" of a skill you're already running. The current SKILL.md is already in your context.
|
|
18
18
|
- Do NOT chain into the same skill recursively. If a skill's flow needs another iteration, follow its in-document instructions.
|
|
19
|
+
- `name` MUST be one concrete skill name, NOT a glob or wildcard. Passing `*`, `?`, or a pattern like `git-*` is rejected immediately — the `--skills '*'` launch filter is unrelated to this tool's `name`.
|
|
19
20
|
- The chained skill's planning/execution-boundary rules still apply. Chaining does not grant execution approval.
|
|
20
21
|
</critical>
|
|
21
22
|
|
package/src/prompts/tools/ssh.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
Runs commands on remote hosts.
|
|
2
2
|
|
|
3
3
|
<instruction>
|
|
4
|
-
You MUST build commands from the reference below
|
|
4
|
+
You MUST build commands from the reference below.
|
|
5
|
+
The local coreutils restrictions (`cat`/`grep`/`find`/`head`/`tail` bans) do NOT apply on remote hosts — `read`/`search`/`find` cannot reach them, so these shell commands are the only tools available there.
|
|
5
6
|
</instruction>
|
|
6
7
|
|
|
7
8
|
<commands>
|
|
@@ -2,12 +2,12 @@ Lists, inspects, awaits, pauses, resumes, steers, or cancels detached task subag
|
|
|
2
2
|
|
|
3
3
|
Task launches return immediately. Use this tool when you need direct control over those running subagents. Prefer `subagent` for task subagents; generic `job` remains available for non-subagent jobs and compatibility fallback access.
|
|
4
4
|
|
|
5
|
-
`verbosity` controls output size: `receipt` (default) returns status metadata plus a single
|
|
5
|
+
`verbosity` controls output size: `receipt` (default) returns status metadata plus a single ≤280-character result/error preview and an `agent://<id>` output ref when available; `preview` returns ≤2000 characters; `full` returns ≤12000 characters and requires explicit `ids`.
|
|
6
6
|
|
|
7
7
|
# Operations
|
|
8
8
|
|
|
9
9
|
## `action: "list"`
|
|
10
|
-
Snapshot your visible detached subagents, including `running`, `paused`, `queued`, and terminal subagents when retained. Output is receipt-only by default; use `verbosity: "preview"` for a bounded preview or inspect explicit `ids` with `verbosity: "full"` when fuller retained text is necessary.
|
|
10
|
+
Snapshot your visible detached subagents, including `running`, `paused`, `queued`, and terminal subagents when retained. Optional `limit` (1–50) caps how many subagents are returned. Output is receipt-only by default; use `verbosity: "preview"` for a bounded preview or inspect explicit `ids` with `verbosity: "full"` when fuller retained text is necessary.
|
|
11
11
|
|
|
12
12
|
## `action: "inspect"`
|
|
13
13
|
Inspect selected subagents by `ids`; omit `ids` to inspect current running subagents. Terminal subagents return receipt-only output by default, with an `agent://<id>` ref when a verified output artifact is available. `verbosity: "full"` requires explicit `ids`.
|