npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@bernierllc/slash-commands-tasks

v1.0.2

Published

Task management slash commands for in-app chat systems

Readme

@bernierllc/slash-commands-tasks

Task management slash commands for in-app chat systems. Provides comprehensive task creation, tracking, and collaboration features through chat interfaces.

Installation

npm install @bernierllc/slash-commands-tasks

Features

  • Create Tasks - Quick task creation with priorities and assignments
  • List & Filter - View tasks by status, assignee, priority
  • Update Tasks - Change status, priority, assignments
  • Statistics - Task completion metrics and overdue alerts
  • Multi-platform - Works in in-app chat, Slack, Discord, Teams
  • NeverHub Integration - Auto-discovery and routing
  • Real-time - Instant updates across platforms

Quick Start

Standalone Usage

import { TasksCommandPackage, InMemoryTaskStorage } from '@bernierllc/slash-commands-tasks';
import { createCommandContext } from '@bernierllc/slash-commands-core';

// Initialize the package
const storage = new InMemoryTaskStorage();
const tasks = new TasksCommandPackage(storage);
await tasks.initialize();

// Execute a command
const context = createCommandContext('/task "Fix login bug"', 'user123', 'in-app');
const response = await tasks.execute(context);

console.log(response.message); // "✅ Task created: Fix login bug 🟢"

With NeverHub Auto-Discovery

When both @bernierllc/slash-commands-tasks and @bernierllc/in-app-chat are running, commands automatically register via NeverHub service discovery:

  1. Tasks package registers with NeverHub
  2. In-app-chat discovers task commands
  3. Users can execute /task commands across platforms
  4. Responses are formatted for each platform

Available Commands

/task <title> - Create Task

Create a new task with optional parameters:

# Basic task
/task "Fix login bug"

# With priority and assignment
/task "Review PR #123" --priority high --assignee @alice

# With due date (if supported)
/task "Deploy to staging" --due tomorrow

Aliases: /tasks, /todo

/task-list [filters] - List Tasks

View tasks with optional filtering:

# All tasks
/task-list

# Filter by status
/task-list --status todo
/task-list --status in-progress

# Filter by assignee
/task-list --assignee @me
/task-list --assignee @alice

# Filter by priority
/task-list --priority high
/task-list --priority urgent

Aliases: /tasks-list, /list-tasks

/task-complete <task-id> - Complete Task

Mark a task as completed:

/task-complete task_1
/task-complete task_42

Aliases: /complete-task, /done

/task-update <task-id> [options] - Update Task

Update task properties:

# Change status
/task-update task_1 --status in-progress

# Change priority and assignee
/task-update task_2 --priority urgent --assignee @bob

# Move to review
/task-update task_3 --status review

/task-stats [user] - Task Statistics

View task statistics:

# Your stats
/task-stats

# Another user's stats  
/task-stats @alice

Task Properties

Status Options

  • todo - Not started
  • in-progress - Being worked on
  • review - Awaiting review
  • done - Completed
  • cancelled - Cancelled

Priority Levels

  • 🔴 urgent - Needs immediate attention
  • 🟡 high - Important, should be done soon
  • 🟢 medium - Normal priority (default)
  • ⚪ low - Nice to have, when time permits

Platform Integration

In-App Chat

  • Rich markdown formatting
  • Interactive buttons (planned)
  • Real-time updates

Slack

  • Native Slack formatting
  • Mentions and channel integration
  • Slack-specific shortcuts

Discord

  • Discord markdown support
  • Server and channel context
  • Emoji reactions (planned)

Microsoft Teams

  • Teams formatting limitations handled
  • Adaptive cards (planned)
  • Teams-specific features

Custom Storage

Replace the default in-memory storage with your own implementation:

import { TaskStorage, Task, TaskStatus } from '@bernierllc/slash-commands-tasks';

class DatabaseTaskStorage implements TaskStorage {
  async create(taskData: Omit<Task, 'id' | 'createdAt' | 'updatedAt'>): Promise<Task> {
    // Your database logic
  }
  
  async update(id: string, updates: UpdateTaskOptions): Promise<Task | null> {
    // Your update logic
  }
  
  // ... implement other methods
}

const customStorage = new DatabaseTaskStorage();
const tasks = new TasksCommandPackage(customStorage);

Response Examples

Creating a Task

✅ Task created: **Fix login bug** 🟢 (assigned to @alice)
ID: `task_123`

Listing Tasks

📋 **Your Tasks**

📝 `task_1` **Fix login bug** 🟢 (@alice)
⚡ `task_2` **Review PR #123** 🟡 (@bob) 
👀 `task_3` **Update docs** ⚪

Task Statistics

📊 **Task Statistics**

**Total Tasks:** 15

**By Status:**
• To Do: 5
• In Progress: 3
• Review: 2
• Done: 4
• Cancelled: 1

**By Priority:**
• 🔴 Urgent: 1
• 🟡 High: 3
• 🟢 Medium: 8
• ⚪ Low: 3

**Alerts:**
• ⚠️ Overdue: 2
• 🕐 Due Soon: 1

Configuration

In in-app-chat.config.js

module.exports = {
  slashCommands: {
    '/task': {
      enabled: true,
      package: '@bernierllc/slash-commands-tasks',
      description: 'Create and manage tasks',
      requiresAuth: true,
      platforms: ['in-app', 'slack', 'discord'],
      aliases: ['/tasks', '/todo']
    }
  }
};

Environment Variables

# Optional: Custom task storage configuration
TASKS_STORAGE_TYPE=database
TASKS_STORAGE_URL=postgresql://...

# Optional: Task limits
TASKS_MAX_PER_USER=100
TASKS_MAX_TITLE_LENGTH=200

Integration with Other Packages

With Project Management

// Tasks can reference projects, sprints, etc.
/task "Implement user auth" --project webapp --sprint 2024-q1

With Time Tracking

// Integration with time tracking packages
/task "Fix bug" --estimate 2h

With Calendar

// Due dates and scheduling
/task "Team meeting prep" --due "2024-01-15 14:00"

Testing

npm test              # Run all tests
npm run test:watch    # Watch mode
npm run test:coverage # Coverage report

Example test:

import { TasksCommandPackage, InMemoryTaskStorage } from '@bernierllc/slash-commands-tasks';
import { createCommandContext } from '@bernierllc/slash-commands-core';

describe('Tasks Commands', () => {
  let tasks: TasksCommandPackage;
  
  beforeEach(async () => {
    const storage = new InMemoryTaskStorage();
    tasks = new TasksCommandPackage(storage);
    await tasks.initialize();
  });
  
  it('should create a task', async () => {
    const context = createCommandContext('/task "Test task"', 'user1', 'in-app');
    const response = await tasks.execute(context);
    
    expect(response.success).toBe(true);
    expect(response.message).toContain('Task created');
  });
});

API Reference

TasksCommandPackage

Main command package class.

Methods

  • initialize(): Promise<void> - Initialize the package and NeverHub integration
  • execute(context: SlashCommandContext): Promise<SlashCommandResponse> - Execute a command
  • getHelp(command?: string): string - Get help information
  • cleanup(): Promise<void> - Clean up resources

Task Interface

interface Task {
  id: string;
  title: string;
  description?: string;
  status: TaskStatus;
  priority: TaskPriority;
  assignee?: string;
  createdBy: string;
  createdAt: Date;
  updatedAt: Date;
  dueDate?: Date;
  completedAt?: Date;
  tags?: string[];
  metadata?: Record<string, any>;
}

Storage Interface

interface TaskStorage {
  create(task: Omit<Task, 'id' | 'createdAt' | 'updatedAt'>): Promise<Task>;
  update(id: string, updates: UpdateTaskOptions): Promise<Task | null>;
  delete(id: string): Promise<boolean>;
  get(id: string): Promise<Task | null>;
  list(options?: ListTasksOptions): Promise<Task[]>;
  getStats(userId?: string): Promise<TaskStats>;
}

See Also

License

Copyright (c) 2025 Bernier LLC. All rights reserved.