ceos-rocks
Manage quarterly Rocks — the 3-7 most important priorities for the next 90 days. Each Rock has one owner, a measurable outcome, and a due date at quarter end.
When to Use
- "Set rocks for this quarter" or "let's plan our quarterly priorities"
- "Rock status" or "how are our rocks tracking?"
- "Score rocks" or "end of quarter review"
- "Create a rock" or "add a new rock for [person]"
- "What rocks does [person] own?"
- Any quarterly planning or review conversation
Context
Finding the CEOS Repository
Search upward from the current directory for the .ceos marker file. This file marks the root of the CEOS repository.
If .ceos is not found, stop and tell the user: "Not in a CEOS repository. Clone your CEOS repo and run setup.sh first."
Sync before use: Once you find the CEOS root, run git -C <ceos_root> pull --ff-only --quiet 2>/dev/null to get the latest data from teammates. If it fails (conflict or offline), continue silently with local data.
Key Files
| File | Purpose |
|---|---|
data/rocks/QUARTER/ | Rock files for each quarter (e.g., data/rocks/2026-Q1/) |
data/vision.md | V/TO document (1-Year Plan for alignment checks) |
templates/rock.md | Template for creating new Rock files |
data/accountability.md | Accountability Chart (seat owners for Rock-owner alignment) |
Rock File Format
Each Rock is a markdown file with YAML frontmatter:
id: rock-001
title: "Launch Beta Program"
owner: "brad"
quarter: "2026-Q1"
status: on_track # on_track | off_track | complete | dropped
created: "2026-01-02"
due: "2026-03-31"
Status values:
on_track— progressing as expectedoff_track— behind or at riskcomplete— done (set during end-of-quarter scoring)dropped— no longer a priority (set during end-of-quarter scoring)
File naming: rock-NNN-slug.md where NNN is a zero-padded ID and slug is the title slugified (lowercase, hyphens, no special chars).
Milestones: Rocks support two milestone formats:
- Structured (frontmatter): Array of milestone objects with
title, optionalduedate, andstatus(todo/in_progress/done). Enables date-based progress tracking and overdue detection. - Markdown checklist (body): Traditional
- [ ]/- [x]checklist items in the Milestones section. Simple and human-friendly.
Both are valid. Tracking mode prefers frontmatter milestones when present, falls back to markdown checklist parsing otherwise.
Attachments: Optional attachments array in frontmatter references supporting documents. Each attachment has a path (relative to CEOS root) and optional label. The skill displays references but does not manage files.
Quarter Format
Quarters follow YYYY-QN format: 2026-Q1, 2026-Q2, 2026-Q3, 2026-Q4.
To determine the current quarter from today's date:
- Jan-Mar = Q1, Apr-Jun = Q2, Jul-Sep = Q3, Oct-Dec = Q4
Process
Mode: Setting Rocks
Use when creating new Rocks at the start of a quarter.
Step 1: Determine the Quarter
Check if the user specified a quarter. If not, use the current quarter. If creating Rocks for a past quarter, warn: "That quarter has already started/ended. Continue anyway?"
Create the quarter directory if it doesn't exist: data/rocks/YYYY-QN/
Step 2: Review Context
Before creating Rocks, read and briefly summarize:
- The 1-Year Plan from
data/vision.md(what are we trying to achieve this year?) - Any existing Rocks for this quarter (avoid duplicates)
Step 3: Walk Through Each Rock
For each Rock, collect:
- Title — short, specific description (e.g., "Launch Beta Program")
- Owner — one person (Rocks are never shared)
- Measurable outcome — what does "done" look like?
- Milestones — 2-4 checkpoints toward completion
- Structured milestones (optional) — Ask: "Add due dates to milestones?"
- If yes, collect for each milestone: title, due date (
YYYY-MM-DD), status (default:todo) - Store as
milestonesarray in frontmatter - If no, use markdown checklist only (traditional format)
- If more than 7 milestones, warn: "EOS recommends 3-5 milestones per Rock. Are all of these essential checkpoints?"
- If yes, collect for each milestone: title, due date (
- Attachments (optional) — Ask: "Any supporting documents to reference?"
- If yes, collect: path (relative to CEOS root) and optional label for each
- Store as
attachmentsarray in frontmatter
Step 4: Validate
- 3-7 Rocks per person. If someone has fewer than 3, ask if they should own more. If more than 7, flag: "Too many Rocks for [person]. EOS recommends 3-7. Which ones are the real priorities?"
- Alignment check. Does each Rock connect to a 1-Year Plan goal? Flag any that don't.
- Due date. Set to the last day of the quarter.
- Seat alignment. Cross-reference Rock owners against
data/accountability.md. Flag mismatches if a Rock's subject area doesn't match the owner's seat responsibilities, for example: "This Rock falls under the [Seat] responsibilities. Should [Seat Owner] own it instead?"
Step 5: Generate the ID
Read existing Rock files in the quarter directory. Find the highest rock-NNN ID and increment. If no files exist, start at rock-001.
Step 6: Write the File
Use templates/rock.md as the template. Substitute:
- Frontmatter fields (id, title, owner, quarter, status=on_track, created=today, due=quarter-end)
- Body sections (measurable outcome, milestones)
Write to data/rocks/YYYY-QN/rock-NNN-slug.md.
Show the user the complete file before writing. Ask: "Create this Rock?"
Step 7: Repeat or Finish
Ask: "Create another Rock, or are we done for now?"
When finished, display a summary table of all Rocks for the quarter:
| Rock | Owner | Due |
|---|---|---|
| Launch Beta Program | brad | 2026-03-31 |
| Hire VP Sales | daniel | 2026-03-31 |
Mode: Tracking Rocks
Use for weekly or ad-hoc status checks.
Step 1: Read All Rocks
Read all Rock files in data/rocks/[current-quarter]/. Parse the frontmatter for status.
Step 2: Display Status
Show a status table:
| Rock | Owner | Status | Milestones | Notes |
|---|---|---|---|---|
| Launch Beta Program | brad | on_track | 2/3 complete | On schedule |
| Hire VP Sales | daniel | off_track | 0/4 complete (1 overdue) | No candidates yet |
Milestone progress computation:
- If frontmatter has
milestonesarray: Count entries withstatus: donevs total. Display: "N/M complete". If any milestone hasduein the past andstatusis notdone, append "(X overdue)". - Else: Parse markdown checklist in body (count
[x]vs total[ ]and[x]). Display: "N/M done".
Attachment display: If frontmatter has attachments array, show after the status table:
Attachments:
• Beta spec (data/rocks/2026-Q1/rock-001-beta-spec.pdf)
• Requirements doc (data/rocks/2026-Q1/requirements.pdf)
Step 3: Update Status
If a Rock's status needs to change:
- Show the current status
- Ask what the new status should be (on_track or off_track)
- Show the diff in the frontmatter
- Ask for approval before writing
- Add a dated note to the Notes section
Mode: Scoring Rocks (End of Quarter)
Use at the end of a quarter for the completion review.
Step 1: Load All Rocks
Read all Rock files in data/rocks/[quarter]/.
Step 2: Score Each Rock
For each Rock, ask: "Complete or incomplete?"
- EOS scoring is binary. No partial credit. The measurable outcome was either achieved or it wasn't.
- Update status to
completeordropped(if the Rock was abandoned or deprioritized) - A Rock that was worked on but not finished gets
dropped— it can become a new Rock next quarter
Step 3: Show the diff for each status change, ask for approval.
Step 4: Summary
Display the quarter scorecard:
Q1 2026 Rock Scorecard
━━━━━━━━━━━━━━━━━━━━━━
Complete: 4/6 (67%)
Target: 80%+
✓ Launch Beta Program (brad)
✓ Hire VP Sales (daniel)
✓ Implement CRM (daniel)
✗ Redesign Onboarding (brad) — dropped
✓ ISO Certification (sarah)
✗ Partner Program (brad) — dropped
If completion rate is below 80%, flag it: "Below the 80% target. Consider: Were Rocks too ambitious, or were there execution issues? This is a good topic for the next L10."
Output Format
Setting: Show each Rock file before writing. End with a summary table. Tracking: Status table with milestone progress (from frontmatter milestones if present, else markdown checklist). Overdue milestones flagged. Attachments listed if present. Scoring: Quarter scorecard with completion rate.
Guardrails
- Always show diff before writing. Never modify a Rock file without showing the change and getting approval.
- One owner per Rock. If the user tries to assign a Rock to multiple people, explain that EOS Rocks have one owner. Suggest splitting into separate Rocks.
- 3-7 per person. Warn (don't block) if someone is outside this range.
- Binary scoring only. Don't allow "partial" or percentage-based scoring. Complete or dropped.
- Milestone status values. Only accept
todo,in_progress,donefor structured milestones. If the user provides another value during creation, show the allowed values. - Respect quarter boundaries. Rocks in
data/rocks/2026-Q1/belong to Q1. Don't move them between quarters — create new Rocks in the next quarter instead. - Cross-reference V/TO. When setting Rocks, check alignment with the 1-Year Plan from
data/vision.md. Useceos-vtoif deeper vision review is needed. - ID uniqueness. Always check existing files before assigning an ID to avoid collisions.
- Don't auto-invoke other skills. Mention
ceos-vto,ceos-l10, andceos-annualwhen relevant, but let the user decide when to switch workflows. - Sensitive data warning. On first use, remind the user: "Rocks may contain sensitive business priorities. Use a private repo."
Integration Notes
V/TO (ceos-vto)
- Read:
ceos-rocksreadsdata/vision.mdto check the 1-Year Plan when setting Rocks. Each Rock should connect to a 1-Year Plan goal. - Suggested flow: If Rocks don't align with the 1-Year Plan, suggest: "Review the V/TO with
ceos-vtoto ensure strategic alignment."
L10 Meetings (ceos-l10)
- Read:
ceos-l10reads Rock files during Section 4 (Rock Review) of the L10 meeting. Each Rock owner reports on_track or off_track status. - Suggested flow: Off-track Rocks should be discussed further in the IDS section of the L10.
Quarterly Conversations (ceos-quarterly)
- Read:
ceos-quarterlyreferences Rock progress during quarterly conversations. Rock ownership and status provide context for individual performance discussions.
Annual Planning (ceos-annual)
- Read/Write: During annual planning, the team scores the outgoing quarter's Rocks and sets Q1 Rocks for the new year.
ceos-annualorchestrates this;ceos-rockshandles the actual Rock creation and scoring.
To-Dos (ceos-todos)
- Related: Rock milestones may generate To-Dos during L10 meetings. These To-Dos are tracked in
data/todos/viaceos-todoswithsource: l10.
Accountability Chart (ceos-accountability)
- Read:
ceos-rocksreadsdata/accountability.mdwhen setting Rocks to validate that Rock owners match seat responsibilities. A Rock about sales pipeline should belong to whoever owns the Sales & Marketing seat. - Suggested flow: If a Rock doesn't align with the owner's seat, suggest: "This Rock falls under the [Seat] responsibilities. Should [Seat Owner] own it instead?"
Read-Only Principle
Other skills read data/rocks/ for reference. Only ceos-rocks writes to Rock files. This preserves a single source of truth for quarterly priorities.