tasks
npx machina-cli add skill TonyCasey/lisa/tasks --openclawPurpose
Model-neutral helper to add/list tasks in Graphiti MCP so any agent can keep a shared task board.
Triggers
Use when the user says: "add a task", "list tasks", "load tasks", "task status".
How to use
- List:
lisa tasks list --cache [--group <id>] [--limit 20] [--all|--since today] - Add:
lisa tasks add "<task text>" [--status todo|doing|done] [--tag foo] [--group <id>] --cache - Defaults: reads ${GRAPHITI_ENDPOINT} from
.lisa/.env(written by init); group ID is automatically derived from the project folder path. List defaults to--since todayunless--allor--sinceis provided. - Cache fallback: writes/reads
cache/tasks.logwhen--cacheis passed, returning last cached result on MCP failure. - Keep prompts model-neutral; models only orchestrate CLI commands and summarize JSON output.
I/O contract (examples)
- List:
{ status: "ok", action: "list", tasks: [...] } - Add:
{ status: "ok", action: "add", task: { text, status, group } } - Fallback:
{ status: "fallback", error, fallback: <cached object> }
Cross-model checklist
- Claude: concise instructions; avoid role tokens; keep outputs small.
- Gemini: explicit commands and minimal formatting.
Notes
- All commands use the
lisaCLI binary — no scripts to run directly. - Tasks are stored via Graphiti MCP
add_task/list_tasks.
Source
git clone https://github.com/TonyCasey/lisa/blob/main/src/project/.lisa/skills/tasks/SKILL.mdView on GitHub Overview
This skill provides a model-neutral helper to add/list tasks in Graphiti MCP so any agent can keep a shared task board. It’s activated by phrases like 'add a task' or 'list tasks' and uses the Lisa CLI to perform Graphiti MCP operations, returning structured JSON.
How This Skill Works
It uses the lisa CLI to call Graphiti MCP's add_task and list_tasks endpoints. Defaults read GRAPHITI_ENDPOINT from .lisa/.env and the group ID is derived from the project path. If you pass --cache, results are cached and used if MCP fails, and outputs adhere to a standard JSON I/O contract; models remain responsible for orchestrating CLI commands and parsing the JSON output.
When to Use It
- User asks to add a new task with specific text and optional status or tags
- User asks to list tasks for a specific project/group or with a limit
- User wants to load tasks with a cache fallback when the MCP is unavailable
- User wants to view tasks by status (todo/doing/done) or with tags
- Multiple models (e.g., Claude, Gemini) need a consistent, model-neutral shared task board
Quick Start
- Step 1: Ensure GRAPHITI_ENDPOINT is set in .lisa/.env and you’re in the project root
- Step 2: Run lisa tasks list or lisa tasks add with your desired flags (e.g., --group, --status, --tag, --cache)
- Step 3: Read the JSON output (e.g., { status: "ok", action: "list", tasks: [...] }) and act accordingly
Best Practices
- Always provide clear task text when using the 'add' action and include optional status or tag data if relevant
- Use --group to target a specific project; let the system auto-derive the group when possible
- Enable --cache for reliability; cache is written/read from cache/tasks.log for MCP fallback
- Keep prompts model-neutral and rely on explicit CLI commands (no scripting) for predictability
- Rely on the I/O contract (status/action/tasks or fallback) for downstream parsing
Example Use Cases
- List tasks for a project: lisa tasks list --group dev-team --limit 20
- Add a new task: lisa tasks add "Design login page" --status todo --tag frontend --group dev-team --cache
- Output example: { status: "ok", action: "list", tasks: [...] }
- Fallback example after MCP failure: { status: "fallback", error, fallback: <cached object> }
- List all tasks for a broader view: lisa tasks list --all --group analytics --cache --limit 50