goal-framing — Claude Code skill: purpose and installation
This skill defines a task goal, evidence of success, and boundaries before work begins. Use it when the agent needs a clear stop condition and a route for the task.
npx skills add GanyuanRan/Aegis --skill goal-framing -a claude-codeWhat goal-framing does
When asked to frame a goal, the skill creates a compact task outline with the intended outcome, success evidence, stop condition, constraints, and scope. It then selects a workflow, such as debugging for a reported failure or planning for approved requirements, and continues in the same turn. If the user wants framing only, or essential information is missing, it stops at that point.
The skill is opt-in: it responds to /aegis-goal, Aegis goal:, or a direct request to define the goal or boundaries before starting. It does not activate for routine questions or tiny edits unless requested. It does not make authoritative gate decisions or enforce an automatic stop. When work is delegated, it prepares a concise context packet; goal framing alone does not create project files.
What it helps with
- set success evidence and a stop condition before implementation
- define task boundaries before work starts
- route a bug report to a debugging workflow
- give a subagent focused context instead of the full conversation
Example prompts for the agent
- Before you start, set the goal and stop condition for fixing the auth refresh bug without rewriting the auth system:
/aegis-goal fix the auth refresh bug without rewriting the auth system. - Define the goal, success evidence, and task boundaries, but do not execute the work yet.
- Frame this bug investigation, then continue with the appropriate debugging workflow.
How to install goal-framing
1Skills CLI (Vercel)
npx skills add GanyuanRan/Aegis --skill goal-framing -a claude-code2Manually: put the files in place
~/.claude/skills/goal-framing/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/goal-framing/
1Skills CLI (Vercel)
npx skills add GanyuanRan/Aegis --skill goal-framing -a codex2Manually: put the files in place
.agents/skills/goal-framing/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add GanyuanRan/Aegis --skill goal-framing -a cursor2Manually: put the files in place
.cursor/skills/goal-framing/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install GanyuanRan/Aegis goal-framing2Manually: put the files in place
.github/skills/goal-framing/SKILL.md1Skills CLI (Vercel)
npx skills add GanyuanRan/Aegis --skill goal-framing -a gemini-cli2Platform CLI
gemini skills install https://github.com/GanyuanRan/Aegis --path skills/goal-framingManually: put the files in place
.devin/skills/goal-framing/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add GanyuanRan/Aegis --skill goal-framing -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about goal-framing
How do I install goal-framing in Claude Code?
Run npx skills add GanyuanRan/Aegis --skill goal-framing -a claude-code. The skill file is at ~/.claude/skills/goal-framing/SKILL.md.
What does goal-framing do?
It drafts a short task frame covering the goal, success evidence, stop condition, and scope, then routes work to a suitable workflow.
Does goal-framing run automatically for small edits?
No. It requires an explicit /aegis-goal request, an Aegis goal: prompt, or a direct request to define the goal or boundaries.
Source text
SKILL.md · MIT
--- name: goal-framing description: "Use when the user explicitly sets an Aegis goal with /aegis-goal, Aegis goal:, or asks to define goal, success evidence, stop condition, or task boundaries before work." --- # Aegis Goal Framing Use this skill to create a thin goal frame before execution. It is opt-in and boundary-setting only. Do not use it for tiny edits, one-command checks, or ordinary fast-path Q&A unless the user explicitly asks for `/aegis-goal` or `Aegis goal:`. ## Authority Boundary Current owner: - Method Pack task framing Not owned here: - authoritative `GateDecision` - final evidence sufficiency - final completion authority is not owned here - host daemon / automatic stop enforcement ## Input Forms Treat these as equivalent: - `/aegis-goal <task description>` - `Aegis goal: <task description>` - "Define the goal / stop condition before we start" Slash commands are optional host shortcuts. The natural-language form is the portable fallback. Example: ```text Aegis goal: Fix the auth refresh bug without rewriting the auth system. ``` ## Output Produce the smallest useful frame, then continue into the routed workflow in the same turn. ```text TaskIntentDraft: - Requested outcome: - Goal: - Success evidence: - Stop condition: - Non-goals: - Constraints: - Scope: - Risk hints: - Aegis Visibility: - Route: - Next: ``` Default behavior: - Do not stop after `TaskIntentDraft`. - Treat the frame as the start protocol for execution, not as the final answer. - After the compact frame, immediately take the `Next` action for the selected route when the user asked to do the work. - Keep the visible frame natural and short when the goal is clear; do not emit a large internal-looking card unless the user asked for a formal frame. - Use `Aegis Visibility` to say why the goal frame constrains the route, stop condition, or non-goals. Do not add trace ceremony unless the user explicitly asks for auditability. Frame-only behavior: - Stop at the frame only when the user explicitly asks to only define the goal, only define the stop condition, not execute, not implement, not write a plan, or wait for confirmation before continuing. - If required information is missing, state the missing input and stop with `blocked` rather than pretending to continue. Stop condition must distinguish: State set: `done`, `blocked`, `needs-verification`, `scope-exceeded`. - `done`: success evidence is satisfied - `blocked`: required dependency, permission, or information is missing - `needs-verification`: implementation exists but evidence is insufficient - `scope-exceeded`: continuing would exceed the goal or non-goals ## Routing After framing: - Low-risk single-owner work continues through the normal fast path or TDD - Ambiguous product / architecture / contract work routes to `brainstorming` - Approved requirements route to `writing-plans` - Multi-step, compaction-prone, handoff, or subagent work routes to `long-task-continuation` - Bug diagnosis routes to `systematic-debugging` ### Route Matrix | Goal signal | Route | | --- | --- | | single-owner, low-risk, clear verification | fast path or `test-driven-development` | | bug, failure, regression, unexpected behavior | `systematic-debugging` | | ambiguous product, architecture, contract, cross-module behavior | `brainstorming` | | approved spec, stable requirements, implementation slicing | `writing-plans` | | multi-step, compaction-prone, handoff, subagent work | `long-task-continuation` | | completion, release, handoff, "is this done?" | `verification-before-completion` | Only create `docs/aegis/` records when the routed workflow needs persistent evidence. Goal framing alone does not create project files. ## Subagent Context Packet When delegating work, pass a compact packet instead of the full conversation: ```text SubagentContextPacket: - Task: - Goal: - Stop condition: - Relevant baseline refs: - Relevant files: - Known facts: - Unknowns: - Non-goals: - Expected output: - Verification expected: - Must-read excerpts: - Unsafe assumptions: ``` The packet reduces repeated file reading, but it does not replace evidence. Subagents should still read the smallest raw file/log/test excerpt needed to verify critical facts. Do not paste full chat transcripts, full session history, or unbounded logs into the packet. If a fact matters, include a file ref, line/window hint, or compact must-read excerpt. ## Drift Rule If the goal changes mid-task, do not silently overwrite it. Record old goal, new goal, changed scope, new risks, and route through `DriftCheckDraft` when a long-task record exists.
© GanyuanRan · MIT · GanyuanRan/Aegis