Installs: 0
Used in: 1 repos
Updated: 2d ago
$
npx ai-builder add skill pcortes/issue-creatorInstalls 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 criteriaQuick Install
$
npx ai-builder add skill pcortes/issue-creatorDetails
- Type
- skill
- Author
- pcortes
- Slug
- pcortes/issue-creator
- Created
- 6d ago