# Goal Draft

Turn a fuzzy intention into a /goal objective the Goal verifier can actually judge -...

- Repository: https://github.com/QwenLM/qwen-code (28858 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add QwenLM/qwen-code --skill goal-draft -g -a claude-code -y`
Codex: `npx skills add QwenLM/qwen-code --skill goal-draft -g -a codex -y`
Cursor: `npx skills add QwenLM/qwen-code --skill goal-draft -g -a cursor -y`
Gemini CLI: `npx skills add QwenLM/qwen-code --skill goal-draft -g -a gemini-cli -y`

## Description

Turn a fuzzy intention into a /goal objective the Goal verifier can actually judge - one outcome, numbered binary "Done when" checks that leave evidence in the transcript, guardrails, a budget, and a block protocol. Use when the user wants to set or define a goal, asks whether a goal is good enough, or says "keep going until X". Usage - /goal-draft <what you want done>, or /goal-draft <existing goal> to tighten it. This skill only writes the objective; it never starts the work.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# /goal-draft, write a Goal the verifier can judge

You are already inside the loaded `goal-draft` skill, do not call the `skill` tool to invoke it again; start with Step 0.

You are drafting the text for `/goal set`. You are NOT doing the work the goal describes. Do not edit files, do not run the checks, do not start on the task. Deliver a concise objective for approval or a command the user can run; if essential information is missing, deliver only a draft marked "Needs clarification".

## How Goals are judged (why the format below matters)

An active Goal is re-fed to the model every turn, and its completion is judged by an independent verifier that sees ONLY transcript evidence, read from the most recent record backwards until its request is full:

- Visible assistant output, tool results, and the user's own messages recorded for the Goal count as evidence; a user message proves only what the user said, chose, or approved. The objective itself and hidden reasoning do not, and in a long Goal the oldest records no longer reach the verifier.
- `delivered_output` evidence proves only that text was printed. It cannot prove that tests passed, files changed, or remote state changed, those need a directly recorded tool result in the transcript (an `external_fact`), not a script's or an aggregate wrapper's summary of one.
- A claim that the user confirmed, chose, or approved something needs a real user message as evidence; otherwise the completion proposal is rejected.
- Vague, subjective, or open-ended conditions never produce decisive evidence; the loop then runs until a limit is hit.

So a good objective makes the agent PRODUCE evidence at the end: run the named check immediately before proposing completion and paste the decisive output line. A check that ran long before may have to run again when completion is proposed.

## Step 0, should this be a Goal at all?

The rest: https://github.com/QwenLM/qwen-code/blob/HEAD/packages/core/src/skills/bundled/goal-draft/SKILL.md
