Superset Agent Standup
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.
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.
$ npx skills add cyanluna-git/cyanluna.skills --skill kanban-run -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban-run --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-run .claude/skills/kanban-run && 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-run" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban-run into .claude/skills/kanban-run/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban-run", 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/kanban-runType 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-run -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban-run --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-run .agents/skills/kanban-run && 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-run" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban-run into .agents/skills/kanban-run/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban-run", 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-run -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban-run --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-run .cursor/skills/kanban-run && 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-run" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban-run into .cursor/skills/kanban-run/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban-run", 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-run--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-run -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cyanluna-git/cyanluna.skills kanban-run --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-run .gemini/skills/kanban-run && 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-run" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban-run into .gemini/skills/kanban-run/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban-run", 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 kanban-runInstalls 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-run -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-run .github/skills/kanban-run && 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-run" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban-run into .github/skills/kanban-run/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban-run", 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-run -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-run --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-run .opencode/skills/kanban-run && 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-run" agent skill from https://github.com/cyanluna-git/cyanluna.skills/tree/main/kanban-run into .opencode/skills/kanban-run/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "kanban-run", 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.
kanban-runRun the AI team pipeline for kanban tasks — orchestration loop with 6 agents (Planner, Critic, Builder, Shield, Inspector, Ranger), single-step execution, and code review.
Kanban Run is an agent skill from 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. Use /kanban-run to execute tasks through the 7-column pipeline. AUTO-TRIGGER when: user says "implement task NNN" or any task ID + implement/build/do combination; or user confirms with "yes/ok/go/do it" after Claude proposes implementing a specific kanban task.
Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Productivity & Automation, covering Task management. The licence is MIT.
3 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.
Shell commands in SKILL.md call:
curljqpython3gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and 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 Run loads about 4.3k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 952 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); files beside SKILL.md are not scanned.
The full file from cyanluna-git/cyanluna.skills at commit df5be37, republished under its MIT licence (© cyanluna-git). 952 words, ~4,255 tokens.
.claude/skills/kanban-run/SKILL.md (or your agent's skills folder).ALWAYS invoke this skill (without waiting for /kanban-run) when:
User mentions a kanban task ID and requests implementation:
Claude has proposed implementing a specific kanban task and the user confirms:
/kanban-run <ID> automatically — do not implement manuallyUser says "next task" / "continue" / "다음 태스크 해줘" when a task is in progress:
When auto-triggered: extract task ID and call /kanban-run <ID> — never implement code manually and patch kanban state afterward.
Shared context: read
../kanban/shared.mdfor DB path, pipeline levels, status transitions, DB operations, error handling, and agent context flow. Safety principles: read../kanban/principles.md— mandatory, not optional. Schema: read../kanban/schema.mdfor full DB schema, column descriptions, and JSON field formats.
In Codex environments, this skill may be invoked directly as a slash command text such as $kanban-run <ID> or $kanban-run <ID> --auto.
/kanban-run step <ID> — Single StepExecute only the next pipeline step then exit. Same logic as /kanban-run but no loop.
/kanban-run <ID> [--auto] — Run Full PipelineDefault: pause for user confirmation at Plan Review and Impl Review approvals.
--auto: fully automatic (circuit breaker still fires).
L1 Quick:
todo → Worker(builder) implements → commit → done
L2 Standard:
todo → Plan Agent(planner) → impl (skip plan_review)
impl → Worker(builder) + TDD Tester(shield) → impl_review
impl_review → Code Review → [user confirm] → commit → done / reject → impl
L3 Full:
todo → Plan Agent(planner) → plan_review
plan_review → Review Agent(critic) → [user confirm: y/c/n] → impl / ceo-review / reject→plan
└─ [c] CEO Review: product angle check → update plan → back to plan_review
impl → Worker(builder) + TDD Tester(shield) → impl_review
impl_review → Code Review(inspector) → [user confirm] → test / reject → impl
test → Test Runner(ranger) → pass → commit → done / fail → impl
Circuit breaker: plan_review_count > 3 OR impl_review_count > 3 → stop, ask userCEO Review (L3 plan_review only)
When the user selects [c] at the plan_review confirmation prompt, run a CEO-perspective analysis inline before proceeding to impl. Not a separate agent — run as a structured prompt to the current model:
Adopt the perspective of a skeptical product founder reviewing this plan.
Ask:
(1) Is this feature actually necessary, or can the need be met more simply?
(2) Does this align with the project's stated purpose? [load from project brief]
(3) Is there a 10x simpler implementation that solves 80% of the problem?
(4) What might we regret about this decision in 6 months?
Output: bullet list of concerns, or "No concerns — looks right-sized."After CEO review output, present: [y] proceed to impl / [r] revise plan / [n] reject
Read the task's level field first to determine which steps to execute.
Resolve real model names from ../kanban/models.json using provider:
KANBAN_MODEL_PROVIDER env var if set (claude or codex)codex when CODEX_* env is presentclaude when CLAUDE_* env is presentclaude when .claude/ existscodex when .codex/ existsdefault_provider from models.jsonFor Codex, the router should prefer the higher-capability entries in models.json for the full kanban-run pipeline.
MODEL_PROVIDER=${KANBAN_MODEL_PROVIDER:-}
if [ -z "$MODEL_PROVIDER" ] && [ -n "${CODEX_THREAD_ID:-}${CODEX_CI:-}" ]; then MODEL_PROVIDER=codex; fi
if [ -z "$MODEL_PROVIDER" ] && [ -n "${CLAUDE_PROJECT_DIR:-}${CLAUDECODE:-}" ]; then MODEL_PROVIDER=claude; fi
if [ -z "$MODEL_PROVIDER" ] && [ -d .claude ]; then MODEL_PROVIDER=claude; fi
if [ -z "$MODEL_PROVIDER" ] && [ -d .codex ]; then MODEL_PROVIDER=codex; fi
read_model() {
local key="$1"
python3 - "$MODEL_PROVIDER" "$key" <<'PY'
import json, pathlib, sys
p = pathlib.Path("../kanban/models.json")
d = json.loads(p.read_text())
provider = sys.argv[1] or d["default_provider"]
key = sys.argv[2]
print(d["providers"][provider][key])
PY
}
read_effort() {
local key="$1"
python3 - "$MODEL_PROVIDER" "$key" <<'PY'
import json, pathlib, sys
p = pathlib.Path("../kanban/models.json")
d = json.loads(p.read_text())
provider = sys.argv[1] or d["default_provider"]
key = sys.argv[2]
print(d.get("reasoning_effort", {}).get(provider, {}).get(key, ""))
PY
}
MODEL_PLANNER=$(read_model planner)
MODEL_CRITIC=$(read_model critic)
MODEL_BUILDER=$(read_model builder)
MODEL_SHIELD=$(read_model shield)
MODEL_INSPECTOR=$(read_model inspector)
MODEL_RANGER=$(read_model ranger)
EFFORT_PLANNER=$(read_effort planner)
EFFORT_CRITIC=$(read_effort critic)
EFFORT_BUILDER=$(read_effort builder)
EFFORT_SHIELD=$(read_effort shield)
EFFORT_INSPECTOR=$(read_effort inspector)
EFFORT_RANGER=$(read_effort ranger)# 1. Read current task state (status + level only)
TASK=$(curl -s "${AUTH_HEADER[@]}" "$BASE_URL/api/task/$ID?project=$PROJECT&fields=status,level")
STATUS=$(echo "$TASK" | jq -r '.status')
# 2. Dispatch agent (see Agent Dispatch below)
# 3. After agent: append to agent_log (see schema.md for format)
# 4. Re-read state, loop until done or circuit breakerEach agent has a fixed nickname used consistently across all records. The task card becomes a work log — every field and every log entry is signed.
| Nickname | Role | Model Key | Reasoning Effort (codex) | Status trigger |
|---|---|---|---|---|
Planner | Plan Agent | planner | high | todo |
Critic | Plan Review Agent | critic | medium | plan_review |
Builder | Worker Agent | builder | high | impl (step 1) |
Shield | TDD Tester | shield | medium | impl (step 2) |
Inspector | Code Review Agent | inspector | medium | impl_review |
Ranger | Test Runner | ranger | medium | test |
See
../kanban/schema.mdfor JSON formats and the Signature Header Rule.
Template files are at ../kanban/templates/.
| Status | Template | Nickname | Model Key |
|---|---|---|---|
todo | templates/plan-agent.md | Planner | planner |
plan_review | templates/review-agent.md | Critic | critic |
impl step 1 | templates/worker-agent.md | Builder | builder |
impl step 2 | templates/tdd-tester.md | Shield | shield |
impl_review | templates/code-review-agent.md | Inspector | inspector |
test | templates/test-runner.md | Ranger | ranger |
Agent minimum fields (fetch only what each agent needs):
| Nickname | Required Fields |
|---|---|
Planner | title,description,plan_review_comments |
Critic | title,description,plan,decision_log,done_when |
Builder | title,description,plan,done_when,plan_review_comments,review_comments |
Shield | title,description,implementation_notes |
Inspector | title,description,plan,done_when,implementation_notes |
Ranger | title,implementation_notes |
Dispatch procedure — execute in this order for every agent:
⓪ Fetch project brief (once per pipeline run, cache for all agents)
PROJECT_DATA = curl GET /api/projects/$PROJECT
PROJECT_BRIEF = extract .brief field (empty string if null or project not found)
This is injected into every agent template via <project_brief> placeholder.
⓪ʙ Resolve dependencies & review feedback (once per pipeline run, cache for all agents)
**Parse dependencies from description:**
```bash
# Extract dependency IDs from description (case-insensitive)
DESCRIPTION=$(curl -s "${AUTH_HEADER[@]}" "$BASE_URL/api/task/$ID?project=$PROJECT&fields=description" | jq -r '.description // ""')
DEP_IDS=$(echo "$DESCRIPTION" | grep -ioP 'Depends on:\s*\K#\d+(?:,\s*#\d+)*' | grep -oP '\d+' || true) Circular dependency check:
If $ID (current task) appears in any dependency's own Depends on: line, emit error and abort:
for DEP_ID in $DEP_IDS; do
DEP_TASK=$(curl -s "${AUTH_HEADER[@]}" "$BASE_URL/api/task/$DEP_ID?project=$PROJECT&fields=title,status,description,decision_log,implementation_notes")
HTTP_CODE=$(echo "$DEP_TASK" | jq -r '.id // empty')
if [ -z "$HTTP_CODE" ]; then
echo "WARNING: dependency #$DEP_ID not found (404), skipping"
continue
fi
DEP_DESC=$(echo "$DEP_TASK" | jq -r '.description // ""')
if echo "$DEP_DESC" | grep -iqP "Depends on:.*#$ID\\b"; then
echo "ERROR: circular dependency detected — #$ID ↔ #$DEP_ID. Aborting."
exit 1
fi
# Cache: DEPS[$DEP_ID] = { title, status, decision_log, implementation_notes }
doneBuild per-agent dependency context string: For each cached dependency, assemble context based on the current agent:
decision_log (500 chars) + implementation_notes (500 chars)implementation_notes (500 chars)decision_log (300 chars) Truncation: if field length > limit, take first N chars + ...[truncated].
If dep status != done: prepend [IN PROGRESS] warning to that dep's block.
If no dependencies: DEPS_CONTEXT="" (empty string — placeholder removed cleanly).
Format per dependency:
### #<DEP_ID>: <title> [<status>]
[IN PROGRESS]
**Decision Log:**
<truncated decision_log>
**Implementation Notes:**
<truncated implementation_notes>Extract review feedback for re-runs:
# Critic feedback (for Planner re-run)
CRITIC_FEEDBACK=""
PLAN_REVIEW_COMMENTS=$(echo "$TASK" | jq -r '.plan_review_comments // ""')
if [ -n "$PLAN_REVIEW_COMMENTS" ] && [ "$PLAN_REVIEW_COMMENTS" != "null" ]; then
CRITIC_FEEDBACK=$(echo "$PLAN_REVIEW_COMMENTS" | python3 -c "
import sys, json
data = json.load(sys.stdin)
if isinstance(data, list) and len(data) > 0:
print(data[-1].get('comment', ''))
")
fi
# Inspector feedback (for Builder re-run)
INSPECTOR_FEEDBACK=""
REVIEW_COMMENTS=$(echo "$TASK" | jq -r '.review_comments // ""')
if [ -n "$REVIEW_COMMENTS" ] && [ "$REVIEW_COMMENTS" != "null" ]; then
INSPECTOR_FEEDBACK=$(echo "$REVIEW_COMMENTS" | python3 -c "
import sys, json
data = json.load(sys.stdin)
if isinstance(data, list) and len(data) > 0:
print(data[-1].get('comment', ''))
")
fi① Read task fields (use per-agent fields to minimize token usage)
TASK = curl GET /api/task/$ID?project=$PROJECT&fields=title,description,plan_review_comments
TASK = curl GET /api/task/$ID?project=$PROJECT&fields=title,description,plan,decision_log,done_when
TASK = curl GET /api/task/$ID?project=$PROJECT&fields=title,description,plan,done_when,plan_review_comments,review_comments
TASK = curl GET /api/task/$ID?project=$PROJECT&fields=title,description,implementation_notes
TASK = curl GET /api/task/$ID?project=$PROJECT&fields=title,description,plan,done_when,implementation_notes
TASK = curl GET /api/task/$ID?project=$PROJECT&fields=title,implementation_notes Extract only the fields listed above for each agent
② Mark agent as active
curl PATCH /api/task/$ID → { "current_agent": "<Nickname>" }
③ Read template file
Read tool: ../kanban/templates/<agent>.md
④ Fill placeholders in template
Replace every occurrence of:
<ID> → actual task ID
<PROJECT> → actual project name
<project_brief> → project brief from step ⓪ (empty string if not set)
<title> → task title
<description> → task description (requirements)
<plan> → plan field value
<decision_log> → decision_log field value
<done_when> → done_when field value
<implementation_notes> → implementation_notes field value
<plan_review_comments> → plan_review_comments field value
<dependencies_context> → per-agent dep context from step ⓪ʙ (empty string if none)
<critic_feedback> → latest plan_review_comments comment (empty if first run)
<inspector_feedback> → latest review_comments comment (empty if first run)
<TIMESTAMP> → current UTC time (ISO 8601)
<MODEL_PLANNER> → $MODEL_PLANNER
<MODEL_CRITIC> → $MODEL_CRITIC
<MODEL_BUILDER> → $MODEL_BUILDER
<MODEL_SHIELD> → $MODEL_SHIELD
<MODEL_INSPECTOR> → $MODEL_INSPECTOR
<MODEL_RANGER> → $MODEL_RANGER
<EFFORT_PLANNER> → $EFFORT_PLANNER
<EFFORT_CRITIC> → $EFFORT_CRITIC
<EFFORT_BUILDER> → $EFFORT_BUILDER
<EFFORT_SHIELD> → $EFFORT_SHIELD
<EFFORT_INSPECTOR> → $EFFORT_INSPECTOR
<EFFORT_RANGER> → $EFFORT_RANGER
Recommended helper script:
PROMPT=$(python3 ../kanban/scripts/render_agent_prompt.py \
--template ../kanban/templates/<agent>.md \
--models ../kanban/models.json \
--provider "$MODEL_PROVIDER" \
--set ID="$ID" \
--set PROJECT="$PROJECT" \
--set project_brief="$PROJECT_BRIEF" \
--set title="$TITLE" \
--set description="$DESCRIPTION" \
--set plan="$PLAN" \
--set decision_log="$DECISION_LOG" \
--set done_when="$DONE_WHEN" \
--set implementation_notes="$IMPLEMENTATION_NOTES" \
--set plan_review_comments="$PLAN_REVIEW_COMMENTS" \
--set dependencies_context="$DEPS_CONTEXT" \
--set critic_feedback="$CRITIC_FEEDBACK" \
--set inspector_feedback="$INSPECTOR_FEEDBACK" \
--set TIMESTAMP="$TIMESTAMP") If a field is missing, pass empty string (--set key="").
Use --strict only when every unresolved <...> token should be treated as an error.
⑤ Launch Task tool with filled prompt
If MODEL_PROVIDER is codex:
Task(
subagent_type = "general-purpose",
model = "<resolved model from models.json>",
model_reasoning_effort= "<resolved effort from models.json>",
prompt = <filled template content>
)
Otherwise (claude):
Task(
subagent_type = "general-purpose",
model = "<resolved model from models.json>",
prompt = <filled template content>
)
⑥ After Task completes — append signed entry to agent_log
(use schema.md › "Appending to agent_log" snippet,
set agent=<Nickname>, model=<model>, message=<summary>)
After Builder + Shield both complete, move to `impl_review`:
```bash
curl -s "${AUTH_HEADER[@]}" -X PATCH "$BASE_URL/api/task/$ID?project=$PROJECT" \
-H 'Content-Type: application/json' \
-d '{"status": "impl_review", "current_agent": null}'Default mode: after plan_review and impl_review agents complete, ask user with AskUserQuestion to accept/reject before advancing.
Auto mode (--auto): auto-accept the agent's decision.
# 1. Commit pending changes
if [ -n "$(git status --porcelain 2>/dev/null)" ]; then
git add -A
git commit -m "feat: <TITLE> [kanban #<ID>]"
fi
COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "no-git")
# 2. Move to done
curl -s "${AUTH_HEADER[@]}" -X PATCH "$BASE_URL/api/task/$ID?project=$PROJECT" \
-H 'Content-Type: application/json' \
-d '{"status": "done"}'
# 3. Record commit hash in notes
curl -s "${AUTH_HEADER[@]}" -X POST "$BASE_URL/api/task/$ID/note?project=$PROJECT" \
-H 'Content-Type: application/json' \
-d "{\"content\": \"Commit: $COMMIT_HASH\"}"If no commits yet, skip note or record "Commit: (none)".
/kanban-run review <ID> — Code ReviewTrigger Code Review agent for a task in impl_review status (same as impl_review step).
© 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
Just SKILL.md in kanban-run of cyanluna-git/cyanluna.skills.
Open the folder on GitHubat commit df5be37
Kanban Run 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 Run this skillcyanluna-git/cyanluna.skills | 183 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Superset Agent Standupsuperset-sh/superset | 15k | — | ~712 | Automated safety check: Pass | Custom licence | |
| AgentRQ Workspace Agentagentrq/agentrq | 1.1k | — | ~1.9k | Automated safety check: Pass | AGPL-3.0 | |
| Markdown Task Managerioniks/MarkdownTaskManager | 535 | — | ~2.2k | Automated safety check: Pass | MPL-2.0 | |
| Pi Messenger Crewnicobailon/pi-messenger | 719 | — | ~3.7k | Automated safety check: Pass | None | |
| Codekanban CLIfy0/CodeKanban | 226 | — | ~2.7k | Automated safety check: Pass | Apache-2.0 |
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.
ioniks/MarkdownTaskManager
A skill your agent uses when managing tasks, the system is a Kanban task manager based on local Markdown files (kanban.md and archive.md).
nicobailon/pi-messenger
Orchestrator reference for pi-messenger Crew planning, task management, configuration, and agent coordination.
fy0/CodeKanban
Operate CodeKanban workflows, terminal sessions, and web sessions through the installable codekanban-cli command.
Luciole-Studio/Misaka-Agent
Plan and run multi-agent video production pipelines. An agent skill from Luciole-Studio/Misaka-Agent.
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
Manage project tasks in a local SQLite DB (~/.claude/kanban-dbs/{project}.db).
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
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.
Categories
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. 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.
Kanban Run fits situations like: : user says implement task NNN; any task ID + implement/build/do combination; user confirms with yes/ok/go/do it after Claude proposes implementing a specific kanban task.
Run `npx skills add cyanluna-git/cyanluna.skills --skill kanban-run -a claude-code`. Or copy the skill folder (kanban-run in cyanluna-git/cyanluna.skills) into .claude/skills/kanban-run in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cyanluna-git/cyanluna.skills --skill kanban-run -a codex`. Or copy the skill folder (kanban-run in cyanluna-git/cyanluna.skills) into .agents/skills/kanban-run 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-run -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-run, .gemini/skills/kanban-run, .github/skills/kanban-run and .opencode/skills/kanban-run in your project.
Going by SKILL.md and its folder, Kanban Run needs the command-line tools its instructions call (curl, jq, python3 and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use curl and 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. Review the folder before installing.
Kanban Run is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k 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 Run: Superset Agent Standup (superset-sh/superset, 15k stars), AgentRQ Workspace Agent (agentrq/agentrq, 1.1k stars), Markdown Task Manager (ioniks/MarkdownTaskManager, 535 stars) and Pi Messenger Crew (nicobailon/pi-messenger, 719 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.