SkillAgentSearch skills...

docket

Local-first, self-hostable coordination workspace for AI coding agents. Shared tasks, claims, sync and MCP integration.

Install / Use

claude mcp add pasichDev -- npx -y github:pasichDev/docket

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

81/100

Supported Platforms

Claude Code
Claude Desktop

Our assessment of docket

docket scores 81/100 on our quality scale, 1357th of 2,717 Development & Engineering skills we index (top 50%).

Its MCP Server is 16 KB long, well organised into 18 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.

It has 10 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
12/15
Adoption
4/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 5 days ago, so docket is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-27. Automated pattern scan on 2026-09-27. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

docket compared with similar skills

All 4 of these similar skills score higher than docket; compare them before choosing.

SkillScoreStarsUpdatedFormat
docket (this skill)by pasichDev81105d agoMCP Server
Agent-Reachby Panniantong10085.7k12d agoCLAUDE.md
headroomby headroomlabs-ai10073.9ktodayCLAUDE.md
rufloby ruvnet10073.4ktodayCLAUDE.md
CowAgentby zhayujie10047.1ktodayCLAUDE.md

Frequently asked questions

How do I install docket?
Run claude mcp add pasichDev -- npx -y github:pasichDev/docket. The install tabs above show the steps for each supported agent.
Which AI agents does docket work with?
It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
Is docket safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is docket still maintained?
The repository was last updated 5 days ago, so docket is actively maintained.

Docket

npm CI MCP Registry License: MIT

One list every AI tool you use can write to — Claude Code, Codex, Cursor, Warp — across every project, before the work is worth a ticket. Local-first, self-hostable, no SaaS account.

<p align="center"> <img src="docs/assets/demo.gif" alt="Claude Code and Codex, each in a different project, add a todo; both appear on the Docket dashboard within seconds, filed under their own projects" width="100%" /> </p>

Quick start

You need: Node.js 18+ and at least one MCP host — Claude Code, Codex, Cursor, Windsurf, Claude Desktop, Zed or Warp.

npx -y @pasichdev/docket setup

That configures every host it finds on this machine and ends by telling you which ones. Then restart your agent and ask it "add a todo: buy milk" — it shows up at http://localhost:8787, a dashboard that started by itself the moment the agent connected.

Only want Claude Code, and nothing written anywhere else? claude mcp add docket -- npx -y @pasichdev/docket does just that part. Other hosts: Supported hosts.

<details> <summary>Optional: see what's open in a project when a session starts</summary>
npm install -g @pasichdev/docket        # the hook runs a command, so it needs one on PATH
docket hook install                     # then: docket hook doctor

hook install works without the global install too — it pins the command to this exact copy of docket and tells you it did — but the short form survives moving or reinstalling, and npx leaves nothing on PATH.

</details>

Why

A thought that shows up mid-session is worth capturing but not worth the ceremony: a Notion template, a GitLab issue format, a ticket id you have to invent. So today it evaporates. Docket is the layer underneath all of that — work lands here at the speed an agent can type, from any tool, in any project, and graduates to Notion/GitLab/Obsidian when it's earned it.

Nobody else occupies this space, and it isn't an accident: Anthropic will not integrate Claude Code with Cursor, and Cursor will not integrate with Codex. Every vendor optimises its own closed loop. The space between the tools is structurally nobody's.

One list, many projects

Docket files every item under the project it was captured in, automatically — resolved from the git remote of wherever the agent is running. You never type it, and no agent has to remember to.

~/work/backend      claude-code, codex   ─┐
~/side/tracker      claude-code          ─┼──▶  docket  ──▶  one list, three scopes
~/side/notes        codex, warp          ─┘
  • todo_list in ~/work/backend shows that project's open items, not all three projects' — compact, one line each.
  • The web dashboard has a workspace switcher with per-project open counts.
  • Items with no project context land under Unfiled and stay visible, never guessed at.

Using the git remote rather than the path means the same repo cloned to ~/src/backend on a laptop and /work/backend on a desktop is one workspace — which matters precisely because sync exists. Full resolution order and the .docket.json override: docs/workspaces.md.

<p align="center"> <img src="docs/assets/demo-dark.jpg" alt="Docket web dashboard, dark theme: the top card is claimed by claude-code and shows a Markdown description clipped with a Read more link" width="49%" /> <img src="docs/assets/demo-light.jpg" alt="The same list in the light theme" width="49%" /> </p> <p align="center"> <img src="docs/assets/demo-detail.jpg" alt="One item opened: its full Markdown description rendered, and its history showing who claimed it and who created it" width="49%" /> <img src="docs/assets/demo-edit.jpg" alt="The same item being edited, with a Markdown editor and Write/Preview tabs alongside category, priority and due date" width="49%" /> </p> <p align="center"><sub>Regenerate these with <code>node docs/assets/demo-seed.mjs</code> — it builds the workspace they show, so they stay a picture of the real dashboard rather than a staged one.</sub></p>

Upgrading from 2.x

Read this before you upgrade if you have existing items.

3.0 migrates your store from data format v7 to v8 on first run, automatically. The migration itself is safe and is not the risk. Downgrading afterwards is.

docket 2.3.1 writes the store from its own v7 shape: it has never heard of the fields v8 adds, so its very first write after a reinstall silently strips them from every item. Nothing errors, and a later re-upgrade hands out fresh sequence numbers that no longer mean what your paired devices think they mean. 2.3.1 is published and cannot be patched, so 3.0 defends the only way it can — by keeping a copy of your pre-migration store:

~/.docket/todos.v7-pre-upgrade.enc

It is written once, before the first v8 write, and never overwritten. The upgrade prints its path on the run that creates it.

To go back to 2.x, restore it first:

docket restore --from-v7                     # puts the v7 store back; moves the v8 one aside
npm install -g @pasichdev/docket@2.3.1

In that order. restore --from-v7 deletes nothing — your v8 store is renamed aside, so you can come forward again later.

If you would rather have a portable copy as well, docket backup ./pre-v3.backup before upgrading gives you one that includes your identity and paired peers.

Bridges, not replaces

Docket is deliberately not where work lives forever. It's where work lands first, before anyone knows whether it deserves a ticket. Most of it doesn't and gets closed by hand; the rest graduates.

sourceUrl is the bridge in both directions. Set it whenever an item maps to something with a URL — a GitLab issue, a Notion page, an Obsidian share link, a Slack thread, a GitHub PR — and the card carries a clickable link straight back to it.

Why not just use GitHub Issues? Because an issue costs a title you have to phrase for an audience, a repo you have to pick, and labels you have to maintain — and because your Cursor session can't write one for you while you're mid-thought in a different project. Docket costs one sentence, from whichever tool you already have open. When the item turns out to matter, it becomes an issue, and sourceUrl remembers where it went.

Supported hosts

Any MCP host works — the tools are identical everywhere:

{
  "mcpServers": {
    "docket": { "command": "npx", "args": ["-y", "@pasichdev/docket"] }
  }
}

| Host | Config file | |---|---| | Claude Code | claude mcp add docket -- npx -y @pasichdev/docket | | Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows) | | Cursor | .cursor/mcp.json or Global MCP settings | | Windsurf | ~/.codeium/windsurf/mcp_config.json | | Codex | ~/.codex/config.toml (mcp_servers) | | Zed | ~/.config/zed/settings.json — uses context_servers, see below |

<details> <summary>Zed's config shape is slightly different</summary>
{
  "context_servers": {
    "docket": { "command": { "env": {}, "path": "npx", "args": ["-y", "@pasichdev/docket"] } }
  }
}
</details>

The one hook

Claude Code additionally gets a SessionStart hook, and only that one:

docket hook install      # writes .claude/settings.json (--global for user-wide)
docket hook doctor       # proves it fires, and reports measured latency
docket hook uninstall    # removes only the entries docket owns

When a session starts it injects the items open in that project — compact, at most 7, under 120 tokens. Nothing at all when the project has nothing open. Its whole job is continuity: you come back to a terminal and the thread is already there.

Don't want it? export DOCKET_HOOKS=off disables it immediately, without editing any config or uninstalling anything. docket hook doctor measures the real round trip and says so if it is slow enough to notice.

It fails open, always. Server not running, request timed out, malformed response, DOCKET_HOOKS=off — every one of those exits 0 and prints nothing. A tool that degrades your session when the tool itself is broken gets uninstalled, at which point it helps nobody. docket hook doctor runs the configured command for real and reports what a session would actually see, so a hook that never fires is visible rather than merely silent.

No PreToolUse, no blocking, no other hosts — the hook's only job in this release is continuity, not enforcement.

Guidance for non-Claude-Code agents

The tools work everywhere; the guidance ships as a Claude Code plugin. For any other agent, copy skills/docket/SKILL.md (everything below the --- frontmatter) into whichever file your agent reads — AGENTS.md for Codex, .cursor/rules/docket.mdc for Cursor, .windsurfrules for Windsurf, CLAUDE.md for Claude Desktop, or Warp's custom-instructions setting.

/plugin marketplace add pasichDev/docket
/plugin install docket@docket

Tools

| Tool | Description | |---|---| | todo_add(title, description?, list?, category?, priority?, dueDate?, sourceUrl?, workspace?) | Capture an item. Filed under the current project automatically. | | todo_list(filter?, list?, category?, agent?, session?, inProgress?, workspace?, verbose?, limit?, offset?) | Scoped to the current project and compact by default. workspace:"*" for everything. | | todo_edit(id, ...) | Edit any subset of fields by id. Pass "" to clear an optional field. | | todo_claim(id) / todo_release(id) | Mark an item in progress, or drop the claim. Auto-expires after 15 minutes. | | todo_complete(id) | Mark done (also clears any claim). | | todo_history(id) | Full change log for one item. | | todo_delete(id) | Permanently remove an item. | | todo_version() / todo_check_update() | Data-format version; read-only npm version check. |

Full field and workflow reference: skills/docket/SKILL.md.

CLI

docket list [-w <project>] [--all]          What's open, scoped like the MCP default
docket workspaces                           Projects, with open counts and last activity
docket sessions                             Agent sessions open right now, and where
docket stats | export | import              Inspection and round-tripping
docket hook install | uninstall | doctor    Claude Code SessionStart hook
docket serve | pair | devices | status      Self-hosted server & devices
docket backend use <url> | localize         Switch deployment mode
docket backup <file> | restore <file>       Encrypted full-device backup
docket web                                  Ensure the Web UI is running
docket check-update | update                Version management

docket help prints the canonical, always-current list. Full reference: docs/cli.md.

Deployment modes

| | Local Mode | Self-hosted Mode | |---|---|---| | Default? | Yes — zero config | Opt-in | | Where state lives | This machine (~/.docket) | The Docket Server you run | | Setup | docket setup | docket setup, choose "Self-hosted", or docket pair <url> | | Web UI | Runs on this machine | Served by the Docket Server | | Multi-machine | Optional P2P sync between your own devices | Every paired device talks to one server | | Claims | Advisory — a claim can be taken over, and across P2P it can

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars10
CategoryDevelopment
Updated5d ago
Forks0

Languages

TypeScript

Trust signals

97/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 info