Fill Intervals Online time entries from daily notes with GitHub and Outlook calendar correlation. Use when asked to fill time entries, timesheets, or submit hours to Intervals. Requires chrome-devtools MCP with browser open to Intervals.
Fill time entries in Intervals Online from Obsidian daily notes using MCP chrome-devtools, with GitHub activity and Outlook calendar correlation.
--remote-debugging-port=9222https://bhi.intervalsonline.com/time/multiple/IMPORTANT: Cached files are stored in the PROJECT, not the plugin:
<project-root>/.claude/intervals-cache/
├── project-mappings.md # Project→workType mappings
├── github-mappings.md # Repo→project mappings
├── outlook-mappings.md # Calendar→project mappings
└── fetch-github-activity.sh # GitHub activity fetcher script
These files persist between sessions. If they don't exist, create them from the plugin's and directories.
references/scripts/Read the daily note for the requested date. Default location: Daily Notes/YYYY-MM-DD.md
Look for:
https://github.com/owner/repo/pull/123)ALWAYS run this phase to fetch GitHub activity and enhance time entry descriptions.
The script has a version number on line 2 (e.g., # Version: 2). Check and update if needed:
~/.claude/skills/intervals-time-entry/scripts/fetch-github-activity.sh.claude/intervals-cache/fetch-github-activity.sh exists, extract its version number.claude/intervals-cache/fetch-github-activity.shThis ensures users always have the latest script with bug fixes and new features.
Run this command (replace YYYY-MM-DD with the target date):
bash .claude/intervals-cache/fetch-github-activity.sh YYYY-MM-DD
This returns JSON with:
IMPORTANT: The script output already includes PR titles and body snippets in prs_authored, prs_active, and prs_reviewed. Do NOT make separate gh pr view calls — use the data already returned by the script.
Using the JSON output from Step 2:
.claude/intervals-cache/github-mappings.mdALWAYS improve descriptions when GitHub data provides more context. The goal is to make time entries self-documenting and meaningful for future reference.
Before/After Examples:
| Notes say | GitHub shows | Final description |
|---|---|---|
| "font awesome icon PR" | PR #574: "Add FontAwesome Pro icons to design system" | Add FontAwesome Pro icons to design system (PR #574) |
| "review and merge PRs" | Reviewed PR #580, #581, #583 | Code review: notification preferences (#580), cart validation (#581), search filters (#583) |
| "text-transform work" | PR #579: "Add text-transform utilities to typography tokens" | Add text-transform utilities to typography design tokens (PR #579) |
| "bug fixes" | PR #602: "Fix race condition in checkout flow" | Fix race condition in checkout flow (PR #602) |
| "API work" | Commits: "Add pagination to /users endpoint", "Handle empty results" | Add pagination to /users endpoint with empty result handling |
Rules:
(PR #123)Compare GitHub activity to notes and flag potential issues:
Missing time entries: If GitHub shows significant activity (multiple commits, PRs) for a repo but notes have no corresponding entry, suggest adding one.
Time discrepancies: Use commit timestamps to estimate minimum time spent:
Example output:
⚠️ GitHub shows commits on technomic-api from 9:15am to 3:30pm (~4-5h with breaks)
but notes only show 2h for Technomic dev work. Consider adjusting.
💡 Found PR #456 "Fix payment edge case" for Technomic - using for description.
📝 No time entry found for 3 PR reviews on ewg-frontend. Suggest adding:
- EWG: 0.5-1h Architecture/Technical Design (PR reviews #12, #13, #14)
ALWAYS run this phase to visually read the Outlook calendar and cross-reference with notes and GitHub activity.
Prerequisite: User must be logged into Outlook Web in the browser (same Chrome instance with --remote-debugging-port=9222).
IMPORTANT: Never navigate away from the user's current tab. Always find an existing Outlook tab or create a new one.
list_pages to see all open browser tabsoutlook.office.com or outlook.live.comselect_page with that page's IDnew_page with the day view URL (see Step 2)Navigate to the target date's day view: