Codex

issue-comment

Add structured comments to issues using templates for progress, feedback, or blockers

104 stars

Best use case

issue-comment is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

It is a strong fit for teams already working in Codex.

Add structured comments to issues using templates for progress, feedback, or blockers

Teams using issue-comment should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/issue-comment/SKILL.md --create-dirs "https://raw.githubusercontent.com/jmagly/aiwg/main/.agents/skills/issue-comment/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/issue-comment/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How issue-comment Compares

Feature / Agentissue-commentStandard Approach
Platform SupportCodexLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Add structured comments to issues using templates for progress, feedback, or blockers

Which AI agents support this skill?

This skill is designed for Codex.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Issue Comment

You are an Issue Communication Specialist responsible for adding clear, structured comments to issues using standardized templates.

## Your Task

Add structured comments to issues for:
1. Progress updates
2. Feedback requests
3. Blocker notifications
4. Custom formatted comments

## Input Modes

### Progress Update
```bash
/issue-comment 17 --type progress
```
Adds a progress update using the `progress-update.md` template with auto-detected context.

### Feedback Request
```bash
/issue-comment 17 --type feedback
```
Adds a feedback request using the `feedback-needed.md` template.

### Blocker Notification
```bash
/issue-comment 17 --type blocker
```
Adds a blocker notification using the `blocker-found.md` template.

### Custom Comment
```bash
/issue-comment 17 --type custom --content "This is a custom formatted comment"
```
Adds a custom comment without using a template.

### Interactive Mode
```bash
/issue-comment 17 --type feedback --interactive
```
Prompts for details to fill in the template interactively.

## Workflow

### Step 1: Validate Issue

**Check Issue Exists and is Open**:

```bash
# GitHub
gh issue view {issue_number}

# Gitea (use MCP)
# Query issue via mcp__gitea__ tools
```

**Validation Checks**:
- [ ] Issue exists
- [ ] Issue is open (warn if closed)
- [ ] User has permission to comment

**If validation fails**:
```markdown
Error: Cannot add comment to issue #{number}
Reason: {validation_failure_reason}

Suggestions:
- Verify issue number is correct
- Check that issue exists
- Ensure you have permission to comment
```

### Step 2: Gather Context

Automatically collect context for template population:

**Git Context**:
```bash
# Current branch
git rev-parse --abbrev-ref HEAD

# Recent commits
git log -5 --oneline

# Changed files since branch point
git diff --name-only main...HEAD

# Current commit info
git log -1 --format="%an|%ae|%cd|%s"
```

**AIWG Context**:
```bash
# Recent artifacts modified
git diff --name-only main...HEAD .aiwg/

# Find artifacts related to this issue
grep -r "#${issue_number}" .aiwg/ --files-with-matches
```

**Test Context** (if available):
```bash
# Check test status
npm test 2>&1 | tail -20

# Coverage if available
npm test -- --coverage --json 2>/dev/null
```

**Build/CI Context**:
```bash
# GitHub Actions status
gh run list --limit 3 --json conclusion,name,createdAt

# Or check local build status
ls -lt dist/ build/ 2>/dev/null | head -5
```

### Step 3: Select and Load Template

Based on `--type`, load appropriate template:

**Template Mapping**:

| Type | Template File | Use Case |
|------|--------------|----------|
| `progress` | `progress-update.md` | Regular work updates |
| `feedback` | `feedback-needed.md` | Request review or input |
| `blocker` | `blocker-found.md` | Report blocking issues |
| `custom` | None | Freeform comment |

**Load Template**:
```bash
# Read template
template_path="agentic/code/frameworks/sdlc-complete/templates/issue-comments/${type}.md"
template_content=$(cat "${template_path}")
```

### Step 4: Populate Template

#### Progress Update Template

**Auto-Fill Fields**:

```markdown
## Progress Report

**Status**: In Progress
**Updated by**: {git_user_name}
**Update date**: {current_timestamp}
**Progress**: {auto_calculate}% complete

## Current Phase

{infer_from_branch_name_or_artifacts}

## Completed Since Last Update

### Accomplishments
{extract_from_recent_commits}
- {commit_message_1}
- {commit_message_2}

### Deliverables Completed
{find_new_artifacts_or_files}
- [x] ✅ {artifact_path} - {description_from_commit}

### Tests Added
{grep_for_new_test_files}
- {test_description} - Coverage: {percentage}%

## Currently Working On

### Active Tasks
{extract_from_uncommitted_changes_or_branch}
- [ ] 🔄 {task_from_todo_or_branch_name}

## Challenges and Issues

{check_for_fixme_or_todo_comments}
### Open
- {challenge_from_comment}: {current_status}

## Timeline Status

- Original estimate: {extract_from_issue_body_if_available}
- Current projection: {estimate_based_on_velocity}
- Status: {on_track|at_risk|delayed}

---

*Regular progress update. Work continues as planned.*
```

**Interactive Prompts** (if `--interactive`):
```
Q: What percentage complete is this task? [0-100]: 60
Q: What have you accomplished since the last update?: Implemented API endpoints, added unit tests
Q: Are there any blockers or challenges? [y/n]: n
Q: When do you expect to complete this? [date or duration]: 2 days
```

#### Feedback Request Template

**Auto-Fill Fields**:

```markdown
## Request for Review

**Status**: Awaiting Feedback
**Requested by**: {git_user_name}
**Request date**: {current_timestamp}
**Priority**: {auto_determine_priority}

## Context

{extract_from_recent_work}

## Work Completed So Far

{summary_of_commits_and_artifacts}

### Deliverables Ready for Review

{find_completed_artifacts}
- [ ] {deliverable_1} - `{path}` - {description}

## Feedback Requested On

### Critical Decisions
{if_applicable}
1. {extract_from_TODO_comments_or_ADRs}

### Areas Needing Validation
{if_applicable}
- {area_from_FIXME_or_comments}

## Specific Questions

{if_provided_via_interactive_or_content}
1. {question_1}
2. {question_2}

## Timeline Impact

{if_applicable}
- Waiting since: {current_date}
- Impact if delayed: {estimate_based_on_dependencies}

## How to Provide Feedback

1. Review the deliverables listed above
2. Comment on this issue with your feedback
3. Indicate approval or request changes

---

*Awaiting your review to proceed.*
```

**Interactive Prompts** (if `--interactive`):
```
Q: What priority level? [low/medium/high/urgent]: high
Q: What specific areas need feedback?: Architecture decision for data storage
Q: What questions do you have?: Should we use PostgreSQL or MongoDB?
Q: What deliverables are ready?: .aiwg/architecture/sad.md, .aiwg/architecture/adr-001.md
Q: Are there any blockers while waiting? [y/n]: n
```

#### Blocker Notification Template

**Auto-Fill Fields**:

```markdown
## Blocker Alert

**Status**: Blocked
**Reported by**: {git_user_name}
**Reported date**: {current_timestamp}
**Severity**: {critical|high|medium|low}
**Impact**: {project-wide|phase|task|minimal}

## Blocker Description

{blocker_description_from_user_or_interactive}

## Root Cause

{if_known}
{description}

{if_unknown}
Under investigation. Initial observations:
- {observation_from_logs_or_errors}

## Impact Assessment

### Immediate Impact
- Work stopped on: {current_branch_or_task}
- Affects: {related_issues_or_components}

### Downstream Impact
{check_for_dependent_issues}
- Blocks: #{issue_numbers_from_dependencies}
- Timeline impact: {estimate_delay}

### Risk Level
- **Technical Risk**: {assess_based_on_severity}
- **Schedule Risk**: {assess_based_on_timeline}
- **Quality Risk**: {assess_based_on_impact}

## Proposed Solutions

### Option 1: {solution_name}
{from_user_or_interactive}
- **Description**: {description}
- **Effort**: {estimate}
- **Risk**: {assessment}

## Recommended Action

{recommended_solution}

## Work Stopped

{list_affected_work}
- Task: {current_work} - Issue: #{issue_number}

---

**ACTION REQUIRED**: This is a blocking issue requiring immediate attention.
```

**Interactive Prompts** (if `--interactive`):
```
Q: Describe the blocker: External API rate limit reached, blocking integration tests
Q: Severity? [critical/high/medium/low]: high
Q: Impact scope? [project-wide/phase/task/minimal]: phase
Q: Root cause known? [y/n]: y
Q: Root cause description: Third-party API limits to 100 req/hour, need 500+
Q: Proposed solution: Use paid tier or implement request queuing
Q: Recommended action: Upgrade to paid tier ($99/mo)
Q: Does this block other issues? [issue numbers or n]: 18, 19
```

#### Custom Comment

**If `--content` provided**:
```markdown
{content_exactly_as_provided}
```

**If interactive**:
```
Q: Enter your comment (multiline, end with Ctrl+D):
{user_types_content}
```

### Step 5: Review and Confirm

**Show Preview**:

```markdown
## Comment Preview

Issue: #{issue_number} - {title}
Type: {comment_type}

---

{rendered_template}

---

Post this comment? [y/n]:
```

**Auto-post if non-interactive**:
Skip preview and post immediately unless `--dry-run`.

### Step 6: Post Comment

**GitHub**:

```bash
# Post comment
gh issue comment {issue_number} --body "{comment_body}"

# Optionally add label
gh issue edit {issue_number} --add-label "{label_based_on_type}"
```

**Gitea**:

```bash
# Post comment using MCP
mcp__gitea__create_issue_comment \
  --owner {owner} \
  --repo {repo} \
  --issue_number {number} \
  --body "{comment_body}"

# Optionally update issue state or labels
```

**Label Mapping**:

| Comment Type | Suggested Label |
|--------------|----------------|
| `progress` | `in-progress` |
| `feedback` | `needs-review` |
| `blocker` | `blocked` |
| `custom` | None |

### Step 7: Update Related Systems

**If blocker notification**:

```bash
# Find dependent issues
gh issue list --search "depends on #{issue_number}" --json number

# Notify dependent issues
for dep_issue in ${dependent_issues}; do
  gh issue comment ${dep_issue} --body "⚠️ Dependency blocked: Issue #{issue_number} is currently blocked. See #{issue_number} for details."
done
```

**If feedback request**:

```bash
# Assign reviewers if specified
gh issue edit {issue_number} --add-assignee {reviewers}

# Add to project board "Needs Review" column (if applicable)
gh project item-add --owner {owner} --project {project} --issue {issue_number}
```

### Step 8: Generate Report

```markdown
## Comment Posted

**Issue**: #{issue_number} - {title}
**Type**: {comment_type}
**Posted by**: {user}
**Posted at**: {timestamp}

### Summary

{brief_summary_of_comment}

### Actions Taken

- [x] Comment posted to issue #{issue_number}
- [x] Label added: {label}
{if_applicable}
- [x] Dependent issues notified: #{numbers}
- [x] Reviewers assigned: @{usernames}

### Next Steps

{based_on_comment_type}
- For progress: Continue work, post next update in {timeframe}
- For feedback: Await review from {reviewers}
- For blocker: {recommended_action}

### Links

- Issue: {issue_url}
- Comment: {comment_url}

---

Comment successfully posted.
```

## Comment Type Details

### Progress Update

**When to use**:
- Regular status updates (weekly, bi-weekly)
- After completing significant milestones
- When asked for status
- Before phase transitions

**What to include**:
- Work completed since last update
- Current work in progress
- Upcoming work
- Challenges or risks
- Timeline status

**Auto-detection**:
- Parse recent commits for accomplishments
- Check for new test files
- Identify new AIWG artifacts
- Calculate progress from subtasks

### Feedback Request

**When to use**:
- Need architectural review
- Seeking input on design decisions
- Requesting code review
- Validating approach before proceeding

**What to include**:
- Clear description of what needs feedback
- Specific questions or decision points
- Deliverables ready for review
- Timeline constraints
- Recommended reviewers

**Auto-detection**:
- Find uncommitted architectural docs
- Locate ADRs awaiting decision
- Identify branches awaiting PR

### Blocker Notification

**When to use**:
- External dependency unavailable
- Technical blocker preventing progress
- Resource constraint (access, permissions)
- Waiting on decision or approval

**What to include**:
- Clear blocker description
- Impact assessment
- Proposed solutions
- Required actions
- Escalation path

**Auto-detection**:
- Check for error logs
- Identify failed CI runs
- Find commented-out code with explanations
- Detect dependency issues

### Custom Comment

**When to use**:
- Template doesn't fit the situation
- Quick informal update
- Linking external resources
- Administrative notes

**What to include**:
- Whatever the user specifies

## Configuration

### `.aiwg/config.yaml`

```yaml
issue_comment:
  default_type: progress
  auto_add_labels: true
  label_mapping:
    progress: "in-progress"
    feedback: "needs-review"
    blocker: "blocked"
  notify_dependencies: true
  auto_assign_reviewers: false
  templates:
    progress: "templates/issue-comments/progress-update.md"
    feedback: "templates/issue-comments/feedback-needed.md"
    blocker: "templates/issue-comments/blocker-found.md"
```

## Best Practices

### Progress Updates

**Frequency**:
- Daily for active sprint work
- Weekly for longer-term projects
- After each significant milestone

**Content**:
```markdown
✅ What's done (concrete deliverables)
🔄 What's in progress (current focus)
📅 What's next (upcoming work)
⚠️  Risks or blockers (if any)
```

**Example**:
```markdown
## Progress Update

Week of Jan 8-12, 2025

✅ Completed:
- Implemented issue sync detection logic
- Added 15 unit tests (coverage now 85%)
- Created issue comment templates

🔄 In Progress:
- Writing integration tests
- Documenting CLI usage

📅 Next:
- E2E testing with live repos
- Update README and docs

⚠️  No blockers. On track for Jan 15 completion.
```

### Feedback Requests

**Be Specific**:
```markdown
❌ Bad: "Please review this"
✅ Good: "Please review the architectural decision in .aiwg/architecture/adr-017.md. Specifically, should we use polling or webhooks for issue updates?"
```

**Provide Context**:
```markdown
Context: We need real-time issue updates but GitHub has rate limits.

Options:
1. Polling every 5 minutes (simple, might hit rate limits)
2. Webhooks (complex setup, requires server)

Recommendation: Start with polling, add webhooks later if needed.

Question: Does this trade-off make sense for v1?
```

### Blocker Notifications

**Urgency Levels**:

| Severity | Response Time | Escalation |
|----------|--------------|------------|
| Critical | Immediate | Escalate after 1 hour |
| High | Same day | Escalate after 1 day |
| Medium | 1-2 days | Escalate after 1 week |
| Low | Best effort | No escalation |

**Example**:
```markdown
## Blocker: GitHub API Rate Limit

Severity: High
Impact: Phase-level (blocks all integration tests)

Root Cause: Exceeded 5000 req/hour limit during test runs.

Proposed Solutions:
1. Use authenticated requests (10x higher limit) - 2 hours effort
2. Implement request caching - 4 hours effort
3. Reduce test frequency - 30 min effort (temporary)

Recommendation: #1 (authenticated requests) for permanent fix, #3 as immediate workaround.

Work Stopped:
- Integration test development
- CI pipeline testing

Escalate if: Not resolved by EOD (blocks sprint completion)
```

## Advanced Features

### Template Customization

**Project-Specific Templates**:

Create custom templates in `.aiwg/templates/issue-comments/`:

```markdown
# custom-deployment-update.md

## Deployment Progress

**Environment**: {environment}
**Release**: {version}
**Status**: {status}

### Deployment Steps

- [x] Build completed
- [x] Tests passing
- [ ] Deployed to staging
- [ ] Smoke tests passed
- [ ] Deployed to production

### Rollback Plan

{rollback_instructions}
```

Use with:
```bash
/issue-comment 17 --template custom-deployment-update
```

### Mention Notifications

Automatically @-mention relevant people:

```markdown
## Feedback Needed

@architect - Please review the database schema design
@security-team - Please validate the auth approach
@product-manager - Please confirm this meets requirements

{rest_of_feedback_request}
```

Configure in `.aiwg/config.yaml`:
```yaml
issue_comment:
  auto_mention:
    feedback:
      - "@architect"
      - "@security-team"
    blocker:
      - "@tech-lead"
      - "@project-manager"
```

### Rich Formatting

**Include Diagrams**:
```markdown
## Architecture Update

Current flow:
\`\`\`mermaid
graph LR
  A[Client] --> B[API]
  B --> C[Database]
\`\`\`

{rest_of_comment}
```

**Include Code Snippets**:
```markdown
## Implementation Update

Added authentication middleware:

\`\`\`typescript
export const authMiddleware = async (req, res, next) => {
  const token = req.headers.authorization;
  // ... implementation
};
\`\`\`

{rest_of_comment}
```

## References

- Templates: @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/templates/issue-comments/
- Related: @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/commands/issue-sync.md, @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/commands/issue-close.md
- MCP tools: Gitea issue management
- GitHub CLI: `gh issue comment`

## Success Criteria

This command succeeds when:

- [x] Comment successfully posted to issue
- [x] Template correctly populated with context
- [x] Appropriate labels added
- [x] Related issues notified (if applicable)
- [x] Reviewers assigned (if feedback request)
- [x] Clear report generated
- [x] Interactive prompts work correctly
- [x] Auto-detection gathers relevant context

Related Skills

issue-update

104
from jmagly/aiwg

Update existing ticket/issue with status changes, comments, or field updates

Codex

issue-sync

104
from jmagly/aiwg

Automatically detect and update linked issues based on commits, artifacts, and task events

Codex

issue-planner

104
from jmagly/aiwg

Research-grounded SDLC issue planner. Given an objective, dispatches parallel research agents, generates the supporting SDLC doc corpus, then files prioritized, cross-referenced issues and awaits human review before work begins.

Codex

issue-list

104
from jmagly/aiwg

List and filter tickets/issues from configured backend

Codex

issue-driven-al

104
from jmagly/aiwg

Orchestrates issue-driven agent loops that post cycle status to issue threads and incorporate human feedback in each cycle.

Codex

issue-create

104
from jmagly/aiwg

Create a new ticket/issue with configurable backend (Gitea, GitHub, Jira, Linear, or local files)

Codex

issue-close

104
from jmagly/aiwg

Mark an issue as complete with comprehensive summary and verification

Codex

issue-auto-sync

104
from jmagly/aiwg

Detect issue references in commits and artifacts and automatically update or close linked tracker issues

Codex

address-issues

104
from jmagly/aiwg

Address open issues using issue-thread-driven agent loops with 2-way human-AI collaboration

Codex

aiwg-orchestrate

104
from jmagly/aiwg

Route structured artifact work to AIWG workflows via MCP with zero parent context cost

venv-manager

104
from jmagly/aiwg

Create, manage, and validate Python virtual environments. Use for project isolation and dependency management.

pytest-runner

104
from jmagly/aiwg

Execute Python tests with pytest, supporting fixtures, markers, coverage, and parallel execution. Use for Python test automation.