name: sync-modules description: Cerate or Update a GitHub Issue for each Module in the task document. disable-model-invocation: true
User Input
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Outline
-
Locate Feature & Tasks:
- Extract the feature name from the branch name or user input like
###-feature-name, e.g.,001-feature-name. - Find the most likely feature in the specs directory, i.e.,
./specs/[###-feature-name]. The feature id and name must be exact match. - The feature spec must has a task directory (i.e,
tasks/) including ametadata.mdfile and multiplemodule_i.mdfiles. All paths must be absolute. - Find the feature issue link in the
tasks/metadata.mdfile. If not exists, search the feature issue on the GitHub by the prefix[###-feature-name]. The feature id and name must be exact match. If not found, stop and report error "Feature issue not found: [###-feature-name]".
- Extract the feature name from the branch name or user input like
-
Check Current Modules:
- View the feature issue and its sub-issues on the GitHub to confirm the current modules.
- If some modules are missing, go to Step 3 to create them.
- If some modules are modified (local files and remote issues are different), synchronize them.
-
Create Module Issue: (For each
module_i.mdfile)- Create a new issue on the GitHub.
- The issue title is
[###-feature-name] Module <i>: <description>, e.g.,[001-add-frontend] Module 1: Setup for biagent. - The body is the
Goal(at the beginning of themodule_i.mdfile) and tasks list (atmetadata.md) of the module. - The Assignee is given in the
module_i.mdfile.@meby default. - The Labels are given in the
module_i.mdfile. - The Milestone is given in the
module_i.mdfile. Skip ifNoneis given. - The Project is given in the
module_i.mdfile. Skip ifNoneis given.
-
Link Sub-issue (Use GitHub Sub-issue api):
- Set each Module Issue as the sub-issue of the Feature Issue.
- First find the issueId.
- Then link the sub-issue using the following commands:
gh api graphql -f query='mutation { addSubIssue(input: {issueId: "xxx", subIssueId: "xxx"}) { issue { id title } subIssue { id title } } }'