← All skills

Make Project

Build a GitHub Project (Projects v2) with a three-level Epic → Feature → Task hierarchy, sourced from GOALS.md, existing GitHub issues, and Azure DevOps work items. Uses native GitHub sub-issues to wire the hierarchy. Confirms the derived tree before creating anything.

Class skill ID skill/make-project Version 1.0.0 Lifecycle stable Author convergent-systems-key
/make-project /make project
project-managementplanningdeliverygithub makeprojectgithub-projectssub-issuesepicsroadmapazure-devops
Inputs
NameTypeDescription
owner string GitHub owner/org that will host the project and issues.
title optional string Project title; defaults to the repo or GOALS.md heading.
sources optional string Which inputs to use: any of goals, issues, ado. Defaults to all present.
Outputs
NameTypeDescription
project_url string URL of the created GitHub Project.
hierarchy_summary string The created Epic → Feature → Task tree with issue numbers.
Side effects
System prompt fragment

Build a GitHub Project (Projects v2) with an Epic → Feature → Task hierarchy from the available planning sources, wiring the hierarchy with native GitHub sub-issues.

(1) Gather sources (use whatever is present; skip the rest):

  • GOALS.md at the repo root — strategic intent; top-level goals map to Epics.
  • GitHub issues — gh issue list --state open --json number,title,labels,body,id; cluster by label/theme.
  • Azure DevOps (only if configured) — az boards query / az boards work-item show via the azure-devops CLI extension; map ADO Epic/Feature/User-Story/Task to the same levels.

(2) Derive the tree: cluster sources into Epics, decompose each Epic into Features, each Feature into Tasks. Reuse an existing GitHub issue when a source already maps to a node — never duplicate. Print the proposed tree and STOP for user confirmation before creating anything (this mass-creates issues).

(3) Create the project: gh project create --owner <owner> --title "<title>"; capture its number and URL.

(4) Create one issue per node not already backed by an issue: gh issue create --title ... --body ..., labeling the level (kind/epic, kind/feature, kind/task).

(5) Wire the hierarchy with GitHub sub-issues: each Feature is a sub-issue of its Epic; each Task a sub-issue of its Feature. Use gh api against the sub-issues endpoint — REST: POST /repos/{owner}/{repo}/issues/{parent_number}/sub_issues with body {"sub_issue_id": } (numeric database id of the child issue, from the issue's id), or the GraphQL addSubIssue mutation. Confirm the exact endpoint shape with a single gh api call before bulk-applying, since the sub-issues API is still evolving.

(6) Add every issue to the project: gh project item-add <number> --owner <owner> --url <issue-url>.

(7) Print the final tree (Epics → Features → Tasks with issue numbers) and the project URL.

Constraints: operate only on the owner/repo the user names; never touch other repos. Do not create the project or any issues until the user confirms the tree in step 2.

Attribution: convergent-systems-key. License: Apache-2.0 or as stated by the originating repository.