Skip to content
Back to skills

Kanban Review

ASecurity

Review a kanban feature or bug against its approved scope, current testing evidence and layered review rules. Write PASS/FAIL/REJECT/REQUIREMENT_BUG for the current execution. Use in review.

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 14, 2026
developmentpythonrustgojavarubyphpbashnodetestingrefactoring

Works with

  • cli

Security analysis

A100/100

Scanned October 14, 2026

npx -y skills add phuthuycoding/kanban-flow --skill kanban-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Kanban Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Kanban Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/phuthuycoding-kanban-review/badge)](https://www.skillsdirectory.com/skills/phuthuycoding-kanban-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: kanban-review
description: 'Review a kanban feature or bug against its approved scope, current testing evidence and layered review rules. Write PASS/FAIL/REJECT/REQUIREMENT_BUG for the current execution. Use in review.'
---

# Kanban Phase 5 — Review (Autonomous)

Argument: `<feature_name>`.

Stand on quality, not survivor. Load layered review rules, audit the changes, and write a report whose `status:` is the truth `kf` trusts.

**Invoked through `kf run`?** If your prompt starts with `kf-run:`, you are a worker for this stage only: skip the "move to stage" step below, never run `kf stage` / `kf approve` / `kf archive` / `kf run`, never edit approved contract artifacts, do not commit, and end your final message with two lines exactly: `STATUS: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT` and `Summary: <one or two sentences>`. The main agent reads them and decides the transition.

---

## 1. Move to review

```bash
kf stage {feature_name} review
```

(Already there → skip. If the move is refused, run `kf validate --change {feature_name}` — a missing/stale or non-PASS testing report blocks this direction; loop back through kanban-test.)

## 2. Load review rules

- Resolve rules per filename in project → user → package order. Include general, security and performance plus the project's stack rule when available.
- Project: `{project_root}/.kf/review/rules/*.md`; user: `~/.kf/review/rules/*.md`; package: `kanban-flow/review/rules/*.md` beside the installed CLI's package.json. If no rule source is available, report the missing rules instead of silently skipping review.
- Stack packs (`node`, `go`, `rust`, `python`, `php`, `ruby`, `java`) are opt-in: if the project's stack has no `{stack}.md`, suggest `kf rules` (auto-detect) or `kf rules --stack <id>` to install it — they are not auto-loaded from `kanban-flow/review/stacks/`.

Review **only files actually changed**. Record findings with severity HIGH / MEDIUM / LOW. Reproduce plausible failures — don't infer.

**AI-assisted code risk lens** — hunt for the failure modes AI-generated code produces most:

- Phantom tests: tests that execute code but never assert the behavior the spec requires
- Catch-and-swallow: catches that hide errors instead of handling or rethrowing with context
- Generic helpers without a domain anchor: abstractions invented for one call site
- Scope drift: changes outside the approved contract and task list
- Unrelated broad rewrites: reformatting or refactoring files beyond the diff's purpose
- Polished comments/commits that describe the change but never explain intent or risk

Preserve decisions: do not reopen verified findings or silently undo user-chosen scope, libraries, or thresholds. Before applying a security finding, threat-model it — state what the code stores, protects, and exposes; a finding without a reachable attack path is LOW.

Use the `## Baseline` recorded at the top of `tasks.md` (starting HEAD + pre-existing working-tree changes) to include committed, staged, unstaged and new untracked feature files. Preserve unrelated pre-existing changes. Verify the testing report is PASS for the current execution id. After any implementation fix, loop through testing again before writing a new review result.

**Worktree items:** when `kf status` shows a `Worktree:`/`Domain:` block, the reviewed changes live on branch `kf/<feature>` in that worktree — review `git diff`/`git log` of that branch (from the main checkout or inside the worktree), not the main checkout's own dirty files. The worktree teardown on archive refuses while it is dirty, so uncommitted review-relevant changes must be called out as a finding.

## 3. Write review-report

For `kind: bug`, review against the bug report and existing feature behavior. Check reproduction evidence, regression tests and fix scope; do not demand feature planning artifacts. Record the verified root cause and whether related feature docs need an update. If no documentation changes are needed, say why.

A bug fix is reviewed adversarially, because a narrow fix is the most common way a bug comes back wearing different clothes. Two things go in every bug review report, and "none" is a valid answer only when you say what you looked at:

- **Reachable regressions.** Name what else calls the code you changed, and what a plausible caller passes that the fix did not consider. A guard added for one entry point rarely covers the others — list the sibling paths and say, for each, whether you checked it or not. Do not write "no regressions"; write what you reached for.
- **Claims you disproved.** State at least one thing the implementer asserted that you tried to break and could not — the root cause, the blast radius, a "this cannot happen" in a comment. Re-run the reproduction yourself rather than trusting the report, and if an explanation in a comment is load-bearing, verify it instead of reading it. Comments that justify a fix have been wrong in exactly the direction that made the fix look correct.

A test that passes proves the code does something; it does not prove the test would fail if the fix were removed. When a fix turns on one predicate, delete or invert it and confirm a test goes red. A test that stays green under that is not protecting anything, and should be reported as a finding.

```bash
kf instruct review-report --change {feature_name}
```

Fill `phase-5-review-report.md`, set frontmatter `status:` to exactly one of:

- `PASS` — no HIGH blockers; change is shippable
- `FAIL` — HIGH blockers / broken tests
- `REJECT` — does not meet DoD / acceptance criteria
- `REQUIREMENT_BUG` — the requirement itself is wrong vs. real product need

Set `execution:` to the current id from instruct and keep Review Status/Final Decision consistent with frontmatter. Assess MEDIUM findings against acceptance and DoD; do not declare PASS merely because there are no HIGH findings.

## 4. The directional gate decides

- `PASS` → load kanban-archive for the applicable feature/bug closure before running `kf archive`.
- `FAIL`/`REJECT` → **structural fix needed**: loop back, re-implement, then the feature must be **re-tested before review again** (kanban-test skill).

```bash
kf stage {feature_name} implementation
```

- `REQUIREMENT_BUG` → **STOP FEATURE.** Do not silently rewrite the requirement — report back to the user what the review found and ask how to proceed. `kf stage` blocks all movement here by design.

---

## Done

A decisive report written. Hand off:

```text
If PASS: load the kanban-archive skill.
If FAIL/REJECT: load kanban-implement (then kanban-test before returning here).
If REQUIREMENT_BUG: stop and report to the user.
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.