一键导入
ea-time-block
Cal Newport time-block plan for today as a linked Excalidraw diagram.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Cal Newport time-block plan for today as a linked Excalidraw diagram.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Search Desktop files via gbrain; mail use joshu-mail.
Meeting-mail scheduling. Kanban ea-sched-*; Calendly fallback.
Find/search mail; local cache first, deep server Gmail.
jMail desktop UI workflows — compose drafts, thread navigation, voice fast paths.
Daily handoff — prep yesterday carryover, interactive morning review, finalize today's time block.
Triage mail to Projects. Not drips—use ea-project-kanban.
| name | ea-time-block |
| description | Cal Newport time-block plan for today as a linked Excalidraw diagram. |
| metadata | {"hermes":{"category":"executive-assistant","version":"1.3.0"}} |
On demand: build today's intentional schedule as a linked Excalidraw diagram in ${JOSHU_FILES_ROOT}/Planning/.
Inspired by Cal Newport's time blocking: schedule column = hour grid with named blocks; right column = capture notes and optional numbered task groups (① → task list). Replan when disrupted — rerun this skill to refresh the diagram.
GTD / linking context: docs/executive-assistant.md#gtd-workspace
carryover[]skill_view('excalidraw') for JSON envelope rules (container-bound labels)${JOSHU_FILES_ROOT} with connectors/calendar/ mirrors, Projects/, and optionally Planning/capture-YYYY-MM-DD.md/opt/joshu/scripts/gather-time-block-input.mjs and /opt/joshu/scripts/render-time-block-excalidraw.mjs on VPS (Joshu sandbox image; not scripts/… relative to Desktop — Hermes terminal.cwd is the ArozOS Desktop folder)npm run time-block:gather and scripts/render-time-block-excalidraw.mjsskill_view('ea-time-block') — this filegetOwnerTimeAnchor). Output file: Planning/time-block-YYYY-MM-DD.excalidrawnode /opt/joshu/scripts/gather-time-block-input.mjs \
--date YYYY-MM-DD \
--files-root "${JOSHU_FILES_ROOT}" \
-o "${JOSHU_FILES_ROOT}/Planning/.time-block-plan-YYYY-MM-DD.json"
Local dev (repo root): npm run time-block:gather -- --stdout or -o …
The script pre-fills blocks[] with today's meeting blocks (live calendar API when Joshu is up, else mirror scan), workHours expanded to cover meetings, yesterdayPlan, _gather.activeProjects, _gather.recentJournals, and _gather.planningFiles paths. See references/calendar-api-quirks.md.
Do not glob mirror filenames by calendar date — mirrors are named by event UUID. Prefer google_calendar_list_events (Composio MCP) or Joshu GET /joshu/api/connectors/calendar/google/events?date=&timezone= when the gather script is unavailable.
Planning/daily-review-YYYY-MM-DD.md — carryover checkboxes (after morning review).time-block-plan-*.json if daily-review missingPlanning/capture-YYYY-MM-DD.md — open Tasks/Ideas bullets_gather.activeProjects → deep/shallow blocks with Projects/<slug>/about.md links_gather.recentJournals for context onlygbrain for "today priority"ea-playbook owns filing_gather before render (renderer ignores extra keys)${JOSHU_FILES_ROOT}/Planning/.time-block-plan-YYYY-MM-DD.json:{
"date": "2026-06-18",
"title": "Time block — Wed Jun 18",
"yesterdayPlan": { "date": "2026-06-17", "path": "Planning/time-block-2026-06-17.excalidraw", "label": "Jun 17" },
"carryover": [
{ "text": "Finish investor reply batch", "link": { "path": "Projects/foo/todo.md" }, "done": false }
],
"workHours": { "start": "09:00", "end": "17:00" },
"taskGroups": [
{
"ref": "1",
"label": "①",
"items": [
{ "text": "task #1", "link": { "path": "Projects/foo/todo.md" } },
{ "text": "task #2", "link": null }
]
}
],
"blocks": [
{
"start": "09:00",
"end": "10:30",
"label": "Deep work — Joshu EA",
"kind": "deep_work",
"link": { "path": "Projects/joshu-product-development/about.md" }
},
{
"start": "14:00",
"end": "15:00",
"label": "Tasks ①",
"kind": "shallow",
"blockRef": "1",
"link": { "path": "Projects/joshu-product-development/todo.md" }
}
],
"notes": ["Shutdown ritual 5pm", "buy food (from capture)"],
"noteLinks": [null, { "path": "Planning/capture-2026-06-18.md" }]
}
Block kinds: meeting | deep_work | shallow | personal | break | buffer
taskGroups + blockRef: Cal Newport numbered lists — block label may include ①; blockRef matches taskGroups[].ref. Renderer draws the group in the notes column.
yesterdayPlan + carryover: After morning review, set yesterdayPlan.path to yesterday's .excalidraw; populate carryover[] from unchecked items in daily-review (see ea-morning-review). Renderer shows a yesterday link under the title and a From yesterday ☐ list in the notes column.
Rules:
shallow block or a taskGroups batchkind: meeting with link to the event mirror .mdkind: deep_work → Projects/<slug>/about.md or todo.mdkind: shallow → mail thread or inbox project todo.mdnotes[] with noteLinks → Planning/capture-*.mdcarryover[] before task groups; schedule deep/shallow blocks for themlink when a canonical target exists (joshu:// path from files root)scripts/… fails from Desktop cwd):node /opt/joshu/scripts/render-time-block-excalidraw.mjs \
"${JOSHU_FILES_ROOT}/Planning/.time-block-plan-YYYY-MM-DD.json" \
-o "${JOSHU_FILES_ROOT}/Planning/time-block-YYYY-MM-DD.excalidraw"
Local dev (repo root): node scripts/render-time-block-excalidraw.mjs plan.json -o …
Planning/time-block-YYYY-MM-DD.excalidraw in jWhiteboard (double-click from Files). Block links use joshu:// paths to threads, projects, calendar events, and capture files.See references/link-targets.md. Renderer emits joshu://<path-from-files-root> on each block.
references/cal-newport-layout.md — grid layout, replanning, shutdown note, task groups, carryoverreferences/link-targets.md — per-block link mappingreferences/calendar-api-quirks.md — live calendar vs mirrors, FreeBusy calendar IDsitems omitted by default (2026-06-24) — Joshu queries primary + personal Gmail; use calendars.combined.free for scheduling. See calendar-api-quirks.md.Projects/*/journal_YYYY-MM-DD.md and Projects/_system/journal_*.md (not repo-root journals).connectors/mail/… paths only