TOP 1% Agentic Engineering: Claude Code Verifiers — Transcript
Full transcript
- 0:00Okay, now you may have seen this graph
- 0:01recently of the number of changes that
- 0:03Enthropic are merging in every single
- 0:05day and it's become increasingly clear
- 0:06that almost nobody at Anthropic or
- 0:09OpenAI are reading every single line of
- 0:11code anymore. So, it kind of begs a
- 0:13question, what exactly are the engineers
- 0:15doing all day? Now, they've kind of been
- 0:16hinting at this in different blog posts,
- 0:18podcast episodes, and tweets, but I
- 0:20think this interview is one of the
- 0:21clearest examples that I found, and it
- 0:23shows that what they care about the most
- 0:24is the plan and the verification instead
- 0:27of reading every single line of code.
- 0:29Now, in this video, I want to talk about
- 0:30what exactly that looks like, but I will
- 0:32be going to many of these ideas in much
- 0:34more detail inside of my upcoming cohort
- 0:36that will be linked down below. So,
- 0:37inside of this podcast episode, they
- 0:39talked about how they rewrote the
- 0:40messages API for Claude from Python to
- 0:43Rust. And apparently, when they started,
- 0:45nobody on the team was even a Rust
- 0:47developer. Now, Claude wrote the code,
- 0:49but before they had Claude write any of
- 0:50it, they basically stopped and asked
- 0:52themselves the question, okay, what
- 0:54exactly is a verifier here? How will we
- 0:56know that the new version is correct?
- 0:58and the answer was shadow traffic. So
- 1:00the new version in Rust and the old API
- 1:03in Python would get the exact same real
- 1:05traffic. And if the new version is
- 1:07correct, then it should give the exact
- 1:09same answers as the old one. And I
- 1:11imagine what they did is that anytime
- 1:12the Rust version gave a different
- 1:14answer, that diff went back into Claude.
- 1:17Claude worked out what was wrong, fixed
- 1:19it, and then they ran the traffic again.
- 1:20And once the two matched, they slowly
- 1:22moved the real traffic over. Now, here's
- 1:24how they put it in the podcast episode.
- 1:26The two things that mattered the most
- 1:27were the plan to do the thing and then
- 1:29the verification of the thing because
- 1:31actual implementation here was Claude
- 1:33writing all the code. So Claude wrote
- 1:35the code whilst humans used cloud to
- 1:38write the plan, design the system and
- 1:40make sure that the verifier was correct.
- 1:42And basically they did this because of
- 1:43the compute constraint. So they managed
- 1:45to drop the CPU usage on the API by 40
- 1:48to 50%. Now, this is the same mental
- 1:50shift that I've been teaching many
- 1:51engineers at pretty big companies over
- 1:53the last few months when doing
- 1:54consulting and training workshops
- 1:56whereby instead of people thinking, how
- 1:58do I get my agents to write better
- 1:59tests? They think, okay, what is a
- 2:01verify for this when I'm about to do a
- 2:03big refactor or implement a big feature,
- 2:05how will I know that's correct? What
- 2:08verification do I need here? So, the
- 2:09agent can hill climb towards the right
- 2:11answer. And I think that this is
- 2:12important because nowadays when you get
- 2:13agents to write tests, especially unit
- 2:16and integration tests, they're basically
- 2:17restating what the code already does. So
- 2:19all the tests can be green, but when you
- 2:21open up the page, the button still does
- 2:23nothing. And that's where a lot of
- 2:24engineers are kind of facing a losing
- 2:26battle where they keep adding more rules
- 2:28to their cloud MD files saying like
- 2:29always write proper tests, never weaken
- 2:31an assertion, hoping that the agent will
- 2:33suddenly write better tests. But if we
- 2:35look at what the engineers at Entropic
- 2:37are doing, they're not talking about
- 2:38getting the agents to write better
- 2:39tests. They're talking about creating
- 2:41verification systems, tooling, and
- 2:43environments. So, I kind of want to zoom
- 2:44out here and make sure that we're all on
- 2:45the same page by kind of defining what a
- 2:48verifier is. So, it's basically a check
- 2:50that your agent can't argue against. So,
- 2:53every good verifier has three parts. It
- 2:55has a surface, and this is the same
- 2:57surface that a real user or another
- 2:59system would be meeting the change that
- 3:01your coding agent is making. So, this
- 3:02could be a web page, a API, AMCP server,
- 3:05a CLI, mobile app or desktop
- 3:07application. And if you're making, I
- 3:09don't know, some kind of voice agent,
- 3:10then it could even be over the phone as
- 3:12well. Now, next up, we have what I'm
- 3:14calling the answer key. And that is what
- 3:16writes looks like for your system. Now,
- 3:18the most important thing here is that
- 3:19the agent didn't write it. You kind of
- 3:21define it up front with the help of your
- 3:23agent. And finally, we have the
- 3:25comparison itself. So, does what
- 3:27happened match the answer key or not?
- 3:29And that's kind of the big difference
- 3:30from getting your agents to write tests.
- 3:32So, when your agent writes a test, it
- 3:33writes the answer key, too. So, of
- 3:35course, it will end up passing. But you
- 3:37got to kind of define the answer key up
- 3:38front. Now, how good a verifier is comes
- 3:40down to its answer key. And I find that
- 3:42the best answer key is an old system
- 3:44that already exists and does the same
- 3:46job. So in the case of Entropic's
- 3:48earlier example of the messages API, the
- 3:50answer key was the old Python system.
- 3:53Another answer key that we could have is
- 3:54a snapshot that I will go into later. It
- 3:56could also be a independent test suite
- 3:59that doesn't depend on the code itself.
- 4:00So this could be something like
- 4:01playright end to end tests. And at the
- 4:03bottom, we have a spec that could also
- 4:05be an answer key. Now, in my own specs,
- 4:08my answer key looks something kind of
- 4:09like a table at the very bottom of the
- 4:11spec that defines what a user should be
- 4:13able to do and the expected result. So,
- 4:15for example, if I had a really simple
- 4:17note-taking application and I made a
- 4:19spec to allow for tagging to be added,
- 4:21then essentially I would have a table
- 4:23kind of like a user should be able to
- 4:25add a tag to a note and then the
- 4:26expected result would be a tag shows on
- 4:29the note at once. Another user action
- 4:31would be a user can filter notes by tag
- 4:34and the expected result would be only
- 4:36notes with that tag show or for example
- 4:38another user action would be deleting a
- 4:40tag completely and then the expected
- 4:42result would be that the tag goes from
- 4:44every note and from the tag list. So I
- 4:46could basically define like 10 or 15 of
- 4:48these depending on how complicated of a
- 4:50tagging system that I want and this
- 4:52would form my answer key. Now, of
- 4:53course, this one is slightly weaker
- 4:55because we are depending on an agent to
- 4:56make the final call. And ideally, you
- 4:58should have another agent deciding
- 5:00whether the expected result has been
- 5:02met. And a pretty nice open-source
- 5:04framework that I like for this is called
- 5:06E2E. So, you can kind of see that you
- 5:08can define end to end tests kind of like
- 5:10this. So, for example, a member would
- 5:12upgrade to pro and then we would open up
- 5:14the billing page. We would then have an
- 5:16agent using browser use basically act
- 5:19and then upgrade the workspace to pro
- 5:21and then we have another agent with a
- 5:23different model maybe and this could be
- 5:24a fast cheap system one model kind of
- 5:26like Jeb deciding okay the invoice
- 5:28preview shows a prorated amount and then
- 5:30we can pass in some more determinism.
- 5:32So, I really like this framework because
- 5:33we can combine deterministic and agentic
- 5:36testing together. And you can see from
- 5:38these two lines over here, they agree
- 5:40with the idea whereby the agent that is
- 5:42deciding whether the expected result has
- 5:43been met is different from the agent
- 5:45that is actually taking out the actions.
- 5:47Now, this is pretty cool because they
- 5:48have a bunch of stuff like caching to
- 5:50make sure you're only paying for tokens
- 5:51when a test fails. And for some of my
- 5:53projects, I basically deleted every
- 5:55single test. So, you can see in this PR,
- 5:57I deleted 110,000 lines. In this other
- 6:00PR, I delayed 295,000 lines and then
- 6:02replace them only with E2E tests
- 6:04instead. And I generally found that with
- 6:06this, I'm catching even more bugs per
- 6:08PR. But essentially, what is happening
- 6:10with me is that anytime the spec has
- 6:12been implemented, any user behavior that
- 6:14was defined at the bottom of the spec
- 6:15gets turned into an E2 test instead to
- 6:18basically make sure that user behavior
- 6:20is conserved going forwards. And this is
- 6:22basically acting as my verifier whereby
- 6:24my answer key is taken from the spec and
- 6:27then defined in the code kind of like
- 6:29this. And finally, the worst situation
- 6:31is basically having no answer key at all
- 6:33because the agent will basically decide
- 6:34for itself what exactly verify looks
- 6:37like. And that could be basically having
- 6:38green unit tests but still having broken
- 6:41buttons. Now, I'll also be going into
- 6:43this in much more detail inside my
- 6:44upcoming cohort in the office hours and
- 6:46the lessons that will be linked down
- 6:48below. It will be starting in just over
- 6:49a week. If you're interested and if you
- 6:50sign up for the next few days, then
- 6:52you'll benefit from the early bird
- 6:54discount. So now, as we've seen so far,
- 6:56some of our verifiers can be completely
- 6:58deterministic and depend solely on
- 7:00scripts, kind of like the API response
- 7:02diff that we talked about at the very
- 7:03beginning, and some of them can depend
- 7:05on your agents judgment, such as
- 7:07implementing a spec over here. And
- 7:09finally, some of them can be a bit of
- 7:10both. So a big split that I personally
- 7:12have is that is this a refactor in which
- 7:14case we can use a old system or a
- 7:17snapshot as a verifier or is this a new
- 7:19feature in which case we may want to use
- 7:21a aentic end to end test. So nowadays
- 7:23just like many of the entropic and open
- 7:25AAI engineers building and maintaining
- 7:27good verifiers is where most of my day
- 7:29goes these days and it basically comes
- 7:31down to free jobs. So we have building
- 7:33good verifiers, maintaining them so they
- 7:35don't go stale and then and then also
- 7:37auditing them to make sure that they're
- 7:39actually catching problems. Now I did
- 7:41package all of this up into some free
- 7:43skills that I have for cloud coding
- 7:44codeex that will be linked down below.
- 7:46So I have create prove it then I have
- 7:48maintain prove it and then finally audit
- 7:50prove it. So in the case of create prove
- 7:52it it's making another skill which will
- 7:54be a prove it skill. So the order in
- 7:56which it works is basically it maps all
- 7:58the surfaces. It then checks whether you
- 8:00can actually reach the surfaces. It then
- 8:02finds any things that can be used as
- 8:04answer keys and brainstorms with you.
- 8:06And then it generates a skill and then
- 8:08after you've actually gone ahead with
- 8:09implementation, you can run it for real.
- 8:11So I'll go for a really quick example.
- 8:13So let's say that I want to add a MCP
- 8:15server to my sandboxing service,
- 8:16Impell.AI. By the way, this is one of
- 8:18the cheapest sandboxing service
- 8:20providers that you will find online. So
- 8:21if you are spending hundreds or even
- 8:23thousands of dollars in sandboxes every
- 8:25single month, you may want to consider
- 8:27moving to this. Essentially, if I want
- 8:28to add a MCP server, I can start it by
- 8:31installing the skill. So, I'm going to
- 8:33quickly add the marketplace and then
- 8:34copy over the over command to basically
- 8:36go ahead and install the skill. Install
- 8:38it for all users. And then I can do
- 8:41/create pro it. And this will be my
- 8:44skill that is always used for verifying
- 8:46and proving any changes to the MCP
- 8:49server that ends up happening. So, I can
- 8:51say, okay, I want to make a brand new
- 8:53MCP server for this repo. Can you
- 8:55basically help me brainstorm like how
- 8:57exactly we're going to like verify this,
- 8:58prove it once it's completed and then
- 9:00basically press enter. So what you're
- 9:02basically doing is that you're
- 9:03triggering the skill and then you're
- 9:04making a prove it skill for any of these
- 9:07surfaces in your application. But you
- 9:09can also use it for any big refactors as
- 9:11well. So if I said something like /crate
- 9:13prove it and then said hey so I
- 9:15basically want to migrate the backend
- 9:17API from go to rust instead and then it
- 9:20will basically go ahead and find ways in
- 9:22which I can prove that it's done. Now
- 9:23the MCP response came back and it
- 9:25basically said the surface would be the
- 9:27MCP server. So this is planned. Our
- 9:30existing surfaces are the public API,
- 9:32the dashboard UI, the stored state and
- 9:35also the logs as well. And then it
- 9:36basically gives me a bunch of ways that
- 9:38we can go ahead and prove it. And it
- 9:40shows me the method that we could use,
- 9:42the answer key, and then also the cost
- 9:44as well. And it's like, okay, let's
- 9:45combine a bunch of these together. So
- 9:47we'll combine 1 2 3 and six together.
- 9:49And now I can turn this into a skill
- 9:51that I can basically use once the MCP
- 9:53server has been implemented to verify
- 9:55that everything works. If something
- 9:56failed for whatever reason, then that
- 9:58would go back to the builder. The
- 10:00builder agent would make changes and
- 10:01then the verifier would try to reverify
- 10:03the flow. And now afterwards, I would
- 10:05have a skill which is kind of like prove
- 10:08MCP and anytime a change happens to MCP7
- 10:11in the future, then it will
- 10:12automatically use a skill to basically
- 10:14verify that the changes have been made
- 10:16correctly. Likewise for the migration
- 10:18from go to Rust if I were to do that it
- 10:20basically shows me a bunch of methods
- 10:21that I could take what I would catch
- 10:23what the setup cost would be as well. So
- 10:25for example for the read only shadow a
- 10:27shadow API that has a pretty high setup
- 10:30cost because we're basically running
- 10:31continuously but it also has the best
- 10:34performance in the sense it would be
- 10:36using traffic shapes that no one thought
- 10:38to actually go ahead and script. So in
- 10:40the case of a big refactor, the first
- 10:42thing you want to figure out is what is
- 10:44your answer key? And in the case of the
- 10:45infropic example, the answer key was the
- 10:48old API. So you basically keep your old
- 10:50system running and then copy any
- 10:52requests over to a new system and then
- 10:54compare every response and then pass any
- 10:57diffs or any things that disagree back
- 10:59over to Claude. It can find the recalls,
- 11:01fix it, and then you continue until you
- 11:03hit zero differences. And they kind of
- 11:05kind of brainstormed this by using the
- 11:07/create private skill that I made. Now
- 11:08bun did something very similar when they
- 11:10rewrote their runtime from a zig to rust
- 11:12but the answer key was basically their
- 11:14existing test suite because if you go to
- 11:16the article that they showed it in then
- 11:18scrolling down I can basically see over
- 11:20here that they said fortunately bun's
- 11:22own test suite is written in typescript
- 11:24which means that it doesn't depend on
- 11:26the runtime's programming language. So
- 11:28in that case after they got claw to use
- 11:30a whole bunch of sub aents in a dynamic
- 11:32workflow to basically do the migration
- 11:34they hill climbed to 100% of the test
- 11:37passing again with zero test being
- 11:39skipped or deleted. Now another
- 11:40interesting verify that we have is bite
- 11:43for bite equality. So, there's been an
- 11:45interesting trend of people using agents
- 11:47to do matching decompilations of old
- 11:49games, which basically means that you
- 11:51have the agent rebuild the source code
- 11:53of the game from the binary and then you
- 11:55check it to make sure it compiles back
- 11:57into exact same machine code as the
- 11:59original game. So, for example, over
- 12:01here, someone had agents running for a
- 12:03few hundred hours to basically do a
- 12:05matching decompilation of Crimson Land
- 12:08that they then posted on GitHub over
- 12:09here. And I can actually go over to link
- 12:11inside of my browser and then play it if
- 12:12I wanted to. But they're basically using
- 12:14the same idea of having verifiers as
- 12:16well. So in this case, the answer key is
- 12:18the original game. You compile the
- 12:20agents code with the same odd compiler
- 12:22and the comparison is a bytes. So do
- 12:24they match exactly or not? And another
- 12:26good example of bite for byite equality
- 12:28is this one by Mitchell Hashimoto who
- 12:30made Ghosty the terminal. And he
- 12:32basically wanted Ghosty to show images
- 12:34the same way that Kitty does. So Kitty,
- 12:36which is a terminal that I like using,
- 12:38has a way of showing images inside of a
- 12:40terminal and many programs now use it.
- 12:42and he basically wanted the same
- 12:44programs to work in ghosty as well. So
- 12:45in his case the answer key was basically
- 12:47kitty. Now another related example that
- 12:49you could consider is pixel diffs where
- 12:51basically you can have a screenshot as
- 12:53an answer key. So if I take this website
- 12:55which is fingerprint.com I really like
- 12:57the design of this website. I can
- 12:59basically give it over to an agent and
- 13:00then say use a builder verifier loop to
- 13:03copy the design of the website using a
- 13:05pixel diff as your verifier. Now I can
- 13:08kind of see it working over here. So it
- 13:09has original on the left hand side, my
- 13:11version on the right hand side, and then
- 13:12it shows me the pixel diff. And if I
- 13:14would scroll down, then it basically
- 13:16says that it went from having 19% diff
- 13:19to 1.8% to 0.54% to 0.52% and then it
- 13:23stopped. And then it says if I remove
- 13:25any logos, then it would actually be
- 13:270.07%.
- 13:28Now, of course, this is more of a easy
- 13:30to understand example, but some people
- 13:32have been doing the same thing when it
- 13:33comes to making any font files smaller
- 13:36on their website to make their website
- 13:37load faster. They basically use a pixel
- 13:40diff as their verifier. Now everything
- 13:41that I mentioned so far depends on there
- 13:43being some kind of answer key. But often
- 13:45when it comes to a brand new feature,
- 13:47there is no old system that you can
- 13:49depend on. So in this case, the answer
- 13:50key becomes your own specification. So
- 13:53when you're writing a spec with the help
- 13:54of your agent, you kind of want to
- 13:56define what is expected behavior for a
- 13:58user. So going back to early example, we
- 14:00want to make sure like okay, if we're
- 14:02adding tags to notes, the tags actually
- 14:04appear. And the main thing here is you
- 14:06want to make sure that all the
- 14:07behaviors, the potential paths that your
- 14:09user could take for your application are
- 14:11defined during the spec writing phase.
- 14:13And as I said with the E2 library, after
- 14:15the spec has been implemented, you can
- 14:17then turn this into end to end test.
- 14:19Now, to show a real example for a real
- 14:21application here, I'm going to go ahead
- 14:22and open up Slack. And despite most my
- 14:24videos being inside of cloud code in the
- 14:26terminal, like 97% of my coding happens
- 14:29in cloud sandboxes via Slack instead.
- 14:32Because as I do talk about inside my
- 14:33cohorts as well, I think that Slack is a
- 14:36best surface in which you should be
- 14:37building with your agents, especially
- 14:38with the brand new code channels
- 14:40feature. So if I go over then I can
- 14:42basically see all the code that had been
- 14:44written by the agent. And then I can see
- 14:46video recordings of everything that I
- 14:48went ahead and verified. So if I go to
- 14:50this recording over here, I can
- 14:51basically see that's like verifying and
- 14:53testing the Mac OS application to make
- 14:55sure that this brand new like a mic
- 14:57picker functionality that I added is
- 14:59actually working. And I can see that in
- 15:01this particular case, it basically
- 15:02verified a whole bunch of user flows.
- 15:04And then it said at the very bottom that
- 15:06on a real Windows machine, it passed
- 15:08four of the five flows. And then I think
- 15:10it went back to the builder to basically
- 15:12fix what it was broken. And it kind of
- 15:13like went back and forth with this like
- 15:15builder verifier loop to make sure that
- 15:17everything had been implemented
- 15:18correctly and is working as I defined
- 15:20earlier on inside of my answer key. And
- 15:22yeah, with a setup kind of like this, I
- 15:24can deliver really reliable results. Now
- 15:26the second job that we have is
- 15:27maintaining our pro it skills because
- 15:29they can become stale over time. Now to
- 15:32go through a real example if I go to one
- 15:34of my previous cohorts that I ran I have
- 15:36like my office hours page over here
- 15:38where the recording of the office hours
- 15:40appears and the problem that some people
- 15:41are facing was that video playback
- 15:43sometimes broke on Safari. So I made a
- 15:46change to the video player on the
- 15:47website and then it worked fine on
- 15:49Chrome but it was broken on Safari and
- 15:51sometimes even Firefox. And the reason
- 15:53why it went unnoticed was basically
- 15:55because my proet skill was clicking
- 15:57around the website and testing the
- 15:59changes in playright chromium, but
- 16:02because Safari and Chrome handle video
- 16:04playback a little bit differently, the
- 16:06change would have not actually been
- 16:07verified on Safari. So when a user
- 16:09reported to me like, hey, Safari
- 16:11playback doesn't work that well. I
- 16:13basically told my agent, can you spin up
- 16:14Playrite WebKit, which is based on
- 16:16Safari, and also use a real Mac that it
- 16:18has access to to basically try and
- 16:21identify the problem, fix those changes.
- 16:23And after that was fixed, I wanted to
- 16:25make sure that future changes don't
- 16:27break Safari again. And that fix was
- 16:29upstream inside of the private skill. So
- 16:32I basically told the agent anything that
- 16:33touches a video playback inside of the
- 16:35private skill should also be checked
- 16:37with playright webkit and also on a real
- 16:39safari on a MacBook that it has access
- 16:42to. So essentially zooming out here the
- 16:44meta pattern is that even though your
- 16:46pro skills and your verification skills
- 16:48will catch many problems before they hit
- 16:50production. There will be some problems
- 16:52that users still come across and report
- 16:54and start thinking okay how could the
- 16:55agent have been prompted better? How
- 16:57could I have written a better spec? It's
- 16:59more of a case of how can you improve
- 17:00your private skill upstream so your
- 17:02agent can catch these changes before it
- 17:04ever reaches production. And that's
- 17:06basically what the maintain private
- 17:07skill allows you to do. So after a
- 17:09couple runs, you basically run it and
- 17:10then it goes back to your previous runs.
- 17:12It would also look through any user
- 17:14feedback and any bugs that have been
- 17:15reported and try to identify
- 17:17improvements that can be made to the
- 17:19private skill so that when a bug does
- 17:21slip through the cracks and gets
- 17:22reported by user or comes up in Sentry,
- 17:25then a similar class of bugs and
- 17:27problems can be fixed before they ever
- 17:29reach users in the future. Now, the
- 17:31third job is basically auditing your pro
- 17:33skills on a regular basis to make sure
- 17:34they're actually catching problems. And
- 17:36I find that one of the best ways of
- 17:38doing this is mutation testing, which is
- 17:40where you break your app on purpose to
- 17:42basically see if your checks actually
- 17:43notice. So that is what the audit prove
- 17:45it skill does. So it basically takes a
- 17:47change that you made recently, plants a
- 17:49realistic bug inside the code like
- 17:52making the counter off by one for
- 17:53example and then a fresh agent that is
- 17:56basically told to verify the flow again
- 17:58such as going back to a previous example
- 18:00of adding tags to notes. It would see if
- 18:02the fresh agent is able to identify that
- 18:04problem without telling it what broke.
- 18:06So if you're using a aentic verifier
- 18:08instead of a deterministic verifier, if
- 18:11it catches a bug, then that's really
- 18:12great. If it doesn't, then it means that
- 18:14your skill would need some kind of
- 18:15fixing. So, I think going back to where
- 18:17we started earlier in the video, so many
- 18:19lines of code are being written and so
- 18:21many changes are being merged that no
- 18:22one is really reading every line of code
- 18:24anymore. And depending on the industry
- 18:26you're in, that can be fine as long as
- 18:28something else is checking it. So,
- 18:29ideally, that should be some kind of
- 18:31verifier. And you want to kind of ask
- 18:33your agent before you make a big change,
- 18:35what exactly is a verifier here? How
- 18:38would we know that this is correct once
- 18:39it has been implemented? But
- 18:40essentially, as we saw from the podcast
- 18:42episode, a lot of the best engineers are
- 18:44focusing on building verification
- 18:46tooling around their agents. So with the
- 18:48limited attention that they do have
- 18:50every single day, they can basically
- 18:51make sure that their agent has gone
- 18:52through enough verification itself
- 18:54before it finally shows a change back to
- 18:56them. And often they're not even reading
- 18:58the code of the change. They're watching
- 19:00videos and looking at graphics and HTML
- 19:02files. So yeah, all three on my previous
- 19:04skills will be down below if you do want
- 19:06to use them. And I will be making
- 19:07updates to them over time. And if you do
- 19:09want to hear more ideas from me on a
- 19:10regular basis, then you may also want to
- 19:12join my newsletter that will be linked
- 19:14down below,
About this transcript
This page contains the full transcript of TOP 1% Agentic Engineering: Claude Code Verifiers by Ray Amjad, generated from the public captions YouTube serves with the video. The transcript has 4,363 words across 605 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.