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

axis-tasks

v1.1.0

Published

Git-based task management with time tracking for AI-powered dev workflows. Markdown-native, works with Claude Code, Cursor, and any AI coding agent.

Readme

Axis Tasks

Git-based task management with time tracking for AI-powered dev workflows.

Markdown files. Shell scripts. Zero dependencies beyond bash and python3.

Built for developers who work with AI coding agents (Claude Code, Cursor, Windsurf) and want task + time tracking that lives in their repo, not in a separate app.

Why Axis Tasks?

  • Your AI agent is the interface — no manual CLI commands. Send a document, meeting notes, or a Slack message to your agent, and it extracts tasks automatically.
  • Time tracking from AI sessions — integrates with SpecStory to measure actual active work time, excluding AFK gaps. No manual start/stop needed.
  • Git-native — tasks are markdown files with YAML frontmatter. Version controlled, diffable, searchable. Works with any git workflow.
  • Billable/internal split — built-in client and project tracking with per-client reports and CSV export for invoicing.
  • n8n automations — webhook endpoints to create tasks from ClickUp, Linear, meeting transcripts, or any tool that sends HTTP.
  • Works with Axis CRM — optional integration validates clients against your CRM. Works standalone without it.

Install

npx axis-tasks init

This creates a tasks/ directory with everything you need.

cd tasks
./scripts/setup.sh    # verify environment

Requirements

| Requirement | Version | |---|---| | bash | 3.2+ (macOS default works) | | python3 | 3.8+ | | git | any |

Optional

| Integration | What it does | |---|---| | SpecStory | Precise AFK-aware time tracking from AI session logs | | Axis CRM | Client/project validation | | Obsidian + Dataview | Live dashboards (today, weekly, billable) | | n8n | Webhook automations (meeting > tasks, external tools > tasks) |

How It Works

1. Create tasks

Your AI agent creates tasks from whatever you send it — documents, meeting notes, chat messages:

./scripts/new-task.sh "Fix checkout timeout" \
  --client acme \
  --priority high \
  --due 2026-04-18 \
  --tags "bugfix,backend" \
  --force

Or via n8n webhook from external tools:

curl -X POST https://your-n8n.example.com/webhook/axis-tasks-create \
  -H "Content-Type: application/json" \
  -d '{"title": "Fix checkout timeout", "client": "acme", "priority": "high"}'

2. Track time

Session flow (recommended):

./scripts/start-timer.sh fix-checkout       # start working
# ... work ...
./scripts/end-session.sh --desc "Fixed race condition in payment callback"
# → auto-calculates time (SpecStory or wall clock)
# → logs entry to daily timesheet + task file
# → stops timer

With SpecStory (optional, recommended): Install the SpecStory VS Code/Cursor extension. It logs AI conversations with timestamps. end-session.sh uses these to calculate actual active time — AFK gaps (5+ min) are excluded automatically.

Without SpecStory: Everything works — timer counts elapsed time from start to stop.

Manual:

./scripts/log-time.sh 2.5 --client acme --task fix-checkout --desc "debugging"

3. Complete and report

./scripts/complete-task.sh fix-checkout     # archive to done/
./scripts/report.sh --today                  # daily summary
./scripts/report.sh --csv --month > apr.csv  # CSV export for invoicing

Scripts

| Script | Description | |---|---| | setup.sh | Verify environment, initialize directories | | new-task.sh | Create a task (all fields via flags) | | list-tasks.sh | List active tasks with filters | | start-timer.sh | Start timer on a task | | end-session.sh | End session — auto-calculate time, log entry, stop timer | | stop-timer.sh | Stop timer (low-level, use end-session.sh instead) | | complete-task.sh | Complete, cancel, or block a task | | log-time.sh | Manually log hours | | report.sh | Generate reports (text or CSV) | | specstory-time.sh | Analyze SpecStory sessions |

All scripts are non-interactive — designed to be called by AI agents. No read prompts, everything via flags.

Flags reference

./scripts/new-task.sh "Title" [flags]

  --client slug       Client identifier
  --project slug      Project identifier
  --priority value    low | medium | high | urgent (default: medium)
  --due YYYY-MM-DD    Deadline
  --estimated hours   Estimated hours
  --tags "a,b,c"      Comma-separated tags
  --force             Skip CRM validation
./scripts/list-tasks.sh [flags]

  --client slug       Filter by client
  --status value      Filter by status (todo, in-progress, blocked)
  --due               Only tasks with deadlines, sorted by due date
./scripts/end-session.sh --desc "description" [flags]

  --desc "text"       Required. What was done.
  --hours 2.5         Override calculated hours
  --task slug         Task slug (auto-detected from timer)
  --client slug       Client (auto-detected from timer or task)
  --project slug      Project (auto-detected from timer or task)
./scripts/stop-timer.sh --desc "description" [flags]

  --desc "text"       Required. What was done.
  --hours 2.5         Override calculated hours
./scripts/complete-task.sh [flags] task-slug

  --cancel            Cancel instead of complete
  --block             Mark as blocked (stays in active/)
  --force             Complete even with 0 hours logged
./scripts/log-time.sh hours --desc "text" [flags]

  --client slug       Client
  --project slug      Project
  --task slug         Link to task file
  --start HH:MM       Start time (default: now)
  --stop HH:MM        End time (default: calculated)
  --date YYYY-MM-DD   Date (default: today)
./scripts/report.sh [flags]

  --today             Today only
  --week              This week (default)
  --month             This month
  --client slug       Filter by client
  --from YYYY-MM-DD   Custom range start
  --to YYYY-MM-DD     Custom range end
  --csv               CSV output (pipe to file)

Directory Structure

tasks/
├── active/           # Current tasks (todo, in-progress, blocked)
├── done/             # Archived tasks (done, cancelled)
├── time/             # Daily time entries (YYYY-MM-DD.md)
├── scripts/          # Shell scripts (10)
├── templates/        # Task and time entry templates
├── rules/            # Field definitions, lifecycle, time tracking rules
├── dashboards/       # Obsidian Dataview dashboards
├── automations/      # n8n workflow JSON exports
└── CLAUDE.md         # AI agent instructions

Task File Format

Each task is a markdown file with YAML frontmatter:

---
title: "Fix checkout timeout"
created: 2026-04-14
status: in-progress
priority: high
client: "acme"
project: "e-shop"
billable: true
tags: [bugfix, backend]
due: 2026-04-18
estimated_hours: 4
total_hours: 1.5
completed:
---

## Description

Checkout times out after 30s on slow connections.

## Checklist

- [x] Identify root cause
- [ ] Fix payment callback race condition
- [ ] Add timeout configuration

## Time log

| Date | Start | Stop | Hours | Description |
|---|---|---|---|---|
| 2026-04-14 | 09:00 | 10:30 | 1.5 | Debugging + root cause analysis |

## Notes

Found race condition in payment gateway callback handler.

Axis CRM Integration

Axis Tasks works standalone. When used alongside Axis CRM:

  • new-task.sh validates client slugs against CRM's clients/ directory
  • report.sh --client filters match CRM client structure
  • Meeting > Tasks automation can reference CRM meeting paths

To connect, place your CRM directory as a sibling (../crm/) or set AXIS_CRM_DIR environment variable.

Automations (n8n)

Two webhook workflows included in automations/:

Meeting > Tasks

Receives meeting action items, creates one task file per item on GitHub.

Webhook > Task (generic)

Creates a single task from any external tool (ClickUp, Linear, Zapier, etc.).

See automations/README.md for setup, input schemas, and customization guide.

Dashboards (Obsidian)

Three Dataview-powered dashboards:

| Dashboard | Shows | |---|---| | dashboards/today.md | In-progress, todo, blocked, completed today | | dashboards/week-summary.md | Weekly hours, active tasks, completed | | dashboards/billable.md | Billable hours per client/month |

Requires Obsidian with the Dataview plugin.

For AI Agents

Open CLAUDE.md in your workspace. It contains complete instructions for Claude Code, Cursor, and other AI coding agents — how to create tasks, track time, and generate reports.

The scripts are designed to be called programmatically:

  • Non-interactive (no prompts, all input via flags)
  • Deterministic exit codes (0 = success, non-zero = error)
  • Partial slug matching for task lookup
  • JSON output available (specstory-time.sh --json)

License

MIT