Loading...
Loading...
Decomposes a goal into subgoals using top-down derivation formulas. Creates linked goal hierarchy with parent-child relationships. Recursively breaks business goals into system, operational, and tactical goals.
npx skill4agent add bellabe/lean-os sys-decomposing-goalsstrategy/goals/active/{goal-dir}/goal.md{n}.{name}.mdgoal.mdLevel 1: Business Goal (leadership)
│ "Achieve $10M ARR"
│ Time horizon: Annual
│
▼
Level 2: System Goal (RevOps)
│ "Generate $40M pipeline"
│ Time horizon: Quarterly
│
▼
Level 3: Operational Goal (Team Leads)
│ "Book 400 qualified meetings"
│ Time horizon: Monthly
│
▼
Level 4: Tactical Goal (Individual)
"Complete 100 outreach touches/day"
Time horizon: Weekly/DailyRevenue Target ($X ARR)
│
├── Pipeline Target = Revenue / Win Rate
│ │
│ ├── Opportunities = Pipeline / Avg Deal Size
│ │
│ └── Meetings = Opportunities / Opp Rate
│ │
│ └── Outreach = Meetings / Meeting Rate
│
├── Expansion Target = Existing ARR × Expansion Rate
│ │
│ └── Expansion Meetings = Target / Avg Expansion Deal
│
└── Retention Target = 100% - Churn Rate
│
└── At-Risk Interventions = Churn Risk Accounts × Save RateMeeting Target (X meetings)
│
├── Outbound Meetings = Total × Outbound Ratio
│ │
│ └── Outbound Touches = Meetings / Meeting Rate
│
└── Inbound Meetings = Total × Inbound Ratio
│
└── MQL Target = Meetings / MQL-to-Meeting Rate
│
└── Traffic Target = MQLs / Conversion RateContent Lead Target (X leads)
│
├── Blog Leads = Total × Blog Attribution %
│ │
│ └── Blog Posts = Leads / Leads-per-Post
│
├── Gated Content Leads = Total × Gated %
│ │
│ └── Ebooks/Guides = Leads / Leads-per-Asset
│
└── Traffic Target = Total / Conversion Rate
│
└── SEO Keywords = Traffic / Avg Traffic-per-Keyword| From | To | Formula | Defaults |
|---|---|---|---|
| Revenue | Pipeline | | win_rate: 0.25 |
| Pipeline | Opportunities | | avg_deal: $50K |
| Opportunities | Meetings | | opp_rate: 0.30 |
| Meetings | Outreach | | meeting_rate: 0.02 |
| Revenue | Expansion | | expansion_rate: 0.25 |
| Revenue | New Logo | | nrr: 1.0 |
| From | To | Formula | Defaults |
|---|---|---|---|
| Meetings | MQLs | | rate: 0.15 |
| MQLs | Traffic | | rate: 0.025 |
| Outreach | Emails | | ratio: 0.60 |
| Outreach | Calls | | ratio: 0.25 |
| Outreach | | ratio: 0.15 |
| From | To | Formula | Defaults |
|---|---|---|---|
| Win Rate | Stage Rates | | stages: 4 |
| Cycle Time | Stage Times | | stages: 4 |
| CAC | Channel CAC | | by channel |
Read: strategy/goals/active/{goal-dir}/goal.md
Extract:
- goal_id (matches directory name, e.g. ea-revenue-q1)
- category (determines pattern)
- target_value, target_unit
- period_start, period_end
- baseline_value
- assumptionsif category == "revenue":
if target > $1M:
pattern = full_revenue_cascade
else:
pattern = simple_revenue_cascade
if category == "activity":
pattern = activity_cascade
if category == "content":
pattern = content_cascade
if category == "efficiency":
pattern = efficiency_decomposition
if category == "retention":
pattern = retention_decompositionstrategy/goals/active/{goal-dir}/{n}.{name}.md{n}{name}{goal-dir}/{n}.{name}ea-revenue-q1/1.launch-readinessea-revenue-q1/2.feb-salesdistribution-q1/1.github-organicgoal.mdchild_goals:
- ea-revenue-q1/1.launch-readiness
- ea-revenue-q1/2.feb-sales
- ea-revenue-q1/3.mar-salesstrategy/goals/active/{goal-dir}/
├── goal.md # Parent goal (created by sys-defining-goals)
├── 1.{name}.md # First subgoal
├── 2.{name}.md # Second subgoal
└── 3.{name}.md # Third subgoal---
goal_id: {goal-dir}/{n}.{name}
name: {descriptive name}
category: {inherited or derived}
target_value: {calculated}
target_unit: {inherited or derived}
target_direction: {inherited}
period_start: {inherited or subdivided}
period_end: {inherited or subdivided}
period_type: {inherited or derived}
baseline_value: {calculated or inherited}
baseline_source: derived_from_parent
baseline_date: {same as parent}
parent_goal: {goal-dir}
child_goals: []
thread: null
derivation_formula: {formula used}
derivation_assumptions: [{from parent + new}]
ownership_accountable: {derived from level}
ownership_contributors: []
constraints_budget: {proportional allocation}
constraints_headcount: {proportional allocation}
constraints_capacity: {inherited}
confidence_score: {parent × formula_confidence}
status: active
created: {today}
---
# {Subgoal Name}
## Target
{target_value} {unit} by {period_end}
## Derivation
**Parent Goal:** {goal-dir}/goal.md
**Formula:** {formula_description}
### Calculation
## Current State
Baseline derived from parent goal derivation.
## Milestones
| Date | Target | Status |
|------|--------|--------|
| {date_1} | {value_1} | pending |
| {date_2} | {value_2} | pending |
## Dependencies
- **Requires:** {goal-dir}
- **Enables:** {child_goals if any}
## Constraints
Allocated from parent:
- **Budget:** {proportional_amount}
- **Headcount:** {proportional_count}1. Decompose business goal → system goals
2. For each system goal with target > threshold:
└── Decompose → operational goals
3. For each operational goal with target > threshold:
└── Decompose → tactical goals
4. Stop when:
└── Target small enough for single owner
└── Period is weekly or shorter
└── No further decomposition formula exists| Category | Level | Continue If |
|---|---|---|
| Revenue | System | target > $500K |
| Revenue | Operational | target > $100K |
| Activity | Operational | count > 100 |
| Activity | Tactical | count > 20/day |
| Content | Operational | pieces > 10 |
Method 1: Proportional to target
child_budget = parent_budget × (child_target / total_child_targets)
Method 2: By category weights
outbound_weight: 0.40
inbound_weight: 0.35
content_weight: 0.25
Method 3: Fixed allocation
Some subgoals may have explicit budget assignmentsIf parent.headcount defined:
- Outreach goals: AE/SDR count
- Content goals: Writer count
- Ops goals: Ops count
Calculate capacity per person:
touches_per_sdr = 100/day
posts_per_writer = 4/month1. READ parent goal
└── Parse frontmatter and body
└── Extract target, category, period, constraints
2. DETERMINE decomposition pattern
└── Match category to pattern
└── Check thresholds for depth
3. CALCULATE subgoals
└── Apply formulas for each level
└── Validate against capacity constraints
4. WRITE subgoal files
└── For each subgoal:
└── Generate numbered filename: {n}.{name}.md
└── Set goal_id: {goal-dir}/{n}.{name}
└── Calculate target and milestones
└── Write to strategy/goals/active/{goal-dir}/
5. UPDATE parent goal.md
└── Add child_goals array to frontmatter
└── Use subgoal IDs: [{goal-dir}/{n}.{name}]
6. RETURN subgoal list
└── [{goal_id, target, relationship}]1. Sum of child targets should derive parent target
Example: If revenue needs $4M pipeline at 25% win rate,
pipeline subgoal should be $4M (not arbitrary)
2. Time periods should align
Children period ≤ parent period
Quarterly parent → Monthly children OK
Monthly parent → Quarterly children NOT OK
3. Constraints should not exceed parent
sum(child_budgets) ≤ parent_budget1. Capacity validation
If outreach target > team_capacity × days:
Flag constraint, adjust or note
2. Historical benchmark
If required rate > best_historical × 1.5:
Flag stretch, note risk
3. Dependency check
If child requires other goal not yet defined:
Note dependency gapsys-defining-goalssys-activating-goalssys-tracking-goalsrop-calibratorrop-allocatorsys-defining-goalssys-activating-goalssys-tracking-goalsstrategy/goals/active/arr-q1/goal.mdarr-q1strategy/goals/active/arr-q1/
├── goal.md # Parent (updated with child_goals)
├── 1.pipeline.md # Target: $1,400,000 (gap $350K / 0.25)
├── 2.opportunities.md # Target: 28 ($1.4M / $50K)
├── 3.meetings.md # Target: 93 (28 / 0.30)
└── 4.outreach.md # Target: 4,650 touches (93 / 0.02)goal.mdchild_goals: [arr-q1/1.pipeline, arr-q1/2.opportunities, arr-q1/3.meetings, arr-q1/4.outreach]parent_goal: arr-q1