bradfeld/ceos/ceos-todos
Claude Code and agent skill by bradfeld/ceos
- community
Checking that the SKILL.md file is still in the repository.
Use when tracking, creating, completing, or reviewing To-Dos
Install
npx vskill@latest install bradfeld/ceos/ceos-todosSKILL.md
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:
Status values:
open— not yet donecomplete— done (binary — no partial credit in EOS)
Source values:
l10— created during an L10 meetingids— created during IDS issue resolutionquarterly— created during a Quarterly Conversationadhoc— 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
dueis today: mark as "due today" - If
dueis 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:
Step 5: Summary
Show summary statistics:
Mode: Create
When the user wants to add a new To-Do.
Step 1: Collect Information
Ask for each field:
- Title — "What needs to be done?" (short, specific, action-oriented)
- Owner — "Who owns this?" (one person — never "the team")
- Due date — "When is this due?" (specific date, usually within 7 days for L10 To-Dos)
- 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:
Mode: Complete
When the user wants to mark To-Do(s) as done.
Step 1: Show Open To-Dos
List all open To-Dos (same as List mode, filtered to status: open).
If no open To-Dos exist: "No open To-Dos to complete. Nice work!"
Step 2: Select
Ask which To-Do(s) to mark complete. Accept:
- By ID: "todo-003"
- By title match: "the proposal one"
- Multiple: "todo-003 and todo-007"
- All: "all of them" (confirm before proceeding)
Step 3: Update Each File
For each selected To-Do:
- Read the file
- Update frontmatter:
status: completecompleted_on: "YYYY-MM-DD"(today's date)
- Add a note:
- YYYY-MM-DD: Completed - Show the diff (frontmatter changes + note addition)
- Ask: "Mark this To-Do complete?"
- Write the file
Step 4: Summary
After completing all selected To-Dos, show:
Mode: Review
When the user wants to check the team's To-Do completion rate — typically during or after an L10 meeting.
Step 1: Determine Time Period
Default to the last 7 days. If the user specifies a range (e.g., "last month", "since January"), adjust accordingly.
Step 2: Read All To-Dos
Read all files in data/todos/. Categorize:
- Completed in period:
status: completeANDcompleted_onfalls within the time range - Overdue in period:
status: openANDduefalls within (or before) the time range - Still open (future):
status: openANDdueis after the time range end
Step 3: Calculate Completion Rate
Only count To-Dos whose due date falls within or before the review period. To-Dos with future due dates are not yet countable.
Step 4: Display Report
Step 5: Patterns and Flags
Analyze the data for actionable patterns:
- Below 90% target: "Completion rate is 85%. Below the 90% EOS target. Consider: are there too many To-Dos, or is the team overcommitted?"
- Specific owner below average: "[Person] completed 2/4 (50%). Worth discussing — are they overloaded?"
- Source patterns: "4 of 6 overdue To-Dos came from IDS. Are IDS actions being set with realistic timelines?"
- Chronic overdue (same To-Do overdue 2+ weeks): "todo-005 has been overdue for 14 days. Either do it, drop it, or turn it into a Rock."
Output Format
List: Owner-grouped table of open To-Dos with due dates and overdue indicators. Create: Complete To-Do file preview before writing. Summary table after creation. Complete: Diff for each To-Do being completed. Summary with timing (early/on-time/late). Review: Completion rate report with completed, overdue, and still-open sections. Pattern analysis.
Guardrails
- Always show diff before writing. Never create or modify a To-Do file without showing the content and getting approval.
- Owner required. Every To-Do has exactly one owner. Not "the team", not "TBD", not blank. If someone won't commit to owning it, it's not a real To-Do.
- Due date required. Every To-Do has a deadline. No deadline = no accountability. If the user doesn't specify a date, ask for one.
- One To-Do per file. Each To-Do gets its own file in
data/todos/. Don't combine multiple To-Dos into one file. - ID uniqueness. Always scan all existing files in
data/todos/before generating a new ID. Never reuse IDs — even if a file was deleted, use the next sequential number. - Don't delete To-Do files. Completed To-Dos stay in
data/todos/withstatus: complete. They're the audit trail for completion rate analytics. - Don't auto-invoke other skills. Mention
ceos-l10,ceos-ids, andceos-quarterlywhen relevant, but let the user decide when to switch workflows. - Warn on overload. If one person has 10+ open To-Dos, warn: "That's a lot of open To-Dos. Consider prioritizing or pushing some to a future week."
- To-Dos vs Rocks. If a To-Do has a due date more than 14 days out or describes a large initiative, suggest: "This sounds like it might be a Rock rather than a To-Do. Rocks are 90-day priorities managed by
ceos-rocks." - Completion rate only reflects `data/todos/`. To-Dos embedded in old L10 meeting notes are not counted. The Review mode should note this if the user asks about discrepancies.
- Source field is immutable. Once set, don't change the source — it's the audit trail for where the To-Do originated.
- Sensitive data warning. On first use, remind the user: "To-Dos may contain sensitive action items and personnel references. Use a private repo."
Integration Notes
L10 Meetings (ceos-l10)
- Section 5 — To-Do Review: During L10 meetings, the To-Do Review section should reference
data/todos/as the source of truth. Useceos-todosList mode to show open To-Dos and Complete mode to mark items done during the meeting. - Section 7 — Conclude: New To-Dos created during the L10 should be tracked via
ceos-todosCreate mode withsource: l10.
IDS (ceos-ids)
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ceos-todos/SKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/bradfeld/ceos/ceos-todos)