Agent skill

Granola CI Integration

by jeremylongshore in jeremylongshore/tons-of-skills-marketplace

Build automated pipelines from Granola meeting notes to GitHub Issues, Linear tasks, Slack notifications, and documentation updates using Zapier and GitHub Actions.

MITAuto-check passedProductivity & Automation

Install Granola CI Integration

skills CLI
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill granola-ci-integration -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jeremylongshore/tons-of-skills-marketplace granola-ci-integration --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/granola-ci-integration .claude/skills/granola-ci-integration && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
granola-ci-integration
GitHub stars
2.8k
Token cost
~1.9k tokens
SKILL.md length
355 words
Files
2 (incl. references)
Skills in repo
3,342
Repo updated
First seen
Licence
MIT

At a glance

Build automated pipelines from Granola meeting notes to GitHub Issues, Linear tasks, Slack notifications, and documentation updates using Zapier and GitHub Actions.

  • Works in 6 steps: Set Up the Zapier Pipeline → Parse Action Items with Zapier Code → Create GitHub Issues from Action Items → …
  • Tasks that involve Workflow automation
  • SKILL.md covers Overview, Prerequisites, Instructions and Complete Pipeline Flow, plus 6 more sections
  • Reaches api.github.com

What it does

Granola CI Integration is an agent skill from jeremylongshore/tons-of-skills-marketplace. Build automated pipelines from Granola meeting notes to GitHub Issues, Linear tasks, Slack notifications, and documentation updates using Zapier and GitHub Actions. Trigger: "granola CI", "granola automation pipeline", "granola to github", "granola to linear", "meeting notes automation".

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/implementation.md`). Compatibility notes: Designed for Claude Code

It sits in Productivity & Automation, covering Workflow automation, Meeting notes and agendas and CI/CD. It works with GitHub, Zapier, GitHub Actions and Slack. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.

When your agent uses it

  • Tasks that involve Workflow automation
  • Tasks that involve Meeting notes and agendas
  • Tasks that involve CI/CD

Example prompts

  • “granola CI”
  • “granola automation pipeline”
  • “granola to github”
  • “/granola-ci-integration”

Requirements

  • Compatibility (from SKILL.md): Designed for Claude Code
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Bash(gh:*), Bash(curl:*)

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Set Up the Zapier Pipeline
  2. Parse Action Items with Zapier Code
  3. Create GitHub Issues from Action Items
  4. GitHub Actions Workflow for Meeting Logs
  5. Linear Task Creation
  6. Slack Notification

What it can do on your machine

Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Bash(gh:*)
    • Bash(curl:*)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are yaml and javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.github.com

    Also links to:

    • zapier.com
    • docs.github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Claude Code

    From compatibility in the SKILL.md frontmatter.

Context cost

Granola CI Integration loads about 1.9k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 78 tokens; SKILL.md has 355 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~78
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 355 words, ~1,931 tokens.

Download SKILL.mdSave it as .claude/skills/granola-ci-integration/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
granola-ci-integration
description
Build automated pipelines from Granola meeting notes to GitHub Issues, Linear tasks, Slack notifications, and documentation updates using Zapier and GitHub Actions. Trigger: "granola CI", "granola automation pipeline", "granola to github", "granola to linear", "meeting notes automation".
allowed-tools
Read, Write, Edit, Bash(gh:*), Bash(curl:*)
compatibility
Designed for Claude Code
version
1.13.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
saas, granola, ci-cd, automation

Granola CI Integration

Overview

Build automated pipelines that process Granola meeting notes into development artifacts: GitHub Issues from action items, Linear tasks with team routing, Slack digests for stakeholders, and meeting logs in your repository. Uses Zapier as the middleware between Granola and dev tools.

Prerequisites

  • Granola Business plan (for Zapier access)
  • Zapier account (Free for basic, Paid for multi-step Zaps)
  • GitHub repository with Actions enabled
  • Optional: Linear account, Slack workspace

Instructions

Step 1 — Set Up the Zapier Pipeline
yaml
# Pipeline: Granola → Zapier → GitHub + Slack + Linear

Trigger:
  App: Granola
  Event: Note Added to Granola Folder
  Folder: "Engineering"  # Only process engineering meetings
Step 2 — Parse Action Items with Zapier Code

Add a Code by Zapier step (JavaScript) to extract action items:

javascript
// Zapier Code Step — Extract action items from Granola note
const noteContent = inputData.note_content || '';
const meetingTitle = inputData.title || 'Untitled Meeting';
const meetingDate = inputData.calendar_event_datetime || new Date().toISOString();

// Extract action items: matches "- [ ] @person: task" or "- [ ] task"
const actionRegex = /- \[ \] @?(\w+):?\s+(.+)/g;
const actions = [];
let match;

while ((match = actionRegex.exec(noteContent)) !== null) {
  actions.push({
    assignee: match[1],
    task: match[2].trim(),
    meeting: meetingTitle,
    date: meetingDate.split('T')[0],
  });
}

// Extract decisions: lines starting with "- " under "## Decisions" or "## Key Decisions"
const decisionSection = noteContent.match(/## (?:Key )?Decisions\n([\s\S]*?)(?=\n##|$)/);
const decisions = decisionSection
  ? decisionSection[1].split('\n').filter(l => l.startsWith('- ')).map(l => l.replace('- ', ''))
  : [];

output = [{
  action_count: actions.length,
  actions: JSON.stringify(actions),
  decisions: decisions.join('; '),
  meeting_title: meetingTitle,
  meeting_date: meetingDate,
}];
Step 3 — Create GitHub Issues from Action Items
yaml
# For each action item, create a GitHub issue
Action:
  App: GitHub
  Event: Create Issue
  Repository: "your-org/your-repo"
  Title: "Meeting Action: {{task}} [{{date}}]"
  Body: |
    ## Context
    From meeting: **{{meeting}}** on {{date}}

    ## Task
    {{task}}

    ## Assigned To
    @{{assignee}}

    ---
    *Auto-created from Granola meeting notes*
  Labels: "meeting-action"
  Assignee: "{{assignee}}"  # Must match GitHub username
Step 4 — GitHub Actions Workflow for Meeting Logs

Create a workflow triggered by Zapier via repository_dispatch:

yaml
# .github/workflows/meeting-log.yml
name: Update Meeting Log

on:
  repository_dispatch:
    types: [granola-meeting]

jobs:
  update-log:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Append to meeting log
        run: |
          MEETING_TITLE="${{ github.event.client_payload.title }}"
          MEETING_DATE="${{ github.event.client_payload.date }}"
          DECISIONS="${{ github.event.client_payload.decisions }}"
          ACTION_COUNT="${{ github.event.client_payload.action_count }}"

          mkdir -p docs/meetings

          cat >> docs/meetings/log.md << EOF

          ## ${MEETING_DATE} — ${MEETING_TITLE}
          - **Decisions:** ${DECISIONS}
          - **Action items created:** ${ACTION_COUNT}
          - **Source:** Granola AI
          EOF

      - name: Commit and push
        run: |
          git config user.name "Granola Bot"
          git config user.email "bot@granola.ai"
          git add docs/meetings/log.md
          git commit -m "docs: meeting log — ${MEETING_DATE}" || echo "No changes"
          git push

Trigger from Zapier using the Webhooks action:

yaml
Action:
  App: Webhooks by Zapier
  Event: POST
  URL: https://api.github.com/repos/your-org/your-repo/dispatches
  Headers:
    Authorization: "Bearer {{github_pat}}"
    Accept: "application/vnd.github.v3+json"
  Body:
    event_type: "granola-meeting"
    client_payload:
      title: "{{meeting_title}}"
      date: "{{meeting_date}}"
      decisions: "{{decisions}}"
      action_count: "{{action_count}}"
Step 5 — Linear Task Creation
yaml
Action:
  App: Linear
  Event: Create Issue
  Team: Engineering
  Title: "{{task}}"
  Description: "From meeting: {{meeting}} ({{date}})\n\nAssigned: @{{assignee}}"
  Label: "meeting-action"
  Priority: "Medium"
Step 6 — Slack Notification
yaml
Action:
  App: Slack
  Event: Send Channel Message
  Channel: "#engineering-meetings"
  Message: |
    :memo: *Meeting Notes Ready:* {{meeting_title}}
    :calendar: {{meeting_date}}

    *Decisions:*
    {{decisions}}

    *Action Items Created:* {{action_count}}
    :point_right: Check Linear/GitHub for assigned tasks

    [View full notes in Granola]

Complete Pipeline Flow

Meeting ends → Granola enhances notes
  → Note added to "Engineering" folder
  → Zapier triggers
    ├→ Parse action items (Code step)
    ├→ Create GitHub Issues (per action item)
    ├→ Trigger GitHub Actions (update meeting log)
    ├→ Create Linear tasks (per action item)
    └→ Post Slack summary (#engineering-meetings)

Output

  • Action items automatically created as GitHub Issues and Linear tasks
  • Meeting log updated in repository via GitHub Actions
  • Slack summary posted to team channel
  • Full audit trail from meeting to task completion

Error Handling

ErrorCauseFix
Zapier trigger not firingNote not in the configured folderVerify folder name matches exactly
GitHub issue creation failsPAT expired or insufficient scopeRegenerate PAT with repo scope
Action items not parsedNote format doesn't match regexAdjust regex for your template's action item format
Linear API errorTeam name mismatchUse Linear team ID instead of name
Slack message emptyNote still processingAdd 2-minute delay as first Zap step
Show full SKILL.md (104 more words)Show less

Testing Checklist

  • Schedule a test meeting with explicit action items
  • Verify note lands in the correct Granola folder
  • Confirm Zapier trigger fires (check Zap history)
  • Verify GitHub issues created with correct labels and assignees
  • Confirm meeting log committed to repository
  • Check Slack message formatting in target channel
  • Verify Linear tasks appear in correct team

Examples

Run a fictional action-item fixture through the staging pipeline and record fixture=meeting-actions-v3; parsed=4; quarantined=1; destinations=allowlisted; tests=18/18; retention=none; rollback=pipeline-r7. This demonstrates automation without creating a task from real meeting content.

Resources

Next Steps

Proceed to granola-deploy-integration for native app integration setup.

© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/.curated/granola-ci-integration of jeremylongshore/tons-of-skills-marketplace.

  • SKILL.md
  • references/implementation.md

Open the folder on GitHubat commit cfae287

Compare with similar skills

Granola CI Integration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Granola CI Integration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Granola CI Integration this skilljeremylongshore/tons-of-skills-marketplace2.8k—~1.9kAutomated safety check: PassMIT
Agent Workflow Automationruvnet/ruflo74k2 repos~4kAutomated safety check: PassMIT
GitHub Automationruvnet/ruflo74k1 repos~368Automated safety check: PassMIT
Connect Apps with ComposioComposioHQ/awesome-claude-skills77k3 repos~557Automated safety check: PassNone
Zapier Statuszapier/zapier-mcp430—~1.8kAutomated safety check: PassMIT
Superset Automatesuperset-sh/superset15k—~1.4kAutomated safety check: PassCustom licence

Similar skills

  • Agent skill for workflow-automation - invoke with $agent-workflow-automation

    74k GitHub starsUsed in 2 repos~4k tokens
    Productivity & AutomationAuto-check passed
  • GitHub Automation

    ruvnet/ruflo

    GitHub workflow automation, PR management, issue tracking, and code review coordination.

    74k GitHub starsUsed in 1 repo~368 tokens
    DevelopmentAuto-check passed
  • Connect Apps with Composio

    ComposioHQ/awesome-claude-skills

    Connects an agent to 1000+ external apps through the Composio Tool Router plugin, so it can actually send emails, create issues and post messages instead of only drafting them.

    77k GitHub starsUsed in 3 repos~557 tokens
    Productivity & AutomationAuto-check passed
  • Zapier Status

    zapier/zapier-mcp

    Official

    Check the health of your Zapier MCP setup. An agent skill from zapier/zapier-mcp.

    430 GitHub stars~1.8k tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • Superset Automate

    superset-sh/superset

    Turns a recurring chore into a scheduled or event-triggered Superset agent, drafting its prompt, picking a target and trigger, and reviewing the first run.

    15k GitHub stars~1.4k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Sets up and manages an Aeon agent instance that runs skills on a schedule through GitHub Actions: starting, rescheduling, debugging, editing skills and mining chat history.

    770 GitHub stars~9k tokensUpdated yesterday
    Productivity & AutomationAuto-check: warnings

More from jeremylongshore/tons-of-skills-marketplace

All 3,342 skills in this repo
  • Performing Security Code Review

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.

    2.8k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check: notes
  • Adapting Transfer Learning Models

    jeremylongshore/tons-of-skills-marketplace

    Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Agent Context Loader

    jeremylongshore/tons-of-skills-marketplace

    Execute proactive auto-loading: automatically detects and loads agents.md files.

    2.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Aggregating Performance Metrics

    jeremylongshore/tons-of-skills-marketplace

    Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.

    2.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Analyzing Capacity Planning

    jeremylongshore/tons-of-skills-marketplace

    Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.

    2.8k GitHub stars~947 tokensUpdated today
    Auto-check passed
  • Analyzing Database Indexes

    jeremylongshore/tons-of-skills-marketplace

    Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.

    2.8k GitHub stars~2k tokensUpdated today
    Auto-check passed

Questions about Granola CI Integration

What does Granola CI Integration do?

Build automated pipelines from Granola meeting notes to GitHub Issues, Linear tasks, Slack notifications, and documentation updates using Zapier and GitHub Actions. Granola CI Integration is an agent skill from jeremylongshore/tons-of-skills-marketplace. Build automated pipelines from Granola meeting notes to GitHub Issues, Linear tasks, Slack notifications, and documentation updates using Zapier and GitHub Actions.

When should I use Granola CI Integration?

Granola CI Integration fits situations like: tasks that involve Workflow automation; tasks that involve Meeting notes and agendas; tasks that involve CI/CD.

How do I install Granola CI Integration in Claude Code?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill granola-ci-integration -a claude-code`. Or copy the skill folder (skills/.curated/granola-ci-integration in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/granola-ci-integration in your project. Claude Code loads it when a task matches its description.

How do I install Granola CI Integration in Codex?

Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill granola-ci-integration -a codex`. Or copy the skill folder (skills/.curated/granola-ci-integration in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/granola-ci-integration in your project. Codex loads it when a task matches its description.

Can I use Granola CI Integration in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill granola-ci-integration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/granola-ci-integration, .gemini/skills/granola-ci-integration, .github/skills/granola-ci-integration and .opencode/skills/granola-ci-integration in your project.

What does Granola CI Integration need to run?

SKILL.md names no scripts, command-line tools or credentials: Granola CI Integration is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(gh:*), Bash(curl:*). Compatibility (from SKILL.md): Designed for Claude Code.

Does Granola CI Integration access the network?

SKILL.md names 3 domains. In commands or code: api.github.com; the agent is likely to contact it when it follows the instructions. As links in the text: zapier.com and docs.github.com. This is read from the text; nothing was executed.

Is Granola CI Integration safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Granola CI Integration use?

Granola CI Integration is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Granola CI Integration use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 948 tokens, read only when the agent opens those files.

What are the alternatives to Granola CI Integration?

Skills that share tags, products or a category with Granola CI Integration: Agent Workflow Automation (ruvnet/ruflo, 74k stars), GitHub Automation (ruvnet/ruflo, 74k stars), Connect Apps with Composio (ComposioHQ/awesome-claude-skills, 77k stars) and Zapier Status (zapier/zapier-mcp, 430 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Granola CI Integration?

jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.

Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.