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:
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)"'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.
