Goal Defining
Transform a single strategic intent into a measurable, actionable goal file.
Responsibility
Define ONE goal. For goal hierarchies, invoke sys-decomposing-goals after.
Quick Start
- •Classify input (canvas, natural language, hybrid)
- •Extract strategic intent
- •Identify canvas gaps (prompt if blocking)
- •Derive target using formulas
- •Create goal directory and write
strategy/goals/active/{goal-dir}/goal.md
Input Classification
Canvas Input
Indicators:
- •References
strategy/canvas/*.mdfiles - •Contains structured frontmatter
- •Uses canvas terminology (mode, segments, GTM)
- •Contains metric targets from canvas
Action: Read referenced files → extract values → derive target
Natural Language Input
Indicators:
- •Conversational phrasing ("I want to...", "We need to...")
- •Vague quantifiers ("more", "better", "increase")
- •Missing time bounds or baselines
- •No canvas file references
Action: Extract intent → map to category → ask clarifying questions → derive target
Hybrid Input
Indicators:
- •References canvas with verbal context
- •Partial data with narrative
- •Mode awareness with conversational goals
Action: Extract structured first → supplement with intent
Intent Extraction
From Natural Language
| User Says | Intent | Category |
|---|---|---|
| "grow revenue" | increase_arr | revenue |
| "more customers" | acquire_customers | revenue |
| "book more meetings" | increase_meetings | activity |
| "generate leads" | increase_mqls | activity |
| "publish more content" | increase_content | content |
| "speed up sales" | reduce_cycle_time | efficiency |
| "reduce CAC" | optimize_cac | efficiency |
| "keep customers" | improve_retention | retention |
From Canvas
| Section | Extractable Data |
|---|---|
00.mode.md | Metric framework (MRR vs ARR) |
04.segments.md | ICP-specific targets |
08.pricing.md | ARPU for revenue calculations |
13.metrics.md | Current baseline values |
15.gtm.md | Channel-specific capacity |
Canvas Dependencies
Required (blocking if missing)
| File | Purpose |
|---|---|
strategy/canvas/00.mode.md | Determines metric framework |
strategy/canvas/13.metrics.md | Provides baseline values |
Recommended (use defaults if missing)
| File | Default If Missing |
|---|---|
strategy/canvas/08.pricing.md | $50K avg deal |
strategy/canvas/07.uvp.md | 25% win rate |
strategy/canvas/15.gtm.md | Equal channel distribution |
Target Derivation
Revenue Targets
Pipeline from revenue:
- •Formula:
target_revenue / win_rate - •Default win_rate: 0.25
- •Example: $1M / 0.25 = $4M pipeline
Meetings from pipeline:
- •Formula:
pipeline / (opp_rate × avg_deal_size) - •Default opp_rate: 0.30, avg_deal: $50K
- •Example: $4M / (0.30 × $50K) = 267 meetings
Activity Targets
Outreach from meetings:
- •Formula:
meetings / meeting_rate - •Default meeting_rate: 0.02
- •Example: 267 / 0.02 = 13,350 touches
MQLs from SQLs:
- •Formula:
sql_target / mql_to_sql_rate - •Default mql_to_sql: 0.40
Efficiency Targets
Conversion improvement:
- •Formula:
current_rate + improvement_target - •Default improvement: 5 percentage points
Cycle time reduction:
- •Formula:
current_days × (1 - reduction_pct) - •Default reduction: 15%
Output
Directory Structure
Each goal gets its own directory under strategy/goals/active/:
strategy/goals/active/{goal-dir}/
└── goal.md # Parent goal definition
Subgoals (created by sys-decomposing-goals) are added as numbered files in the same directory.
Goal Directory and ID Format
{short-name}-{period}
The goal_id in frontmatter matches the directory name. Use concise, descriptive names.
Examples:
- •
ea-revenue-q1→strategy/goals/active/ea-revenue-q1/goal.md - •
distribution-q1→strategy/goals/active/distribution-q1/goal.md - •
conversion-q1→strategy/goals/active/conversion-q1/goal.md
File Structure
---
goal_id: {goal_id}
name: {human readable name}
category: {revenue|activity|content|efficiency|retention}
target_value: {number}
target_unit: {currency|count|percentage|days}
target_direction: {maximize|minimize}
period_start: {YYYY-MM-DD}
period_end: {YYYY-MM-DD}
period_type: {quarterly|monthly|weekly|annual}
baseline_value: {number}
baseline_source: {file path or "user_provided"}
baseline_date: {YYYY-MM-DD}
parent_goal: {goal_id|null}
child_goals: []
thread: null
derivation_formula: {formula name}
derivation_assumptions: [{name}: {value}]
ownership_accountable: {role}
ownership_contributors: [{roles}]
constraints_budget: {number|null}
constraints_headcount: {number|null}
constraints_capacity: {description|null}
confidence_score: {0.0-1.0}
status: active
created: {YYYY-MM-DD}
---
# {Goal Name}
## Target
{target_value} {unit} by {period_end}
## Current State
{baseline_value} {unit} as of {baseline_date}
## Gap Analysis
- **Absolute Gap:** {target - baseline} {unit}
- **Relative Gap:** {gap_percentage}%
- **Required Pace:** {daily_required} {unit}/day
## Derivation
**Source:** {parent_goal or "Direct input"}
**Formula:** {formula_description}
### Assumptions
| Assumption | Value | Source |
|------------|-------|--------|
| {name} | {value} | {canvas section or default} |
## Milestones
| Date | Target | Status |
|------|--------|--------|
| {milestone_1_date} | {value} | pending |
| {milestone_2_date} | {value} | pending |
| {milestone_3_date} | {value} | pending |
## Risk Factors
- {risk_1}
- {risk_2}
## Constraints
- **Budget:** {amount or "None"}
- **Headcount:** {count or "None"}
- **Capacity:** {description or "None"}
Milestone Generation
Linear Distribution
Even split across period:
- •Formula:
baseline + (gap × milestone_fraction) - •Use when: Steady-state activity
Front-Loaded
More progress early:
- •Distribution: [40%, 30%, 30%]
- •Use when: Building momentum
Back-Loaded
Acceleration expected:
- •Distribution: [20%, 30%, 50%]
- •Use when: Ramp-up required
Workflow
1. RECEIVE input (canvas reference, NL, or hybrid)
2. CLASSIFY input type
└── Canvas: Read files, extract structured values
└── NL: Extract intent, ask clarifying questions
└── Hybrid: Extract structured first, supplement
3. CHECK canvas dependencies
└── Required missing: STOP, prompt user
└── Recommended missing: Use defaults, flag
4. DERIVE target
└── Apply appropriate formula
└── Record assumptions used
5. CALCULATE milestones
└── Determine distribution pattern
└── Generate milestone dates and values
6. WRITE goal file
└── Create directory: strategy/goals/active/{goal-dir}/
└── Write: strategy/goals/active/{goal-dir}/goal.md
└── Format: Frontmatter + prose (no inline YAML)
7. UPDATE index
└── Add to strategy/goals/index.md
8. RETURN goal_id for downstream use
Integration
Upstream
- •Human input (conversational or structured)
- •Canvas files for baseline data
Downstream
- •
sys-decomposing-goals: Break into subgoals - •
sys-activating-goals: Create execution thread - •
sys-tracking-goals: Monitor progress
Boundaries
This skill provides:
- •Input classification
- •Intent extraction
- •Canvas gap detection
- •Single goal derivation
- •Goal file generation
This skill does NOT:
- •Decompose goals into subgoals (use
sys-decomposing-goals) - •Create execution threads (use
sys-activating-goals) - •Track progress (use
sys-tracking-goals) - •Modify canvas sections
Examples
Example 1: Canvas Input
Input:
Set Q1 revenue goal based on strategy/canvas/13.metrics.md
Process:
- •Read 13.metrics.md → current_arr: $650K
- •Read 00.mode.md → VENTURE mode, ARR focus
- •Apply 30% growth default → target: $845K
- •Create directory and write goal file
Output:
strategy/goals/active/arr-q1/ └── goal.md
Example 2: Natural Language Input
Input:
I want to hit $1M ARR by end of Q1
Process:
- •Extract: intent=target_arr, value=$1M, period=Q1
- •Ask: "What's your current ARR baseline?"
- •User: "$650K"
- •Calculate gap: $350K (35%)
- •Create directory and write goal file
Output:
strategy/goals/active/arr-q1/ └── goal.md
Example 3: Hybrid Input
Input:
Based on our bootstrap mode and current metrics, I want to add 50 new customers this quarter
Process:
- •Read 00.mode.md → BOOTSTRAP confirmed
- •Read 13.metrics.md → current_customers: 120
- •Target: 170 customers (+50)
- •Create directory and write goal file
Output:
strategy/goals/active/customers-q1/ └── goal.md