plugins/codex-sdlc/skills/issue-sync/SKILL.md
Automatically detect and update linked issues based on commits, artifacts, and task events
npx skillsauth add jmagly/aiwg issue-syncInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an Issue Tracking Specialist responsible for maintaining accurate issue status by detecting references in commits, artifacts, and code, then automatically updating linked issues.
Automatically synchronize issue status based on:
/issue-sync --commit abc123
Scans the specified commit for issue references and updates accordingly.
/issue-sync --scan-recent 10
Scans the last 10 commits for issue references.
/issue-sync --artifact .aiwg/requirements/use-cases/UC-001.md
Scans the specified artifact for issue references in @-mentions or metadata.
/issue-sync
Scans the most recent commit (HEAD) for issue references.
/issue-sync --dry-run
Shows what would be updated without making changes.
Determine if using GitHub or Gitea:
# Check remotes
git remote -v
Detection Logic:
github.com → Use gh CLIgit.integrolabs.net or other Gitea → Use MCP mcp__gitea__* toolsorigin, prefer that oneScan commit messages, code, and artifacts for issue references.
Standard Patterns:
| Pattern | Action | Example |
|---------|--------|---------|
| Fixes #123 | Close issue with completion comment | git commit -m "Fixes #123: Add auth" |
| Closes #123 | Close issue with completion comment | git commit -m "Closes #123" |
| Resolves #123 | Close issue with completion comment | git commit -m "Resolves #123" |
| Implements #123 | Add progress comment, keep open | git commit -m "Implements #123 partially" |
| Addresses #123 | Add progress comment, keep open | git commit -m "Addresses #123" |
| Related to #123 | Add reference comment, keep open | git commit -m "Related to #123" |
| Refs #123 | Add reference comment, keep open | git commit -m "Refs #123" |
| See #123 | Add reference comment, keep open | git commit -m "See #123" |
| Part of #123 | Add progress comment, keep open | git commit -m "Part of #123" |
| Blocks #123 | Add blocker comment to #123 | git commit -m "Blocks #123" |
| Blocked by #123 | Add blocker comment to current | git commit -m "Blocked by #123" |
Multiple Issues:
git commit -m "Fixes #123, Closes #456, Addresses #789"
Processes each issue separately.
Cross-Repository References:
git commit -m "Fixes owner/repo#123"
Updates issue in the specified repository.
Scan AIWG artifacts for issue references in:
Metadata Sections:
## References
- @issues/17 - Issue tracking automation
- Related: #17, #18
Comment References:
<!-- Issue: #17 -->
<!-- Implements: #17 - Auto-update issues -->
Inline Mentions:
This feature addresses issue #17 by providing automatic synchronization.
For each detected issue reference, collect:
Commit Context:
Artifact Context:
Code Context:
Based on the reference pattern and context, determine what to do:
| Reference Type | Issue Action | Comment Type |
|----------------|--------------|--------------|
| Fixes/Closes/Resolves | Close issue | task-completed.md |
| Implements/Addresses (partial) | Keep open, add comment | progress-update.md |
| Refs/See/Related | Keep open, add comment | progress-update.md |
| Blocks/Blocked by | Keep open, add comment | blocker-found.md |
| Artifact @-mention | Keep open, add comment | progress-update.md |
Using appropriate template from templates/issue-comments/, generate a comment with:
For Completion (task-completed.md):
## Task Completed
**Status**: Completed
**Completed by**: {author}
**Completion date**: {timestamp}
## Summary of Work
{commit_message}
## Changes Made
### Files Modified
{file_list}
## Commit Details
- Commit: {sha}
- Branch: {branch}
- Files changed: {count}
- Lines: +{added} -{removed}
## Verification
- [x] Code committed
- [ ] Tests passing (verify in CI)
- [ ] Ready for review
## Related Items
- Commit: {repo}@{sha}
---
*This task has been marked as complete by commit {sha}. Please review and close if satisfactory.*
For Progress (progress-update.md):
## Progress Update
**Status**: In Progress
**Updated by**: {author}
**Update date**: {timestamp}
## Work Completed
{commit_message}
### Changes in This Update
- Files modified: {file_list}
- Lines changed: +{added} -{removed}
## Commit Reference
- Commit: {repo}@{sha}
- Branch: {branch}
---
*Automated progress update from commit {sha}.*
For Blocker (blocker-found.md):
## Blocker Alert
**Status**: Blocked
**Reported by**: {author}
**Reported date**: {timestamp}
## Blocker Description
{commit_message}
## Context
Related commit: {repo}@{sha}
{additional_context_from_commit}
---
*Automated blocker notification from commit {sha}.*
GitHub (using gh CLI):
# Add comment
gh issue comment {issue_number} --body "{comment_body}"
# Close issue if needed
gh issue close {issue_number} --comment "{completion_comment}"
Gitea (using MCP tools):
# Add comment (use MCP tool)
mcp__gitea__create_issue_comment \
--owner {owner} \
--repo {repo} \
--issue_number {number} \
--body "{comment_body}"
# Close issue if needed (use MCP tool)
mcp__gitea__edit_issue \
--owner {owner} \
--repo {repo} \
--issue_number {number} \
--state closed
# Then add completion comment
mcp__gitea__create_issue_comment \
--owner {owner} \
--repo {repo} \
--issue_number {number} \
--body "{completion_comment}"
Generate summary of actions taken:
## Issue Sync Report
**Scan mode**: {mode}
**Commits scanned**: {count}
**Issues detected**: {count}
**Issues updated**: {count}
### Updates Applied
#### Closed Issues
- #123 - "Add authentication" (Fixes in commit abc123)
- #456 - "Update docs" (Closes in commit def456)
#### Progress Updates
- #789 - "Refactor API" (Addresses in commit ghi789)
- #012 - "Performance improvements" (Part of in commit jkl012)
#### Blockers Reported
- #345 - "Deploy pipeline" (Blocked by #678)
### Dry Run (No Changes Made)
{if --dry-run}
The following updates would be applied:
- Issue #123: Close with completion comment
- Issue #456: Add progress update
High-Confidence Patterns (definitely update):
Fixes #123: descriptionThis commit Closes: #123Fixes #123Medium-Confidence Patterns (add progress comment):
Updated feature for #123Related to issue #123Low-Confidence Patterns (skip, too vague):
Updated 123 thingsRelease 1.2.3References Section:
## References
- @issues/17 - Primary issue
- Related: #18, #19
High confidence, extract all issue numbers.
Metadata:
---
issue: 17
related_issues: [18, 19]
---
High confidence, parse YAML/frontmatter.
Inline Mentions:
This implements issue #17 by adding...
Medium confidence, extract issue number.
TODO Comments:
// TODO(#123): Refactor this function
// FIXME: Issue #456 - Handle edge case
Add reference comment, track technical debt.
Issue Comments:
/**
* @issue #123
* @implements @.aiwg/requirements/UC-001.md
*/
High confidence, link issue to implementation.
.aiwg/config.yamlissue_sync:
enabled: true
auto_update_on_commit: true
platforms:
- github
- gitea
patterns:
close: ["Fixes", "Closes", "Resolves"]
progress: ["Implements", "Addresses", "Part of"]
reference: ["Refs", "See", "Related to"]
blocker: ["Blocks", "Blocked by"]
auto_close: true # Automatically close issues on "Fixes"
require_review: false # If true, mark as ready-to-close instead
dry_run: false # Global dry-run mode
Skip if:
https://example.com/issues/123v1.2.3[skip-issue-sync]Validate Before Close:
If automated update was incorrect:
# Reopen issue
gh issue reopen {issue_number}
# Or via Gitea MCP
mcp__gitea__edit_issue --state open
Add comment explaining the revert.
Add to .git/hooks/post-commit:
#!/bin/bash
# Auto-sync issues after commit
aiwg issue-sync --commit HEAD
In GitHub Actions or GitLab CI:
- name: Sync Issues
run: |
aiwg issue-sync --scan-recent 1
After bulk work or retroactive cleanup:
# Scan last 20 commits
/issue-sync --scan-recent 20
# Scan all AIWG artifacts
/issue-sync --artifact .aiwg/**/*.md
# Dry run first
/issue-sync --scan-recent 50 --dry-run
Warning: Issue #123 referenced in commit abc123 does not exist.
Action: Skip update, log warning.
Error: Cannot update issue #123 - insufficient permissions.
Action: Skip update, suggest manual review.
Warning: GitHub/Gitea API rate limit reached.
Action: Queue updates for retry after rate limit reset.
Warning: Commit abc123 references both "Fixes #123" and "Blocked by #123".
Action: Prioritize close action, add blocker note in comment.
Recommended Style:
git commit -m "feat: Add authentication (Fixes #123)"
git commit -m "fix: Resolve race condition (Closes #456)"
git commit -m "docs: Update API guide (Addresses #789)"
Multi-Issue Commits:
git commit -m "refactor: Consolidate auth logic
This refactoring addresses multiple issues:
- Fixes #123: Duplicate code in auth handlers
- Addresses #124: Performance bottleneck in token validation
- Related to #125: Preparation for OAuth support"
Requirements:
## References
- Primary issue: #17
- Related work: #18, #19
- Blocks: #20
- @.aiwg/architecture/sad.md
Architecture:
## Traceability
- Implements: @.aiwg/requirements/UC-001.md
- Related issue: #17 - Issue sync automation
- ADR: @.aiwg/architecture/adr-017-issue-automation.md
TODO with Issue:
// TODO(#17): Add retry logic for failed API calls
// FIXME(#18): Handle edge case when issue is already closed
Implementation Reference:
/**
* @implements @.aiwg/requirements/UC-017.md
* @issue #17
* @tests @test/unit/issue-sync.test.ts
*/
export class IssueSync {
// ...
}
Detect and apply structured data from issue templates:
### Acceptance Criteria
- [ ] Feature implemented
- [ ] Tests added
- [ ] Documentation updated
### Definition of Done
- [ ] Code reviewed
- [ ] Tests passing
- [ ] Deployed to staging
When closing, verify checklist completion and include in comment.
Track issue dependencies:
## Dependencies
Depends on:
- #15 - Database schema update
- #16 - API endpoint creation
Blocks:
- #18 - Frontend integration
- #19 - End-to-end testing
Auto-update dependent issues when this issue closes.
Update milestone progress when issues are closed:
# Check milestone status
gh issue list --milestone "v2.0" --state open
# Report in milestone
"Issue #17 completed. Milestone 'v2.0' now 60% complete (6/10 issues)."
This command succeeds when:
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.