taskrepo


Nametaskrepo JSON
Version 0.4.0 PyPI version JSON
download
home_pageNone
SummaryTaskWarrior-inspired CLI for managing tasks as markdown files in git repositories
upload_time2025-10-22 11:21:11
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords cli git markdown productivity task-management taskwarrior
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # TaskRepo

[![CI](https://github.com/HenriquesLab/TaskRepo/actions/workflows/ci.yml/badge.svg)](https://github.com/HenriquesLab/TaskRepo/actions/workflows/ci.yml)
[![PyPI version](https://badge.fury.io/py/taskrepo.svg)](https://badge.fury.io/py/taskrepo)
[![Python versions](https://img.shields.io/pypi/pyversions/taskrepo.svg)](https://pypi.org/project/taskrepo/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

> TaskWarrior-inspired CLI for managing tasks as markdown files in git repositories

TaskRepo is a powerful command-line task management tool that combines the best of TaskWarrior's workflow with the simplicity of markdown and the collaboration features of git.

## Features

- **Git-backed storage**: All tasks are stored as markdown files in git repositories
- **TaskWarrior-inspired**: Familiar workflow with priorities, tags, dependencies, and due dates
- **Rich metadata**: YAML frontmatter for structured task data
- **Link associations**: Attach URLs to tasks (GitHub issues, PRs, emails, documentation, etc.)
- **Interactive TUI**: User-friendly prompts with autocomplete and validation
- **Multiple repositories**: Organize tasks across different projects or contexts
- **GitHub integration**: Associate tasks with GitHub user handles
- **Beautiful output**: Rich terminal formatting with tables and colors
- **Version control**: Full git history and collaboration capabilities

## Installation

### Using pipx (recommended)

```bash
# Install pipx if you haven't already
python3 -m pip install --user pipx
python3 -m pipx ensurepath

# Install TaskRepo
pipx install taskrepo
```

Benefits: Isolated environment, global CLI access, easy updates with `pipx upgrade taskrepo`

### Using uv (fast alternative)

```bash
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install TaskRepo
uv tool install taskrepo
```

Benefits: Very fast installation, modern Python tooling, automatic environment management

### Using pip (alternative)

```bash
pip install taskrepo
```

Note: May conflict with other packages. Consider using pipx or uv instead.

## Quick Start

> **Note**: You can use either `tsk` (short alias) or `taskrepo` (full command). Examples below use `tsk` for brevity.

### 1. Initialize TaskRepo

```bash
tsk init
```

This creates a configuration file at `~/.taskreporc` and sets up the parent directory for task repositories (default: `~/tasks`).

### 2. Create a repository

```bash
tsk create-repo work
tsk create-repo personal
```

Repositories are stored as `tasks-{name}` directories with git initialization.

### 3. Add a task

```bash
# Interactive mode (default)
tsk add

# Non-interactive mode
tsk add -r work -t "Fix authentication bug" -p backend --priority H --assignees @alice,@bob --tags bug,security

# With associated links (GitHub issues, emails, docs, etc.)
tsk add -r work -t "Fix authentication bug" -p backend --links https://github.com/org/repo/issues/123,https://mail.google.com/mail/u/0/#inbox/abc
```

### 4. List tasks

```bash
# List all tasks
tsk list

# Filter by repository
tsk list --repo work

# Filter by status, priority, or project
tsk list --status pending --priority H
tsk list --project backend

# Show completed tasks
tsk list --all
```

### 5. Manage tasks

```bash
# Mark task as done
tsk done 001

# Edit a task
tsk edit 001

# Sync with git remote
tsk sync
tsk sync --repo work  # Sync specific repository
```

## Task File Format

Tasks are stored as markdown files with YAML frontmatter:

```markdown
---
id: '001'
title: Fix authentication bug
status: pending
priority: H
project: backend
assignees:
- '@alice'
- '@bob'
tags:
- bug
- security
links:
- https://github.com/org/repo/issues/123
- https://mail.google.com/mail/u/0/#inbox/abc123
due: '2025-11-15T00:00:00'
created: '2025-10-20T10:30:00'
modified: '2025-10-20T14:22:00'
depends:
- '002'
---

## Description

The login endpoint is not properly validating JWT tokens.

## Steps to reproduce

1. Attempt to login with expired token
2. Observe that access is granted

## Solution

Update JWT validation middleware to check expiration.
```

## Commands Reference

### Configuration

- `tsk init` - Initialize TaskRepo configuration
- `tsk config` - Show current configuration
- `tsk create-repo <name>` - Create a new task repository
- `tsk repos` - List all task repositories

### Task Management

- `tsk add` - Add a new task (interactive)
- `tsk list` - List tasks with filters
- `tsk edit <id>` - Edit a task
- `tsk done <id>` - Mark task as completed
- `tsk delete <id>` - Delete a task

### Git Operations

- `tsk sync` - Pull and push all repositories
- `tsk sync --repo <name>` - Sync specific repository
- `tsk sync --no-push` - Pull only, don't push

## Task Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique task identifier (auto-generated) |
| `title` | string | Task title (required) |
| `status` | string | Task status: `pending`, `in_progress`, `completed`, `cancelled` |
| `priority` | string | Priority level: `H` (High), `M` (Medium), `L` (Low) |
| `project` | string | Project name (optional) |
| `assignees` | list | GitHub user handles (e.g., `@username`) |
| `tags` | list | Tags for categorization |
| `due` | datetime | Due date |
| `created` | datetime | Creation timestamp (auto-generated) |
| `modified` | datetime | Last modification timestamp (auto-updated) |
| `depends` | list | Task IDs this task depends on |
| `description` | string | Markdown description/body |

## Configuration

Configuration is stored in `~/.taskreporc`:

```yaml
parent_dir: ~/tasks
default_priority: M
default_status: pending
default_assignee: null  # Optional: GitHub handle (e.g., @username)
default_editor: null    # Optional: Text editor (e.g., vim, nano, code)
sort_by:
  - priority
  - due
```

### Editor Selection Priority

When editing tasks with `tsk edit`, the editor is selected in this order:
1. CLI flag: `tsk edit 123 --editor nano`
2. Environment variable: `$EDITOR`
3. Config file: `default_editor` in `~/.taskreporc`
4. Fallback: `vim`

## Directory Structure

```
~/tasks/
   tasks-work/
      .git/
      tasks/
          task-001.md
          task-002.md
          task-003.md
   tasks-personal/
      .git/
      tasks/
          task-001.md
   tasks-opensource/
       .git/
       tasks/
           task-001.md
```

## Examples

### Create a high-priority bug task

```bash
tsk add \
  --repo work \
  --title "Fix memory leak in worker process" \
  --priority H \
  --project backend \
  --assignees @alice,@bob \
  --tags bug,performance \
  --due "2025-11-01" \
  --description "Memory usage grows unbounded in background worker"
```

### List urgent tasks

```bash
tsk list --priority H --status pending
```

### List tasks assigned to a specific user

```bash
tsk list --assignee @alice
```

### Edit a task in your editor

```bash
EDITOR=vim tsk edit 001
# Or with custom editor
tsk edit 001 --editor code
```

## Development

### Setup

```bash
# Clone repository
git clone https://github.com/henriqueslab/TaskRepo.git
cd TaskRepo

# Install with dev dependencies
uv sync --extra dev

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

### Run tests

```bash
# Run all tests
uv run pytest tests/ -v

# Run with coverage
uv run pytest tests/ -v --cov=taskrepo --cov-report=term-missing

# Run specific test types
uv run pytest tests/unit -v           # Unit tests only
uv run pytest tests/integration -v     # Integration tests only
```

### Code quality

```bash
# Format code
uv run ruff format .

# Lint code
uv run ruff check .

# Type checking
uv run mypy src/taskrepo

# Run all quality checks (what CI runs)
uv run ruff format --check .
uv run ruff check .
uv run mypy src/taskrepo
uv run pytest tests/ -v
```

### Pre-commit hooks

We use pre-commit to ensure code quality before commits:

```bash
# Install hooks
uv run pre-commit install

# Run manually on all files
uv run pre-commit run --all-files

# Skip hooks for a specific commit (use sparingly)
git commit --no-verify
```

The following checks run automatically on commit:
- **ruff format**: Code formatting
- **ruff**: Linting and import sorting
- **mypy**: Static type checking
- **trailing-whitespace**: Remove trailing spaces
- **end-of-file-fixer**: Ensure files end with newline
- **check-yaml/toml**: Validate config files

### CI/CD Pipeline

TaskRepo uses GitHub Actions for continuous integration and deployment:

#### CI Workflow (`.github/workflows/ci.yml`)

Runs on every push and pull request to `main`:

1. **Lint & Type Check** (Python 3.11)
   - Code formatting check with ruff
   - Linting with ruff
   - Type checking with mypy

2. **Tests** (Python 3.10, 3.11, 3.12)
   - Unit tests
   - Integration tests
   - Matrix testing across Python versions

3. **Coverage Report** (Python 3.11)
   - Full test suite with coverage measurement
   - Coverage report uploaded as artifact

4. **Build Verification** (Python 3.11)
   - Package build (wheel + sdist)
   - Metadata verification
   - Build artifacts uploaded for inspection

#### Release Workflow (`.github/workflows/release.yml`)

Automatically triggered when you push a version tag (e.g., `v0.2.0`):

1. **Validation**
   - Verify tag version matches `__version__.py`
   - Check CHANGELOG.md has entry for this version
   - Run full test suite

2. **PyPI Publishing**
   - Build package (wheel + sdist)
   - Publish to PyPI using OIDC trusted publishing (secure, no API tokens needed)

3. **GitHub Release**
   - Extract release notes from CHANGELOG.md
   - Create GitHub release with auto-generated notes
   - Attach wheel and sdist as release assets

### Creating a Release

To create a new release:

1. **Update version** in `src/taskrepo/__version__.py`:
   ```python
   __version__ = "0.2.0"
   ```

2. **Update CHANGELOG.md** with release notes:
   ```markdown
   ## [0.2.0] - 2025-10-25

   ### Added
   - New feature X
   - New feature Y

   ### Fixed
   - Bug fix Z
   ```

3. **Commit changes**:
   ```bash
   git add src/taskrepo/__version__.py CHANGELOG.md
   git commit -m "chore: bump version to 0.2.0"
   git push
   ```

4. **Create and push tag**:
   ```bash
   git tag v0.2.0
   git push origin v0.2.0
   ```

5. **Monitor release**:
   - GitHub Actions will automatically run the release workflow
   - Check [Actions tab](https://github.com/HenriquesLab/TaskRepo/actions) for progress
   - Package will be published to [PyPI](https://pypi.org/project/taskrepo/)
   - GitHub release will be created with artifacts

### Dependency Management

Dependencies are automatically monitored by Dependabot:
- Python dependencies updated weekly
- GitHub Actions updated weekly
- PRs are auto-labeled and grouped for easier review

## Contributing

Contributions are welcome! Please:

1. Fork the repository
2. Create a feature branch
3. Make your changes with tests
4. Run the test suite
5. Submit a pull request

## License

MIT License - see [LICENSE](LICENSE) for details.

## Acknowledgments

- Inspired by [TaskWarrior](https://taskwarrior.org/)
- Built with [Click](https://click.palletsprojects.com/), [prompt_toolkit](https://python-prompt-toolkit.readthedocs.io/), and [Rich](https://rich.readthedocs.io/)
- Package management by [UV](https://docs.astral.sh/uv/)

## Roadmap

- [ ] Dependency validation and visualization
- [ ] Task templates
- [ ] Recurrence support
- [ ] Time tracking
- [ ] Export to other formats (JSON, CSV, HTML)
- [ ] GitHub integration (create issues from tasks)
- [ ] Task search with advanced queries
- [ ] Statistics and reporting
- [ ] Shell completion (bash, zsh, fish)
- [ ] Web UI for task visualization

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "taskrepo",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "cli, git, markdown, productivity, task-management, taskwarrior",
    "author": null,
    "author_email": "Ricardo Henriques <paxcalpt@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/63/1a/85518a00e2a823d27b0c09149eecafa9d554f7f11666d57a51891968733d/taskrepo-0.4.0.tar.gz",
    "platform": null,
    "description": "# TaskRepo\n\n[![CI](https://github.com/HenriquesLab/TaskRepo/actions/workflows/ci.yml/badge.svg)](https://github.com/HenriquesLab/TaskRepo/actions/workflows/ci.yml)\n[![PyPI version](https://badge.fury.io/py/taskrepo.svg)](https://badge.fury.io/py/taskrepo)\n[![Python versions](https://img.shields.io/pypi/pyversions/taskrepo.svg)](https://pypi.org/project/taskrepo/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n> TaskWarrior-inspired CLI for managing tasks as markdown files in git repositories\n\nTaskRepo is a powerful command-line task management tool that combines the best of TaskWarrior's workflow with the simplicity of markdown and the collaboration features of git.\n\n## Features\n\n- **Git-backed storage**: All tasks are stored as markdown files in git repositories\n- **TaskWarrior-inspired**: Familiar workflow with priorities, tags, dependencies, and due dates\n- **Rich metadata**: YAML frontmatter for structured task data\n- **Link associations**: Attach URLs to tasks (GitHub issues, PRs, emails, documentation, etc.)\n- **Interactive TUI**: User-friendly prompts with autocomplete and validation\n- **Multiple repositories**: Organize tasks across different projects or contexts\n- **GitHub integration**: Associate tasks with GitHub user handles\n- **Beautiful output**: Rich terminal formatting with tables and colors\n- **Version control**: Full git history and collaboration capabilities\n\n## Installation\n\n### Using pipx (recommended)\n\n```bash\n# Install pipx if you haven't already\npython3 -m pip install --user pipx\npython3 -m pipx ensurepath\n\n# Install TaskRepo\npipx install taskrepo\n```\n\nBenefits: Isolated environment, global CLI access, easy updates with `pipx upgrade taskrepo`\n\n### Using uv (fast alternative)\n\n```bash\n# Install uv if you haven't already\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Install TaskRepo\nuv tool install taskrepo\n```\n\nBenefits: Very fast installation, modern Python tooling, automatic environment management\n\n### Using pip (alternative)\n\n```bash\npip install taskrepo\n```\n\nNote: May conflict with other packages. Consider using pipx or uv instead.\n\n## Quick Start\n\n> **Note**: You can use either `tsk` (short alias) or `taskrepo` (full command). Examples below use `tsk` for brevity.\n\n### 1. Initialize TaskRepo\n\n```bash\ntsk init\n```\n\nThis creates a configuration file at `~/.taskreporc` and sets up the parent directory for task repositories (default: `~/tasks`).\n\n### 2. Create a repository\n\n```bash\ntsk create-repo work\ntsk create-repo personal\n```\n\nRepositories are stored as `tasks-{name}` directories with git initialization.\n\n### 3. Add a task\n\n```bash\n# Interactive mode (default)\ntsk add\n\n# Non-interactive mode\ntsk add -r work -t \"Fix authentication bug\" -p backend --priority H --assignees @alice,@bob --tags bug,security\n\n# With associated links (GitHub issues, emails, docs, etc.)\ntsk add -r work -t \"Fix authentication bug\" -p backend --links https://github.com/org/repo/issues/123,https://mail.google.com/mail/u/0/#inbox/abc\n```\n\n### 4. List tasks\n\n```bash\n# List all tasks\ntsk list\n\n# Filter by repository\ntsk list --repo work\n\n# Filter by status, priority, or project\ntsk list --status pending --priority H\ntsk list --project backend\n\n# Show completed tasks\ntsk list --all\n```\n\n### 5. Manage tasks\n\n```bash\n# Mark task as done\ntsk done 001\n\n# Edit a task\ntsk edit 001\n\n# Sync with git remote\ntsk sync\ntsk sync --repo work  # Sync specific repository\n```\n\n## Task File Format\n\nTasks are stored as markdown files with YAML frontmatter:\n\n```markdown\n---\nid: '001'\ntitle: Fix authentication bug\nstatus: pending\npriority: H\nproject: backend\nassignees:\n- '@alice'\n- '@bob'\ntags:\n- bug\n- security\nlinks:\n- https://github.com/org/repo/issues/123\n- https://mail.google.com/mail/u/0/#inbox/abc123\ndue: '2025-11-15T00:00:00'\ncreated: '2025-10-20T10:30:00'\nmodified: '2025-10-20T14:22:00'\ndepends:\n- '002'\n---\n\n## Description\n\nThe login endpoint is not properly validating JWT tokens.\n\n## Steps to reproduce\n\n1. Attempt to login with expired token\n2. Observe that access is granted\n\n## Solution\n\nUpdate JWT validation middleware to check expiration.\n```\n\n## Commands Reference\n\n### Configuration\n\n- `tsk init` - Initialize TaskRepo configuration\n- `tsk config` - Show current configuration\n- `tsk create-repo <name>` - Create a new task repository\n- `tsk repos` - List all task repositories\n\n### Task Management\n\n- `tsk add` - Add a new task (interactive)\n- `tsk list` - List tasks with filters\n- `tsk edit <id>` - Edit a task\n- `tsk done <id>` - Mark task as completed\n- `tsk delete <id>` - Delete a task\n\n### Git Operations\n\n- `tsk sync` - Pull and push all repositories\n- `tsk sync --repo <name>` - Sync specific repository\n- `tsk sync --no-push` - Pull only, don't push\n\n## Task Fields\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `id` | string | Unique task identifier (auto-generated) |\n| `title` | string | Task title (required) |\n| `status` | string | Task status: `pending`, `in_progress`, `completed`, `cancelled` |\n| `priority` | string | Priority level: `H` (High), `M` (Medium), `L` (Low) |\n| `project` | string | Project name (optional) |\n| `assignees` | list | GitHub user handles (e.g., `@username`) |\n| `tags` | list | Tags for categorization |\n| `due` | datetime | Due date |\n| `created` | datetime | Creation timestamp (auto-generated) |\n| `modified` | datetime | Last modification timestamp (auto-updated) |\n| `depends` | list | Task IDs this task depends on |\n| `description` | string | Markdown description/body |\n\n## Configuration\n\nConfiguration is stored in `~/.taskreporc`:\n\n```yaml\nparent_dir: ~/tasks\ndefault_priority: M\ndefault_status: pending\ndefault_assignee: null  # Optional: GitHub handle (e.g., @username)\ndefault_editor: null    # Optional: Text editor (e.g., vim, nano, code)\nsort_by:\n  - priority\n  - due\n```\n\n### Editor Selection Priority\n\nWhen editing tasks with `tsk edit`, the editor is selected in this order:\n1. CLI flag: `tsk edit 123 --editor nano`\n2. Environment variable: `$EDITOR`\n3. Config file: `default_editor` in `~/.taskreporc`\n4. Fallback: `vim`\n\n## Directory Structure\n\n```\n~/tasks/\n   tasks-work/\n      .git/\n      tasks/\n          task-001.md\n          task-002.md\n          task-003.md\n   tasks-personal/\n      .git/\n      tasks/\n          task-001.md\n   tasks-opensource/\n       .git/\n       tasks/\n           task-001.md\n```\n\n## Examples\n\n### Create a high-priority bug task\n\n```bash\ntsk add \\\n  --repo work \\\n  --title \"Fix memory leak in worker process\" \\\n  --priority H \\\n  --project backend \\\n  --assignees @alice,@bob \\\n  --tags bug,performance \\\n  --due \"2025-11-01\" \\\n  --description \"Memory usage grows unbounded in background worker\"\n```\n\n### List urgent tasks\n\n```bash\ntsk list --priority H --status pending\n```\n\n### List tasks assigned to a specific user\n\n```bash\ntsk list --assignee @alice\n```\n\n### Edit a task in your editor\n\n```bash\nEDITOR=vim tsk edit 001\n# Or with custom editor\ntsk edit 001 --editor code\n```\n\n## Development\n\n### Setup\n\n```bash\n# Clone repository\ngit clone https://github.com/henriqueslab/TaskRepo.git\ncd TaskRepo\n\n# Install with dev dependencies\nuv sync --extra dev\n\n# Install pre-commit hooks (optional but recommended)\nuv run pre-commit install\n```\n\n### Run tests\n\n```bash\n# Run all tests\nuv run pytest tests/ -v\n\n# Run with coverage\nuv run pytest tests/ -v --cov=taskrepo --cov-report=term-missing\n\n# Run specific test types\nuv run pytest tests/unit -v           # Unit tests only\nuv run pytest tests/integration -v     # Integration tests only\n```\n\n### Code quality\n\n```bash\n# Format code\nuv run ruff format .\n\n# Lint code\nuv run ruff check .\n\n# Type checking\nuv run mypy src/taskrepo\n\n# Run all quality checks (what CI runs)\nuv run ruff format --check .\nuv run ruff check .\nuv run mypy src/taskrepo\nuv run pytest tests/ -v\n```\n\n### Pre-commit hooks\n\nWe use pre-commit to ensure code quality before commits:\n\n```bash\n# Install hooks\nuv run pre-commit install\n\n# Run manually on all files\nuv run pre-commit run --all-files\n\n# Skip hooks for a specific commit (use sparingly)\ngit commit --no-verify\n```\n\nThe following checks run automatically on commit:\n- **ruff format**: Code formatting\n- **ruff**: Linting and import sorting\n- **mypy**: Static type checking\n- **trailing-whitespace**: Remove trailing spaces\n- **end-of-file-fixer**: Ensure files end with newline\n- **check-yaml/toml**: Validate config files\n\n### CI/CD Pipeline\n\nTaskRepo uses GitHub Actions for continuous integration and deployment:\n\n#### CI Workflow (`.github/workflows/ci.yml`)\n\nRuns on every push and pull request to `main`:\n\n1. **Lint & Type Check** (Python 3.11)\n   - Code formatting check with ruff\n   - Linting with ruff\n   - Type checking with mypy\n\n2. **Tests** (Python 3.10, 3.11, 3.12)\n   - Unit tests\n   - Integration tests\n   - Matrix testing across Python versions\n\n3. **Coverage Report** (Python 3.11)\n   - Full test suite with coverage measurement\n   - Coverage report uploaded as artifact\n\n4. **Build Verification** (Python 3.11)\n   - Package build (wheel + sdist)\n   - Metadata verification\n   - Build artifacts uploaded for inspection\n\n#### Release Workflow (`.github/workflows/release.yml`)\n\nAutomatically triggered when you push a version tag (e.g., `v0.2.0`):\n\n1. **Validation**\n   - Verify tag version matches `__version__.py`\n   - Check CHANGELOG.md has entry for this version\n   - Run full test suite\n\n2. **PyPI Publishing**\n   - Build package (wheel + sdist)\n   - Publish to PyPI using OIDC trusted publishing (secure, no API tokens needed)\n\n3. **GitHub Release**\n   - Extract release notes from CHANGELOG.md\n   - Create GitHub release with auto-generated notes\n   - Attach wheel and sdist as release assets\n\n### Creating a Release\n\nTo create a new release:\n\n1. **Update version** in `src/taskrepo/__version__.py`:\n   ```python\n   __version__ = \"0.2.0\"\n   ```\n\n2. **Update CHANGELOG.md** with release notes:\n   ```markdown\n   ## [0.2.0] - 2025-10-25\n\n   ### Added\n   - New feature X\n   - New feature Y\n\n   ### Fixed\n   - Bug fix Z\n   ```\n\n3. **Commit changes**:\n   ```bash\n   git add src/taskrepo/__version__.py CHANGELOG.md\n   git commit -m \"chore: bump version to 0.2.0\"\n   git push\n   ```\n\n4. **Create and push tag**:\n   ```bash\n   git tag v0.2.0\n   git push origin v0.2.0\n   ```\n\n5. **Monitor release**:\n   - GitHub Actions will automatically run the release workflow\n   - Check [Actions tab](https://github.com/HenriquesLab/TaskRepo/actions) for progress\n   - Package will be published to [PyPI](https://pypi.org/project/taskrepo/)\n   - GitHub release will be created with artifacts\n\n### Dependency Management\n\nDependencies are automatically monitored by Dependabot:\n- Python dependencies updated weekly\n- GitHub Actions updated weekly\n- PRs are auto-labeled and grouped for easier review\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes with tests\n4. Run the test suite\n5. Submit a pull request\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\n- Inspired by [TaskWarrior](https://taskwarrior.org/)\n- Built with [Click](https://click.palletsprojects.com/), [prompt_toolkit](https://python-prompt-toolkit.readthedocs.io/), and [Rich](https://rich.readthedocs.io/)\n- Package management by [UV](https://docs.astral.sh/uv/)\n\n## Roadmap\n\n- [ ] Dependency validation and visualization\n- [ ] Task templates\n- [ ] Recurrence support\n- [ ] Time tracking\n- [ ] Export to other formats (JSON, CSV, HTML)\n- [ ] GitHub integration (create issues from tasks)\n- [ ] Task search with advanced queries\n- [ ] Statistics and reporting\n- [ ] Shell completion (bash, zsh, fish)\n- [ ] Web UI for task visualization\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "TaskWarrior-inspired CLI for managing tasks as markdown files in git repositories",
    "version": "0.4.0",
    "project_urls": {
        "Homepage": "https://github.com/henriqueslab/TaskRepo",
        "Issues": "https://github.com/henriqueslab/TaskRepo/issues",
        "Repository": "https://github.com/henriqueslab/TaskRepo"
    },
    "split_keywords": [
        "cli",
        " git",
        " markdown",
        " productivity",
        " task-management",
        " taskwarrior"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2c47696a4ec781edc4558985509a7e7160d2238cdc7c371eb8027eb83f4c8153",
                "md5": "985902ec7723fa64205c5ed0af516934",
                "sha256": "db9f7dd8ff39e47e579fac0efee1dea73e895a27461d85725587256e3b59f472"
            },
            "downloads": -1,
            "filename": "taskrepo-0.4.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "985902ec7723fa64205c5ed0af516934",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 45706,
            "upload_time": "2025-10-22T11:21:09",
            "upload_time_iso_8601": "2025-10-22T11:21:09.874198Z",
            "url": "https://files.pythonhosted.org/packages/2c/47/696a4ec781edc4558985509a7e7160d2238cdc7c371eb8027eb83f4c8153/taskrepo-0.4.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "631a85518a00e2a823d27b0c09149eecafa9d554f7f11666d57a51891968733d",
                "md5": "b2077caeaa01286c0b31b55a862cdcd1",
                "sha256": "771a79e678b675c7bef1bae23431896d359f691faf9d548a36e71b3eee8bf873"
            },
            "downloads": -1,
            "filename": "taskrepo-0.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b2077caeaa01286c0b31b55a862cdcd1",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 38623,
            "upload_time": "2025-10-22T11:21:11",
            "upload_time_iso_8601": "2025-10-22T11:21:11.039976Z",
            "url": "https://files.pythonhosted.org/packages/63/1a/85518a00e2a823d27b0c09149eecafa9d554f7f11666d57a51891968733d/taskrepo-0.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-22 11:21:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "henriqueslab",
    "github_project": "TaskRepo",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "taskrepo"
}
        
Elapsed time: 0.87074s