Task Lists

Task Lists and Tracking Cross-Repository Work

Two tools break large work into parts. A Markdown task list (- [ ] item) renders as checkboxes, suited to chores that do not deserve their own issue. Sub-issues are real issues attached to a parent, up to 100 per parent and eight levels deep, and they may live in other repositories. They replaced the experimental "tasklist blocks", which were retired on 30 April 2025.

BookNest's release gets a tracking issue, #6, "Release 1.2.0", in the 1.2.0 milestone. Its body holds two chores as a task list (bump the version, tag and publish release notes); the code changes become sub-issues, including one filed in the template repository. The REST endpoint wants each issue's internal id, not its number:

Attaching three local issues and one cross-repository issue as sub-issues
for ref in booknest/issues/1 booknest/issues/2 booknest/issues/5 \
           booknest-service-template/issues/1; do
  id=$(gh api "repos/binarybehemoth/$ref" --jq .id)
  gh api --silent repos/{owner}/{repo}/issues/6/sub_issues -F sub_issue_id="$id"
done
gh api repos/{owner}/{repo}/issues/6/sub_issues \
  --jq '.[] | "\(.repository_url | split("/") | last)#\(.number) \(.title)"'
Output
booknest#1 ?sort=title is silently ignored
booknest#2 Filter books by author with ?author=
booknest#5 Document the error responses in the README
booknest-service-template#1 Add a /ready endpoint to the template

5 shows the result after Auto-Closing Issues closed #1: the task list, then the sub-issues with a "1 of 4" progress ring and the cross-repository item labeled with its repository. In the browser, Add existing issue does the same, and a task-list item can be converted into a sub-issue.

Tracking issue #6 with a task list and four sub-issues, one from another repository
Tracking issue #6 with a task list and four sub-issues, one from another repository