Drupal AI Learners Club — How to Enhance Drupal Development with AI with Mateu Aguiló Bosch (e0ipso)
Watch on YouTubeVideo 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.