with one click
goals
View and manage company OKRs and key results.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
View and manage company OKRs and key results.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Deploy or share generated HQ artifacts through hq-deploy.
Mark a company as HQ Pro cloud-backed and sync its team setup.
Send HQ Sync direct messages, prompts, details, or scheduled notes to teammates.
Run a full bidirectional sync for cloud-backed HQ companies.
Scaffold a new HQ company AND optionally take it all the way to operational — business-discovery interview, seeded knowledge/workers/skills/projects, brand design packs (generated from website/PDF/Drive and bound to deploys via policy), connected integrations, org groups + ACL rules, teammate invites, and optional cloud agents.
Resolve HQ Sync conflicts by choosing local, cloud, or discard.
| name | goals |
| description | View and manage company OKRs and key results. |
| allowed-tools | Read, Write, Edit, Bash, AskUserQuestion |
View and manage objectives + key results on company boards (board.json v2).
Input: $ARGUMENTS
Extract from $ARGUMENTS:
--company <slug> or -c <slug> — explicit company overrideadd-objective, add-kr, update-kr, set-status, link-linear, link-projectIf no subcommand → view mode (Step 3).
Priority order:
--company / -c flag → use exact slugcompanies/{slug}/ → infer from pathrepos/{pub|priv}/{name} → look up owning company in companies/manifest.yamlRead companies/manifest.yaml. Validate company slug exists.
Read companies/{co}/board.json. If schema_version is missing or < 2, warn: "Board needs migration. Run npx tsx core/scripts/migrate-board-v2.ts first."
Read board.json. Compute metrics:
source: "derived": recompute current from linked project statuses (count projects with status in ["done", "completed"])Display OKR tree:
OBJECTIVES — {company} [{date}]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[{status-emoji}] {objective title} ({timeframe})
Owner: {owner || "unassigned"}
{if linear_initiative_id: "Linear: {uuid-short}"}
KR 1: {kr title}
{progress-bar} {pct}% ({current}/{target} {unit})
Projects: {proj-id} {status-icon} {proj-id} {status-icon} ...
KR 2: ...
---
[{status-emoji}] {next objective} ...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Unlinked projects: {count}
Total: {obj-count} objectives, {kr-count} KRs, {proj-count} projects
Status emoji mapping:
on_track → ● (green context via text)at_risk → ◐off_track → ○completed → ✓paused → ⏸Progress bar: Unicode blocks: ████████░░ (10-char bar based on current/target ratio)
Ask via AskUserQuestion (batch into 1 call):
After user answers:
linear in manifest services: ask "Link to Linear initiative UUID?" (text input or skip){prefix}-obj-{max+1} (3-digit zero-padded, same prefix convention as existing objectives)key_results: []objectives[], update updated_at, write board.jsonPrint confirmation with the new objective ID.
Validate {obj-id} exists in objectives[].
Ask via AskUserQuestion (1 call):
After user answers:
{obj-id}-kr-{N} where N = existing KR count + 1status based on current/target ratio: >=70% → on_track, 40-70% → at_risk, <40% → off_trackproject_ids: [] (link projects separately)key_results[], update updated_at, write board.jsonIf user wants to link projects now, ask: "Link projects to this KR?" Show project list from board, allow multi-select.
Parse {kr-id} — format is {obj-id}-kr-{N}.
Find the objective containing this KR.
Update current to {value} (parse as number).
Recompute status: current/target ratio → on_track/at_risk/off_track/completed.
If current >= target and direction is "up", set status to "completed".
Update updated_at on both KR parent objective and board root.
Write board.json.
Print: Updated {kr-id}: {current}/{target} {unit} ({status})
Validate status is one of: on_track, at_risk, off_track, completed, paused.
Find objective, update its status field.
Update updated_at, write board.json.
Print: {obj-id} status → {status}
Find objective, set linear_initiative_id to {uuid}.
Update updated_at, write board.json.
If company has linear in manifest services, note: "Cross-referenced with Linear initiative {uuid}."
If company does NOT have linear in services, warn: "Note: {company} has no Linear integration in manifest."
Parse {kr-id} to find objective + KR.
Validate {proj-id} exists in projects[].
Add {proj-id} to KR's project_ids[] (skip if already present).
Also set objective_id on the project entry if not already set (use the KR's parent objective ID).
If KR source is "derived", recompute current from linked project statuses.
Update updated_at, write board.json.
Print: Linked {proj-id} to {kr-id} ({project-title})
qmd update 2>/dev/null || true/signals — commitments and decisions feeding goals/strategize — turn goals into a plan