Use when linking design documents to GitHub issues. Creates issues from designs and syncs status. Trigger with GitHub issue linking or design traceability requests.
Link design documents to GitHub issues for complete traceability. Create issues from designs, attach designs to existing issues, and keep status synchronized between design document status and GitHub issue labels.
gh auth status returns success)Copy this checklist and track your progress:
gh --version)gh auth status)python scripts/eaa_github_issue_create.py --uuid <UUID> --dry-runpython scripts/eaa_github_issue_create.py --uuid <UUID>gh issue view <N>python scripts/eaa_github_attach_document.py --uuid <UUID> --issue <N>python scripts/eaa_github_sync_status.py --uuid <UUID>For detailed troubleshooting, see troubleshooting.md:
For status mapping reference, see status-mapping.md:
| Script | Purpose | Usage |
|---|---|---|
scripts/eaa_github_issue_create.py | Create issue from design | --uuid <UUID> |
scripts/eaa_github_attach_document.py | Attach design to issue | --uuid <UUID> --issue <N> |
scripts/eaa_github_sync_status.py | Sync status to issue | --uuid <UUID> |
| Design Status | GitHub Label |
|---|---|
| draft | status:draft |
| review | status:review |
| approved | status:approved |
| implementing | status:implementing |
| completed | status:completed |
| deprecated | status:deprecated |
Use this when you have a design document and need to create a corresponding GitHub issue.
Step 1: Verify Prerequisites
# Check gh CLI is authenticated
gh auth status
# Verify design document exists and has UUID
python scripts/eaa_github_issue_create.py --uuid PROJ-SPEC-20250129-a1b2c3d4 --dry-run
Step 2: Create the Issue
python scripts/eaa_github_issue_create.py --uuid PROJ-SPEC-20250129-a1b2c3d4
Step 3: Verify Results
The script will:
[SPEC] Design Titledesign, design:spec, status:draftrelated_issues: ["#123"]CREATED: https://github.com/owner/repo/issues/123
UPDATED: docs/design/specs/auth-service.md with issue #123
Use this when a GitHub issue already exists and you need to link a design document to it.
Step 1: Verify the Issue Exists
gh issue view 42
Step 2: Attach the Design Document
python scripts/eaa_github_attach_document.py --uuid PROJ-SPEC-20250129-a1b2c3d4 --issue 42
Step 3: Verify Results
The script will:
related_issues: ["#42"]python scripts/eaa_github_attach_document.py --uuid PROJ-SPEC-... --issue 42 --header "Revised Architecture Design"
Use this when design status changes and GitHub issue labels need updating.
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-20250129-a1b2c3d4
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-... --comment
python scripts/eaa_github_sync_status.py --all
status:draft)status:approved)Situation: Design document already has related_issues in frontmatter.
Detection: Script shows warning:
WARNING: Document already linked to issues: ["#42"]
Resolution Options:
Attach to existing issue instead:
python scripts/eaa_github_attach_document.py --uuid PROJ-SPEC-... --issue 42
Sync status to existing issue:
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-...
Create additional issue anyway (if truly needed):
gh issue createSituation: Design document does not have uuid field in frontmatter.
Detection: Script shows error:
ERROR: Document has no UUID in frontmatter: docs/design/specs/auth.md
Resolution:
Generate UUID for the document:
python scripts/eaa_design_uuid.py --file docs/design/specs/auth.md --type SPEC
Verify UUID was added:
head -20 docs/design/specs/auth.md
Retry the GitHub integration:
python scripts/eaa_github_issue_create.py --uuid <new-uuid>
Situation: gh CLI is not installed or not authenticated.
Detection: Script shows error:
ERROR: gh CLI not found. Install from https://cli.github.com/
or
ERROR: gh CLI not authenticated. Run: gh auth login
Resolution:
Install gh CLI:
# macOS
brew install gh
# Ubuntu/Debian
sudo apt install gh
# Windows
winget install GitHub.cli
Authenticate gh CLI:
gh auth login
Verify authentication:
gh auth status
Retry the operation
During active design work, monitor the GitHub Project board for external changes that may affect your work.
Poll Interval: Every 5 minutes during active work sessions
What to Monitor:
Monitoring Command:
# List all items in the project board
gh project item-list --owner Emasoft --format json
# Get specific project items with details
gh project item-list --owner Emasoft --project [PROJECT_NUMBER] --format json | jq '.items[] | {title, status, updatedAt}'
# Check for items updated in last 5 minutes
gh project item-list --owner Emasoft --format json | jq --arg cutoff "$(date -v-5M -u +%Y-%m-%dT%H:%M:%SZ)" '.items[] | select(.updatedAt > $cutoff)'
Actions on External Change Detection:
On card movement detected:
Notify EOA about the status change. Send a message using the agent-messaging skill with:
ecosGitHub Project Change Detectednormal{"type": "project_sync", "message": "Card [CARD_TITLE] moved from [OLD_STATUS] to [NEW_STATUS]. Updating local design state."}agent-messaging skill send confirmation.Update local design document state to match GitHub Project status
Log change in docs_dev/design/project-sync-log.md
Sync Log Format:
## [TIMESTAMP]
- Card: [CARD_TITLE]
- Change: [OLD_STATUS] -> [NEW_STATUS]
- Source: GitHub Project external update
- Action: Updated local design state
- Notified: EOA via AI Maestro
Create Design Document
python scripts/eaa_design_uuid.py --file docs/design/specs/new-feature.md --type SPEC
Create GitHub Issue
python scripts/eaa_github_issue_create.py --uuid PROJ-SPEC-...
Design Review (status: draft -> review)
python scripts/eaa_design_transition.py --uuid PROJ-SPEC-... --status review
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-... --comment
Design Approved (status: review -> approved)
python scripts/eaa_design_transition.py --uuid PROJ-SPEC-... --status approved
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-... --comment
Implementation Complete (close issue)
python scripts/eaa_design_transition.py --uuid PROJ-SPEC-... --status completed
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-... --comment
gh issue close <issue-number> --comment "Design implemented"
Each GitHub integration operation produces specific outputs that confirm successful execution:
| Operation | Output Type | Example | Description |
|---|---|---|---|
| Create Issue from Design | GitHub issue URL + local file update | CREATED: https://github.com/owner/repo/issues/123<br>UPDATED: docs/design/specs/auth-service.md with issue #123 | Creates new GitHub issue and updates design frontmatter with related_issues |
| Attach Design to Issue | Issue comment + label update | ATTACHED: Design to issue #42<br>UPDATED: Labels [design, design:spec, status:draft] | Adds design content as comment and syncs labels |
| Sync Status | Label change confirmation | SYNCED: Issue #42 labels updated<br>REMOVED: status:draft<br>ADDED: status:approved | Updates issue labels to match design status |
| Dry Run | Validation report | DRY-RUN: Would create issue with title "[SPEC] Auth Service"<br>DRY-RUN: Would add labels: design, design:spec, status:draft | Shows what would happen without making changes |
| Error | Error message + cause | ERROR: gh CLI not authenticated. Run: gh auth login | Describes the problem and recommended fix |
| Modified File | Field Updated | Purpose |
|---|---|---|
| Design document frontmatter | related_issues: ["#123"] | Links design to GitHub issue(s) |
| Design document frontmatter | status: approved | Updated by transition (synced to GitHub) |
| GitHub issue | Labels: design, design:spec, status:* | Tracks design type and current status |
| GitHub issue | Comments | Contains design document content snapshots |
# Verify prerequisites
gh auth status
python scripts/eaa_github_issue_create.py --uuid PROJ-SPEC-20250129-a1b2c3d4 --dry-run
# Create the issue
python scripts/eaa_github_issue_create.py --uuid PROJ-SPEC-20250129-a1b2c3d4
# Expected output:
# CREATED: https://github.com/owner/repo/issues/123
# UPDATED: docs/design/specs/auth-service.md with issue #123
# Step 1: Create design with UUID
python scripts/eaa_design_uuid.py --file docs/design/specs/new-feature.md --type SPEC
# Step 2: Create GitHub issue
python scripts/eaa_github_issue_create.py --uuid PROJ-SPEC-...
# Step 3: Transition to review
python scripts/eaa_design_transition.py --uuid PROJ-SPEC-... --status review
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-... --comment
# Step 4: Approve design
python scripts/eaa_design_transition.py --uuid PROJ-SPEC-... --status approved
python scripts/eaa_github_sync_status.py --uuid PROJ-SPEC-... --comment
| Error | Cause | Solution |
|---|---|---|
| gh CLI not found | Not installed | Install via brew install gh or equivalent |
| gh CLI not authenticated | No auth token | Run gh auth login |
| Document has no UUID | Missing frontmatter | Run eaa_design_uuid.py --file <path> |
| Issue already exists | Duplicate creation attempt | Use attach or sync instead |
| Label creation failed | Missing permissions | Create labels manually or request access |
scripts/eaa_github_issue_create.py - Create issue from designscripts/eaa_github_attach_document.py - Attach design to issuescripts/eaa_github_sync_status.py - Sync status to issue