sys-defining-goals
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.mddistribution-q1→strategy/goals/active/distribution-q1/goal.mdconversion-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 subgoalssys-activating-goals: Create execution threadsys-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
More from bellabe/lean-os
rsn-learning-outcomes
Extracts insights and improves performance from experience. Applies single-loop (fix action), double-loop (fix frame), reflection (extract insight), experimentation (test belief), and calibration (adjust confidence) modes. Use when correcting mistakes, learning from outcomes, testing hypotheses, or improving predictions. Triggers on "why did this fail", "what can we learn", "test this", "how accurate are we", "pattern of failures".
10fnd.r-scoring-problems
Scores problem severity, frequency, and willingness to pay. Use when ranking problems, validating problem-solution fit, assessing pain intensity, or prioritizing which problems to solve.
5fnd.r-sizing-markets
Calculates TAM/SAM/SOM and assesses market timing. Use when sizing markets, estimating addressable opportunity, analyzing market timing, or validating opportunity scale.
5rsn-creating-ideas
Generates novel ideas and creative solutions to problems. Applies lateral thinking, SCAMPER, first principles, and ideation frameworks to break conventional patterns. Audits ideas for originality, feasibility, and creative quality. Fixes creative blocks and strengthens weak concepts. Use when brainstorming, stuck on a problem, need fresh perspectives, or breaking conventional thinking. Triggers on "brainstorm", "generate ideas", "think creatively", "stuck", "fresh perspective".
5sys-indexing-directories
Generates index.md files listing .md documentation. Pure navigation — what exists and where. No code files. Triggers on "index", "catalog", "build index".
5rsn-reasoning-problems
Reasons through problems using six cognitive modes. Applies causal (execute goals), abductive (explain observations), inductive (find patterns), analogical (transfer from similar), dialectical (resolve tensions), and counterfactual (evaluate alternatives) thinking. Use when planning, diagnosing, finding patterns, evaluating trade-offs, or exploring what-ifs. Triggers on "why did", "what if", "how should", "analyze this", "figure out".
5