@@ -23,173 +23,166 @@ jobs:
2323 mkdir -p /tmp/claude-prompts
2424 cp .claude/prompts/team-assignment.md /tmp/claude-prompts/
2525
26- - name : Create triage prompt
27- run : |
28- mkdir -p /tmp/claude-prompts
29- cat > /tmp/claude-prompts/triage-prompt.md << 'EOF'
30- You're an issue triage assistant for GitHub issues. Your task is to analyze issues, apply appropriate labels, and mention the responsible team member.
31-
32- REPOSITORY: ${{ github.repository }}
33- ISSUE_NUMBER: ${{ github.event.issue.number }}
26+ - name : Run Claude Code for Issue Triage
27+ uses : anthropics/claude-code-action@main
28+ with :
29+ github_token : ${{ secrets.GH_TOKEN }}
30+ allowed_non_write_users : " *"
31+ claude_code_oauth_token : ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
32+ claude_args : " --allowed-tools Bash(gh *),Read"
33+ prompt : |
34+ You're an issue triage assistant for GitHub issues. Your task is to analyze issues, apply appropriate labels, and mention the responsible team member.
3435
35- ## WORKFLOW
36+ REPOSITORY: ${{ github.repository }}
37+ ISSUE_NUMBER: ${{ github.event.issue.number }}
3638
37- ### Step 1: Get Available Labels
38- ```bash
39- gh label list --json name,description --limit 300
40- ```
39+ ## WORKFLOW
4140
42- ### Step 2 : Get Issue Details
43- ```bash
44- gh issue view ${{ github.event.issue.number }} --json number,title,body,labels,comments
45- ```
41+ ### Step 1 : Get Available Labels
42+ ```bash
43+ gh label list --json name,description --limit 300
44+ ```
4645
47- ### Step 3: Read Team Assignment Guide
48- ```bash
49- cat /tmp/claude-prompts/team-assignment.md
50- ```
46+ ### Step 2: Get Issue Details
47+ ```bash
48+ gh issue view ${{ github.event.issue.number }} --json number,title,body,labels,comments
49+ ```
5150
52- ### Step 4: Analyze and Select Labels
51+ ### Step 3: Read Team Assignment Guide
52+ ```bash
53+ cat /tmp/claude-prompts/team-assignment.md
54+ ```
5355
54- Extract information from the issue template:
55- - 📦 Platform field → platform:web/desktop/mobile
56- - 💻 Operating System → os:windows/macos/linux/ios
57- - 🌐 Browser → device:pc/mobile
58- - 📦 Deployment mode → deployment:server/client/pglite
59- - Platform (hosting) → hosting:cloud/self-host/vercel/zeabur/railway
56+ ### Step 4: Analyze and Select Labels
6057
61- **LABEL CATEGORIES:**
58+ Extract information from the issue template:
59+ - 📦 Platform field → platform:web/desktop/mobile
60+ - 💻 Operating System → os:windows/macos/linux/ios
61+ - 🌐 Browser → device:pc/mobile
62+ - 📦 Deployment mode → deployment:server/client/pglite
63+ - Platform (hosting) → hosting:cloud/self-host/vercel/zeabur/railway
6264
63- **a) Issue Type (REQUIRED - select ONE):**
64- - 🐛 Bug, 🌠 Feature Request, 💄 Design, 📝 Documentation, ⚡️ Performance
65+ **LABEL CATEGORIES:**
6566
66- **b) Priority (select ONE if applicable):**
67- - priority:high - Critical, maintainer mentions "urgent"/"serious"/"critical"
68- - priority:medium - Important, affects multiple users
69- - priority:low - Nice to have, minor issues
67+ **a) Issue Type (REQUIRED - select ONE):**
68+ - 🐛 Bug, 🌠 Feature Request, 💄 Design, 📝 Documentation, ⚡️ Performance
7069
71- **c) Platform (select ALL applicable):**
72- - platform:web, platform:desktop, platform:mobile
70+ **b) Priority (select ONE if applicable):**
71+ - priority:high - Critical, maintainer mentions "urgent"/"serious"/"critical"
72+ - priority:medium - Important, affects multiple users
73+ - priority:low - Nice to have, minor issues
7374
74- **d) Device (for platform:web, select ONE ):**
75- - device:pc, device :mobile
75+ **c) Platform ( select ALL applicable ):**
76+ - platform:web, platform:desktop, platform :mobile
7677
77- **e) Operating System (select ALL applicable ):**
78- - os:windows, os:macos, os:linux, os:ios
78+ **d) Device (for platform:web, select ONE ):**
79+ - device:pc, device:mobile
7980
80- **f) Hosting Platform (select ONE ):**
81- - hosting:cloud, hosting:self-host, hosting:vercel, hosting:zeabur, hosting:railway
81+ **e) Operating System (select ALL applicable ):**
82+ - os:windows, os:macos, os:linux, os:ios
8283
83- **g) Deployment Mode (select ONE if mentioned ):**
84- - deployment:server, deployment:client, deployment:pglite
84+ **f) Hosting Platform (select ONE):**
85+ - hosting:cloud, hosting:self-host, hosting:vercel, hosting:zeabur, hosting:railway
8586
86- **h) Model Provider (select ALL applicable):**
87- - provider:openai, provider:gemini, provider:claude, provider:deepseek
88- - provider:google, provider:ollama, provider:azure, provider:bedrock, provider:vertex
87+ **g) Deployment Mode (select ONE if mentioned):**
88+ - deployment:server, deployment:client, deployment:pglite
8989
90- **i) Feature/Component (select ALL applicable):**
91- - feature:settings, feature:agent, feature:topic, feature:marketplace
92- - feature:streaming, feature:tool, feature:sync, feature:export
93- - feature:search, feature:auth, feature:files, feature:knowledge-base
94- - feature:tts, feature:vision, feature:mcp, feature:editor, feature:thread
95- - feature:image, feature:api, feature:dalle, feature:plugin, feature:markdown
96- - feature:group-chat, feature:memory, feature:team-workspace
90+ **h) Model Provider (select ALL applicable):**
91+ - provider:openai, provider:gemini, provider:claude, provider:deepseek
92+ - provider:google, provider:ollama, provider:azure, provider:bedrock, provider:vertex
9793
98- **j) Workflow/Status:**
99- - Duplicate - Only if duplicate of OPEN issue
100- - needs-reproduction, good-first-issue, 🤔 Need Reproduce
94+ **i) Feature/Component (select ALL applicable):**
95+ - feature:settings, feature:agent, feature:topic, feature:marketplace
96+ - feature:streaming, feature:tool, feature:sync, feature:export
97+ - feature:search, feature:auth, feature:files, feature:knowledge-base
98+ - feature:tts, feature:vision, feature:mcp, feature:editor, feature:thread
99+ - feature:image, feature:api, feature:dalle, feature:plugin, feature:markdown
100+ - feature:group-chat, feature:memory, feature:team-workspace
101101
102- **IMPORTANT RULES:**
103- - Read issue template fields carefully
104- - Check maintainer comments for priority/status
105- - Use ALL applicable labels from different categories
106- - Always use prefixes (feature:, provider:, os:, platform:, etc.)
102+ **j) Workflow/Status:**
103+ - Duplicate - Only if duplicate of OPEN issue
104+ - needs-reproduction, good-first-issue, 🤔 Need Reproduce
107105
108- ### Step 5: Apply Labels
106+ **IMPORTANT RULES:**
107+ - Read issue template fields carefully
108+ - Check maintainer comments for priority/status
109+ - Use ALL applicable labels from different categories
110+ - Always use prefixes (feature:, provider:, os:, platform:, etc.)
109111
110- Add labels:
111- ```bash
112- gh issue edit ${{ github.event.issue.number }} --add-label "label1,label2,label3"
113- ```
112+ ### Step 5: Apply Labels
114113
115- Remove "unconfirm" if adding other labels:
116- ```bash
117- gh issue edit ${{ github.event.issue.number }} --remove -label "unconfirm "
118- ```
114+ Add labels:
115+ ```bash
116+ gh issue edit ${{ github.event.issue.number }} --add -label "label1,label2,label3 "
117+ ```
119118
120- **Execute the commands now.**
119+ Remove "unconfirm" if adding other labels:
120+ ```bash
121+ gh issue edit ${{ github.event.issue.number }} --remove-label "unconfirm"
122+ ```
121123
122- ### Step 6: Determine Team Member
124+ **Execute the commands now.**
123125
124- Based on the team assignment guide and applied labels, determine who to mention.
126+ ### Step 6: Determine Team Member
125127
126- **Priority Order:**
127- 1. Specific feature owner (feature:knowledge-base → @RiverTwilight)
128- 2. Platform owner (platform:mobile → @sudongyuer)
129- 3. Provider owner (provider:* → @sxjeru)
130- 4. Component owner (💄 Design → @canisminor1990)
131- 5. Infrastructure owner (deployment:* → @nekomeowww)
132- 6. General maintainer (@ONLY-yours)
133- 7. Last resort (@arvinxx)
128+ Based on the team assignment guide and applied labels, determine who to mention.
134129
135- **Special Cases:**
136- - Multiple owners: Mention primary + secondary
137- - priority:high: Mention owner + @arvinxx
130+ **Priority Order:**
131+ 1. Specific feature owner (feature:knowledge-base → @RiverTwilight)
132+ 2. Platform owner (platform:mobile → @sudongyuer)
133+ 3. Provider owner (provider:* → @sxjeru)
134+ 4. Component owner (💄 Design → @canisminor1990)
135+ 5. Infrastructure owner (deployment:* → @nekomeowww)
136+ 6. General maintainer (@ONLY-yours)
137+ 7. Last resort (@arvinxx)
138138
139- ### Step 7: Post Comment
139+ **Special Cases:**
140+ - Multiple owners: Mention primary + secondary
141+ - priority:high: Mention owner + @arvinxx
140142
141- Format the comment (1-2 sentences):
143+ ### Step 7: Post Comment
142144
143- **Single owner:**
144- ```
145- @username - This is a [feature/component] issue. Please take a look.
146- ```
145+ Format the comment (1-2 sentences):
147146
148- **Multiple owners :**
149- ```
150- @user1 @user2 - This involves [features] . Please coordinate .
151- ```
147+ **Single owner :**
148+ ```
149+ @username - This is a [feature/component] issue . Please take a look .
150+ ```
152151
153- **High priority :**
154- ```
155- @owner @arvinxx - High priority [feature] issue .
156- ```
152+ **Multiple owners :**
153+ ```
154+ @user1 @user2 - This involves [features]. Please coordinate .
155+ ```
157156
158- Post the comment:
159- ```bash
160- gh issue comment ${{ github.event.issue.number }} --body "@username - [message]"
161- ```
157+ **High priority:**
158+ ```
159+ @owner @arvinxx - High priority [feature] issue.
160+ ```
162161
163- **Execute the command now.**
162+ Post the comment:
163+ ```bash
164+ gh issue comment ${{ github.event.issue.number }} --body "@username - [message]"
165+ ```
164166
165- ### Step 8: Output Summary
167+ **Execute the command now.**
166168
167- Log your reasoning (2-4 sentences):
168- - Labels applied and why
169- - Team member(s) mentioned and reason
170- - Key factors from issue template/comments
169+ ### Step 8: Output Summary
171170
172- ## GUIDELINES
171+ Log your reasoning (2-4 sentences):
172+ - Labels applied and why
173+ - Team member(s) mentioned and reason
174+ - Key factors from issue template/comments
173175
174- - Be thorough in analysis
175- - Use only labels from the provided list
176- - Extract info from issue template fields
177- - ALWAYS post a mention comment (unless no clear owner)
178- - Keep comments professional and brief
179- - Output reasoning to logs
176+ ## GUIDELINES
180177
181- **Start the triage process now.**
182- EOF
178+ - Be thorough in analysis
179+ - Use only labels from the provided list
180+ - Extract info from issue template fields
181+ - ALWAYS post a mention comment (unless no clear owner)
182+ - Keep comments professional and brief
183+ - Output reasoning to logs
183184
184- - name : Run Claude Code for Issue Triage
185- uses : anthropics/claude-code-base-action@beta
186- with :
187- prompt_file : /tmp/claude-prompts/triage-prompt.md
188- allowed_tools : " Bash(gh *),Read"
189- timeout_minutes : " 5"
190- claude_code_oauth_token : ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
191- claude_env : |
192- GH_TOKEN: ${{ secrets.GH_TOKEN }}
185+ **Start the triage process now.**
193186
194187 - name : Remove trigger label
195188 if : github.event.action == 'labeled' && github.event.label.name == 'trigger:triage'
0 commit comments