/things-setup
Connect Things 3 (macOS only) so Dex reads and updates your Things tasks. Use when the user says 'I use Things', 'sync my Things inbox', or pastes a `things://` link. Not for Todoist (`todoist-setup`) or Trello (`trello-setup`).
$ npx -y skills add davekilleen/Dex --skill things-setup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/things-setup
Context preview
The summary Claude sees to decide when to auto-load this skill.
Connect Things 3 (macOS only) so Dex reads and updates your Things tasks. Use when the user says 'I use Things', 'sync my Things inbox', or pastes a `things://` link. Not for Todoist (`todoist-setup`) or Trello (`trello-setup`).
SKILL.md
things-setup.SKILL.mdname: things-setup
description: "Connect Things 3 (macOS only) so Dex reads and updates your Things tasks. Use when the user says 'I use Things', 'sync my Things inbox', or pastes a `things://` link. Not for Todoist (`todoist-setup`) or Trello (`trello-setup`)."
manifest:
id: things
auth: none
category: task_access
platform: macos
mcp_server: things3-mcp
Things 3 Setup
Connect Things 3 so Dex can work with your Things tasks whenever you ask. No account needed. Everything stays on your Mac. Works offline.
**What this enables (on request):** Once connected, say "sync with Things" — Dex pushes new tasks to the right Things Area (mapped from your pillars), marks completions via AppleScript, and pulls tasks you completed or added to Things Inbox. Everything stays local — no network calls, no accounts. Sync runs on demand when you ask.
What This Enables
Once connected, you can ask Dex to:
- **See your Things lists:** "What's in my Things Today list?" — including alongside your daily plan
- **Create there instead:** "Put that in Things, not Dex" in any conversation
- **Complete from chat:** "Mark the deck task done in Things"
- **Cross-check:** "Anything in Things that isn't tracked in Dex?"
Privacy
- Everything is local. Things 3 uses AppleScript — no cloud API, no tokens, no accounts
- Dex reads and writes Things only when you ask. Nothing leaves your machine
- No credentials to store. No tokens to expire. No OAuth flows
- Works completely offline
When to Run
- User types `/things-setup`
- User asks about connecting Things 3
- User wants Dex working with a Mac-native task app
- During `/integrate-mcp` if Things is mentioned
- During onboarding if user mentions Things 3
---
Setup Flow
Step 1: Platform Check
Things 3 is macOS only. Verify:
1. Check if running on macOS (`process.platform === 'darwin'` or `uname` check) 2. **If not macOS:**
Things 3 is a macOS-only app. It won't work on this platform.
For a cross-platform task app connection, consider:
- /todoist-setup (works everywhere)
- /trello-setup (web-based)
Stop here.
Step 2: Check if Already Connected
1. Read `System/integrations/config.yaml` 2. If `things.enabled: true`, skip to **Step 7** (Reconfigure) 3. If not configured, continue
Step 3: Check if Things 3 is Installed
Run a quick AppleScript test:
osascript -e 'tell application "System Events" to (name of processes) contains "Things3"'
Or check if the app exists:
ls /Applications/Things3.app 2>/dev/null || ls "$HOME/Applications/Things3.app" 2>/dev/null
**If Things 3 is not found:**
I can't find Things 3 on your Mac.
Things 3 is available from the Mac App Store:
https://apps.apple.com/app/things-3/id904280696
Once installed, run /things-setup again.
Stop here.
**If found:**
Things 3 detected. This is the simplest integration to set up — no accounts or API keys needed.
Everything stays on your Mac and works offline. Ready?
Wait for confirmation.
Step 4: Add the things3-mcp Server
Check the user's MCP configuration. If `things3-mcp` is not listed:
1. Explain:
I need to add the Things 3 connector to your Dex configuration.
This uses a lightweight AppleScript bridge — no accounts, no API keys.
It talks directly to Things 3 on your Mac.
2. Add to the user's `.mcp.json`:
{
"things3-mcp": {
"command": "npx",
"args": ["-y", "things3-mcp"],
"env": {}
}
}3. Tell the user the MCP server needs to restart for changes to take effect.
Step 5: Test the Connection
Run a quick test to verify AppleScript access:
1. List Things Areas:
osascript -e 'tell application "Things3" to get name of areas'
2. List Things Projects:
osascript -e 'tell application "Things3" to get name of projects'
**If macOS prompts for AppleScript permission:**
macOS is asking for permission to control Things 3. Click "OK" to allow.
This is a one-time prompt. Things 3 uses AppleScript for local communication —
no network access is involved.
**Show results:**
Connection test passed.
Your Things 3 setup:
- Areas: [list of areas]
- Projects: [list of projects]
If the test fails, jump to Troubleshooting.
Step 6: Configure Mapping
First, read `System/pillars.yaml` and extract the user's pillar `id` and `name` fields. If pillars are empty/not yet configured, prompt the user to run `/quarter-plan` first.
Map Dex pillars to Things Areas:
Now let's map your Dex pillars to Things Areas.
Your Dex pillars (from System/pillars.yaml):
[list each pillar name, numbered]
Your Things Areas:
[list from Step 5]
I'll suggest a mapping — adjust if needed:
| Dex Pillar | Things Area |
|------------|-------------|
| [pillar 1 name] | [best match or "[pillar 1 name]"] |
| [pillar 2 name] | [best match or "[pillar 2 name]"] |
...
Does this mapping look right? I can create any missing Areas in Things.
If areas don't exist, offer to create them (run once per missing pillar):
osascript -e 'tell application "Things3" to make new area with properties {name:"[pillar name]"}'Step 7: Save Configuration
Write to `System/integrations/config.yaml` — update the things section. Build `area_mapping` dynamically from the user's pillars: use each pillar's `id` as the key and the confirmed Things Area name as the value (used when the user asks Dex to file something in Things under the right Area).
things:
enabled: true
configured_at: YYYY-MM-DD
mcp_server: things3-mcp
auth_type: none
area_mapping:
[pillar_id]: [Things Area name] # one entry per pillarIf the file already exists, only update the `things:` section. Preserve other integration configs.
Step 8: Capability Cascade
Now that Things is connected, highlight what changes:
Things 3 is connected.
Here's what you can do now:
- **Ask about Things anytime** — "What's in my Tod
Read more
name: things-setup description: "Connect Things 3 (macOS only) so Dex reads and updates your Things tasks. Use when the user says 'I use Things', 'sync my Things inbox', or pastes a `things://` link. Not for Todoist (`todoist-setup`) or Trello (`trello-setup`)." manifest: id: things auth: none category: task_access platform: macos mcp_server: things3-mcp
Things 3 Setup
Connect Things 3 so Dex can work with your Things tasks whenever you ask. No account needed. Everything stays on your Mac. Works offline.
**What this enables (on request):** Once connected, say "sync with Things" — Dex pushes new tasks to the right Things Area (mapped from your pillars), marks completions via AppleScript, and pulls tasks you completed or added to Things Inbox. Everything stays local — no network calls, no accounts. Sync runs on demand when you ask.
What This Enables
Once connected, you can ask Dex to:
- **See your Things lists:** "What's in my Things Today list?" — including alongside your daily plan
- **Create there instead:** "Put that in Things, not Dex" in any conversation
- **Complete from chat:** "Mark the deck task done in Things"
- **Cross-check:** "Anything in Things that isn't tracked in Dex?"
Privacy
- Everything is local. Things 3 uses AppleScript — no cloud API, no tokens, no accounts
- Dex reads and writes Things only when you ask. Nothing leaves your machine
- No credentials to store. No tokens to expire. No OAuth flows
- Works completely offline
When to Run
- User types `/things-setup`
- User asks about connecting Things 3
- User wants Dex working with a Mac-native task app
- During `/integrate-mcp` if Things is mentioned
- During onboarding if user mentions Things 3
---
Setup Flow
Step 1: Platform Check
Things 3 is macOS only. Verify:
1. Check if running on macOS (`process.platform === 'darwin'` or `uname` check) 2. **If not macOS:**
Things 3 is a macOS-only app. It won't work on this platform. For a cross-platform task app connection, consider: - /todoist-setup (works everywhere) - /trello-setup (web-based)
Stop here.
Step 2: Check if Already Connected
1. Read `System/integrations/config.yaml` 2. If `things.enabled: true`, skip to **Step 7** (Reconfigure) 3. If not configured, continue
Step 3: Check if Things 3 is Installed
Run a quick AppleScript test:
osascript -e 'tell application "System Events" to (name of processes) contains "Things3"'
Or check if the app exists:
ls /Applications/Things3.app 2>/dev/null || ls "$HOME/Applications/Things3.app" 2>/dev/null
**If Things 3 is not found:**
I can't find Things 3 on your Mac. Things 3 is available from the Mac App Store: https://apps.apple.com/app/things-3/id904280696 Once installed, run /things-setup again.
Stop here.
**If found:**
Things 3 detected. This is the simplest integration to set up — no accounts or API keys needed. Everything stays on your Mac and works offline. Ready?
Wait for confirmation.
Step 4: Add the things3-mcp Server
Check the user's MCP configuration. If `things3-mcp` is not listed:
1. Explain:
I need to add the Things 3 connector to your Dex configuration. This uses a lightweight AppleScript bridge — no accounts, no API keys. It talks directly to Things 3 on your Mac.
2. Add to the user's `.mcp.json`:
{
"things3-mcp": {
"command": "npx",
"args": ["-y", "things3-mcp"],
"env": {}
}
}3. Tell the user the MCP server needs to restart for changes to take effect.
Step 5: Test the Connection
Run a quick test to verify AppleScript access:
1. List Things Areas:
osascript -e 'tell application "Things3" to get name of areas'
2. List Things Projects:
osascript -e 'tell application "Things3" to get name of projects'
**If macOS prompts for AppleScript permission:**
macOS is asking for permission to control Things 3. Click "OK" to allow. This is a one-time prompt. Things 3 uses AppleScript for local communication — no network access is involved.
**Show results:**
Connection test passed. Your Things 3 setup: - Areas: [list of areas] - Projects: [list of projects]
If the test fails, jump to Troubleshooting.
Step 6: Configure Mapping
First, read `System/pillars.yaml` and extract the user's pillar `id` and `name` fields. If pillars are empty/not yet configured, prompt the user to run `/quarter-plan` first.
Map Dex pillars to Things Areas:
Now let's map your Dex pillars to Things Areas. Your Dex pillars (from System/pillars.yaml): [list each pillar name, numbered] Your Things Areas: [list from Step 5] I'll suggest a mapping — adjust if needed: | Dex Pillar | Things Area | |------------|-------------| | [pillar 1 name] | [best match or "[pillar 1 name]"] | | [pillar 2 name] | [best match or "[pillar 2 name]"] | ... Does this mapping look right? I can create any missing Areas in Things.
If areas don't exist, offer to create them (run once per missing pillar):
osascript -e 'tell application "Things3" to make new area with properties {name:"[pillar name]"}'Step 7: Save Configuration
Write to `System/integrations/config.yaml` — update the things section. Build `area_mapping` dynamically from the user's pillars: use each pillar's `id` as the key and the confirmed Things Area name as the value (used when the user asks Dex to file something in Things under the right Area).
things:
enabled: true
configured_at: YYYY-MM-DD
mcp_server: things3-mcp
auth_type: none
area_mapping:
[pillar_id]: [Things Area name] # one entry per pillarIf the file already exists, only update the `things:` section. Preserve other integration configs.
Step 8: Capability Cascade
Now that Things is connected, highlight what changes:
Things 3 is connected. Here's what you can do now: - **Ask about Things anytime** — "What's in my Tod
A personal operating system powered by Claude. Strategic work management, meeting intelligence, relationship tracking, daily planning — all configured for your specific role. No coding required.
Repo: davekilleen/Dex
Other skills on davekilleen-dex.
- /agent-browser
Browser automation using Vercel's agent-browser CLI. Use when you need to interact with web pages, fill forms, take screenshots, or scrape data. Alternative to Playwright MCP - uses Bash commands with ref-based element selection. Triggers on "browse website", "fill form", "click
Open skill - /agent-native-architecture
Build applications where agents are first-class citizens. Use this skill when designing autonomous agents, creating MCP tools, implementing self-modifying systems, or building apps where features are outcomes achieved by agents operating in a loop.
Open skill - /andrew-kane-gem-writer
This skill should be used when writing Ruby gems following Andrew Kane's proven patterns and philosophy. It applies when creating new Ruby gems, refactoring existing gems, designing gem APIs, or when clean, minimal, production-ready Ruby library code is needed. Triggers on
Open skill - /brainstorming
This skill should be used before implementing features, building components, or making changes. It guides exploring user intent, approaches, and design decisions before planning. Triggers on "let's brainstorm", "help me think through", "what should we build", "explore
Open skill - /compound-docs
Capture solved problems as categorized documentation with YAML frontmatter for fast lookup
Open skill - /create-agent-skills
Expert guidance for creating, writing, and refining Claude Code Skills. Use when working with SKILL.md files, authoring new skills, improving existing skills, or understanding skill structure and best practices.
Open skill

