Proposal: Community-Maintained Skills for Coding Agents in the Concrete CMS Ecosystem

Hi everyone,

I’d like to start a discussion around coding agents and how we, as a community, might collaboratively maintain agent skills within the Concrete CMS ecosystem.

Background

I’ve published a prototype repository that contains some skills for a coding agent, focused on Concrete CMS:

These skills are written as Markdown files and are based on the documentation and guidelines we already use in production projects.

They are currently used to improve the quality of code generated by Junie (JetBrains AI assistant) and have proven helpful in day-to-day development.

Why I’m Posting This Here

Rather than keeping this as a private or company-specific resource, I think it could be more valuable if:

  • The skills are maintained collaboratively
  • Knowledge is shared and reviewed by the community
  • We establish a common baseline for AI-assisted Concrete CMS development

I believe this aligns well with how many of us already share best practices, add-ons, and documentation.

Additionally, the WordPress community has already launched a project to share agent skills.

Proposal

If there is enough interest from the community:

  • I’m willing to move or fork this repository into the official Concrete CMS organization (Concrete CMS · GitHub) or the community organization (Concrete Community · GitHub)
  • Maintenance would be community-driven, via issues and pull requests
  • Or include .claude/skills/ directory in the core itself (not recommended)

Call for Feedback

I’d appreciate hearing from community members interested in Coding agents / AI-assisted development.

I’m using Junie a lot these days, and I’m quite amazed how well it works.
I particularly like how it explains why it’s done certain things, and gives context back to be reviewed.

I use it more for Laravel projects, but where I have used it in Concrete code bases it’s done an excellent job. I find it works exceptionally well if I point it at existing code examples when giving it tasks, e.g. 'Build me a block to do xyz, that is built in in a similar way as path to block. Giving it paths to look at helps it having to look too broadly (and chewing up credits).

Asking it to build a new package, with initial blocks, single pages, and other installable items is like magic, it’s a huge time-saver.

What I don’t have any experience is providing an agent with further guidance, but I could see how it could be a huge benefit.

My main question @hissy, is what are the kinds of things you are finding Junie is getting wrong when building components? Is it not following best practice, or is it getting fundamentals of Concrete development wrong?

@mesuva

Thank you for your interest. I found some issues without any guidelines when I asked Junie to build packages. For example:

  • AI agents don’t know how to build a block type that has repeatable fields. Because there are several ways to do so in the core, and no clear documentation.
  • AI agents sometimes use deprecated code because the core still uses it in many places.
  • AI agents generate package controllers with errors often, because no examples in the core.
  • AI agents forgot to make add.php and edit.php often.
  • AI agents use AXMLS format often; I don’t know why, but maybe their knowledge is old.

These are all little details, but I don’t want to ask agents to fix them repeatedly.

For an AI agent, is it better to supply it with plain language that explains best practices.
Or, is it better to supply it with code examples that have best practice in them?
Or both?

I think descriptive content that explains best practices is not helpful for agents. Clear examples are better, especially for the Concrete CMS project, because agents can’t judge which code is better or legacy in the core.

Please check the official best practices for humans!

Yes please. Not only do I think this is a good idea, I think it’s necessary for Concrete CMS to remain relevant.

As an aside, I find this documentation format very useful for my own education and reference.

@andrew mentioned this thread in the Town Hall.

Thank you for sharing your thoughts!

A very important skill has been added to the repository. Not a few developers would have been surprised that recent core release fixes a lot of vulnerabilities including a critical one. Nowadays AI can find vulnerabilities easily, but we cal also use AI to protect our systems secure. This skill tell your Agents dangerous signals, security priorities, anti patterns, checklist, etc.

Thank you @wordish !

This all sounds wonderful but for developers like myself, the whole presentation of this seems to have skipped ahead of my capacity to integrate all this. Is there a tutorial that starts with how to actually implement all this. I was speaking with my son-in-law yesterday who is a PHP developer for car dealership software and he was told by his boss to fully implement Claude in their development cycle. Since March, we says he rarely writes any code himself. He supervises Claude all day. It’s trained on the existing codebase so it has lots of examples of how things get done. The productivity is through the roof. The team of 3-4 devs used to output 10 fully formed ‘features’ a week and now it’s up to 50-60. They are quickly running out of ideas to hand to Claude. No surprise that testing is the backlog.
All this tells me I need to get up to speed on this but I need a better ‘overview’ of how to get started. I know… I’m 69 so I should have no business still caring about this stuff… LOL

Basically, if you use an AI tool for coding, give it those links to learn best practices of how to build for concreteCMS.

Otherwise, it will use any kind of public sources to produces the code, which will end up in using legacy, deprecated or false code from some forum post of the past.

When I want to build a feature, I use the concreteCMS Github repo as an example for available classes and functions. The AI-Skills documentation is a more explicit way of “how to do it correctly”, so your AI colleague will be on point with fewer attempts.

Whilst there’s lots of stories of teams becoming hugely productive, there are also many stories of teams developing enormous technical debt, with them producing code that they don’t understand and can’t maintain.

Most experienced developers recognise that these tools can save an enormous amount of time, but they still need to be supervised, as if it they are a junior developer.

Personality, I like to think I’m in this experienced camp, in that I’m using AI to do lots of boring tasks, optimise code, help debug - but I don’t just let it do it’s thing unchecked. It’s a coding and time-saving tool, and something that can solve surprising complex problems, but it’s still not a full replacement for all of my thinking and experience.

But it really doesn’t take much to get on-board with to be honest, and it doesn’t necessarily require using these agent skills as such - maybe for doing very advanced stuff, but I’m finding that as long as my prompts have enough context, the code produced for Concrete systems, and others, tends to be pretty good.

My two suggestions would be:

  • start using something like Gemini if you’re not already.
  • Tell it things like ‘I am using Concrete CMS, version 9, and I would like to build a block to do XYZ, it should do A, keeping in mind B, and included C - please output the code for the files to make this block’.
  • Tell it things like ‘I have a site built using X, I am getting this error message, Y, what should I check’.
  • Tell it “I want an HTML form with these fields XYZ, please create one using Concrete CMS’s form helper functions”
  • I particularly find it good for server tasks, so “I have this issue on my Ubuntu server, here is the message I am getting… what commands can I run to diagnose this”
  • Or, “Please write me a bash script to automate running these commands, including a progress meter”

But what I am paying for is a product called Junie, it’s a Jetbrains product that can run within PHPStorm. It’s a pretty minimal cost per year, and you get a bunch of credits per month. Behind the scenes it’s just using Gemini (or Claude, or other AI models), but it’s been set up to understand PHP, but also the context of your projects.

Because Junie is more of an ‘agent’, you can tell it to do quite complex tasks and investigations, and it will both build and change your code. However, it will show you all the code changes it makes, and you can easily roll things back if it’s misunderstood or you’ve not given it enough detail. It’s quite interesting in that it will show you it’s ‘plan’, it’s thinking, and give you quite good summaries of the what and why.
And it will run terminal commands to help with the process, but it’s configured so you have to approve each one. But you can also put it into ‘Ask’ mode if you prefer, where it just gives advice, it won’t change any code. For Concrete, you can get it to build entire packages this way.

The small cost per year is completely trivial now to the dozens of hours of time I’ve saved.

I think my point is that it’s not actually a steep learning curve, and you don’t have to use these more custom agent skills - these are really for when you feel you’re wanting to do much bigger and complex tasks, and you need to give the AI better ‘context’ for how it should go it.

Thank you. That was helpful. I have actually used AI to build some JS and PHP apps but I’m just using the free tiers so it often ‘loses the plot’. Things go well until it completely goes off the rails. I guess I assumed there was some sort of technical way to ‘train’ AI on a code base but as I look into this, that’s not how it works. AI models charge each developer some tokens to look up fresh answers every time. This was a basic misunderstanding on my part. If a experienced lawyer knows the answer, they don’t go back and learn it again and charge their clients the full cost of this knowledge every time they consult. It seems to be incredibly inefficient (hence the electricity requirements). Someone will figure out how to do this way more efficiently than LLMs can do.

If you use a paid plan, you can set up a AI to remember what codebase / standard it shall use permanently. Of course the free tiers will not do that, they are just a way to tease you into a paid plan.

I fully agree with @mesuva here, the abuse of AI for coding is wild and people produce a lot of code and never review it, which can go pretty wrong.

The IMHO most necessary requirement is, as Ryan said, that you are able to explicitly formulate what you want and how you want it with all kind of cases around the main logic. Then you can produce well working code. It is like “explain it to a 5-year old who has read everything that has ever been written”.