plugins/lisa-cursor/skills/task-decomposition/SKILL.md
Methodology for breaking work into ordered tasks. Cross-repo source PRDs and coordination containers stay cross-repo; each buildable leaf task gets a single-repo scope, acceptance criteria, verification type, dependencies, and skills required.
npx skillsauth add codyswanngt/lisa task-decompositionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Break work into ordered, well-scoped tasks that can be independently implemented and verified.
Start from the right shape:
That last point is a hard invariant — downstream validators (jira-validate-ticket, github-validate-issue, linear-validate-issue) gate writes on it, so a cross-repo leaf will fail to be created.
Apply this rule by layer:
| Layer | Repo scope | |-------|------------| | PRD / source initiative | MAY span repos — it describes the full initiative | | Epic, Story, Spike | MAY span repos — these are coordination containers | | Task, Bug, Sub-task, Improvement | MUST name exactly one repo — these are buildable leaf work units |
If a candidate work unit naturally touches multiple repos (e.g., "add field to backend API and consume it in mobile app"), do not write it as one ticket. Instead:
[backend-api] Add field to /users endpoint, [mobile-app] Display new field on profile screen).Dependencies in step 4 — typically the producing repo (backend) blocks the consuming repo (frontend/mobile).[repo-name] as a summary prefix so the repo is visible in tracker lists at a glance.Reject any work unit whose acceptance criteria reference behavior in a different repo from the one it's scoped to. If you find yourself writing "and the frontend should also...", that's a signal to split.
This is the decomposition-time strategy (greenfield — you are creating the tickets now, so a cross-repo PRD can stay whole, its Epic/Story/Spike containers can stay cross-repo, and a parent Story + per-repo children is the natural shape). It is distinct from the work-time strategy in the repo-scope-split rule, which applies when an agent picks up an already-existing leaf ticket to implement and discovers it spans repos: there it narrows the original in place and spins off sibling work units rather than introducing a new parent. Use the phase-appropriate one; do not mix them.
For each task, define what "done" looks like:
Each task must have a verification method. Choose the most appropriate:
| Verification Type | When to Use | |-------------------|-------------| | Unit test | Pure logic, data transformations, utility functions | | Integration test | Cross-module interactions, database operations, API contracts | | E2E test | User-facing workflows, multi-service interactions | | Manual verification | UI/UX behavior, visual correctness, one-time infrastructure changes | | Build verification | Compilation, type checking, linting, bundle size | | Deploy verification | Service health checks, smoke tests, monitoring dashboards |
Map each task to the skills needed to complete it. This enables delegation to specialized agents or helps identify what expertise is required.
## Task Breakdown
### Task 1: [[repo-name] imperative description]
- **Repository:** [single repo name, or N/A for Epic/Story/Spike]
- **Acceptance criteria:**
- [specific, measurable criterion]
- [specific, measurable criterion]
- **Verification:** [type] -- [how to verify]
- **Dependencies:** [none | task IDs that must complete first]
- **Skills:** [list of skills needed]
### Task 2: [[repo-name] imperative description]
- **Repository:** [single repo name, or N/A for Epic/Story/Spike]
- **Acceptance criteria:**
- [specific, measurable criterion]
- **Verification:** [type] -- [how to verify]
- **Dependencies:** [Task 1]
- **Skills:** [list of skills needed]
### Execution Order
1. [Task 1, Task 3] (parallel -- no dependencies)
2. [Task 2] (depends on Task 1)
3. [Task 4] (depends on Task 2, Task 3)
### External Dependencies
- [dependency] -- [who owns it] -- [current status]
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and