# Write Goal

> Phase 2 of pair-goal. Turns .pairgoal/UNDERSTANDING.md into a /goal-ready completion condition — one measurable end state, a stated transcript-demonstrable check, the constraints that must hold, and a turn cap — written to .pairgoal/GOAL.md plus the literal /goal line for the user to run. Use after train-orchestrator, or standalone to craft a good /goal condition from a clear improvement target.

- **Type:** Skill
- **Install:** `agentstack add skill-ccomkhj-skills-write-goal`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [ccomkhj](https://agentstack.voostack.com/s/ccomkhj)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [ccomkhj](https://github.com/ccomkhj)
- **Source:** https://github.com/ccomkhj/skills/tree/main/pair-goal/skills/write-goal

## Install

```sh
agentstack add skill-ccomkhj-skills-write-goal
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# write-goal

Phase 2 of **pair-goal**. Converts `.pairgoal/UNDERSTANDING.md` into a
completion condition you can hand to Claude Code's `/goal` command, written to
`.pairgoal/GOAL.md`.

## What makes a good /goal condition

`/goal`'s evaluator is a fast model that, after every turn, reads **only the
conversation** (it runs no tools) and decides yes/no. So a strong condition has
all four parts:

1. **One measurable end state** — a test result, a benchmark threshold, a file count, an empty queue, an exit code. Not "better" or "cleaner".
2. **A stated check** — *how* it's proven, phrased so the agent's own output demonstrates it: `pytest tests/x -q exits 0`, `bench/run.py prints p95  Goal condition ready. Review it, then run this yourself to start the loop:
>
> `/goal `
>
> Once it's active, each turn I'll run one pair-iterate race round until the
> condition holds, then summarize.

Set `STATUS: WAITING-USER: approve-goal`. Wait for the user to approve (and
possibly edit) and to actually run `/goal`. Only then does pair-iterate begin.

## Don't

- Don't make the condition depend on something the agent won't print. If proving it requires reading a file or running a tool, make the agent *run that and surface the output* part of the loop's job — and say so in GOAL.md.
- Don't omit the turn clause. A goal with no cap can run away.
- Don't widen scope beyond UNDERSTANDING.md. The goal is the contract; keep it tight.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [ccomkhj](https://github.com/ccomkhj)
- **Source:** [ccomkhj/skills](https://github.com/ccomkhj/skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-ccomkhj-skills-write-goal
- Seller: https://agentstack.voostack.com/s/ccomkhj
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
