Skip to content

Commit 46c7a0d

Browse files
committed
Initial commit: SAAI Skill Feedback v1.0.0
- MCP skill for submitting feedback about any Claude skill - Auto-detects skill name from conversation context - Supports bug reports, enhancement requests, and new skill requests - Creates ServiceNow SBOs with full conversation context - Complete documentation and installation scripts
0 parents  commit 46c7a0d

File tree

12 files changed

+2777
-0
lines changed

12 files changed

+2777
-0
lines changed

.gitignore

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Node modules
2+
node_modules/
3+
package-lock.json
4+
5+
# Python
6+
__pycache__/
7+
*.py[cod]
8+
*$py.class
9+
*.so
10+
.Python
11+
venv/
12+
ENV/
13+
.venv
14+
15+
# Credentials
16+
.servicenow_surf_session.json
17+
*.json.bak
18+
19+
# Logs
20+
*.log
21+
npm-debug.log*
22+
23+
# OS
24+
.DS_Store
25+
Thumbs.db
26+
27+
# IDE
28+
.vscode/
29+
.idea/
30+
*.swp
31+
*.swo
32+
*~
33+
34+
# Test files
35+
.coverage
36+
htmlcov/
37+
.pytest_cache/

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 ServiceNow Security Analytics Team
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 335 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,335 @@
1+
# SAAI Skill Feedback
2+
3+
Submit feedback about Claude MCP skills directly from your conversations.
4+
5+
Report bugs, request enhancements, or propose new skills - all tracked in ServiceNow SBOs with full conversation context.
6+
7+
---
8+
9+
## Quick Start
10+
11+
### Install
12+
13+
```bash
14+
git clone https://github.com/yourusername/saai-skill-feedback.git
15+
cd saai-skill-feedback/mcp-server
16+
./install.sh
17+
```
18+
19+
### Use It
20+
21+
Just tell Claude:
22+
23+
```
24+
"Report a bug with create-sbo-request"
25+
"Request an enhancement to make dashboard lookups fuzzy"
26+
"Request a new skill for Jira ticket management"
27+
```
28+
29+
Claude will auto-detect which skill you're talking about and submit the feedback with full context.
30+
31+
---
32+
33+
## What This Does
34+
35+
Instead of manually filing bug reports or feature requests, just mention it in your Claude conversation:
36+
37+
- **Auto-detects** which skill from conversation history
38+
- **Captures context** automatically (tool calls, errors, parameters)
39+
- **Enriches feedback** with technical details
40+
- **Creates SBOs** in ServiceNow for tracking
41+
- **Assigns to maintainer** automatically
42+
43+
---
44+
45+
## Features
46+
47+
### Bug Reports
48+
49+
When something doesn't work, just say:
50+
```
51+
"Report a bug - the dashboard lookup failed"
52+
```
53+
54+
Claude will:
55+
- Find which tool was called
56+
- Extract the error message
57+
- Capture parameters used
58+
- Create SBO with all details
59+
60+
### Enhancement Requests
61+
62+
When you want improvements:
63+
```
64+
"Request enhancement - support partial dashboard names"
65+
```
66+
67+
Claude will:
68+
- Describe current behavior
69+
- Explain desired behavior
70+
- Capture use case
71+
- Submit enhancement request
72+
73+
### New Skill Requests
74+
75+
When you need something new:
76+
```
77+
"Request a skill for Jira ticket management"
78+
```
79+
80+
Claude will:
81+
- Capture the use case
82+
- Extract requirements
83+
- Create new skill request SBO
84+
85+
---
86+
87+
## Installation
88+
89+
See [docs/INSTALL.md](docs/INSTALL.md) for detailed setup instructions.
90+
91+
**Requirements**:
92+
- Node.js 18+
93+
- Python 3.8+
94+
- ServiceNow account (surf.service-now.com)
95+
96+
**Quick install**:
97+
```bash
98+
cd mcp-server
99+
./install.sh
100+
```
101+
102+
This will:
103+
1. Install Node.js and Python dependencies
104+
2. Authenticate with ServiceNow (browser-based)
105+
3. Show you the config to add to Claude
106+
107+
---
108+
109+
## Configuration
110+
111+
Add to your Claude config file:
112+
113+
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
114+
```json
115+
{
116+
"mcpServers": {
117+
"saai-skill-feedback": {
118+
"command": "node",
119+
"args": ["/absolute/path/to/saai-skill-feedback/mcp-server/index.js"]
120+
}
121+
}
122+
}
123+
```
124+
125+
**Claude Code** (`~/.config/claude/config.json`):
126+
```json
127+
{
128+
"mcpServers": {
129+
"saai-skill-feedback": {
130+
"command": "node",
131+
"args": ["/absolute/path/to/saai-skill-feedback/mcp-server/index.js"]
132+
}
133+
}
134+
}
135+
```
136+
137+
---
138+
139+
## How It Works
140+
141+
### Auto-Detection
142+
143+
When you say "report a bug", Claude:
144+
1. Scans recent conversation (last 10-15 messages)
145+
2. Finds the last MCP tool call
146+
3. Extracts the skill name
147+
4. Captures relevant context
148+
149+
### Context Capture
150+
151+
For bug reports, captures:
152+
- Tool name and parameters
153+
- Error messages
154+
- Expected vs actual behavior
155+
- User's description
156+
157+
For enhancements:
158+
- Current limitation
159+
- Desired improvement
160+
- Use case and benefits
161+
162+
For new skills:
163+
- Problem to solve
164+
- Expected functionality
165+
- Why existing skills don't work
166+
167+
### SBO Creation
168+
169+
Creates ServiceNow SBO with:
170+
- Title: "{emoji} {type}: {skill_name}"
171+
- Description: Full feedback with context
172+
- Work Activity: "Platform Dev - Security BOS App"
173+
- Assigned to: David Rider (skill maintainer)
174+
- State: Opened
175+
176+
---
177+
178+
## Examples
179+
180+
### Bug Report
181+
```
182+
User: "Create an SBO for fixing the security dashboard"
183+
[Tool error: Dashboard not found]
184+
User: "Report a bug - it should find partial matches"
185+
186+
Claude: [Auto-detects skill_name="create-sbo-request"]
187+
Claude: [Captures error and parameters]
188+
Claude: [Submits SBO with enriched context]
189+
Claude: "✓ Feedback submitted as SBO DSRT0123456"
190+
```
191+
192+
### Enhancement Request
193+
```
194+
User: "It would be great if the tool supported date ranges"
195+
Claude: "Would you like me to submit that as an enhancement?"
196+
User: "Yes"
197+
198+
Claude: [Detects skill from recent usage]
199+
Claude: [Captures current behavior vs desired]
200+
Claude: [Submits enhancement SBO]
201+
```
202+
203+
### New Skill Request
204+
```
205+
User: "I wish I could query Snowflake from Claude"
206+
Claude: "I don't have that capability. Want me to request a new skill?"
207+
User: "Please"
208+
209+
Claude: [No skill detection needed - it's a new skill]
210+
Claude: [Captures use case and requirements]
211+
Claude: [Submits new skill request SBO]
212+
```
213+
214+
---
215+
216+
## Documentation
217+
218+
- **[docs/CLAUDE.md](docs/CLAUDE.md)** - Detailed Claude instructions
219+
- **[docs/INSTALL.md](docs/INSTALL.md)** - Installation guide
220+
- **[docs/TEAM_MESSAGE.md](docs/TEAM_MESSAGE.md)** - How to roll out to your team
221+
222+
---
223+
224+
## Feedback Types
225+
226+
| Type | When to Use | Example |
227+
|------|------------|---------|
228+
| **bug** | Something is broken | Dashboard lookup fails, tool returns error |
229+
| **enhancement** | Improve existing feature | Add fuzzy matching, support date ranges |
230+
| **new_skill** | Need new functionality | Jira integration, Snowflake queries |
231+
232+
---
233+
234+
## ServiceNow Details
235+
236+
- **Instance**: https://surf.service-now.com
237+
- **Table**: `x_snc_security_d_0_dsrtable` (Security BOS)
238+
- **Assignee**: David Rider (skill maintainer)
239+
- **Work Activity**: Platform Dev - Security BOS App
240+
241+
All feedback is tracked as standard SBO requests in ServiceNow.
242+
243+
---
244+
245+
## Authentication
246+
247+
Uses the same browser-based authentication as other ServiceNow skills:
248+
249+
1. Run install script
250+
2. Browser opens for Okta login
251+
3. Complete MFA
252+
4. Credentials cached at `~/.servicenow_surf_session.json`
253+
5. Auto-refreshes when expired
254+
255+
See [docs/INSTALL.md](docs/INSTALL.md) for authentication details.
256+
257+
---
258+
259+
## Troubleshooting
260+
261+
**Tool not showing up?**
262+
- Restart Claude completely
263+
- Start a NEW conversation
264+
- Check config file path is absolute (not relative)
265+
266+
**Authentication errors?**
267+
- Re-run: `python3 src/utils/login_and_extract.py`
268+
- Complete browser login
269+
- Check credentials: `ls -la ~/.servicenow_surf_session.json`
270+
271+
**Can't detect skill?**
272+
- Mention skill explicitly: "report a bug with create-sbo-request"
273+
- Claude will ask if truly ambiguous
274+
275+
---
276+
277+
## For Developers
278+
279+
### Project Structure
280+
```
281+
saai-skill-feedback/
282+
├── mcp-server/
283+
│ ├── index.js # MCP server entry point
284+
│ ├── package.json # Node dependencies
285+
│ └── install.sh # Installer script
286+
├── src/
287+
│ ├── submit_feedback.py # Feedback submission logic
288+
│ └── utils/
289+
│ ├── session_manager.py # ServiceNow auth
290+
│ └── login_and_extract.py # Browser automation
291+
└── docs/
292+
├── CLAUDE.md # Instructions for Claude
293+
├── INSTALL.md # User installation guide
294+
└── TEAM_MESSAGE.md # Rollout templates
295+
```
296+
297+
### Tech Stack
298+
- **Node.js**: MCP server using @modelcontextprotocol/sdk
299+
- **Python**: ServiceNow API integration
300+
- **Selenium**: Browser automation for auth
301+
- **ServiceNow REST API**: SBO creation
302+
303+
### Adding Support for New Feedback Types
304+
305+
Edit `src/submit_feedback.py`:
306+
```python
307+
EMOJI_MAP = {
308+
'bug': '🐛',
309+
'enhancement': '',
310+
'new_skill': '💡',
311+
'your_new_type': '🎯', # Add here
312+
}
313+
```
314+
315+
---
316+
317+
## Contributing
318+
319+
Feedback about the feedback skill? Report it using the feedback skill! (meta)
320+
321+
Or submit issues/PRs on GitHub.
322+
323+
---
324+
325+
## License
326+
327+
MIT License - See LICENSE file
328+
329+
---
330+
331+
## Credits
332+
333+
Built by the Security Analytics team at ServiceNow.
334+
335+
Uses the Model Context Protocol (MCP) from Anthropic.

0 commit comments

Comments
 (0)