Back to skills
extension
Category: Development & EngineeringNo API key required

bujo-sync

Bidirectional task sync between Bullet Journal and project tools (ClickUp, Linear). Use when user says sync tasks, bujo sync, pull from clickup, pull from linear, push tasks. Not for daily logs or reviews (use bujo).

personAuthor: jakexiaohubgithub

ABOUTME: Bidirectional sync between BuJo daily notes and ClickUp (Wishew) + Linear (HikmaAI)

ABOUTME: Pulls assigned/blocking tasks, pushes completions/cancellations, respects sync markers

BuJo Sync

Sync state: Journal/.bujo-sync-state.json MCP config: .mcp.json (vault root) Daily note sync zones: HTML comment markers per project

MCP Servers

| Project | Tool | MCP Server | |---------|------|------------| | Wishew | ClickUp | clickup (via .mcp.json) | | HikmaAI | Linear | linear (via .mcp.json) |

Sync Markers

Daily notes contain sync zones delimited by HTML comments:

### Wishew (ClickUp)
<!-- bujo-sync:clickup:start -->
- [ ] Task name [CU-abc123]
- [ ] **BLOCKS** @persona: Blocking task [CU-def456]
<!-- bujo-sync:clickup:end -->

### HikmaAI (Linear)
<!-- bujo-sync:linear:start -->
- [ ] Issue title [LIN-xyz789]
<!-- bujo-sync:linear:end -->

CRITICAL: Only modify content BETWEEN the start/end markers. Never touch anything outside.

Pull Flow (bujo sync pull or bujo sync)

1. Fetch tasks from sources

ClickUp (Wishew): Search for tasks where assignee = Max OR I am a blocker, status != closed/done.

Linear (HikmaAI): Search for issues where assignee = Max OR blocking/blocked by me, state != done/cancelled.

2. Diff against sync state

Read Journal/.bujo-sync-state.json to determine:

  • New tasks: not in sync state, add to daily note
  • Changed tasks: status changed upstream, update in daily note
  • Completed upstream: mark [x] in daily note if still open

3. Inject into daily note

Format rules:

  • Task ID in square brackets at end: [CU-xxx] or [LIN-xxx]
  • Blocking tasks prefixed with **BLOCKS** @persona:
  • Preserve any manual annotations Max added after the task line

4. Update sync state

Write updated state to Journal/.bujo-sync-state.json.

Push Flow

Scan today's daily note. [x] = complete, [-] = cancelled, new task in sync zone = create upstream. Update source systems via MCP, then update sync state.

For detailed push flow, sync state JSON format, conflict resolution, and error handling, see references/sync-details.md.

Commands Summary

| Command | Action | |---------|--------| | bujo sync | Pull from all sources, update daily note | | bujo sync pull | Same as bujo sync | | bujo sync push | Push BuJo changes to source systems | | bujo sync full | Pull then push (full bidirectional sync) |