/ceos-todos
Use when tracking, creating, completing, or reviewing To-Dos
$ npx -y skills add bradfeld/ceos --skill ceos-todos --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
/ceos-todos
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when tracking, creating, completing, or reviewing To-Dos
SKILL.md
ceos-todos.SKILL.mdname: ceos-todos
description: Use when tracking, creating, completing, or reviewing To-Dos
file-access: [data/todos/, templates/todo.md]
tools-used: [Read, Write, Glob]
ceos-todos
Track To-Dos — the concrete actions that bridge meetings and execution. Every To-Do has one owner, a due date, and a source. EOS teams target 90%+ weekly completion rate.
When to Use
- "Show my to-dos" or "what's on my list?"
- "Create a to-do" or "add a to-do for [person]"
- "Mark to-do done" or "complete [to-do]"
- "To-do review" or "how's our completion rate?"
- "What to-dos are overdue?"
- "Open to-dos" or "what needs to get done this week?"
- "To-do list" or "show all to-dos"
- "Weekly to-do report" or "to-do scorecard"
- "New to-do from L10" or "IDS to-do"
- Any time someone commits to a concrete action with a deadline
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/todos/` | To-Do files (one file per To-Do) | | `templates/todo.md` | Template for new To-Do files |
To-Do File Format
Each To-Do is a markdown file with YAML frontmatter:
id: todo-001
title: "Send revised proposal to Acme"
owner: "brad"
due: "2026-02-20"
status: open # open | complete
source: l10 # l10 | ids | quarterly | adhoc
created: "2026-02-13"
completed_on: "" # filled when status → complete
**Status values:**
- `open` — not yet done
- `complete` — done (binary — no partial credit in EOS)
**Source values:**
- `l10` — created during an L10 meeting
- `ids` — created during IDS issue resolution
- `quarterly` — created during a Quarterly Conversation
- `adhoc` — created outside of a meeting context
**Overdue:** A To-Do is overdue if `status: open` and `due` is before today's date. This is computed when displaying — not stored as a status.
**File naming:** `todo-NNN-slug.md` where NNN is a zero-padded ID and slug is the title slugified (lowercase, hyphens, no special characters).
Process
Mode: List
When the user asks to see their To-Dos or check what's open.
Step 1: Read All To-Dos
Read all files in `data/todos/`. Parse the YAML frontmatter for each file.
If the directory doesn't exist or is empty: "No To-Dos yet. Use this skill to create one, or they'll be created during L10 meetings and IDS sessions."
Step 2: Filter
By default, show only `status: open` To-Dos. If the user asks for "all to-dos" or "show completed", include `status: complete` as well.
Step 3: Compute Overdue
For each open To-Do, compare `due` to today's date:
- If `due` < today: mark as overdue, calculate days overdue
- If `due` is today: mark as "due today"
- If `due` is in the future: show days remaining
Flag To-Dos that are 30+ days overdue with a warning — these should be discussed in the next L10 (drop them or recommit with a new deadline).
Step 4: Display
Group by owner, sorted by due date within each group:
Open To-Dos (7 total, 2 overdue)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Brad (3 to-dos):
todo-003 Send revised proposal due: Feb 20 3 days left
todo-007 Review hiring pipeline due: Feb 18 1 day left
todo-001 Update onboarding doc due: Feb 10 ⚠️ 4 days overdue
Daniel (2 to-dos):
todo-005 Fix dashboard report due: Feb 22 8 days left
todo-004 Schedule vendor call due: Feb 15 due today
Sarah (2 to-dos):
todo-006 Draft Q2 budget due: Feb 28 14 days left
todo-002 Send partnership agreement due: Feb 12 ⚠️ 2 days overdue
Step 5: Summary
Show summary statistics:
Summary: 7 open | 2 overdue | 3 owners
---
Mode: Create
When the user wants to add a new To-Do.
Step 1: Collect Information
Ask for each field:
1. **Title** — "What needs to be done?" (short, specific, action-oriented) 2. **Owner** — "Who owns this?" (one person — never "the team") 3. **Due date** — "When is this due?" (specific date, usually within 7 days for L10 To-Dos) 4. **Source** — "Where did this come from?" (l10, ids, quarterly, or adhoc)
If the user is creating multiple To-Dos (e.g., from an L10 meeting), collect all of them before writing files.
Step 2: Validate
- **Title required.** If empty, ask again.
- **Owner required.** If empty or "the team", explain: "Every To-Do needs one owner — who's accountable?"
- **Due date required.** If empty, explain: "Every To-Do needs a deadline. When is this due?"
- **Due date sanity check.** If more than 14 days out, note: "Most EOS To-Dos are 7-day actions. Is this really a To-Do, or might it be a Rock?"
Step 3: Generate the ID
Read existing To-Do files in `data/todos/`. Find the highest `todo-NNN` ID and increment. If no files exist, start at `todo-001`.
Create the directory `data/todos/` if it doesn't exist.
Step 4: Slugify the Title
Convert the title to a filename slug:
- Lowercase
- Replace spaces with hyphens
- Remove special characters
- Truncate to 50 characters
Step 5: Create the File
Use `templates/todo.md` as the template. Fill in:
- Frontmatter: id, title, owner, due, status=open, source, created=today
- Body: description from the user's input
Show the complete file before writing. Ask: "Create this To-Do?"
Step 6: Write
Write to `data/todos/todo-NNN-slug.md`.
Step 7: Repeat or Finish
Ask: "Create another To-Do, or done for now?"
When finished, display a summary of all created To-Dos:
Created 3 To-Dos:
todo-008 Send revised proposal brad due: Feb 20 [l10]
todo-009
Read more
name: ceos-todos description: Use when tracking, creating, completing, or reviewing To-Dos file-access: [data/todos/, templates/todo.md] tools-used: [Read, Write, Glob]
ceos-todos
Track To-Dos — the concrete actions that bridge meetings and execution. Every To-Do has one owner, a due date, and a source. EOS teams target 90%+ weekly completion rate.
When to Use
- "Show my to-dos" or "what's on my list?"
- "Create a to-do" or "add a to-do for [person]"
- "Mark to-do done" or "complete [to-do]"
- "To-do review" or "how's our completion rate?"
- "What to-dos are overdue?"
- "Open to-dos" or "what needs to get done this week?"
- "To-do list" or "show all to-dos"
- "Weekly to-do report" or "to-do scorecard"
- "New to-do from L10" or "IDS to-do"
- Any time someone commits to a concrete action with a deadline
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/todos/` | To-Do files (one file per To-Do) | | `templates/todo.md` | Template for new To-Do files |
To-Do File Format
Each To-Do is a markdown file with YAML frontmatter:
id: todo-001 title: "Send revised proposal to Acme" owner: "brad" due: "2026-02-20" status: open # open | complete source: l10 # l10 | ids | quarterly | adhoc created: "2026-02-13" completed_on: "" # filled when status → complete
**Status values:**
- `open` — not yet done
- `complete` — done (binary — no partial credit in EOS)
**Source values:**
- `l10` — created during an L10 meeting
- `ids` — created during IDS issue resolution
- `quarterly` — created during a Quarterly Conversation
- `adhoc` — created outside of a meeting context
**Overdue:** A To-Do is overdue if `status: open` and `due` is before today's date. This is computed when displaying — not stored as a status.
**File naming:** `todo-NNN-slug.md` where NNN is a zero-padded ID and slug is the title slugified (lowercase, hyphens, no special characters).
Process
Mode: List
When the user asks to see their To-Dos or check what's open.
Step 1: Read All To-Dos
Read all files in `data/todos/`. Parse the YAML frontmatter for each file.
If the directory doesn't exist or is empty: "No To-Dos yet. Use this skill to create one, or they'll be created during L10 meetings and IDS sessions."
Step 2: Filter
By default, show only `status: open` To-Dos. If the user asks for "all to-dos" or "show completed", include `status: complete` as well.
Step 3: Compute Overdue
For each open To-Do, compare `due` to today's date:
- If `due` < today: mark as overdue, calculate days overdue
- If `due` is today: mark as "due today"
- If `due` is in the future: show days remaining
Flag To-Dos that are 30+ days overdue with a warning — these should be discussed in the next L10 (drop them or recommit with a new deadline).
Step 4: Display
Group by owner, sorted by due date within each group:
Open To-Dos (7 total, 2 overdue) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Brad (3 to-dos): todo-003 Send revised proposal due: Feb 20 3 days left todo-007 Review hiring pipeline due: Feb 18 1 day left todo-001 Update onboarding doc due: Feb 10 ⚠️ 4 days overdue Daniel (2 to-dos): todo-005 Fix dashboard report due: Feb 22 8 days left todo-004 Schedule vendor call due: Feb 15 due today Sarah (2 to-dos): todo-006 Draft Q2 budget due: Feb 28 14 days left todo-002 Send partnership agreement due: Feb 12 ⚠️ 2 days overdue
Step 5: Summary
Show summary statistics:
Summary: 7 open | 2 overdue | 3 owners
---
Mode: Create
When the user wants to add a new To-Do.
Step 1: Collect Information
Ask for each field:
1. **Title** — "What needs to be done?" (short, specific, action-oriented) 2. **Owner** — "Who owns this?" (one person — never "the team") 3. **Due date** — "When is this due?" (specific date, usually within 7 days for L10 To-Dos) 4. **Source** — "Where did this come from?" (l10, ids, quarterly, or adhoc)
If the user is creating multiple To-Dos (e.g., from an L10 meeting), collect all of them before writing files.
Step 2: Validate
- **Title required.** If empty, ask again.
- **Owner required.** If empty or "the team", explain: "Every To-Do needs one owner — who's accountable?"
- **Due date required.** If empty, explain: "Every To-Do needs a deadline. When is this due?"
- **Due date sanity check.** If more than 14 days out, note: "Most EOS To-Dos are 7-day actions. Is this really a To-Do, or might it be a Rock?"
Step 3: Generate the ID
Read existing To-Do files in `data/todos/`. Find the highest `todo-NNN` ID and increment. If no files exist, start at `todo-001`.
Create the directory `data/todos/` if it doesn't exist.
Step 4: Slugify the Title
Convert the title to a filename slug:
- Lowercase
- Replace spaces with hyphens
- Remove special characters
- Truncate to 50 characters
Step 5: Create the File
Use `templates/todo.md` as the template. Fill in:
- Frontmatter: id, title, owner, due, status=open, source, created=today
- Body: description from the user's input
Show the complete file before writing. Ask: "Create this To-Do?"
Step 6: Write
Write to `data/todos/todo-NNN-slug.md`.
Step 7: Repeat or Finish
Ask: "Create another To-Do, or done for now?"
When finished, display a summary of all created To-Dos:
Created 3 To-Dos: todo-008 Send revised proposal brad due: Feb 20 [l10] todo-009
Run EOS with AI. CEOS brings the Entrepreneurial Operating System to Claude Code, giving your leadership team 23 AI-powered skills for Vision, Accountability Chart, Rocks, Scorecard, L10 Meetings, IDS, To-Dos, Process, People Analyzer, Quarterly

