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:
@@ -1,6 +1,11 @@
|
|||||||
{"id":"AGENTS-1jw","title":"Athena prompt: Convert to numbered responsibility format","description":"Athena prompt uses bullet points under 'Core Capabilities' section instead of numbered lists. Per agent-development skill best practices, responsibilities should be numbered (1, 2, 3) for clarity. Update prompts/athena.txt to use numbered format.","status":"closed","priority":2,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:16.133701271+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:32:26.165270695+01:00","closed_at":"2026-01-26T19:32:26.165270695+01:00","close_reason":"Converted responsibility subsections from ### numbered headers to numbered list format (1., 2., 3., 4.) with bold titles"}
|
{"id":"AGENTS-1jw","title":"Athena prompt: Convert to numbered responsibility format","description":"Athena prompt uses bullet points under 'Core Capabilities' section instead of numbered lists. Per agent-development skill best practices, responsibilities should be numbered (1, 2, 3) for clarity. Update prompts/athena.txt to use numbered format.","status":"closed","priority":2,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:16.133701271+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:32:26.165270695+01:00","closed_at":"2026-01-26T19:32:26.165270695+01:00","close_reason":"Converted responsibility subsections from ### numbered headers to numbered list format (1., 2., 3., 4.) with bold titles"}
|
||||||
{"id":"AGENTS-7gt","title":"Athena prompt: Rename Core Capabilities to exact header","description":"Athena prompt uses 'Core Capabilities' section header instead of 'Your Core Responsibilities:'. Per agent-development skill guidelines, the exact header 'Your Core Responsibilities:' should be used for consistency. Update prompts/athena.txt to use the exact recommended header.","status":"closed","priority":1,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:07.223102836+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:31:19.080626796+01:00","closed_at":"2026-01-26T19:31:19.080626796+01:00","close_reason":"Renamed 'Core Capabilities' section header to exact 'Your Core Responsibilities:' in prompts/athena.txt"}
|
{"id":"AGENTS-7gt","title":"Athena prompt: Rename Core Capabilities to exact header","description":"Athena prompt uses 'Core Capabilities' section header instead of 'Your Core Responsibilities:'. Per agent-development skill guidelines, the exact header 'Your Core Responsibilities:' should be used for consistency. Update prompts/athena.txt to use the exact recommended header.","status":"closed","priority":1,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:07.223102836+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:31:19.080626796+01:00","closed_at":"2026-01-26T19:31:19.080626796+01:00","close_reason":"Renamed 'Core Capabilities' section header to exact 'Your Core Responsibilities:' in prompts/athena.txt"}
|
||||||
|
{"id":"AGENTS-8ie","title":"Set up PARA work structure with 10 Basecamp projects","status":"open","priority":0,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-28T18:47:56.048622809+01:00","created_by":"m3tm3re","updated_at":"2026-01-28T18:47:56.048622809+01:00"}
|
||||||
|
{"id":"AGENTS-9cs","title":"Configure basecamp skill with real projects","status":"open","priority":0,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-28T18:47:56.04844425+01:00","created_by":"m3tm3re","updated_at":"2026-01-28T18:47:56.04844425+01:00"}
|
||||||
|
{"id":"AGENTS-der","title":"Create Outline skill for MCP integration","status":"open","priority":2,"issue_type":"feature","owner":"p@m3ta.dev","created_at":"2026-01-28T18:47:56.042886345+01:00","created_by":"m3tm3re","updated_at":"2026-01-28T18:47:56.042886345+01:00"}
|
||||||
|
{"id":"AGENTS-fac","title":"Design Teams transcript processing workflow (manual)","status":"open","priority":2,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-28T18:47:56.052076817+01:00","created_by":"m3tm3re","updated_at":"2026-01-28T18:47:56.052076817+01:00"}
|
||||||
{"id":"AGENTS-in5","title":"Athena prompt: Standardize section headers","description":"Athena prompt uses 'Ethical Guidelines' and 'Methodological Rigor' headers instead of standard 'Quality Standards' and 'Edge Cases' headers. While semantically equivalent, skill recommends exact headers for consistency. Consider renaming in prompts/athena.txt.","status":"closed","priority":2,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:21.720932741+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:33:15.959382333+01:00","closed_at":"2026-01-26T19:33:15.959382333+01:00","close_reason":"Renamed '## Ethical Guidelines' to '## Quality Standards' for consistency with agent-development skill guidelines"}
|
{"id":"AGENTS-in5","title":"Athena prompt: Standardize section headers","description":"Athena prompt uses 'Ethical Guidelines' and 'Methodological Rigor' headers instead of standard 'Quality Standards' and 'Edge Cases' headers. While semantically equivalent, skill recommends exact headers for consistency. Consider renaming in prompts/athena.txt.","status":"closed","priority":2,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:21.720932741+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:33:15.959382333+01:00","closed_at":"2026-01-26T19:33:15.959382333+01:00","close_reason":"Renamed '## Ethical Guidelines' to '## Quality Standards' for consistency with agent-development skill guidelines"}
|
||||||
{"id":"AGENTS-lyd","title":"Athena agent: Add explicit mode field","description":"Athena agent is missing the explicit 'mode': 'subagent' field. Per agent-development skill guidelines, all agents should explicitly declare mode for clarity. Current config relies on default which makes intent unclear.","status":"closed","priority":0,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:31:46.255196119+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:30:46.191545632+01:00","closed_at":"2026-01-26T19:30:46.191545632+01:00","close_reason":"Added explicit 'mode': 'subagent' field to athena agent in agent/agents.json"}
|
{"id":"AGENTS-lyd","title":"Athena agent: Add explicit mode field","description":"Athena agent is missing the explicit 'mode': 'subagent' field. Per agent-development skill guidelines, all agents should explicitly declare mode for clarity. Current config relies on default which makes intent unclear.","status":"closed","priority":0,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:31:46.255196119+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:30:46.191545632+01:00","closed_at":"2026-01-26T19:30:46.191545632+01:00","close_reason":"Added explicit 'mode': 'subagent' field to athena agent in agent/agents.json"}
|
||||||
{"id":"AGENTS-mfw","title":"Athena agent: Add temperature setting","description":"Athena agent lacks explicit temperature configuration. Per agent-development skill, research/analysis agents should use temperature 0.0-0.2 for focused, deterministic, consistent results. Add 'temperature': 0.1 to agent config in agents.json.","status":"closed","priority":1,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:31:55.726506579+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:31:06.905697638+01:00","closed_at":"2026-01-26T19:31:06.905697638+01:00","close_reason":"Added 'temperature': 0.1 to athena agent in agent/agents.json for focused, deterministic results"}
|
{"id":"AGENTS-mfw","title":"Athena agent: Add temperature setting","description":"Athena agent lacks explicit temperature configuration. Per agent-development skill, research/analysis agents should use temperature 0.0-0.2 for focused, deterministic, consistent results. Add 'temperature': 0.1 to agent config in agents.json.","status":"closed","priority":1,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:31:55.726506579+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:31:06.905697638+01:00","closed_at":"2026-01-26T19:31:06.905697638+01:00","close_reason":"Added 'temperature': 0.1 to athena agent in agent/agents.json for focused, deterministic results"}
|
||||||
|
{"id":"AGENTS-mvv","title":"Enhance daily routines with work context","status":"open","priority":1,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-28T18:47:56.066628593+01:00","created_by":"m3tm3re","updated_at":"2026-01-28T18:47:56.066628593+01:00"}
|
||||||
{"id":"AGENTS-o45","title":"Agent development: Document validation script availability","description":"The agent-development skill references scripts/validate-agent.sh but this script doesn't exist in the repository. Consider either: (1) creating the validation script, or (2) removing the reference and only documenting the python3 alternative.","status":"closed","priority":2,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:27.325525742+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:34:17.846875543+01:00","closed_at":"2026-01-26T19:34:17.846875543+01:00","close_reason":"Removed references to non-existent scripts/validate-agent.sh and documented python3 validation as the primary method"}
|
{"id":"AGENTS-o45","title":"Agent development: Document validation script availability","description":"The agent-development skill references scripts/validate-agent.sh but this script doesn't exist in the repository. Consider either: (1) creating the validation script, or (2) removing the reference and only documenting the python3 alternative.","status":"closed","priority":2,"issue_type":"task","owner":"p@m3ta.dev","created_at":"2026-01-24T19:32:27.325525742+01:00","created_by":"m3tm3re","updated_at":"2026-01-26T19:34:17.846875543+01:00","closed_at":"2026-01-26T19:34:17.846875543+01:00","close_reason":"Removed references to non-existent scripts/validate-agent.sh and documented python3 validation as the primary method"}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-capture
|
name: chiron-capture
|
||||||
description: "Quick capture to inbox - minimal friction capture for tasks, notes, meetings, learnings"
|
description: "Quick capture to inbox - minimal friction capture for tasks, notes, meetings, learnings"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-end
|
name: chiron-end
|
||||||
description: "Evening reflection ritual - review the day, capture wins/learnings, plan tomorrow"
|
description: "Evening reflection ritual - review the day, capture wins/learnings, plan tomorrow"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-learn
|
name: chiron-learn
|
||||||
description: "Capture learning - record insights, discoveries, and knowledge"
|
description: "Capture learning - record insights, discoveries, and knowledge"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-meeting
|
name: chiron-meeting
|
||||||
description: "Meeting notes - structured capture of meetings with action items"
|
description: "Meeting notes - structured capture of meetings with action items"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-project
|
name: chiron-project
|
||||||
description: "Create new project - initialize project structure using PARA methodology"
|
description: "Create new project - initialize project structure using PARA methodology"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-review
|
name: chiron-review
|
||||||
description: "Comprehensive weekly review - metrics, project status, inbox processing, next week planning"
|
description: "Comprehensive weekly review - metrics, project status, inbox processing, next week planning"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-search
|
name: chiron-search
|
||||||
description: "Search knowledge base - find notes, tasks, or information in ~/CODEX vault"
|
description: "Search knowledge base - find notes, tasks, or information in ~/CODEX vault"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-start
|
name: chiron-start
|
||||||
description: "Morning planning ritual - set focus for the day and prioritize work"
|
description: "Morning planning ritual - set focus for the day and prioritize work"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
name: /chiron-task
|
name: chiron-task
|
||||||
description: "Add task with smart defaults - create task with proper formatting and placement"
|
description: "Add task with smart defaults - create task with proper formatting and placement"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
- **Work projects only**: This skill is for professional/team projects
|
||||||
- **Pagination handled**: MCP server handles pagination transparently
|
- **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
|
## Integration with Other Skills
|
||||||
|
|
||||||
| From Skill | To Basecamp |
|
| 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 |
|
| brainstorming | Save decision → reference in project docs |
|
||||||
| plan-writing | todo-structure.md → Basecamp todos or cards |
|
| plan-writing | todo-structure.md → Basecamp todos or cards |
|
||||||
| task-management | Obsidian tasks ↔ Basecamp todos (manual reference) |
|
| 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
|
## 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
|
- `task-management` - Extract/update tasks
|
||||||
- `chiron-core` - PARA guidance, prioritization, reflection questions
|
- `chiron-core` - PARA guidance, prioritization, reflection questions
|
||||||
- `calendar-scheduling` - Calendar integration
|
- `calendar-scheduling` - Calendar integration
|
||||||
|
- `basecamp` - Fetch work todos, check project status
|
||||||
|
- `outline` - Search wiki for work context
|
||||||
|
|
||||||
**Delegation rules:**
|
**Delegation rules:**
|
||||||
- User wants to understand PARA → `chiron-core`
|
- User wants to understand PARA → `chiron-core`
|
||||||
- User asks about tasks → `task-management`
|
- User asks about tasks → `task-management`
|
||||||
- User needs file operations → `obsidian-management`
|
- User needs file operations → `obsidian-management`
|
||||||
- User needs calendar → `calendar-scheduling`
|
- 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
|
## 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