Skip to content
Agentmart
Submit a tool

publish

Publish an analyzed action plan to Notion (via your connected Notion MCP), create Todoist tasks for your action items, and optionally Google Drive, then mark…

Skill by fontezbrooks

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/fontezbrooks-publish

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Publish an analyzed action plan to Notion (via your connected Notion MCP), create Todoist tasks for your action items, and optionally Google Drive, then mark the recording processed.

Use cases: productivity, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/publish

Tools it pre-approves 2

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Read,
  • Bash

What's inside

Skill name
publish
Description
Publish an analyzed action plan to Notion (via your connected Notion MCP), create Todoist tasks for your action items, and optionally Google Drive, then mark the recording processed.
License
MIT
Allowed tools
Read,, Bash
Instructions
83 lines in SKILL.md · view on GitHub

Before installing

  • Pre-approves any shell command

Files (1)

  • SKILL.md

SKILL.md (first lines)

Publish the plan for recording `$1`. Default target is `both`: Notion always, Drive only when it
is configured. Read `--to` from `$ARGUMENTS`.

1. Read `artifacts/$1.plan.json`. If it is missing, run `/loom-daddy:analyze $1` first.

2. Notion (when target is `notion` or `both`): publish via the connected Notion MCP. No
   `NOTION_TOKEN` is used.
   a. Resolve the destination database. Read the cached id:
      ```bash
      cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/config-get.ts notion.databaseId
      ```
      - If the user named a target in this request (e.g. "to my Meeting Notes DB"), OR nothing is
        cached: find it with the Notion MCP `notion-search` (query_type internal). If exactly one
        clear match, use it; if several or none, show the candidates and ask the user to pick.
        Never guess. Then cache the choice:
        ```bash
        cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/config-set.ts notion.databaseId <id> --name "<name>"
        ```
      - Otherwise reuse the cached id.
   b. Create the page with the Notion MCP create-pages tool. Use whichever Notion MCP is connected
      (an interactive session exposes the Notion plugin tools; a scheduled run exposes the
      claude.ai Notion connector). If the database has multiple data sources, fetch it first to get
      the right `data_source_id`. Render the page body as Notion Markdown matching the built-in
      layout: title = `recordingName`; a `Recorded by: <recorderName>` paragraph first when the
      plan has a non-null `recorderName`; sections Summary; Decisions (each with a timestamp deep
      link `https://www.loom.com/share/$1?t=<sourceTs>`); Action Items as a table (item, owner with
      "(guess)" when `ownerIsGuess`, priority, timeframe, source link); Open Questions.
   c. Record the confirmed publish using the page URL the create-pages tool returned:
      ```bash
      cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/record-publish.ts $1 --url <pageUrl>
      ```
      If create-pages returned no page URL, the publish did not happen - skip this and step 5
      (marking).

3. Todoist (after a confirmed Notion publish): create tasks for the user's own action items via
   the connected Todoist MCP.
   a. Read the cached destination:
      ```bash
      cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/config-get.ts todoist.projectId
      ```
      If it is EMPTY, offer setup once: find the "Meetings" project with the Todoist MCP
      find-projects tool (create it with add-projects if it does not exist), confirm with the user
      the owner name that identifies them in transcripts, then cache:
      ```bash
      cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/config-set.ts todoist.projectId <id> --name "Meetings" --owner "<name>"
      ```
      If the user declines Todoist setup, skip this step.
   b. Build the payload:
      ```bash
      cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/todoist-payload.ts $1
      ```
      If the JSON contains `"skip": true` (tasks already recorded, or no items owned by the user),
      report the reason and continue to step 4.
   c. Create the parent task with the Todoist MCP add-tasks tool using the payload's `parent`
      (content, description) and `projectId`. Then create the subtasks with a second add-tasks
      call, each with `parentId` set to the parent task id the first call returned; subtasks carry
      content, description, priority, and dueString when present.
   d. Record the confirmed creation:
      ```bash
      cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/record-todoist.ts $1 --task-id <parentTaskId> --count <subtaskCount>
      ```
      If add-tasks returned no parent task id, do not record; report it so the user can retry. A
      Todoist failure never blocks step 4 or step 5.

4. Drive (when target is `drive` or `both`): the built-in publisher also writes the markdown copy.
   It skips itself when Drive is not configured, so this is safe to run unconditionally:
   ```bash
   cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/publish.ts $1 --drive-only --commit
   ```
   (`--drive-only` skips the built-in Notion write; Notion is handled via MCP above. If it prints
   `[skip] Drive not configured`, that is expected when Drive is optional and unset.)

5. On success, mark the recording processed so the background poller will not republish it:
   ```bash
   cd "${CLAUDE_PLUGIN_ROOT}" && npx tsx --env-file-if-exists=.env scripts/mark.ts $1
   ```
   mark.ts refuses to mark unless the Notion publish receipt from step 2c exists (pass `--force`
   only for a deliberate Drive-only publish with no Notion target).

Report what was published and where, how many Todoist tasks were created (or why the step was
skipped), and whether Drive was skipped.

From fontezbrooks/loomDaddy, MIT.

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
Jul 30, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from fontezbrooks

Cite this page

publish skill. Agent Mart. https://agentmart.dev/skills/fontezbrooks-publish (last updated 2026-10-24)