Prebuilt Agents

4 min read
32 sections
Edit this page

40 ready-to-use agent personas across 8 categories. Load by name, customize, or bring your own.

Quick start

python
from shipit_agent import Agent
from shipit_agent.agents import AgentRegistry

registry = AgentRegistry.default()
agent_def = registry.get("security-auditor")

agent = Agent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    max_iterations=agent_def.max_iterations,
)
result = agent.run("Audit my authentication module")

Running a prebuilt agent on your project

The most common use case: load a prebuilt agent and point it at your project directory. The agent gets file tools (read, grep, glob, bash) and can analyze your entire codebase.

Security audit on a project

python
from shipit_agent import Agent
from shipit_agent.agents import AgentRegistry

registry = AgentRegistry.default()
agent_def = registry.get("security-auditor")

# Point the agent at your project directory
agent = Agent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    project_root="/path/to/my-project",     # agent works inside this directory
    max_iterations=agent_def.max_iterations,
)

result = agent.run("Perform a full security audit of this project. Check for OWASP Top 10 vulnerabilities.")
print(result.output)

Code review on a project

python
agent_def = registry.get("code-reviewer")

agent = Agent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    project_root="/path/to/my-project",
)

result = agent.run("Review the recent changes in src/auth/ for security and code quality issues")
print(result.output)

Architecture review

python
agent_def = registry.get("architect")

agent = Agent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    project_root="/path/to/my-project",
)

result = agent.run("Review the project architecture. Identify scalability bottlenecks and suggest improvements.")
print(result.output)

DevOps review

python
agent_def = registry.get("docker-specialist")

agent = Agent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    project_root="/path/to/my-project",
)

result = agent.run("Review the Dockerfiles and docker-compose.yml for optimization and security best practices")
print(result.output)

Streaming a project audit

python
agent_def = registry.get("security-auditor")

agent = Agent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    project_root="/path/to/my-project",
)

# Watch the agent work in real-time
for event in agent.stream("Scan the entire project for hardcoded secrets and API keys"):
    if event.type == "tool_called":
        tool = event.payload.get("tool_name", "")
        args = str(event.payload.get("arguments", ""))[:100]
        print(f"  🔧 {tool}: {args}")
    elif event.type == "tool_completed":
        print(f"  ✅ {event.payload.get('tool_name', '')} done")
    elif event.type == "run_completed":
        print(f"\n=== Audit Complete ===")
        print(event.payload.get("output", "")[:1000])

Using with plain Agent (no built-in tools)

If you only want the prompt persona without built-in tools, use a plain Agent:

python
# Plain Agent — no file tools, just the LLM + prompt
agent = Agent(
    llm=llm,
    prompt=agent_def.system_prompt(),
    max_iterations=agent_def.max_iterations,
)

result = agent.run("Explain the OWASP Top 10 vulnerabilities and how to prevent each one")

Browse agents

python
registry = AgentRegistry.default()

# All categories
print(registry.categories())
# ['Architecture', 'Code Quality', 'Content', 'DevOps', 'Planning', 'Research', 'Security', 'Testing']

# List by category
for agent_def in registry.list_by_category("Security"):
    print(f"{agent_def.id}: {agent_def.role}")

Search agents

python
results = registry.search("code review python")
for r in results[:5]:
    print(f"{r.id}: {r.role}")

Agent definition anatomy

Each AgentDefinition contains:

FieldTypeDescription
idstrUnique slug (e.g. "security-auditor")
namestrDisplay name
rolestrWhat the agent does
goalstrPrimary objective
backstorystrPersonality/experience context
modelstrPreferred model ("opus", "sonnet", "haiku", "")
toolslist[str]Tool names to attach
skillslist[str]Skill IDs to attach
max_iterationsintDefault iteration limit
promptstrFull system prompt
categorystrGrouping (Security, DevOps, etc.)
tagslist[str]Search tags
python
agent_def = registry.get("architect")
print(agent_def.system_prompt())
# # Role
# You are a Software Architect specializing in scalable, maintainable system design.
# 
# # Goal
# Design robust, scalable architectures...
# 
# # Instructions
# When asked to design or review architecture:
# 1. UNDERSTAND THE CONTEXT...

Built-in agent catalog

Architecture (5 agents)

AgentRole
architectSoftware architecture specialist for system design and scalability
system-designerDistributed systems and microservices design
database-architectSchema design, indexing, query optimization
api-designerREST/GraphQL API contracts and versioning
frontend-architectComponent architecture, state management, performance

Code Quality (6 agents)

AgentRole
code-reviewerThorough code review with actionable feedback
refactor-cleanerIdentify and fix code smells, reduce complexity
python-reviewerPython-specific best practices and PEP compliance
typescript-reviewerTypeScript patterns and type safety
go-reviewerGo idioms and concurrency patterns
rust-reviewerRust ownership, lifetimes, unsafe review

Security (5 agents)

AgentRole
security-auditorOWASP Top 10 audit, dependency CVEs, secrets scan
pentesterOffensive security testing, exploit chains
threat-modelerSTRIDE/DREAD threat modeling
security-fixerFix vulnerabilities with safe patches
privacy-reviewerGDPR/CCPA compliance, PII detection

DevOps (5 agents)

AgentRole
devops-engineerCI/CD, infrastructure, deployment
docker-specialistDockerfile optimization, compose, security
k8s-operatorKubernetes manifests, helm charts, troubleshooting
ci-cd-builderGitHub Actions, GitLab CI, Jenkins pipelines
cloud-architectAWS/GCP/Azure infrastructure design

Testing (5 agents)

AgentRole
qa-testerTest strategy, edge cases, regression testing
tdd-guideTest-driven development workflow
e2e-runnerEnd-to-end test automation
performance-testerLoad testing, benchmarking, profiling
api-testerAPI contract testing, fuzzing

Planning (4 agents)

AgentRole
plannerImplementation plans, task breakdown, dependencies
requirements-analystGather and refine requirements
project-managerScope, timeline, risk assessment
technical-writerDocumentation, ADRs, RFCs

Research (5 agents)

AgentRole
researcherDeep web research, source synthesis
competitor-analystCompetitive analysis, market positioning
data-analystData exploration, statistical analysis
doc-lookupFind and summarize documentation
trend-researcherTechnology trends, emerging patterns

Content (5 agents)

AgentRole
blog-writerTechnical blog posts and tutorials
changelog-generatorGenerate changelogs from git history
readme-writerCreate comprehensive README files
api-doc-writerAPI documentation, OpenAPI specs
tutorial-creatorStep-by-step coding tutorials

Custom agent definitions

python
from shipit_agent.agents import AgentDefinition

custom = AgentDefinition(
    id="my-compliance-checker",
    name="Compliance Checker",
    role="Regulatory compliance specialist",
    goal="Check code for GDPR, SOX, and PCI-DSS compliance",
    backstory="Former compliance officer at a Fortune 500 bank.",
    tools=["read_file", "grep_files", "glob_files"],
    prompt="Review code for regulatory compliance...",
    category="Compliance",
    tags=["compliance", "gdpr", "pci"],
)

Merging registries

python
# Project-local agents override built-in ones with the same ID
builtin = AgentRegistry.default()
project = AgentRegistry([custom])
merged = builtin.merge(project)

.shipit/agents/ directory

Drop JSON agent files into your project's .shipit/agents/ directory:

bash
.shipit/
  agents/
    my-custom-agent.json
    researcher.json          # overrides built-in "researcher"
python
local = AgentRegistry.from_directory(".shipit/agents/")
full = AgentRegistry.default().merge(local)

Using with ShipCrew

python
from shipit_agent.deep.ship_crew import ShipAgent

# Load from registry and wrap as ShipAgent
agent = ShipAgent.from_registry("security-auditor", llm=llm)

Using with DeepAgent

python
from shipit_agent.deep import DeepAgent

agent_def = registry.get("researcher")
deep = DeepAgent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    verify=True,
    reflect=True,
)
result = deep.run("Research AI agent security best practices")

Streaming

python
agent_def = registry.get("planner")
agent = Agent.with_builtins(llm=llm, prompt=agent_def.system_prompt())

for event in agent.stream("Plan a microservices migration"):
    print(f"[{event.type}] {event.message}")

Using with Agent (without builtins)

python
from shipit_agent import Agent

agent_def = registry.get("code-reviewer")

# Plain Agent — no built-in tools, just the system prompt
agent = Agent(
    llm=llm,
    prompt=agent_def.system_prompt(),
    max_iterations=agent_def.max_iterations,
)

result = agent.run("Review this function for bugs")
print(result.output)

Streaming with prebuilt agents

python
agent_def = registry.get("security-auditor")
agent = Agent(llm=llm, prompt=agent_def.system_prompt())

for event in agent.stream("Check this code for SQL injection"):
    if event.type == "run_started":
        print(f"[START] Agent running...")
    elif event.type == "tool_called":
        print(f"[TOOL]  {event.payload.get('tool_name', 'llm')}")
    elif event.type == "tool_completed":
        print(f"[DONE]  {event.payload.get('tool_name', 'llm')}")
    elif event.type == "run_completed":
        print(f"[END]   Output: {event.payload.get('output', '')[:200]}")

Using with DeepAgent (advanced)

python
from shipit_agent.deep import DeepAgent

agent_def = registry.get("researcher")

# DeepAgent with verification and reflection
deep = DeepAgent.with_builtins(
    llm=llm,
    prompt=agent_def.system_prompt(),
    verify=True,
    reflect=True,
    max_iterations=12,
)

# Run with full deep agent capabilities
result = deep.run("Research the latest trends in AI agent security")
print(result.output)

# Stream deep agent events
for event in deep.stream("Research quantum computing advances"):
    print(f"[{event.type}] {event.message[:100]}")

DeepAgent with prebuilt sub-agents

python
from shipit_agent import Agent
from shipit_agent.deep import DeepAgent

# Load prebuilt agents as sub-agents for delegation
researcher_def = registry.get("researcher")
writer_def = registry.get("blog-writer")
reviewer_def = registry.get("code-reviewer")

researcher_agent = Agent(llm=llm, prompt=researcher_def.system_prompt())
writer_agent = Agent(llm=llm, prompt=writer_def.system_prompt())
reviewer_agent = Agent(llm=llm, prompt=reviewer_def.system_prompt())

deep = DeepAgent.with_builtins(
    llm=llm,
    agents=[researcher_agent, writer_agent, reviewer_agent],
)

result = deep.run("Research AI trends, write a blog post, and review it")

Serialization

python
# To JSON (camelCase keys)
d = agent_def.to_dict()

# From JSON (accepts camelCase or snake_case)
restored = AgentDefinition.from_dict(d)

API reference

MethodDescription
AgentRegistry.default()Load built-in 40 agents
AgentRegistry.load(path)Load from JSON array file
AgentRegistry.from_directory(path)Load from directory of .json files
registry.get(id)Get agent by ID (or None)
registry.search(query)Fuzzy search by name/role/tags
registry.list_by_category(cat)Filter by category (case-insensitive)
registry.list_all()All agents sorted by ID
registry.categories()Sorted unique category list
registry.merge(other)Merge; other overrides same-ID agents
AgentDefinition.from_dict(d)Deserialize from dict
agent_def.to_dict()Serialize to dict (camelCase)
agent_def.system_prompt()Build full system prompt