SimplaDocs
Free resource

Build your first Superhuman Go agent, step by step

A Go agent is a written prompt, a trigger and a set of tool permissions. This walkthrough builds three from scratch, and the PDF gives you the templates.

For People new to Superhuman Go who want to build their first agent

What you’ll be able to do

  • Know the parts of a Go agent (description, prompt, triggers, tool access) and what each one controls.
  • Write a prompt with a role, a reference section for IDs and numbered steps, so every run follows the same order and a changed ID takes one edit.
  • Pick a trigger (Gmail label, Slack mention or weekday schedule), set the permissions, then test and debug by running the agent and telling it to try again.

What’s inside

  • A reference section example that keeps a Coda doc ID and table ID in one place at the top of the prompt
  • A full prompt template with Goal, Context, Steps, Rules and Output format, written for a Monday client status email agent
  • A variables block that tells an agent to read a doc and table at the start of every run, and to stop and report if it can't
  • Rule lines you can copy, like "Never send. Drafts only." and "No due date? Write TBD."
  • The Always allow setting for write tools, so background triggers run without waiting on you
  • Pack SDK pointers (pack.addSkill, addMCPServer) and checklists for when you want to go past the editor

Before you download

Do I need to write code?
No. All three agents in the video are built in the Go agent editor with a written prompt, a trigger and tool permissions. The SDK pointers in the PDF are for later.
What do the agents in the video do?
They log tasks to a Coda tracker: one from Gmail labels, one from Slack mentions and one from yesterday's Granola meetings. The same build works for any tracker, since you swap the IDs in the reference section.
Why did my agent find tasks but not save them?
Check the tool permissions. Write operations default to always ask, which blocks a background trigger. In the video, the meeting agent found action items but couldn't save them until Superhuman Docs was set to always allow.
Can I use Fathom or Otter instead of Granola?
Yes. The video uses Granola for the meeting recorder, and the editor lists connectors for other recording services. If yours is missing, a connector can be built.
Full transcript

This video is going to give you a deep dive, technically, in how to build Superhuman Go agents. So if you're looking for a quick, flashy video that's just going to show you different agents, this isn't it. I'm going to show you step by step how to build quality agents. So let's get going.

First, let's start off with some context, because we're not just going to build any random agent. What I'm going to be doing today is hopefully applicable to a lot of you. This is a task list. Everyone here has a task list. This is actually a task list from my most popular video. It has over 10,000 views and over a thousand different downloads as a template. I built this task list in Coda probably four years ago, before AI, before agents were even a thing. So while it's a really cool task list, and you can see that video in the description below, I want agents to start adding tasks to this list for me. If you have your own task list, you could follow these same principles by having the agent add tasks to wherever you keep them instead of here. But let's go with that.

The first two things that we're going to build an agent for are adding tasks from Slack and adding tasks from email. Oftentimes, of course, you're getting tasks from communications, and those are two of the most common forms of communication. So let's do that now.

In Superhuman Go, to create a new agent I press this little plus button up here, and I get shown this screen. First, let's just give it a title. I'm going to call this my Master Task Agent. I'm going to give it a description. The descriptions are important. They're more than just there for you. What they actually do is, if you're just using the regular Go right here and you say "please add a task," it doesn't know yet which agent to use out of your many, many agents. So having a description helps route the generic chat experience to the correct agent. Let's ensure that we write a good quality description. I'm just going to go here to edit it and say: add tasks to my master tracker anytime I ask you to add tasks. We'll add tasks from Slack and email. That should be enough for a generic chat experience to route to this agent during appropriate times.

Next up is the prompt. Let's do just a role and a goal quickly. Let's say: you are an executive assistant helping me add tasks from my Slack and email to my master task tracker. You always think about short and descriptive names. So now it's got a role and a goal.

Let's give it a reference section. References are important, mainly for you. If you're going to put in IDs or URLs or things like that and you need to change them later on, instead of scattering them through a large prompt, it would be easier to put in a reference section at the top where you can come and change them over and over. We are going to be entering tasks into a Coda doc, so I'm going to give it a Coda doc ID and Coda table ID, and say: the document below and table below are IDs to Superhuman Docs (Coda) documents and tables. Always and only add tasks in this document and in this table.

All right, so let's give it a doc ID. I'm going to go back to Coda and grab my doc ID here: copy doc ID. I'm going to go back to that other thread and push it there. Next we need the table ID so it's not guessing, and I'm going to grab that with these three dots: copy table ID, and put it back here. There we go.

Now let's give it some steps. It's always good to give your agent sequential steps. It's not just randomly trying to accomplish its goal, but it knows how to accomplish its goal: step one, two.

All right, so we just finished the full prompt. I'm going to quickly run through what we did. We have a role and a goal, just giving it high-level information when it starts its run about what it's trying to do and accomplish. Next I gave it a reference section that really just helps me put IDs into this larger prompt. If I ever need to come back and change them, instead of scattering them throughout, I have a single reference section. Lastly, I'm giving it four different steps. Giving your AI agents sequential, step-by-step prompts really helps them execute. They aren't just trying to randomly accomplish a goal, but they know which steps to follow in which order.

First, I've asked it to determine the trigger source: whether this was run from an email or a Slack. Then determine a task name. The email or Slack message that triggered this may be lengthy, and we want a name for it. You'll see here, because I want a small name, and then I'm going to want a note section, so I'm asking it to come up with a smaller name. Then determine a due date. It may or may not have a due date, but it's going to try to anticipate and guess one. And lastly, we're going to input that into the Coda document and table referenced above. I also asked it to add the full communication to the note section, so it knows exactly where to put that, and it's going to increase consistency and reliability.

So that is our description and our instructions, or our prompt. The two most important things. We've got two more things to really figure out, and then we're going to test this live. Those two things are your triggers and then your tools and access. It's important that we put both of these correctly. We can't put more than one trigger, so we're going to do that now.

First, we're going to do "when a label is added to an email." I don't want every single email I have to become a task. I'm going to manually, as I'm working through my email, choose ones that need to become a task. This is synced with my Gmail, so these are my real Gmail labels. I'm going to choose this random Blue Ridge label. You might want to create your own label called "email task" or something similar, but I'm going to do that for now.

Then let's add one more. Let's do an agent mention. What we're going to do in Slack is go to a thread, and then we're going to ask the agent in that thread to create a task from that thread. So we're going to say: if the agent is mentioned, and we're going to say General Biz. This is already connected to my Slack workspace. I think this is a bug, the fact that this is here right now: as of taping, Superhuman Go agents cannot be added to private channels. I know that's on their roadmap, but right now this is only showing public channels in my Slack workspace. Notice when I do agent mention, I can also determine who can run it: is it just me, or is it anyone that is in these channels? Right now I'm going to keep it just me.

All right, I've got two different triggers. Lastly, I've got to think about tools and access. Web access: absolutely not, it doesn't need to access the web. Superhuman Docs: this is going to allow us to read and write into the actual task document, so yes, we need that. And then of course, because I added the label added trigger, it's automatically turning on Gmail, Outlook, and Calendar for me.

This is actually not ready to go yet. You'll see this warning down here. It says that your background trigger runs this agent automatically, but some tools are set to ask before running. Right now, always ask is for write operations. If you keep that on, you're going to have to manually approve, and that kind of defeats the whole purpose of an agent. So I would choose always allow for these, and then it should be able to run all by itself. Let's save that. That's the Master Task Agent, and now I should be able to, from Slack or email, add tasks to my document.

Let's go see it happen in real time. I'm going to add some Blue Ridge information to my different emails. Let's go Blue Ridge, and let's go here to Blue Ridge. I added those labels inside Superhuman Docs. Let's go back to Go and see those working. You'll see here two of them got triggered because of two emails. I don't need to see these happening, but if I ever want visibility into whether my agents are running, or if there are issues with it, you can come back to your tasks and see what happened there. There we go. We can see that it added this task due on October 2nd with a high priority and a source. Let's go ahead and see those actually added. There they are. We've got a high priority, we've got due dates, and if I close in here, you'll see that it has all of the information I need from the email as well. Amazing. Worked perfectly.

Next up, let's go see it work in Slack. I'm going to go to Slack, and here I am inside of here. I'm just going to go randomly to this message, and inside of here I'm going to say: Master Task Agent, add this as a task. See how that works.

Oh, there we go. Okay, you'll see immediately some eyes were added to it. That's, at least early on in these beta stages, the indication that it's actually working for us. So now we just have to cross our eyes and hope. If you don't see a response coming soon, you should expect a response. There it is. That's the response coming back. Great. If you didn't, of course, you could go back to Superhuman Go and see it run, and normally if it hits an error or hits something wrong, it'll show you right here. So let's go back and see if that task added as well. There it is: review Jordan's coverage. Amazing, awesome. Okay, so those were added.

But let's try to build one more agent that's a bit different, that works on its own without me having to prompt it. One other place where your tasks probably typically come from, obviously email, Slack, and then meetings. What I want to do right now is have an agent trigger that looks through my meeting notes from the day previous and adds any relevant tasks there. So let's go and make one more, and let's call this the Post Meeting Task Bot. We're going to say: on a schedule, reviews all recorded meetings yesterday and adds tasks to a defined task tracker. Let's go to here: role and goal.

All right, so now we've got a larger prompt. You'll notice that I have a role and a goal again. I put a bar, meaning a bar that must be met for an action item to be applicable. I don't want it to spam and fill my task list with a bunch of things. I can also tweak this bar as time goes on, if I'm noticing that it's adding too few or too many action items. I've got my reference section, and then I've got some steps. First, I ask it to determine today's date. Sometimes AIs don't work really well with dates, so it needs to actually calculate the specific date. I'm asking it to search Granola for any meetings that took place yesterday. Granola is currently our meeting recorder. If you use Fathom or Otter or any other recording service, of course you would use that instead. And I said if today's Monday, look at any meetings that took place on Friday. We're going to search through all meeting transcripts to find relevant action items and then add them to my task document above.

Let's get a trigger. This is going to be a different trigger, of course. We don't want it to be triggered off an email or something. We want it to be going on a schedule. I want it to go on weekdays at, let's do, before I wake up, at 5 a.m. That's going to be fantastic. Next, I'm going to add Granola. There it is. I'm going to connect that and add that there. There are a lot of other connectors in here for other meeting recording services. If yours doesn't exist, they can always be built. All right, now that that's connected, I'm going to go in here and say read: always allow. That's all I needed to do. And there we go.

Last thing about testing these: you could just press this "run this agent" button. Obviously I don't want to wait until 5 a.m. to record this video, so I'm going to go ahead and press run this agent to see what happens. It instantly just starts a message to this agent that says "I want to run this agent," but you'll see we can see it's thinking here. It's querying all my Granola meetings and more. So let's watch it run.

Well, none for me. All right, let's try something else. Look at last Thursday, maybe I had more. Look at today instead.

All right, you might not have to do that. I just want to be able to show you in the video itself, so we're going to see if it does today instead. Let's wait again.

All right, there we go. It found some, but darn it, I didn't enable Superhuman Docs. That was a silly mistake of mine. So let's go ahead and enable that. Let's go to always allow, and let's go back and save that, and we're going to go back here. Let's say: try to add again. This is a good step as you're configuring and debugging your agents. You can just come back, change things, and then just tell it: try again, try again, try again, and it should be able to try those pieces. So let's go back to the Do More list, and we should see, there they are. Awesome. I'm getting a lot of different pieces, like "send Vicky the discovery questionnaire" with a bunch of notes.

All right, so those are building agents. There are so many tips and tricks to building quality agents, from prompting to authorization to more. If you want a ton more resources, go to the description. We've got a huge PDF for you full of tips, tricks, and resources. All right, thanks.