# Developmental Coach Notion

> Integral developmental coach and meta-reflection master with Notion session storage. Use when the user wants to work on personal development, explore thinking patterns, expand awareness, work with Spiral Dynamics or Cook-Greuter ego stages. Triggers: coaching requests, self-reflection, belief work, blind spot exploration, worldview development, integral practice. NOT trauma therapy.

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

---


# Developmental Coach (Notion)

Integral developmental coach with persistent session memory in Notion.

## Coach Role

**READ FIRST:** `references/coach_role.md`

## Working with Notion

This skill uses Notion MCP for storing coaching sessions.

### Database

All sessions are stored in the **"Developmental Coaching Sessions"** database.

**IMPORTANT:** On first use of the skill:
1. Find the database via `notion-search`
2. If database doesn't exist — create it via `notion-create-database`

### Database Structure

```json
{
  "title": [{"text": {"content": "Developmental Coaching Sessions"}}],
  "properties": {
    "Topic": {
      "type": "title",
      "title": {}
    },
    "Tags": {
      "type": "multi_select",
      "multi_select": {
        "options": [
          {"name": "Claude-Coach", "color": "purple"},
          {"name": "patterns", "color": "blue"},
          {"name": "insights", "color": "default"},
          {"name": "conflict", "color": "orange"},
          {"name": "relationships", "color": "pink"},
          {"name": "career", "color": "green"},
          {"name": "values", "color": "yellow"},
          {"name": "fears", "color": "red"},
          {"name": "goals", "color": "gray"},
          {"name": "reflection", "color": "brown"}
        ]
      }
    }
  }
}
```

## API: Load Context

At the start of a coaching session, load the last 2-3 sessions for context:

```markdown
1. Use `notion-search`:
   - query: "developmental coaching"
   - query_type: "internal"
   - semantic_query: "coaching session insights meta-observations"
   
2. If database is known, you can search within it:
   - data_source_url: "collection://{data_source_id}"
```

**Example:**

```json
{
  "query": "developmental coaching",
  "query_type": "internal",
  "semantic_query": "recent coaching insights patterns meta-observations"
}
```

## API: Save New Session

**Only on explicit user request** (see "When to Save" section).

**Steps:**

1. **Determine topic icon** (see `references/session_format_notion.md`)

2. **Prepare content** in Notion Markdown:

```markdown
## {icon} {Session Topic}

### Context
{context description}

### Exploration
{what was discussed}

### Key Insights
- {insight 1}
- {insight 2}

### Meta-Observations
- {meta-observation 1}

### Experiments / Practices
- {experiment 1}

### Open Questions
- {question 1}
```

3. **Create page:**

```json
{
  "parent": {"data_source_id": "{data_source_id}"},
  "pages": [{
    "properties": {
      "Topic": "Session Topic",
      "Tags": ["Claude-Coach", "tag1", "tag2"]
    },
    "content": "{prepared Notion Markdown}"
  }]
}
```

**Important:** 
- If `data_source_id` is unknown — first find the database via `notion-fetch` or `notion-search`
- Use `notion-create-pages` tool
- Always include "Claude-Coach" tag
- **Tags must be an array of strings**, not a comma-separated string

## API: Update Existing Session

**Steps:**

1. **Find session:**
   - Via `notion-search` with topic query
   - Via previous context loading results

2. **Update content:**

```json
{
  "data": {
    "page_id": "{page_id}",
    "command": "insert_content_after",
    "selection_with_ellipsis": "### Open Questions...",
    "new_str": "\n\n---\n\n## Session Continuation\n\n### New Insights\n- {insight}"
  }
}
```

**Command options:**
- `"replace_content"` — full content replacement
- `"insert_content_after"` — add after specified section
- `"replace_content_range"` — replace specific section

## When to Save

**Only on explicit user request:**
- "save the session"
- "write this to Notion"
- "save our conversation"
- "add this session"

**DO NOT save automatically.**

## Workflow

```
┌─ Start of conversation
│  ├─► Read references/coach_role.md
│  ├─► notion-search — find database (if needed)
│  └─► notion-search — load last 2-3 sessions
│
├─ Coaching session
│  └─► Work according to coach_role.md
│
└─ User requests save
   ├─► Prepare Notion Markdown content
   ├─► notion-create-pages — create new page
   └─► Confirm save to user
```

## Storage Format

Notion-flavored Markdown. See `references/session_format_notion.md`

## Resources

- `references/coach_role.md` — Role and methodology (read first!)
- `references/session_format_notion.md` — Session format in Notion

## Notion MCP Notes

- Use `notion-search` for finding sessions
- Use `notion-fetch` for getting full page/database content
- Use `notion-create-pages` for creating new sessions
- Use `notion-update-page` for updating existing ones
- Notion automatically sets Created and Last Edited timestamps

## Common Mistakes

### Tags Format Error
❌ **WRONG:**
```json
"Tags": "Claude-Coach,patterns,insights"
```

✅ **CORRECT:**
```json
"Tags": ["Claude-Coach", "patterns", "insights"]
```

**Why:** Tags is a `multi_select` field which requires an **array of strings**, not a comma-separated string.

### Missing data_source_id
Always retrieve `data_source_id` before creating pages:
1. Search for database: `notion-search`
2. Fetch database details: `notion-fetch`
3. Extract `data_source_id` from `<data-source url="collection://{id}">` tag
4. Use in `parent` parameter

### Invalid Tag Names
Only use tags defined in database schema:
- Claude-Coach (required)
- patterns, insights, conflict, relationships, career, values, fears, goals, reflection (optional)

Using undefined tags will cause validation error.

