|
| 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