feat: Outlook mail read + safe message-rule authoring - #2
Merged
Conversation
Replace the template reference pattern with the real msgraph surface (feature 001-msgraph-mail-rules), completing all 36 SDD tasks. - Add 7 agent-friendly skills (auth-login, mail-list, mail-get, rule-list, rule-verify, rule-create, rule-remove); each points at the runtime `describe` catalog as the schema source of truth. - Add tests/test_client.py: 20 offline unit tests (unittest.TestCase, so they run under both `unittest discover` and pytest) mocking the single `_http` seam and the XDG state paths — covers the describe catalog, token cache 0600 + scope ratchet, mail-read shaping, the read-only catch-set + verification marker, and the rule-create scope/verify gates. - Remove template residue: src/example/, skills/example-subject-verb/, and the inert hooks/hooks.json. - Update README to the shipped verbs, the Azure app-registration prerequisite, and MSGRAPH_CLIENT_ID/MSGRAPH_TENANT_ID env vars. The shippable payload under plugin/ stays stdlib-only; ruff/pytest are dev tooling only and never ship. Local CI parity green: ruff check, ruff format --check, pytest (23 passed). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Implements feature
001-msgraph-mail-rulesend to end, replacing the template reference pattern with the realmsgraphsurface. Completes all 36 SDD tasks.What's here
plugin/skills/:auth-login,mail-list,mail-get,rule-list,rule-verify,rule-create,rule-remove. Each has an onboarding-quality description (what + when-to-use), accurate annotations, steering errors, and points at the runtimedescribecatalog as the schema source of truth.tests/test_client.py— 20 offline unit tests asunittest.TestCaseclasses (run under bothpython3 -m unittest discover -s testsand pytest/CI). They mock the single_httpseam and the XDG state paths, covering: thedescribe/TOOLScatalog, token cache0600+ scope ratchet, mail-read shaping, the read-only catch-set + verification marker (only GETs), and therule-creategates (scope and prior verify), plusrule-remove's single DELETE.plugin/src/example/,plugin/skills/example-subject-verb/, and the inertplugin/hooks/hooks.json.MSGRAPH_CLIENT_ID/MSGRAPH_TENANT_IDenv vars.Safety model (structural, not behavioural)
Mail.Read+MailboxSettings.Read); write capability exists only after a separateMailboxSettings.ReadWriteconsent.rule-createrefuses unless the same criteria were verified read-only first (the verification marker gate).rule-removeis the reversibility primitive.Constraints upheld
The shippable payload under
plugin/stays stdlib-only (aZeroDependencyTestand aquickstart.mdgrep guard againstmsal/azure/requests).ruff/pytestare dev tooling only and never ship. No token/secret is tracked in the repo.Validation (local CI parity, all green)
ruff check .— passedruff format --check .— passedpytest -q— 23 passedThe live-auth acceptance demo still requires the one-time human Azure app registration.
🤖 Generated with Claude Code