smithery/maneeshanif

filter-skill

Filter tasks by priority, status, tags, due dates, and other criteria. Use when implementing filtering functionality.

Installation

$ npx skills add smithery/maneeshanif --skill filter-skill

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/maneeshanif · top by installs.

npx skills add smithery/maneeshanif

Browse all from smithery/maneeshanif

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsWrite, Read

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,722 B
  • docs SUMMARY.md 137 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Filter Skill

Purpose

Implement comprehensive filtering for task management.

Instructions

Filter by Priority

from typing import List, Optional

def filter_by_priority(self, priority: str) -> List[dict]:
    """Filter tasks by priority level."""
    return self.db.search(self.db.query.priority == priority)

def filter_by_priorities(self, priorities: List[str]) -> List[dict]:
    """Filter tasks by multiple priority levels."""
    return [t for t in self.get_all_tasks() if t.get('priority') in priorities]

def get_urgent_tasks(self) -> List[dict]:
    """Get only urgent and high priority tasks."""
    return self.filter_by_priorities(['urgent', 'high'])

Filter by Status

def filter_by_status(self, status: str) -> List[dict]:
    """Filter tasks by status."""
    return self.db.search(self.db.query.status == status)

def get_pending_tasks(self) -> List[dict]:
    """Get all pending tasks."""
    return self.filter_by_status('pending')

def get_completed_tasks(self) -> List[dict]:
    """Get all completed tasks."""
    return self.filter_by_status('completed')

def get_active_tasks(self) -> List[dict]:
    """Get all non-completed tasks."""
    return self.db.search(self.db.query.status != 'completed')

Filter by Tags

def filter_by_tag(self, tag: str) -> List[dict]:
    """Filter tasks containing a specific tag."""
    tag = tag.lower()
    return self.db.search(
        self.db.query.tags.test(
            lambda tags: tag in [t.lower() for t in tags]
        )
    )

def filter_by_all_tags(self, tags: List[str]) -> List[dict]:
    """Filter tasks containing ALL specified tags."""
    tags = [t.lower() for t in tags]
    return self.db.search(
        self.db.query.tags.test(
            lambda task_tags: all(
                tag in [t.lower() for t in task_tags] 
                for tag in tags
            )
        )
    )

def filter_by_any_tag(self, tags: List[str]) -> List[dict]:
    """Filter tasks containing ANY specified tag."""
    tags = [t.lower() for t in tags]
    return self.db.search(
        self.db.query.tags.test(
            lambda task_tags: any(
                tag in [t.lower() for t in task_tags] 
                for tag in tags
            )
        )
    )

Filter by Due Date

from datetime import datetime, timedelta

def get_overdue_tasks(self) -> List[dict]:
    """Get tasks past their due date."""
    now = datetime.now().isoformat()
    return self.db.search(
        (self.db.query.due_date.exists()) &
        (self.db.query.due_date.test(lambda d: d < now)) &
        (self.db.query.status != 'completed')
    )

def get_due_today(self) -> List[dict]:
    """Get tasks due today."""
    today = datetime.now().date().isoformat()
    tomorrow = (datetime.now().date() + timedelta(days=1)).isoformat()
    return self.db.search(
        (self.db.query.due_date.exists()) &
        (self.db.query.due_date.test(lambda d: today <= d[:10] < tomorrow))
    )

def get_due_this_week(self) -> List[dict]:
    """Get tasks due within the next 7 days."""
    today = datetime.now().date()
    week_end = (today + timedelta(days=7)).isoformat()
    return self.db.search(
        (self.db.query.due_date.exists()) &
        (self.db.query.due_date.test(
            lambda d: today.isoformat() <= d[:10] <= week_end
        ))
    )

def get_tasks_without_due_date(self) -> List[dict]:
    """Get tasks without a due date."""
    return self.db.search(
        ~self.db.query.due_date.exists() | 
        (self.db.query.due_date == None)
    )

Combined Filter Service

class FilterService:
    """Comprehensive filter service with chainable filters."""
    
    def __init__(self, database):
        self.db = database
    
    def filter_tasks(
        self,
        priority: Optional[str] = None,
        priorities: Optional[List[str]] = None,
        status: Optional[str] = None,
        tags: Optional[List[str]] = None,
        tag_mode: str = 'any',  # 'any' or 'all'
        has_due_date: Optional[bool] = None,
        is_overdue: Optional[bool] = None,
        due_before: Optional[str] = None,
        due_after: Optional[str] = None,
    ) -> List[dict]:
        """Apply multiple filters to tasks."""
        
        tasks = self.db.get_all()
        
        # Priority filter
        if priority:
            tasks = [t for t in tasks if t.get('priority') == priority]
        elif priorities:
            tasks = [t for t in tasks if t.get('priority') in priorities]
        
        # Status filter
        if status:
            tasks = [t for t in tasks if t.get('status') == status]
        
        # Tags filter
        if tags:
            tags = [tag.lower() for tag in tags]
            if tag_mode == 'all':
                tasks = [
                    t for t in tasks 
                    if all(tag in [x.lower() for x in t.get('tags', [])] for tag in tags)
                ]
            else:  # 'any'
                tasks = [
                    t for t in tasks 
                    if any(tag in [x.lower() for x in t.get('tags', [])] for tag in tags)
                ]
        
        # Due date presence filter
        if has_due_date is not None:
            if has_due_date:
                tasks = [t for t in tasks if t.get('due_date')]
            else:
                tasks = [t for t in tasks if not t.get('due_date')]
        
        # Overdue filter
        if is_overdue is not None:
            now = datetime.now().isoformat()
            if is_overdue:
                tasks = [
                    t for t in tasks 
                    if t.get('due_date') and t['due_date'] < now and t.get('status') != 'completed'
                ]
            else:
                tasks = [
                    t for t in tasks 
                    if not t.get('due_date') or t['due_date'] >= now
                ]
        
        # Date range filters
        if due_before:
            tasks = [t for t in tasks if t.get('due_date') and t['due_date'] < due_before]
        if due_after:
            tasks = [t for t in tasks if t.get('due_date') and t['due_date'] > due_after]
        
        return tasks

Best Practices

  • Handle None/empty filter values gracefully
  • Support both single and multiple value filters
  • Provide sensible defaults for filter modes
  • Combine filters efficiently (filter in memory when possible)
  • Cache common filter results if performance is needed
  • Normalize tags and other text-based filters