Product · Personas

Assemble a team of specialist AI agents.

One generic chatbot will plateau. A roster of focused personas - each with its own instructions, skills, tool bindings and guardrails - keeps shipping. Hire the team your codebase actually needs.

Ada
Designer

Ships TypeScript features end-to-end.

TSNext.jsTDD
Hopper
Checker

Runs tests. Returns a pass/fail verdict.

TestsVerdict
Knuth
Reviewer

Security and design pattern feedback.

SecurityDesign
Lovelace
Investigator

Reads the codebase. Reports findings.

RepoTrace
Turing
Optimizer

Refactors. Tightens. Cleans up.

RefactorLint
Dijkstra
Planner

Breaks scope into shippable issues.

ScopeIssues
The problem

One agent. Every job. Bad fit.

No role, no rigour

A generic chatbot has no opinion. It will refactor when you asked for review, and chat when you asked for code. Specialisation is what makes the output reliable.

Skills don’t compose

Stuff every standard, framework rule and tool into one mega-prompt and quality collapses. Personas split that knowledge by role - and only inject what the step needs.

Tools are unbounded

Without persona-level guardrails, every agent gets every tool. That’s how a doc writer accidentally runs production migrations. Bind tools, scope memory, ship safely.

Persona spotlight

Meet the roster.

Click through five canonical personas. Same anatomy - different instincts, different skills, different tools. Each one is a typed, versioned, reusable identity.

Ada

Designer

Primary coding agent. Ada accepts a prompt, opens a fresh sandbox, writes the code, runs the dev loop and produces a diff. She prefers explicit types, functional patterns and small commits.

Tools
Sandbox shellFile editsPackage managerGit
Guardrails

Read/write scope: project repo only. No production secrets. Auto-stops on lint or type errors.

Skill matrix
  • TypeScript96
  • React + Next.js92
  • Test-driven dev88
  • Sandbox tooling86
  • Conventional commits78
  • Diff hygiene82
How it works

Anatomy of a persona.

A persona is more than a system prompt. It’s a typed bundle of identity, skills, tools, memory, output contract and guardrails - checked into your project and versioned like code.

Knuth
Reviewer · v4
SecPattAPINamingPerfOWASP
read-onlyready
System prompt - role, tone, non-negotiables
Skill set - composable domain knowledge
Tool bindings - sandbox, shell, git, search
Memory - learnings from past runs
Output format - diff, verdict or report
Guardrails - scope, rate, refusal rules
Built-in or custom

Hire from the roster. Or design your own.

CodeCourier ships with the canonical persona types. Need something off-script - a migration assistant, a changelog writer, a domain-specific reviewer? Define a custom persona in minutes.

Built-in personas
Designer
Checker
Reviewer
Investigator
Optimizer
Planner
Custom persona, in four steps
  1. 1
    Define the role and tone
  2. 2
    Pick a model + thinking effort
  3. 3
    Assign skills + tool bindings
  4. Set guardrails and ship
Composable skills

Personas compose from a skill library.

Each skill is a tight bundle of domain knowledge - patterns, gotchas, idioms. Drop a skill onto a persona and the agent suddenly knows your stack the way a senior would.

TypeScript expert

Strict types, generics, exhaustive switches. Treats `any` as a code smell.

Go expert

Idiomatic Go: error returns, table-driven tests, context-aware APIs.

Python expert

Modern Python: type hints, dataclasses, async-first IO, ruff-clean code.

SQL surgeon

Indexes, query plans, window functions. Sniffs out N+1 from the schema.

Code reviewer

Security, maintainability and clarity heuristics. Cites lines, not vibes.

API designer

REST + GraphQL conventions, pagination, error contracts and versioning.

Docs writer

Plain-English explanations, ADRs, READMEs that actually onboard people.

DevOps

Containers, CI gates, observability - pipelines that survive a real outage.

Programmable

Define personas from your editor.

Anything the UI can configure, the SDK can. Personas are typed TypeScript - review them in pull requests, diff them across versions, ship them with your code.

personas/knuth.ts
// Senior TypeScript reviewer - read-only, no merges
import { definePersona } from "@codecourier/sdk";

export const knuth = definePersona({
  name:           "Knuth",
  role:           "reviewer",
  model:          "claude-opus-4-7",
  thinkingEffort: "high",
  skills:         ["security", "design-patterns", "api-design"],
  tools:          ["diff", "symbol-search", "repo:read"],
  guardrails: {
    writes:     false,
    network:    "deny",
    maxRuntime: "15m",
  },
  instructions: "Cite file:line for every finding. Refuse to merge.",
});

await knuth.publish(); // → v4 active

A senior TypeScript reviewer persona - model, skills, tools and guardrails - defined in a dozen lines.

Wired into pipelines

Bind personas to workflow steps.

A workflow is a sequence of steps. Each step is powered by exactly one persona. Swap personas without rewriting the workflow - and swap workflows without rewriting the personas. This is how a team of specialists actually composes.

Every run records which persona executed which step, on which sandbox, with which version. Per-persona analytics - success rate, cost, average iterations, quality score - follow automatically.

Workflow step
Review diff
Persona slot
bind →
v4
Knuth
Reviewer
securitypatternsAPI
Real-world stacks

Three rosters worth stealing.

Frontend Team

When the UI sprint moves fast and the component library cannot regress.

AdaKnuthTuring

Backend Team

When you’re refactoring a service and every diff has to survive a senior code review.

LovelaceAdaHopperKnuth

DevX Team

When platform work mixes scaffolding, docs and tool ergonomics across many repos.

DijkstraAdaDocs WriterTuring

We stopped sharing one assistant across the team and started designing specialists. Three weeks later our review backlog was zero and the senior engineers had time to actually design the system again.

Priya Ramanathan
Director of Engineering · Halcyon Labs
FAQ

What engineering leads ask.

Can I evolve a persona over time?
Yes. Every saved edit creates a new version with a parent pointer, so you can iterate on instructions and roll back instantly if a change makes things worse. Older versions are preserved for audit; only the latest version participates in new runs unless you promote one.
Are personas just system prompts?
No. A persona is a typed bundle: CLI tool, model, thinking effort, instructions, assigned skills, injected commands and scripts, bound context, learnings toggle and guardrails. The system prompt is one ingredient - the contract around it is what makes the agent dependable.
How are tools sandboxed?
Each persona declares which tools it may use, and every run executes inside an isolated E2B sandbox. The sandbox is torn down at the end of the run, secrets are injected only when needed, and audit trails record which step touched which tool - no implicit access.
Can personas share memory?
Each persona has its own learnings store, but workflows can pass structured output from one step to the next as context. Shared learnings across personas can be enabled at the project level when you explicitly want cross-pollination - never by default.
What’s the difference between a persona and a workflow?
A persona is a who - one specialised agent. A workflow is a how - a typed sequence of steps. You bind one persona to one workflow step. Same persona can appear in many workflows; same workflow can be re-staffed by swapping personas.
Ready to assemble

Hire your first persona in under five minutes.

Free for 14 days · no credit card

Hire your first AI engineer.
Ship by lunchtime.

5 minutes to onboard. First PR within an hour. Cancel anytime.