---
name: goal-shape
title: "Goal Shape"
description: "Propose relevant projects, draft tasks, and a measurable success metric for a freshly-created or empty goal"
category: core
status: active
model_tier: capable
triggers:
  - "shape goal"
  - "shape this goal"
  - "plan around goal"
  - "suggest projects for goal"
# Tool-calling forces structure so local LLMs can't wander off into prose.
# submit_shape_proposals carries a strict JSON Schema — the LLM MUST call
# it with valid args. list_projects is for context. No write tools.
tools_granted:
  - list_projects
  - list_goals
  - search_vault
  - query_knowledge
  - submit_shape_proposals
priority: 6
---

## Instructions

You are shaping a goal for the owner. Your job is to **propose, not decide**. The owner approves each proposal individually.

### The workflow is EXACTLY two steps

**Step 1 — Gather context.** Call `list_projects` to see what projects already exist. Optionally call `search_vault` or `query_knowledge` for extra context on the goal's subject.

**Step 2 — Submit proposals.** Call `submit_shape_proposals` ONCE with all your proposals as structured arguments. This tool's arguments ARE your response — do not write narrative before, during, or after.

That's it. Two tool calls, done.

### What to put in `submit_shape_proposals`

- **`relevant_projects`** — Existing projects that genuinely match the goal. Each entry has `slug` (must come from `list_projects` output), `title`, `reason`, and `confidence` (0.0–1.0). **Drop entries with confidence < 0.4.** If nothing fits, use empty array `[]`. A home-renovation project is NOT relevant to a market-penetration goal.
- **`new_project`** — Propose a new project ONLY when no existing project covers the goal. If you included any `relevant_projects`, set `new_project` to omit the field (don't propose both).
- **`draft_tasks`** — 3–5 concrete 1–2 hour task units. Each has `title`, `description`, and `project_hint` (an existing project slug OR `"NEW"`). Tasks must be specific: "List 10 competitors with their pricing in a wiki article" not "Research competitors". Max 5.
- **`success_metric`** — Must be MEASURABLE (a count, a date, a boolean state). "Make progress" is not measurable. "1000 GitHub stars and 500 pip installs by 2026-06-30" is. Skip (omit the field) only if you truly cannot propose a measurable one.
- **`suggested_team`** — Specialists whose skills fit the goal's work (e.g. `researcher`, `writer`, `planner`, `analyst`). Include a short `reason` per agent.

### Rules

- **Every relevant_projects slug must come from `list_projects`.** Never invent slugs. Hallucinated slugs are dropped server-side.
- **Never fabricate.** Every proposed title, description, task, or agent must relate to the goal's stated What/Why. No invented people, companies, or numbers.
- **Pick one: relevant existing OR new project.** Never both for the same scope.
- **Short, concrete, owner-ready.** Each task description should fit on one line. Each project description is one paragraph.
- **Do NOT write narrative.** The `submit_shape_proposals` tool is the output — not a summary of what you did. No "Accomplished:", no "Here are my proposals:", no commentary.

## Examples

### Input
```
Run skill `goal-shape` with arguments:
{"goal_slug": "agntspace-market-penetration", "goal_title": "AgntSpace Market Penetration", "goal_description": "AgntSpace shall have as big as possible market penetration.", "goal_type": "goal", "target_date": "2026-04-30"}
```

### Correct sequence of tool calls

1. `list_projects()` → returns e.g. `[{"slug": "ai-newsletter", ...}, {"slug": "home-renovation", ...}, ...]`
2. `submit_shape_proposals(relevant_projects=[], new_project={"title": "AgntSpace Launch & Growth", "description": "Coordinated push to drive AgntSpace adoption: landing page, technical content, community outreach, distribution."}, draft_tasks=[{"title": "Audit landing page conversion", "description": "Measure fold clarity, CTAs, objection handling. Produce 5 ranked fixes.", "project_hint": "NEW"}, {"title": "List 10 target audiences with acquisition channels", "description": "For devs, PKM users, etc. identify where they gather and what content reaches them.", "project_hint": "NEW"}, {"title": "Draft 3 technical blog posts", "description": "Memory architecture, goal pursuit, skill system. Outlines only.", "project_hint": "NEW"}], success_metric={"text": "1000 GitHub stars and 500 pip installs by 2026-06-30", "rationale": "Star/install counts are public and directly measurable."}, suggested_team=[{"agent": "researcher", "reason": "audience + competitive research"}, {"agent": "writer", "reason": "blog posts and launch copy"}, {"agent": "planner", "reason": "sequencing workstreams"}])`

### What NOT to do

- ❌ "I'll check the existing projects..." (narrative)
- ❌ "Here are my proposals: ..." followed by JSON (narrative before the tool call)
- ❌ Calling `submit_shape_proposals` without first calling `list_projects` (hallucinated slugs will be dropped)
- ❌ Calling `submit_shape_proposals` multiple times (only the last one is kept)
- ❌ Proposing `home-renovation` as a relevant project for a market-penetration goal (different domain)
