/create-goal
Create a Mission, Project, or Goal (Mission → Project → Goal → Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST
$ npx -y skills add evolution-foundation/evo-nexus --skill create-goal --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/create-goal
Context preview
The summary Claude sees to decide when to auto-load this skill.
Create a Mission, Project, or Goal (Mission → Project → Goal → Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST
SKILL.md
create-goal.SKILL.mdname: create-goal
description: "Create a Mission, Project, or Goal (Mission → Project → Goal → Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST /api/goals. Use when the user says 'create a goal', 'add a mission', 'set a target', 'measure X', 'track Y towards Z', or wants to link work to a measurable outcome."
Create Goal
Create a Goal in the Mission → Project → Goal → Task hierarchy.
When to use
Use this skill when the user wants to:
- Declare a new measurable outcome ("100 paying customers by June")
- Add a project under a mission ("Evo AI is a project under our revenue mission")
- Create the mission itself (rare — usually 1 mission)
Step 1: Identify the level
Ask the user:
- **Mission** — top-level purpose (usually already exists; check with `GET /api/missions`). v1 assumes 1 active mission.
- **Project** — major initiative (Evo AI, Evolution Summit, Academy). Creates under a mission.
- **Goal** — measurable target within a project (100 customers, $50k MRR, ship billing v2).
Start with the most common: a new Goal under an existing Project.
Step 2: Collect fields
For a Goal:
- **Title** — what's being measured ("100 paying customers")
- **Description** — context (optional)
- **Project** — which existing project (fetch list via `GET /api/projects`)
- **metric_type** — one of:
- `count` — integer (customers, tickets sold, users)
- `currency` — USD or BRL value ($50k MRR)
- `percentage` — 0.0 to 100.0 (retention rate)
- `boolean` — yes/no (ship billing v2 → target_value=1)
- **target_value** — the number to reach
- **due_date** — ISO date (YYYY-MM-DD) — when the goal is expected to hit
- **target_metric** — short label to display on UI (e.g., "paying customers")
For a Project:
- **Slug** — unique kebab-case id (e.g., `evo-ai`)
- **Title** — display name
- **Description**
- **Mission** — parent mission slug
- **workspace_folder_path** — optional, points to `workspace/project/<slug>.md`
For a Mission:
- **Slug, title, description, target_metric, target_value, due_date, status** — same pattern
Step 3: Call the API
Use `from dashboard.backend.sdk_client import evo` — auto-handles URL + auth.
from dashboard.backend.sdk_client import evo
# Goal:
goal = evo.post("/api/goals", {
"slug": "evo-ai-100-customers",
"project_id": project_id,
"title": "100 paying customers by Jun 30",
"metric_type": "count",
"target_metric": "paying customers",
"target_value": 100,
"due_date": "2026-06-30",
})
# Same shape for /api/projects and /api/missions.Response includes `id` and `slug`.
Step 4: Show the user how to link work
Return the slug and show how to attach it to a routine, heartbeat, or ticket:
# routines.yaml
- name: my-routine
goal_id: evo-ai-100-customers
...
# heartbeats.yaml
- id: flux-6h
goal_id: evo-ai-100-customers
...
# ticket
evo.post("/api/tickets", {"title": "...", "goal_id": goal["id"]})When linked, the agent running the work receives Mission → Project → Goal chain automatically in its prompt.
Step 5: Show the progress view
Direct the user to `/goals` in the UI to see the new goal in the tree with 0% progress. As tasks complete (status='done'), the SQLite trigger increments `current_value` automatically. When `current_value >= target_value`, the goal status flips to `achieved`.
Notes
- Drift: if `current_value` and `SELECT COUNT(*) FROM goal_tasks WHERE status='done'` disagree, call `POST /api/goals/<id>/recalculate` to rebuild.
- Target changes: `PATCH /api/goals/<id>` accepts `target_value` updates.
- Cancelling: set `status='cancelled'` to hide from active views without deleting.
Related: `.claude/rules/goals.md`, `.claude/rules/heartbeats.md`, `.claude/rules/tickets.md`.
Read more
name: create-goal description: "Create a Mission, Project, or Goal (Mission → Project → Goal → Task hierarchy) in EvoNexus. Guides the user through picking a mission, choosing or creating a project, defining a measurable goal with metric_type and target_value. Writes to the SQLite goals tables via POST /api/goals. Use when the user says 'create a goal', 'add a mission', 'set a target', 'measure X', 'track Y towards Z', or wants to link work to a measurable outcome."
Create Goal
Create a Goal in the Mission → Project → Goal → Task hierarchy.
When to use
Use this skill when the user wants to:
- Declare a new measurable outcome ("100 paying customers by June")
- Add a project under a mission ("Evo AI is a project under our revenue mission")
- Create the mission itself (rare — usually 1 mission)
Step 1: Identify the level
Ask the user:
- **Mission** — top-level purpose (usually already exists; check with `GET /api/missions`). v1 assumes 1 active mission.
- **Project** — major initiative (Evo AI, Evolution Summit, Academy). Creates under a mission.
- **Goal** — measurable target within a project (100 customers, $50k MRR, ship billing v2).
Start with the most common: a new Goal under an existing Project.
Step 2: Collect fields
For a Goal:
- **Title** — what's being measured ("100 paying customers")
- **Description** — context (optional)
- **Project** — which existing project (fetch list via `GET /api/projects`)
- **metric_type** — one of:
- `count` — integer (customers, tickets sold, users)
- `currency` — USD or BRL value ($50k MRR)
- `percentage` — 0.0 to 100.0 (retention rate)
- `boolean` — yes/no (ship billing v2 → target_value=1)
- **target_value** — the number to reach
- **due_date** — ISO date (YYYY-MM-DD) — when the goal is expected to hit
- **target_metric** — short label to display on UI (e.g., "paying customers")
For a Project:
- **Slug** — unique kebab-case id (e.g., `evo-ai`)
- **Title** — display name
- **Description**
- **Mission** — parent mission slug
- **workspace_folder_path** — optional, points to `workspace/project/<slug>.md`
For a Mission:
- **Slug, title, description, target_metric, target_value, due_date, status** — same pattern
Step 3: Call the API
Use `from dashboard.backend.sdk_client import evo` — auto-handles URL + auth.
from dashboard.backend.sdk_client import evo
# Goal:
goal = evo.post("/api/goals", {
"slug": "evo-ai-100-customers",
"project_id": project_id,
"title": "100 paying customers by Jun 30",
"metric_type": "count",
"target_metric": "paying customers",
"target_value": 100,
"due_date": "2026-06-30",
})
# Same shape for /api/projects and /api/missions.Response includes `id` and `slug`.
Step 4: Show the user how to link work
Return the slug and show how to attach it to a routine, heartbeat, or ticket:
# routines.yaml
- name: my-routine
goal_id: evo-ai-100-customers
...
# heartbeats.yaml
- id: flux-6h
goal_id: evo-ai-100-customers
...
# ticket
evo.post("/api/tickets", {"title": "...", "goal_id": goal["id"]})When linked, the agent running the work receives Mission → Project → Goal chain automatically in its prompt.
Step 5: Show the progress view
Direct the user to `/goals` in the UI to see the new goal in the tree with 0% progress. As tasks complete (status='done'), the SQLite trigger increments `current_value` automatically. When `current_value >= target_value`, the goal status flips to `achieved`.
Notes
- Drift: if `current_value` and `SELECT COUNT(*) FROM goal_tasks WHERE status='done'` disagree, call `POST /api/goals/<id>/recalculate` to rebuild.
- Target changes: `PATCH /api/goals/<id>` accepts `target_value` updates.
- Cancelling: set `status='cancelled'` to hide from active views without deleting.
Related: `.claude/rules/goals.md`, `.claude/rules/heartbeats.md`, `.claude/rules/tickets.md`.
Other skills on evo-nexus.
- /ai-image-creator
Generate PNG images using AI (multiple models via OpenRouter including Gemini, FLUX.2, Riverflow, SeedDream, GPT-5 Image, proxied through Cloudflare AI Gateway BYOK). Also analyze/describe existing images using multimodal AI vision. Use when user asks to "generate an image",
Open skill - /create-agent
Create a new custom agent for the workspace. Guides the user through defining agent name, domain, personality, skills, model, and memory folder. Use when the user says 'create an agent', 'new agent', 'add an agent', 'I need a custom agent', or wants to create a specialized agent
Open skill - /create-command
Create a new slash command for Claude Code. Guides the user through defining the command name, what it does, and generates the markdown file in .claude/commands/. Use when the user says 'create a command', 'new command', 'add a slash command', 'I want a shortcut for', or wants
Open skill - /create-heartbeat
Create a new heartbeat (proactive agent scheduled with a decision prompt) for EvoNexus. Guides the user through picking an agent, setting interval, wake triggers, and the decision prompt that governs when the agent acts. Writes to config/heartbeats.yaml with pydantic validation.
Open skill - /create-integration
Create a new custom integration (API/service wrapper) for the workspace. Guides the user through defining the integration's slug, display name, description, category, and required env keys. Writes .claude/skills/custom-int-{slug}/SKILL.md via POST /api/integrations/custom. Use
Open skill - /create-routine
Create a new automated routine (ADW) for the scheduler. Guides the user through defining what the routine does, the type (AI or systematic), the schedule, and generates the Python script + Makefile target. Use when the user says 'create a routine', 'add a routine', 'automate
Open skill

