gendosu/agkan-skills

agkan-review

Use when checking review tasks against GitHub PR status to automatically move them to done or closed.

First seen Apr 8, 2026

Installation

$ npx skills add gendosu/agkan-skills --skill agkan-review

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from gendosu/agkan-skills · top by installs.

npx skills add gendosu/agkan-skills

Browse all from gendosu/agkan-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,629 B
  • docs SUMMARY.md 121 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 16 installs

SKILL.md

agkan-review

Overview

Workflow to retrieve tasks with Review status in agkan, check the merge/close status of GitHub PRs, and automatically update their status.


Workflow

Primary: Run the bundled script

Run the bundled review.sh script to process all review tasks in one command:

bash "$(dirname "$(agkan skill path agkan-review 2>/dev/null || echo "$BASE_DIR")")/review.sh"

The base directory for this skill is provided at session start. Use it to resolve the script path:

bash "$BASE_DIR/review.sh"

Where $BASE_DIR is the base directory shown at the top of the skill (e.g. /home/gen/.claude/skills/agkan-review).

The script:

  1. Fetches all tasks with --status review
  2. Extracts the PR URL from each task body (PR: <URL>) or metadata (pr key)
  3. Calls gh pr view <URL> --json state,mergedAt for each PR
  4. Updates task status to done (MERGED) or closed (CLOSED without merge), skips OPEN
  5. Adds a comment recording the reason and timestamp
  6. Prints a summary: done: X, closed: X, skipped (OPEN): X, no PR: X

To register the script in .claude/settings.json to eliminate per-command permission prompts, add the script path to allowedTools or the relevant bash allowlist.


Fallback: Manual step-by-step workflow

Use the manual steps below if the script is unavailable or you need to process tasks individually.

1. Retrieve Review tasks

agkan task list --status review --json

2. Initialize summary counters

Before processing tasks, initialize the following counters to track results:

  • done_count = 0
  • closed_count = 0
  • skippedopencount = 0
  • noprcount = 0

3. Confirm PR URL for each task

First, extract the PR URL from the task body in the format PR: <URL>.

If no URL is found in the body, check the task metadata as a fallback:

agkan task meta list <id>

Use the value of the pr key if present.

If no URL is found in either the body or metadata, increment noprcount, skip the task and output a message indicating manual verification is needed.

4. Check PR status on GitHub

gh pr view <PR URL> --json state,mergedAt
Field Meaning
state OPEN / CLOSED / MERGED
mergedAt Merge date/time (null if not merged)

5. Move status based on PR status

PR State agkan Status Command Counter
MERGED done agkan task update <id> status done Increment done_count
CLOSED (mergedAt is null) closed agkan task update <id> status closed Increment closed_count
OPEN No change Skip (still under review) Increment skippedopencount

6. Add comment recording the reason for status change

After updating status to done or closed, record the merge date/time and reason:

agkan task comment add <id> "<comment>"

Comment format by status:

Status Comment Example
done Merged at <mergedAt>. PR was merged and task is complete.
closed PR was closed without merging. Task moved to closed.

7. Display summary after all tasks are processed

done: <done_count>, closed: <closed_count>, skipped (OPEN): <skipped_open_count>, no PR: <no_pr_count>

Decision Flow

Retrieve all Review tasks
    ↓
Initialize counters (done=0, closed=0, skipped_open=0, no_pr=0)
    ↓
Repeat for each task
    ↓
Does the body contain "PR: <URL>"?
   Yes → Use that URL
   No  → Check metadata: agkan task meta list <id>
            Does metadata contain "pr" key?
               Yes → Use that URL
               No  → Increment no_pr_count → Skip (output message prompting manual verification)
    ↓
Check PR status
    ↓
What is the PR state?
   MERGED  → Move to done → Increment done_count → Add comment with mergedAt timestamp
   CLOSED  → Move to closed → Increment closed_count → Add comment noting PR closed without merge
   OPEN    → Skip (waiting for review) → Increment skipped_open_count
    ↓
Move to next task (repeat until all tasks are processed)
    ↓
Display summary: done: X, closed: X, skipped (OPEN): X, no PR: X

Notes

  • PR URL is first looked up in the task body in the format PR: <URL>
  • If not found in the body, the pr key from agkan task meta list <id> is used as a fallback
  • If PR URL is not found in either location, prompt for manual verification (skip task)
  • done means successful completion, closed means suspended or withdrawn
  • The gh command is required and will not work in environments where it is unavailable

Troubleshooting

grep: invalid option -- P on macOS

BSD grep (shipped with macOS) does not support the -P (Perl-compatible regex) flag. If you see this error, you are likely running an older version of review.sh that used grep -oP.

Symptom: PR URLs are not extracted from task bodies, and the script silently falls back to metadata lookup (which may also be empty), resulting in PR未設定 for tasks that do have a PR: <URL> line.

Fix: The current review.sh uses sed instead of grep -oP:

# Compatible with macOS (BSD) and Linux (GNU)
pr_url=$(echo "$body" | sed -n 's/.*PR: \(https:\/\/[^[:space:]]*\).*/\1/p' | head -1 || true)

If you are still seeing the error after updating, confirm you are running the latest version of the skill.