# :clipboard: XitKit
A powerful command-line task management tool that parses and manages tasks from `.xit` and `.md` files using the [x]it! format (https://xit.jotaen.net/)
## :sparkles: Features
- **:arrows_counterclockwise: Multiple Task States**: Open, checked, ongoing, obsolete, and in-question tasks
- **:zap: Priority Levels**: Support for multiple priority indicators (`!`, `!!`, `!!!`)
- **:calendar: Due Dates**: Flexible date parsing with various formats
- **:label: Tags**: Organize tasks with hashtags and optional values
- **:memo: Multi-line Descriptions**: Support for continued task descriptions
- **:file_folder: Groups & Headers**: Organize related tasks under headers
- **:art: Rich Output**: Beautiful terminal output with colors and formatting
- **:mag: Flexible Filtering**: Filter tasks by status, priority, tags, and more
- **:bar_chart: Statistics**: Get insights about your task distribution
- **:rocket: Batch Processing**: Mark, reschedule, remove, or move multiple tasks at once
- **:repeat: Recurring Tasks**: Create recurring instances with flexible intervals (daily, weekly, monthly, yearly)
- **:shell: Shell Integration**: Support for shell expansion (`{3..21}`) and sequences
- **:tomato: Pomodoro timer**: simple, textual-based pomodoro timer
- **:wrench: Interactive Mode**: Edit tasks interactively
## :package: Installation
### :warning: Prerequisites
- Python 3.14+
- Micromamba or Conda (recommended but not necessary)
### :gear: Setup
1. Clone the repository:
```bash
git clone https://github.com/hoechstleistungshaartrockner/xitkit.git
cd xitkit
```
2. Create the environment:
```bash
micromamba create -f micromamba.yaml
micromamba activate xitkit
```
or create your own environment with Python 3.14+ and install Poetry:
```bash
python -m pip install --user poetry
```
3. Install dependencies:
```bash
poetry install
poetry install --extras dev
```
## :computer: Usage
Two command-line entry points are provided: `xitkit` and `xit`. Both commands function identically.
```bash
xit --help
xitkit --help
```
### :toolbox: Available Subcommands
| Command | Description |
|------------|-----------------------------------------------------------|
| add | Add a new task. |
| mark | Mark one or more tasks with a specific status. |
| move | Move one or more tasks to another file. |
| pomodoro | A simple Pomodoro Timer App to run in the terminal. |
| prio | Set the priority of a task. |
| recur | Create recurring instances of a task. |
| reschedule | Reschedule one or more tasks to a new due date. |
| rm | Remove one or more tasks by their IDs with confirmation. |
| show | Show tasks from .md and .xit files. |
| stats | Show statistics about tasks. |
| tag | Add a tag to a task. |
| untag | Remove a tag from a task. |
### :bulb: Command Examples
```bash
# Show all tasks in current directory
xit show
# Show tasks from specific files
xit -f tasks.xit show
# Show only open tasks
xit show --status open
# Show tasks with IDs for reference
xit show --show-id
# Show task statistics
xit stats
# Show help
xit --help
# Interactive mode
xit show --interactive # will prompt you to select which tasks to show (applies for other commands as well)
# Add a new task
xit add "Buy groceries"
xit add "Important meeting -> 2025-12-15 #work" -f work.xit -p 2
# Mark tasks with new status flags (supports batch processing)
xit mark 5 --done # Mark task #5 as done
xit mark 2 3 4 5 6 --done # Mark multiple tasks as done
xit mark {3..21} --ongoing # Mark task range as ongoing (bash expansion)
xit mark 1 --open # Reopen a task
xit mark 7 8 --obsolete # Mark tasks as obsolete
xit mark 9 --inquestion # Mark task as in question
# Reschedule tasks (supports batch processing)
xit reschedule 5 -n 2025-12-31 # Set specific date for single task
xit reschedule 2 3 4 -n today # Set multiple tasks to today
xit reschedule {3..21} -n tomorrow # Set task range to tomorrow (bash expansion)
# Remove tasks (supports batch processing with confirmation)
xit rm 5 # Remove single task (with confirmation)
xit rm 2 3 4 5 # Remove multiple tasks (confirmation for each)
xit rm {3..21} # Remove task range (bash expansion)
# Move tasks between files (supports batch processing)
xit move 5 --target-file other.xit # Move single task to another file
xit move 2 3 4 --target-file done.xit # Move multiple tasks to done.xit
xit move {3..21} --target-file archive.xit # Move task range to archive.xit
# Create recurring instances of tasks
xit recur 5 --interval 1w --count 4 # Create 4 weekly instances of task #5
xit recur 3 --interval 2w --count 5 # Create 5 bi-weekly instances of task #3
xit recur 7 --interval 1m --end 2026-12-31 # Monthly recurrence until end of 2026
xit recur 2 --interval 1d --count 30 --task-file work.xit # 30 daily instances in work.xit file
# Edit task properties
xit edit 5 "Updated task description" # Change the description of task #5
xit prio 3 -p 2 # Set priority level 2 (!!) for task #3
xit prio 7 -p 0 # Remove priority from task #7
xit tag 5 -t urgent # Add #urgent tag to task #5
xit tag 3 -t "work" # Add #work tag to task #3
xit untag 5 -t urgent # Remove #urgent tag from task #5
```
## :wrench: Development
### :test_tube: Running Tests
```bash
python -m pytest
```
## :page_facing_up: License
This project is licensed under the MIT License - see the LICENSE file for details.
## :pray: Acknowledgments
- Developer of the [x]it! format: [Jotaen](https://github.com/Jotaen/xit)
- Built with [Rich](https://github.com/Textualize/rich) for beautiful terminal output
- Uses [Click](https://click.palletsprojects.com/) for the command-line interface
- Uses [Questionary](https://github.com/tmbo/questionary) for interactive prompts
Raw data
{
"_id": null,
"home_page": "https://github.com/hoechstleistungshaartrockner/xitkit",
"name": "xitkit",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0.0,>=3.14",
"maintainer_email": null,
"keywords": "task, management, cli, todo, xit, productivity",
"author": "Christian",
"author_email": "202550520+hoechstleistungshaartrockner@users.noreply.github.com",
"download_url": "https://files.pythonhosted.org/packages/74/da/c9627e6adb26505e2adae46554780d35e3a57a816d9e0d07f8e3ac7def76/xitkit-2.1.0.tar.gz",
"platform": null,
"description": "# :clipboard: XitKit\n\nA powerful command-line task management tool that parses and manages tasks from `.xit` and `.md` files using the [x]it! format (https://xit.jotaen.net/)\n\n## :sparkles: Features\n\n- **:arrows_counterclockwise: Multiple Task States**: Open, checked, ongoing, obsolete, and in-question tasks\n- **:zap: Priority Levels**: Support for multiple priority indicators (`!`, `!!`, `!!!`)\n- **:calendar: Due Dates**: Flexible date parsing with various formats\n- **:label: Tags**: Organize tasks with hashtags and optional values\n- **:memo: Multi-line Descriptions**: Support for continued task descriptions\n- **:file_folder: Groups & Headers**: Organize related tasks under headers\n- **:art: Rich Output**: Beautiful terminal output with colors and formatting\n- **:mag: Flexible Filtering**: Filter tasks by status, priority, tags, and more\n- **:bar_chart: Statistics**: Get insights about your task distribution\n- **:rocket: Batch Processing**: Mark, reschedule, remove, or move multiple tasks at once\n- **:repeat: Recurring Tasks**: Create recurring instances with flexible intervals (daily, weekly, monthly, yearly)\n- **:shell: Shell Integration**: Support for shell expansion (`{3..21}`) and sequences\n- **:tomato: Pomodoro timer**: simple, textual-based pomodoro timer\n- **:wrench: Interactive Mode**: Edit tasks interactively\n\n## :package: Installation\n\n### :warning: Prerequisites\n\n- Python 3.14+\n- Micromamba or Conda (recommended but not necessary)\n\n### :gear: Setup\n\n1. Clone the repository:\n ```bash\n git clone https://github.com/hoechstleistungshaartrockner/xitkit.git\n cd xitkit\n ```\n\n2. Create the environment:\n ```bash\n micromamba create -f micromamba.yaml\n micromamba activate xitkit\n ```\n or create your own environment with Python 3.14+ and install Poetry:\n ```bash\n python -m pip install --user poetry\n ```\n\n3. Install dependencies:\n ```bash\n poetry install\n poetry install --extras dev\n ```\n\n## :computer: Usage\nTwo command-line entry points are provided: `xitkit` and `xit`. Both commands function identically.\n\n```bash\nxit --help\nxitkit --help\n```\n\n### :toolbox: Available Subcommands\n\n| Command | Description |\n|------------|-----------------------------------------------------------|\n| add | Add a new task. |\n| mark | Mark one or more tasks with a specific status. |\n| move | Move one or more tasks to another file. |\n| pomodoro | A simple Pomodoro Timer App to run in the terminal. |\n| prio | Set the priority of a task. |\n| recur | Create recurring instances of a task. |\n| reschedule | Reschedule one or more tasks to a new due date. |\n| rm | Remove one or more tasks by their IDs with confirmation. |\n| show | Show tasks from .md and .xit files. |\n| stats | Show statistics about tasks. |\n| tag | Add a tag to a task. |\n| untag | Remove a tag from a task. |\n\n\n### :bulb: Command Examples\n\n```bash\n# Show all tasks in current directory\nxit show\n\n# Show tasks from specific files\nxit -f tasks.xit show\n\n# Show only open tasks\nxit show --status open\n\n# Show tasks with IDs for reference\nxit show --show-id\n\n# Show task statistics\nxit stats\n\n# Show help\nxit --help\n\n# Interactive mode\nxit show --interactive # will prompt you to select which tasks to show (applies for other commands as well)\n\n# Add a new task\nxit add \"Buy groceries\"\nxit add \"Important meeting -> 2025-12-15 #work\" -f work.xit -p 2\n\n# Mark tasks with new status flags (supports batch processing)\nxit mark 5 --done # Mark task #5 as done\nxit mark 2 3 4 5 6 --done # Mark multiple tasks as done\nxit mark {3..21} --ongoing # Mark task range as ongoing (bash expansion)\nxit mark 1 --open # Reopen a task\nxit mark 7 8 --obsolete # Mark tasks as obsolete\nxit mark 9 --inquestion # Mark task as in question\n\n# Reschedule tasks (supports batch processing)\nxit reschedule 5 -n 2025-12-31 # Set specific date for single task\nxit reschedule 2 3 4 -n today # Set multiple tasks to today\nxit reschedule {3..21} -n tomorrow # Set task range to tomorrow (bash expansion)\n\n# Remove tasks (supports batch processing with confirmation)\nxit rm 5 # Remove single task (with confirmation)\nxit rm 2 3 4 5 # Remove multiple tasks (confirmation for each)\nxit rm {3..21} # Remove task range (bash expansion)\n\n# Move tasks between files (supports batch processing)\nxit move 5 --target-file other.xit # Move single task to another file\nxit move 2 3 4 --target-file done.xit # Move multiple tasks to done.xit\nxit move {3..21} --target-file archive.xit # Move task range to archive.xit\n\n# Create recurring instances of tasks\nxit recur 5 --interval 1w --count 4 # Create 4 weekly instances of task #5\nxit recur 3 --interval 2w --count 5 # Create 5 bi-weekly instances of task #3\nxit recur 7 --interval 1m --end 2026-12-31 # Monthly recurrence until end of 2026\nxit recur 2 --interval 1d --count 30 --task-file work.xit # 30 daily instances in work.xit file\n\n# Edit task properties\nxit edit 5 \"Updated task description\" # Change the description of task #5\nxit prio 3 -p 2 # Set priority level 2 (!!) for task #3\nxit prio 7 -p 0 # Remove priority from task #7\nxit tag 5 -t urgent # Add #urgent tag to task #5\nxit tag 3 -t \"work\" # Add #work tag to task #3\nxit untag 5 -t urgent # Remove #urgent tag from task #5\n```\n\n\n## :wrench: Development\n\n### :test_tube: Running Tests\n\n```bash\npython -m pytest\n```\n\n## :page_facing_up: License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## :pray: Acknowledgments\n\n- Developer of the [x]it! format: [Jotaen](https://github.com/Jotaen/xit)\n- Built with [Rich](https://github.com/Textualize/rich) for beautiful terminal output\n- Uses [Click](https://click.palletsprojects.com/) for the command-line interface\n- Uses [Questionary](https://github.com/tmbo/questionary) for interactive prompts\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A powerful command-line task management tool that parses and manages tasks from .xit and .md files using the x-it! format",
"version": "2.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/hoechstleistungshaartrockner/xitkit/issues",
"Homepage": "https://github.com/hoechstleistungshaartrockner/xitkit",
"Repository": "https://github.com/hoechstleistungshaartrockner/xitkit.git"
},
"split_keywords": [
"task",
" management",
" cli",
" todo",
" xit",
" productivity"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "84e56ae51db305b3ba69fbdae4e633f9b57ee3d2e1c3a7d6bd712bf2250fa30e",
"md5": "8fb1a9500346e835881ae641f971a042",
"sha256": "3f2faf04812f7b6a103837380508f217879c63e4dc40fce27f27602e56578628"
},
"downloads": -1,
"filename": "xitkit-2.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8fb1a9500346e835881ae641f971a042",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0.0,>=3.14",
"size": 63163,
"upload_time": "2025-11-05T21:12:40",
"upload_time_iso_8601": "2025-11-05T21:12:40.353766Z",
"url": "https://files.pythonhosted.org/packages/84/e5/6ae51db305b3ba69fbdae4e633f9b57ee3d2e1c3a7d6bd712bf2250fa30e/xitkit-2.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "74dac9627e6adb26505e2adae46554780d35e3a57a816d9e0d07f8e3ac7def76",
"md5": "acfb404d2c1316af533766a4030d32f3",
"sha256": "44102f09a9c816daf6ef532442c8ebc81ae827dec1ada749b0cf9a54c8056520"
},
"downloads": -1,
"filename": "xitkit-2.1.0.tar.gz",
"has_sig": false,
"md5_digest": "acfb404d2c1316af533766a4030d32f3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0.0,>=3.14",
"size": 55873,
"upload_time": "2025-11-05T21:12:42",
"upload_time_iso_8601": "2025-11-05T21:12:42.000534Z",
"url": "https://files.pythonhosted.org/packages/74/da/c9627e6adb26505e2adae46554780d35e3a57a816d9e0d07f8e3ac7def76/xitkit-2.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-05 21:12:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hoechstleistungshaartrockner",
"github_project": "xitkit",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "xitkit"
}