Confirm successful installation by checking the skill directory location:
.cursor/skills/devtu-fix-tool
Restart Cursor to activate devtu-fix-tool. Access via /devtu-fix-tool in your agent's command palette.
β
Security Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Diagnose and fix failing ToolUniverse tools through systematic error identification, targeted fixes, and validation.
First Principles for Bug Fixes
Before writing any fix, ask: why does the user reach this failure state?
Prevent, don't recover β fix the root cause so the failure can't happen, rather than adding hint text after it does
Validate at input, not at output β wrong parameters, unknown disease names, unsupported drugs should be caught and rejected early with clear guidance, not discovered after a silent API call
Don't mask silent mutations β if input is auto-normalized (fusion notation, Title Case), either accept both forms natively OR reject with explicit guidance; never silently transform and hide it
Distinguish "no data" from "bad query" β zero results because the filter is wrong is different from zero results because the data doesn't exist; the response must distinguish these clearly
Fix the abstraction, not the instance β if a parameter name is inconsistent, fix the interface; don't add an alias list that grows forever
Anti-patterns to avoid:
Adding hint text to zero-result messages instead of validating upfront
Adding parameter aliases instead of fixing naming consistency
Post-hoc probing to rescue a failed query instead of pre-validating
Bug Verification (CRITICAL)
Before implementing any bug report, verify it via CLI first:
python3 -m tooluniverse.cli run <ToolName>'<json_args>'
Many agent-reported bugs are false positives caused by MCP interface confusion. Always confirm the bug is reproducible before implementing a fix.
Instructions
When fixing a failing tool:
Run targeted test to identify error:
python scripts/test_new_tools.py <tool-pattern>-v
Verify API is correct - search online for official API documentation to confirm endpoints, parameters, and patterns are correct
Identify error type (see Error Types section)
Apply appropriate fix based on error pattern
Regenerate tools if you modified JSON configs or tool classes:
python -m tooluniverse.generate_tools
Check and update tool tests if they exist in tests/tools/:
ls tests/tools/test_<tool-name>_tool.py
Verify fix by re-running both integration and unit tests
Provide fix summary with problem, root cause, solution, and test results
src/tooluniverse/data/*_tools.json (use optional_api_keys not required_api_keys)
Error Types
1. JSON Parsing Errors
Symptom: Expecting value: line 1 column 1 (char 0)
Cause: Tool expects JSON but receives binary data (images, PDFs, files)
Fix: Check Content-Type header. For binary responses, return a description string instead of parsing JSON. Update return_schema to {"type": "string"}.
2. Schema Validation Errors
Symptom: Schema Mismatch: At root: ... is not of type 'object' or Data: None
Cause: Missing data field wrapper OR wrong schema type
Fix depends on the error:
If Data: None β Add data wrapper to ALL operation methods (see Multi-Operation Pattern below)
If type mismatch β Update return_schema in JSON config:
Data is string: {"type": "string"}
Data is array: {"type": "array", "items": {...}}
Data is object: {"type": "object", "properties": {...}}
Key concept: Schema validates the data field content, NOT the full response.
3. Nullable Field Errors
Symptom: Schema Mismatch: At N->fieldName: None is not of type 'integer'
Cause: API returns None/null for optional fields
Fix: Allow nullable types in JSON config using {"type": ["<base_type>", "null"]}. Use for optional fields, not required identifiers.
4. Mutually Exclusive Parameter Errors
Symptom: Parameter validation failed for 'param_name': None is not of type 'integer' when passing a different parameter
Cause: Tool accepts EITHER paramA OR paramB (mutually exclusive), but both are defined with fixed types. When only one is provided, validation fails because the other is None.
Example:
{"neuron_id":{"type":"integer"},// β Fails when neuron_name is used"neuron_name":{"type":"string"}// β Fails when neuron_id is used}
acronym OR name parameters (search by symbol or full name)
Optional filter parameters that may not be provided
Important: Also make truly optional parameters (like filter_field, filter_value) nullable even if not mutually exclusive.
5. Mixed Type Field Errors
Symptom: Schema Mismatch: At N->field: {object} is not of type 'string', 'null'
Cause: Field returns different structures depending on context
Fix: Use oneOf in JSON config for fields with multiple distinct schemas. Different from nullable ({"type": ["string", "null"]}) which is same base type + null.
6. Invalid Test Examples
Symptom: 404 ERROR - Not found or 400 Bad Request
Cause: Test example uses invalid/outdated IDs
Fix: Discover valid examples using the List β Get or Search β Details patterns below.
7. API Parameter Errors
Symptom: 400 Bad Request or parameter validation errors
Fix: Update parameter schema in JSON config with correct types, required fields, and enums.
8. API Key Configuration Errors
Symptom: Tool not loading when API key is optional, or api_key parameter causing confusion
Cause: Using required_api_keys for keys that should be optional, or exposing API key as tool parameter
Key differences:
required_api_keys: Tool is skipped if keys are missing
optional_api_keys: Tool loads and works without keys (with reduced performance)
Fix: Use optional_api_keys in JSON config for APIs that work anonymously but have better rate limits with keys. Read API key from environment only (os.environ.get()), never as a tool parameter.
9. API Endpoint Pattern Errors
Symptom: 404 for valid resources, or unexpected results
Fix: Verify official API docs - check if values belong in URL path vs query parameters.
10. Transient API Failures
Symptom: Tests fail intermittently with timeout/connection/5xx errors
Fix: Use pytest.skip() for transient errors in unit tests - don't fail on external API outages.
Common Fix Patterns
Schema Validation Pattern
Schema validates the data field content, not the full response. Match return_schema type to what's inside data (array, object, or string).
Multi-Operation Tool Pattern
Every internal method must return {"status": "...", "data": {...}}. Don't use alternative field names at top level.
Finding Valid Test Examples
When test examples fail with 400/404, discover valid IDs by:
List β Get: Call a list endpoint first, extract ID from results
Search β Details: Search for a known entity, use returned ID
Iterate Versions: Try different dataset versions if supported
βΊAccess to product documentation and roadmap tools (Jira, Notion, etc.)
βΊUnderstanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
βΊStakeholder contact information and communication channels
Time Estimate
30-60 minutes to see productivity improvements
Steps
1Install product management skill
2Start with user story generation for known feature
3Progress to competitive analysis: research 2-3 competitors
4Use for roadmap prioritization: apply RICE/ICE scoring
5Draft stakeholder communications and refine based on feedback
6Build template library for recurring PM tasks
7Share effective prompts with product team
Common Pitfalls
β Not validating competitive researchβverify facts before sharing
β Accepting user stories without involving engineering team
β Over-relying on frameworks without qualitative judgment
β Not customizing outputs to company culture and communication style
β Skipping stakeholder validation of generated requirements
Best Practices
β Do
+Validate research and competitive analysis with real data
+Collaborate with engineering when generating technical requirements
+Customize frameworks and templates to your company context
+Use skill for first drafts, refine with stakeholder input
+Document successful prompt patterns for PM tasks
+Combine AI efficiency with human judgment and intuition
β Don't
βDon't publish competitive analysis without fact-checking
βDon't finalize user stories without engineering review
βDon't make prioritization decisions solely on AI scoring
βDon't skip customer validation of generated requirements
βDon't ignore company-specific context and culture
π‘ Pro Tips
β Provide context: company goals, constraints, customer feedback
β Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
β Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
β Use skill for 70% generation + 30% customization to company needs
When to Use This
β Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
β Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
Learning Path
1Basic: user stories, feature specs, status updates