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:
@@ -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
|
||||
|
||||
|
||||
393
skills/chiron-core/references/work-para-structure.md
Normal file
393
skills/chiron-core/references/work-para-structure.md
Normal 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
|
||||
@@ -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
|
||||
|
||||
|
||||
558
skills/meeting-notes/references/teams-transcript-workflow.md
Normal file
558
skills/meeting-notes/references/teams-transcript-workflow.md
Normal 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) |
|
||||
@@ -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
484
skills/outline/SKILL.md
Normal 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
|
||||
524
skills/outline/references/export-patterns.md
Normal file
524
skills/outline/references/export-patterns.md
Normal 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
|
||||
410
skills/outline/references/outline-workflows.md
Normal file
410
skills/outline/references/outline-workflows.md
Normal 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
|
||||
Reference in New Issue
Block a user