Nakadie

todo-manager

Manage the weekly todo note. Use this skill whenever the user asks to add a ticket to their todos, move a ticket between days, mark a todo as done, or create a Jira subtask from a PR review comment. Handles Jira title lookup, PR/status checks, and subtask creation automatically.

Nakadie 0 Updated 6d ago

Resources

6
GitHub

Install

npx skillscat add nakadie/claude-skill-todo-manager

Install via the SkillsCat registry.

SKILL.md

Setup

SKILLS=$(dirname "$(realpath "${BASH_SOURCE[0]:-$0}")")  # or set explicitly to the skill directory
source $SKILLS/config.sh
WEEK_FILE=$(bash $SKILLS/bin/week-file.sh)  # resolve first; all operations depend on it

If $SKILLS/customSettings.md exists, read it now. Its rules override the defaults in this file.

Note file sections: ## Monday–Friday, ## Next, ## Other, ## Archived, ## Notes


Add a ticket

  1. mcp__atlassian__getJiraIssue cloudId=$JIRA_CLOUD_ID issueIdOrKey=SET-XXXX fields=["summary"]
  2. python3 $SKILLS/bin/add-ticket.py "$WEEK_FILE" "- [ ] [SET-XXXX]($JIRA_BASE/browse/SET-XXXX) — <summary>" ["## Tuesday"]
    Default section: today's weekday. Exits cleanly if ticket already exists.

Move a ticket

python3 $SKILLS/bin/move-ticket.py "$WEEK_FILE" SET-XXXX "## Wednesday"
Valid sections: ## Monday ## Tuesday ## Wednesday ## Thursday ## Friday ## Next ## Other

Archive a ticket

python3 $SKILLS/bin/archive-ticket.py "$WEEK_FILE" SET-XXXX "$ARCHIVED_TODOS"
Removes from weekly note; appends to $ARCHIVED_TODOS with #parked.


Review pattern

Given a section (or whole file for weekly):

  1. Read $WEEK_FILE directly. Find section headers to determine line ranges.
    Collect all unchecked tasks (- [ ] ...) in the relevant section(s), recording each task's line number and the SET-\d+ key in its text.
  2. Fetch in parallel for each ticket:
    • mcp__atlassian__getJiraIssue fields=["summary","status","issuelinks","assignee"]
    • mcp__github__search_issues query="org:paidy SET-XXXX is:pr is:merged"
    • mcp__github__search_issues query="org:paidy SET-XXXX is:pr is:open"
      For each open PR found, also fetch mcp__github__get_pull_request_reviews to count approvals.
  3. Show table: | Ticket | Summary | Checked? | Jira Status | PR | Suggested transition |
    PR column values:
    • Merged PR found → link to PR
    • Open PR found → "Open — N approvals" (link to PR)
    • No PR → —
  4. For each unchecked ticket with a merged PR — ask "Mark SET-XXXX as done?". On yes:
    python3 $SKILLS/bin/set-done.py "$WEEK_FILE" SET-XXXX
  5. Suggested transition logic:
    • "implemented by" link with staging+Verified → "Merged/In Staging"
    • "implemented by" link with production+Verified → "Done"
    • merged PR found → "Merged/In Staging"
    • Jira status Done/Verified → "Done"
    • fallback → no suggestion
  6. Show all transitions, ask one confirmation. For each where assignee.accountId == $ASSIGNEE_ID: mcp__atlassian__getTransitionsForJiraIssuemcp__atlassian__transitionJiraIssue. Skip others; inform user.

Update todos

  1. Run review pattern on all ticket keys in ## <today>
  2. Show ## Next and ## Other read-only

Daily review

If today is Friday → run Weekly review instead.
Next-day map: Monday→Tuesday, Tuesday→Wednesday, Wednesday→Thursday, Thursday→Friday

  1. Run review pattern on all ticket keys in ## <today>
  2. python3 $SKILLS/bin/move-uncompleted.py "$WEEK_FILE" "## <today>" "## <tomorrow>"
  3. Show ## Next and ## Other read-only

Weekly review

  1. Run review pattern on: all keys in day sections + ## Next (all) + ## Other (checked only). Table grouped by day.
  2. python3 $SKILLS/bin/rollover.py "$WEEK_FILE"


Create subtask from PR review comment

  1. Identify parent ticket from PR title/branch; ask if unclear
  2. Read the comment carefully in context (surrounding code, diff hunk, any replies). Derive a proposed summary in the format [servicename] <description> that accurately captures what the commenter is asking for — not just a paraphrase of their words. Present the proposed summary to the user and confirm or iterate before creating the ticket.
  3. mcp__atlassian__createJiraIssue issueType=Sub-task project=SET parent=SET-XXXX summary="[servicename] " description="> \n\nView comment" assignee_account_id=$ASSIGNEE_ID
    Summary format: [servicename] description — e.g. [billing-service] add "it" scope to billingServiceClient dependency
    Description: blockquote the full comment text, then a blank line, then the link to the comment.
  4. gh api repos/{owner}/{repo}/pulls/comments/{comment_id}/replies -f body="[SET-XXXX]($JIRA_BASE/browse/SET-XXXX)" — comment_id from mcp__github__get_pull_request_comments
  5. python3 $SKILLS/bin/add-ticket.py "$WEEK_FILE" "- [ ] [SET-XXXX]($JIRA_BASE/browse/SET-XXXX) — <summary>"