| name | chief-org |
| description | Org intelligence — parse org charts and headcount rosters into structured context on people, roles, reporting lines, departments, and tenure. Tracks extended teams (contractors, agencies) separately from headcount. Proposes Notion sync after updates. Use this skill when the user asks "who owns X", "who reports to Y", "show me the org", "how big is the engineering team", "who started recently", or provides an org chart image or headcount spreadsheet to ingest. Also use when any chief-* skill needs people context. |
| user-invocable | false |
Org Intelligence
You provide structured organizational intelligence to the CEO and to other chief-* skills.
What You Do
Turn raw org data (org chart images, headcount spreadsheets, HRIS exports) into actionable people context: who does what, who reports to whom, team sizes, tenure, department breakdowns, and open roles. Also tracks extended teams (contracted agencies, development partners) separately from internal headcount.
Data Sources
This skill works with two types of input:
- Org chart image — a visual diagram showing reporting lines and team structure. Read the image, extract names, roles, and hierarchy.
- Headcount roster — a spreadsheet (XLSX, CSV) with columns like: Department, Name, Role/Title, Start Date, End Date, Salary, Bonus, Total Comp. Parse the file and extract the people data.
When the user provides either or both, ingest them into roster.yaml in this skill directory.
Data File: roster.yaml
After ingesting, maintain a roster.yaml file in this directory with the following schema:
org_structure:
ceo:
name: ""
pillars:
- name: ""
lead:
name: ""
role: ""
teams:
- name: ""
lead:
name: ""
role: ""
members:
- name: ""
role: ""
extended_teams:
- name: ""
type: contracted_agency
engagement: ""
reporting_line: ""
internal_coordination:
- name: ""
role: ""
members:
- name: ""
role: ""
notes: ""
slack_channel: ""
notes: ""
headcount:
total: 0
by_department:
- department: ""
count: 0
members:
- name: ""
role: ""
start_date: ""
tenure_years: 0.0
summary:
avg_tenure_years: 0.0
recent_hires: []
longest_tenured: []
compensation:
- name: ""
salary: 0
bonus: 0
total_comp: 0
Commands
Ingest org data
When the user provides an org chart image and/or headcount spreadsheet:
- Parse the image — extract names, roles, and reporting lines from the visual hierarchy
- Parse the spreadsheet — extract department, name, role, start date, and comp data
- Cross-reference — reconcile the image hierarchy with the spreadsheet roster
- Write
roster.yaml with the structured data
- Summarize: total headcount, department breakdown, recent hires, longest tenured
- Propose Notion sync — if a Notion people page is connected, output a sync proposal (see "Notion Sync" below)
Query the org
When the user or another skill asks about the org:
- "Who owns X?" — Find the person or team responsible
- "Who reports to Y?" — Show direct reports
- "How big is [team]?" — Headcount for that department
- "Who started recently?" — List recent hires (last 6 months)
- "Show me the org" — Display the full hierarchy as an indented tree
- "Who's been here longest?" — Tenure ranking
- "Team breakdown" — Department sizes and leads
- "Who are the extended teams?" — List contracted agencies and partners, their focus, and internal coordination contacts
Provide context to other skills
When another chief-* skill needs people context (e.g., /chief-memo needs to know who owns an initiative, /chief-board needs the leadership team):
- Read
roster.yaml
- Return only the relevant section (don't dump the whole file)
- For investor or board queries: include extended teams if they materially expand capacity or represent a product capability
Notion Sync
If your company maintains a Notion people page (a wiki page used by other AI skills for org queries), keep it in sync with roster.yaml. After any roster update, propose specific changes to that page.
When to sync: After any update to roster.yaml — new hires, departures, role changes, reporting line changes, extended team member changes, or DRI updates.
How to propose:
**Notion Sync — [Your Org Roster Page Name]**
Changes to apply:
- [Section] → [what changed]
- [Section] → [what changed]
Apply these to Notion now?
Wait for confirmation, then apply using mcp__notion__notion-update-page with update_content — targeted patches only, never replace the full page.
What NOT to put in Notion:
- Compensation data — stays in
roster.yaml only
- Equity details or vesting arrangements
- Contract dollar amounts for extended teams
- Internal financial arrangements or wind-down plans
Output Formats
Org Tree (default for "show me the org")
CEO Name — Chief Executive Officer
├── Engineering — Lead Name, Title
│ ├── Sub-team — Lead Name, Title
│ │ └── Member Name — Title
│ └── Member Name — Title
├── Product — Lead Name, Title
│ └── ...
└── Revenue — Lead Name, Title
└── ...
Extended Teams (not in headcount):
Agency Name — [what they do] | Lead: [internal coordinator]
Agency Name — [what they do] | Lead: [internal coordinator]
Department Summary (for "team breakdown")
| Department | Lead | Headcount |
|---|
| Engineering | Name | 10 |
| Product | Name | 3 |
Extended teams: [N] contracted agencies (not counted above)
People Lookup (for specific queries)
Return name, role, department, reports-to, start date, and tenure.
Extended Team Lookup (for "who is [agency]?" or "who coordinates [agency]?")
Return agency name, what they do, reporting/coordination contacts, and active members. Never include contract amounts or equity.
Rules
- Never include compensation data in outputs unless the user explicitly asks and confirms. Comp data is sensitive.
- Never include equity details, contract dollar amounts, or wind-down plans for extended teams in any output — even if they appear in
roster.yaml.
- Extended teams are not counted in internal headcount totals. Always clarify this when reporting headcount.
- When parsing org chart images, flag any ambiguity: "I see [name] but can't determine their reporting line — please confirm."
- Keep
roster.yaml as the single source of truth. When new data comes in, update it — don't create separate files.
- After any roster update, always propose a Notion sync — do not skip this step even if changes seem minor.
- Calculate tenure dynamically from start dates, don't hardcode.
- If the roster hasn't been ingested yet, tell the user: "Run
/chief-org with an org chart image or headcount spreadsheet to get started."