Preview, draft, refine, and audit durable Goals for long agent workflows. Define an observable outcome, acceptance evidence, a bounded loop, checkpoints, drift controls, and explicit stop conditions. Keep checks proportional: focused verification while editing, required delivery gates, and reuse of valid evidence. Used in multi-day game development and Android SDK delivery. The maintainer reports a longest workflow of 60+ hours; inspected records show multi-day work and concrete stage deliveries. The host agent provides continuation, tools, and permissions. English case study: https://github.com/wu736139669/goal-instruction-writer/blob/main/docs/cases/factory-town-idle.md 36-second demo: https://github.com/wu736139669/goal-instruction-writer/releases/download/v0.2.0/goal-overview.mp4
Turn a vague request into a ready-to-run Goal instruction that an agent can execute without guessing what success, progress, or stopping means. Preserve the user's intent, language, authority boundaries, and requested scope. This skill designs and audits the instruction contract; runtime access, permissions, and external approvals still come from the host agent and user. Describe the checks while writing a Goal; execute the underlying task only when the user has also requested execution.
Read references/goal-contract.md when drafting or auditing a Goal. Read references/examples.md only when a worked example would clarify the requested task. For work that spans multiple phases, artifacts, or more than a few iterations, also read references/drift-control.md. For preview-first workflows, read references/loop-preview.md.
If the mode is not stated, infer it from the input. Ask only questions whose answers would change the objective, authority, acceptance evidence, or legal terminal state. Otherwise state assumptions and continue.
Use preview-first when the user asks to “先看循环”, “preview”, “先设计流程”, or similar. Also prefer it for multi-stage, costly, irreversible, or materially uncertain work. For a short, reversible task, a direct draft is enough.
The preview is a design checkpoint, not an approval to execute:
When the user confirms, carry the accepted preview into the final Goal without quietly changing its loop, scope, or terminal rules. If the user revises it, regenerate the preview or record the changed decision first. A preview response must not claim that the Goal is complete and must not perform external side effects merely because a loop was described.
Write one sentence with an observable end state. It should say what artifact, behavior, decision, or verified change will exist when the work is complete. Then make the contract concrete:
For Goals about feedback, adoption, pilots, launches, or validation, define a
feedback evidence threshold before drafting: what counts as feedback,
whether an entry point is enough or at least N non-author responses are
required, and the timebox or attempt window. Do not count author-only activity
unless the user explicitly chooses that threshold.
Prefer one load-bearing outcome per Goal. Split unrelated outcomes into separate Goals. Replace vague verbs such as “improve,” “handle,” or “finish” with a measurable result.
For a long or multi-stage Goal, freeze a compact Goal Anchor before the first iteration: the one-sentence outcome, criterion IDs, frozen scope, and current phase. Treat it as an invariant. A new discovery may change the plan, but it must not silently change the outcome, acceptance criteria, or authority. An explicit owner decision creates a new Goal version or scope-change record.
At every iteration, record three links before acting:
After verification, classify the result as:
ON_TARGET: the named criterion moved and evidence supports the next step.SIDE_QUEST: useful but not required for this Goal; park it in a deferred
list instead of expanding the loop.DRIFTED: no criterion moved, the action changed the goal or scope, or the
next step cannot be justified from the Anchor; stop and realign.Run a phase gate every 3–5 iterations by default, at each milestone, and before an irreversible or high-cost action. Re-read the Anchor, compare the current state with the baseline, mark criteria open or verified, review deferred side quests, and choose one justified next action. Never rewrite criteria to make completed work appear on target.
Use a bounded iteration with a visible progress signal:
ON_TARGET, SIDE_QUEST, or DRIFTED and apply
the corresponding drift rule.State the iteration limit that fits the task: a timebox, tool or token budget, maximum attempts, or a finite work-unit list. Add a no-op rule: do not repeat the same action without new information; after a repeated failure, change the hypothesis or stop with the blocker. The loop must be able to explain why the next iteration is different from the previous one.
Include a short verification strategy in the Goal. Preserve explicit user and repository acceptance requirements while controlling when checks run:
Make the terminal states explicit and mutually understandable:
GOAL PAUSED: realignment required when a local terminal label is needed.Do not use “continue until satisfied,” “try indefinitely,” or a success claim based only on effort. If the task has a local convention for terminal strings, preserve it; otherwise give each state a short, exact label and require the final response to include it. A goal or acceptance criterion cannot be changed just because the current work became difficult or interesting.
Return the result in the user's language. Unless they request another format, use this order:
Objective, Goal anchor, Baseline and scope, Acceptance criteria, Feedback evidence when applicable,
Verification strategy, Execution loop, Drift control, Limits and no-op rule, Termination, and Reporting sections.The ready-to-paste block must be executable as an instruction, not a discussion of how one might write an instruction. Keep acceptance checks and terminal states concrete enough that a later reviewer can decide them from evidence.
skillbazaar install goal-instruction-writer --agent claudeSign in (free) to install skills with the CLI.
Author
@wu736139669
on GitHub
Published by