BLOG.JETBRAINS.COM
Discover Junie for PhpStorm: A Game-Changing AI Coding Agent for PHP Development
With the release of Junie, the AI coding agent by JetBrains, PhpStorm has entered the realm of agentic IDEs. Now, the PhpStorm IDE doesnt just provide classical developer productivity tools and AI assistance features, but can also do massive amounts of work for PHP developers autonomously.Unlike other coding agent plugins, Junie is native to PhpStorm, which means it uses PhpStorms core features, such as source code navigation, project structure navigation, Search Everywhere, and code inspections to plan and execute multistep tasks and supervise the outcome.You can install Junie like any other PhpStorm plugin and open it in the IDE by clicking the Junie icon on the right-hand sidebar.In this blog post, well follow Junie doing its work and see how it fits into your familiar PhpStorm workflow, while kicking off a whole new way of writing code.Starting with a clean Laravel projectLets start with a clean Laravel project. Theres nothing here but the defaults, and what I want to do is add some functionality to it. So my prompt is:Implement CRUD actions to manage books via web forms, also create and run a seeder to add 10 books into the database, write tests, and execute them. Use the Tailwind CSS form component library.Tip: To avoid follow-up clarifications where possible, provide Junie with detailed guidelines and instructions in the initial prompt. This helps minimize the number of requests sent to LLMs and optimize the token usage, which means youre left with a higher JetBrains AI quota!Tip: Select the Think More/Smarter checkbox to give Junie extra time to run and deliver deeper, more insightful results.Watching Junie workWhen I run the prompt, Junie starts by creating a plan and then follows the proposed plan step by step, stopping at terminal commands for user confirmation.As you can see, Junie is pretty transparent with what it does and which files it searches for, opens, or edits, reporting on what exactly is being performed at each step along the way.While Junie is running, you can open Junies terminal to see the CLI command currently executed by the agent and the complete output history. You can even interact with the terminal while Junie is running some of the commands.When Junie is done, you can double-click the changed or added file to open it in PhpStorms diff viewer, locate and open the file itself in the editor, or roll back changes for the edited files.From here, you can accept all changes, give Junie a follow-up task, or roll everything back if needed.In our case, Junie created CRUD screens for managing books. It also wrote tests and executed them without any manual interference. Theres a new database seeder, and it was actually run, with 10 test books added to the database.Exactly as instructed! Try Junie The power of Junie guidelinesIn the initial prompt, I instructed Junie on which technologies to use. However, for more consistent outcomes, itd be better to create a .junie/guidelines.md file in the project root and list all the preferred technologies, naming conventions, and coding standards there. Guidelines can also spare Junie from making irrelevant assumptions and minimize follow-ups or manual intervention.You can compose the guidelines file yourself, ask Junie to generate project-specific guidelines on an existing project for you, or reuse the guidelines and rules that are specific to your framework or technology stack shared by other developers, for example, Laravel guidelines by David Carr.Tip: Use the .aiignore file to restrict Junie from accessing specific files and directories.Allowed terminal commandsAdditionally, in the example above, I manually confirmed all terminal commands run by Junie. However, I feel confident in allowing Junie to run any php artisan command without confirmation. To do so, Ill add this type of command to the Junie allowlist in the IDE settings via Settings | Tools | Junie | Action Allowlist using the RegEx syntax.Allowing all php artisan commands would look as follows:To enable Junie to run all terminal commands without user confirmation, select the Brave Mode checkbox.Ask modeJunie comes with the agentic code mode selected by default. However, you can also chat with Junie in Ask mode, asking questions referencing your project context but without having your code changed.Using Junie on existing projectsWe started with a clean project and let Junie do its thing. But what about existing projects? Junie is optimized for a profound understanding of the project context and working with large-scale repos and complicated tasks. PHP developers can use Junie to:Analyze and understand a large legacy codebase and update it to the latest versions of the framework and packages it uses.Analyze the commit history to figure out issues in PHP or JavaScript code and fix them.Analyze the codebase to detect weak spots and areas for improvement.Explore new ways of implementing features or come up with quick proofs of concept.Challenge Junie with something creative and investigate new ways of collaboration between human and agent!Junie is extremely powerful in delivering coding results, but ultimately, what it can do depends on the accuracy of the input it gets and the proficiency of the engineer using it. Do you have any impressive Junified use cases to share with us? Wed love to hear about them!What developers sayCheck out what other PHP developers have used Junie for:NEW PhpStorm Junie AI VS Cursor: Usable Agent from JetBrains? by Povilas KoropNew AI Editor by JetBrains: Junie by Nuno MaduroFirst impressions of Junie with PhpStorm by Carlos GranadosJunie is already making quite an impression in the PHP and Laravel communities. Heres what early users say:Played around with Junie today. Very cool and it does a particularly great job of showing you what it's doing. https://t.co/sSARLq0YrA pic.twitter.com/huDMG120wA Jeffrey Way (@jeffrey_way) May 12, 2025 I'm trying out Junie from @jetbrains in @phpstorm. I'm impressed.The thing that stood out so far is that I didn't have to give it specific references to the files that need to be updated and it found all of them on its own. And at the end it asked to run the build process to Mircea Sandu (@mircea_sandu) May 12, 2025 Gotta correct myself Junie isnt that slow when you consider its the best coding assistant Ive tried so far. The results are insanely good. Amazing work, @jetbrains! Patrik Gmitter (@PatrikGmitter) May 25, 2025 Finally got round to giving Junie in @phpstorm a go, it was a great help figuring out and then fixing some N+1 issues I was having in my application! Jon Purvis (@JonPurvis_) May 18, 2025 Try Junie
0 Comments 0 Shares 73 Views