ceos-dashboard
ceos-dashboard
State of the Business summary — a read-only dashboard that aggregates data from all CEOS skills into a single view. Quick pulse check before L10 meetings, weekly reviews, or any time the leadership team needs the big picture.
When to Use
- "Dashboard" or "show me the dashboard"
- "State of the business" or "how are we doing?"
- "Business health" or "pulse check"
- "Overview" or "what's the state of things?"
- "Quick summary" or "where do we stand?"
- Before L10 meetings for a pre-meeting snapshot
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/vision.md |
V/TO document (Core Focus, targets, plans) |
data/rocks/YYYY-QN/ |
Rock files for current quarter |
data/scorecard/metrics.md |
Metric definitions |
data/scorecard/weeks/YYYY-WNN.md |
Weekly scorecard entries |
data/issues/open/ |
Open issues awaiting resolution |
data/people/ |
Person evaluation files |
data/accountability.md |
Accountability chart (team structure) |
Design Principles
- Read-only. Dashboard never modifies any data files. It reads and summarizes.
- Graceful degradation. Missing data sections show guidance, not errors. New CEOS repos with partial setup work fine.
- Cross-skill coordination. Each section suggests the relevant skill for taking action. Dashboard presents the data; other skills change it.
Process
The dashboard has a single mode — it reads all available data and presents a summary.
Step 1: Determine Current Period
Calculate from today's date:
- Current quarter: Jan-Mar = Q1, Apr-Jun = Q2, Jul-Sep = Q3, Oct-Dec = Q4. Format:
YYYY-QN - Current ISO week: Format:
YYYY-WNN(Week 1 is the week containing the first Thursday of the year)
Step 2: V/TO Snapshot
Read data/vision.md.
If the file exists:
- Extract the company name from the document header
- Extract Core Focus (Purpose + Niche) — show as one line
- Extract 10-Year Target — show as one line
- Extract 3-Year Picture — show revenue/headcount targets if present
- Extract 1-Year Plan — show key goals
Display as a compact summary:
V/TO — [Company Name]
Core Focus: [Purpose — Niche]
10-Year Target: [Target]
3-Year Picture: [Key metrics]
1-Year Plan: [Key goals]
If the file does not exist:
V/TO: Not configured. Run `ceos-vto` to set your vision.
Step 3: Rock Status
Read all .md files in data/rocks/[current-quarter]/.
If the directory exists and contains files:
- Parse each Rock's YAML frontmatter for
statusandowner - Count by status:
on_track,off_track,complete,dropped - Calculate total Rock count
- If frontmatter
milestonesarray exists, count milestone progress (done vs total)
Display:
Rocks — [Quarter]
Total: [N] | On Track: [N] | Off Track: [N] | Complete: [N] | Dropped: [N]
[If off-track Rocks exist, list them by owner:]
Off track: [Rock title] ([owner]), [Rock title] ([owner])
If the directory does not exist or is empty:
Rocks: No Rocks set for [quarter]. Run `ceos-rocks` to set priorities.
Step 4: Scorecard Health
Read data/scorecard/weeks/[current-ISO-week].md.
If the file exists:
- Parse the metrics table from the markdown body
- Count metrics with
on_trackstatus vsoff_trackstatus - List any off-track metric names
Display:
Scorecard — [Week]
[N] on track | [N] off track
[If off-track metrics exist:]
Off track: [Metric name] ([owner]), [Metric name] ([owner])
If the file does not exist:
Fall back: check for the most recent week file in data/scorecard/weeks/ (sorted by filename descending). If one exists within the last 2 weeks, show it with a note: "(latest available: [week])".
If no recent files exist:
Scorecard: No data for this week. Run `ceos-scorecard` to log.
If data/scorecard/ directory doesn't exist:
Scorecard: Not set up yet. Run `ceos-scorecard` to define metrics and log weekly.
Step 5: Open Issues
Read all .md files in data/issues/open/.
If the directory exists and contains files:
- Parse each issue's YAML frontmatter for
priority(1-5) andcreateddate - Count total open issues
- Count by priority level
- Calculate age of the oldest issue (days since
created)
Display:
Open Issues — [N] total
By priority: [N] P1 | [N] P2 | [N] P3 | [N] P4 | [N] P5
Oldest: [issue title] ([N] days)
If the directory is empty or does not exist:
Open Issues: None. Great work!
Step 6: People Summary
Read all .md files in data/people/ (exclude the alumni/ subdirectory).
If the directory exists and contains files:
- Parse each person's YAML frontmatter for
statusanddeparted - Skip any files where
departed: true - Count total active team members
- Count by status:
right_person_right_seat,below_bar,wrong_seat,evaluating - Flag any
below_barorwrong_seatcounts (but do NOT expose names — privacy)
Display:
People — [N] team members
Right person, right seat: [N] | Below bar: [N] | Wrong seat: [N] | Evaluating: [N]
If there are below_bar or wrong_seat members:
[N] flagged — review with `ceos-people` for details
If the directory is empty or does not exist:
People: No evaluations on file. Run `ceos-people` to evaluate team members.
Step 7: Action Suggestions
After displaying all sections, provide a brief list of suggested next actions based on the data:
- If any Rocks are off-track: "Review off-track Rocks with
ceos-rocks" - If any Scorecard metrics are off-track: "Investigate off-track metrics with
ceos-scorecard" - If open issues exist with P1 priority: "Resolve critical issues with
ceos-ids" - If any people are below_bar or wrong_seat: "Review flagged team members with
ceos-people" - If V/TO is missing: "Set your vision with
ceos-vto" - If no Rocks exist: "Set quarterly priorities with
ceos-rocks"
Only show suggestions where action is needed. If everything looks healthy, show:
All clear — no immediate action items.
Output Format
The complete dashboard output:
State of the Business
━━━━━━━━━━━━━━━━━━━━━
Date: YYYY-MM-DD
V/TO — Acme Corp
Core Focus: Helping SMBs automate operations — B2B SaaS
10-Year Target: $100M ARR
3-Year Picture: $20M revenue, 50 employees, 3 products
1-Year Plan: $8M revenue, launch Product #2
Rocks — Q1 2026
Total: 6 | On Track: 4 | Off Track: 2 | Complete: 0 | Dropped: 0
Off track: Hire VP Sales (daniel), Partner Program (brad)
Scorecard — W07
5 on track | 2 off track
Off track: New Customers (daniel), Support Response Time (sarah)
Open Issues — 8 total
By priority: 2 P1 | 3 P2 | 2 P3 | 1 P4 | 0 P5
Oldest: Slow customer onboarding (45 days)
People — 5 team members
Right person, right seat: 3 | Below bar: 1 | Wrong seat: 1 | Evaluating: 0
2 flagged — review with `ceos-people` for details
━━━━━━━━━━━━━━━━━━━━━
Suggested Actions:
• Review off-track Rocks with `ceos-rocks`
• Investigate off-track metrics with `ceos-scorecard`
• Resolve 2 critical (P1) issues with `ceos-ids`
• Review flagged team members with `ceos-people`
Graceful degradation example (new repo with only V/TO set up):
State of the Business
━━━━━━━━━━━━━━━━━━━━━
Date: YYYY-MM-DD
V/TO — Acme Corp
Core Focus: Helping SMBs automate operations — B2B SaaS
10-Year Target: $100M ARR
Rocks: No Rocks set for Q1 2026. Run `ceos-rocks` to set priorities.
Scorecard: Not set up yet. Run `ceos-scorecard` to define metrics and log weekly.
Open Issues: None. Great work!
People: No evaluations on file. Run `ceos-people` to evaluate team members.
━━━━━━━━━━━━━━━━━━━━━
Suggested Actions:
• Set quarterly priorities with `ceos-rocks`
• Define scorecard metrics with `ceos-scorecard`
• Evaluate team members with `ceos-people`
Guardrails
- Read-only ALWAYS. Dashboard never modifies any data files. It reads, summarizes, and reports. If a user asks to change something from the dashboard context, direct them to the appropriate skill.
- Suggest skills for action. Every section that shows a problem ends with a skill suggestion. The user decides whether to act — dashboard never auto-invokes other skills.
- No auto-invoke. Never call other skills automatically. Mention
ceos-rocks,ceos-scorecard,ceos-ids,ceos-people, andceos-vtowhen relevant, but let the user decide when to switch workflows. - Graceful degradation. Missing data is normal for new CEOS repos. Show helpful guidance ("Run
ceos-Xto get started"), not errors. Never crash or stop because one data source is missing — continue with the others. - Current state only. Dashboard shows the current snapshot — current quarter Rocks, current week Scorecard, currently open Issues. For historical analysis or trends, direct users to specific skills (e.g.,
ceos-scorecardTrend Analysis mode). - Privacy-aware. Don't expose individual names in the People section flags. Show counts ("2 flagged") and suggest
ceos-peoplefor details. People evaluations are sensitive. - Malformed data tolerance. If a file has invalid YAML frontmatter, skip it with a console note ("Skipping [filename] — invalid frontmatter") and continue. One bad file shouldn't break the entire dashboard.
- Quarter detection. Always auto-detect the current quarter from today's date. Don't prompt the user for the quarter — dashboard is meant to be instant.
- Sensitive data warning. On first use, remind the user: "Dashboard data may include sensitive business information. Use a private repo."
Integration Notes
V/TO (ceos-vto)
- Read: Dashboard reads
data/vision.mdfor the V/TO Snapshot section. Extracts Core Focus, 10-Year Target, 3-Year Picture, and 1-Year Plan. - Suggested flow: If V/TO is missing, suggest: "Set your vision with
ceos-vto."
Rocks (ceos-rocks)
- Read: Dashboard reads
data/rocks/[current-quarter]/for Rock Status. Counts by status, lists off-track Rocks. - Suggested flow: If Rocks are off-track, suggest: "Review off-track Rocks with
ceos-rocks."
Scorecard (ceos-scorecard)
- Read: Dashboard reads
data/scorecard/weeks/[current-week].mdfor Scorecard Health. Falls back to the most recent available week if current week hasn't been logged. - Suggested flow: If metrics are off-track, suggest: "Investigate off-track metrics with
ceos-scorecard."
IDS (ceos-ids)
- Read: Dashboard reads
data/issues/open/for Open Issues summary. Counts by priority, identifies the oldest unresolved issue. - Suggested flow: If P1 issues exist, suggest: "Resolve critical issues with
ceos-ids."
People Analyzer (ceos-people)
- Read: Dashboard reads
data/people/(excludingalumni/) for People Summary. Counts by status, flags below_bar and wrong_seat without exposing names. - Suggested flow: If flagged people exist, suggest: "Review flagged team members with
ceos-people."
Clarity Break (ceos-clarity)
- Distinction: Both dashboard and ceos-clarity show "State of the Business" context. Dashboard is a quick status check — factual counts and summaries. Clarity Break is a strategic reflection tool — includes the same context plus guided reflection prompts. Use dashboard for meetings and quick checks; use ceos-clarity for dedicated thinking time.
Read-Only Principle
Dashboard never writes to any data files. It is a pure read-only aggregator across all CEOS data directories. Each data domain has a single writer skill:
| Data | Writer Skill |
|---|---|
data/vision.md |
ceos-vto |
data/rocks/ |
ceos-rocks |
data/scorecard/ |
ceos-scorecard |
data/issues/ |
ceos-ids |
data/people/ |
ceos-people |
data/accountability.md |
ceos-accountability |
Dashboard reads from all of them, writes to none of them.