Turn natural-language (Japanese) instructions into TaskWarrior commands via a tiny helper script and AI prompting.
- Overview
- Features
- Requirements
- Installation
- Quickstart
- Usage (script)
- AI Integration
- Examples
- Project Structure
- Support and Limitations
- Related Files
- Contributing
- License
- Troubleshooting
- Reports (Markdown export)
Task_Killer streamlines day-to-day TaskWarrior operations in two ways:
- Helper script:
Task_Killer/scripts/tw.shnormalizes dates and priorities, finds tasks by fuzzy title, updates a progress UDA, and performs common operations non-interactively. - Helper script:
Task_Killer/scripts/tw.shnormalizes dates and priorities, allows optional project assignment, finds tasks by fuzzy title, updates a progress UDA, and performs common operations non-interactively. - AI prompt guide:
Task_Killer/GEMINI.mddocuments how to translate Japanese free-form text into executable TaskWarrior commands (Gemini CLI assumed), including few-shot examples and normalization rules.
- Natural-language friendly operations: add, update progress, start/stop/done, list, and info
- Date normalization: accepts inputs like
MM-DD-HH:MMorM/D HH:MMand converts toYYYY-MM-DDTHH:MM, rolling over to next year if necessary - Priority normalization: maps common Japanese words (e.g., “高/最優先/重要” → H, “普通” → M, “低/低め” → L)
- Progress UDA updates:
uda.progress(integer 0–100) - Fuzzy task selection by description substring, with candidate listing when ambiguous
- Non-interactive execution with
rc.confirmation:no
- TaskWarrior
- jq
- bash (for
tw.sh) - UDA setup in
~/.taskrc(example below)
# ~/.taskrc example
uda.progress.type=numeric
uda.progress.label=ProgressIf using an AI CLI (e.g., Gemini CLI), set it up separately. See Task_Killer/GEMINI.md for details.
# Clone the repository
git clone https://github.com/xrm07/Task_Killer.git
cd Task_Killer
# Make the helper executable (if needed)
chmod +x Task_Killer/scripts/tw.sh
# Optional: add to PATH for convenience (consider adding to your shell profile)
export PATH="$PWD/Task_Killer/scripts:$PATH"# 1) Clone and enter the repo
git clone https://github.com/xrm07/Task_Killer.git
cd Task_Killer
# 2) Install dependencies (example for Debian/Ubuntu)
sudo apt-get update && sudo apt-get install -y taskwarrior jq
# 3) Make the helper executable
chmod +x Task_Killer/scripts/tw.sh
# 4) Add a task and list
Task_Killer/scripts/tw.sh \
add --title "Sample" --due "12-30-23:50" --priority 高め
Task_Killer/scripts/tw.sh listtw.sh wraps common TaskWarrior operations and prints the command it is about to run.
# Add a task (date/priority will be normalized; optional project)
Task_Killer/scripts/tw.sh \
add --title "Formal Languages and Automata" --due "12-30-23:50" --priority 高め --project "Website"
# Update progress (0–100)
Task_Killer/scripts/tw.sh \
progress --title "Formal Languages and Automata" --value 50
# Start / stop / complete
Task_Killer/scripts/tw.sh start --title "Formal Languages and Automata"
Task_Killer/scripts/tw.sh stop --title "Formal Languages and Automata"
Task_Killer/scripts/tw.sh done --title "Formal Languages and Automata"
# List / info
Task_Killer/scripts/tw.sh list
Task_Killer/scripts/tw.sh list --project "Website"
Task_Killer/scripts/tw.sh info --title "Formal Languages and Automata"Tips:
- You can use
--idinstead of--titleforprogress/start/stop/done/info. - If multiple or no matches are found, the script prints candidates and exits with code 2.
Task_Killer/GEMINI.md describes prompting strategies, normalization rules, and few-shot examples that convert Japanese free-form inputs into executable TaskWarrior commands.
# From the repository root
gemini # follow the guidance in Task_Killer/GEMINI.md# Example 1: Add with project (auto-completes year and normalizes to ISO-like format)
Task_Killer/scripts/tw.sh \
add --title "Formal Languages and Automata" --due "12-30-23:50" --priority 高め --project "Website"
# Example 2: Mark as in progress
Task_Killer/scripts/tw.sh start --title "Formal Languages and Automata"
# Example 3: Update progress to 65
Task_Killer/scripts/tw.sh progress --title "Formal Languages and Automata" --value 65
# Example 4: Show current task list
Task_Killer/scripts/tw.sh list
Task_Killer/scripts/tw.sh list --project "Website"
# Example 5: Set/change project for an existing task
Task_Killer/scripts/tw.sh project --title "Formal Languages and Automata" --project "Website"Generate a Markdown table of open tasks (optionally filtered by project):
# Export open tasks to a Markdown file
Task_Killer/scripts/tw.sh report --output ./reports/open_tasks.md
# Filter by project
Task_Killer/scripts/tw.sh report --output ./reports/website_open_tasks.md --project "Website"Auto-refresh the report when tasks change using TaskWarrior hooks:
# Install hooks that regenerate the report on TaskWarrior exit
chmod +x Task_Killer/scripts/install_taskwarrior_hooks.sh
Task_Killer/scripts/install_taskwarrior_hooks.sh --report-path ./reports/open_tasks.md
# Optionally keep it project-scoped
Task_Killer/scripts/install_taskwarrior_hooks.sh --report-path ./reports/website_open_tasks.md --project "Website"
# Optional: push to a specific branch
Task_Killer/scripts/install_taskwarrior_hooks.sh --report-path ./reports/open_tasks.md --branch main
# If pushing over HTTPS with a token (recommended for non-interactive hooks):
# export GIT_SYNC_TOKEN=ghp_your_personal_access_tokenTask_Killer/
├─ LICENSE
├─ README.md
└─ Task_Killer/
├─ GEMINI.md
└─ scripts/
└─ tw.sh
- Supported environments: Linux, bash 5.x, TaskWarrior 2.6.x, jq 1.6
- Limitations:
- Fuzzy matching by description may return multiple or unintended candidates
- Timezone and locale differences can affect date parsing and scheduling
- Ensure UDA (e.g.,
uda.progress) is configured in~/.taskrc
- CHANGELOG:
CHANGELOG.md(if present) - Contributing Guide:
CONTRIBUTING.md(if present)
Issues and pull requests are welcome. The script is written in bash and uses set -euo pipefail. For larger changes, please open an issue to discuss before submitting a PR.
MIT License. See LICENSE for details.
- “Could not parse datetime” or “Invalid datetime”: verify the input format, or use
YYYY-MM-DDTHH:MMexplicitly. - Multiple/no candidates: provide a more specific title or use
--id. task/jqnot found: ensure both are installed and available inPATH.