Skill: aghareza/taskwarrior (version 0.1.3)

--- name: taskwarrior description: > Workspace-local task management powered by Taskwarrior. Add, organize, and track tasks by project, tags, due dates, and priority with all data stored inside the active workspace. metadata: | { "openclaw": { "requires": { "bins": ["task"] }, "install": [ { "kind": "apt", "bins": ["task"], "packages": ["taskwarrior"] }, { "kind": "brew", "bins": ["task"], "packages": ["task"] } ] } } --- # Taskwarrior (Workspace-Local Tasks) — AgentSkill ## Skill name taskwarrior ## Purpose Manage tasks using Taskwarrior as the backend with data stored inside the current workspace. This skill provides a safe, workspace-scoped wrapper for common Taskwarrior operations (add/list/modify/done/projects/tags/due/priority/annotations). ## Runtime requirements (ClawHub) This skill **requires Taskwarrior to already be available** in the runtime environment (e.g., included in the base image). - Validation: run `task --version` - If missing: report the dependency and instruct the environment owner to install system package **taskwarrior** (some distros package it as **task**). This skill **does not perform system-level installs** (no `apt`, `brew`, `dnf`, etc.). ## Workspace root resolution (portable) The skill resolves the workspace root at runtime: 1) If set, use the first available of: - OPENCLAW_WORKSPACE - WORKSPACE - PROJECT_DIR - REPO_ROOT 2) Otherwise, fallback to the current working directory. All Taskwarrior data is stored under: `<workspace>/.openclaw/taskwarrior/` ## Workspace-local Taskwarrior home - taskrc: `<workspace>/.openclaw/taskwarrior/taskrc` - data dir: `<workspace>/.openclaw/taskwarrior/.task/` Every Taskwarrior command MUST run with: - `TASKRC=<workspace>/.openclaw/taskwarrior/taskrc` - (optional) `TASKDATA=<workspace>/.openclaw/taskwarrior/.task` Never write to global `~/.task` or `~/.taskrc` unless the user explicitly asks to use global storage. ## Core workflow 1) **Check dependency** - Run: `task --version` - If missing: stop and return dependency instructions (see references/clawhub_notes.md). 2) **Initialize workspace storage** - Ensure directories exist: - `<workspace>/.openclaw/taskwarrior/` - `<workspace>/.openclaw/taskwarrior/.task/` - Ensure `<workspace>/.openclaw/taskwarrior/taskrc` contains at least: - `data.location=<workspace>/.openclaw/taskwarrior/.task` - `confirmation=off` - `verbose=off` 3) **Execute requested operations** - Prefer stable/common commands (see references/taskwarrior_cheatsheet.md). 4) **Verify results** - After any mutation, show a focused `task <id> info` or filtered `task <filter> list`. ## Supported operations (useful subset) - Add tasks: `task add ...` - List tasks: `task list`, `task <filter> list` - Modify tasks: `task <id> modify ...` - Complete tasks: `task <id> done` - Start/stop: `task <id> start|stop` (if desired) - Projects/tags: `task projects`, `task tags`, `project:<name>`, `+tag`, `-tag` - Due/priorities: `due:<date>`, `priority:H|M|L` - Notes: `task <id> annotate "..."` ## Safety Follow `references/safe_command_policy.md`. Highlights: - No delete/purge unless explicitly requested. - Avoid broad bulk changes without previewing the matching set. - No global config writes by default. ## References - references/workspace_data_layout.md - references/taskwarrior_cheatsheet.md - references/safe_command_policy.md - references/examples.md - references/clawhub_notes.md

path: references/examples.md
content: # Examples

## Add task with project and due date
User: “Add ‘Call plumber’ to project house due Friday, high priority.”
Command: `task add project:house due:friday priority:H "Call plumber"`

## List due this week
User: “What’s due this week?”
Command: `task due.before:eow list`

## Modify metadata
User: “Add tag email to task 7 and move it to project work.”
Command: `task 7 modify +email project:work`

## Complete
User: “Mark task 12 done.”
Command: `task 12 done`


path: references/clawhub_notes.md
content: # ClawHub notes

## Dependency model
- This skill assumes Taskwarrior is installed in the runtime/base image.
- The skill does **not** run system package installs at runtime.

If `task --version` fails, return a dependency message like:
“Taskwarrior is required but not present. Please install system package `taskwarrior` (or `task`) in the runtime image, then re-run.”

## Workspace scoping
- Always store data under `.openclaw/taskwarrior/` within the resolved workspace root.
- Do not use or modify global `~/.task` unless the user explicitly requests global storage.

## Optional environment inputs
The skill may read these if provided, but does not require them:
- OPENCLAW_WORKSPACE
- WORKSPACE
- PROJECT_DIR
- REPO_ROOT

Fallback is always the current working directory.


path: references/install.md
content: # Taskwarrior availability (ClawHub-friendly)

This skill **does not install Taskwarrior at runtime**.

## Requirement
Taskwarrior must be present in the runtime environment.

## Validation
- `task --version`

## If missing
Ask the environment/runtime owner to install Taskwarrior in the base image:

- Debian/Ubuntu: `taskwarrior`
- Fedora/RHEL (varies): `task` or `taskwarrior`
- Arch: `task`
- macOS (local dev): `task` (Homebrew)

Once installed, re-run `task --version` and proceed.


path: references/workspace_data_layout.md
content: # Workspace layout

All state is stored under:
`<workspace>/.openclaw/taskwarrior/`

## Paths
- taskrc: `<workspace>/.openclaw/taskwarrior/taskrc`
- data: `<workspace>/.openclaw/taskwarrior/.task/`

## Environment variables used per command
- `TASKRC=<workspace>/.openclaw/taskwarrior/taskrc`
- `TASKDATA=<workspace>/.openclaw/taskwarrior/.task` (optional)

## Minimum taskrc
data.location=<workspace>/.openclaw/taskwarrior/.task
confirmation=off
verbose=off


path: references/safe_command_policy.md
content: # Safe command policy

## Allowed by default
Read-only:
- `task --version`
- `task list`, `task <filter> list`
- `task <id> info`
- `task projects`, `task tags`

Write (safe):
- `task add ...`
- `task <id> modify ...`
- `task <id> done`
- `task <id> start|stop`
- `task <id> annotate "..."`

## Not allowed unless explicitly requested
- `task delete`
- `task purge`
- bulk changes without preview (e.g. `task project:X modify ...`)
- writing to global `~/.task` or `~/.taskrc`

## Bulk action policy
If user requests a bulk change:
1) Preview: `task <filter> list`
2) State how many tasks match
3) Proceed only if the request clearly implies bulk intent


path: references/taskwarrior_cheatsheet.md
content: # Cheatsheet (useful subset)

## Add
- `task add <description>`
- `task add project:<p> +tag1 +tag2 due:2026-03-01 priority:H <description>`

## List
- `task list`
- `task project:<p> list`
- `task due.before:eow list`
- `task +tag list`

## Modify
- `task <id> modify project:<p> +tag -tag due:2026-03-01 priority:M`
- Clear due: `task <id> modify due:`

## Complete
- `task <id> done`

## Annotate
- `task <id> annotate "note here"`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)