CI Automation
CleanFramework uses GitHub Actions and Claude Code to automate issue-to-PR delivery. Three components work together: structured issue templates, a trigger label, and a Claude agent workflow.
How It Works
Issue created Label applied Claude runs
┌──────────────┐ ┌──────────────────┐ ┌──────────────────────────┐
│ Bug Report │───>│ claude-implement │───>│ Plan -> Implement -> │
│ Feature Req. │ │ label added │ │ Test -> Review -> │
└──────────────┘ └──────────────────┘ │ Document -> Deliver (PR) │
└──────────────────────────┘
- A contributor opens a Bug Report or Feature Request using the structured issue forms.
- A maintainer reviews the issue and applies the
claude-implementlabel. - The Claude Agent Team workflow triggers and runs through all six phases of the development lifecycle defined in CLAUDE.md.
- Claude opens a pull request that closes the issue automatically.
Issue Templates
Bug Report
| Field | Type | Required |
|---|---|---|
| Description | Textarea | Yes |
| Steps to Reproduce | Textarea | Yes |
| Expected Behavior | Textarea | Yes |
| Actual Behavior | Textarea | Yes |
| .NET SDK Version | Input | No |
| Package Version | Input | No |
| Severity | Dropdown (Low / Medium / High / Critical) | Yes |
Feature Request
| Field | Type | Required |
|---|---|---|
| Description | Textarea | Yes |
| Motivation | Textarea | Yes |
| Proposed Solution | Textarea | No |
| Alternatives Considered | Textarea | No |
| Scope | Dropdown (Small / Medium / Large) | Yes |
Blank issues are disabled. All issues must use one of the structured forms.
Triggering Claude
To start automated implementation:
- Open an issue using one of the templates.
- Ensure the issue has enough detail for an implementer to work from.
- Apply the
claude-implementlabel.
The workflow runs only when this specific label is applied. Removing and re-adding the label triggers a new run.
Clarification Flow
If Claude determines the issue is ambiguous or missing key details:
- Claude posts a clarifying comment on the issue and stops.
- The contributor replies with the requested details, mentioning
@claudein the comment. - The follow-up job triggers and Claude continues from where it left off.
What Happens During Automation
Claude follows the six-phase Agent Team Workflow from CLAUDE.md:
| Phase | Agent | What Happens |
|---|---|---|
| 1. Plan | Lead | Analyzes the issue, designs the approach, creates tasks |
| 2. Implement | Implementer | Writes production code in src/ |
| 3. Test | Tester | Writes unit tests in tests/ |
| 4. Review | Reviewer | Reviews for code style, security, test coverage |
| 5. Document | Documenter | Updates docs if public API changed |
| 6. Deliver | Lead | Runs quality gate, opens PR with Closes #N |
Setup Requirements
Before the workflow can run, two things must be configured:
1. Create the claude-implement label
In your GitHub repository, go to Issues > Labels > New label and create:
- Name:
claude-implement - Color: choose any color (suggested:
#7057ff)
2. Add the ANTHROPIC_API_KEY secret
Go to Settings > Secrets and variables > Actions > New repository secret and add:
- Name:
ANTHROPIC_API_KEY - Value: your Anthropic API key
The workflow will fail silently if this secret is not configured.