Building a Redmine Plugin in 1 Day Using Claude CLI
Step-by-step guide to building a Jira → Redmine migration plugin with Claude CLI. See what worked, what didn’t, and how AI speeds up dev work.

Sivamanikandan K
Solution Architect

When I first heard about Claude CLI, I thought: "Another AI tool? Will it really save me time or just eat up my tokens (and my patience)?"
Spoiler alert: it saved me days of work but also gave me a few “Why Claude, why?!” moments.
In this blog, I’ll walk you through:
- How to set up Claude CLI
- The golden rules for prompting Claude
- How I built a Jira → Redmine migration plugin in just one day
- Where Claude shines and where it makes you pull your hair out
- Some fun lessons from the trenches
Setting up Claude CLI
Getting Claude up and running for Redmine plugin development is straightforward:
- Install Claude CLI globally npm install -g claude
- Run Claude claude The first thing it does is ask you to log in. Note: Only paid plans are allowed.
- Authenticate & grant folder access Claude will then ask if it can access your folder. Yes, it can read, write, and modify your codebase.
Prompting Rules (How Not to Waste Tokens)
Claude works best when you’re clear and concise. Here’s what I learned:
- Break big tasks into smaller prompts.
- Summarize previous work.
- Review and commit after each output.
Don’t treat Claude like a genie; treat it like a smart intern who sometimes gets too creative.
Real-Life Example: Jira → Redmine Migration Plugin
Here’s what I built using Claude CLI:
- File upload (CSV, XLS, XLSX)
- Auto-map headers with Redmine schema
- Configurable batch processing
- Failure tracking with downloadable CSV
- Project and assignee selection
- Cronjob or background processing (Sidekiq, Active Jobs, etc.)
Normally this would take 2–3 weeks. Claude helped me do it in just one day!
Steps for Building a Redmine Plugin with Claude AI (Step by Step & Laugh by Laugh)
Step 1: File Uploads and Validation
I started with file upload support. Claude instantly generated the Rails controller and model setup. If something broke, I simply asked Claude to revert the file upload and it did! Like a polite dev undoing a bad commit
Step 2: File Parsing and Summary
Next, I asked Claude to parse uploaded files and show a summary. It used the roo gem to support multiple formats and built a neat summary table.
Step 3: Smart Column Mapping
Claude created an intuitive UI to map uploaded columns with Redmine’s schema. It even allowed users to manually adjust mappings when needed.
Step 4: Cron + Background Jobs (Multi-System Support)
I needed async processing. Claude built a pluggable system supporting cron, Sidekiq, or Active Jobs, modular and flexible. It even created sample cron configurations.
Step 5: Handling Failures Like a Pro
I asked Claude to handle failed records. It added logic to capture errors and export failed records as downloadable CSVs. Debugging has never been easier!
Step 6: Rollback Migration (The Safety Net )
Then I told Claude, “Hey, give me a way to rollback if the imported data causes chaos.” Claude cheerfully replied (well, in code ) and added an option to rollback processed files, undoing inserted or updated data safely.
This rollback can:
- Revert the last import batch
- Or undo the entire uploaded file’s migration It even logs what was rolled back; just in case you change your mind again.
Step 7: Modern UI Magic
Finally, I asked Claude for a modern UI. It built a responsive, professional-looking interface better than what I had imagined. Claude the Designer, ladies and gentlemen!
The Not-So-Great Moments (Disadvantages)
Claude isn’t perfect:
- Sometimes misunderstands requirements
- Occasionally reverts working code
- Usage limits are confusing (5-hour or weekly lockouts)
- Makes you lazy
But hey, Claude also helps your health! It forces you to take breaks with its usage limits. Think of it as your personal “AI wellness coach” reminding you to stretch.
Claude’s Superpowers
- Can write and refactor entire folders
- Supports multiple job systems (Sidekiq, Active Jobs, Cron)
- Creates downloadable CSVs for failed data
- Builds modern UIs effortlessly
- Speeds up development drastically
Conclusion
Claude CLI is like that brilliant-but-moody colleague; fast, creative, but sometimes unpredictable. I was able to develop a complete Redmine plugin in one day: uploads, mappings, background jobs, failure handling, and a sleek UI.
If you plan to use Claude for building Claude code plugins:
- Break tasks into chunks
- Review and commit often
- Keep backups
- Enjoy the AI-mandated breaks
At the end of the day, Claude didn’t just help me code faster - it made the process fun, efficient, and surprisingly healthy (thanks to forced timeouts).
Hope this blog helped you pick up something useful today. If you ever need expert assistance in software development, upgrades or staff augmentation, reach out to our team at RailsFactory. We can help you build faster and scale smarter!



