Implement Phase 1: Work integration (without n8n)

Skills Created:
- outline: Full MCP integration with Outline wiki (search, read, create, export, AI queries)
- Enhanced basecamp: Added project mapping configuration to PARA structure
- Enhanced daily-routines: Integrated work context (Basecamp, Outline) into daily/weekly workflows
- Enhanced meeting-notes: Added Teams transcript processing workflow guide

PARA Work Structure Created:
- 01-projects/work/: 10 project folders with MOCs (placeholders for user customization)
- 02-areas/work/: 5 area files (current-job, professional-dev, team-management, company-knowledge, technical-excellence)
- 03-resources/work/wiki-mirror/: Ready for Outline exports
- 04-archive/work/: Ready for completed work

Documentation Added:
- skills/outline/SKILL.md: Comprehensive wiki workflows and tool references
- skills/outline/references/outline-workflows.md: Detailed usage examples
- skills/outline/references/export-patterns.md: Obsidian integration patterns
- skills/meeting-notes/references/teams-transcript-workflow.md: Manual DOCX → meeting note workflow
- skills/chiron-core/references/work-para-structure.md: Work-specific PARA organization

Key Integrations:
- Basecamp ↔ Obsidian: Project mapping and task sync
- Outline ↔ Obsidian: Wiki search, export decisions, knowledge discovery
- Teams → Obsidian: Transcript processing with AI analysis
- All integrated into daily/weekly routines

Note: n8n workflows skipped per user request. Ready for n8n automation later.
This commit is contained in:
m3tm3re
2026-01-28 18:58:49 +01:00
parent 3e3b17de38
commit e2932d1d84
18 changed files with 2746 additions and 459 deletions

View File

@@ -215,6 +215,83 @@ For complete tool reference with parameters, see [references/mcp-tools.md](refer
- **Work projects only**: This skill is for professional/team projects
- **Pagination handled**: MCP server handles pagination transparently
## Project Mapping Configuration
### Map Basecamp Projects to PARA
When setting up the integration, create a mapping between Basecamp projects and Obsidian project folders:
**Example configuration** (to be customized):
```json
{
"basecamp_projects": {
"project_123": {
"name": "API Integration Platform",
"para_path": "01-projects/work/api-integration-platform",
"area": "technical-excellence",
"type": "engineering"
},
"project_456": {
"name": "Customer Portal Redesign",
"para_path": "01-projects/work/customer-portal-redesign",
"area": "technical-excellence",
"type": "product-design"
}
// ... add all projects
}
}
```
**Where to store**:
- Obsidian: `~/CODEX/_chiron/context/basecamp-projects.md`
- Or in skill: `references/basecamp-project-map.md`
### Usage in Workflows
When creating/syncing to Basecamp:
```
1. User mentions: "API Integration Platform"
2. Look up in project map:
- Get: project_id = "project_123"
- Get: para_path = "01-projects/work/api-integration-platform"
3. Use project_id for Basecamp operations
4. Use para_path for Obsidian operations
```
### Fetching Real Projects
**When first setting up**:
```
User: "Fetch my Basecamp projects and set up PARA structure"
Steps:
1. get_projects() → Get all Basecamp projects
2. For each project:
- Extract: id, name, status, last_activity
- Determine PARA path (kebab-case from name)
- Create project folder with _index.md
- Add frontmatter: basecamp_id, project_link
3. Create mapping in basecamp-projects.md
4. Confirm: "Mapped 10 Basecamp projects to PARA structure"
```
**Example project _index.md frontmatter**:
```yaml
---
title: "[Project Name]"
basecamp_id: "project_123"
basecamp_url: "https://3.basecampapi.com/123456/projects/project_123"
status: active
deadline: YYYY-MM-DD
source: basecamp
tags: [work, project, engineering]
---
```
---
## Integration with Other Skills
| From Skill | To Basecamp |
@@ -222,6 +299,8 @@ For complete tool reference with parameters, see [references/mcp-tools.md](refer
| brainstorming | Save decision → reference in project docs |
| plan-writing | todo-structure.md → Basecamp todos or cards |
| task-management | Obsidian tasks ↔ Basecamp todos (manual reference) |
| daily-routines | Morning planning with Basecamp todos, evening review |
| meeting-notes | Sync action items from meetings to Basecamp |
## Common Patterns

View File

@@ -0,0 +1,393 @@
# PARA Structure Design for Work Integration
## Vault Root Structure
```
~/CODEX/
├── _chiron/
│ ├── context.md # Chiron system context
│ └── templates/ # Note templates
│ ├── daily-note.md
│ ├── weekly-review.md
│ ├── project.md
│ ├── meeting.md
│ ├── meeting-transcript.md # New: For Teams transcripts
│ ├── area.md
│ └── resource.md
├── 00-inbox/ # Quick captures
│ ├── learnings/
│ └── work-captures/
├── 01-projects/ # Active projects
│ ├── work/ # WORK PROJECTS (10 Basecamp projects)
│ │ ├── _basecamp-activity.md # Basecamp sync log
│ │ ├── _projects-index.md # Master index of all work projects
│ │ │
│ │ ├── project-a/ # [PROJECT NAME 1]
│ │ │ ├── _index.md # Project MOC (links to Basecamp)
│ │ │ ├── meetings/ # Teams meetings
│ │ │ │ ├── standup-20260128.md
│ │ │ │ └── planning-20260125.md
│ │ │ │
│ │ │ ├── decisions/ # Decision records
│ │ │ │ ├── tech-stack-20260120.md
│ │ │ │ └── feature-priority-20260115.md
│ │ │ │
│ │ │ ├── notes/ # Project notes
│ │ │ │ ├── research-api.md
│ │ │ │ └── design-ideas.md
│ │ │ │
│ │ │ └── basecamp-todos.md # Reference to Basecamp todos
│ │ │
│ │ ├── project-b/ # [PROJECT NAME 2]
│ │ │ ├── _index.md
│ │ │ ├── meetings/
│ │ │ ├── decisions/
│ │ │ ├── notes/
│ │ │ └── basecamp-todos.md
│ │ │
│ │ ├── project-c/ # [PROJECT NAME 3]
│ │ ├── project-d/ # [PROJECT NAME 4]
│ │ ├── project-e/ # [PROJECT NAME 5]
│ │ ├── project-f/ # [PROJECT NAME 6]
│ │ ├── project-g/ # [PROJECT NAME 7]
│ │ ├── project-h/ # [PROJECT NAME 8]
│ │ ├── project-i/ # [PROJECT NAME 9]
│ │ └── project-j/ # [PROJECT NAME 10]
│ │
│ └── personal/ # Personal projects
│ ├── learn-rust/
│ ├── home-office/
│ └── fitness-challenge/
├── 02-areas/ # Ongoing responsibilities
│ ├── work/ # Work areas
│ │ ├── current-job.md # Current role and responsibilities
│ │ ├── professional-dev.md # Learning goals, certifications
│ │ ├── team-management.md # Team coordination, 1:1s
│ │ ├── company-knowledge.md # Org-specific knowledge
│ │ └── processes.md # SOPs, workflows
│ │
│ └── personal/ # Personal areas
│ ├── health.md
│ ├── finances.md
│ ├── relationships.md
│ ├── learning.md
│ └── home.md
├── 03-resources/ # Reference material (tool-agnostic + tool-specific)
│ ├── work/ # Work resources
│ │ ├── wiki-mirror/ # Outline wiki exports (REPLACEABLE)
│ │ │ ├── outline-api-guide.md
│ │ │ ├── outline-deployment-sop.md
│ │ │ ├── outline-monitoring.md
│ │ │ └── _wiki-index.md # Master wiki index
│ │ │
│ │ ├── teams-archive/ # Teams recordings/notes (REPLACEABLE)
│ │ │ └── _teams-index.md
│ │ │
│ │ ├── basecamp-references/ # Basecamp docs/guides (REPLACEABLE)
│ │ │ └── _basecamp-docs.md
│ │ │
│ │ ├── company-procedures/ # SOPs, processes (KEEP)
│ │ │ ├── code-review.md
│ │ │ ├── deployment.md
│ │ │ └── onboarding.md
│ │ │
│ │ ├── technical-stack/ # Tech documentation (KEEP)
│ │ │ ├── backend.md
│ │ │ ├── frontend.md
│ │ │ └── infrastructure.md
│ │ │
│ │ └── _work-resources-index.md
│ │
│ └── personal/ # Personal resources
│ ├── recipes.md
│ ├── books.md
│ └── travel.md
├── 04-archive/ # Completed/inactive
│ ├── work/
│ │ ├── old-job-2024/ # Archived employment
│ │ └── projects/ # Completed projects
│ │
│ └── personal/
│ └── projects/
├── daily/ # Daily notes
│ ├── YYYY/
│ │ └── MM/
│ │ └── DD/
│ │ └── YYYY-MM-DD.md
│ └── weekly-reviews/
│ └── YYYY-W##.md
└── tasks/ # Task management
├── inbox.md # All incoming tasks
├── recurring.md # Recurring tasks
└── someday.md # Backlog items
```
---
## Work Project Template
Each of the 10 Basecamp projects should follow this structure:
### 1. Project _index.md (MOC)
```markdown
---
title: "[Project Name]"
status: active | on-hold | completed
deadline: YYYY-MM-DD
priority: critical | high | medium | low
source: basecamp
basecamp_id: [BC_PROJECT_ID]
basecamp_url: [BC_PROJECT_URL]
tags: [work, basecamp, active]
---
# [Project Name]
## Overview
[Brief description of project goals and scope]
## Basecamp Link
[View in Basecamp](basecamp_url)
## Related Areas
- [[current-job]]
- [[team-management]]
## Resources
- [[outline-api-guide]]
- [[technical-stack-backend]]
## Quick Links
- [ ] Basecamp Todos
- [ ] Basecamp Messages
- [ ] Teams Channel
- [ ] Wiki Documentation
## Notes
- [ ] Latest update (YYYY-MM-DD): [Summary]
- [ ] Latest update (YYYY-MM-DD): [Summary]
## Sub-Projects/Milestones
- [ ] Milestone 1
- [ ] Milestone 2
- [ ] Milestone 3
```
### 2. meetings/ folder
Naming pattern: `[type]-YYYYMMDD.md`
Example: `standup-20260128.md`, `planning-20260125.md`, `review-20260120.md`
### 3. decisions/ folder
Naming pattern: `[topic]-YYYYMMDD.md`
Example: `tech-stack-choice-20260120.md`, `feature-priority-20260115.md`
### 4. notes/ folder
Free-form project notes. Organize by topic or date.
Example: `research-api.md`, `design-ideas.md`, `bug-analysis.md`
---
## Tool-Specific vs Tool-Agnostic Folders
### Keep These (Tool-Agnostic)
```
~/CODEX/
├── 02-areas/work/ # Job-specific knowledge (stays with you)
├── 03-resources/work/
│ ├── company-procedures/ # Your documented processes
│ ├── technical-stack/ # Tech knowledge
│ └── learnings/ # What you learned
└── 01-projects/work/ # Project structure (stays)
```
### Replace These (Tool-Specific)
```
~/CODEX/03-resources/work/
├── wiki-mirror/ # Delete when switching jobs (Outline)
├── teams-archive/ # Delete when switching jobs (Teams)
├── basecamp-references/ # Delete when switching jobs (Basecamp)
└── [other-tools]/ # Delete when switching jobs
```
---
## Master Index Files
### _projects-index.md
```markdown
# Work Projects Index
Last updated: YYYY-MM-DD
## Active Projects (10 total)
| Project | Status | Deadline | Priority | Basecamp |
|---------|--------|-----------|-----------|-----------|
| [[project-a]] | Active | 2026-03-15 | High | [Link] |
| [[project-b]] | On Hold | 2026-04-01 | Medium | [Link] |
| [[project-c]] | Active | 2026-02-28 | Critical | [Link] |
| ... | ... | ... | ... | ... |
## By Priority
### Critical (2 projects)
- [[project-c]]
- [[project-g]]
### High (5 projects)
- [[project-a]]
- [[project-d]]
- [[project-f]]
- [[project-h]]
- [[project-j]]
### Medium (3 projects)
- [[project-b]]
- [[project-e]]
- [[project-i]]
## By Deadline
### Due This Week
- [[project-a]] (2026-02-01)
### Due Next Week
- [[project-c]] (2026-03-15)
### Due This Month
- [[project-b]] (2026-04-01)
```
### _basecamp-activity.md
```markdown
# Basecamp Activity Log
Last sync: YYYY-MM-DD HH:mm
## Today (YYYY-MM-DD)
- [10:30] Created todo: "Implement feature X" in project-a
- [11:45] Completed todo: "Review PR #123" in project-c
- [14:00] Comment added to "API Design" message in project-a
## Yesterday (YYYY-MM-DD)
- [09:00] Created card: "Bug fix investigation" in project-b
- [16:30] Completed todo: "Update documentation" in project-g
## This Week
- Total todos created: 23
- Total todos completed: 18
- Total messages: 5
- Active projects: 10
## Quick Stats
- Project with most activity: [[project-a]] (8 items)
- Overdue todos: 3
- Cards in review: 5
```
---
## Migration Guide (Job Switch)
When switching jobs:
### Step 1: Archive Current Work
```bash
# Move entire work structure to archive
mv ~/CODEX/01-projects/work/ ~/CODEX/04-archive/work/old-job-2024/
# Archive work areas (optional, if job-specific)
mv ~/CODEX/02-areas/work/ ~/CODEX/04-archive/work/areas-old-job/
# Archive tool-specific resources
rm -rf ~/CODEX/03-resources/work/wiki-mirror/
rm -rf ~/CODEX/03-resources/work/teams-archive/
rm -rf ~/CODEX/03-resources/work/basecamp-references/
```
### Step 2: Clean Areas (Keep What's Generic)
```bash
# Keep professional-dev.md (generic learning)
# Keep processes.md (if generic)
# Delete job-specific files in 02-areas/work/
rm ~/CODEX/02-areas/work/current-job.md
rm ~/CODEX/02-areas/work/team-management.md
rm ~/CODEX/02-areas/work/company-knowledge.md
```
### Step 3: Set Up New Job
```bash
# Create new work project structure
mkdir -p ~/CODEX/01-projects/work/
mkdir -p ~/CODEX/01-projects/work/_basecamp-activity.md
mkdir -p ~/CODEX/01-projects/work/_projects-index.md
# Create new work areas
echo "---\ntitle: \"Current Job\"\nstatus: active\n---\n# Current Job\n\n## Role\n[Your role]\n\n## Responsibilities\n- [Responsibility 1]\n- [Responsibility 2]\n" > ~/CODEX/02-areas/work/current-job.md
# Set up new tool folders
mkdir -p ~/CODEX/03-resources/work/wiki-mirror/
mkdir -p ~/CODEX/03-resources/work/teams-archive/
mkdir -p ~/CODEX/03-resources/work/basecamp-references/
```
### Step 4: Import Basecamp Projects
Use `basecamp` skill:
```
User: "Show my Basecamp projects"
# Review 10 projects
User: "Create project notes for all Basecamp projects"
# Generates _index.md for each project
# Populates _projects-index.md
```
### Step 5: Configure n8n Workflows
- Update Basecamp webhook URLs
- Configure Outline API for new job
- Update Teams transcript webhook
- Test all automations
---
## Implementation Checklist
### Initial Setup (One-time)
- [ ] Create directory structure in ~/CODEX/
- [ ] Create _projects-index.md template
- [ ] Create _basecamp-activity.md
- [ ] Configure basecamp skill with project IDs
- [ ] Set up n8n workflows
- [ ] Configure Outline MCP server
- [ ] Create meeting-transcript.md template
### Ongoing Maintenance
- [ ] Weekly: Review project status and update _projects-index.md
- [ ] Weekly: Archive completed projects to 04-archive/
- [ ] Weekly: Process inbox items
- [ ] Weekly: Review _basecamp-activity.md
- [ ] Monthly: Review 02-areas/work/ health
### Job Switch (When needed)
- [ ] Archive 01-projects/work/ to 04-archive/work/
- [ ] Archive tool-specific resources (wiki-mirror, teams-archive, basecamp-references/)
- [ ] Clean up job-specific areas
- [ ] Set up new project structure
- [ ] Import new Basecamp projects
- [ ] Configure new tool integrations

View File

@@ -298,12 +298,296 @@ Morning planning, evening reflection, and weekly review workflows for the Chiron
- `task-management` - Extract/update tasks
- `chiron-core` - PARA guidance, prioritization, reflection questions
- `calendar-scheduling` - Calendar integration
- `basecamp` - Fetch work todos, check project status
- `outline` - Search wiki for work context
**Delegation rules:**
- User wants to understand PARA → `chiron-core`
- User asks about tasks → `task-management`
- User needs file operations → `obsidian-management`
- User needs calendar → `calendar-scheduling`
- User needs work context → `basecamp`
- User needs wiki knowledge → `outline`
---
## Work Context Integration
### Morning Planning with Work
**Enhanced morning plan workflow:**
```
1. Read yesterday's daily note (personal + work)
2. Check today's work todos:
- Delegate to basecamp skill: "Show my Basecamp todos due today"
- Get: project name, task title, due date, assignee
3. Check project status:
- For each active work project:
Delegate to basecamp: "What's status of [project]?"
- Get: completion %, overdue items, next milestones
4. Check wiki for relevant docs:
- Delegate to outline: "Search Outline for [topic]"
- Get: related docs, decisions, processes
5. Create integrated morning plan:
- Personal priorities (from PARA areas)
- Work priorities (from Basecamp)
- Meeting schedule (from calendar)
- Deep work blocks aligned with energy
```
**Morning plan with work context:**
```markdown
# 🌅 Morning Plan - YYYY-MM-DD
## Work Focus (Top 3)
1. [[API Integration Platform]] - Complete OAuth flow (Basecamp: 3 todos today)
2. [[Customer Portal Redesign]] - Review mockups (Basecamp: 2 todos due)
3. [[Data Analytics Dashboard]] - Fix query performance (Basecamp: 1 overdue)
## Personal Focus (Top 2)
1. Health - Morning workout
2. Finances - Review monthly budget
## Deep Work Blocks
- [9:00-11:00] [[API Integration Platform]] (High energy, no meetings)
- [14:00-16:00] [[Customer Portal Redesign]] (Design work)
## Meetings (Work)
- [11:00-12:00] Project Sync (Teams)
- [15:00-16:00] Architecture Review (Zoom)
## Quick Wins (<15min)
- [ ] Respond to urgent emails
- [ ] Update project status in Basecamp
- [ ] Process inbox items (3 items)
## Work Wiki Resources
- 📄 [[OAuth Setup Guide]](outline://doc/abc123) - Reference for project 1
- 📄 [[UI Design System]](outline://doc/def456) - Reference for project 2
## Inbox to Process
- [X] items in 00-inbox/ to process
```
### Evening Reflection with Work
**Enhanced evening reflection workflow:**
```
1. Review completed tasks (personal + work)
- Check Basecamp: "What did I complete today in Basecamp?"
- Get: todos marked complete, cards moved to Done
2. Check project progress:
- For each active project: get status
- Note: milestones reached, blockers encountered
3. Capture work learnings:
- Technical learnings (to document later)
- Process insights (to export to wiki)
- Team collaboration notes
4. Sync to Obsidian:
- Create work summary in project notes
- Export decisions to Outline (if n8n available)
5. Plan tomorrow:
- Carry over incomplete Basecamp todos
- Update project priorities based on today's progress
- Identify personal priorities
```
**Evening reflection with work context:**
```markdown
# 🌙 Evening Reflection - YYYY-MM-DD
## Work Tasks Completed
- ✅ Complete OAuth2 implementation (Basecamp)
- ✅ Review dashboard mockups (Basecamp)
- ✅ Respond to 5 team messages (Teams)
- ⏭️ Fix query performance (carried over)
## Personal Tasks Completed
- ✅ Morning workout
- ✅ Weekly grocery shopping
- ⏭️ Read book chapter (carried over)
## Work Wins
1. OAuth2 implementation complete ahead of schedule
2. Team approved dashboard design direction
3. Documented architecture decision in wiki
## Personal Wins
1. Maintained morning routine
2. Saved money on groceries
## Work Challenges
- Blocker: Waiting for API key from security team (project 1)
- Solution: Scheduled meeting tomorrow to expedite
## Work Learnings
- OAuth2 token refresh pattern is simpler than expected
- Team prefers async communication over meetings
## Project Status Updates
### [[API Integration Platform]]
- Progress: 65% complete
- Completed: OAuth2, token management
- Next: API endpoints implementation
- Deadline: 2026-03-15 (on track)
### [[Customer Portal Redesign]]
- Progress: 40% complete
- Completed: Research, mockups
- Next: User testing
- Deadline: 2026-04-30 (slightly behind)
## Tomorrow's Work Focus
1. Complete API endpoints (OAuth Integration Platform)
2. Conduct user testing (Customer Portal Redesign)
3. Follow up on API key (Security team)
## Tomorrow's Personal Focus
1. Evening workout
2. Update budget with new expenses
## Energy Level
- Morning: 8/10
- Midday: 6/10 (meeting-heavy)
- Evening: 7/10
## Reflection
[User's response]
```
### Weekly Review with Work
**Enhanced weekly review workflow:**
```
1. Collect completed work:
- Get Basecamp stats: "Show my completed todos this week"
- Get project milestones achieved
2. Review all projects:
- For each work project: get status
- Identify: at risk, on track, completed
3. Review area health:
- Work areas: current-job, team-management, technical-excellence
- Check: balance, attention needed
4. Process work inbox:
- Review 00-inbox/work/ items
- File to appropriate work projects or areas
5. Plan next week:
- Work priorities from Basecamp
- Project milestones to focus on
- Personal priorities from PARA areas
```
**Weekly review with work context:**
```markdown
# 📊 Weekly Review - W## (Mon DD-MMM to Sun DD-MMM)
## Work Metrics
- Basecamp tasks completed: 23
- Projects progressed: 5
- Meetings attended: 12
- Documents created/updated: 8
- Wiki exports: 3 decisions, 2 guides
## Personal Metrics
- Tasks completed: 15
- Deep work hours: 8
- Focus score: 7.5/10
## Work Wins
1. OAuth2 platform delivered 3 days early
2. Team approved new architecture decision
3. Security audit passed with minor findings
## Personal Wins
1. Maintained workout routine (5/5 days)
2. Read 2 books
3. Saved target amount
## Work Challenges
- Challenge 1: API integration delayed by dependency
Root cause: Waiting on security team approval
Solution: Parallel track started for next sprint
## Work Patterns
- Productivity: High on Mon-Tue, dropped on Fri (meeting-heavy)
- Energy: Mornings best for deep work, afternoons for collaboration
- Meetings: Average 2.4/day, need to reduce to 1-2
## Project Status
### Completed
- [[Security Audit 2026]] - Passed with 2 minor findings
### On Track
- [[API Integration Platform]] - 65% complete, on track
- [[Customer Portal Redesign]] - 40% complete, slightly behind
- [[Data Analytics Dashboard]] - 70% complete, ahead of schedule
### Behind Schedule
- [[Documentation Revamp]] - Delayed waiting for SME availability
Action: Book dedicated session next week
### At Risk
- [[Infrastructure Migration]] - Waiting on approval from ops team
Action: Escalate to manager tomorrow
### Stalled
- [[Mobile App v2.0]] - On hold, waiting for strategy decision
Action: Follow up with product owner
## Work Area Health Review
| Area | Health | Needs Attention |
|-------|--------|----------------|
| Current Job | 8/10 | Balance work/personal time better |
| Professional Dev | 9/10 | On track with learning goals |
| Team Management | 7/10 | Follow up on stalled mobile app |
| Company Knowledge | 6/10 | Need to document more processes |
| Technical Excellence | 8/10 | Good code quality, maintain standards |
## Work Inbox Status
- Items processed: 12
- Items remaining: 3
- Filed to Projects: 8
- Filed to Resources: 2
- Archived: 1
## Next Week Work Priorities
### Top 3
1. Complete API endpoints (API Integration Platform) - Critical path
2. User testing feedback (Customer Portal Redesign) - Milestone due
3. Follow up on infrastructure approval (Infrastructure Migration) - Unblock project
### Projects to Focus
- [[API Integration Platform]] - Deliver MVP
- [[Customer Portal Redesign]] - User testing phase
- [[Data Analytics Dashboard]] - Performance optimization
### Work Areas to Nurture
- Team Management - Address mobile app stall
- Company Knowledge - Document 3 key processes
- Technical Excellence - Code review for new OAuth implementation
## Next Week Personal Priorities
### Top 3
1. Health - 5 workouts, meal prep
2. Finances - Monthly review, budget adjustment
3. Learning - Complete TypeScript course module
## Work Habits/Experiments
- Try: 2-hour deep work blocks (instead of 1.5 hours)
- Try: No meeting mornings (9-11 AM protected)
- Try: End-of-day 15-min Basecamp review
## Reflection Question
[Weekly reflection from chiron-core references/reflection-questions.md]
```
## Workflow Decision Tree

View File

@@ -0,0 +1,558 @@
# Teams Transcript Processing Workflow
Manual workflow for processing Teams meeting transcripts (.docx) into structured meeting notes with action items.
## Table of Contents
1. [Workflow Overview](#workflow-overview)
2. [Prerequisites](#prerequisites)
3. [Step-by-Step Process](#step-by-step-process)
4. [Templates](#templates)
5. [Integration Points](#integration-points)
6. [Best Practices](#best-practices)
7. [Troubleshooting](#troubleshooting)
---
## Workflow Overview
```
Teams Transcript (.docx)
[Manual: Upload transcript]
[Extract text content]
[AI Analysis: Extract key info]
├─→ Attendees
├─→ Topics discussed
├─→ Decisions made
└─→ Action items
[Create Obsidian meeting note]
├─→ Use meeting-notes template
├─→ Include transcript summary
└─→ Extract action items as tasks
[Optional: Sync to Basecamp]
├─→ Create todos in Basecamp
└─→ Assign to project
```
---
## Prerequisites
### Tools Needed
- Teams (for recording and downloading transcripts)
- Python with `python-docx` library (for text extraction)
- Obsidian (for storing meeting notes)
- Basecamp MCP (for syncing action items - optional)
### Install Dependencies
```bash
pip install python-docx
```
---
## Step-by-Step Process
### Step 1: Download Teams Transcript
**In Teams**:
1. Go to meeting recording
2. Click "..." (more options)
3. Select "Open transcript" or "Download transcript"
4. Save as `.docx` file
5. Note filename (includes date/time)
**Filename format**: `MeetingTitle_YYYY-MM-DD_HHMM.docx`
### Step 2: Extract Text from DOCX
**Python script** (`/tmp/extract_transcript.py`):
```python
#!/usr/bin/env python3
from docx import Document
import sys
import os
def extract_transcript(docx_path):
"""Extract text from Teams transcript DOCX"""
try:
doc = Document(docx_path)
full_text = '\n'.join([para.text for para in doc.paragraphs])
return full_text
except Exception as e:
print(f"Error reading DOCX: {e}")
return None
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python extract_transcript.py <transcript.docx>")
sys.exit(1)
docx_path = sys.argv[1]
text = extract_transcript(docx_path)
if text:
print(text)
# Optionally save to text file
output_path = docx_path.replace('.docx', '.txt')
with open(output_path, 'w') as f:
f.write(text)
print(f"\nExtracted to: {output_path}")
```
**Usage**:
```bash
python extract_transcript.py "MeetingName_2026-01-28_1400.docx"
```
### Step 3: AI Analysis of Transcript
**Prompt for AI** (ask your AI assistant):
```
Analyze this Teams meeting transcript and extract:
1. Attendees:
- Names and roles (if mentioned)
- Who spoke the most
- Any key stakeholders
2. Topics Discussed:
- Main topics (3-5 key items)
- Brief summary of each topic
3. Decisions Made:
- Clear decisions with reasoning
- Format: "Decision: [what] - [reasoning]"
- Include: "Deferred decisions" if applicable
4. Action Items:
- Extract specific, actionable tasks
- Include: owner (@mention), due date (if mentioned), priority (implicit from context)
- Format: "- [ ] Task description #meeting #todo 🔼 👤 @name 📅 YYYY-MM-DD"
5. Next Steps:
- Follow-up meetings needed
- Deliverables expected
- Blockers or dependencies
Format output in markdown ready for Obsidian meeting template.
```
### Step 4: Create Obsidian Meeting Note
**Ask AI to**:
- Use meeting-notes skill template
- Format extracted content
- Create proper frontmatter
- Add wiki-links to related projects/areas
**Template structure** (from meeting-notes skill):
```markdown
---
title: "[Meeting Title]"
platform: teams
date: YYYY-MM-DD
time: HH:mm-HH:mm
duration: "X minutes"
attendees: [names]
transcript_file: "MeetingName_2026-01-28.docx"
project: [[Project Name]]
tags: [meeting, work, teams]
---
## Attendees
- [Name] - [Role]
- [Name] - [Role]
## Topics Discussed
### [Topic 1]
- [Summary]
### [Topic 2]
- [Summary]
## Decisions Made
1. [Decision] - [Reasoning]
2. [Decision] - [Reasoning]
## Action Items
- [ ] [Action description] #meeting #todo 🔼 👤 @name 📅 YYYY-MM-DD
- [ ] [Action description] #meeting #todo 🔽 👤 @self 📅 YYYY-MM-DD
## Next Steps
- [ ] Schedule follow-up meeting
- [ ] Share notes with team
```
### Step 5: Save to Obsidian
**Location**:
```
~/CODEX/01-projects/work/[project]/meetings/[topic]-YYYYMMDD.md
```
**Ask AI to**:
- Determine project from context
- Create proper folder structure
- Use kebab-case for filename
- Add to project MOC
### Step 6: Sync Action Items to Basecamp (Optional)
**When to sync**:
- Meeting was about a specific project
- Action items have clear owners
- Project uses Basecamp for task tracking
**Ask user**: "Sync these action items to Basecamp?"
**If yes**:
1. Delegate to basecamp skill
2. Ask: "Which Basecamp project?"
3. Create todos with:
- Proper due dates
- Assignees (from @mentions)
- Linked to project
4. Confirm: "Created X todos in [project]"
---
## Templates
### AI Analysis Prompt Template
**Copy this prompt** for consistent results:
```text
You are a meeting analysis assistant. Analyze this Teams meeting transcript and extract:
1. Attendees:
- List all participants mentioned
- Identify speakers (who talked most)
- Note any key stakeholders (managers, decision-makers)
2. Topics Discussed (3-5 main topics):
For each topic:
- Title (2-4 words)
- Summary (2-3 sentences)
- Time spent on topic (if discernible from transcript)
3. Decisions Made:
For each decision:
- Decision statement (what was decided)
- Reasoning (brief justification)
- Consensus level (unanimous / majority / proposed)
- Format as checklist item: `- [ ] Decision: [text]`
4. Action Items:
For each action item:
- Description (specific, actionable verb)
- Owner (@mention if clear, otherwise "Unassigned")
- Due date (YYYY-MM-DD if mentioned, else "No deadline")
- Priority (implicit: ⏫ urgent, 🔼 high, 🔽 low)
- Format: `- [ ] Task #meeting #todo [priority] 👤 @owner 📅 date`
5. Next Steps:
- Follow-up meetings needed?
- Deliverables expected?
- Blockers or dependencies?
**Output Format**: Markdown ready for Obsidian meeting note template.
**Meeting Type**: [standup / 1:1 / workshop / decision]
Transcript:
[PASTE TEAMS TRANSCRIPT HERE]
```
### Meeting Note Template (Enhanced for Teams)
```markdown
---
title: "[Meeting Title]"
platform: teams
date: YYYY-MM-DD
time: HH:mm-HH:mm
duration: "X minutes"
attendees: [Name 1 - Role, Name 2 - Role, ...]
transcript_file: "transcripts/[Topic]-YYYYMMDD.docx"
recording_link: "[Teams recording URL if available]"
project: [[Project Name]]
tags: [meeting, work, teams, transcript]
---
## Attendees
| Name | Role | Company |
|-------|-------|---------|
| [Name] | [Role] | [Company] |
| [Name] | [Role] | [Company] |
## Agenda
[If agenda was known in advance]
1. [Item 1]
2. [Item 2]
3. [Item 3]
## Transcript Summary
[AI-generated summary of transcript]
## Topics Discussed
### [Topic 1]
- [Summary points]
- [Time spent: X minutes]
### [Topic 2]
- [Summary points]
- [Time spent: X minutes]
## Decisions Made
1. ✅ [Decision 1]
- **Reasoning**: [Why this decision]
- **Owner**: [Who made decision]
- **Due**: [If applicable]
2. ✅ [Decision 2]
- **Reasoning**: [Why this decision]
- **Owner**: [Who made decision]
### Deferred Decisions
- [ ] [Decision deferred] - [Why deferred, revisit date]
## Action Items
- [ ] [Task 1] #meeting #todo 🔼 👤 @owner 📅 YYYY-MM-DD
- [ ] [Task 2] #meeting #todo ⏫ 👤 @owner 📅 YYYY-MM-DD
- [ ] [Task 3] #meeting #todo 🔽 👤 self 📅 YYYY-MM-DD
### Action Item Summary
| Task | Owner | Due | Priority |
|-------|--------|------|----------|
| [Task 1] | @owner | YYYY-MM-DD | ⏫ |
| [Task 2] | @owner | YYYY-MM-DD | 🔼 |
| [Task 3] | @self | N/A | 🔽 |
## Next Steps
- [ ] Schedule follow-up meeting: [Topic] - [Proposed date]
- [ ] Share notes with: [attendee list]
- [ ] Update project status in Basecamp
## Notes
[Additional notes, observations, or clarifications]
## Links
- 📹 Teams Recording: [URL if available]
- 📄 Transcript: [[transcript_filename]]
- 🗄 Project: [[Project Name]]
- 📄 Related Docs: [[Related Outline Doc]](outline://document/abc123)
```
---
## Integration Points
### With meeting-notes Skill
**Flow**:
```
User: "Process transcript: [file.docx]"
1. Extract text from DOCX
2. Ask AI to analyze transcript
3. AI extracts: attendees, topics, decisions, action items
4. Create meeting note using meeting-notes skill
5. Ask: "Sync action items to Basecamp?"
```
### With basecamp Skill
**Flow** (optional):
```
User: "Yes, sync to Basecamp"
1. Ask: "Which Basecamp project?"
2. List available projects
3. For each action item:
- create_todo(project_id, todolist_id, content, due_on, assignee_ids)
4. Confirm: "Created X todos in [project]"
```
### With obsidian-management Skill
**Flow**:
```
1. Create meeting note at: 01-projects/work/[project]/meetings/[topic]-YYYYMMDD.md
2. Update project MOC with link to meeting:
- Add to "Meetings" section in project _index.md
3. If decision made, create in decisions/ folder
4. If applicable, export decision to Outline wiki
```
---
## Best Practices
### During Meeting
1. **Use Teams recording**: Get transcript automatically
2. **Name attendees**: Add their roles to transcript
3. **Speak clearly**: Improves transcript accuracy
4. **Agenda first**: Helps AI structure analysis
### Processing Transcripts
1. **Process quickly**: Within 24 hours while fresh
2. **Clean up text**: Remove filler words (um, ah, like)
3. **Be specific**: Action items must be actionable, not vague
4. **Assign owners**: Every action item needs @mention
5. **Set due dates**: Even if approximate (next week, by next meeting)
### Storage
1. **Consistent location**: All work meetings in project/meetings/
2. **Link everything**: Link to project, related docs, areas
3. **Tag properly**: #meeting, #work, #teams, #transcript
4. **Archive old**: Move completed project meetings to archive/
### Basecamp Sync
1. **Sync important meetings**: Not every meeting needs sync
2. **Use project context**: Sync to relevant project
3. **Verify in Basecamp**: Check todos were created correctly
4. **Follow up**: Check completion status regularly
---
## Troubleshooting
### Transcript Won't Open
**Problem**: DOCX file corrupted or wrong format
**Solution**:
1. Re-download from Teams
2. Try opening in Word first to verify
3. Use alternative: Copy-paste text manually
### AI Misses Action Items
**Problem**: Transcript analysis misses clear action items
**Solution**:
1. Manually add missed items to meeting note
2. Reprompt AI with specific context: "Review transcript again, focus on action items"
3. Check transcript: Was the audio clear?
### Wrong Project Assigned
**Problem**: Meeting note created in wrong project folder
**Solution**:
1. Move file to correct location
2. Update links in project MOCs
3. Use consistent naming conventions
### Basecamp Sync Fails
**Problem**: Todos not created in Basecamp
**Solution**:
1. Check Basecamp MCP is connected
2. Verify project ID is correct
3. Check assignee IDs are valid
4. Check todo list exists in project
5. Retry with fewer items
---
## Example End-to-End
### Input
**Teams transcript**: `api-design-review_2026-01-28_1400.docx`
### AI Output
```markdown
## Attendees
- Alice (Product Owner)
- Bob (Lead Developer)
- Charlie (Tech Lead)
- Sarah (UX Designer)
## Topics Discussed
1. API Authentication Design (20 min)
2. Rate Limiting Strategy (15 min)
3. Error Handling (10 min)
## Decisions Made
1. Use OAuth2 with refresh tokens - Industry standard, better security
2. Implement 1000 req/min rate limit - Based on load tests
## Action Items
- [ ] Create OAuth2 implementation guide #meeting #todo 🔼 👤 @alice 📅 2026-02-05
- [ ] Document rate limiting policy #meeting #todo 🔼 👤 @bob 📅 2026-02-10
- [ ] Update error handling documentation #meeting #todo 🔽 👤 @sarah 📅 2026-02-15
```
### Obsidian Note Created
**File**: `~/CODEX/01-projects/work/api-integration-platform/meetings/api-design-review-20260128.md`
### Basecamp Sync
**Project**: API Integration Platform
**Todos created**: 3
- OAuth2 guide (assigned to Alice, due 2026-02-05)
- Rate limiting (assigned to Bob, due 2026-02-10)
- Error handling (assigned to Sarah, due 2026-02-15)
---
## Automation (Future n8n Implementation)
When n8n is added, automate:
1. **Watch transcript folder**: Auto-trigger on new .docx files
2. **AI auto-analysis**: Use AI API to extract meeting info
3. **Auto-create meeting notes**: Save to Obsidian automatically
4. **Auto-sync to Basecamp**: Create todos for action items
5. **Send notifications**: "Meeting processed, X action items created"
**Workflow diagram**:
```
Teams transcript folder
↓ (n8n: Watch folder)
[Trigger: new .docx]
[Extract text]
[AI Analysis]
[Create meeting note]
[Sync to Basecamp] (conditional)
[Send ntfy notification]
```
---
## Quick Reference
| Action | Tool/Script |
|--------|--------------|
| Download transcript | Teams UI |
| Extract text | python extract_transcript.py |
| Analyze transcript | AI assistant prompt |
| Create meeting note | meeting-notes skill |
| Sync to Basecamp | basecamp skill |
| Store in Obsidian | obsidian-management skill |
| Export decision | outline skill (optional) |

View File

@@ -1,450 +0,0 @@
---
name: n8n-automation
description: "n8n workflow design and configuration for Chiron system automation. Use when: (1) designing automated workflows, (2) setting up Cron triggers, (3) configuring webhooks, (4) integrating Obsidian with n8n, (5) setting up ntfy notifications. Triggers: n8n, workflow, automation, webhook, cron, schedule."
compatibility: opencode
---
# n8n Automation
Design and configure n8n workflows for Chiron productivity system automation.
## Chiron n8n Workflows
### Workflow 1: Daily Morning Briefing
**Trigger:** Cron 07:00 (Mon-Fri)
**Purpose:** Generate morning briefing with calendar events, Basecamp todos, and tasks.
**Steps:**
1. Get calendar events (Proton Calendar or Google Calendar)
2. Get Basecamp todos (HTTP Request to Basecamp API)
3. Read today's tasks from Obsidian vault
4. Format morning briefing
5. Write daily note at `~/CODEX/daily/YYYY/MM/DD/YYYY-MM-DD.md`
6. Send ntfy notification: "Morning briefing ready"
**n8n Nodes:**
- Schedule Trigger (Cron `0 7 * * 1-5`)
- HTTP Request (Google Calendar API)
- HTTP Request (Basecamp API)
- Read/Write File (Obsidian vault)
- Code (formatting)
- HTTP Request (ntfy)
**Output:** Daily note created, ntfy notification sent
### Workflow 2: Basecamp to Obsidian Sync
**Trigger:** Webhook from Basecamp
**Events:** `todo_created`, `todo_completed`, `comment_created`, `message_created`
**Purpose:** Log Basecamp activity to Obsidian for reference.
**Steps:**
1. Receive webhook payload
2. Extract event type, project, content
3. Format activity log entry
4. Append to `~/CODEX/01-projects/work/_basecamp-activity.md`
**n8n Nodes:**
- Webhook (triggered by Basecamp)
- Code (extract and format)
- Read/Write File (append to Basecamp activity log)
**Output:** Activity logged to Obsidian
### Workflow 3: Outline Wiki Mirror
**Trigger:** Cron 22:00 daily
**Purpose:** Export updated Outline documents to Markdown and save to vault.
**Steps:**
1. Get recently updated documents from Outline API
2. For each document:
- Export as Markdown
- Save to `~/CODEX/03-resources/work-wiki/[doc-name].md`
3. Document sync in daily note
**n8n Nodes:**
- Schedule Trigger (Cron `0 22 * *`)
- HTTP Request (Outline API)
- Read/Write File (Obsidian vault)
- Code (loop and format)
**Output:** Outline docs synced to vault as Markdown
### Workflow 4: Claude Code Webhook Handler
**Trigger:** Webhook at `/webhook/chiron`
**Actions:**
- `notify` → Send ntfy notification
- `create_task` → Create task in Obsidian vault
- `log_learning` → Create learning note in vault
- `sync_basecamp` → Trigger Basecamp sync workflow
**Purpose:** Allow external systems to trigger Chiron workflows.
**Steps:**
1. Receive webhook payload with action parameter
2. Switch on action:
- `notify`: Send ntfy notification with message
- `create_task`: Create task in `tasks/inbox.md`
- `log_learning`: Create learning in `00-inbox/learnings/`
- `sync_basecamp`: Trigger Basecamp sync workflow
3. Return success response
**n8n Nodes:**
- Webhook (manual trigger)
- Code (action routing)
- Read/Write File (Obsidian vault)
- HTTP Request (ntfy)
**Output:** Action executed, confirmation returned
### Workflow 5: Weekly Review Generator
**Trigger:** Cron Sunday 18:00
**Purpose:** Generate weekly review from daily notes and send notification.
**Steps:**
1. Read daily notes for the week (Monday-Sunday)
2. Collect completed tasks, wins, challenges
3. Generate weekly review using template
4. Write to `~/CODEX/daily/weekly-reviews/YYYY-W##.md`
5. Send ntfy notification: "Weekly review ready"
**n8n Nodes:**
- Schedule Trigger (Cron `0 18 * * 0`)
- Read File (multiple daily notes)
- Code (aggregation)
- Write File (weekly review)
- HTTP Request (ntfy)
**Output:** Weekly review generated, ntfy notification sent
### Workflow 6: Mobile Task Reminders
**Trigger:** Cron every hour
**Purpose:** Send due tasks to mobile device via ntfy.
**Steps:**
1. Search Obsidian vault for tasks due today
2. Format task list
3. Send ntfy notification with task summary
**n8n Nodes:**
- Schedule Trigger (Cron `0 * * *`)
- Read File (search tasks)
- Code (format and search)
- HTTP Request (ntfy)
**Output:** ntfy notification with today's tasks
## Workflow Design Guidelines
### General Principles
1. **Minimal dependencies** - Each workflow should work independently
2. **Error handling** - Graceful degradation if external services fail
3. **Logging** - Log all actions for debugging
4. **Idempotency** - Workflows should be safe to run multiple times
5. **Testing** - Test manually before enabling Cron triggers
### File Operations
**Always use absolute paths:**
- `~/CODEX/``/home/username/knowledge/`
- Expand `~` before file operations
**File permissions:**
- Write operations: Ensure write access to vault
- Read operations: Files should exist or handle gracefully
- Directory creation: Create parent directories if needed
### API Integrations
**Basecamp API:**
- Endpoint: `https://3.basecampapi.com/[account]/projects.json`
- Authentication: OAuth2 or API token
- Rate limiting: Respect API limits (check headers)
- Error handling: Retry with exponential backoff
**Outline API:**
- Endpoint: Outline API base URL
- Authentication: API key
- Export format: Markdown
- Filtering: Updated in last 24 hours
**Proton Calendar:**
- Endpoint: Proton Calendar API
- Authentication: API token
- Time range: Today's events only
- Timezone: Use user's timezone (Europe/Berlin)
**ntfy:**
- Endpoint: `https://ntfy.sh/[topic]`
- Authentication: Token or basic auth
- Message format: Plain text or Markdown
- Priority: Default, urgent for time-sensitive notifications
### Webhook Configuration
**Setup steps:**
1. **Expose n8n webhook** (if self-hosted):
- Domain: `n8n.example.com`
- Path: `/webhook/chiron`
- SSL: HTTPS required
2. **Configure Basecamp webhooks**:
- URL: `https://n8n.example.com/webhook/chiron`
- Events: todo_created, todo_completed, comment_created, message_created
- Secret: Shared secret for validation
3. **Security:**
- Validate webhook secret
- Rate limit webhook endpoints
- Log all webhook calls
### Cron Triggers
**Syntax:** `minute hour day month weekday`
**Examples:**
```
# Daily at 7 AM, Mon-Fri
0 7 * * 1-5
# Daily at 10 PM
0 22 * * *
# Weekly Sunday at 6 PM
0 18 * * 0
# Hourly
0 * * * *
```
**n8n Cron Node settings:**
- Enable: Toggle on/off for testing
- Timezone: Europe/Berlin
- Test run: Manual trigger button
## Integration with Chiron Skills
**Delegates to:**
- `obsidian-management` - File operations for reading/writing vault
- `task-management` - Task extraction and format
- `quick-capture` - Quick capture for webhook-created tasks
- `daily-routines` - Daily note creation for morning briefings
**Delegation rules:**
- File operations → `obsidian-management`
- Task creation → `task-management`
- Quick capture → `quick-capture`
- Daily note creation → `daily-routines`
## Quick Reference
| Action | Workflow | Trigger | Frequency |
|--------|----------|----------|-----------|
| Morning briefing | Workflow 1 | Cron 07:00 Mon-Fri |
| Basecamp sync | Workflow 2 | Webhook (on change) |
| Outline mirror | Workflow 3 | Cron 22:00 daily |
| Webhook handler | Workflow 4 | Manual (API calls) |
| Weekly review | Workflow 5 | Cron Sunday 18:00 |
| Task reminders | Workflow 6 | Cron hourly |
## File Paths
**Obsidian vault:**
```
~/CODEX/
├── daily/
│ ├── YYYY/
│ │ └── MM/
│ │ └── DD/
│ │ └── YYYY-MM-DD.md # Morning briefings
│ └── weekly-reviews/
│ └── YYYY-W##.md # Weekly reviews
├── 01-projects/work/
│ └── _basecamp-activity.md # Basecamp activity log
├── tasks/
│ └── inbox.md # Webhook-created tasks
└── 00-inbox/learnings/ # Webhook-created learnings
```
## Error Handling
### API Failure
1. Log error with timestamp
2. Use cached data if available
3. Send ntfy notification: "API failed, using cache"
4. Retry with exponential backoff
### File Write Failure
1. Log error
2. Check disk space
3. Check file permissions
4. Send ntfy notification: "Failed to write to vault"
### Webhook Authentication Failure
1. Reject invalid requests (401)
2. Log suspicious attempts
3. Rate limit source IP
4. Send alert notification
## Testing
### Manual Testing
Before enabling Cron triggers:
1. **Test each workflow**:
- Manual trigger in n8n UI
- Verify file creation
- Verify API calls
- Check ntfy notifications
2. **Integration testing:**
- Trigger Basecamp webhook (create todo)
- Verify appears in Obsidian
- Test morning briefing workflow
- Verify daily note created
3. **Load testing:**
- Test with multiple daily notes
- Verify weekly review aggregation
- Test webhook with concurrent requests
### Monitoring
**Add monitoring workflows:**
1. **Health check** - Verify n8n is running (Cron every 5 min)
2. **Success rate** - Track workflow success/failure (daily summary)
3. **Error alerts** - Send ntfy on critical failures
4. **Performance** - Track workflow execution time
## Best Practices
### Workflow Design
- Keep workflows simple and focused
- Use environment variables for configuration
- Document dependencies and requirements
- Version control workflow JSON files
### API Integration
- Respect rate limits and backoff
- Cache responses when appropriate
- Handle pagination for large datasets
- Use appropriate authentication (OAuth2 vs API keys)
### Notifications
- Don't spam with ntfy
- Use appropriate priority (urgent vs default)
- Include actionable information
- Test notification delivery
### Security
- Never hardcode API keys in workflow JSON
- Use environment variables or n8n credentials
- Validate webhook secrets
- Rate limit public endpoints
- Log all external access
## Example Workflow JSON
```json
{
"name": "Daily Morning Briefing",
"nodes": [
{
"type": "n8n-nodes-base.schedule-trigger",
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 7 * * 1-5"
}
]
}
}
},
{
"type": "n8n-nodes-base.httprequest",
"parameters": {
"method": "GET",
"url": "https://calendar.googleapis.com/v3/calendars/primary/events",
"authentication": "predefinedCredentialType",
"nodeCredentialType": {
"id": "proton-calendar-token"
}
}
},
{
"type": "code",
"parameters": {
"jsCode": "// Format calendar events\nreturn events.map(e => e.summary);\n"
}
},
{
"type": "n8n-nodes-base.writefile",
"parameters": {
"fileName": "/home/username/knowledge/daily/2026/01/27/2026-01-27.md",
"data": "={{ $json.events }}",
"mode": "overwrite"
}
},
{
"type": "n8n-nodes-base.httprequest",
"parameters": {
"method": "POST",
"url": "https://ntfy.sh/chiron-tasks",
"authentication": "predefinedCredentialType",
"nodeCredentialType": {
"id": "ntfy-token"
}
}
}
]
}
```
## Troubleshooting
### Workflow Not Triggering
1. Check Cron expression syntax
2. Verify timezone settings
3. Check n8n execution logs
4. Test manual trigger
### API Rate Limits
1. Reduce polling frequency
2. Implement caching
3. Use batch operations
4. Contact provider for higher limits
### File Sync Issues
1. Check vault directory exists
2. Verify file permissions
3. Check available disk space
4. Verify path format (absolute vs relative)
## Resources
- `references/n8n-workflow-guide.md` - Detailed n8n workflow design patterns
- `references/api-integration.md` - Basecamp, Outline, Proton Calendar API docs
- `references/webhook-security.md` - Webhook security best practices
**Load references when:**
- Designing new workflows
- Troubleshooting integration issues
- Setting up monitoring

484
skills/outline/SKILL.md Normal file
View File

@@ -0,0 +1,484 @@
---
name: outline
description: "Search, read, and manage Outline wiki documentation via MCP. Use when: (1) searching Outline wiki, (2) reading/exporting Outline documents, (3) creating/updating Outline docs, (4) managing collections, (5) finding wiki content. Triggers: outline, wiki, search outline, find in wiki, export document."
compatibility: opencode
---
# Outline Wiki Integration
MCP server integration for Outline wiki documentation - search, read, create, and manage wiki content.
## Quick Reference
| Action | Command Pattern |
| --------------- | -------------------------------------- |
| Search wiki | "Search Outline for [topic]" |
| Read document | "Show me [document name]" |
| Export to vault | "Export [document] to Obsidian" |
| Create doc | "Create Outline doc: [title]" |
| List collections | "Show Outline collections" |
## Core Workflows
### 1. Search Wiki
**When user says**: "Search Outline for X", "Find in wiki about X", "Outline wiki: X"
**Steps**:
```
1. search_documents(query, collection_id?, limit?, offset?)
- If collection_id provided → search in specific collection
- If no collection_id → search all collections
- Default limit: 20 results
2. Present results:
- Document titles
- Collection names
- Relevance (if available)
3. Offer actions:
- "Read specific document"
- "Export to Obsidian"
- "Find related documents"
```
**Example output**:
```
Found 5 documents matching "API authentication":
📄 Authentication Best Practices (Collection: Engineering)
📄 OAuth2 Setup Guide (Collection: Security)
📄 API Key Management (Collection: DevOps)
📄 Common Auth Errors (Collection: Troubleshooting)
Read any document or export to Obsidian?
```
### 2. Read Document
**When user says**: "Show me [document]", "What's in [document]", "Read [doc from Outline]"
**Steps**:
```
1. get_document_id_from_title(query, collection_id?)
- Search by exact title
- Return document ID
2. read_document(document_id)
- Get full markdown content
3. Present content:
- Title and metadata
- Document content (formatted)
- Collection location
- Tags (if available)
4. Offer follow-up:
- "Export to Obsidian?"
- "Find related documents?"
- "Add to project?"
```
**Example output**:
```markdown
# Authentication Best Practices
**Collection**: Engineering
**Last updated**: 2026-01-25
## OAuth2 Flow
[Document content...]
## API Keys
[Document content...]
---
📂 Export to Obsidian | 🔗 Find related | Add to project
```
### 3. Export to Obsidian
**When user says**: "Export [document] to Obsidian", "Save [wiki page] to vault"
**Steps**:
```
1. export_document(document_id)
- Get markdown content
2. Determine Obsidian location:
- If for project: `01-projects/work/[project]/notes/[doc-name].md`
- If general: `03-resources/work/wiki-mirror/[doc-name].md`
3. Add frontmatter:
---
title: "[Document Title]"
source: outline
document_id: [ID]
collection: "[Collection Name]"
tags: [work, wiki, outline]
---
4. Create file in vault
5. Link to context:
- Project: [[Project Name]]
- Related resources
6. Confirm: "Exported [document] to [location]"
```
**File naming**:
- Convert to kebab-case: `Authentication Best Practices``authentication-best-practices.md`
- Preserve collection hierarchy: `[collection-name]/[doc-name].md`
### 4. Create Document
**When user says**: "Create Outline doc: [title]", "Add wiki page: [title]"
**Steps**:
```
1. Ask for details:
- Collection (list available if needed)
- Content (markdown text)
- Parent document (if hierarchical)
- Publish immediately?
2. create_document(title, collection_id, text?, parent_document_id?, publish?)
3. Confirm creation:
- Document ID
- URL (if Outline has web UI)
4. Offer actions:
- "Add backlink?"
- "Create in Obsidian too?"
- "Link to project?"
```
### 5. Document Discovery
**When user says**: "Show Outline collections", "Browse wiki", "What's in [collection]?"
**Steps**:
```
1. list_collections()
- Get all collections with metadata
2. Present hierarchy:
- Collection names
- Document counts
- Colors (if set)
3. User selects collection
4. get_collection_structure(collection_id)
- Show document tree
- Hierarchical view
```
**Example output**:
```
Outline Wiki Collections:
📁 Engineering (15 docs)
├─ API Documentation (8 docs)
└─ System Design (7 docs)
📁 Product (12 docs)
├─ Features (6 docs)
└─ User Guides (6 docs)
📁 Security (8 docs)
Browse which collection?
```
### 6. AI-Powered Search
**When user says**: "Ask Outline about X", "What does Outline say about X?"
**Steps**:
```
1. ask_ai_about_documents(question, collection_id?, document_id?)
- Natural language query
- AI searches across documents
2. Present AI answer:
- Summary of findings
- Source documents referenced
- Confidence (if available)
3. Offer:
- "Read source documents"
- "Export to Obsidian"
```
**Example output**:
```
🤖 Answer from Outline wiki:
Based on 12 documents, here's what I found about API authentication:
**Summary**:
- OAuth2 is preferred over API keys
- Tokens expire after 30 days
- Refresh tokens allow seamless re-authentication
**Key Sources**:
1. OAuth2 Setup Guide (Engineering/Security)
2. Authentication Best Practices (Engineering)
3. Token Management (DevOps)
Read any source document?
```
## Tool Reference
### Search & Discovery
- `search_documents(query, collection_id?, limit?, offset?)`
- Full-text search across wiki
- Optional: Scope to specific collection
- Pagination support
- `list_collections()`
- Get all collections with metadata
- Names, descriptions, colors, doc counts
- `get_collection_structure(collection_id)`
- Hierarchical document tree
- Parent-child relationships
- `get_document_id_from_title(query, collection_id?)`
- Find document by title
- Exact or fuzzy match
### Document Reading
- `read_document(document_id)`
- Full document content
- Markdown format
- Metadata included
- `export_document(document_id)`
- Export as markdown
- Same content as read_document
- Designed for exports
### Document Management
- `create_document(title, collection_id, text?, parent_document_id?, publish?)`
- Create new wiki page
- Support for hierarchical docs
- Draft or published
- `update_document(document_id, title?, text?, append?)`
- Update existing document
- Append mode for additions
- Preserve history
- `move_document(document_id, collection_id?, parent_document_id?)`
- Move between collections
- Reorganize hierarchy
### Document Lifecycle
- `archive_document(document_id)`
- Archive (not delete)
- Can be restored
- `unarchive_document(document_id)`
- Restore from archive
- `delete_document(document_id, permanent?)`
- Move to trash or permanent delete
- Requires careful confirmation
### Comments & Collaboration
- `add_comment(document_id, text, parent_comment_id?)`
- Add threaded comments
- Support for replies
- `list_document_comments(document_id, include_anchor_text?, limit?, offset?)`
- View discussion on document
- Threaded view
- `get_document_backlinks(document_id)`
- Find documents linking here
- Useful for context
### Collection Management
- `create_collection(name, description?, color?)`
- Create new collection
- For organizing docs
- `update_collection(collection_id, name?, description?, color?)`
- Edit collection metadata
- `delete_collection(collection_id)`
- Remove collection
- Affects all documents in it
- `export_collection(collection_id, format?)`
- Export entire collection
- Default: outline-markdown
- `export_all_collections(format?)`
- Export all wiki content
- Full backup
### Batch Operations
- `batch_create_documents(documents)`
- Create multiple docs at once
- For bulk imports
- `batch_update_documents(updates)`
- Update multiple docs
- For maintenance
- `batch_move_documents(document_ids, collection_id?, parent_document_id?)`
- Move multiple docs
- Reorganization
### AI-Powered
- `ask_ai_about_documents(question, collection_id?, document_id?)`
- Natural language queries
- AI-powered search
- Synthesizes across documents
## Integration with Other Skills
| From Skill | To Outline |
| ----------- | ---------- |
| meeting-notes | Export decisions to wiki |
| project-structures | Link project docs to wiki |
| daily-routines | Capture learnings in wiki |
| brainstorming | Save decisions to wiki |
## Integration with Obsidian
### Export Workflow
**When to export**:
- Important decisions made
- Project documentation needed offline
- Wiki content to reference locally
- Job transition (export all)
**Export locations**:
```
~/CODEX/
├── 01-projects/work/
│ └── [project]/
│ └── notes/
│ └── [exported-doc].md # Linked to project
└── 03-resources/work/
└── wiki-mirror/
├── [collection-name]/
│ └── [doc].md # Exported wiki pages
└── _wiki-index.md # Index of all exports
```
**Wiki index structure**:
```markdown
---
title: "Outline Wiki Index"
source: outline
last_sync: YYYY-MM-DD
---
## Collections
- [Engineering](engineering/) - 15 docs
- [Product](product/) - 12 docs
- [Security](security/) - 8 docs
## Recently Exported
- [[OAuth2 Setup Guide]] - 2026-01-25
- [[API Documentation]] - 2026-01-24
- [[System Design]] - 2026-01-23
## Search Wiki
<!-- Use outline MCP for live search -->
"Search Outline for..." → outline skill
```
## Access Control Notes
If Outline MCP is configured with `OUTLINE_READ_ONLY=true`:
- ❌ Cannot create documents
- ❌ Cannot update documents
- ❌ Cannot move/archive/delete
- ✅ Can search and read
- ✅ Can export documents
If `OUTLINE_DISABLE_DELETE=true`:
- ✅ Can create and update
- ❌ Cannot delete (protects against accidental loss)
## Work vs Personal Usage
### Work Wiki (Primary)
- Collections: Engineering, Product, Security, etc.
- Export to: `03-resources/work/wiki-mirror/`
- Projects link to: `[[Engineering/Design Decisions]]`
### Personal Wiki (Optional)
- Collections: Recipes, Travel, Hobbies, etc.
- Export to: `03-resources/personal/wiki/`
- Separate from work content
## Best Practices
### Searching
- Use specific keywords (not "everything about X")
- Use collection_id for focused search
- Check multiple collections if first search is limited
### Exporting
- Export decisions, not just reference docs
- Link exported docs to projects immediately
- Update wiki index after export
- Regular exports for offline access
### Creating Documents
- Use clear, descriptive titles
- Add to appropriate collection
- Link related documents
- Add tags for discoverability
### AI Queries
- Ask specific questions (not "everything about X")
- Use collection_id to scope query
- Verify AI sources by reading docs
- Use AI to synthesize, not replace reading
## Error Handling
### Document Not Found
1. Check title spelling
2. Try fuzzy search
3. Search collection directly
### Collection Not Found
1. List all collections
2. Check collection name
3. Verify access permissions
### Export Failed
1. Check Obsidian vault path
2. Verify disk space
3. Check file permissions
4. Create directories if needed
### Rate Limiting
- Outline MCP handles automatically with retries
- Reduce concurrent operations if persistent errors
## Quick Reference
| Action | Command Pattern |
|--------|-----------------|
| Search wiki | "Search Outline for [topic]" |
| Read document | "Show me [document name]" |
| Export to vault | "Export [document] to Obsidian" |
| Create doc | "Create Outline doc: [title]" |
| List collections | "Show Outline collections" |
| AI query | "Ask Outline about [question]" |
| Browse structure | "Browse wiki" or "Show Outline collections" |
## Resources
- `references/outline-workflows.md` - Detailed workflow examples
- `references/export-patterns.md` - Obsidian integration patterns
**Load references when**:
- Designing complex exports
- Troubleshooting integration issues
- Setting up project-to-wiki links

View File

@@ -0,0 +1,524 @@
# Export Patterns
Patterns and examples for exporting Outline wiki content to Obsidian vault.
## Table of Contents
1. [Frontmatter Patterns](#frontmatter-patterns)
2. [Folder Structure](#folder-structure)
3. [Linking Strategies](#linking-strategies)
4. [Index Management](#index-management)
5. [Batch Operations](#batch-operations)
---
## Frontmatter Patterns
### Standard Export Frontmatter
```yaml
---
title: "Document Title"
source: outline
document_id: "abc123def456"
collection: "Engineering/Security"
collection_id: "col_789"
tags: [work, wiki, outline, security]
outline_url: "https://outline.example.com/doc/abc123"
created_at: "2026-01-28"
exported_at: "2026-01-28"
last_updated: "2026-01-25"
---
```
### Decision Document Frontmatter
```yaml
---
title: "API Authentication Decision"
source: outline
type: decision
decision_date: "2026-01-28"
made_by: "Team Name"
decision_status: active | implemented | archived
tags: [work, wiki, decision, api, security]
---
# Decision
Use OAuth2 for all external API integrations.
```
### Process Document Frontmatter
```yaml
---
title: "API Onboarding Process"
source: outline
type: process
version: "2.1"
last_reviewed: "2026-01-28"
tags: [work, wiki, process, onboarding]
---
# API Onboarding Process
Step-by-step guide for new API consumers...
```
### Reference Document Frontmatter
```yaml
---
title: "OAuth2 Setup Guide"
source: outline
type: reference
language: "markdown"
estimated_read_time: "10 min"
difficulty: intermediate
tags: [work, wiki, reference, oauth2, api]
---
# OAuth2 Setup Guide
Complete guide for implementing OAuth2...
```
---
## Folder Structure
### Standard Wiki Mirror Structure
```
~/CODEX/03-resources/work/wiki-mirror/
├── _wiki-index.md # Main index
├── engineering/ # Collection folder
│ ├── security/ # Subfolder (hierarchy)
│ │ ├── api-auth-decision.md
│ │ └── security-best-practices.md
│ ├── architecture/
│ │ ├── system-design.md
│ │ └── data-flow.md
│ └── api-docs/
│ ├── oauth2-setup.md
│ ├── token-management.md
│ └── api-reference.md
├── product/
│ ├── design-system.md
│ ├── features/
│ └── user-guides/
└── operations/
├── deployment/
├── monitoring/
└── incident-response/
```
### Project-Specific Wiki Structure
```
~/CODEX/01-projects/work/[project]/
├── _index.md # Project MOC with wiki links
├── notes/
│ ├── requirements.md
│ ├── architecture-notes.md
│ └── implementation-notes.md
├── meetings/
│ └── project-sync-20260128.md
├── decisions/
│ └── tech-stack-decision.md # Also exported to wiki
└── wiki-exports/ # Project-specific wiki copies
├── api-spec.md # Copy from Outline
└── design-decisions.md # Copy from Outline
```
---
## Linking Strategies
### Outline Document Link (MCP URI)
```markdown
# Direct MCP Link (Best for Outline)
[OAuth2 Setup Guide](outline://document/abc123def456)
```
**Pros**:
- Direct integration with Outline MCP
- Always points to current version
- Can open in Outline web UI if MCP fails
**Cons**:
- Requires Outline MCP to be active
- Not clickable in external viewers
### Wiki-Link with Reference
```markdown
# Wiki-Link (Best for Obsidian)
📄 [[OAuth2 Setup Guide]]
```
**Frontmatter link**:
```yaml
---
title: "API Authentication Decision"
wiki_link: "[[OAuth2 Setup Guide]]"
wiki_doc_id: "abc123def456"
---
```
### External URL Link (Fallback)
```markdown
# URL Link (Fallback for offline/viewer access)
[OAuth2 Setup Guide](https://outline.example.com/doc/abc123)
```
**In frontmatter**:
```yaml
---
outline_url: "https://outline.example.com/doc/abc123"
---
```
### Combined Strategy (Recommended)
```markdown
---
title: "API Authentication Decision"
source: outline
document_id: "abc123def456"
wiki_link: "[[OAuth2 Setup Guide]]"
outline_url: "https://outline.example.com/doc/abc123"
tags: [work, decision, api]
---
## Decision
Use OAuth2 for all external APIs.
## References
### Primary Source
📄 [[OAuth2 Setup Guide]](outline://document/abc123)
### Related Documents
📄 [[Token Management Policy]](outline://document/def456)
📄 [[API Security Best Practices]](outline://document/ghi789)
### External Links
- [View in Outline Web UI](https://outline.example.com/doc/abc123)
```
---
## Index Management
### Main Wiki Index
```markdown
---
title: "Outline Wiki Index"
source: outline
last_sync: "2026-01-28T18:50:00Z"
total_docs: 45
total_collections: 6
tags: [work, wiki, outline]
---
# Outline Wiki Index
## Collections
### 📁 Engineering (15 docs)
**ID**: col_eng_123
**Description**: Technical documentation, architecture, APIs
**Subfolders**:
- [security](engineering/security/) (3 docs)
- [architecture](engineering/architecture/) (5 docs)
- [api-docs](engineering/api-docs/) (7 docs)
### 📁 Product (12 docs)
**ID**: col_prod_456
**Description**: Product specs, user guides, features
**Subfolders**:
- [design-system](product/design-system.md) (4 docs)
- [features](product/features/) (6 docs)
- [user-guides](product/user-guides/) (2 docs)
### 📁 Security (8 docs)
**ID**: col_sec_789
**Description**: Security policies, incident response, compliance
### 📁 Operations (10 docs)
**ID**: col_ops_012
**Description**: Deployment, monitoring, runbooks
## Recently Exported
| Date | Document | Collection | Tags |
|-------|-----------|------------|-------|
| 2026-01-28 | OAuth2 Setup Guide | Engineering/Security | api, oauth2 |
| 2026-01-27 | System Design | Engineering/Architecture | architecture |
| 2026-01-26 | Deployment Guide | Operations/Deployment | ops, devops |
## Document Types
- 📄 **Reference**: 30 docs
- 🎯 **Decision**: 8 docs
- 📋 **Process**: 5 docs
- 📘 **Guide**: 2 docs
## Search
- 🔍 [Search Outline for](outline://search/) live content
- 🔍 [Search exports](#exported-documents) in vault
---
## Exported Documents
### By Collection
#### Engineering
- [[OAuth2 Setup Guide]]
- [[Token Management Policy]]
- [[API Security Best Practices]]
- [[System Design]]
- [[Data Flow Architecture]]
#### Product
- [[Design System]]
- [[Component Library]]
- [[User Guide]]
#### Security
- [[Incident Response]]
- [[Security Policy]]
### By Tag
#api
- [[OAuth2 Setup Guide]]
- [[API Security Best Practices]]
#security
- [[API Security Best Practices]]
- [[Incident Response]]
#architecture
- [[System Design]]
- [[Data Flow Architecture]]
```
### Collection-Specific Indexes
Create `_index.md` in each collection folder:
```markdown
---
title: "Engineering Wiki"
collection: Engineering
collection_id: col_eng_123
source: outline
tags: [work, wiki, engineering]
---
# Engineering Wiki
## Overview
Technical documentation, architecture decisions, and API references.
## Structure
### Security (3 docs)
📄 [[API Authentication Decision]]
📄 [[Security Best Practices]]
📄 [[Incident Response]]
### Architecture (5 docs)
📄 [[System Design]]
📄 [[Data Flow]]
📄 [[Component Architecture]]
📄 [[Scalability Guide]]
📄 [[Performance Optimization]]
### API Docs (7 docs)
📄 [[OAuth2 Setup Guide]]
📄 [[Token Management]]
📄 [[API Reference]]
📄 [[Rate Limiting]]
📄 [[Error Handling]]
📄 [[Webhooks]]
📄 [[Testing Guide]]
## Quick Links
- 🔍 [Search Outline](outline://collection/col_eng_123)
- 📄 [Export Collection](outline://export/col_eng_123)
- 🌐 [Open in Web UI](https://outline.example.com/c/col_eng_123)
```
---
## Batch Operations
### Export Multiple Documents
```bash
# Pattern for batch export (manual script outline)
documents = [
{"id": "abc123", "path": "engineering/api/oauth2.md"},
{"id": "def456", "path": "engineering/api/token.md"},
{"id": "ghi789", "path": "engineering/security/best-practices.md"},
]
for doc in documents:
content = export_document(doc["id"])
write_file(f"wiki-mirror/{doc['path']}", content)
update_index(doc["id"], doc["path"])
```
### Update Index After Batch
```markdown
---
title: "Batch Export Report"
export_date: 2026-01-28
documents_exported: 45
collections_exported: 6
---
## Export Summary
- Exported 45 documents from 6 collections
- Total size: 2.3 MB
- Processing time: 3.2 minutes
## Collections Updated
- ✅ Engineering: 15 docs
- ✅ Product: 12 docs
- ✅ Security: 8 docs
- ✅ Operations: 10 docs
## Next Steps
- [ ] Verify all exports in Obsidian
- [ ] Test wiki links
- [ ] Update wiki index
```
---
## Naming Conventions
### File Naming
**Rules**:
1. Lowercase only
2. Replace spaces with hyphens
3. Remove special characters
4. Keep meaningful names
5. Avoid dates in names (use frontmatter instead)
**Examples**:
```
OAuth2 Setup Guide → oauth2-setup-guide.md
API Security Best Practices → api-security-best-practices.md
System Design (2026) → system-design.md (use frontmatter for version)
```
### Folder Naming
**Rules**:
1. Use collection names from Outline
2. Preserve hierarchy (subcollections as subfolders)
3. Consistent with project structure
**Examples**:
```
Engineering/Security → engineering/security/
Engineering/API Docs → engineering/api-docs/
Product/Features → product/features/
```
---
## Version Control for Exports
### Git Tracking
```
~/CODEX/03-resources/work/wiki-mirror/
├── .git/ # Git repo for exports
├── _wiki-index.md
└── engineering/
└── ...
```
**Benefits**:
- Track changes to exported docs
- Diff between export versions
- Revert to previous exports
- Track when docs were last synced
### Sync Workflow
```bash
# Before export
cd ~/CODEX/03-resources/work/wiki-mirror/
git pull
git add .
git commit -m "Pre-export checkpoint"
git push
# After export
git add .
git commit -m "Exported 45 docs from Outline (2026-01-28)"
git push
```
---
## Troubleshooting
### Duplicate Exports
**Problem**: Same document exported multiple times
**Solution**:
1. Check for existing file before export
2. Add timestamp to duplicates: `doc-name.20260128.md`
3. Or ask user: "Overwrite or create new version?"
### Broken Links After Export
**Problem**: Wiki links don't work in Obsidian
**Solution**:
1. Verify document IDs in frontmatter
2. Check file paths match index
3. Use wiki-links for same-vault docs
4. Use MCP URIs for Outline docs
### Large Exports Timeout
**Problem**: Exporting entire collection fails (too large)
**Solution**:
1. Export in batches (e.g., 20 docs at a time)
2. Use `export_collection` instead of individual docs
3. Implement progress tracking
4. Retry failed documents
---
## Best Practices Summary
1. **Always Include Frontmatter**: Document metadata is crucial
2. **Maintain Hierarchy**: Preserve collection structure
3. **Update Index**: Keep wiki index current
4. **Use Multiple Link Types**: MCP URI + wiki-link + URL
5. **Tag Exports**: Make exported docs discoverable
6. **Track Changes**: Use Git for version control
7. **Regular Exports**: Don't wait for job transition
8. **Verify Links**: Test after every export batch
9. **Organize by Type**: Reference, Decision, Process folders
10. **Document Exports**: Keep export log for reference

View File

@@ -0,0 +1,410 @@
# Outline Workflows
This reference provides detailed examples and patterns for Outline wiki integration with Obsidian.
## Table of Contents
1. [Export Decision to Wiki](#export-decision-to-wiki)
2. [Project Documentation Sync](#project-documentation-sync)
3. [Knowledge Discovery](#knowledge-discovery)
4. [Batch Export](#batch-export)
5. [Wiki Migration](#wiki-migration)
---
## Export Decision to Wiki
### Scenario
After a meeting, you made an important decision about API authentication. You want to preserve it in the company wiki.
### Workflow
```
User: "Export decision: Use OAuth2 for all external APIs"
Outline skill:
1. Create document:
- Title: "API Authentication Decision"
- Collection: Engineering/Security
- Content:
---
title: "API Authentication Decision"
date: 2026-01-28
decision_made_by: "[Team Name]"
tags: [decision, api, security]
---
# Decision
Use OAuth2 for all external API integrations.
# Reasoning
- OAuth2 provides better security (no shared secrets)
- Token rotation reduces risk exposure
- Industry standard for API auth
- Existing libraries available
# Implementation
- Use RFC 6749 OAuth2 framework
- Implement refresh token flow
- Set 30-day token expiry
- Document API endpoints in collection
# Alternatives Considered
- API Keys: Rejected (security risk)
- JWT: Rejected (overkill for external APIs)
- Custom Auth: Rejected (maintenance burden)
# Related Documents
- [[OAuth2 Setup Guide]]
- [[Token Management Policy]]
- [[API Security Best Practices]]
2. Confirm: "Created API Authentication Decision in Engineering/Security"
3. Offer: "Link to project?"
```
### Obsidian Integration
After creating in Outline, create cross-reference in Obsidian:
```markdown
~/CODEX/01-projects/work/[project]/decisions/api-auth-decision.md
---
title: "API Authentication Decision"
date: 2026-01-28
source: outline
outline_doc_id: [ID]
tags: [work, decision, api]
---
## Decision
Use OAuth2 for all external API integrations.
## Outline Link
📄 [API Authentication Decision](outline://document/abc123)
## Context
- Made during API integration project
- Discussed in [Security Review Meeting]
- Approved by: [Stakeholder names]
## Project Notes
- Update authentication service by Q2
- Train team on OAuth2 flow
```
---
## Project Documentation Sync
### Scenario
You're starting a new project. You want to link project docs with the wiki for context.
### Workflow
```
User: "Start project: Customer Portal Redesign"
outline skill:
1. Search for related docs:
- "Search Outline for Customer Portal"
- "Search Outline for UI/UX guidelines"
- "Search Outline for architecture decisions"
2. Present findings:
📄 Customer Portal Architecture (Engineering)
📄 UI Design System (Product/Design)
📄 Accessibility Guidelines (Engineering/Docs)
3. Create project folder in Obsidian with wiki links
```
### Project MOC with Wiki Links
```markdown
~/CODEX/01-projects/work/customer-portal-redesign/_index.md
---
title: "Customer Portal Redesign"
status: active
deadline: 2026-06-30
priority: high
tags: [work, project]
---
## Overview
Redesign of customer portal with improved UX, performance, and accessibility.
## Wiki Resources
### Architecture
📄 [[Customer Portal Architecture]](outline://document/abc123)
- Backend architecture decisions
- Database schema
- API endpoints
### Design System
📄 [[UI Design System]](outline://document/def456)
- Component library
- Color palette
- Typography
### Guidelines
📄 [[Accessibility Guidelines]](outline://document/ghi789)
- WCAG 2.1 AA compliance
- Testing checklist
- Common patterns
## Notes
<!-- Your project notes here -->
## Tasks
<!-- Tasks linked from Basecamp -->
```
---
## Knowledge Discovery
### Scenario
You need to implement a feature but don't remember the authentication pattern used in the codebase.
### Workflow
```
User: "Ask Outline: How do we handle API authentication?"
outline skill:
1. ask_ai_about_documents(
question: "How do we handle API authentication?"
collection_id: "engineering"
)
2. Present AI answer with sources:
🤖 **Answer**:
Based on 12 documents, here's the authentication pattern:
**Standard Pattern**:
- OAuth2 with refresh tokens
- 30-day token expiry
- Automatic refresh before expiry
**Implementation**:
1. Use `/auth/oauth2/token` endpoint
2. Store refresh token securely
3. Implement token rotation
4. Handle 401 Unauthorized with retry
**Exceptions**:
- Internal services use API keys (documented separately)
- Admin portals use session-based auth
**Key Sources**:
1. [[OAuth2 Setup Guide]](outline://document/abc123)
2. [[Token Management Policy]](outline://document/def456)
3. [[API Security Best Practices]](outline://document/ghi789)
3. Offer:
- "Read OAuth2 Setup Guide?"
- "Export to current project?"
```
---
## Batch Export
### Scenario
You're preparing for a job transition or need offline access to critical documentation.
### Workflow
```
User: "Export all Engineering docs to Obsidian"
outline skill:
1. export_collection(collection_id: "engineering_id")
2. Create Obsidian structure:
~/CODEX/03-resources/work/wiki-mirror/engineering/
├── api-docs/
│ ├── oauth2-setup-guide.md
│ ├── token-management.md
│ └── api-security.md
├── architecture/
│ ├── system-design.md
│ └── data-flow.md
└── decisions/
├── auth-decision.md
└── database-choice.md
3. Update wiki index:
Update ~/CODEX/03-resources/work/wiki-mirror/_wiki-index.md
with new export metadata
4. Confirm: "Exported 15 Engineering docs to wiki-mirror/engineering/"
```
---
## Wiki Migration
### Scenario
You're switching from a different wiki system to Outline and want to migrate content.
### Workflow (No n8n - Manual Process)
```
Step 1: Export from Old Wiki
- Export all pages as Markdown
- Preserve structure/folders
- Keep metadata (created dates, authors)
Step 2: Batch Import to Outline
outline skill:
1. batch_create_documents(documents):
[
{
"title": "API Documentation",
"collection_id": "engineering_id",
"text": "# API Documentation\n\n...",
"publish": true
},
{
"title": "System Design",
"collection_id": "engineering_id",
"text": "# System Design\n\n...",
"publish": true
}
]
2. Confirm: "Imported 50 documents to Outline"
Step 3: Verify Migration
- Check Outline web UI
- Verify document counts
- Test search functionality
- Fix any formatting issues
Step 4: Archive Old Wiki
- Mark old wiki as read-only
- Add deprecation notice
- Link to new Outline location
```
---
## Cross-Tool Patterns
### Outline ↔ Obsidian
| When | Action | Location |
|------|---------|----------|
| Important decision | Create in Outline + link in Obsidian | Outline: Primary, Obsidian: Reference |
| Project docs | Link wiki docs from project MOC | Obsidian: Primary, Outline: Source |
| Meeting outcome | Export key decisions to Outline | Outline: Persistent, Obsidian: Session context |
| Research | Export findings to Outline | Outline: Knowledge base, Obsidian: Working notes |
### Search Workflow
1. **First**: Search Obsidian vault (personal knowledge)
2. **Then**: Search Outline wiki (team knowledge)
3. **Finally**: Search both with context
```
User: "Find info about OAuth2"
Obsidian search:
- Check ~/CODEX/03-resources/work/wiki-mirror/
- Check project notes
- Return local copies
Outline search:
- search_documents("OAuth2")
- Return live wiki content
- Export if needed for offline access
```
---
## Advanced Workflows
### Decision Audit
Periodically review all decisions to check:
- Relevance (still applicable?)
- Implementation status (actually done?)
- Outdated decisions (need update?)
```bash
# List all decision docs
search_documents("decision")
# For each:
read_document(document_id)
# Check frontmatter:
# - implemented: true/false
# - reviewed_at: date
# - status: active/archived
```
### Knowledge Gap Analysis
Identify missing documentation:
1. List all project areas
2. Search Outline for each area
3. Identify gaps:
- "No results found for X"
- "Documentation is outdated"
- "Information is scattered"
Create follow-up tasks:
```markdown
## Documentation Tasks
- [ ] Write API rate limiting guide (missing)
- [ ] Update OAuth2 examples (outdated)
- [ ] Create testing best practices (scattered)
```
---
## Troubleshooting
### Export Failed
**Problem**: Document exported to wrong location or failed to export
**Solution**:
1. Verify collection hierarchy
2. Check Obsidian vault path
3. Ensure directory exists: `mkdir -p 03-resources/work/wiki-mirror/[collection]/`
4. Check file permissions
### Search No Results
**Problem**: search_documents returns empty results
**Solution**:
1. Try broader query (fewer keywords)
2. Remove collection_id to search everywhere
3. Check if document exists in Outline web UI
4. Use ask_ai_about_documents for semantic search
### Wiki Link Broken
**Problem**: `(outline://document/abc123)` link doesn't work
**Solution**:
1. Verify document_id is correct
2. Check Outline MCP is running
3. Test with `read_document(document_id)`
4. Fallback: Use Outline web UI URL
---
## Best Practices Summary
1. **Export Early, Export Often**: Don't wait until job transition
2. **Link Immediately**: Create Obsidian links when exporting
3. **Index Everything**: Maintain wiki index for easy navigation
4. **AI as Helper**: Use `ask_ai_about_documents` but verify sources
5. **Preserve Hierarchy**: Maintain collection structure in exports
6. **Tag Generously**: Add tags for discoverability
7. **Cross-Reference**: Link related documents in Outline
8. **Decisions Matter**: Export all decisions, not just docs
---
## Automation (Future n8n Workflows)
These will be implemented later with n8n automation:
1. **Daily Wiki Sync**: Export updated Outline docs each night
2. **Decision Auto-Export**: Hook meeting-notes → Outline create
3. **Search Integration**: Combine Obsidian + Outline search
4. **Backup Workflow**: Weekly export_all_collections