Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 83 additions & 64 deletions .vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,15 @@ import { defineConfig } from 'vitepress';
export default defineConfig({
title: 'The OpenClaw Handbook',
description: 'How we work with AI agents at 2x.',
srcExclude: ['README.md'],
sitemap: {
hostname: 'https://handbook.2x.agency',
},
themeConfig: {
nav: [
{ text: 'Home', link: '/' },
{ text: 'All Chapters', link: '/chapters' },
{ text: 'How Donna Works', link: '/donna/' },
{
text: 'For Agents',
items: [
Expand All @@ -17,70 +22,84 @@ export default defineConfig({
],
},
],
sidebar: [
{
text: 'Getting Started',
items: [
{ text: 'What is this', link: '/00-what-is-this' },
{ text: 'First conversation', link: '/01-first-conversation' },
{ text: 'Core files', link: '/02-core-files' },
{ text: 'How memory works', link: '/03-how-memory-works' },
{ text: 'Your first week', link: '/04-your-first-week' },
],
},
{
text: 'Skills and Tools',
items: [
{ text: 'What skills are', link: '/05-what-are-skills' },
{ text: 'Installing skills safely', link: '/06-installing-skills-safely' },
{ text: 'Creating skills', link: '/07-creating-skills' },
{ text: 'Essential skills', link: '/08-essential-skills' },
],
},
{
text: 'How Agents Work',
items: [
{ text: 'Sessions and context', link: '/09-sessions-and-context' },
{ text: 'Heartbeats vs crons', link: '/10-heartbeats-vs-crons' },
{ text: 'Standard heartbeats', link: '/11-standard-heartbeats' },
{ text: 'Sub-agents and Ralph loops', link: '/12-sub-agents-ralph-loops' },
{ text: 'Memory architecture', link: '/13-memory-architecture' },
{ text: 'Brain/areas and QMD', link: '/14-brain-areas-qmd' },
],
},
{
text: 'Multi-Agent',
items: [
{ text: 'Telegram routing', link: '/15-telegram-routing' },
{ text: 'Inter-agent communication', link: '/16-inter-agent-communication' },
{ text: 'Keeping agents in sync', link: '/17-keeping-agents-in-sync' },
],
},
{
text: 'Security',
items: [
{ text: 'Threat model', link: '/18-threat-model' },
{ text: 'Safe practices', link: '/19-safe-practices' },
{ text: 'Audit and monitoring', link: '/20-audit-and-monitoring' },
],
},
{
text: 'Model Selection',
items: [
{ text: 'Choosing a model', link: '/21-choosing-a-model' },
{ text: 'Coding agents', link: '/22-coding-agents' },
],
},
{
text: 'For Agents',
items: [
{ text: 'Agent onboarding', link: '/23-agent-onboarding' },
{ text: 'Agent memory protocol', link: '/24-agent-memory-protocol' },
{ text: 'Agent self-improvement', link: '/25-agent-self-improvement' },
{ text: 'Coding strategy', link: '/26-coding-strategy' },
],
},
],
sidebar: {
'/donna/': [
{
text: 'How Donna Works',
items: [
{ text: 'Meet Donna', link: '/donna/' },
{ text: 'How we work', link: '/donna/working-with-donna' },
{ text: 'A day at work', link: '/donna/workflows' },
{ text: 'Guardrails', link: '/donna/guardrails' },
{ text: 'FAQ', link: '/donna/faq' },
],
},
],
'/': [
{
text: 'Getting Started',
items: [
{ text: 'What is this', link: '/00-what-is-this' },
{ text: 'First conversation', link: '/01-first-conversation' },
{ text: 'Core files', link: '/02-core-files' },
{ text: 'How memory works', link: '/03-how-memory-works' },
{ text: 'Your first week', link: '/04-your-first-week' },
],
},
{
text: 'Skills and Tools',
items: [
{ text: 'What skills are', link: '/05-what-are-skills' },
{ text: 'Installing skills safely', link: '/06-installing-skills-safely' },
{ text: 'Creating skills', link: '/07-creating-skills' },
{ text: 'Essential skills', link: '/08-essential-skills' },
],
},
{
text: 'How Agents Work',
items: [
{ text: 'Sessions and context', link: '/09-sessions-and-context' },
{ text: 'Heartbeats vs crons', link: '/10-heartbeats-vs-crons' },
{ text: 'Standard heartbeats', link: '/11-standard-heartbeats' },
{ text: 'Sub-agents and Ralph loops', link: '/12-sub-agents-ralph-loops' },
{ text: 'Memory architecture', link: '/13-memory-architecture' },
{ text: 'Brain/areas and QMD', link: '/14-brain-areas-qmd' },
],
},
{
text: 'Multi-Agent',
items: [
{ text: 'Telegram routing', link: '/15-telegram-routing' },
{ text: 'Inter-agent communication', link: '/16-inter-agent-communication' },
{ text: 'Keeping agents in sync', link: '/17-keeping-agents-in-sync' },
],
},
{
text: 'Security',
items: [
{ text: 'Threat model', link: '/18-threat-model' },
{ text: 'Safe practices', link: '/19-safe-practices' },
{ text: 'Audit and monitoring', link: '/20-audit-and-monitoring' },
],
},
{
text: 'Model Selection',
items: [
{ text: 'Choosing a model', link: '/21-choosing-a-model' },
{ text: 'Coding agents', link: '/22-coding-agents' },
],
},
{
text: 'For Agents',
items: [
{ text: 'Agent onboarding', link: '/23-agent-onboarding' },
{ text: 'Agent memory protocol', link: '/24-agent-memory-protocol' },
{ text: 'Agent self-improvement', link: '/25-agent-self-improvement' },
{ text: 'Coding strategy', link: '/26-coding-strategy' },
],
},
],
},
socialLinks: [
{ icon: 'github', link: 'https://github.com/2xgrowthagency/handbook' },
],
Expand Down
136 changes: 136 additions & 0 deletions .vitepress/theme/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -244,3 +244,139 @@
-webkit-text-fill-color: var(--vp-c-text-1) !important;
background-clip: unset !important;
}

/**
* How Donna Works
*/
.donna-page {
--donna-accent: #7c3aed;
--donna-accent-soft: #f5f3ff;
--donna-border: #ddd6fe;
}

.dark .donna-page {
--donna-accent: #c4b5fd;
--donna-accent-soft: #2e2442;
--donna-border: #5b477f;
}

.donna-page .vp-doc h1 {
position: relative;
padding-left: 1rem !important;
}

.donna-page .vp-doc h1::before {
position: absolute;
inset: 0 auto 0 0;
width: 4px;
border-radius: 4px;
background: var(--donna-accent);
content: '';
}

.donna-page .vp-doc a {
color: var(--donna-accent);
text-decoration-color: var(--donna-border);
}

.donna-page .vp-doc a:hover {
text-decoration-color: var(--donna-accent);
}

.donna-kicker,
.donna-verified {
font-family: 'Inter', system-ui, sans-serif;
}

.donna-kicker {
margin: 0 0 0.5rem !important;
color: var(--donna-accent);
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
}

.donna-verified {
margin: -1rem 0 2rem !important;
color: var(--vp-c-text-2);
font-size: 0.82rem;
}

.donna-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
margin: 1.5rem 0;
}

.donna-card {
min-width: 0;
padding: 1.1rem 1.2rem;
border: 1px solid var(--donna-border);
border-radius: 12px;
background: var(--donna-accent-soft);
}

.donna-card h3 {
margin: 0 0 0.4rem;
color: var(--vp-c-text-1);
}

.donna-card p {
margin: 0;
color: var(--vp-c-text-2);
font-size: 0.95rem;
line-height: 1.65;
}

.donna-flow {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 0.5rem;
margin: 1.5rem 0;
padding: 0;
list-style: none;
counter-reset: donna-step;
}

.donna-flow li {
min-width: 0;
padding: 0.75rem 0.5rem;
border: 1px solid var(--donna-border);
border-radius: 8px;
background: var(--donna-accent-soft);
font-family: 'Inter', system-ui, sans-serif;
font-size: 0.78rem;
font-weight: 600;
line-height: 1.35;
text-align: center;
counter-increment: donna-step;
}

.donna-flow li::before {
display: block;
margin-bottom: 0.25rem;
color: var(--donna-accent);
content: counter(donna-step, decimal-leading-zero);
font-size: 0.68rem;
}

@media (max-width: 640px) {
.donna-grid {
grid-template-columns: 1fr;
}

.donna-flow {
grid-template-columns: 1fr;
}

.donna-flow li {
text-align: left;
}

.donna-flow li::before {
display: inline;
margin-right: 0.5rem;
}
}
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# The OpenClaw Handbook

Public guidance for working with AI agents at 2x Growth Agency. The site is built with VitePress and published at [handbook.2x.agency](https://handbook.2x.agency).

## Local development

```sh
npm ci
npm run lint
npm test
npm run validate:donna
npm run build
```

## Maintaining How Donna Works

The five files in `donna/` are the public guide. Each page must include the required public metadata and a visible `Last verified` date. Keep `public/donna/agent-card.json` and `public/donna/llms.txt` aligned with those pages.

Review the section quarterly and after any material change to Donna's published role, limits, or ways of working. Do not generate public content from private workspaces or publish private records as proof. Run `npm run validate:donna` before review.
Loading