I really enjoy my work with the Kentico Community Portal! It lets me help the community as a marketer, sharing product updates, authoring content across multiple channels, learning what drives the most engagement (thanks to AIRA's customer journey insights!), and stay close to the day-to-day experience our customers have when using Xperience by Kentico.
I also get to work with this project as a software developer, gaining a good sense of what a real in-production Xperience by Kentico SaaS project feels like. I get to explore our new features and APIs, which helps me provide practical guidance to the community in this role.
However, I'm not as thrilled about - or have much time for - the mechanical parts of delivering an Xperience project. This includes updating packages, applying hotfixes, or Refreshes.
Thankfully, I have access to some very powerful AI agents that can completely automate this process for me.
This post was written for Xperience by Kentico v30.12.0. Please consult the documentation for any feature or API changes when using a different version. Be sure to check the System Requirements in the product documentation.
Agentic AI automation
You can watch the video below or read this post - they both include the same general information, except for the tip at the end which is only in the post.
Tools like Dependabot and Renovate already enable auto package updates of applications using popular package management tools like npm and Nuget, so why do we need to use AI to accomplish the same thing?
Xperience by Kentico project updates (especially with Refreshes) aren't only simple package updates. They require several other things:
- Packages across multiple package managers must be updated together - NuGet and npm Xperience packages.
- Database migrations must be run using the
--kxp-updatecommand and the updated Xperience CI repository files must be committed to the repository. - Any breaking changes need to be resolved, or if you are proactive with your projects, warnings from deprecations or new best practices also need to be resolved based on Kentico's recommendations - like transitioning to a new logging approach.
Both of the tools I mentioned can handle #1. Dependabot struggles with #2 and while renovate can handle it, it can require some complex configuration. Neither tool can help with item #3.
Additionally, if you configure these tools in your repository to try and handle some part of the update process you're left with a bunch of tool-specific configuration that can't be used by a developer - they need to follow some other documented, manual process.
Use AI agents to guide AI agents
I enjoy building solutions, I enjoy seeing marketing campaigns succeed. However, even though I have a lot of experience writing Markdown for project documentation, I don't enjoy it.
A great tip I learned from someone else awhile ago (sorry, I don't remember who!) was to use AI to write my prompts for me. LLMs have already been trained on data about AI agents and prompting best practices - they have these concepts baked in. This means they can write good prompts!
I crafted the instructions for the Copilot Tool Creator agent by hand - just a few lines that will help me automate the creation of future documentation. GitHub Copilot has several different kinds of "tools" that can be authored in Markdown - prompts, instructions, and agents.
Save prompts for repeatable tasks
I used my new agent along with a short prompt (10-12 lines) to craft the more complex Update-Xperience Copilot prompt.
This prompt included directions to look up the Xperience by Kentico update instructions using the documentation MCP server, so the agent would have a good understanding of the standard update process. It also included details that are unique to this project, like existing PowerShell scripts (see below) and documentation requirements.
The Update-Xperience.prompt.md can be given to an agent to guide it in updating the Kentico Community Portal project to the latest version of Xperience by Kentico.
From now on, each time I want to apply an Xperience hotfix or Refresh I can use this prompt to run the process for me.
Use code when you need determinism
It's also worth remembering that LLMs are inherently nondeterministic. You can consider this to be a feature or a bug. I think it's both and it depends on what you are using the technology for. However, if you need an outcome to be predictable, have an AI agent turn the process into code instead of interpretation.
I already had a script in the Kentico Community Portal that automated part of the Xperience update process, so I included it in the context for the prompt the agent generated. If I didn't already have this script, it's very likely I would have asked the agent to generate it because it's part of the update process that is easy to define with some code.
Instructing an agent to write some code to help it complete a process correctly isn't that different from instructing a developer to write automated test code to add determinism to a manual testing workflow.
Tip: use Copilot Agent Sessions for background tasks
If you are using VS Code and GitHub Copilot, I recommend using the new Agent Sessions view to help you manage the agent conversations and current tasks they are executing, and run agent work in the background as you move on to your next agent task.
The short video above, from James Montemagno, shows how this can help as you begin using Copilot more heavily.
In fact, if I was going to be running the Xperience Update prompt again (and not using it in an example demo recording), I would likely use the GitHub Copilot CLI Agent view to reduce chat noise, focus on the outcome, and let the process run in the background.
This clip shows how, when working on the Kentico Community Portal project, I can use either the chat view or the CLI view when working with the Copilot CLI within VS Code.
The CLI view is just a terminal but it is connected to the agent sessions history on the right side of the editor, whereas the chat view is much closer in user experience to the classic Copilot chat. You can switch between both views for any CLI agent session and both hide a lot of the "thinking" and command process output of the agents as they use tools and run scripts.
The end goal for all of this is to move the Xperience update process into GitHub coding agent as the outcome of a PR triggered by available package updates, but local background agents is a good place to start.
Xperience enables automation
Thanks to agentic AI tools and Xperience's purposeful architecture, the possibility to automate updates to Xperience by Kentico isn't unique to the Kentico Community Portal - it's possible for any project.
We don't have to rely on the complex configuration of tools like Dependabot and Renovate. Instead, we can use AI agents and some simple tools to handle the mechanistic parts of managing an Xperience project. This gives software developers time back, reducing management costs and allowing them to focus on enabling marketers to deliver their message and engage with customers across their digital channels.
Sean Wright
I'm Lead Product Evangelist at Kentico. I work in the Product Marketing department at Kentico along with Matej Stefanik, Miroslav Jirku, and James Turner. My responsibilities include helping partners, customers, and the entire Kentico community understand the strategy and value of Xperience by Kentico. I'm also responsible for Kentico's community programs.