Ticket Resolution & Organisational Lifecycle Liaison
Making Jira tickets clear, concise, and actionable with AI
TROLL was created during the first Fuzzy Labs AI hackathon and implemented with Claude Code. Created by @Christopher-Norman and @alanbijuthomas.
TROLL transforms vague, incomplete Jira tickets into clear, actionable task descriptions. It combines context from your GitHub repository with Google's Gemini to generate comprehensive ticket enhancements.
Problem: Jira tickets are often vague ("Fix the thing", "Make it faster", "Button broken") leading to confusion and development bottlenecks.
Solution: TROLL automatically enhances tickets with proper context, acceptance criteria, technical details, and actionable requirements.
- 🎯 Interactive Mode: Browse and select tickets from a beautiful interface
- 🔍 Smart Context Gathering: Analyses GitHub repos for relevant commits, issues, and code structure
- 🤖 AI-Powered Enhancement: Uses Gemini to intelligently rewrite ticket descriptions
- 📋 Complete Updates: Updates both ticket title AND description with proper formatting
- ⚡ Preview Mode: Shows improvements before applying changes
- 🔧 Easy Setup: Interactive configuration with secure environment variable storage
-
Install
pip install -e .
-
Setup
troll --setup
You'll need:
- Jira API Token
- GitHub Token (repo scope)
- Gemini API Key
-
Use
# Interactive mode - browse and select tickets troll # Or improve a specific ticket directly troll TP-123 # View help anytime troll --help
Title: Create self-contained downloadable example notebooks
Description: This ticket needs more details.
Title: Develop Downloadable Example Jupyter Notebooks
Description:
## Problem & Context
The existing `librosa` documentation could benefit from more interactive and fully self-contained examples. Users, especially new ones, often learn best by exploring runnable code. This ticket aims to create a set of downloadable Jupyter notebooks that showcase `librosa`'s core functionalities, allowing users to easily load, execute, and experiment with the library's features without complex setup or relying solely on static code snippets. This will enhance user onboarding, provide clearer demonstrations of specific features (e.g., advanced `specshow` usage from #1819 or audio manipulation like discussed in #1956), and improve the overall user experience.
## Acceptance Criteria
- [ ] At least 3-5 high-quality Jupyter notebooks are created, demonstrating key `librosa` features (e.g., audio loading, feature extraction, visualization, time-stretch/pitch-shift).
- [ ] Each notebook is self-contained: includes necessary audio data or clear instructions/links for acquiring it, and runs successfully with a standard `librosa` installation.
- [ ] Notebooks are well-commented, clear, and easy for users to follow and understand.
- [ ] All notebooks execute successfully from start to finish without errors in the targeted `librosa` environment.
- [ ] A clear, accessible mechanism for users to download the notebooks is established (e.g., a dedicated `examples/notebooks` directory within the repository or links from the `librosa.org` documentation).
- [ ] The `librosa` documentation is updated to link to and provide context for these new example notebooks.
## Implementation Notes
- Consider creating a new top-level directory, e.g., `examples/notebooks/`, within the `librosa/librosa` repository.
- Explore integrating these notebooks with the documentation build process (e.g., using `sphinx-gallery` or `nbsphinx`) for automated testing and rendering.
- Ensure compatibility with common Python environments (e.g., Anaconda, `pip` virtual environments).
- Could demonstrate features related to existing discussions, such as proper axis labeling with physical units in `specshow` (related to #1819) or techniques for combining audio signals (related to #1956).
## Open Questions
- What is the initial target number of notebooks, and which specific `librosa` modules/features should be prioritized for demonstration?
- What is the preferred method for users to download and run these notebooks (e.g., static `.ipynb` files, Binder links, integration with `librosa.org`)?
- How will these notebooks be versioned and kept synchronized with `librosa` releases to prevent breakage?
When you run troll
without arguments, you get a beautiful interface where you can:
- 📋 Browse Recent Tickets: See tickets in a clean table format
- 🔍 Search with JQL: Use Jira Query Language for advanced searches
- 🎯 Select by Number: Choose tickets from the numbered list
- 🔤 Direct ID Entry: Type ticket IDs directly (e.g.,
TP-123
) - 🔄 Refresh List: Reload with latest updates
- Connects to Jira → Lists available tickets or fetches specific ticket details
- Analyses GitHub → Gathers context from commits, issues, and codebase structure
- AI Enhancement → Gemini generates improved title and description with proper structure
- Preview Changes → Shows before/after comparison
- Updates Ticket → Applies improvements to Jira with enhanced formatting
Settings stored securely in .env
file (see example.env
for template):
JIRA_URL="https://yourcompany.atlassian.net"
JIRA_EMAIL="user@example.com"
JIRA_API_TOKEN="YOUR_JIRA_API_TOKEN"
JIRA_PROJECT="JP"
GITHUB_TOKEN="YOUR_GITHUB_TOKEN"
GITHUB_REPO="owner/repo"
LLM_PROVIDER="gemini"
GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
Edit TEMPLATE.md
to customise the ticket structure and enhancement format. TROLL uses this template as a guide when generating enhanced tickets.
"API token invalid" → Run troll --setup
to reconfigure
"Repository not found" → Verify GitHub token has repo
scope
"No tickets found" → Check Jira permissions and project access
"Gemini API error" → Confirm API key is valid with quota remaining
Happy TROLLing! 🧌✨
Built with ❤️ for developer productivity. Transform your vague tickets into actionable work with the power of AI!