Skip to main content

Task status viewer for speckit projects

Project description

sknext

Task status viewer for speckit projects - a CLI tool to quickly view and track tasks from your project's tasks.md file.

Features

  • 🚀 Fast: View next tasks in <2 seconds
  • 🔍 Multiple Views: 6 different viewing modes for different workflows
  • 📊 Auto-Discovery: Automatically finds latest tasks.md in specs/###-*/ directories
  • 🎨 Rich Formatting: Color-coded output with priority and story tag highlighting
  • Type Safe: 100% type-checked with mypy in strict mode
  • 🧪 Well Tested: 97 tests with 94% coverage

Installation

From PyPI (Recommended)

Once published, install directly from PyPI:

pip install sknext

Or with uv:

uv pip install sknext

From Source

For development or to use the latest unreleased version:

# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone and install
git clone https://github.com/kenhia/sknext.git
cd sknext
uv sync

Usage

Auto-Discovery from Any Directory

sknext automatically detects your project's repository root and finds the latest tasks.md file:

# Run from any subdirectory in your project
cd src/mymodule
sknext

# Run from repository root
cd /path/to/project
sknext

# Run from a feature subdirectory
cd specs/001-my-feature
sknext

How it works:

  1. Git Detection: Uses git rev-parse --show-toplevel to find repository root (fastest)
  2. VCS Markers: Falls back to searching for .git, .hg, or .svn directories (up to 10 levels)
  3. Specs Fallback: If no VCS found, searches for specs/ directory (for non-git projects)
  4. Latest Discovery: Finds the highest numbered specs/###-*/tasks.md file

This means you can work deep in your codebase and quickly check task status without navigating to the project root!

Quick Status Check (Default)

Show the next 10 uncompleted tasks with full context:

sknext
# or
sknext path/to/tasks.md

Custom Task Count

Show a specific number of tasks:

sknext -n 5          # Show next 5 tasks
sknext -n 25         # Show next 25 tasks
sknext -n 0          # Show header only (no tasks)

Phase Overview

Show only phases with uncompleted work (no sections or tasks):

sknext --phases-only

Perfect for quick status updates or understanding high-level progress.

Structure View

Show phases and sections with uncompleted work (no individual tasks):

sknext --structure

Useful for sprint planning and understanding work distribution across sections.

Combined View

Show all incomplete phases followed by N tasks:

sknext --all-phases -n 10

Combines strategic overview with tactical next steps - perfect for standups!

Task-Only View

Show only task lines without any headings:

sknext --tasks-only -n 15

Great for copy-pasting into status reports or automated processing.

All Remaining Tasks

Show every uncompleted task with full context:

sknext --all

Perfect for final sprint planning or comprehensive project reviews.

Troubleshooting

No tasks.md found

If you get "Error: No Git repository or speckit project detected":

  1. Run from within a project: Make sure you're inside a git repository or directory with a specs/ folder
  2. Check your location: sknext searches up to 10 parent directories for repository markers
  3. Verify project structure: Ensure you have either:
    • A .git directory (git repository)
    • A specs/###-feature-name/tasks.md file structure
  4. Explicit path: You can always specify the path directly: sknext path/to/tasks.md

Project Detection

sknext uses a three-tier approach to find your project:

  1. Git command (git rev-parse --show-toplevel) - preferred method
  2. VCS markers (.git, .hg, .svn directories) - works in nested repos
  3. Specs directory - fallback for non-git projects with specs/ folder

Empty output

If sknext shows no tasks:

  • ✅ All your tasks are complete! Great job!
  • Check if tasks are marked with - [X] instead of - [ ]

Performance issues

If sknext is slow:

  • Check file size - files with >1000 tasks may take longer
  • Expected: <2s for default view, <3s for files with 500 tasks
  • Auto-discovery adds <200ms overhead for repository detection
  • Report performance issues with file size and timing

Development

Setup Development Environment

# Clone and setup
git clone <repository-url>
cd sknext
uv sync

# Install pre-commit hooks (optional)
uv run pre-commit install

Run Tests

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=src/sknext --cov-report=html

# Run specific test
uv run pytest tests/unit/test_parser.py -xvs

Code Quality

# Format code
uv run ruff format .

# Lint code
uv run ruff check .

# Type check
uv run mypy src/sknext

Architecture

src/sknext/
├── __init__.py       # Package initialization
├── __main__.py       # Entry point for python -m sknext
├── cli.py            # Typer CLI interface
├── constants.py      # Regex patterns and defaults
├── models.py         # Frozen dataclasses (Task, Section, Phase)
├── parser.py         # Line-by-line state machine parser
├── discovery.py      # Auto-discover tasks.md in specs/
└── formatter.py      # Rich console output formatters

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Ensure all tests pass and coverage stays >90%
  5. Run ruff format and mypy
  6. Submit a pull request

License

[Add your license here]

uv run ruff check --fix .

Type Check

uv run mypy src/

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sknext-0.1.1.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sknext-0.1.1-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file sknext-0.1.1.tar.gz.

File metadata

  • Download URL: sknext-0.1.1.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sknext-0.1.1.tar.gz
Algorithm Hash digest
SHA256 01852a4f3f21e83dc6a7a06ad939ad2abcad170c2025bd1e7b9ae7fc38785c99
MD5 cf2ef399a16e7951438cdff182502bb4
BLAKE2b-256 edee8488d49bb80f6545561ba43f5f6d3b5ab090e58fbe176d56e338ec2004e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for sknext-0.1.1.tar.gz:

Publisher: publish.yml on kenhia/sknext

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sknext-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sknext-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sknext-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c432e5cac67bc958057f266d01ea10aefe87cd14141bdd711f02283965e89140
MD5 43f58fb1d3adae272465951e80d4c729
BLAKE2b-256 78ff726f3e0108bbcc3f85a983bd0399bf5586ee2ea2654760d049a6e4f1c8b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sknext-0.1.1-py3-none-any.whl:

Publisher: publish.yml on kenhia/sknext

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page