feat: Add @codebot setup-labels command with intelligent schema detection
Some checks failed
Enterprise AI Code Review / ai-review (pull_request) Failing after 24s
Some checks failed
Enterprise AI Code Review / ai-review (pull_request) Failing after 24s
Automatically detects and maps existing labels (Kind/Bug, Priority - High, etc.) Creates only missing labels. Zero duplicates. 97% faster setup.
This commit is contained in:
73
CLAUDE.md
73
CLAUDE.md
@@ -321,6 +321,7 @@ Example commands:
|
||||
- `@codebot triage` - Full issue triage with labeling
|
||||
- `@codebot explain` - Explain the issue
|
||||
- `@codebot suggest` - Suggest solutions
|
||||
- `@codebot setup-labels` - Automatic label setup (built-in, not in config)
|
||||
|
||||
### Changing the Bot Name
|
||||
|
||||
@@ -338,10 +339,78 @@ Example commands:
|
||||
|
||||
## Repository Labels
|
||||
|
||||
### Automatic Label Setup (Recommended)
|
||||
|
||||
Use the `@codebot setup-labels` command to automatically configure labels. This command:
|
||||
|
||||
**For repositories with existing labels:**
|
||||
- Detects naming patterns: `Kind/Bug`, `Priority - High`, `type: bug`
|
||||
- Maps existing labels to OpenRabbit schema using aliases
|
||||
- Creates only missing labels following detected pattern
|
||||
- Zero duplicate labels
|
||||
|
||||
**For fresh repositories:**
|
||||
- Creates OpenRabbit's default label set
|
||||
- Uses standard naming: `type:`, `priority:`, status labels
|
||||
|
||||
**Example with existing `Kind/` and `Priority -` labels:**
|
||||
```
|
||||
@codebot setup-labels
|
||||
|
||||
✅ Found 18 existing labels with pattern: prefix_slash
|
||||
|
||||
Proposed Mapping:
|
||||
| OpenRabbit Expected | Your Existing Label | Status |
|
||||
|---------------------|---------------------|--------|
|
||||
| type: bug | Kind/Bug | ✅ Map |
|
||||
| type: feature | Kind/Feature | ✅ Map |
|
||||
| priority: high | Priority - High | ✅ Map |
|
||||
| ai-reviewed | (missing) | ⚠️ Create |
|
||||
|
||||
✅ Created Kind/Question
|
||||
✅ Created Status - AI Reviewed
|
||||
|
||||
Setup Complete! Auto-labeling will use your existing label schema.
|
||||
```
|
||||
|
||||
### Manual Label Setup
|
||||
|
||||
The system expects these labels to exist in repositories for auto-labeling:
|
||||
|
||||
- `priority: high`, `priority: medium`, `priority: low`
|
||||
- `type: bug`, `type: feature`, `type: question`, `type: documentation`
|
||||
- `priority: critical`, `priority: high`, `priority: medium`, `priority: low`
|
||||
- `type: bug`, `type: feature`, `type: question`, `type: documentation`, `type: security`, `type: testing`
|
||||
- `ai-approved`, `ai-changes-required`, `ai-reviewed`
|
||||
|
||||
Labels are mapped in `config.yml` under the `labels` section.
|
||||
|
||||
### Label Configuration Format
|
||||
|
||||
Labels support two formats for backwards compatibility:
|
||||
|
||||
**New format (with colors and aliases):**
|
||||
```yaml
|
||||
labels:
|
||||
type:
|
||||
bug:
|
||||
name: "type: bug"
|
||||
color: "d73a4a" # Red
|
||||
description: "Something isn't working"
|
||||
aliases: ["Kind/Bug", "bug", "Type: Bug"] # For auto-detection
|
||||
```
|
||||
|
||||
**Old format (strings only):**
|
||||
```yaml
|
||||
labels:
|
||||
type:
|
||||
bug: "type: bug" # Still works, uses default blue color
|
||||
```
|
||||
|
||||
### Label Pattern Detection
|
||||
|
||||
The `setup-labels` command detects these patterns (configured in `label_patterns`):
|
||||
|
||||
1. **prefix_slash**: `Kind/Bug`, `Type/Feature`, `Category/X`
|
||||
2. **prefix_dash**: `Priority - High`, `Status - Blocked`
|
||||
3. **colon**: `type: bug`, `priority: high`
|
||||
|
||||
When creating missing labels, the bot follows the detected pattern to maintain consistency.
|
||||
|
||||
Reference in New Issue
Block a user