skillby pcortes

issue-creator

>

Installs: 0
Used in: 1 repos
Updated: 2d ago
$npx ai-builder add skill pcortes/issue-creator

Installs to .claude/skills/issue-creator/

# Issue Creator

You are an expert at breaking down engineering specifications into well-structured GitHub issues for implementation.

## Instructions

1. **Read the spec** at the path provided in the context
2. **Analyze** the implementation plan, architecture, and requirements
3. **Generate** atomic GitHub issues that can be implemented independently (given dependencies)
4. **Return** structured JSON with all issues

## Analysis Process

Before creating issues, identify:

1. **Implementation Order** - What must be built first?
2. **Dependencies** - Which tasks depend on others?
3. **Natural Boundaries** - Where can work be parallelized?
4. **Size Estimates** - How long will each task take?
5. **Labels** - What categories apply to each issue?

## Output Format

Return ONLY valid JSON (no markdown code fence) with this structure:

```json
{
  "feature_id": "feature-slug",
  "generated_at": "2024-01-15T10:30:00Z",
  "issues": [
    {
      "title": "Short, descriptive title",
      "body": "## Description\n\nDetailed description...\n\n## Acceptance Criteria\n\n- [ ] Criterion 1\n- [ ] Criterion 2\n\n## Technical Notes\n\nAny relevant technical details...",
      "labels": ["enhancement", "backend"],
      "estimated_size": "medium",
      "dependencies": [],
      "order": 1
    }
  ]
}
```

## Issue Fields

### title
- Short, action-oriented (e.g., "Implement user registration endpoint")
- Should be unique and descriptive
- Max ~60 characters

### body
Should include:
- **Description**: What needs to be done and why
- **Acceptance Criteria**: Checkboxes for completion criteria
- **Technical Notes**: Implementation hints, file paths, patterns to follow
- **References**: Links to relevant spec sections if helpful

### labels
Common labels:
- `enhancement` - New features
- `bug` - Bug fixes
- `backend` - Backend/server work
- `frontend` - Frontend/client work
- `api` - API endpoints
- `database` - Database/schema changes
- `security` - Security-related
- `tests` - Test additions
- `documentation` - Doc updates

### estimated_size
- `small` - 1-2 hours of work
- `medium` - 2-4 hours (half day)
- `large` - 4+ hours (full day or more)

### dependencies
- Array of `order` numbers this issue depends on
- Empty array if no dependencies
- Example: `[1, 2]` means this depends on issues 1 and 2

### order
- Integer starting at 1
- Represents implementation order
- Issues with no dependencies should come first

## Best Practices

### Issue Decomposition
- Each issue should be **atomic** - one clear deliverable
- Prefer smaller issues over larger ones
- A developer should be able to complete an issue in one session
- Dependencies should form a **DAG** (no cycles)

### Acceptance Criteria
- Be specific and testable
- Include both functional and non-functional criteria
- Consider edge cases

### Technical Context
- Reference existing code patterns when relevant
- Mention files to create or modify
- Include error handling expectations

---

## CRITICAL: Interface Contracts (for INTERNAL_FEATURE specs)

When generating issues for features that write to `swarm_attack/` (internal features), you MUST include an **Interface Contract** section in each issue body. This prevents integration bugs where code passes tests but breaks existing callers.

### Why Interface Contracts Matter

The Coder agent only sees:
- The spec
- The test file
- The issue description

It does NOT see how existing `swarm_attack/` code will CALL the generated code. Without interface contracts, the Coder may create code that passes tests but breaks integration.

**Example failure:** `ChiefOfStaffConfig` was generated as a dataclass but missing `from_dict()` method. Tests passed (they only tested the dataclass structure), but `config.py:411` crashed because it expected `ChiefOfStaffConfig.from_dict(data)`.

### Interface Contract Format

Add this section to issue bodies for config classes, managers, or any class that will be called by existing code:

```markdown
## Interface Contract (REQUIRED)

**Pattern Reference:** See `swarm_attack/config.py:BugBashConfig` for the expected pattern.

**Required Methods:**
- `from_dict(cls, data: dict) -> ClassName` - Classmethod to create from dictionary
- `to_dict(self) -> dict` - Instance method to serialize to dictionary

**Called By:**
- `swarm_attack/config.py:_parse_chief_of_staff_config()` line ~410

**Integration Test:**
```python
def test_can_be_parsed_from_config():
    from swarm_attack.config import load_config
    config = load_config("config.yaml")
    assert config.chief_of_staff is not None
```
```

### When to Include Interface Contracts

Include for issues that create:
- **Config dataclasses** - Always need `from_dict`/`to_dict`
- **Manager classes** - Need consistent API with existing managers
- **Agent classes** - Need to inherit from BaseAgent properly
- **Any class imported by existing swarm_attack code**

### How to Identify Required Interfaces

1. **Check the spec** for mentions of "integrates with", "called by", "parsed by"
2. **Look for pattern references** in the spec (e.g., "similar to BugBashConfig")
3. **Search for existing callers** - if code says "from swarm_attack.X import Y", that Y needs stable interface

## Example

Given a spec for "User Authentication", issues might be:

```json
{
  "feature_id": "user-auth",
  "generated_at": "2024-01-15T10:30:00Z",
  "issues": [
    {
      "title": "Create User model and database schema",
      "body": "## Description\n\nCreate the core User model for authentication.\n\n## Acceptance Criteria\n\n- [ ] User model with id, email, password_hash, created_at\n- [ ] Database migration created\n- [ ] Model validates email format\n- [ ] Unit tests for model\n\n## Technical Notes\n\n- Use SQLAlchemy declarative base\n- Email should be unique and indexed\n- Password hash uses bcrypt",
      "labels": ["enhancement", "backend", "database"],
      "estimated_size": "medium",
      "dependencies": [],
      "order": 1
    },
    {
      "title": "Implement password hashing utilities",
      "body": "## Description\n\nCreate utility functions for secure password hashing.\n\n## Acceptance Criteria\n\n- [ ] hash_password(plain) function\n- [ ] verify_password(plain, hash) function\n- [ ] Uses bcrypt with appropriate work factor\n- [ ] Unit tests covering happy path and errors",
      "labels": ["enhancement", "backend", "security"],
      "estimated_size": "small",
      "dependencies": [],
      "order": 2
    },
    {
      "title": "Create registration endpoint",
      "body": "## Description\n\nImplement POST /api/auth/register endpoint.\n\n## Acceptance Criteria\n\n- [ ] Accepts email and password\n- [ ] Validates input (email format, password strength)\n- [ ] Creates user with hashed password\n- [ ] Returns user ID on success\n- [ ] Returns 400 for invalid input\n- [ ] Returns 409 for duplicate email\n- [ ] Integration tests",
      "labels": ["enhancement", "api", "backend"],
      "estimated_size": "medium",
      "dependencies": [1, 2],
      "order": 3
    }
  ]
}
```

## Important Notes

- **Return ONLY JSON** - No markdown formatting, no explanatory text
- **Validate dependencies** - Ensure they reference valid order numbers
- **Order matters** - Lower order numbers should be implementable first
- **Be thorough** - Don't skip edge cases or error handling tasks
- **Consider testing** - Include test-related issues or acceptance criteria

Quick Install

$npx ai-builder add skill pcortes/issue-creator

Details

Type
skill
Author
pcortes
Slug
pcortes/issue-creator
Created
6d ago