An open API service indexing awesome lists of open source software.

https://github.com/yungweng/github-things-sync

Sync GitHub PRs and Issues to Things 3 on macOS β€” automatic task creation and completion tracking
https://github.com/yungweng/github-things-sync

automation cli developer-tools github macos nodejs productivity task-management things3 typescript

Last synced: 6 months ago
JSON representation

Sync GitHub PRs and Issues to Things 3 on macOS β€” automatic task creation and completion tracking

Awesome Lists containing this project

README

          

# github-things-sync


npm version
downloads
license
node version

**Automatically sync your GitHub PRs and Issues to Things 3 on macOS.**

Stop manually creating todos for your GitHub work. github-things-sync watches your assigned issues, PR reviews, and created itemsβ€”automatically creating and completing tasks in Things 3.


Demo

## Quick Start

```bash
npm install -g github-things-sync
github-things-sync init
```

*Follow the prompts, then:*

```bash
github-things-sync start
```

## Features

- πŸ”„ **Auto-sync** β€” PRs and issues appear in Things automatically
- βœ… **Completion tracking** β€” Close an issue, task completes in Things
- πŸ“‹ **Smart filtering** β€” Choose what to sync (reviews, created, assigned)
- 🎯 **Repository scope** β€” Select specific repos or orgs to sync
- πŸš€ **Background daemon** β€” Runs silently, syncs every 5 minutes
- 🍎 **macOS native** β€” Uses LaunchAgent for autostart

## What Gets Synced

| GitHub | β†’ | Things |
|--------|---|--------|
| PR review requested | β†’ | Todo in "GitHub" project |
| Issue assigned to you | β†’ | Todo with issue link |
| PR you created | β†’ | Todo with PR link |
| Issue you created | β†’ | Todo with issue link |
| Closed/merged item | β†’ | Task marked complete |

## Prerequisites

- macOS (Things 3 is macOS/iOS only)
- [Things 3](https://culturedcode.com/things/) installed
- Node.js 20+
- [GitHub Personal Access Token](https://github.com/settings/tokens) (classic, `repo` scope)

## Installation

### Via npm (recommended)

```bash
npm install -g github-things-sync
github-things-sync init
```

### Via npx (no install)

```bash
npx github-things-sync init
```

Manual installation from source

```bash
git clone https://github.com/yungweng/github-things-sync.git
cd github-things-sync
pnpm install && pnpm build
pnpm link --global
```

## Commands

| Command | Description |
|---------|-------------|
| `init` | Interactive setup wizard |
| `start` | Start background sync daemon |
| `stop` | Stop the daemon |
| `status` | Show daemon status and task mappings |
| `sync` | Run a single sync (no daemon) |
| `config` | View or update settings |
| `config --verify` | Verify your tokens work |

## How It Works

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” Poll β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” AppleScript β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ GitHub β”‚ ◄──────────── β”‚ Daemon β”‚ ─────────────────► β”‚ Things 3 β”‚
β”‚ API β”‚ β”‚ (background) β”‚ URL Scheme β”‚ App β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β–Ό
~/.github-things-sync/
β”œβ”€β”€ config.json
β”œβ”€β”€ state.json
└── daemon.log
```

The daemon polls GitHub every 5 minutes (configurable) for:
- PRs where you're requested as reviewer
- PRs you created
- Issues assigned to you
- Issues you created

When items are found, it creates tasks in Things 3 via AppleScript. When items close/merge on GitHub, the corresponding tasks are completed via URL Scheme.

## Configuration

After running `init`, your config is stored at `~/.github-things-sync/config.json`.

Update settings with:

```bash
github-things-sync config --interval=600 # Poll every 10 minutes
github-things-sync config --project="Work" # Use different Things project
github-things-sync config --sync-types=pr-reviews,issues-assigned
github-things-sync config --repos=prompt # Select specific repos to sync
github-things-sync config --repos=all # Reset to sync all repos
```

## Development

```bash
git clone https://github.com/yungweng/github-things-sync.git
cd github-things-sync
pnpm install
pnpm dev sync -v # Run sync in dev mode
```

## Contributing

Found a bug or have a feature request? [Open an issue](https://github.com/yungweng/github-things-sync/issues).

Pull requests are welcome!

## License

MIT Β© [yungweng](https://github.com/yungweng)