No Nonsense Tasks
sundial-org/awesome-openclaw-skills
No-nonsense task manager using SQLite. An agent skill from sundial-org/awesome-openclaw-skills.
Manage project tasks in a local SQLite DB (~/.claude/kanban-dbs/{project}.db).
$ npx skills add cyanluna-git/cyanluna.skills --skill kanban -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/cyanluna-git/cyanluna.skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/kanban .claude/skills/kanban && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "kanban" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban into .claude/skills/kanban/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanbanType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add cyanluna-git/cyanluna.skills --skill kanban -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanluna-git/cyanluna.skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/kanban .agents/skills/kanban && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "kanban" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban into .agents/skills/kanban/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cyanluna-git/cyanluna.skills --skill kanban -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanluna-git/cyanluna.skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/kanban .cursor/skills/kanban && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "kanban" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban into .cursor/skills/kanban/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/cyanluna-git/cyanluna.skills.git --path kanban--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add cyanluna-git/cyanluna.skills --skill kanban -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanluna-git/cyanluna.skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/kanban .gemini/skills/kanban && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "kanban" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban into .gemini/skills/kanban/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install cyanluna-git/cyanluna.skills kanbanInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add cyanluna-git/cyanluna.skills --skill kanban -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/cyanluna-git/cyanluna.skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/kanban .github/skills/kanban && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "kanban" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban into .github/skills/kanban/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cyanluna-git/cyanluna.skills --skill kanban -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cyanluna-git/cyanluna.skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/kanban .opencode/skills/kanban && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "kanban" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban into .opencode/skills/kanban/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
kanbanManage project tasks in a local SQLite DB (~/.claude/kanban-dbs/{project}.db).
Kanban is an agent skill from cyanluna-git/cyanluna.skills. Manage project tasks in a local SQLite DB (~/.claude/kanban-dbs/{project}.db). Supports task CRUD (add, edit, move, remove), board viewing, session context persistence, and statistics. For pipeline orchestration use /kanban-run, for requirements refinement use /kanban-refine. Run /kanban-init first to create the local DB.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts (for example `models.json`, `principles.md` and `schema.md`).
It sits in Productivity & Automation, covering Task management. It works with SQLite. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit df5be37. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
sqlite3python3gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Kanban loads about 3.6k tokens when it runs. Until then it costs about 83 tokens; SKILL.md has 627 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from cyanluna-git/cyanluna.skills at commit df5be37, republished under its MIT licence (© cyanluna-git). 627 words, ~3,619 tokens.
.claude/skills/kanban/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.Shared context: read
shared.mdfor DB path, pipeline levels, status transitions, DB operations, error handling, and agent context flow. Safety principles: readprinciples.md— mandatory, not optional.
/kanban or /kanban list — View BoardBOARD_JSON=$(sqlite3 -json "$DB" \
"SELECT id, title, status, priority, level, current_agent FROM tasks WHERE project='$PROJECT' ORDER BY status, rank, id")Python으로 column별 그룹화 후 markdown table 출력 (ID, Status, Priority, Title).
/kanban context — Session HandoffRun first when starting a new session. Fetch board and output pipeline state: Implementing / Plan Review / Impl Review / Testing / Recently Done / Next Todo.
BOARD_JSON=$(sqlite3 -json "$DB" \
"SELECT id, title, status, priority, level, current_agent FROM tasks WHERE project='$PROJECT' ORDER BY status, rank, id")/kanban context save — Save Session StateCaptures current board state + git branch + decisions made this session to .claude/kanban-context.md.
Use before ending a session so the next session can resume without context loss.
BOARD_JSON=$(sqlite3 -json "$DB" \
"SELECT id, title, status, priority, level FROM tasks WHERE project='$PROJECT' ORDER BY status, rank, id")
BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
DIRTY=$(git diff --stat 2>/dev/null | tail -1 || echo "")Write .claude/kanban-context.md with:
impl / impl_review / test columns (ID, title, status)plan_review or impl_review (needs human decision)todo column$DIRTY)Add .claude/kanban-context.md to .gitignore if not already present.
/kanban context restore — Restore Session StateLoads .claude/kanban-context.md if it exists, then fetches live board to show what changed since save.
Use at session start instead of /kanban context when you were mid-task last session.
SAVED=$(cat .claude/kanban-context.md 2>/dev/null || echo "")
BOARD_JSON=$(sqlite3 -json "$DB" \
"SELECT id, title, status, priority, level FROM tasks WHERE project='$PROJECT' ORDER BY status, rank, id")Output:
/kanban add <title> — Add Task/kanban move <ID> <status> — Move Task반드시
shared.md→ Move Protocol 순서를 따를 것. Step 1(현재 status+level 확인) → Step 2(매트릭스 조회) → Step 3(유효성 검사 후 이동 실행). 유효하지 않은 전환 시 오류 출력, 사용자에게 올바른 다음 상태 안내.
/kanban edit <ID> — Edit TaskAsk user which fields to modify, then update via sqlite3 CLI.
/kanban remove <ID> — Delete Tasksqlite3 "$DB" "DELETE FROM tasks WHERE id=$ID AND project='$PROJECT'"/kanban stats — StatisticsBOARD_JSON=$(sqlite3 -json "$DB" \
"SELECT id, title, status, priority, level, agent_log FROM tasks WHERE project='$PROJECT' ORDER BY status, rank, id")
python3 << 'PY'
import json, sys
from collections import defaultdict
rows = json.loads(sys.stdin.read())
board = {}
for row in rows:
board.setdefault(row['status'], []).append(row)
columns = ['todo', 'plan', 'plan_review', 'impl', 'impl_review', 'test', 'done']
# Column counts
counts = {col: len(board.get(col, [])) for col in columns}
counts['total'] = sum(counts.values())
print("## Column Counts\n")
print("| Status | Count |")
print("|--------|-------|")
for col in columns:
print(f"| {col} | {counts[col]} |")
print(f"| **total** | **{counts['total']}** |")
# Token stats per agent
agent_stats = defaultdict(lambda: {'entries': 0, 'tokens': 0})
for col in columns:
for task in board.get(col, []):
raw = task.get('agent_log')
if not raw:
continue
try:
logs = json.loads(raw) if isinstance(raw, str) else raw
except (json.JSONDecodeError, TypeError):
continue
for entry in logs:
agent = entry.get('agent', 'unknown')
agent_stats[agent]['entries'] += 1
agent_stats[agent]['tokens'] += entry.get('tokens', 0)
total_tokens = sum(v['tokens'] for v in agent_stats.values())
total_entries = sum(v['entries'] for v in agent_stats.values())
print("\n## Agent Token Usage\n")
if total_tokens == 0:
print("No token data")
else:
print("| Agent | Entries | Tokens (est.) |")
print("|-------|---------|---------------|")
for agent in sorted(agent_stats):
s = agent_stats[agent]
print(f"| {agent} | {s['entries']} | {s['tokens']:,} |")
print(f"| **Total** | **{total_entries}** | **{total_tokens:,}** |")
PYPass BOARD_JSON to stdin: echo "$BOARD_JSON" | python3 - <<'PY' ...
/kanban stats health — Code Health ScoreAuto-detects available tools and computes a 0–10 composite code health score. Use when: "health check", "코드 품질 확인", "how healthy is this codebase".
python3 - <<'PY'
import subprocess, json, sys
checks = []
def run(cmd, label, parse=None):
try:
r = subprocess.run(cmd, capture_output=True, text=True, timeout=30)
ok = r.returncode == 0
detail = parse(r) if parse else ""
checks.append({"label": label, "ok": ok, "detail": detail})
except FileNotFoundError:
pass # tool not installed — skip silently
except subprocess.TimeoutExpired:
checks.append({"label": label, "ok": False, "detail": "timeout"})
# TypeScript
run(["npx", "--no", "tsc", "--noEmit", "--pretty", "false"],
"TypeScript",
lambda r: f"{r.stdout.count('error TS')} errors" if r.returncode != 0 else "")
# Python type check (pyright preferred, mypy fallback)
if subprocess.run(["which", "pyright"], capture_output=True).returncode == 0:
run(["pyright", "--outputjson"], "Pyright",
lambda r: f"{json.loads(r.stdout).get('summary',{}).get('errorCount',0)} errors" if r.stdout else "")
elif subprocess.run(["which", "mypy"], capture_output=True).returncode == 0:
run(["mypy", ".", "--ignore-missing-imports"], "mypy",
lambda r: r.stdout.strip().split('\n')[-1] if r.stdout else "")
# Linter
if subprocess.run(["which", "ruff"], capture_output=True).returncode == 0:
run(["ruff", "check", "--statistics"], "ruff",
lambda r: r.stdout.strip().split('\n')[0] if r.stdout else "")
elif subprocess.run(["npx", "--no", "eslint", "--version"], capture_output=True).returncode == 0:
run(["npx", "--no", "eslint", ".", "--max-warnings=0"], "ESLint",
lambda r: f"{r.stdout.count('warning') + r.stdout.count('error')} issues" if r.returncode != 0 else "")
# Tests
if subprocess.run(["which", "pytest"], capture_output=True).returncode == 0:
run(["pytest", "--tb=no", "-q"], "pytest",
lambda r: r.stdout.strip().split('\n')[-1] if r.stdout else "")
elif subprocess.run(["npx", "--no", "jest", "--version"], capture_output=True).returncode == 0:
run(["npx", "--no", "jest", "--passWithNoTests", "--silent"], "Jest",
lambda r: r.stderr.strip().split('\n')[-1] if r.stderr else "")
# Rust
run(["cargo", "check", "--quiet"], "cargo check")
# Shell lint
if subprocess.run(["which", "shellcheck"], capture_output=True).returncode == 0:
sh_files = subprocess.run(["find", ".", "-name", "*.sh", "-not", "-path", "*/.git/*"],
capture_output=True, text=True).stdout.strip().split()
if sh_files:
run(["shellcheck"] + sh_files[:20], "shellcheck",
lambda r: f"{r.stdout.count('SC')} warnings" if r.returncode != 0 else "")
# Score
if not checks:
print("## Code Health\nNo supported tools found (tsc/pyright/ruff/pytest/jest/cargo/shellcheck).")
sys.exit(0)
passed = sum(1 for c in checks if c["ok"])
score = round(passed / len(checks) * 10, 1)
grade = "🟢" if score >= 8 else "🟡" if score >= 5 else "🔴"
print(f"## Code Health: {grade} {score}/10 ({passed}/{len(checks)} checks passed)\n")
print("| Check | Status | Detail |")
print("|-------|--------|--------|")
for c in checks:
icon = "✅" if c["ok"] else "❌"
print(f"| {c['label']} | {icon} | {c['detail'] or ''} |")
PY/kanban retro — Retrospective AnalysisAnalyzes completed tasks + git history to produce a sprint retrospective report. Use at end of week/sprint: "kanban retro", "주간 회고", "what did we ship this week".
BOARD_JSON=$(sqlite3 -json "$DB" \
"SELECT id, title, status, priority, level, agent_log, impl_review_count FROM tasks WHERE project='$PROJECT' ORDER BY status, rank, id")
python3 - <<'PY'
import json, sys, subprocess
from collections import defaultdict
rows = json.loads(sys.stdin.read())
board = {}
for row in rows:
board.setdefault(row['status'], []).append(row)
columns = ['todo', 'plan', 'plan_review', 'impl', 'impl_review', 'test', 'done']
done_tasks = board.get('done', [])
print("## Retrospective\n")
# --- Completed tasks ---
print(f"### Completed: {len(done_tasks)} tasks\n")
if done_tasks:
print("| ID | Title | Level | Rework |")
print("|----|-------|-------|--------|")
for t in done_tasks[-10:]:
rework = t.get('impl_review_count', 0) or 0
flag = f"⚠️ {rework}x" if rework > 1 else "✅"
print(f"| {t.get('id','')} | {t.get('title','')[:45]} | L{t.get('level',1)} | {flag} |")
# --- Rework rate ---
rework_tasks = [t for t in done_tasks if (t.get('impl_review_count') or 0) > 1]
rate = len(rework_tasks) / len(done_tasks) * 100 if done_tasks else 0
print(f"\n**Rework rate**: {rate:.0f}% ({len(rework_tasks)}/{len(done_tasks)} tasks needed re-impl)")
# --- Pipeline snapshot (non-done) ---
snapshot = {col: len(board.get(col, [])) for col in columns[:-1] if board.get(col)}
if snapshot:
print("\n### Pipeline Snapshot\n")
print("| Column | Count |")
print("|--------|-------|")
for col, count in snapshot.items():
print(f"| {col} | {count} |")
# --- Agent token spend (done tasks) ---
agent_stats = defaultdict(lambda: {'entries': 0, 'tokens': 0})
for t in done_tasks:
raw = t.get('agent_log')
if not raw:
continue
try:
logs = json.loads(raw) if isinstance(raw, str) else raw
except (json.JSONDecodeError, TypeError):
continue
for entry in logs:
a = entry.get('agent', 'unknown')
agent_stats[a]['entries'] += 1
agent_stats[a]['tokens'] += entry.get('tokens', 0)
total = sum(v['tokens'] for v in agent_stats.values())
if total > 0:
print(f"\n### Token Spend (completed): {total:,} est.\n")
print("| Agent | Tokens |")
print("|-------|--------|")
for a in sorted(agent_stats, key=lambda x: -agent_stats[x]['tokens']):
print(f"| {a} | {agent_stats[a]['tokens']:,} |")
# --- Git commits ---
git = subprocess.run(
['git', 'log', '--oneline', '--since=7 days ago'],
capture_output=True, text=True
)
commits = [l for l in git.stdout.strip().split('\n') if l]
if commits:
print(f"\n### Git Activity: {len(commits)} commits (last 7 days)")
PYPass BOARD_JSON to stdin. To scope to a custom period (e.g. 14 days), adjust --since=14 days ago in the git subprocess call.
/kanban project — Current Project ContextFetch the current project's context from the projects table.
sqlite3 -json "$DB" "SELECT * FROM projects WHERE id='$PROJECT'"Output formatted project context: Purpose, Stack, Brief, Category, task counts by status, linked projects.
If the project is not registered, suggest running /kanban-init to register it.
/kanban project all — Full Project Mapsqlite3 -json "$DB" "SELECT id, name, purpose, status, category FROM projects ORDER BY category, name"Output: projects grouped by category with names and purposes.
/kanban project brief — View/Update Project BriefThe brief is a compressed context summary (200–500 chars) that agents consume at low token cost.
View current brief:
sqlite3 "$DB" "SELECT brief FROM projects WHERE id='$PROJECT'"Set brief directly:
sqlite3 "$DB" "UPDATE projects SET brief='...' WHERE id='$PROJECT'"AI-assisted update (/kanban project brief update):
/kanban project update <field> <value> — Edit Project Metadatasqlite3 "$DB" "UPDATE projects SET purpose='...' WHERE id='$PROJECT'"
sqlite3 "$DB" "UPDATE projects SET status='archived' WHERE id='$PROJECT'"Supported fields: name, purpose, stack, brief, status, category, repo_url.
/kanban project link — Manage Project Relationships# Add relationship
sqlite3 "$DB" "INSERT OR IGNORE INTO project_links (source_id, target_id, relation) VALUES ('$PROJECT', 'other-project', 'depends_on')"
# Remove relationship
sqlite3 "$DB" "DELETE FROM project_links WHERE source_id='$PROJECT' AND target_id='other-project' AND relation='depends_on'"
# List links
sqlite3 -json "$DB" "SELECT * FROM project_links WHERE source_id='$PROJECT'"Relations: extends, serves, depends_on, shares_data.
Run /kanban-init first to create the local SQLite DB and register the project.
Add to .gitignore:
.claude/kanban.json
.codex/kanban.json
.claude/kanban-context.mdDB is stored at ~/.claude/kanban-dbs/<PROJECT>.db — not in the project directory.
© cyanluna-git, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (scripts) in kanban of cyanluna-git/cyanluna.skills.
Open the folder on GitHubat commit df5be37
Kanban next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Kanban this skillcyanluna-git/cyanluna.skills | 183 | — | ~3.6k | Automated safety check: Pass | MIT | |
| No Nonsense Taskssundial-org/awesome-openclaw-skills | 663 | — | ~835 | Automated safety check: Pass | None | |
| TaskflowLeoYeAI/openclaw-master-skills | 2.2k | — | ~6.5k | Automated safety check: Pass | MIT | |
| Retinuejklthinking/retinue | 115 | — | ~279 | Automated safety check: Pass | MIT | |
| Task Backlog Managermp-web3/claude-starter-kit | 109 | — | ~1.2k | Automated safety check: Notes | MIT | |
| Superset Agent Standupsuperset-sh/superset | 15k | — | ~712 | Automated safety check: Pass | Custom licence |
sundial-org/awesome-openclaw-skills
No-nonsense task manager using SQLite. An agent skill from sundial-org/awesome-openclaw-skills.
LeoYeAI/openclaw-master-skills
Structured project/task management for OpenClaw agents — markdown-first authoring, SQLite-backed querying, bidirectional sync, CLI, Apple Notes integration.
jklthinking/retinue
Coordinate work through a local Retinue workspace using its MCP tools.
mp-web3/claude-starter-kit
Keeps a personal task backlog in SQLite behind a /tasks command that adds, reviews, completes and measures tasks against a list of long-term problems.
superset-sh/superset
Sweeps every Superset workspace, task and agent terminal to report what finished, what needs review and what is blocked, read-only, and can publish the digest as a page.
agentrq/agentrq
Guides a workspace agent through executing assigned tasks, replying to a remote human operator, and creating sub-tasks, memory and events inside an AgentRQ workspace.
cyanluna-git/cyanluna.skills
Run multiple kanban tasks end-to-end in Rolling Wave order — refine each task based on the prior card's actual implementation, then implement, then verify, then refine the next.
cyanluna-git/cyanluna.skills
Codebase exploration skill for uncertain implementation direction.
cyanluna-git/cyanluna.skills
Local markdown-file kanban for toy and personal projects. An agent skill from cyanluna-git/cyanluna.skills.
cyanluna-git/cyanluna.skills
Run the AI team pipeline for kanban tasks — orchestration loop with 6 agents (Planner, Critic, Builder, Shield, Inspector, Ranger), single-step execution, and code review.
cyanluna-git/cyanluna.skills
Turn vague intent into a precise, executable spec through 5 structured phases, then optionally create a kanban task.
cyanluna-git/cyanluna.skills
Full project pipeline — SRS → Plan → Tasks + TDD → Rolling Wave Execute.
Works with
Categories
Manage project tasks in a local SQLite DB (~/.claude/kanban-dbs/{project}.db). skills.db).
Kanban fits situations like: tasks that involve Task management.
Run `npx skills add cyanluna-git/cyanluna.skills --skill kanban -a claude-code`. Or copy the skill folder (kanban in cyanluna-git/cyanluna.skills) into .claude/skills/kanban in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cyanluna-git/cyanluna.skills --skill kanban -a codex`. Or copy the skill folder (kanban in cyanluna-git/cyanluna.skills) into .agents/skills/kanban in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cyanluna-git/cyanluna.skills --skill kanban -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/kanban, .gemini/skills/kanban, .github/skills/kanban and .opencode/skills/kanban in your project.
Going by SKILL.md and its folder, Kanban needs Python for the scripts in its folder and the command-line tools its instructions call (sqlite3, python3 and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Kanban is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Kanban: No Nonsense Tasks (sundial-org/awesome-openclaw-skills, 663 stars), Taskflow (LeoYeAI/openclaw-master-skills, 2.2k stars), Retinue (jklthinking/retinue, 115 stars) and Task Backlog Manager (mp-web3/claude-starter-kit, 109 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cyanluna-git (a GitHub user) maintains it in cyanluna-git/cyanluna.skills, which has 183 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on June 22, 2026.
Source: cyanluna-git/cyanluna.skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.