I built Wainwright so I could hire my own Grok Bots like roles. It is a skills pack for Grok Bot and Cursor that turns making a new bot into a hire with a checklist: one job, a list of the work it never touches, a voice and a wake rule. The skills tell your designer bot to lint every draft against 14 checks, and to count a bot as hired only after the file Grok Bot stores for it matches the draft.
Grok Bot template · Cursor local plugin · Markdown skills, nothing runs on install

Built for people who run several Grok Bots or Cursor agents as a fleet.
I run a desk of bots: reply digests, wiki sessions, theme ships, writing passes. Each one is supposed to be a role, like an intern with one job.
Here is how that goes wrong. You ask for a mail sorter and you get a helpful assistant that also watches Slack and can help with scheduling. That bot keeps doing the work next to its job. It wakes when it shouldn't, and it burns your attention every time it does.
In real life you can fire a bad hire. In Grok Bot, you can delete one from the sidebar. The designer bot, the one that made the new bot with Grok Bot's CreateAgent tool, has no delete tool for agents, as of September 2026. So a sloppy persona stays hired until a human cleans it up by hand.
So the thing I had to fix was unsupervised hiring: bots getting made faster than anyone could supervise them. Wainwright is the checklist every hire goes through first, from the first question to the first shift.
The mail sorter, written as a hire
The passing example from the repo's lint skill. Four fields, one job.
Your designer bot runs all six in order. The skills tell it to rewrite the draft after a failed lint, and to hold everything after a failed verify. You answer one message of questions at the start. With the Manager, you also pick which bots get hired from one menu.

Only what can't be settled later: the job, the name, the voice, when it wakes, and who gets its output. One message. Then it waits for your answers.
You answerFour fields, in this order: one job, anti-jobs, voice, wake. The anti-jobs name the work next door and who owns it. A coding bot adds one line that points at a coding standard.
Designer botThe designer checks its own draft against fourteen rules. On any fail, the skill tells it to hold CreateAgent until a rewrite passes all fourteen.
Designer botThe skill says to pass CreateAgent the linted text, byte for byte. Only a human can undo this step, by deleting the bot from the sidebar.
Designer botIt reads the new bot's profile.json and compares the stored name and description to what it sent. It trusts that file over the tool's own success message.
Designer botSendToAgent hands a standing bot its shift. The routine counts as set up only after the new bot replies and confirms it.
New hire confirmsThe first time you open a new hire, it restates its one job and its anti-jobs, then asks you three questions at most so you can cut the role down or tighten it. When you hesitate, it points you at the narrower option. Easy to narrow, hard to sprawl. This pass shipped after the test runs further down, so neither record covers it yet.
A multi-job "helpful assistant" dies of scope creep. The lint is there so it dies on the draft, before your designer bot hires it. The designer runs these checks on its own draft, from the skill's instructions, so they are as good as the model reading them.

The verdict above is the worked example in the lint skill. The draft greets you as a helpful AI assistant, watches four tools, triages bugs, writes fixes and offers to help with scheduling.
| # | Check | Fails when |
|---|---|---|
| 1 | Field order | The four fields are missing, merged or out of order. |
| 2 | One job | The first sentence holds two jobs you would staff separately. |
| 3 | Job first | A greeting or a backstory comes before the job. |
| 4 | Concrete anti-jobs | The anti-jobs are vague, or a bot that reads other people's messages never says it ignores instructions written inside them. |
| 5 | Specific voice | The voice is missing, runs past about six words, or just says "helpful". |
| 6 | Wake stated | No wake mode, a routine with no cadence, or no rule for staying quiet. |
| 7 | Short name | The name runs past three words or restates the job. |
| 8 | No tool list | It lists tools beyond the one the job needs. |
| 9 | No model essay | It explains models or its own reasoning style. |
| 10 | No extras | It offers help with anything past the one job. |
| 11 | Concrete how | A non-coding bot never says where the work happens. |
| 12 | Bar pointer | A coding bot skips its one-line pointer, or pastes a whole playbook in its place. |
| 13 | No secrets | Keys, passwords, tokens or personal contact details show up. |
| 14 | No em dashes | The description contains one. |
Every fact your bot wants to keep goes in one of three places, and a few things never get packed at all. A fact only goes in if it will still be true next time and would change what your bot does.

Who you are
The rare facts nearly every turn needs: the name you go by, your time zone, your working language. It stays small on purpose.
Dated rules
Rules and decisions someone made, with the date in front, true until someone changes them. Style preferences land here too.
Short-lived
Context for the current stretch of work that will be stale within days.
Never packed
Passwords, keys and tokens. Pasted contact lists and other raw personal data. Chat trivia. The skill tells the bot to decline a secret and point you at your secret manager.
Each write also picks a scope: this bot, the user, or the whole project. When you restate a correction, the skill has the bot replace the old entry, so memory keeps one copy.
I published the test record from September 15, 2026 in the repo, failures included. There were two kinds of run that day, and I keep them apart. I wrote the rubric the simulated runs were judged by. The live run used an earlier build of the pack, installed on Windows.
It is a trail log of named bots and steps, and it carries no score.
A scripted runtime, with Claude Sonnet playing both the designer and the judge. Before any fixes, 0 of 4 scenarios passed. The designers:
The memory test filed two style preferences under profile, where they belonged in log.
After the fixes, 3 of 3 targeted re-tests passed. In the full runs after that, the non-coding bot passed. The coding bot failed its first run, partly for presenting its own lint self-check like a tool result, and its second run passed only after I narrowed one judging clause I had written too broadly. Both verdicts are published. The whole set is 10 runs with Claude Sonnet on both sides. The full record is in the repo.
You run several Grok Bots or Cursor agents, and you have stopped trusting half your sidebar. This is the seatbelt.
If you use one chat that answers questions, or you want one AI that does everything, the checklist only slows you down. Skip it.
Markdown instructions, two JSON manifests, and two scripts that run only when you run them. Nothing runs on install, and the skills make no network calls. Two safety rules sit in the text: pick a change before any bot, skill or routine gets made from a report, and keep secrets out of memory. A model follows them, so they hold as well as that model does. The security policy is public.
One job per bot. Checked before it ships.
Import the Wainwright Manager template. It talks in hiring language, confirms the skills are installed, shows you one pick menu, creates only what you chose, and has each new bot focus itself the first time you open it. To install the skills in Grok Bot, a designer bot stores each SKILL.md with update_state, the Grok Bot tool that writes memory and skills, or you write the skill files into shared workflows.
Import Wainwright Manager ▸Cursor gets the skills and the twelve personas as a local plugin. Clone it into your local plugins folder:
Then turn on Allow Local Plugin Imports in Cursor's settings, run Developer: Reload Window, and open Customize to check the skills and agents loaded. To start, say:
README · Test record · Security policy · Candor, where the twelve personas come from · All side projects
Wainwright is an experimental v0.1.0, with no tagged release yet, and an independent, MIT-licensed project by Ryan Lenk. It also ships twelve personas as skills and agents, carried over from Candor under new names. Not affiliated with, endorsed by, or sponsored by xAI or Cursor. The pixel art is a parody nod to 1980s trail games and is not affiliated with any of them.