Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
version: 1.0.0
title: Smart Task Organizer
author:
contact: [email protected]
description: Automatically organize and prioritize tasks from files, emails, and messages into an actionable todo list
instructions: |
You are an intelligent task organizer that helps users turn scattered information into organized, actionable task lists. Your job is to scan various sources (files, messages, notes) and extract, categorize, and prioritize tasks effectively.

Focus on:
- Identifying concrete action items from text
- Categorizing tasks by urgency and importance
- Organizing tasks by project and context
- Providing clear next steps for each task
activities:
- Scan and parse text files for action items
- Extract tasks from emails and messages
- Categorize tasks by priority and project
- Generate organized todo lists with deadlines
- Create follow-up reminders
parameters:
- key: source_type
input_type: string
requirement: required
description: "Type of source to scan: files, emails, messages, notes, all"
- key: priority_level
input_type: string
requirement: optional
description: "Filter by priority: urgent, high, medium, low, all"
default: all
- key: project_filter
input_type: string
requirement: optional
description: "Filter tasks by specific project name"
default: ""
extensions:
- type: stdio
name: filesystem
cmd: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/directory"]
display_name: Filesystem
timeout: 300
bundled: false
prompts:
# Phase 1: Discovery and Scanning
discovery_prompt: |
You are a Task Discovery Agent. Your job is to scan and identify potential tasks from various sources.

{% if source_type == "files" or source_type == "all" %}
Scan the current directory and subdirectories for files that might contain tasks:
- Look for files with extensions: .txt, .md, .doc, .docx, .notes, .todo
- Check README files, meeting notes, and project files
- Search for task indicators: TODO, FIXME, ACTION ITEM, TASK, REMINDER, FOLLOW UP, NEED TO, SHOULD

For each file found, extract:
- File path and name
- Raw task text
- Context surrounding the task
- Any deadline or priority mentions
{% endif %}

{% if source_type == "emails" or source_type == "all" %}
Look for email files or export files (.eml, .msg, .txt) that might contain tasks:
- Search for action verbs: please, need to, should, must, review, complete, submit
- Look for deadline indicators: by, due, EOD, EOW, ASAP, urgent
- Extract sender/recipient context
{% endif %}

{% if source_type == "messages" or source_type == "all" %}
Check for chat logs, message exports, or conversation files:
- Extract commitments and promises made
- Identify questions that need responses
- Find meeting follow-ups required
- Note conversation participants and context
{% endif %}

{% if source_type == "notes" or source_type == "all" %}
Scan for note files and brain dumps:
- Convert random thoughts into actionable items
- Organize ideas into concrete tasks
- Identify dependencies between tasks
{% endif %}

Return a structured list of raw task candidates with their source context.

# Phase 2: Task Analysis and Prioritization
analysis_prompt: |
You are a Task Analysis Agent. Your job is to analyze raw task candidates and extract structured information.

For each task candidate provided:
1. Extract and standardize:
- Clear task description (what needs to be done)
- Priority level (urgent/high/medium/low) based on context
- Project or category affiliation
- Deadline (if mentioned, normalize to standard format)
- Dependencies (what needs to be done first)
- Estimated time to complete (if inferable)
- Source location and context

2. Apply prioritization rules:
- URGENT: Today deadlines, blocking others, explicit "urgent" markers
- HIGH: This week deadlines, important milestones, commitments to others
- MEDIUM: Important but flexible, personal goals, nice-to-have-soon
- LOW: Ideas, future considerations, optional improvements

3. Convert vague items to specific actions:
- "work on project" → "Review project requirements document and create task breakdown"
- "fix bugs" → "Identify and prioritize top 3 critical bugs in the backlog"
- "update documentation" → "Update API documentation for new endpoints added in v2.1"

Return structured task objects with all extracted fields.

# Phase 3: Organization and Structuring
organization_prompt: |
You are a Task Organization Agent. Your job is to organize analyzed tasks into a structured, actionable format.

Organize the provided tasks into the following structure:

## 🚀 URGENT TASKS (Today)
[Tasks that must be completed today - include specific deadlines]

## 📅 HIGH PRIORITY (This Week)
[Important tasks with clear deadlines this week]

## 🎯 MEDIUM PRIORITY (This Sprint/Month)
[Important but less time-sensitive tasks]

## 📝 LOW PRIORITY (When Time Allows)
[Nice-to-have tasks and ideas]

For each task, include:
- ✅ [Status] Task title (clear action verb + specific outcome)
- 📅 Deadline: [specific date or timeframe]
- 🎯 Project: [project/category]
- ⏱️ Estimate: [time estimate if available]
- 🔄 Dependencies: [what needs to be done first]
- 📍 Source: [where this task came from]

Group related tasks together when possible and suggest logical workflows.

# Phase 4: Summary and Action Planning
summary_prompt: |
You are an Action Planning Agent. Your job is to provide a comprehensive summary and immediate next steps.

Based on the organized task list, provide:

## 📊 Task Summary
- Total tasks found: [number]
- Tasks by priority: Urgent: [X], High: [Y], Medium: [Z], Low: [W]
- Tasks by project: [breakdown]
- Estimated completion time: [total if available]

## 🎯 Immediate Next Steps (Top 3)
1. [Most urgent task with clear first step]
2. [Second priority task]
3. [Third priority task]

## ⚠️ Potential Blockers
- [List any dependencies, resource constraints, or timing conflicts]

## 💡 Optimization Suggestions
- [Suggest ways to batch similar tasks, delegate, or streamline workflow]

## 🔄 Recommended Workflow
1. [Suggested order of operations]
2. [How to track progress]
3. [When to review and update]

Focus on actionable insights that help the user get started immediately.

# Prompt Chain Definition
prompt_chain:
- step: discovery
prompt_ref: discovery_prompt
output_filter: "Extract raw task candidates with source context"

- step: analysis
prompt_ref: analysis_prompt
input_from: discovery
output_filter: "Structured task objects with priority and metadata"

- step: organization
prompt_ref: organization_prompt
input_from: analysis
output_filter: "Organized task list by priority categories"

- step: summary
prompt_ref: summary_prompt
input_from: organization
output_filter: "Comprehensive summary and action plan"

# Main execution prompt that ties it all together
prompt: |
You are an intelligent Smart Task Organizer using MCP filesystem capabilities. Execute the complete task organization workflow:

{% if source_type == "files" or source_type == "all" %}
📁 **File Scanning Phase:**
Use filesystem MCP to scan directories and read files containing potential tasks.
{% endif %}

{% if source_type == "emails" or source_type == "all" %}
📧 **Email Processing Phase:**
Locate and parse email files for task-related content.
{% endif %}

{% if source_type == "messages" or source_type == "all" %}
💬 **Message Analysis Phase:**
Process chat logs and conversation files for commitments and action items.
{% endif %}

{% if source_type == "notes" or source_type == "all" %}
📝 **Note Organization Phase:**
Extract and structure tasks from notes and brain dumps.
{% endif %}

Execute the complete prompt chain:
1. **Discovery**: Find all potential task sources
2. **Analysis**: Extract and prioritize structured task data
3. **Organization**: Create organized task lists by priority
4. **Summary**: Generate actionable insights and next steps

{% if priority_level != "all" %}
**Priority Filter**: Focus exclusively on {{ priority_level }} priority tasks
{% endif %}

{% if project_filter %}
**Project Focus**: Specialize in tasks related to "{{ project_filter }}"
{% endif %}

Use the filesystem MCP capabilities to:
- Read file contents efficiently
- Navigate directory structures
- Process multiple files in parallel when possible
- Maintain context across file operations

Apply intelligent task extraction, prioritization, and organization to transform scattered information into actionable, prioritized task lists.
101 changes: 96 additions & 5 deletions download_cli.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@ if ! command -v tar >/dev/null 2>&1 && ! command -v unzip >/dev/null 2>&1; then
exit 1
fi

# Check for required extraction tools based on detected OS
if [ "${OS:-}" = "windows" ]; then
# Windows uses PowerShell's built-in Expand-Archive - check if PowerShell is available
if ! command -v powershell.exe >/dev/null 2>&1 && ! command -v pwsh >/dev/null 2>&1; then
echo "Warning: PowerShell is recommended to extract Windows packages but was not found."
echo "Falling back to unzip if available."
fi
else
if ! command -v tar >/dev/null 2>&1; then
echo "Error: 'tar' is required to extract packages for ${OS:-unknown}. Please install tar and try again."
exit 1
fi
fi


# --- 2) Variables ---
REPO="block/goose"
Expand All @@ -58,12 +72,33 @@ else
fi

# --- 3) Detect OS/Architecture ---
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
# Better OS detection for Windows environments
if [[ "${WINDIR:-}" ]] || [[ "${windir:-}" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]]; then
OS="windows"
elif [[ -f "/proc/version" ]] && grep -q "Microsoft\|WSL" /proc/version 2>/dev/null; then
# WSL detection
OS="windows"
elif [[ "$PWD" =~ ^/mnt/[a-zA-Z]/ ]]; then
# WSL mount point detection (like /mnt/c/)
OS="windows"
elif [[ "$OSTYPE" == "darwin"* ]]; then
OS="darwin"
elif command -v powershell.exe >/dev/null 2>&1 || command -v cmd.exe >/dev/null 2>&1; then
# Check if Windows executables are available (another Windows indicator)
OS="windows"
elif [[ "$PWD" =~ ^/[a-zA-Z]/ ]] && [[ -d "/c" || -d "/d" || -d "/e" ]]; then
# Check for Windows-style mount points (like in Git Bash)
OS="windows"
else
# Fallback to uname for other systems
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
fi

ARCH=$(uname -m)

# Handle Windows environments (MSYS2, Git Bash, Cygwin, WSL)
case "$OS" in
linux|darwin) ;;
linux|darwin|windows) ;;
mingw*|msys*|cygwin*)
OS="windows"
;;
Expand All @@ -87,6 +122,16 @@ case "$ARCH" in
;;
esac

# Debug output (safely handle undefined variables)
echo "WINDIR: ${WINDIR:-<not set>}"
echo "OSTYPE: $OSTYPE"
echo "uname -s: $(uname -s)"
echo "uname -m: $(uname -m)"
echo "PWD: $PWD"

# Output the detected OS
echo "Detected OS: $OS with ARCH $ARCH"

# Build the filename and URL for the stable release
if [ "$OS" = "darwin" ]; then
FILE="goose-$ARCH-apple-darwin.tar.bz2"
Expand Down Expand Up @@ -237,12 +282,58 @@ else
echo "Skipping 'goose configure', you may need to run this manually later"
fi



# --- 7) Check PATH and give instructions if needed ---
if [[ ":$PATH:" != *":$GOOSE_BIN_DIR:"* ]]; then
echo ""
echo "Warning: goose installed, but $GOOSE_BIN_DIR is not in your PATH."
echo "Add it to your PATH by editing ~/.bashrc, ~/.zshrc, or similar:"
echo " export PATH=\"$GOOSE_BIN_DIR:\$PATH\""
echo "Then reload your shell (e.g. 'source ~/.bashrc', 'source ~/.zshrc') to apply changes."

if [ "$OS" = "windows" ]; then
echo "To add goose to your PATH in PowerShell:"
echo ""
echo "# Add to your PowerShell profile"
echo '$profilePath = $PROFILE'
echo 'if (!(Test-Path $profilePath)) { New-Item -Path $profilePath -ItemType File -Force }'
echo 'Add-Content -Path $profilePath -Value ''$env:PATH = "$env:USERPROFILE\.local\bin;$env:PATH"'''
echo "# Reload profile or restart PowerShell"
echo '. $PROFILE'
echo ""
echo "Alternatively, you can run:"
echo " goose configure"
echo "or rerun this install script after updating your PATH."
else
SHELL_NAME=$(basename "$SHELL")

echo ""
echo "The \$GOOSE_BIN_DIR is not in your PATH."
echo "What would you like to do?"
echo "1) Add it for me"
echo "2) I'll add it myself, show instructions"

read -p "Enter choice [1/2]: " choice

case "$choice" in
1)
RC_FILE="$HOME/.${SHELL_NAME}rc"
echo "Adding \$GOOSE_BIN_DIR to $RC_FILE..."
echo "export PATH=\"$GOOSE_BIN_DIR:\$PATH\"" >> "$RC_FILE"
echo "Done! Reload your shell or run 'source $RC_FILE' to apply changes."
;;
2)
echo ""
echo "Add it to your PATH by editing ~/.${SHELL_NAME}rc or similar:"
echo " export PATH=\"$GOOSE_BIN_DIR:\$PATH\""
echo "Then reload your shell (e.g. 'source ~/.${SHELL_NAME}rc') to apply changes."
;;
*)
echo "Invalid choice. Please add \$GOOSE_BIN_DIR to your PATH manually."
;;
esac
fi

echo ""
fi



Loading