11# Label Management
22
3- This directory contains the canonical label configuration for the repository .
3+ This document describes the label system for plugin-dev .
44
55## Files
66
77- ** labels.yml** : Source of truth for all repository labels
8+ - ** LABELS.md** : This documentation file
89- ** workflows/sync-labels.yml** : Automated workflow that syncs label definitions on push to main
910- ** workflows/semantic-labeler.yml** : Claude-powered workflow that applies labels to issues and PRs
1011
1112## Label Categories
1213
1314### Type Labels
1415
15- Default GitHub labels for issue/PR classification:
16+ Standard GitHub labels for issue/PR classification:
1617
17- - ` bug ` , ` documentation ` , ` duplicate ` , ` enhancement ` , ` invalid ` , ` question ` , ` refactor ` , ` chore ` , ` wontfix `
18+ | Label | Color | Description |
19+ | --------------- | -------------------------------------------------------- | -------------------------------------- |
20+ | ` bug ` | ![ #d73a4a] ( https://placehold.co/15x15/d73a4a/d73a4a.png ) | Something isn't working |
21+ | ` documentation ` | ![ #0075ca] ( https://placehold.co/15x15/0075ca/0075ca.png ) | Improvements or additions |
22+ | ` duplicate ` | ![ #cfd3d7] ( https://placehold.co/15x15/cfd3d7/cfd3d7.png ) | Already exists |
23+ | ` enhancement ` | ![ #a2eeef] ( https://placehold.co/15x15/a2eeef/a2eeef.png ) | New feature or request |
24+ | ` invalid ` | ![ #e4e669] ( https://placehold.co/15x15/e4e669/e4e669.png ) | Doesn't seem right |
25+ | ` question ` | ![ #d876e3] ( https://placehold.co/15x15/d876e3/d876e3.png ) | Further information requested |
26+ | ` refactor ` | ![ #fef65b] ( https://placehold.co/15x15/fef65b/fef65b.png ) | Code restructuring without behavior change |
27+ | ` chore ` | ![ #c5def5] ( https://placehold.co/15x15/c5def5/c5def5.png ) | Maintenance tasks |
28+ | ` wontfix ` | ![ #ffffff] ( https://placehold.co/15x15/ffffff/ffffff.png ) | Will not be worked on |
1829
1930### Component Labels
2031
21- Identify which part of the codebase:
32+ Identify which part of the codebase (cool blue/purple tones) :
2233
23- - ` component:agent ` , ` component:command ` , ` component:docs ` , ` component:hook ` , ` component:skill `
34+ | Label | Color | Description |
35+ | ----------------------- | -------------------------------------------------------- | ------------------------ |
36+ | ` component:agent ` | ![ #0052cc] ( https://placehold.co/15x15/0052cc/0052cc.png ) | Agents layer |
37+ | ` component:command ` | ![ #5319e7] ( https://placehold.co/15x15/5319e7/5319e7.png ) | Commands layer |
38+ | ` component:docs ` | ![ #d4c5f9] ( https://placehold.co/15x15/d4c5f9/d4c5f9.png ) | Documentation files |
39+ | ` component:hook ` | ![ #006b75] ( https://placehold.co/15x15/006b75/006b75.png ) | Hooks layer |
40+ | ` component:skill ` | ![ #1d76db] ( https://placehold.co/15x15/1d76db/1d76db.png ) | Skills layer |
41+ | ` component:marketplace ` | ![ #0366d6] ( https://placehold.co/15x15/0366d6/0366d6.png ) | Marketplace manifest |
42+ | ` component:mcp ` | ![ #032f62] ( https://placehold.co/15x15/032f62/032f62.png ) | MCP integration |
43+
44+ ### Scope Labels
45+
46+ Labels for plugin development concerns (warm coral/pink family):
47+
48+ | Label | Color | Description |
49+ | ------------------ | -------------------------------------------------------- | -------------------------------- |
50+ | ` scope:triggering ` | ![ #e91e63] ( https://placehold.co/15x15/e91e63/e91e63.png ) | Trigger phrase/description issues |
51+ | ` scope:validation ` | ![ #f44336] ( https://placehold.co/15x15/f44336/f44336.png ) | Plugin validation concerns |
2452
2553### Priority Labels
2654
27- Urgency classification:
55+ Urgency classification (heat map: hot → cool) :
2856
29- - ` priority:critical ` , ` priority:high ` , ` priority:medium ` , ` priority:low `
57+ | Label | Color | Description |
58+ | ------------------- | -------------------------------------------------------- | ------------------------------- |
59+ | ` priority:critical ` | ![ #b60205] ( https://placehold.co/15x15/b60205/b60205.png ) | Blocking, security, or breaking |
60+ | ` priority:high ` | ![ #d93f0b] ( https://placehold.co/15x15/d93f0b/d93f0b.png ) | Important but not blocking |
61+ | ` priority:medium ` | ![ #fbca04] ( https://placehold.co/15x15/fbca04/fbca04.png ) | Should be addressed |
62+ | ` priority:low ` | ![ #0e8a16] ( https://placehold.co/15x15/0e8a16/0e8a16.png ) | Nice to have |
3063
3164### Status Labels
3265
33- Current state of work:
66+ Current work state :
3467
35- - ` status:blocked ` , ` status:in-progress ` , ` status:needs-repro ` , ` status:needs-review `
68+ | Label | Color | Description |
69+ | --------------------- | -------------------------------------------------------- | ------------------------ |
70+ | ` status:blocked ` | ![ #e99695] ( https://placehold.co/15x15/e99695/e99695.png ) | Blocked by dependencies |
71+ | ` status:in-progress ` | ![ #90caf9] ( https://placehold.co/15x15/90caf9/90caf9.png ) | Work in progress |
72+ | ` status:needs-repro ` | ![ #f9c4f4] ( https://placehold.co/15x15/f9c4f4/f9c4f4.png ) | Needs reproduction steps |
73+ | ` status:needs-review ` | ![ #fff3b3] ( https://placehold.co/15x15/fff3b3/fff3b3.png ) | Ready for review |
74+ | ` status:needs-design ` | ![ #c5cae9] ( https://placehold.co/15x15/c5cae9/c5cae9.png ) | Needs design decision |
75+ | ` status:analyzed ` | ![ #a5d6a7] ( https://placehold.co/15x15/a5d6a7/a5d6a7.png ) | Analyzed by Claude |
76+ | ` needs-analysis ` | ![ #b39ddb] ( https://placehold.co/15x15/b39ddb/b39ddb.png ) | Request Claude analysis |
3677
3778### Effort Labels
3879
3980Time estimates:
4081
41- - ` effort:small ` (< 1 hour), ` effort:medium ` (1-4 hours), ` effort:large ` (> 4 hours)
82+ | Label | Color | Description |
83+ | --------------- | -------------------------------------------------------- | ----------- |
84+ | ` effort:small ` | ![ #c2e0c6] ( https://placehold.co/15x15/c2e0c6/c2e0c6.png ) | < 1 hour |
85+ | ` effort:medium ` | ![ #bfdadc] ( https://placehold.co/15x15/bfdadc/bfdadc.png ) | 1-4 hours |
86+ | ` effort:large ` | ![ #f9d0c4] ( https://placehold.co/15x15/f9d0c4/f9d0c4.png ) | > 4 hours |
87+
88+ ### Community Labels
89+
90+ | Label | Color | Description |
91+ | ------------------ | -------------------------------------------------------- | -------------------- |
92+ | ` good first issue ` | ![ #7057ff] ( https://placehold.co/15x15/7057ff/7057ff.png ) | Good for newcomers |
93+ | ` help wanted ` | ![ #008672 ] ( https://placehold.co/15x15/008672/008672.png ) | Extra attention needed |
94+ | ` idea ` | ![ #f9a825] ( https://placehold.co/15x15/f9a825/f9a825.png ) | Feature idea or suggestion |
95+ | ` showcase ` | ![ #6f42c1] ( https://placehold.co/15x15/6f42c1/6f42c1.png ) | Community showcase |
96+
97+ ### Dependency Labels
98+
99+ | Label | Color | Description |
100+ | ---------------- | -------------------------------------------------------- | ---------------------- |
101+ | ` dependencies ` | ![ #0366d6] ( https://placehold.co/15x15/0366d6/0366d6.png ) | Dependency updates |
102+ | ` github-actions ` | ![ #000000 ] ( https://placehold.co/15x15/000000/000000.png ) | GitHub Actions updates |
103+
104+ ### Category Labels
105+
106+ Type of change:
42107
43- ### Community, Dependency, and Special Labels
108+ | Label | Color | Description |
109+ | -------------- | -------------------------------------------------------- | -------------------------------- |
110+ | ` breaking ` | ![ #bd2130] ( https://placehold.co/15x15/bd2130/bd2130.png ) | Breaking change (major version) |
111+ | ` automation ` | ![ #28a745] ( https://placehold.co/15x15/28a745/28a745.png ) | CI/CD and workflow improvements |
112+ | ` optimization ` | ![ #2188ff] ( https://placehold.co/15x15/2188ff/2188ff.png ) | Performance improvements |
44113
45- ** Community ** :
114+ ### Workflow Labels
46115
47- - ` good first issue ` - Good for newcomers
48- - ` help wanted ` - Extra attention needed
116+ | Label | Color | Description |
117+ | ---------- | -------------------------------------------------------- | ---------------------- |
118+ | ` triage ` | ![ #ededed] ( https://placehold.co/15x15/ededed/ededed.png ) | Needs initial review |
119+ | ` stale ` | ![ #ededed] ( https://placehold.co/15x15/ededed/ededed.png ) | No recent activity |
120+ | ` pinned ` | ![ #fef2c0] ( https://placehold.co/15x15/fef2c0/fef2c0.png ) | Never mark as stale |
121+ | ` roadmap ` | ![ #0e8a16] ( https://placehold.co/15x15/0e8a16/0e8a16.png ) | Long-term roadmap item |
49122
50- ** Dependency ** (Dependabot):
123+ ### Special Labels
51124
52- - ` dependencies ` - Dependency file updates
53- - ` github-actions ` - GitHub Actions updates
125+ | Label | Color | Description |
126+ | ------------ | -------------------------------------------------------- | --------------------------- |
127+ | ` experiment ` | ![ #ff6ec7] ( https://placehold.co/15x15/ff6ec7/ff6ec7.png ) | Experimental/testing |
128+ | ` security ` | ![ #ee0701] ( https://placehold.co/15x15/ee0701/ee0701.png ) | Security-related |
129+ | ` reverted ` | ![ #666666 ] ( https://placehold.co/15x15/666666/666666.png ) | Merged but later reverted |
54130
55- ** Special ** :
131+ ## Label Application Guidelines
56132
57- - ` experiment ` - Testing/experimental changes
58- - ` pinned ` - Never mark as stale
59- - ` reverted ` - Merged but later reverted from codebase
60- - ` security ` - Security-related issues
61- - ` stale ` - No recent activity (auto-applied by stale workflow)
133+ ### Required Labels
62134
63- ** Category ** (type of change) :
135+ Every issue and PR should have :
64136
65- - ` breaking ` - Breaking change requiring major version bump
66- - ` automation ` - CI/CD and workflow automation improvements
67- - ` optimization ` - Performance and efficiency improvements
137+ 1 . ** One type label ** : bug, enhancement, documentation, refactor, chore, etc.
138+ 2 . ** One priority label ** : priority : critical , priority : high , priority : medium , priority : low
139+ 3 . ** One effort label ** : effort : small , effort : medium , effort : large
68140
69- ### Discussion Labels
141+ ### Contextual Labels
70142
71- Labels for GitHub Discussions categories :
143+ Apply when relevant :
72144
73- - ` idea ` - Feature idea or suggestion
74- - ` showcase ` - Community showcase
145+ - ** Component labels** : When the change affects specific plugin components
146+ - ** Scope labels** : When the change affects triggering or validation
147+ - ** Status labels** : To track work progress
148+ - ** Category labels** : For breaking changes, automation, or optimization work
149+ - ** Community labels** : For contributor-friendly issues
150+
151+ ### Label Combinations
152+
153+ Common label combinations for plugin-dev:
154+
155+ | Scenario | Labels |
156+ | --------------------------- | ----------------------------------------------------- |
157+ | Skill not triggering | ` bug ` , ` component:skill ` , ` scope:triggering ` |
158+ | New agent feature | ` enhancement ` , ` component:agent ` , ` priority:* ` |
159+ | Marketplace manifest issue | ` bug ` , ` component:marketplace ` , ` priority:* ` |
160+ | Validation script fix | ` bug ` , ` component:docs ` , ` automation ` |
161+ | MCP integration enhancement | ` enhancement ` , ` component:mcp ` , ` effort:* ` |
162+ | Hook development docs | ` documentation ` , ` component:hook ` , ` effort:small ` |
163+ | Command triggering bug | ` bug ` , ` component:command ` , ` scope:triggering ` |
164+ | Plugin architecture design | ` enhancement ` , ` status:needs-design ` , ` roadmap ` |
165+ | Dependabot PR | ` chore ` , ` dependencies ` , ` effort:small ` |
75166
76167## Automatic Label Application
77168
@@ -87,25 +178,15 @@ The `semantic-labeler.yml` workflow:
87178
88179### Labels Applied Automatically
89180
90- | Category | Labels | Required |
91- | --------- | ---------------------------------------------------------- | ------------- |
92- | Type | bug, enhancement, documentation, question, refactor, chore | Yes (one) |
93- | Component | component:\* , github-actions, dependencies | If applicable |
94- | Priority | priority: critical /high/medium/low | Yes (one) |
95- | Effort | effort: small /medium/large | Yes (one) |
96- | Impact | breaking, security | If applicable |
97- | Community | good first issue, help wanted | If applicable |
98-
99- ### Differences from Previous Labeler
100-
101- The semantic labeler replaces the old ` actions/labeler ` which only applied labels based on file paths:
102-
103- | Aspect | Old (path-based) | New (semantic) |
104- | --------------------- | ---------------- | ----------------- |
105- | Issues | Not supported | Full support |
106- | Content understanding | File paths only | Semantic analysis |
107- | Priority/effort | Manual only | Automatic |
108- | Speed | ~ 5 seconds | ~ 30-60 seconds |
181+ | Category | Labels | Required |
182+ | --------- | ----------------------------------------------------------- | ------------- |
183+ | Type | bug, enhancement, documentation, question, refactor, chore | Yes (one) |
184+ | Component | component:\* , github-actions, dependencies | If applicable |
185+ | Scope | scope: triggering , scope: validation | If applicable |
186+ | Priority | priority: critical /high/medium/low | Yes (one) |
187+ | Effort | effort: small /medium/large | Yes (one) |
188+ | Impact | breaking, security | If applicable |
189+ | Community | good first issue, help wanted | If applicable |
109190
110191### Skipped Cases
111192
@@ -127,74 +208,53 @@ The workflow skips:
127208 description : " Description here"
128209 ` ` `
129210
130- 2. **Create a PR ** - the workflow runs in dry-run mode to preview the new label
211+ 2. **Update LABELS.md ** with the new label documentation
131212
132- 3. **Merge to main ** - the label is created automatically
213+ 3. **Create a PR ** - the workflow runs in dry-run mode to preview
133214
134- Or apply manually:
135-
136- ` ` ` bash
137- gh label create "new-label" --color "ff6ec7" --description "Description here"
138- ```
215+ 4. **Merge to main** - the label is created automatically
139216
140217### Updating a Label
141218
142- 1 . ** Update labels.yml** (source of truth):
143-
144- ``` yaml
145- - name : " label-name"
146- color : " new-color"
147- description : " new description"
148- ` ` `
149-
150- 2. **Create a PR** - the workflow runs in dry-run mode to preview changes
151-
152- 3. **Merge to main** - the label is updated automatically
153-
154- Or apply manually:
155-
156- ` ` ` bash
157- gh label edit "label-name" --color "new-color" --description "new description"
158- ```
219+ 1. **Update labels.yml** with new color/description
220+ 2. **Update LABELS.md** documentation
221+ 3. **Create a PR** - preview changes in dry-run mode
222+ 4. **Merge to main** - changes applied automatically
159223
160224### Deleting a Label
161225
162226Deleting labels requires manual action - the automated workflow only creates and updates labels (never deletes) for safety.
163227
164- 1 . ** Remove from labels.yml** (source of truth)
165-
166- 2 . ** Delete from GitHub manually** :
228+ 1. **Remove from labels.yml**
229+ 2. **Remove from LABELS.md**
230+ 3 . **Delete from GitHub manually**:
167231
168232 ` ` ` bash
169233 gh label delete "label-name" --yes
170234 ```
171235
172- 3 . ** Commit** labels.yml changes
173-
174- ### Syncing All Labels
236+ ## Color Scheme Rationale
175237
176- Labels are ** automatically synced** when changes to ` labels.yml ` are pushed to main.
238+ | Category | Color Family | Rationale |
239+ | ---------- | ---------------------- | -------------------------------------------- |
240+ | Type | GitHub defaults | Familiar to all GitHub users |
241+ | Component | Cool blues/purples | Technical, structural feel |
242+ | Scope | Warm coral/pink | Distinct from components, user-facing issues |
243+ | Priority | Heat map (red → green) | Intuitive urgency indication |
244+ | Status | Soft pastels | Non-distracting state indicators |
245+ | Effort | Green → red gradient | Easy (green) to hard (red) |
246+ | Category | Semantic colors | Breaking=red, automation=green |
247+ | Workflow | Neutral greys | Background process labels |
177248
178- - ** PR preview** : When you open a PR that modifies ` labels.yml ` , the workflow runs in dry-run mode to show what changes would be applied.
179- - ** Automatic sync** : When the PR is merged to main, changes are applied automatically.
180- - ** Manual sync** : Use the GitHub CLI (see examples below) or trigger the workflow manually via GitHub Actions > Sync Labels > Run workflow.
249+ ## Label Naming Conventions
181250
182- ## Label Naming Convention
183-
184- - ** Custom labels** : Use hyphens (` - ` ) not underscores (` _ ` ) for multi-word labels
185- - ** Default GitHub labels** : Keep spaces as-is (` good first issue ` , ` help wanted ` ) for ecosystem compatibility
186- - Use lowercase
187- - Use colons (` : ` ) for category prefixes (` component: ` , ` priority: ` , ` status: ` , ` effort: ` )
188- - Keep names concise and descriptive
189-
190- ## Best Practices
191-
192- 1 . ** labels.yml is the source of truth** - always update it when changing labels
193- 2 . ** Use consistent colors** within categories (e.g., component labels use cool colors: blues, purples, and teals)
194- 3 . ** Keep descriptions clear** - they appear in the label picker
195- 4 . ** Don't create too many labels** - keep the set manageable (currently ~ 40)
196- 5 . ** Archive unused labels** rather than delete (consider dependencies)
251+ - ** Prefixed labels** : Use colons for categories (` component: ` , ` scope: ` , ` priority: ` , ` status: ` , ` effort: ` )
252+ - ** Standard labels** : Keep GitHub defaults as-is (` bug ` , ` help wanted ` , ` good first issue ` )
253+ - ** Multi-word labels** : Use hyphens for custom labels, keep spaces for GitHub ecosystem compatibility
254+ - ** Case** : All lowercase
197255
198256## Label Count
199257
200- The repository maintains a balanced set of labels - enough for good organization without overwhelming contributors. Check ` labels.yml ` for the current complete list.
258+ Current total: ** ~ 49 labels**
259+
260+ Balanced for good organization without overwhelming contributors. Check ` labels.yml ` for the complete list.
0 commit comments