From waggle
Performs a health check on tasks. Analyzes task age (stagnation), field completeness by status, blocked tasks (including other assignees' blockers), and executor ratio (human vs AI delegation). Supports 3 modes: specific assignee (by name), all tasks (team-wide overview), or defaults to current user when no target is specified. Use this skill whenever the user wants to monitor task health, check stagnation, audit task quality, or review AI delegation metrics — even if they don't say "monitor" explicitly. Triggers on: "monitor tasks", "task health check", "task analysis", "stagnation report", "task monitoring", "task report"
npx claudepluginhub kazukinagata/waggle --plugin waggleThis skill uses the workspace's default tool permissions.
You are performing a health check on tasks in the configured data source. This skill analyzes 5 dimensions: task age, field quality, blocked tasks, executor ratio, and acknowledgment status.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
You are performing a health check on tasks in the configured data source. This skill analyzes 5 dimensions: task age, field quality, blocked tasks, executor ratio, and acknowledgment status.
Invoke the bootstrap-session skill to establish the active provider and current user.
Skip if active_provider and current_user are already set in this conversation.
Determine the target based on the user's request:
| User Request | Mode | Target |
|---|---|---|
| Mentions a person's name (e.g., "yagishitaryoma's tasks") | user | Resolve via looking-up-members |
| Says "all tasks", "team", "overall" | all | No assignee filter |
| No target specified | user | current_user |
For mode=user with a name, invoke the looking-up-members skill to resolve the name to a user ID. If ambiguous, ask the user to clarify.
Store the result as:
target_mode: "user" or "all"target_id: user UUID (only for mode=user)target_name: display name (or "All" for mode=all)Two queries are needed. Use the Query Path Detection from the provider SKILL.md (loaded in Session Bootstrap) to execute each query. The provider determines the optimal query mechanism.
mode=user — all tasks assigned to the target user (all statuses). Filter by Assignee containing target_id.
mode=all — all tasks (no filter).
All tasks with Status = Blocked, regardless of assignee. This captures blockers assigned to other people that may affect the target user's workflow.
Use the provider's query mechanism (determined by Query Path Detection) to execute both queries. Save results to temp files:
/tmp/monitor_tasks.json — Query A results/tmp/monitor_blocked.json — Query B resultsBoth files should be in the provider's native format (e.g., {"results": [...]} for Notion).
bash "${CLAUDE_SKILL_DIR}/scripts/analyze-tasks.sh" \
"<target_mode>" "<target_id>" "<target_name>" \
/tmp/monitor_tasks.json /tmp/monitor_blocked.json
The script outputs a JSON object with 6 sections: age, quality, blocked, executor_ratio, acknowledgment, and quality_debt. Parse this output and render the report as described in Step 4.
If the analysis script is not available (no bash, no jq), compute the metrics manually from the fetched data:
Age: For each task, compute (today - created_time) in days. Group by status, calculate count/avg/min/max. Find the top 10 non-Done tasks by age.
Quality: For each status, check field completeness:
issuer_pct). List tasks missing required fields.Blocked: List all Blocked tasks (from Query B) with assignee names, priority, and age. Sort by age descending.
Executor Ratio: Count tasks by executor value (human, cli, claude-desktop, cowork, unset) across three slices: all tasks, Done only, non-Done only.
Acknowledgment Status: Find tasks where Acknowledged At is null AND Assignee is non-empty AND Issuer person IDs do not overlap with Assignee person IDs (i.e., assigned by someone else and not yet seen). List with title, assignee name, issuer name, and days since task creation.
Quality Debt: Three sub-dimensions surface retroactive improvement targets:
[DRAFT (case-insensitive) and status is not Blocked / Done / Cancelled. These are placeholders from ingest flows that were never refined.test task — delete me, delete me, wip delete, bare test task). These should be cleaned up.Format the analysis results as a markdown report. Respond in the user's language.
# Task Health Report — {target_name}
_Generated: {date} | Total: {n} tasks_
## 1. Task Age
Table: Status | Count | Avg Days | Min | Max
Subsection: Top 10 Stagnating Tasks (non-Done, sorted by age desc)
## 2. Task Quality
Table: Status | Description | AC | Exec Plan | Assignee | Executor
(show percentages, highlight values below 50% as concerning)
Subsection: Tasks Missing Required Fields (title, status, missing fields)
## 3. Blocked Tasks (All Assignees)
Table: Title | Assignee | Priority | Age (days)
(sorted by age desc, includes tasks from other assignees)
## 4. Executor Ratio
Table: Executor | All | Done | Active (non-Done)
(show both counts and percentages)
Compute AI ratio = (cli + claude-code + claude-desktop + cowork) / total
## 5. Acknowledgment Status
Table: Title | Assignee | Issuer | Unacknowledged Days | Status
(tasks where Acknowledged At is null, assigned by someone else, sorted by age desc)
Show count: "N tasks not yet acknowledged by their assignee"
## 6. Quality Debt
### DRAFT AC ({count})
Table: Title | Status | Age (days) | AC Preview
(tasks where AC contains "[DRAFT" and status is not Blocked / Done / Cancelled)
### Priority Missing ({count})
Table: Title | Status | Age (days)
(non-Done / non-Cancelled tasks without a Priority set)
### Test Tasks ({count})
Table: Title | Status | ID
(titles matching test-task placeholder patterns — suggest cleanup)
### 🚀 Quick Action
If any of the above counts are > 0, include a copy-paste ready command that
invokes planning-tasks on the DRAFT AC task IDs, so the user can refine them
in bulk without having to figure out the invocation syntax themselves:
Invoke the `planning-tasks` skill in batch mode for: <task_id_1>, <task_id_2>, ...
Also emit an emphasized banner when DRAFT AC count has remained stagnant
for 2+ weeks:
⚠️ Quality debt has been stagnant for 2+ weeks. Consider running the
batch planning command above.
(Historical comparison is a future enhancement; for now the banner is
based on the caller's judgment.)
## Recommendations
Detect parent/subtask status inconsistencies:
Report as a table: Title | Issue | Parent/Subtask | Suggested Fix
Generate 3-5 actionable recommendations based on findings. Focus on:
planning-tasks in batch. Keep this a user-initiated suggestion — do not auto-dispatch, to avoid bulk side-effects.