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
marker file. This file marks the root of the CEOS repository.
If
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 |
|---|
| Rock files for each quarter (e.g., ) |
| V/TO document (1-Year Plan for alignment checks) |
| Template for creating new Rock files |
| Accountability Chart (seat owners for Rock-owner alignment) |
Rock File Format
Each Rock is a markdown file with YAML frontmatter:
yaml
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:
- — progressing as expected
- — behind or at risk
- — done (set during end-of-quarter scoring)
- — no longer a priority (set during end-of-quarter scoring)
File naming: 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 , optional date, and (//). Enables date-based progress tracking and overdue detection.
- Markdown checklist (body): Traditional / 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
array in frontmatter references supporting documents. Each attachment has a
(relative to CEOS root) and optional
. The skill displays references but does not manage files.
Quarter Format
Quarters follow
format:
,
,
,
.
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:
Step 2: Review Context
Before creating Rocks, read and briefly summarize:
- The 1-Year Plan from (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 (), status (default: )
- Store as array 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?"
- Attachments (optional) — Ask: "Any supporting documents to reference?"
- If yes, collect: path (relative to CEOS root) and optional label for each
- Store as array 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 . 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
ID and increment. If no files exist, start at
.
Step 6: Write the File
Use
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 array: Count entries with vs total. Display: "N/M complete". If any milestone has in the past and is not , append "(X overdue)".
- Else: Parse markdown checklist in body (count vs total and ). Display: "N/M done".
Attachment display: If frontmatter has
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
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 or (if the Rock was abandoned or deprioritized)
- A Rock that was worked on but not finished gets — 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 , , for structured milestones. If the user provides another value during creation, show the allowed values.
- Respect quarter boundaries. Rocks in 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 . Use if 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 , , and when 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: reads to 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 to ensure strategic alignment."
L10 Meetings (ceos-l10)
- Read: reads 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: references 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. orchestrates this; handles 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 via with .
Accountability Chart (ceos-accountability)
- Read: reads when 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
for reference.
Only writes to Rock files. This preserves a single source of truth for quarterly priorities.