# Ceos Calendar

> Use when managing the rolling market calendar - conferences, launches, fundraising milestones, partner events, and team constraints

- Skill: `bradfeld/ceos-calendar` (Agent Skill)
- Install (CLI): `npx skillmds@latest add bradfeld/ceos-calendar`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bradfeld/ceos-calendar/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: bradfeld (https://skillmd.com/u/bradfeld)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bradfeld/ceos-calendar

---


# ceos-calendar

Manage the rolling 6-month market calendar — external events, partner milestones, fundraising deadlines, and team constraints that affect quarterly planning and Rocks.

## When to Use

- "Show the calendar" or "market calendar"
- "Add an event" or "add a conference to the calendar"
- "What events are coming up?" or "upcoming deadlines"
- "Update event status" or "mark that event as past"
- "Calendar for quarterly planning" or "what's happening next quarter?"
- "Any constraints this month?" or "team availability"

## 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/calendar/events.md` | Market calendar events (dates, types, owners, status) |
| `templates/calendar-events.md` | Template for initial calendar file |
| `data/vision.md` | Strategic context for event relevance |
| `data/rocks/QUARTER/` | Current Rocks for alignment checks |
| `data/accountability.md` | Seat owners for event-owner validation |

### Calendar Data Format

Events are stored in a single markdown table in `data/calendar/events.md`. Each row is one event:

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| Date | `YYYY-MM-DD` | Yes | Event date (ISO 8601) |
| Event | string | Yes | Short event name |
| Type | enum | Yes | `partner`, `market`, `fundraising`, `constraint` |
| Owner | string | Yes | Person responsible, or "Team" for constraints |
| Status | enum | Yes | `upcoming`, `past`, `cancelled` |
| Notes | string | No | Brief context or outcome |

**Type values:**
- `partner` — partner milestones, reviews, joint events
- `market` — conferences, industry events, product launches
- `fundraising` — investor meetings, round targets, pitch deadlines
- `constraint` — team-wide holidays, office closures, blackout periods

**Status values:**
- `upcoming` — event has not occurred yet
- `past` — event has passed (update notes with outcome)
- `cancelled` — event was cancelled or no longer relevant

**Sorting:** Rows are sorted chronologically by Date, oldest first.

## Process

### Mode: View Calendar

Use when the user wants to see upcoming events or review the calendar.

#### Step 1: Read Events

Read `data/calendar/events.md` and parse the events table.

#### Step 2: Calculate Rolling Window

Compute the rolling window: 3 months before today through 3 months after today. Filter events to this window.

#### Step 3: Display Calendar

Group events by month and display:

```
Market Calendar (Dec 2025 - Jun 2026)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

January 2026
  15  CES 2026 [market] — Ryan Martens (past)
      Attended; explored AI agent partnerships

March 2026
  08  GHC Registration Deadline [partner] — Dan Forman (upcoming)
  31  Seed Round Close Target [fundraising] — Ryan Martens (upcoming)

April 2026
  10  AnitaB.org Quarterly Review [partner] — Dan Forman (upcoming)
```

#### Step 4: Cross-Reference with Rocks

Read `data/rocks/[current-quarter]/` and highlight any events that relate to current Rocks. For example, if a Rock is "Raise \$2.5M Seed Round" and there's a fundraising event, note the connection.

---

### Mode: Add Events

Use when creating new calendar events.

#### Step 1: Collect Event Details

For each event, collect:

1. **Date** — when does it happen? (must be `YYYY-MM-DD`)
2. **Event name** — short, descriptive title
3. **Type** — one of: `partner`, `market`, `fundraising`, `constraint`
4. **Owner** — who is responsible? (use "Team" for constraints)
5. **Notes** — optional context

#### Step 2: Validate

- Date is valid ISO 8601 format
- Type is one of the 4 allowed values
- Owner exists in `data/accountability.md` (or is "Team" for constraints)

#### Step 3: Insert in Chronological Order

Read the existing events table. Insert the new row at the correct chronological position.

#### Step 4: Show Diff and Write

Show the user the updated table with the new row highlighted. Ask: "Add this event?"

If approved, write `data/calendar/events.md`.

#### Step 5: Continue or Finish

Ask: "Add another event, or are we done?"

When finished, display a summary of events added this session.

---

### Mode: Update Events

Use when changing event status, editing details, or removing events.

#### Step 1: Display Events

Show all events (not just the rolling window) so the user can find what they want to update.

#### Step 2: Collect Changes

Common updates:
- **Status change** — mark as `past` (add outcome to notes) or `cancelled`
- **Date change** — event was rescheduled
- **Notes update** — add context or outcome

#### Step 3: Show Diff and Write

Show the specific row changes. Ask: "Update this event?"

If approved, write `data/calendar/events.md`.

## Output Format

**View:** Calendar grouped by month with type tags and status indicators. Past events dimmed. Upcoming events within 2 weeks highlighted. Rock cross-references noted.
**Add:** Show the new row in context. End with a summary of events added.
**Update:** Show the diff of changed fields. Confirm before writing.

## Guardrails

- **Always show diff before writing.** Never modify `data/calendar/events.md` without showing the change and getting approval.
- **Valid types only.** Only accept `partner`, `market`, `fundraising`, `constraint`. If the user provides another type, show the allowed values and ask which fits.
- **One owner per event.** Use "Team" for constraints that affect everyone.
- **Dates must be ISO 8601.** If the user says "next Tuesday" or "March 8th", convert to `YYYY-MM-DD` format and confirm.
- **Maintain chronological order.** When inserting or reordering, keep rows sorted by Date.
- **Don't auto-invoke other skills.** Mention `ceos-rocks` and `ceos-quarterly-planning` when relevant, but let the user decide when to switch.
- **Sensitive data warning.** On first use, remind the user: "Calendar events may contain sensitive business information. Use a private repo."

## Integration Notes

### Rocks (ceos-rocks)

- **Read:** Calendar events provide market context for setting Rocks. During Rock-setting, suggest reviewing the calendar for deadlines that affect priorities.
- **Suggested flow:** "Review the market calendar with `ceos-calendar` before finalizing Rocks."

### Quarterly Planning (ceos-quarterly-planning)

- **Read:** Calendar events should be reviewed during quarterly planning. Upcoming conferences, deadlines, and constraints inform quarterly priorities.
- **Suggested flow:** "Check the market calendar for Q2 events that may affect planning."

### L10 Meetings (ceos-l10)

- **Read:** Upcoming events within 2 weeks can surface as Headlines in the L10 meeting.
- **Suggested flow:** "There are 2 events in the next 2 weeks — mention them in Headlines?"

### Annual Planning (ceos-annual)

- **Read:** Year-ahead events inform 1-Year Plan goals and major milestones.

### Accountability Chart (ceos-accountability)

- **Read:** `ceos-calendar` reads `data/accountability.md` to validate that event owners match seat responsibilities.

### Write Principle

Only `ceos-calendar` writes to `data/calendar/events.md`. Other skills read calendar data for reference.

