Skip to content

jimallen/TasksAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

78 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Obsidian Meeting Tasks Plugin

Automatically extract actionable tasks from Gmail meeting transcripts using Claude AI and create organized meeting notes in Obsidian.

Version Obsidian License

Requirements: Anthropic Claude API key + Google OAuth credentials (free tiers available)

🌟 Features

  • 🧩 AI Task Clustering - Automatically groups similar/related tasks with persistent storage
  • ⚑ Dynamic Label Processing - Add unlimited email types via configuration
  • πŸ€– AI Task Extraction - Claude intelligently extracts tasks, assignees, and priorities
  • πŸ“Š Visual Dashboard - Interactive task management with cluster view and filtering
  • πŸ“ Smart Organization - Automatic folder structure (TaskAgent/Label/YYYY/MM/)
  • ♻️ Email Reprocessing - Update notes with improved extraction logic

How Label Processing Works

The plugin monitors Gmail labels you configure and processes emails differently based on type:

  • transcript label β†’ Meeting transcripts with conversation-style extraction
  • action label β†’ Action item emails with task-focused extraction
  • Add your own labels β†’ Configure any Gmail label to create custom workflows

Example: Apply the action label to an email in Gmail, and the plugin will:

  1. Detect the label during next sync
  2. Extract action items using specialized prompts
  3. Create a note in TaskAgent/Action/YYYY/MM/
  4. Add tasks to your dashboard

No code changes needed - just configure labels in plugin settings!

πŸ“š Documentation

πŸ“‹ Example Output

Meeting Note with Extracted Tasks

---
title: Q1 Planning Meeting - Product Team
emailId: 19960e976514fa1d
label: transcript
gmailUrl: https://mail.google.com/mail/u/0/#inbox/19960e976514fa1d
---

# Q1 Planning Meeting - Product Team

**Email:** [View in Gmail](https://mail.google.com/...)
**Date:** 2025-01-15

## Action Items

### πŸ”΄ High Priority
- [ ] Review PRD for new dashboard features [[@Sarah]] πŸ“… 2025-01-20 πŸ”΄ ⚠️ 92% #product
  - Context: Need feedback before dev kickoff next week
  > "Sarah, can you review the PRD by Friday?"

- [ ] Update API rate limits in production [[@Dev Team]] πŸ“… 2025-01-18 πŸ”΄ 🧩 cluster:api-work ⚠️ 88% #backend
  - Context: Current limits causing issues for enterprise customers

### 🟑 Medium Priority
- [ ] Document new clustering algorithm [[@Jim]] πŸ“… 2025-01-25 🟑 🧩 cluster:docs ⚠️ 85% #documentation

- [ ] Schedule user interview sessions [[@UX Team]] πŸ“… 2025-01-22 🟑 ⚠️ 78% #research
  - Context: Need 5 participants for dashboard usability study

## Next Steps
- Follow up on API performance metrics
- Review clustering feedback from beta users

Dashboard - Clustered View

When you open the dashboard, AI automatically groups related tasks:

πŸ“¦ Cluster: API Performance & Scalability

  • Update API rate limits in production [[@Dev Team]]
  • Monitor API response times [[@DevOps]]
  • Implement caching layer [[@Backend Team]]

πŸ’‘ Claude suggests: These tasks are related to API infrastructure - consider combining into a single epic for coordinated deployment.

πŸ“¦ Cluster: Q1 Documentation

  • Document new clustering algorithm [[@Jim]]
  • Update README with v3.2 features [[@Jim]]
  • Create video tutorial [[@Marketing]]

πŸ“¦ Cluster: User Research Initiative

  • Schedule user interview sessions [[@UX Team]]
  • Prepare interview scripts [[@Sarah]]
  • Recruit beta testers [[@Product]]

Key Features Demonstrated

βœ… Smart Task Extraction - Pulls assignees, dates, priorities from natural language βœ… Cluster IDs - Tasks tagged with 🧩 cluster:id for persistent grouping βœ… Confidence Scores - ⚠️ 92% shows AI extraction confidence βœ… Context Preservation - Keeps quotes and additional details βœ… Gmail Integration - Direct links back to source emails

πŸš€ Quick Start

Installation

Option 1: One-Line Install (Easiest)

curl -fsSL https://raw.githubusercontent.com/jimallen/TasksAgent/master/install.sh | bash

Downloads and installs the plugin automatically. Works on macOS, Linux, and Windows (Git Bash).

Safe for updates: Only updates plugin code files. Your settings, API keys, and OAuth tokens are never overwritten.

Option 2: Clone and Deploy (For Developers)

git clone https://github.com/jimallen/TasksAgent.git
cd TasksAgent
npm install
npm run deploy

The interactive script will find your Obsidian vaults and install the plugin automatically.

Option 3: Manual Installation

  1. Download main.js, manifest.json, and styles.css from latest release
  2. Create folder: <vault>/.obsidian/plugins/meeting-tasks/
  3. Copy the files to that folder
  4. Enable plugin in Obsidian settings

Configuration

⚠️ Required API Keys:

  • Anthropic Claude API - For AI-powered task extraction
  • Google OAuth credentials - For Gmail integration
  1. Claude AI Setup (Required)

    • Get API key from Anthropic Console β†’ API Keys
    • Add to plugin settings: Settings β†’ Community Plugins β†’ Meeting Tasks
    • Choose model: claude-sonnet-4 (recommended) or claude-3-5-haiku (faster/cheaper)
    • Free tier available, pay-as-you-go pricing
  2. Google OAuth Setup (Required)

    • Follow the Google OAuth Setup Guide for detailed instructions
    • Quick summary: Create project β†’ Enable Gmail API β†’ Configure OAuth β†’ Get credentials
    • Copy Client ID and Secret to plugin settings
  3. Plugin Settings

    • Set lookback time (e.g., "3d" for 3 days)
    • Configure Gmail labels (e.g., "transcript, action")
    • Configure label processors (maps labels to folders and extraction types)
    • Set base notes folder (default: "TaskAgent")

Adding Custom Labels:

Want to process different types of emails? Just add more labels!

  1. In Gmail: Create a label (e.g., "standup", "reports")
  2. Apply that label to emails you want processed
  3. In plugin settings: Add the label to your configuration
  4. Configure the folder name and extraction type (meeting or actionitem)

Example configuration:

Labels: transcript, action, standup
Processors:
- transcript β†’ Transcript folder (meeting extraction)
- action β†’ Action folder (action item extraction)
- standup β†’ Standup folder (meeting extraction)

Configuration Reference:

  • See data.json.example for complete configuration structure
  • All settings are managed through Obsidian's plugin settings UI
  • The plugin creates data.json automatically with your credentials

πŸ’‘ Usage

Process Emails

  • Command Palette: Cmd/Ctrl + P β†’ "πŸ“§ Process meeting emails"
  • Keyboard Shortcut: Cmd/Ctrl + Shift + M
  • Ribbon Icon: Click the mail icon
  • Reprocess: Click "πŸ”„ Reprocess this email" link at bottom of any meeting note

Task Dashboard

  • Instant view toggle: Switch between task list and clustered view (no API calls)
  • Multi-filter support: Select multiple filters simultaneously (High + Past Due, etc.)
  • Simplified filters: πŸ”΄ High, 🟑 Medium, ⏰ Past Due, πŸ“… This Week, πŸ‘₯ Delegated, βœ… Done
  • Filter persistence: Active filters maintained when switching views
  • My Tasks only: Always shows only your assigned tasks (except delegated view)
  • Auto-clustering: Tasks are automatically clustered during email import
  • Cluster view: See grouped related tasks with AI-powered suggestions
  • Click to complete tasks
  • Edit task details inline

πŸ“– See the complete Dashboard User Guide for detailed instructions, tips, and troubleshooting.

πŸ”§ Development

npm install        # Install dependencies
npm run dev        # Development build
npm run build      # Production build
npm run deploy     # Deploy to vault

See Build & Deployment Guide for details.

πŸ› οΈ Development Methodology

This repository showcases not just the plugin code, but also the AI-assisted development workflow used to build it.

BMAD Framework (bmad/)

The BMAD (Better Method for Agile Development) framework orchestrates AI agents through structured workflows for the entire software development lifecycle. This directory contains:

  • Specialized AI agents (PM, Architect, Developer, QA, etc.)
  • Structured workflows for analysis, planning, and implementation
  • Development methodology with scale-adaptive documentation

Note: BMAD is development-time tooling only and is NOT deployed with the plugin.

Claude Code Configuration (.claude/)

Custom Claude Code configurations including:

  • Custom slash commands for rapid development
  • Agent configurations for specialized tasks
  • BMAD framework integration commands

See .claude/README.md for details.

Why Include These?

Including development tooling demonstrates:

  • Systematic approach to software development
  • Professional AI-assisted workflows
  • Documentation-first thinking
  • Modern development practices

✨ What's New in v3.1+

AI-Powered Task Clustering

  • Automatic clustering: Runs in parallel during email import
  • Smart grouping: Identifies duplicates, similar tasks, and related projects using source email context
  • Persistent storage: Cluster IDs saved in task lines (🧩 cluster:abc123)
  • Auto-restore: Dashboard automatically rebuilds clusters from saved IDs (shows normal view by default)
  • Instant toggle: Switch between views without re-clustering
  • JSON auto-repair: Automatically fixes truncated Claude responses
  • Combination suggestions: Claude recommends merging tasks with confidence scores
  • Editable cluster titles: Customize cluster names with modal editor (persisted separately)
  • Smart vs Force re-clustering: Choose between incremental or complete re-analysis via dropdown
  • Progress notifications: Real-time status updates during clustering process

Enhanced Dashboard UI

  • Multi-filter support: Select multiple filters (OR logic) - e.g., High + Past Due
  • Simplified filters: 6 essential filters with emojis for clarity
  • Filter persistence: Active filters maintained across view toggles
  • My Tasks only: Removed toggle - always shows your tasks (except delegated view)
  • Instant view switching: No API calls when toggling between list and cluster views
  • Unified task layout: Both clustered and normal views use same card-based layout grouped by assignee
  • Split button UI: Single re-cluster button with dropdown for smart/force modes

v3.0 Features

  • Dynamic label processor architecture - add email types via configuration
  • Dual extraction modes for meetings vs action items
  • Single base folder with label subfolders
  • Vault-based caching scales to 100K+ emails

πŸ› Troubleshooting

  • Authentication fails: Verify OAuth credentials, ensure Gmail API is enabled
  • Tasks not extracting: Check Anthropic API key and usage limits
  • Changes not showing: Reload Obsidian (Cmd/Ctrl + R)

πŸ§ͺ Testing

Unit Tests

Framework: Vitest (fast, modern TypeScript testing)

Run tests:

npm test              # Run all tests once
npm run test:watch    # Watch mode (re-runs on changes)
npm run test:ui       # Visual UI in browser
npm run test:coverage # Generate coverage report

Current Coverage:

  • 133 tests across 4 test suites
  • ProcessorRegistry: 100% coverage (24 tests)
  • ClaudeExtractor: 70.16% coverage (47 tests)
  • TaskClusterer: 85.83% coverage (28 tests)
  • LabelProcessor: 54.6% coverage (34 tests)

Test Structure:

tests/
β”œβ”€β”€ unit/                    # Unit tests for pure logic
β”‚   β”œβ”€β”€ processorRegistry.test.ts
β”‚   β”œβ”€β”€ claudeExtractor.test.ts
β”‚   β”œβ”€β”€ taskClusterer.test.ts
β”‚   └── labelProcessor.test.ts
β”œβ”€β”€ integration/             # Integration tests (planned)
β”œβ”€β”€ mocks/                  # Mock data and fixtures
β”‚   β”œβ”€β”€ gmailMessage.mock.ts
β”‚   └── claudeResponse.mock.ts
└── __mocks__/              # Module mocks
    └── obsidian.ts         # Mock Obsidian API

Manual Testing

For features requiring Obsidian integration:

  1. Build: npm run build - Verify TypeScript compilation
  2. Deploy: npm run deploy - Install to test vault
  3. OAuth Flow: Test Gmail authentication and token refresh
  4. Email Processing: Process emails and verify task extraction
  5. Dashboard: Test filters, clustering, and inline editing

Console Verification: Monitor DevTools (Ctrl+Shift+I) for errors

Testing Documentation

Roadmap

Phase 1 (Complete):

  • βœ… Vitest framework configured
  • βœ… ProcessorRegistry unit tests
  • βœ… Mock Obsidian API infrastructure

Phase 2 (Complete):

  • βœ… ClaudeExtractor tests (prompt building, response parsing, fallback logic)
  • βœ… TaskClusterer tests (clustering logic, JSON auto-repair)
  • βœ… LabelProcessor tests (note formatting, task metadata)
  • βœ… Mock data factories (gmailMessage, claudeResponse)
  • βœ… 133 tests covering all testable business logic

Phase 3 (Future):

  • Integration tests for Gmail/Claude API
  • E2E tests for dashboard interactions
  • CI/CD pipeline with automated quality gates

Note on Coverage: Overall project coverage is 10.91% because most of the codebase consists of integration code (Gmail API, OAuth, Obsidian UI) that was intentionally excluded from unit testing. The testable business logic components have high coverage (54-100%), which was the goal of Phase 2.

πŸ“„ License

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •