mit einem Klick
ds-decision
// Use when the quest needs an explicit go, stop, branch, reuse-baseline, write, finalize, reset, or user-decision transition with reasons and evidence.
// Use when the quest needs an explicit go, stop, branch, reuse-baseline, write, finalize, reset, or user-decision transition with reasons and evidence.
| name | ds-decision |
| description | Use when the quest needs an explicit go, stop, branch, reuse-baseline, write, finalize, reset, or user-decision transition with reasons and evidence. |
| skill_role | stage |
| license | MIT |
| metadata | {"author":"ResearAI/DeepScientist","version":"1.0.0"} |
Use this skill whenever continuation is non-trivial.
startup_contract.decision_policy = autonomous, do not emit ordinary artifact.interact(kind='decision_request', ...) calls; decide the route yourself, record the reason, and continue.reply_mode='blocking' for the actual decision request only when the user must choose before safe continuation and the quest contract still allows a user-gated decision.artifact.interact(kind='decision_request', reply_mode='blocking', reply_schema={'decision_type': 'quest_completion_approval'}, ...), and only after an explicit approval reply should you call artifact.complete_quest(...).shell_command / command_execution in this skill.bash_exec(...).artifact.git(...) before raw shell git commands.decision to judge the route, not as an excuse to bypass the bash_exec(...) / artifact.git(...) tool contract.decision is not a normal anchor.
It is a cross-cutting control skill that should be used whenever the quest must decide:
Every consequential decision should make clear:
goodbadneutralblockedUse the following canonical actions:
continuelaunch_experimentlaunch_analysis_campaignbranchprepare_branchactivate_branchreuse_baselineattach_baselinepublish_baselinewritefinalizeiterateresetstoprequest_user_decisionChoose the smallest action that genuinely resolves the current state.
In the current runtime, prefer these concrete flow actions:
artifact.submit_idea(mode='create', submission_mode='candidate', ...)artifact.submit_idea(mode='create', lineage_intent='continue_line'|'branch_alternative', ...)artifact.submit_idea(mode='create', submission_mode='line', source_candidate_id=..., lineage_intent='continue_line'|'branch_alternative', ...)artifact.submit_idea(mode='revise', ...)artifact.list_research_branches(...)artifact.activate_branch(...)run/* branch/worktreeartifact.record(payload={'kind': 'decision', 'action': 'iterate', ...})artifact.create_analysis_campaign(...)artifact.record_analysis_slice(...)artifact.submit_paper_outline(mode='select', ...)artifact.submit_paper_outline(mode='revise', ...)artifact.submit_paper_bundle(...)If the chosen action is baseline reuse, the decision is not complete until one of these is durably true:
artifact.attach_baseline(...) plus artifact.confirm_baseline(...)Treat prepare_branch as a compatibility or recovery action, not the normal path.
Treat activate_branch as the correct recovery or revisit action when the quest should resume on an existing older durable branch while preserving the newer research head.
Treat each accepted branch as one durable research round.
Treat candidate briefs as branchless pre-promotion objects; they are not yet durable optimization lines.
If a branch already has a durable main-experiment result, a genuinely new optimization round should normally create a child branch from a chosen foundation rather than keep revising that old branch in place.
Treat each durable main experiment as its own child run/* branch/node, not as another mutable state on the idea branch.
When paper mode is enabled and the necessary analysis for a strong run is done, the next default route is write on a dedicated paper/* branch/worktree derived from that run branch.
Do not approve launch_analysis_campaign casually; analysis usually carries extra resource cost and should require clear academic or claim-level value before spending that budget.
Make decisions from durable evidence:
Do not make major decisions from vibe or momentum.
When the quest is algorithm-first, add one extra truth-source rule before non-trivial route choices:
artifact.get_optimization_frontier(...)Write the real question explicitly, such as:
Summarize only the decision-relevant evidence:
Typical mapping:
good
neutral
bad
blocked
The action must match the actual state.
When the decision is about choosing among multiple candidate outputs, such as:
do not decide implicitly.
Record:
When the choice is about an experiment package or analysis package, also record:
When the choice is about paper outline candidates, also record:
research_questions and experimental_designs become the active contract after selectionTypical criteria include:
For paper outline candidates specifically, prefer a paperagent-like rubric:
motivation -> challenge -> resolution -> validation -> impactIf evaluator scores exist, use them. Do not blindly follow a score if the underlying evidence is weak; explain the override when needed.
When the decision is about choosing a research direction, experiment route, or branch to invest in:
Use a light incumbent/frontier discipline for non-trivial route decisions:
incumbent:
frontier:
For these decisions, do not default to launching a small exploratory run just to break ties. Prefer careful judgment from durable evidence already on hand, especially:
When recording the decision, make explicit:
For algorithm-first route choices, prefer this default mapping:
explore -> widen or refine candidate briefs before new branch creationexploit -> keep the strongest line active and advance the best implementation candidatesfusion -> open at most one bounded fusion candidatestop -> record the stop decision and explicit reopen conditionGood route-selection criteria often include:
When selecting an experiment package, make the choice as if you must later justify:
If one option is more novel but much less testable, say that explicitly instead of hiding the tradeoff.
The reason should be concrete and evidence-backed. Avoid generic wording like “seems better”.
When the decision is stage-shaping, prefer a richer structure that later stages can execute directly. Useful optional fields include:
target_idea_idtarget_run_idcampaign_idreflection
what_workedwhat_failedlearned_constraintsnext_direction
expected_roi
cost_estimateconfidenceWhen a decision materially changes the route, follow it with the appropriate user-visible artifact.interact(...) update:
artifact.interact(kind='milestone', reply_mode='threaded', ...) when the decision is already durably resolved and the quest can continue automaticallyreply_mode='blocking' only when the user must choose before safe continuation and startup_contract.decision_policy is not autonomousThis is especially useful for:
Ask the user only when:
When asking, use a structured decision request with:
Use artifact.record(payload={'kind': 'decision', ...}) for the final decision.
If user input is needed, also use artifact.interact(kind='decision_request', ...).
If the timeout expires without a user reply, choose the best option yourself, record why, and notify the user of the chosen option before moving on.
This does not apply when the only blocker is a missing external credential or secret that only the user can provide; in that case keep the interaction waiting and, if resumed without the credential, you may park with bash_exec(command='sleep 3600', mode='await', timeout_seconds=3700) instead of busy-looping.
If startup_contract.decision_policy = autonomous, ordinary route ambiguity is not by itself grounds to request user input.
In that mode, only explicit approval-style exceptions such as quest completion should normally become blocking user decisions.
Good decisions:
Weak decisions:
Write to memory only when the lesson is reusable across future decisions, such as:
The canonical record of the decision itself belongs in artifact.
Exit once the decision is durably recorded and the next stage or action is explicit.
Generate/edit images with OpenAI gpt-image-2 by default, falling back to Gemini (gemini-3.1-flash-image-preview) when OPENAI_API_KEY is unset. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image for editing, --provider to force a provider, --model to override the model.
Mandatory pre-flight compute resource check before running experiments. Detects whether local/remote GPU or compute resources are actually available. If resources are unavailable, STOPS the experiment pipeline immediately and reports to the user — preventing the model from hallucinating fake experiment results. Use when: about to run experiments, deploy training, or any GPU-intensive task.
Workflow 1.5: Bridge between idea discovery and auto review. Reads EXPERIMENT_PLAN.md, implements experiment code, deploys to GPU, collects initial results. Use when user says "实现实验", "implement experiments", "bridge", "从计划到跑实验", "deploy the plan", or has an experiment plan ready to execute.
Deploy and run ML experiments on local, remote, Vast.ai, or Modal serverless GPU. Use when user says "run experiment", "deploy to server", "跑实验", or needs to launch training jobs.
Dr. Claw workspace skill for project lookup, session inspection, TaskMaster progress, OpenClaw structured schema, and event-driven reporting
Use when a quest needs one or more follow-up runs such as ablations, robustness checks, error analysis, or failure analysis after a main experiment.