
I Built My First Raycast Extension. Here's How I Did It!
I was inspired by @chrismessina to build my own Raycast extensions after he released his own! I have been using Raycast a lot more thanks to a gentle nudge from @jakecrump (and @Raycast's latest AI releases), so I knew I wanted to build my own Raycast extension at some point.
There was a lot of news about Cyberpunk for Mac released and I wanted to search if there was a deal for it on PC. I instinctively went to search Raycast….but it wasn’t there. So my extension idea was born!
My goal was simple: make it easier to hunt for video game deals right from the Raycast command bar. What followed was a rapid journey of prototyping, debugging, and learning. I’m excited to share what I learned and hope it will encourage more makers to ship their ideas.
You can view my IsThereAnyDeal (ITAD) Extension on GitHub here! I will launch it when it's approved on the Raycast store :) I'll publish a more in-depth, nerdy guide later. But for now...here's my experience building a Raycast Extension!
Tech Stack:
@Dia Browser: To digest and explore the Raycast & ITAD Documentation quickly while also feeding all the info into Cursor.
@Cursor & @Warp: I leaned on AI tools to write and check the code and ensure it complied with Raycast’s requirements. Cursor was helpful, but Warp really shined in debugging and even improved my code automatically.
@GitHub: Essential for versioning and collaboration and publishing the Raycast extension
The Process: Building with Focus and Simplicity
Start with the Core Action. From my experience in vibe coding I knew that I had to start simple and focused first. Since I knew “Is There Any Deal” (ITAD) had an API I decided to hone in on one simple concept, provide search results and pricing from ITAD using its API.
TIP: Keeping your first extension as simple as possible. Get the main action working before layering on user interactions or advanced features.
Iterate, Test, Repeat - It took me about a day but once the MVP was running, I focused on user experience. Frequent testing helped catch bugs early. Warp became my go-to terminal for troubleshooting and speeding up the feedback loop.
Version Control Is Your Friend - Always back up locally and on GitHub. Cursor broke my repo, but thankfully I had saved the latest version of my files locally, allowing me to recover without missing a beat. This habit saved my project and a few broken screens.
Learn Warp - Over the past month or so I’ve become using CLI’s like Gemini CLI and Warp a lot more. They’re quite powerful and can sometimes take more actions than a traditional IDE…or their approach on taking those actions is different at least.
For my Raycast Extension, I tried publishing it to Raycast 3x with Cursor and constantly failed. On my first attempt with Warp, not only did it publish it but it dramatically improved the code as well.
Personal Experience - I was pleasantly surprised after a day of hacking alongside Cursor, I had a rough MVP. It took me about a week to polish and submit it to the Raycast store. If I didn’t have to work, or parent, or be a normal human I feel like I could have gotten it up in 3 days.
I can’t say this enough but Warp really surprised me by making improvements I hadn’t thought of, making little things I wish I could change, into reality.
Getting Raycast extension approval is not as easy as I thought. Luckily, their team make really helpful comments and suggestions. So as long as you're paying attention to the pull request, you should hopefully make some progress towards getting it in the store.
Should You Build Your Own Raycast Extension?
Absolutely. Whether you’re a maker that’s just starting out, looking to streamline your workflow or just want to scratch a personal itch, Raycast’s ecosystem is a great place to start vibe coding and building. Remember to start small, iterate quickly, and don’t be afraid to take a step back and read some documentation if your AI tools get stuck. You can always ask Dia for help. The satisfaction of seeing your tool live, and in a handy application like Raycast, is well worth the effort.
Encouragement for Builders:
Don’t overthink your first extension. Focus, build, test, and ship
Replies
Product Hunt
Cool breakdown! “For my Raycast Extension, I tried publishing it to Raycast 3x with Cursor and constantly failed. On my first attempt with Warp, not only did it publish it but it dramatically improved the code as well.”
What do you attribute that to? Which underlying models did you use for Warp vs Cursor?
Product Hunt
@rajiv_ayyangar great question! for Cursor I mostly stick with "auto" which tends to be Claude 4 sonnet. For Warp the model is also auto (Claude 4 Sonnet) but the planning phase is o3.
My theory is that a lot of documentation referenced git commands and using a CLI, that it was easier for Warp to execute vs Cursor, even though it has it's own terminal. It felt like Warp was it's own agent programming inside the CLI where as Cursor sometimes needed me to hand hold it or expected me to do actions without always telling me what action.
@rajiv_ayyangar @gabe @warp's new ADE is incredible. I didn't get it at first, but it's come a long way.
One of the reasons it's superior to Cursor (from my understanding) is that it indexes your local codebase and so, like Windsurf, does a better job of agentically executing tasks because it works holistically, rather than on smaller contexts.
Product Hunt
@rajiv_ayyangar @warp @chrismessina that makes total sense and I can see that. It does feel like it has a better understanding of my codebase
Congratulations on writing your first extensions! I also use @Raycast to check prices for items like video games, but with Prisjakt, or PriceSpy, if anyone's from the UK. I use a quicklink to open their search page as opposed to an extension.
I should take your initiative and investigate if I can make an extension out of it, since I'm a daily user of @Warp as well, maybe it can also help me build my first extension. 🙂
Product Hunt
@thinkverse yes, definitely do it! Feel free to add on to my extension!
@gabe I'll take another look at your extension when I get a chance and see if I can contribute.
Warp
Hey @gabe -- love this writeup, and huge congrats on shipping your first Raycast extension!!
Really appreciate the shoutout for Warp. We’re super excited to hear it helped with debugging and even improved the code during your publish attempts!
Would love to learn more about where Warp worked well for you, and just as importantly, where it didn’t. Anything we could improve or make more intuitive? always grateful for any feedback 🙏
Product Hunt
@hongyichen Warp has been upgrading really well. I appreciate how much accessible and easier it has made CLI development.
Right now I'm struggling balancing fully automating the agent and putting in the correct checks in place. I feel like it's either all or nothing sometimes.
I also BURNT through my credits, so understanding how I could be more efficient or some sort of dashboard to better analyze my performance would be cool. It'd be really nice to have like a teaching attachment or something so I can learn while the agent does it's thing and help troubleshoot/provide guidence.
I feel like being able to bake in commands or / for common visited directories, actions, etc would be really helpful! (Maybe it's there and I don't know).
LOVE that you responded, means a lot. I'm sure there's more that I'm not saying now but overall, job well done team. If there's any other way I can provide more valuable feedback, let me know!
Warp
@gabe appreciate all of the feedback! passing this along to the team.
a couple of things:
1. We're working on request efficiency efforts so that each request goes further (without loss of agent quality). We're also working on a better dashboard in settings to be more transparent about exactly how many tokens in/out/cached, etc. Feedback is heard and we're working on it, coming soon!
2. Re: fully automating agent vs. putting correct checks in place, you can actually specify exactly where the Agent has autonomy inside Settings > AI > Permissions, lmk if that helps. Some more docs here: https://docs.warp.dev/agents/agent-permissions
3. For commands / prompts that you commonly use, you can actually store them in Warp Drive! It's the left hand panel. Some more information here: https://www.warp.dev/drive
Thanks again for the feedback and taking the time to write this post. Improvements to Warp are coming! If you have any other feedback: hongyi@warp.dev
This is awesome, Gabe. Really glad to see you building this way! Your process sounds solid.
For those getting started with Raycast development, I strongly recommend checking out Windsurf. I've found it does a much better job looking at your entire codebase and creating the right set of structures to support Raycast's plugin extension architecture.
I've also started using Warp, and it's been incredibly helpful for handling issues. I've gotten myself into trouble so many times, and Warp just seems to be able to get me back on track. So, I'd strongly recommend that as well.
Also, check out the Raycast Slack. It's a very helpful and supportive community. If you have questions, there are a bunch of people in there, including myself, that can help answer them.
Product Hunt
@chrismessina great recs, Chris! Might have to try Windsurf for the next one...in the mean time hopping over to the Slack!