Repository navigation
feat: deterministic skills — today/week/clashes/from (ODIAA-2332) - #31
Merged
Merged
Conversation
…2332) Add zero-LLM-reasoning skills that compose existing read-only bridge endpoints (/calendar/events/list, /calendar/clashes, /stats, /messages/search) into pre-formatted, compact Markdown: skill_today, skill_week, skill_clashes, skill_from as MCP tools, and matching tb today/week/clashes/from CLI commands. Rendering lives in a new shared lib/skills.js so the CLI and MCP tools produce byte-identical Markdown from the same data — pure functions taking explicit Date/data inputs (no Date.now() defaults) for deterministic snapshot testing. No new extension routes or access-control classifications were needed: every dependency is an already-ungated, read-only endpoint. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bump the tools/list count assertions to 31 and pin TZ=UTC (picked up by the spawned server subprocess) so the new skills' date/time output is deterministic regardless of the machine running the suite. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cover tb today/week/clashes/from and the matching skill_* MCP tools in docs/COMMANDS.md, SPEC.md's command reference and MCP tool catalog, cli/README.md, root README.md, AGENTS.md, and the thunderbird-cli skill — bumping the command/tool counts these additions invalidate (43→47 commands, 27→31 MCP tools). Pre-existing, already-stale counts unrelated to this change (e.g. SKILL.md's version field, SPEC.md's "16 high-level tools" line) are left as-is. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…tic-skills # Conflicts: # SPEC.md # docs/COMMANDS.md # mcp/src/tools.js # skills/thunderbird-cli/SKILL.md # test/mcp-test.mjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
skill_today,skill_week,skill_clashes,skill_fromas MCP tools, plus matchingtb today,tb week,tb clashes,tb from <address>CLI commands (honouring--output-version 2/--format json|compact|tablefor callers that want the JSON envelope instead).lib/skills.jsso the CLI and MCP tools produce byte-identical Markdown from the same data — pure functions that take explicitDate/data inputs (noDate.now()defaults) for deterministic snapshot testing.test/skills.test.mjs) plus 6 new MCP integration test cases covering all four tools end-to-end.docs/COMMANDS.md,SPEC.md,cli/README.md, rootREADME.md,AGENTS.md, and thethunderbird-cliskill (command/tool counts bumped 43→47 / 27→31 where this change invalidates them; unrelated pre-existing stale counts are left untouched).Non-negotiables checklist (per ODIAA-2306 / docs/PLAN.md)
/calendar/events/list,/calendar/clashes,/stats,/messages/search) is an existing, already-ungated, read-only bridge endpoint. No changes toextension/src/access-control.js,access.example.json, ordocs/ACCESS-CONTROL.mdwere needed.tb today/week/clashes/from) → MCP (skill_today/week/clashes/from).npm run test:docs) passes.npm run test:skills,npm run test:mcp).Test plan
npm run test:skills— 29/29 passing (fixed-date Markdown snapshots)npm run test:mcp— 71/71 passing (includes newskill_*integration coverage)npm run test:docs— 93/93 passingnpm run test:extension— 59/59 passing (no extension changes, confirms no regression)npm run test:all— full suite greennpm run lint— clean (only the pre-existing, tolerated privileged-manifest warning from the calendar Experiment API)tb today/tb week/tb clashes/tb from <addr>against a live Thunderbird + bridge (not possible from this environment — no browser/GUI access; CLI output was verified against the mock bridge intest/mcp-test.mjsand via unit snapshots instead)🤖 Generated with Claude Code