Goal first
Use when starting a new project, feature, or build and the user describes WHAT to build (a tool, dashboard, app, report, script) before WHY it exists or what decision it serves. Symptoms — request names an artifact ("build me a dashboard/bot/pipeline"), scope is vague, or you feel the urge to ask tech/data/feature questions first. Forces goal + core decision before any code, then agile buckets with review checkpoints and drift checks. Each bucket's success is written as a testable completion condition that can hand off to the built-in /goal command for autonomous execution.From its SKILL.md
npx -y skills add Roni-quant/goal-first --skill goal-firstAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.8 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
Goal-First
Overview
When someone asks to build an artifact, the artifact is a guess at a solution, not the goal. The real goal is the decision or outcome the artifact is meant to drive. Build the wrong thing well = wasted work.
Core principle: interrogate the decision before the artifact. The requested artifact may be the wrong artifact.
This skill runs a goal interview, writes a charter, then drives delivery in small buckets with checkpoints and explicit drift checks.
When to Use
- User names a thing to build before stating why ("build a dashboard / bot / pipeline / report")
- Scope vague or success undefined
- You feel the pull to ask "what tech? where's the data? which features?" first — that pull is the signal to use this skill instead
When NOT to use: user already has an approved spec/plan (use writing-plans/executing-plans), or task is a small well-defined edit.
The Iron Rule
No solution questions until goal + core decision are written and confirmed.
Solution questions = tech stack, data source, features, UI, libraries, architecture. All forbidden in the interview. They presume the artifact is correct. First find out if it is.
Process
1. Goal interview (no code, no solution talk)
Ask, one cluster at a time, plainly. Goal is to surface:
- Outcome: What changes in the world if this succeeds? What can you do after that you can't now?
- Core decision: What recurring decision or action is this meant to drive? (e.g. "which vendor to cut", "whether to deploy", "is the model drifting") — the artifact exists to make THIS better.
- Current pain: How is the decision made today, and why is that bad?
- Success signal: How will we know it worked — one observable thing.
- Anti-goal: What is this explicitly NOT for? (bounds scope, prevents drift)
Stop when you can state the core decision in one sentence. Don't interview past that — over-interviewing is its own failure.
2. Write the charter
Write PROJECT_CHARTER.md (or <project>-charter.md if naming collision) in the working dir:
# <Project> — Charter
## Goal
<one sentence: the outcome>
## Core decision this drives
<one sentence: the recurring decision/action made better>
## Today's pain
<how it's done now, why it's bad>
## Success signal (completion condition)
<one observable, testable thing that proves it worked — phrased so a tool can verify it>
## Anti-goals (NOT this)
- <out of scope>
## Buckets
| # | Slice | Done when (testable) |
|---|-------|----------------------|
| 1 | <smallest end-to-end slice that tests the core decision> | <observable check> |
| 2 | ... | ... |
The Success signal and each bucket's Done when are completion conditions in the official /goal sense — testable and observable, not aspirational. Write them so a tool (test run, build, file check, query) can confirm them.
- Good: "all tests in
tests/pass", "the report renders with a non-empty value for every row", "make buildexits 0". - Bad: "the dashboard is better", "performance improved", "it works well".
Confirm the charter with the user before any bucket. This is checkpoint zero.
3. Buckets — small, agile, one at a time
- Each bucket = smallest slice that produces reviewable output and moves the core decision forward.
- First bucket should test the riskiest assumption, not the easiest plumbing.
- For each bucket, before building: present a 2–4 line plan (what, why it serves the core decision, what user reviews) plus the testable Done-when.
- Build it.
- Checkpoint: show output, stop, wait for review. Do not start next bucket unsolicited.
3a. Handoff to /goal (optional autonomous execution)
goal-first clarifies WHAT/WHY; the built-in /goal command executes autonomously until a completion condition is met. Once a bucket's plan is confirmed and its Done-when is testable, you can hand it to /goal instead of building turn-by-turn:
/goal <bucket scope with file paths + concrete changes>. Done when <bucket's Done-when>.
Rules for a clean handoff:
- Only hand off a bucket whose Done-when is tool-verifiable —
/goalneeds to check its own work. A vague Done-when makes/goalrun blind. - Include scope (which files/dirs), the concrete change, and the completion condition in one line — same structure the official command expects.
- The checkpoint still applies:
/goalstops at its completion condition; review before releasing the next bucket. Don't chain buckets into one/goalrun — that skips the review the charter exists to enforce. - If a bucket's Done-when isn't testable yet, it's not ready for
/goal. Sharpen it or build that bucket by hand.
4. Drift checks — verify decisions explicitly
At each checkpoint and whenever a choice arises, restate the link out loud:
"This serves <core decision>. Still the goal?"
If a request or your own idea doesn't trace to the core decision, name it: "This doesn't tie to <core decision> — add it, or skip it?" Don't silently absorb scope.
Red Flags — STOP
- Asking about tech/data/features before charter written → stop, run the interview
- Proposing a concrete build ("I'd use Streamlit...") before goal confirmed → stop
- Assuming the named artifact is the answer (dashboard might really be an alert, a report, or a deleted process) → question it
- Building bucket 2 before bucket 1 checkpoint cleared → stop, checkpoint first
- Charter has features but no core decision → incomplete, find the decision
- Success signal / Done-when is aspirational ("works well", "is better") not testable → rewrite as an observable check before any build or /goal handoff
Common Mistakes
| Mistake | Fix |
|---|---|
| Treating the requested artifact as the goal | Artifact is a hypothesis; goal is the decision it serves |
| Solution questions in the interview | Forbidden until charter confirmed |
| Over-interviewing | Stop once core decision fits one sentence |
| Big-bang plan instead of buckets | Slice to smallest reviewable decision-moving unit |
| Silent scope creep | Drift check: every add must trace to core decision |
| Marching bucket→bucket without pause | Checkpoint = hard stop for user review |
| Aspirational success signal | Rewrite as a tool-verifiable completion condition |
What ships with it: 2 files
5.0 KB alongside SKILL.md