Submind YouTube summaries
Thumbnail for Drupal AI Learners Club — How to Enhance Drupal Development with AI with Mateu Aguiló Bosch (e0ipso)

Drupal AI Learners Club — How to Enhance Drupal Development with AI with Mateu Aguiló Bosch (e0ipso)

Watch on YouTube

Video summary

Mateu Aguiló Bosch presents a modular architecture designed to enhance Drupal development by leveraging open-source principles and containerization through DDEV, moving away from monolithic solutions that rely heavily on specific vendor terms of service. This approach centers on five independent components: a runtime environment for secure AI execution within isolated Docker containers; "Strikethrough," a planning tool based on spec-driven development that breaks complex tasks into sequential phases with parallel sub-agents and customizable human-in-the-loop hooks; "KenKeep," a memory system that captures valuable knowledge nuggets directly from interactions into Markdown files within the Git repository without needing external vector databases or API keys; an optimized review mechanism for critiquing generated code before committing changes, similar to GitHub pull request workflows; and validation processes where deterministic checks are applied while acknowledging that fully automated non-deterministic testing remains a challenge requiring further systematization. The discussion highlights distinct differences between this modular strategy and Anthropic's official Superpowers tool, particularly regarding workflow transparency and flexibility. While Superpowers operates as an impromptu, high-confidence "auto-coding" partner that generates invisible scripts specific to its own ecosystem, the proposed Spec Kit via Strikethrough functions like a collaborative team enforcing agile processes by explicitly decomposing tasks and asking clarifying questions before proceeding. This LLM-independent approach prioritizes human oversight in planning phases, allowing developers to integrate diverse resources such as legal documents from Google Drive into their workflows, whereas Superpowers is better suited for non-coding tasks like document analysis where rapid generation outweighs the need for structured review cycles. To address practical concerns regarding code specifications, it was noted that while including specs can bloat pull requests, specific Git tricks exist to exclude spec folders from diffs, making their inclusion viable and manageable within standard development practices. The modular nature of this harness allows teams to adopt only the components they require, such as dropping KenKeep if preferred, while maintaining quality gates through human oversight and compound engineering practices sponsored by Lullabot. By encouraging community adoption via GitHub stars for these interchangeable projects, the initiative aims to improve visibility and foster a flexible ecosystem where developers can tailor their AI integration without being locked into proprietary dependencies or rigid infrastructures. The session concludes with an invitation for viewers to engage further through feedback forms and joining the Drupal AI Learners Club on Slack for ongoing discussions about balancing bottom-up tool building with industry best practices. Attendees are also directed to check Luma for upcoming event schedules, ensuring that the community can continue refining these methodologies as they evolve. Ultimately, the presentation underscores that while fully automated validation of non-deterministic tests remains an open challenge requiring further systematization, a structured human-in-the-loop approach combined with independent, modular tools offers a robust path forward for enhancing Drupal development security and efficiency without sacrificing flexibility or community control.
Read the full video transcript
Let's do this. >> Okay. [laughter] Welcome everyone to the Drupal AI Learners Club. I'm your host, Amber Matz, and today we're going to dive right in to our topic with Matteo, and I'm going to let him introduce himself, and just we're just going to dive right in. >> All right. Uh can I just share screen? I'm going to share my whole desktop. So, let's see how that goes. I'm going to Do you see my desktop? >> Yes. >> All right. >> Lots of thumbs up. >> [laughter] >> Okay. Okay, great. Um well, uh so the other day Amber reached out to the community and asked about people that wanted to share their experience using AI to improve their uh development in in Drupal. And this is something that I've been focusing a lot, and um I I have been doing it as part of my different facets. Uh so, you may know me as Matteo Al Youssef in the Drupal community. Recently, I started my own company, uh Camp I Can Soft, uh which I use for consulting gigs. So, if you are looking to improve your AI usage and your development workflows, uh hit me up and let me know. But, uh mainly a lot of this stuff that you're going to see today has been sponsored by uh my main client and uh employer Lullabot. So, uh as part of Lullabot, they tasked me to explore generative AI uh a while ago, and I have been since trying to see how we can as a company improve our processes and our efficiency using tools like AI without dropping any inch of quality because that's what define us at at Lullabot. So, the thing that I noticed right away is that I just doing a prompt uh to an AI assistant, let's say Codex, will not give you great results. Uh models have been evolving, they have been improving, harnesses have been improving as well. We do have harnesses now. Uh when I started, we didn't have them, but Drupal is complex. It has many layers, and uh sometimes a fix is in configuration, some other times is in custom code, and some other times is the the generative model is not respecting your team conventions. So, there can be a lot of friction when working with AI in Drupal. So, what I wanted to to do is try to add tools that guided the AI code generation process a little bit and try to steer away from getting feeling the frustration of just telling the AI, "I want to do this." And then Claude doesn't get it. And it just is a miserable experience. What I learned is that a lot of it is because you need to teach your AI to work with Drupal with your project and with your team and even with your personal preferences. So, there are many layers in there, but you need to be able to configure all of those. And this is not something that I am the only one looking at. Um in fact, we are trying to assemble many of these parts that you'll see today into the AI best practices module initiative. But that's a little bit of a spoiler. Um So, I thought I had this figured out. And I built this thing called Dalia, and some of you I know that you have at least registered to try the private beta. Uh Dalia was was built on open source, uh but it was a UI that tried to put together all these tools for easiness on the Drupal developer. It had a lot of things right, but the main goal that I was trying to achieve with Dalia was just one command a D dev command and it gets you a working environment that you can use to develop that complex stuff that we do with Drupal. So, we I I got this at this point where Dalia owned the workflow from start to finish and it did a clarification round at the beginning. It was very good at interviewing the user with a focus on Drupal and then taking it from there to planning, breaking it up into tasks and doing context engineering in a way that a complex task was handled to different sub agents that each one had diff- isolated context, which leads to better results and a better pricing. And finally, it focused on the human in the loop, which I think is important. I think that many in the Drupal community and even in the leadership have has talked about this and it's this idea that I as a developer own the code that my assistant produces because I am the one pushing it even if I am telling the agent to push it for me. But in my particular view, we need to keep that ownership because that forces the the quality gate that we want to be proud of. So, I locked myself away. Oh. Are you still hearing seeing me? Yeah, we got you. >> Yes. >> Yes, we are. >> [laughter] >> I accidentally locked my computer. Um I was fast to get back back in. All right. Um so, Dalia eventually was not successful because a change in the terms of service of Claude. So, Anthropic made a a change that later on they walked back, but it was very clear that that it was depending on a single point of failure, and I didn't like that. They said that they were going to prohibit using your subscription, which is the only financially reasonable way to do agentic coding unless you have a big company behind you that pays for the tokens. And and they would didn't want you to use any UI other than theirs. So, Dalia was a UI that was using Claude, and that was a single point of failure, so I didn't like that. But, other things were were that it owned the workflow that the user needed to follow in order to use it. So, it was great because it it kind of lowered the barrier of entry for developers to use agentic tools and agentic workflows, uh and even to mention one of those words, agentic loops, uh into just address a DDEF command that you executed, and you got a UI that was kind of self-explanatory. But, once you wanted to break out of that workflow, you were on your own. You couldn't use Dalia for a simple thing because it was too much, right? It was very good at complex tasks, but it didn't scale down very well. And also, you couldn't easily bring new tools into the mix or just change providers. So, instead, I thought that this needed to be decomposed. And something that I really like a lot are the Unix tools. They have single purpose, they do one thing and then and then they do it well. And then you compose them together to execute complex tasks. You can see this by how the coding assistants use those tools in your terminal to achieve complex tasks for you. So, taking this principle, I tried to create these different parts that I think that make for the viable Drupal AI harness. So, the first part is the runtime. So, where do you run your AI? It's inside a coding assistant of some sort, but there are many shapes of that. You can use it in your desktop app for cloud, you can use it inside of your terminal, or maybe you can use a wrapper, or maybe you could write your own by putting together by uh plugins and making your own coding assistant. So, regardless of what you want to use, this Drupal AI harness has to support it. So, my idea in here is that you shouldn't be running your coding assistant inside of your host machine, inside of your laptop without isolation. That is a security risk. And uh the if we are to propose best practices, we need to make it easy for people to work with AI but inside of the containers. Now, the Drupal container solution is Ddev, and Ddev supports add-ons. So, I created a bunch of add-ons for many different systems that you can use with, again, the idea that it is easy to introduce, just a command Ddev add-on get, and then the name of the of the assistant. That has some additional That Damn it. Sorry. Cut myself out again. All right. Give me 1 sec. Let's see my clicker works. Uh it does work. Okay. Um am I back? How do I see Zoom? Yes, I see Amber. Do you hear me? >> Yeah. Yeah, we hear you and see you. Yeah. >> Well, probably you heard me rambling the whole part. >> [laughter] >> It's fine. It's fine. Don't worry. >> I try not I'll try not to use the the keyboard again. Um So the the runtime is the first part. Where do we execute all this? The second part is is planning. And then we have memory. And then we'll see. But let's focus on the on the runtime. Like I said, we need to be able to access everything that we need to do in our development workflow for Drupal from inside of the container. And we need the assistance to be able to modify the files that make up our Drupal site. And that happens inside of the Ddev web container. So that's where all these tools get installed. And as you can see, there are several tools that are focused on assistance. Then there is one that is a coordination application that can use any of these assistance in a single UI. It's a pretty neat open source project called three TT3 code. And then there is a small utility to control Playwright using the CLI. The goal here is to also simplify the process of authentication. And you can if you want, configure these assistance to reuse the authentication from your host machine inside of the web container. So you don't get prompted to log in every time you you restart the container. So let's see how that works. So I have this Drupal website that I created just for this. And in order to get uh one of these add-ons, this is just a DDEV site. I I do DDEV DDEV add-on get, and then AIO I assistant, and let's say that we want to use Codex. So, we do that. This installs Codex, and if I do DDEV restart, once it restarts, we will get the the Codex CLI installed inside of the DDEV container. Like nothing crazy, very simple, but it does take care of some annoying parts. Like, for instance, it forwards your host configuration to the web container, the authentication to the web container, and it lets you drift, so you don't have to marry the two. Just seed the configuration from the host to the to the web container. So, now if I do DDEV at sec Codex, it's just it's just there, right? So, that's that's the idea of the first part, like working with the runtime. I don't think there is anything super exciting there, just define it as a thing, because we need to take it into account if we are to have completion in our harness. The second part, I think, is more interesting, and it's strikethrough. I initially started calling this the AI task manager, and you can see by the name I chose that I'm not very good at marketing, because that's a very bad name. Uh no one could find it. And I renamed it to Strikethrough because you're striking through the tasks. Also not a great name. Uh but that's the best I I I got. So, this one has a funny uh oh, the cat wants to be in. All right. Uh this this one has kind of a a funny story. I started working on this and I didn't have the words of what I wanted to do because the industry didn't have the words yet. And I was coming up with spec driven development like thousands of people were at that particular point in time. The thing is that a week after I released the AI task manager and I put out my first for module using it, GitHub created SpecKit and that was kind of the uh one of the first big spec driven development projects that um that erupted in the AI coding generation space. Um obviously, I don't have the resources to maintain Strikethrough like GitHub has for the SpecKit or other projects have, but in this age where coding is cheap, taking the good parts and adapting them to what you need is better than adapting some other project if that fits your bill. So, what I wanted to to do for Strikethrough was I wanted to have a a system to do my spec-driven development in which you generate a plan after some discussion with the LLM that is structured, and then I decompose the plan into phases. Phases are sequential and can contain one or more parallel tasks. Each task is executed in a sub-agent in isolation, and it's designed to be executed in isolation, uh which doesn't pollute the context window for the AI, and also gives you less token usage for each iteration that it does on the code. So, it was already doing something that later on was called context engineering. Many of the spec-driven development projects are focusing on greenfield projects. So, a greenfield project is one where you don't have anything, and you start by writing the specification or the PRD. You say what you want to do from start to finish, and these projects take care of breaking it up and doing the implementation. However, in Drupal, we don't get that. We always start from a Drupal, right? We never start from zero. Also, many of those other tools didn't have great con- context management. They didn't need to. The level of complexity that we deal with didn't expose that need for them, and they worked great for their use cases. But they didn't for mine. Right? And I was on this self-imposed ban of using PHP Storm for a month and doing my job exclusively using an AI assistant. And I was doing this as part of my task at Lullabot to evaluate these AI coding generation solutions. So I wasn't able to use those successfully. Another of the things that I wanted to bring into Stracthrough was the human in the loop. I wanted to be able to control the review process because I I will be steering an agent through the task and I want it to go to completion successfully. I don't care if it takes a little bit more time and if it uses a little bit more tokens. I will try to optimize those, but if quality depends on tokens, I'm going to go for quality always. So I built all that. But then the Drupal in me uh wanted to make it extensible. Wanted to introduce hooks. Hooks like pre-plan, post-plan, post-generation task, post-execution, etc. So those are prompts that are installed inside of your project that you can tweak. So they happen when when you go through the Stracthrough workflow. So let's see how that happens. Okay. I'm going to get out of this and I'm going to install strike-through here. Now, I'm going to do MPX strike-through latest in it and that's it. I'm going to give it the different harnesses that I want to support. And then, I'm going to do MPX skills and strike-through. All right. So, this is going to download the skills. Get them all. I want to support the universal skills plus the ones that do it their own way just because. And and voila. Uh we are already using strike-through. Uh this is installed. You can go to this URL which is in the strike-through repository to see the documentation and how to get started and how to uh use the workflow. But, you don't need to because I'm going to show you. So, we said that we got access to Codex and I got a in this project, I installed the MCP server project and we have this ticket that I haven't looked at, but the it says that there is something called server server instructions for the MCP server and we should support it. Uh by the way, thank you Chad. I think you registered for this. I don't know if you made it. Um and I think it's a great idea. So, if we want to solve this issue, what I'm going to do is I am going to use voice recognition because it lets me be more expressive than I can be with typing without locking out my computer as you have seen. So, I vibe coded my own privacy-respecting solution for voice recognition. You can do it as well or use one of the um I am looking at an issue that says that the MCP spec supports MCP server instructions as a field. The MCP SDK for PHP already supports it, this issue is claiming, but you need to review that. I want to create a setting that allows site owners to put the instructions in but don't build a UI because the UI is in a separate project called MCP server UI. Just the configuration object. Remember that you'll need to write a an appropriate schema. Check the specification for more details on what server instructions are. All right, that should do. So, what I'll do then is use ST create plan, which is the name of um the name of a skill that we just installed. Uh let me scroll back a little bit. ST create plan right? to address and then I'm going to pass it the link to the issue. Right? After that, I'm going to just paste Oh, damn it. I'm going to paste this. Okay. So, what this will do is it will of course analyze the query. It will use this skill and it will check on your environment. So, in this case, I'm going to open a panel here and I'm going to go to CD.AI strikethrough and you'll see that here we have uh several things. Uh one of them is this plans folder. And right now plans is empty, but while this is working, I'm going to show you another project that I have that does contain plans. So, if I do .AI strikethrough plans, you'll see that I have a folder called okay F native node format migration, whatever that means. So, in there uh uh 60-something, you'll see that there is just a markdown document because I haven't generated the task yet. I only generated this plan. So, I can do that plan and I can review this, right? So, this is one way to review it. Uh it follows a template. This plan follows a template that you define here in the config for AI strike through. You can see that we have templates, and the plan template is here. So, you can configure this. This folder is for you to tweak to your heart's content. And this is where you write your hooks. Uh you get some prompts by default, and uh you can edit them. Uh better visualization for this, in my opinion, is doing MPX strike through serve. Oops. Serve. And this will open uh web UI that has a a better experience. So, I here I only have this plan. It doesn't have tasks yet. I can click on it. I can read it, and I can see the uh the graph for the tasks, because that's something that we encode, because forcing the user to generate this, sorry, forcing the AI to generate this will lead to better structured tasks. And as you can see >> That was awesome. >> [laughter] >> Like the visualization of the plan like that, that's amazing. >> So, you're doing >> Yeah, sometimes it will be very useful. Some other times it will not. But um but the the point is that just by adding it gives you, as a user, an opportunity to review this. And that is the point. Uh that is the human in the loop part that uh that I was mentioning earlier. That you come here, you look at Well, what is it Daisy you doing from a higher perspective, right? And at some point, you might be able to you're tempted to say, "Okay, well, this is not right." So, how do you tell the AI to pivot and address this? There is this thing here called review in self-review. We'll see self-review in a moment. But, just for you to see, if I click here, a desktop app that I also coded opens up and lets you add comments and annotations in here. You could say You could say, "I don't like the word word consistent." I don't know. Whatever. Haven't read this. So, um you add a comment on this. You see that there is a comment, and you click on finish review. And what that will do is in here, it will create this review XML with the comment in the line that you added it. And you can feed that easily to the agent with again, a skill that is called self-review apply. But, let's not do that because I do love the word consistent. Um So, go explore this. Uh it is a just a UI to see the documents that Strike Through generates. Um but, let's go back here. Probably had some questions for us. Again, uh remember this needs to guide you through completion and it will ask you to make choices. Gives you the recommendations, but also will ask you to to make choices. I'm going to go through it, uh but know that once you are on the Once you have the plan, you have the skill and here I'm in Kemkeep. I'm using a different UI. Remember that I said that I used T3 to have different assistants at the same time. I could use Cursor this time to say ST generate Let me use Opus ST. Uh generate tasks and then I give it the plan ID that I don't know if you remember, but it was ID 60. Well, double that. So, I do this and it will generate all of the tasks that are needed to address that that plan. I am not going to use these tasks because I didn't review that plan yet. That's something that I was doing right before I joined the call. And it was in this project called Kemkeep, which you may be curious about. So, the next part on the harness is memory. This is especially important if you have done any coding generation for Drupal to keep your generations current to the latest version. So, let's go through this illustration here. So, we are coding with our agent. Not all day long cuz that's unhealthy, but 6 8 hours a day, right? Some of the things that we are telling the assistant are important gold nuggets that get lost during our conversations. Can keep is a system that will capture those nuggets and save them inside of a structured documentation format, which by the way, is going to be changing to the open knowledge format that Google just released once plan 60 is done. So, it's the saves those memories inside of Can keep in a way that is reviewable, in a way that can be shared with a team, and that doesn't require any infrastructure and uses your tools, right? So, those are important parts. Again, I didn't find any of the available memory tools that did all those things which I think are critical for how Drupal projects with teams working in them work. So, Can keep will do its thing. It has a set of hooks that implement several features across different harnesses, uh and what they'll do is they will detect your usage and save the knowledge that is worth saving, but you have the last word, cuz those are files in your Git repo. That documentation travels with your code, and you get at them, and you PR them, and someone reviews them. So, there is a human in the loop that will make sure that the knowledge is accurate, because that's going to be critical for your harness. Again, it's a customized harness that is for your team and your project, and it needs to run well. So, to reiterate some of the things that I just said, I didn't use Cloud Mem or Mem Palace or any other of the solutions that are out there, because some of them are a local only. You cannot have documentation shared with your co-workers. If I work on a ticket that discovers a nuance that is worth documenting, I can do it manually, and I can do I can use one of the one of the skills that Kankakee provides that is called KK add, and add a memory manually. If I didn't notice that I was providing instruction, for instance, I kept telling the AI, "You're not getting that. You're not getting it. I told you to use the new PHP attribute hooks, the OOP hooks. Don't do the procedural hooks, because that's the old way of doing it." And then you move on. For that task, it will use the the object-oriented hooks, but not in the next task. But, KenKeep will run after a while with all of the collected information, and it will discover that instruction, and it will say, "Oh, I think this deserves a knowledge item." And it will propose it to you. So, you have different ways of adding memories into the system. You can just chat with your assistant, and from time to time call to a skill called KK curate, and it will curate all of the logs, and it will extract as many knowledge items as it finds. You can add knowledge by doing KK add, and that will just take the thing that you say. You will say, "KK add, I don't want to use prettier in my Twig templates." I don't know, just made that up. But, it will save that as a memory. It will take your your word for it. And then those become Markdown files inside of the special folder that goes with your code, and you can review it. You can run Git blame. You can also have KenKeep prompt you when it's doing the curation, and that's why it requires you to run the curation, because it will prompt you if it finds something contradicting, because you're changing something that was documented to the new paradigm, and KenKeep will say, "Hey, I found a contradiction. So, you need to decide whether we store this or this, but we cannot have both. So, that's why it keeps your memories straight and organized and without contradicting each other. Some of these projects also require additional vector databases that you run in your local, which are great and probably work even better for retrieval, but have the problem of how do you do eventual consistency with multiple team members adding memories and putting them together with a vector database. That means having a single sort of truth, hosting a vector database, and that is not scalable, in my opinion. And one of the things that can keep us in its principles is no infrastructure. And again, it doesn't need any API keys. You work within your assistant of choice. So, you don't depend on terms of service changes, and it uses common technology like skills. >> So, Matteo, we've got a question in the chat. John, do you want to go off mute and ask your question or >> Uh sure, yeah. I was just wondering, it sounds like this is useful for working on a single Drupal site, for example, uh across a team. Um but what about like your standards, if you want to do this across a bunch of Drupal sites and have have some standards, like the examples you were giving, where we we always want to use hook classes instead of hook functions. Is there a way of capturing that at a higher level? >> I did not stage that question. Um but there's a solution for that. And uh, let's see. Can Kint Kip um, So, Kint Kip has something called knowledge packs, right? And there is one for Drupal that you just install like this, and you bring all these best practices that I've been using for Drupal, like uh, let me see if I can find it. Might be in architecture, hooks and events. There you go. So, that's what it looks like. And as you can see, again, didn't get to that part yet, but Kint Kip has the injection part of the knowledge, and it's tries to optimize the context window, because otherwise we would be overwhelming the model with so much information. But, if the model is working with hooks, it will eventually discover through navigating these index files, it will discover these oh, use OOP hooks, and it will get the documentation, which the agent may or may not follow, depending on if it feels that it knows what to do or not. And that will depend on the level of intelligence of the AI that you're using, etc. Um, which also makes this great to have a smaller bill, because this is good for also for less intelligent systems. But, I digress. So, the answer is yes. There is something called knowledge packs that you can have You can have your own. You don't have to uh, publish them. You just install your uh your pack inside of your your project and you keep it up-to-date whenever you make changes. It's kind of derives the a similar concept of how we are installing skills nowadays using the Vercel CLI. I didn't know if I was going to show show this or not, uh but I guess I did. Um So, we we have at this point a runtime. We have memory. We have planning. And we are missing a human brain. And that's what self-review is for. So, self-review, as you saw earlier, we used it to review a rendered marked markdown document for that plan, right? But self-review is optimized for reviewing code because at the end of the whole strike through workflow, which will use the memories in KenKip to generate the best code that it can, it will give you some code, right? And it is up to you what to do with that code. My take is that you should review it with self-review. And that allows you to add comments like you would in a GitHub PR, which then you click finish review. It generates that review XML file that we saw and you feed it to the assistant. The assistant will make changes based on your review and you can commit the changes um and review them again and again and again until you are happy with the changes. This is part of what this buzzword of agentic loops um will make you believe that you're not doing. This is it. Like going back, like taking what the AI gave you and going back to the AI to improve the output. This is simple loop. It is just uh human review loop. So, let's see if I can do a quick demo. So, self-review will take any arguments that git diff takes. So, if I execute it without arguments, it will give me nothing here except for the added files, right? [snorts] In this case, we only have markdown documents and that's why they show rendered. So, I'm going to do going to review the last commit. Right? And that was also oh, only markdown documents. How about three commits ago? Does this have any code? Ah, it does. Okay. So, um uh very very simple code, but let's say that I want to comment on this. I come here. I can add a question. So, a question is something that the AI will not take as I am telling you to do this. It will understand that you are challenging it, but you're not sure, but this kind of smells a little bit, and you want an answer to that. And if you when you apply the self-review changes, it will tell you, "Well, I actually thought about your question. I think you're right, and I made the changes." Or it will tell you, "No, you're wrong." Right? And then you have these different categories that will have slightly different behavior when the assistant sees it. You can attach images, you can suggest changes directly. This will take your changes verbatim. So, don't don't put something inspirational here. It will be very verbatim. Because sometimes you just you just know what needs to happen, right? And you're doing the whole process to review this, and you go, "No, I don't need the the AI to figure that out. I know what needs to happen, right?" And remove that suggestion. And and that's pretty much it. Let's see if we can do I don't think we are very I think that we're a bit a bit tight on time, so I'm not going to go through the the process, but the the thing is that you take the review, and then you go back in here, and you do self-review apply, and it will apply anything that it sees in review .xml, or you if you pass it the name of the XML, which you can customize down here. Um where you can customize down here. Um it will review that other XML file. Uh another good thing that self review brings is and it is this is very useful in combination with this multi harness T3 setup that I have uh which I if I executed the plan with Opus, I would go to Codex which is not available right now. Um in here and I'll do self review critique and it will review the changes that I have and it will generate that review.xml and then I can do something that is self review and then resume from and pass a review.xml and I can and this is kind of a little bit of uh mind hurt. You can review what the AI reviewed for you. So, let's say that Codex critiqued the Claude code changes and it went into line 10 and said, "Don't return null here." because this this and that has cascading effects. It will add a comment that it will self identify as GPT 5.5 and then you open self review, you see that comment and you are like, "Huh, I don't think you're right, Codex." and you remove the comment. Or you can comment on the comment. Right? And then you pass the combined review of GPT 5.5 and your brain. So, self review, super useful. You can bring it into your tool set today with very little disruption. This is the easiest one to adopt. Um and yeah, that's that's what I I forgot about this slide. Um that's what I uh described and uh you add comments. And finally you get to the missing part. So, what is left? For the loop to be successful, and this is in some way already included as part of strike-through, but not to its fullest. But for the loop, the agentic loop to be successful in this Drupal AI harness, we need to add validation or eval or whatever you want to call it. Um Dalia had this. With Dalia, you generated the strike-through plan and also the verifications document. And the LLM generated this verifications document, and you reviewed it using an embeddable self-review because self-review is a desktop app, but also is a React library that you can embed in your uh applications. So, Dalia was embedding self-review inside of that uh universal UI to rule your whole workflow. But it did had uh did have some validation built in that I haven't come around to build as a units-like piece for the Drupal AI harness. So, what it looks like today is it has a lot of our deterministic checks, our tooling. It can also generate non-deterministic non-deterministically tests for PHP unit functional tests, Playwright, etc. But, we need a way to consistently systematize how these verifications are done and how you configure them and you port that from project to project. And then there is the manual review that I showed using self-review. What is this What it's not solved is how does the AI know that the tests that it generated are sufficient. What if we want to validate editorial workflows or that it matches the business value that your task requires for your organization. So, those are open questions that should be encoded in your harness as part of the way to address a task that are not there yet. So, Lullabot is sponsoring part of that of this of all of this that you just saw today. So, if you have it in you, go and share some thank yous in LinkedIn or in Slack. I know that they will be very happy about it. Um but, this part still requires some work. If you want me to work on this, again, like I said, hit me up. I am ready to take on those tasks. So, like I I kept saying and saying again, we need to work with this harness our tasks creating this structured workflow, but you can we can choose any of the parts and drop any of the parts and it still holds. You can drop can keep and forget about it and just use everything else and you still get value. You can replace can keep with another memory solution and you get very good value. I would argue that not as good, but that's for you to decide. Um you're going to use this one like I don't care about any of this, but this one thing was useful for for me cuz it's kind of silly the hoops that I jump every time that I need to start a new D dev project, right? So, take that one. Um but I think that if you take them all and you put them together and you configure them to your heart's content like for instance the the hooks for strike through, you will have better next tasks. The next task it will be executed better and better and better. And I don't know if this is generic term or something that uh Seth created. Seth uh being the CEO of Lullabot, uh we get at compound engineering. So, the more engineering you do, the better engineering you create, and you are better equipped for the next challenges. So, um the only thing that I want to say is that it takes a lot of effort to write these projects. And especially these three. If you take note of this and go into GitHub and add a star to it, maybe those will get more visibility, and those will attract people from outside the Drupal community even, because as you may or may have not noticed, none of this, except for DDEV, and I would argue that DDEV is not Drupal-specific either. None of this is Drupal-specific. He I am using Strike Through to build Can Keep. And Can Keep is not a Drupal app. I am using Can Keep inside of Can Keep itself to know what are the principles of the Can Keep app, etc., etc. Self-review is just reviewing some code. Right? So, if you go and throw a GitHub star, it might help. And it's free. And what else is free nowadays? And that's it for me. Ta-da. >> Thank you so much, Mateu. That was amazing, an amazing walk-through. If uh do you have a hard stop right now, or do you have a few minutes to answer some questions. >> Okay. So, I'm going to open it up to questions. Let's keep it the questions specific to what Matteo presented. I know that a lot of folks are working on the same problem space. So, let's not make the question kind of a mic to tout your own solution. Like let's keep that for other sessions or in the discussion in Slack. But if you have a specific question to about what Matteo presented, go ahead and go off mute and ask your question or ask in the chat and I can help facilitate that. So, are there any questions? >> Yeah. I have one question. Yeah, I I see in the game give that is very good interesting tool for getting keeping the knowledge base. So, what for my development I'm using the spec driven development approach with spec kit from GitHub. So, it goes well. Did anybody try the spec kit with the game give or how it is your experience so far? Can both works in synchronously or do I need to take a little bit if I want to use game give with the spec kit? >> There is nothing that I can think of that makes game give incompatible with a spec kit or any other spec driven development tools. There is another one that sparked from an X-Tripler. Maybe he Robert Douglas he started a spec kitty. Maybe he is still a Tripler. Sorry if I if you are still a Tripler developer than that Robert. But but yeah, there were there isn't anything incompatible per se. Now, that said, I haven't tried them together because when I evaluated SpecKit, I was I I had not yet written Ken Kip. So, like they both happened in different timelines. >> Okay, then I will experiment with that and then keep you guys posted. >> Sure, and if you find anything like the issue queue for Ken Kip will surely help you. Yeah. >> And thanks a lot again for the wonderful session. >> Thank you. Uh, yeah, we have time for another question or two. Oh, we've got a raised hand. Go ahead and unmute and go ahead. Alibaba. Maybe. I thought I saw a raised hand. If you have a question, go ahead and unmute and go for it. Okay. >> Okay. >> Oh, yeah. >> question. Um, first of all, this is amazing. Thank you. Expect nothing less. Um, for the self review um, portion of things, do you ever target the review by type? Like, for example, if you're doing front-end code, do you have like a front-end set of like review it for these types of things? Or security or performance. >> Right. Yeah, I think I think what I think I know what you're referring to. Um, you're referring to the self-review critique, which will uh do the automatic review. Um Yeah, that that one leaves it a little bit up to the model and it's open-ended. However, it will plug the skills that you may have installed for reviewing code. So the answer is yes and no. I don't because I am like maybe I want to have a little bit too much control on the code that gets generated. Um but I have some skills that help me review back-end code or Drupal services, etc. Right? So this skill can use other skills. But there is nothing in self-review that will solve that for you. It's something that you have to bring yourself into a project. >> Okay. >> That doesn't make sense. >> Thank you. Yeah, totally does. >> it was wonderful to hear your voice after so long. >> Yeah, I know. I miss you. >> Hi Randy, go go for it. >> Hey, um one of the problems with this is very very sophisticated, very very impressive work um that goes places where it should all go. The problem that I have with solutions like this is that this space moves forward so fast that these things get left behind really fast. Um for example, a year ago people were teaching you how to make a good prompt then you would say, "You are a really good developer, you know, and this is what you should say, and you should say exactly this and then your life will be great." And that's all just long gone. And uh 3 months ago people were saying, "Oh, you should create sub agents that do this and specify them." And now Claude just takes your work and says, "I'm going to make some sub agents. Here they go. They're off to work." So how do we um how do we sort out whether we should go down these beautiful paths like the one that you're leading us in or wait till next week before Claude starts doing it? >> Um I'm going to ask I'm going to start by a request that everyone acts their questions like Randy does from now on because I love that. Um yeah, yeah. And that is How do we plan for that? Um It is difficult. Uh the The thing that I can tell you is that I started AI task manager by intuition without really knowing that I was working on something that was going to be called spec-driven development and that still holds today. Like because it goes into basic principles that are not bound to change soon. Um it just like we do with complex tasks. It tries to ask systematic questions, find gaps, break it into atomic tasks, and then uses the technology that it has available to do things in parallel, and but sometimes we have dependencies, so you have to manage the dependencies. Those are things that we do naturally. Uh and those are not going away because they are like the nature of the tasks that we do. But yeah, when Claude just introduced plan mode, I was like, there it goes. Like, all my effort went poof. But it didn't, really, because like like I said, our use case is specific. I got familiarity with my own tools, but I am using them in the way that fits the tasks that I'm doing, right? So, so there is that. Um the other part of it is that maybe we abandon some of these tools, and that's what I realized that it was wrong with Dalia, cuz Dalia was making it all a monolith, and this kind of lets you, okay, like Claude code really figured out memory. The memory system in Claude code not super great today, but what if they figure it out? Well, we drop Kemk- Kemkip, right? Or we keep it in our back pocket because open code still hasn't done the memory thing, and Claude increased the token price, and we can't afford it anymore, uh cuz that's another thing that keeps shifting, like all the landscape is shifting. That's why these small pieces needs to be independent and interchangeable with other pieces that get absorbed into the assistant or replaced by a better project. >> I think one of the things that you're teaching us is you're teaching us a way to structure our work with AI's help. And you've done that with a whole bunch of beautiful tools. But maybe it has to go up a level to what is the overall strategy that we have to have to use this tool as well as we can. And you've been thinking that through enormously. And you may maybe you've already done this, but maybe I I know Tag 1's come out with a whole bunch of beautiful blog posts and stuff. But maybe that whole big picture of what are we going to have to do is the biggest thing. And your work on these tools is a smaller thing because of how stinking fast it all moves. >> Yeah. Uh for me like doing the work from the bottom up helps me structure what is needed and then see everything Oh, okay. So this is what I build looks like a sand castle and it might be you know, like first build and then generalize. That's the way that my brain helps me wrap that around. But but you're right, of course. This is something that I hinted at and even even said that it was a spoiler. That's what the AI best practices module and um some big push behind it will lead us to, right? That is the big picture. It's going to like take This is the way that we do this in Drupal. And you may take it a little bit take some parts uh leave some parts, but if we are rowed together in the same direction, we may get there faster. >> Cool. Hey uh Christian has a quick question. Um specs in the repo with your code, yay or nay? >> Um I think it's a matter of preference. Uh I do put them in the repo. And some others don't. Uh what uh what do you do, Christian? Do you put them in the repo? >> I don't want to put you in the spotlight if you can. >> I don't. >> You don't. >> Yeah. >> One thing that I have a problem with that is it bloats your pull request, like the giant diff. Um but I've did a bit of research to where you can exclude a certain folder from showing up in your your Git diff. Um which actually makes it more viable to commit those um those files. >> All right. >> Well, you need to teach me that trick, David. >> I'll send you the Slack thread, and then we can share it with the rest of the group here. >> Right on. All right, Luke. Uh I think you'll be our last question. >> All right. >> Uh-oh, it's um yeah, feedback. >> [laughter] >> Or you can If you're having audio problems, you can um put it in the chat. >> Well It Can Can Can me now? >> Yeah, but it's echoing. Oh, shoot. >> [laughter] >> If you've got a quick question, feel free to type it in the chat. Um are there any other quick questions? And while we wait for Luke to type type type. Uh let's see, we've got one question in the chat. Um how different is the spec kit in your solution from the Anthropic's official Superpowers? Because I have used it to create very custom modules. >> Um so Strikethrough trying to to see the point of contact with Superpowers. Uh Superpowers I don't have a big enough subscription to Anthropic to run Superpowers. So, I'm going to just give an answer to this question with what I've seen and what I've learned about Superpowers, but I might be wrong. Okay? But I'll go for it. So, uh might be wrong. Uh I think that Superpowers will write an impromptu invisible workflow script that is specific for the task that you're giving it. So, in that sense, it is similar to Strikethrough because it gives you a workflow. It creates a plan. It decomposes it into tasks, and then there there is an orchestrator agent that will uh spawn all these sub agents that will take uh the each one of these tasks and complete them, report to the orchestrator, etc. Um I'd say that Strike Through is way cheaper. And also uh it is LLM independent. Like it you don't need to use uh Claude. Also it is slower. Or it can potentially be slower because and this is a good and a bad thing. And that is because Strike Through is designed for a human to be in the loop. And for you to review things. While the uh the workflow solution the Auto Code, which I think that it's a workflow with math reasoning. will just go through it very confidently. In the end like it will depend on your loop. Again, like if you have great validation, you may not need and great confidence on the intelligence of the uh of the of the model, you may not need to review the plan. Or maybe you are not even equipped to review the plan because you're just byte coding it and you you don't know. Right? Been there, right? I've done experiments like that. So they're different. Um I think that they do have the luxury of only supporting their thing, so they can be more specialized on their solution in writing a very efficient workflow. But I haven't tried it a lot, so. >> Right on. Uh Shrik, do you have a quick follow-up or Do you have any >> Yeah, I I quick follow-up on the like expected and the superpower. So I So I use both. So for me the difference is that with the spec kit you are like working with a team. Like we are doing the proper agile process and the spec [clears throat] kit asks more questions. It helps you to get more clarity compared to the superpower. And superpower is more like you're individual working with brainstorming and thinking and most of the thinking is taken care by the cloud. While in case of a spec kit it ask force you to answer clarify ask you to clarify the things. So this >> And and and again um I haven't used spec kit for a while so my answer was with strike through which is my own take uh because I think it does things differently in a way that I like it better. >> Cool. Um let's see. Luke last question. Did you fix your audio? >> [laughter] >> I I hope so. Can you hear me? >> Yes, go ahead. >> Oh, all right. Miguel, long time listener, big fan. >> [laughter] >> Uh We're all We're all coders. We're all deeply technical. We all know like what a pull request is for example. And I I've noticed that that all us coder technical types are are using AI tools not just for our work but also for like all the other things we do. We do for like planning trips and you know barbecue. So I'm I'm curious and you know you can shut this down if it's if it's too wide open but but but I'm curious how you see sort of tools like you're working on help be available to to people that like don't know what a pull request is that that aren't you know writing code that that are you know, writing business plans or marketing you know, that kind of stuff. So, yeah, um I I've been asked some of those questions before and I know that people a lot about that are not coding at all use strikethrough for some of their complex tasks because there's nothing specific about coding for strikethrough. There is for KenKip. Uh like KenKip is focused on coding. Um however, you still need to navigate those pesky markdown files and understand that a folder with a plan and a bunch of tasks and how they relate, what dependencies are, etc. That's why I started building the strikethrough UI that I demoed today. But right now is read-only because writing a custom UI for driving an LLM may be a dead end as I learned the hard way, right? So, um almost like at least strikethrough is is useful for analyzing documents and helping brainstorm ideas. Anything that is a complex task that could benefit from breaking up into smaller uh into a smaller tasks can be subject to it. I'd say that it will be more beneficial if it's a process like writing a PR is a process, taking a some requirements and delivering code. So if you have a process even if it's not code, you can have better integration because then you can customize those hooks and say, "Well, when you're planning take into account that you need to I don't know take the legal documents from our Google Drive and cross-check against those, right? So that's something that you can put in the hooks that will make your process better. If those are one of things, hm, can be useful, but it will not shine as it could if it's a process. >> All right. Well, I think we need Thank you for your question, Luke, and thank you everyone for your great questions and the discussion. Mateo, thank you so much. This was a wonderful walk-through. It's just so great to see all of the things that you've been working on and how this and how people can use this to enhance their Drupal development or any kind of development that they're doing. It's really great. It's one thing to do to try to parse through read me's and GitHub projects. It's just really great to have the the video walk-through. So we really appreciate your time. Thank you everyone for your participation. Please fill out the feedback form. I was late to post that, but please fill that out and we'll see you in the Drupal Slack. The pound AI-learners channel is our is our Slack channel. Please join us there for announcements and news. You can ask questions. You can talk about AI Drupal AI best practices. You can talk about today's session. And so we'll see you there. Our schedule is on Luma. So the Drupal AI Learners Club has a home on Luma. That's where you can find all of our upcoming events. So thank you everyone for your participation and this will be posted on the Drupal Association's YouTube channel in the Drupal AI Learners Club playlist. Thank you everyone. Have a great day. >> Thank you, Amber. Thank you, everyone. >> Thank you.