Using Amp

How I use Amp

Lewis Metcalf

Last updated

Pinboard

Notes, dispatches, and things Lewis made in orbs.

Where do you talk to Amp most: terminal, editor, web, phone, Slack?

I use Amp in the macOS app 90% of the time. The other 10% of the time is from using Amp on my phone, which is perhaps the most shocking development.

Favorite mode, and when do you switch?

I tend to switch between High and Ultra, only offloading small tasks to Medium for very well defined, small tasks. I’m most happy with High, which is a tremendous workhorse and is increasingly reliable.

However, my Ultra use has crept up recently and I’ve been very impressed. More and more, I have to nudge myself to get out of the agent’s way, provide less direction in the specifics, and stay more at the data flows, architecture, “will this blow up in prod” type level. When I micromanage, the results have been increasingly worse. It’s a humbling experience.

Do you still develop locally? If so, when?

I don’t. Not since we introduced orbs with portals.

What’s a workflow with Orbs that you absolutely love?

I like to have orbs produce video demos that the work is correct across tons of edge cases, and so that I can quickly validate everything’s working ok before I commit to something time consuming like a deeper review.

I also like to have orbs create videos or dashboards which help explain the main patterns or architectural changes, or to ELI5 a bug. I often tell them to use animations and narrators with the videos — this can sometimes be slop, but the models are getting better at this, and sometimes it’s a great way to get up to speed on an issue quickly. Sometimes, it’s also just plain hilarious.

For stuff where I don’t know what I want yet, I like to create dashboards or storybooks with prompts like “give me 10 variants of buttons” and such, and then “I like (2), give me 10 more like that!”

Outside of development, I have some orbs which collect logs or metrics or usage data and provide weekly dashboards on how my new features are being adopted by users. I have another which checks that our documentation is still accurate. These long running orbs are nice, because they’re so easy to tweak — the documentation one, for example, was suggesting a lot of bloat and slop at the beginning, but over time I could prompt it to just keep the docs lean with instruction like:

We don't need to be exhaustive or we'll bloat everything, just make sure we don't lie! Tell the truth, and nothing but the truth, but we don't need the whole truth.

Pointing Amp at our logs to debug issues is also incredibly powerful, perhaps more than development even!

How do you review changes?

I review changes in a specific order — from quickest to longest time commitment for me (which happens to be roughly the inverse for the agent). I’m often working on multiple things at once, and reviewing is still a time and, more importantly, focus-heavy endeavor. I have the agent do a crazy amount of manual testing and artifact producing early on, so that when I’m reviewing myself I know that it’s worth reviewing.

I first review artifacts that the agent provides which demonstrate it works correctly, such as videos and screenshots. Then I try it myself to make sure, although more and more I simply trust the agent and the proof.

Then I ask the agent to help me understand what it did. I often ask for architecture diagrams, and pseudocode. I often say stuff like “you lost me, ELI5 that for me”.

I do review code, but not all of it. I use our intelligent-ordering feature extensively, which helps filter out non-production or boilerplate code, and puts the important changes up front. I pay attention only to that, and am gradually learning to let go of the rest.

I also review code differently — I check that the size of the change matches up with what I have in my head. If it doesn’t, something’s different to what I thought and I dig in. I check that the core logic of the change is expressed in a way I understand, but I’m more forgiving than I was pre-AI. I still need to understand it, if only to be effective working with the system, but I leave the specifics up to the model.

Which skills, plugins, or MCPs do you use? Anything you built for yourself?

Not really, my set-up is very vanilla. The standard Amp kit of agent-browser etc. are very good, but I think the models are eating all of that. We don’t need to put much on top any more.

I think codebase specific tooling is still important.

How do you use Puck?

I think of it as a personal secretary — so it handles my busy work for me. Mainly looking for old work, other people’s threads, and other such digging that I’d like to hand off. There’s a lot of messages to my Puck like:

  • “Find me that thread I archived last week on X”
  • “I know Nicolay touched Y recently, find me any threads or commits around that”
  • “Is anybody working on Z? Who would you say is the owner of X?”

It’s like having a very depressed, other-worldly, odd looking personal assistant.

What’s a prompt or phrase you keep reusing?

Think of as many edge cases for this as you can think of, manually test them all, produce a video as proof that it works as expected, and show me a dashboard in the portal which explains the results
Ship it, then watch the deploy, then validate manually that this works in production. If it does, send this email to the user…
ELI5 that bad boy for me please

What do you still do by hand, and why?

I write messages for humans by hand because I think it’s polite (including this — yes, I’m not giving up the emdash). I sometimes use excalidraw for whiteboard type thinking out of a problem, but perhaps if there was a good AI driven whiteboarding tool, I’d use that… I sometimes rename my threads manually, because I think that naming things is part of mentally organizing.