Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add humanerd-drew/opencode-drewgent --skill kanban-dispatcher-stalledgit clone --depth 1 https://github.com/humanerd-drew/opencode-drewgentWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/humanerd-drew/opencode-drewgent/kanban-dispatcher-stalled)<a href="https://agentmods.dev/skills/humanerd-drew/opencode-drewgent/kanban-dispatcher-stalled"><img src="https://agentmods.dev/badge/skills/humanerd-drew/opencode-drewgent/kanban-dispatcher-stalled/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/humanerd-drew/opencode-drewgent/kanban-dispatcher-stalled"><img src="https://agentmods.dev/badge/skills/humanerd-drew/opencode-drewgent/kanban-dispatcher-stalled.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.04019 |
| Opus 5 | $0.00000 | $0.02010 |
| Sonnet 5 | $0.00000 | $0.00804 |
| Haiku 4.5 | $0.00000 | $0.00402 |
Grade A, and why
kanban-dispatcher-stalled scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 294 lines — stays where its author put it; the contents beside it link to each section on GitHub.
name: kanban-dispatcher-stalled description: kanban dispatcher cron이 안 돌거나 dead worker reclaim 실패를 4가지 fail mode로 진단 title: Kanban Dispatcher Stalled — 진단 스킬 type: skill space: growth tags: [skill, kanban, dispatcher, cron, launchd, diagnostics] created: 2026-06-01 updated: 2026-06-01 links:
- "[[@memory/kanban/KANBAN_INDEX]]"
- "[[@memory/growth/kanban-stuck-task-recovery]]"
- "[[@action/gateway/{{AGENT_NAME_LOWER}}-architecture-dataflow]]"
- "[[@identity/brain/rules]]"---
Kanban Dispatcher Stalled — 진단 스킬
kanban dispatcher가 안 돌거나 dead worker를 못 reclaim할 때 빠르게 진단하는 스킬. 4가지 fail mode를 차례로 검증.
Trigger
다음 중 하나라도 해당되면 이 skill 사용:
- "kanban이 안 움직여" / "task가 in_progress에서 안 풀려"
- kanban DB의 in_progress task가 claim_expires past인데도 그대로
- jobs.json의 kanban-dispatcher last_run_at이 1시간+ stale
- cron output/{board}-dispatcher/ 디렉토리에 새 파일이 안 생김
4가지 Fail Mode
1. launchd 트리거 부재 (가장 흔함)
jobs.json 등록은 됐는데 launchd plist가 없거나 unload됨.
# 1a. launchd에 트리거 plist가 떠있는지
launchctl list | grep -i '{{AGENT_NAME_LOWER}}\|kanban\|cron'
# 기대: ai.{{AGENT_NAME_LOWER}}.gateway 또는 ai.{{AGENT_NAME_LOWER}}.cron-runner 같은 plist label
# (quartz / n8n / kanban-dashboard / fswatch / nas-mount는 무관 — 별개 service)
# 1b. plist 파일 자체 존재 확인
ls -la ~/Library/LaunchAgents/ai.{{AGENT_NAME_LOWER}}.*.plist 2>/dev/null
ls -la ~/Library/LaunchAgents/com.{{AGENT_NAME_LOWER}}.*.plist 2>/dev/null
# 1c. gateway plist 내용 확인
plutil -p ~/Library/LaunchAgents/ai.{{AGENT_NAME_LOWER}}.gateway.plist 2>/dev/null
Fix: plist 부재 → {{AGENT_NAME_LOWER}}-update-checker skill 또는 수동 작성 후 launchctl load. gateway plist가 cron runner 역할도 해야 함 (embedded design).
2. Script 부재 / Path mismatch
script 파일이 jobs.json의 command path와 일치하지 않음.
# 2a. script 존재 확인
ls -la ~/.{{AGENT_NAME_LOWER}}/scripts/dispatch_once_*.py
# 2b. jobs.json의 script path와 비교
python3 -c "
import json
with open('~/.{{AGENT_NAME_LOWER}}/cron/jobs.json') as f:
jobs = json.load(f)
for j in jobs.get('jobs', []):
if 'dispatcher' in j.get('name','').lower():
print(f' {j[\"name\"]:35} | script={j.get(\"script\",\"?\")} | state={j.get(\"state\",\"?\")}')
"
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 294 lines · 0 tokens per session scan A 6eaed36f8020
kanban-dispatcher-stalled is a skill published in the GitHub repository humanerd-drew/opencode-drewgent (2 stars, last pushed 1mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 4,019 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
systemic-issue-triage
Trigger: new issue, bug report, triage, backlog, issue flood, community report, root cause, dead-end, blocked user. Attack issues by root class, never one-by-one; fixes must shrink the system, not grow it.
triage-issue
Intelligently triage bug reports and error messages by searching for duplicates in Jira and offering to create new issues or add comments to existing ones. When an agent needs to: (1) Triage a bug report or error message, (2) Check if an issue is a duplicate, (3) Find similar past issues, (4) Create a new bug ticket…
bug-triage
Read all open bugs in production/qa/bugs/, re-evaluate priority vs. severity, assign to sprints, surface systemic trends, and produce a triage report. Run at sprint start or when the bug count grows enough to need re-prioritization.
investigation
Create an investigation ticket + live-doc for sustained root-cause work (retros, bug archaeology, regression hunts).
browse-flows
Browse Power Automate environments and flows interactively. Use when the user wants to browse, list, or explore their flows and environments.
operating-cadence
Designs the rhythm an organization runs on — which reviews happen weekly, monthly and quarterly, what each one decides, who owns the numbers presented, and how a signal at the front line reaches the people who can act on it. Use this to set up a management operating system, fix a meeting calendar that produces no…