plugin/ holds the plugin manifest, .mcp.json (CLAUDE_PLUGIN_ROOT paths), and
README; scripts/build-plugin.sh syncs the core client, esbuild-bundles the
server into a single ESM file (the plugin uploader rejects zip entries
containing "@", so no node_modules), and zips it as ms-todo.plugin. Same
server, two install formats (.mcpb + .plugin). Mirrors claude-msplanner.
Verified: the bundled server registers all 17 tools over stdio as ms-todo
v1.0.1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
cmd's `start` splits unquoted commands at "&", truncating the OAuth authorize
URL after the first query parameter — Windows users hit AADSTS900144 (missing
'scope'). Launch via rundll32 url.dll,FileProtocolHandler instead, which takes
the URL as a plain argument with no shell parsing.
Same fix as claude-msplanner b07a241, applied to the canonical skill copy and
synced into the extension bundle.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude Code skill (CLI over Microsoft Graph, delegated auth-code + PKCE) and a
Claude Desktop .mcpb extension sharing one dependency-free core client.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>