@hivehub/rulebook 4.2.2 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/continue.md +33 -33
- package/.claude/commands/ralph-config.md +112 -112
- package/.claude/commands/ralph-history.md +110 -110
- package/.claude/commands/ralph-init.md +72 -72
- package/.claude/commands/ralph-pause-resume.md +105 -105
- package/.claude/commands/ralph-run.md +101 -101
- package/.claude/commands/ralph-status.md +76 -76
- package/.claude/commands/rulebook-memory-save.md +48 -48
- package/.claude/commands/rulebook-memory-search.md +47 -47
- package/.claude/commands/rulebook-task-apply.md +67 -67
- package/.claude/commands/rulebook-task-archive.md +70 -70
- package/.claude/commands/rulebook-task-create.md +93 -93
- package/.claude/commands/rulebook-task-list.md +42 -42
- package/.claude/commands/rulebook-task-show.md +52 -52
- package/.claude/commands/rulebook-task-validate.md +53 -53
- package/.claude-plugin/marketplace.json +28 -28
- package/.claude-plugin/plugin.json +8 -8
- package/README.md +8 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +4 -4
- package/dist/cli/commands.js.map +1 -1
- package/dist/core/claude-mcp.d.ts +8 -1
- package/dist/core/claude-mcp.d.ts.map +1 -1
- package/dist/core/claude-mcp.js +32 -1
- package/dist/core/claude-mcp.js.map +1 -1
- package/dist/core/generator.d.ts +13 -0
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +283 -28
- package/dist/core/generator.js.map +1 -1
- package/dist/core/workspace/workspace-manager.d.ts.map +1 -1
- package/dist/core/workspace/workspace-manager.js +2 -6
- package/dist/core/workspace/workspace-manager.js.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +5 -4
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/package.json +21 -22
- package/templates/agents/accessibility-reviewer.md +43 -0
- package/templates/agents/api-designer.md +42 -0
- package/templates/agents/architect.md +51 -0
- package/templates/agents/build-engineer.md +36 -0
- package/templates/agents/code-reviewer.md +47 -0
- package/templates/agents/database-architect.md +41 -0
- package/templates/agents/devops-engineer.md +42 -0
- package/templates/agents/docs-writer.md +38 -0
- package/templates/agents/i18n-engineer.md +42 -0
- package/templates/agents/implementer.md +38 -35
- package/templates/agents/migration-engineer.md +42 -0
- package/templates/agents/performance-engineer.md +49 -0
- package/templates/agents/refactoring-agent.md +41 -0
- package/templates/agents/researcher.md +38 -34
- package/templates/agents/security-reviewer.md +40 -0
- package/templates/agents/team-lead.md +37 -34
- package/templates/agents/tester.md +45 -42
- package/templates/agents/ux-reviewer.md +43 -0
- package/templates/ci/rulebook-review.yml +26 -26
- package/templates/cli/AIDER.md +49 -49
- package/templates/cli/AMAZON_Q.md +25 -25
- package/templates/cli/AUGGIE.md +32 -32
- package/templates/cli/CLAUDE.md +117 -117
- package/templates/cli/CLINE.md +99 -99
- package/templates/cli/CODEBUDDY.md +20 -20
- package/templates/cli/CODEIUM.md +20 -20
- package/templates/cli/CODEX.md +21 -21
- package/templates/cli/CONTINUE.md +34 -34
- package/templates/cli/CURSOR_CLI.md +62 -62
- package/templates/cli/FACTORY.md +18 -18
- package/templates/cli/GEMINI.md +35 -35
- package/templates/cli/KILOCODE.md +18 -18
- package/templates/cli/OPENCODE.md +18 -18
- package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
- package/templates/commands/rulebook-memory-save.md +48 -48
- package/templates/commands/rulebook-memory-search.md +47 -47
- package/templates/commands/rulebook-task-apply.md +67 -67
- package/templates/commands/rulebook-task-archive.md +94 -94
- package/templates/commands/rulebook-task-create.md +93 -93
- package/templates/commands/rulebook-task-list.md +42 -42
- package/templates/commands/rulebook-task-show.md +52 -52
- package/templates/commands/rulebook-task-validate.md +53 -53
- package/templates/core/AGENTS_LEAN.md +25 -25
- package/templates/core/AGENTS_OVERRIDE.md +16 -16
- package/templates/core/AGENT_AUTOMATION.md +288 -288
- package/templates/core/DAG.md +304 -304
- package/templates/core/DOCUMENTATION_RULES.md +36 -36
- package/templates/core/MULTI_AGENT.md +74 -74
- package/templates/core/PLANS.md +28 -28
- package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
- package/templates/core/RALPH.md +471 -471
- package/templates/core/RULEBOOK.md +1935 -1935
- package/templates/frameworks/ANGULAR.md +36 -36
- package/templates/frameworks/DJANGO.md +83 -83
- package/templates/frameworks/ELECTRON.md +147 -147
- package/templates/frameworks/FLASK.md +38 -38
- package/templates/frameworks/FLUTTER.md +55 -55
- package/templates/frameworks/JQUERY.md +32 -32
- package/templates/frameworks/LARAVEL.md +38 -38
- package/templates/frameworks/NESTJS.md +43 -43
- package/templates/frameworks/NEXTJS.md +127 -127
- package/templates/frameworks/NUXT.md +40 -40
- package/templates/frameworks/RAILS.md +66 -66
- package/templates/frameworks/REACT.md +38 -38
- package/templates/frameworks/REACT_NATIVE.md +47 -47
- package/templates/frameworks/SPRING.md +39 -39
- package/templates/frameworks/SYMFONY.md +36 -36
- package/templates/frameworks/VUE.md +36 -36
- package/templates/frameworks/ZEND.md +35 -35
- package/templates/git/CI_CD_PATTERNS.md +661 -661
- package/templates/git/GITHUB_ACTIONS.md +728 -728
- package/templates/git/GITLAB_CI.md +730 -730
- package/templates/git/GIT_WORKFLOW.md +1157 -1157
- package/templates/git/SECRETS_MANAGEMENT.md +585 -585
- package/templates/hooks/COMMIT_MSG.md +530 -530
- package/templates/hooks/POST_CHECKOUT.md +546 -546
- package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
- package/templates/hooks/PRE_COMMIT.md +414 -414
- package/templates/hooks/PRE_PUSH.md +601 -601
- package/templates/ides/CONTINUE_RULES.md +16 -16
- package/templates/ides/COPILOT.md +37 -37
- package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
- package/templates/ides/CURSOR.md +43 -43
- package/templates/ides/GEMINI_RULES.md +17 -17
- package/templates/ides/JETBRAINS_AI.md +35 -35
- package/templates/ides/REPLIT.md +36 -36
- package/templates/ides/TABNINE.md +29 -29
- package/templates/ides/VSCODE.md +40 -40
- package/templates/ides/WINDSURF.md +36 -36
- package/templates/ides/WINDSURF_RULES.md +14 -14
- package/templates/ides/ZED.md +32 -32
- package/templates/ides/cursor-mdc/go.mdc +24 -24
- package/templates/ides/cursor-mdc/python.mdc +24 -24
- package/templates/ides/cursor-mdc/quality.mdc +25 -25
- package/templates/ides/cursor-mdc/ralph.mdc +39 -39
- package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
- package/templates/ides/cursor-mdc/rust.mdc +24 -24
- package/templates/ides/cursor-mdc/typescript.mdc +25 -25
- package/templates/languages/C.md +333 -333
- package/templates/languages/CPP.md +743 -743
- package/templates/languages/CSHARP.md +417 -417
- package/templates/languages/ELIXIR.md +454 -454
- package/templates/languages/ERLANG.md +361 -361
- package/templates/languages/GO.md +645 -645
- package/templates/languages/HASKELL.md +177 -177
- package/templates/languages/JAVA.md +607 -607
- package/templates/languages/JAVASCRIPT.md +631 -631
- package/templates/languages/JULIA.md +97 -97
- package/templates/languages/KOTLIN.md +511 -511
- package/templates/languages/LISP.md +100 -100
- package/templates/languages/LUA.md +74 -74
- package/templates/languages/OBJECTIVEC.md +90 -90
- package/templates/languages/PHP.md +416 -416
- package/templates/languages/PYTHON.md +682 -682
- package/templates/languages/RUBY.md +421 -421
- package/templates/languages/RUST.md +477 -477
- package/templates/languages/SAS.md +73 -73
- package/templates/languages/SCALA.md +348 -348
- package/templates/languages/SOLIDITY.md +580 -580
- package/templates/languages/SQL.md +137 -137
- package/templates/languages/SWIFT.md +466 -466
- package/templates/languages/TYPESCRIPT.md +591 -591
- package/templates/languages/ZIG.md +265 -265
- package/templates/modules/ATLASSIAN.md +255 -255
- package/templates/modules/CONTEXT7.md +54 -54
- package/templates/modules/FIGMA.md +267 -267
- package/templates/modules/GITHUB_MCP.md +64 -64
- package/templates/modules/GRAFANA.md +328 -328
- package/templates/modules/MEMORY.md +126 -126
- package/templates/modules/NOTION.md +247 -247
- package/templates/modules/PLAYWRIGHT.md +90 -90
- package/templates/modules/RULEBOOK_MCP.md +156 -156
- package/templates/modules/SERENA.md +337 -337
- package/templates/modules/SUPABASE.md +223 -223
- package/templates/modules/SYNAP.md +69 -69
- package/templates/modules/VECTORIZER.md +63 -63
- package/templates/modules/sequential-thinking.md +42 -42
- package/templates/ralph/ralph-history.bat +4 -4
- package/templates/ralph/ralph-history.sh +5 -5
- package/templates/ralph/ralph-init.bat +5 -5
- package/templates/ralph/ralph-init.sh +5 -5
- package/templates/ralph/ralph-pause.bat +5 -5
- package/templates/ralph/ralph-pause.sh +5 -5
- package/templates/ralph/ralph-run.bat +5 -5
- package/templates/ralph/ralph-run.sh +5 -5
- package/templates/ralph/ralph-status.bat +4 -4
- package/templates/ralph/ralph-status.sh +5 -5
- package/templates/services/AZURE_BLOB.md +184 -184
- package/templates/services/CASSANDRA.md +239 -239
- package/templates/services/DATADOG.md +26 -26
- package/templates/services/DOCKER.md +124 -124
- package/templates/services/DOCKER_COMPOSE.md +168 -168
- package/templates/services/DYNAMODB.md +308 -308
- package/templates/services/ELASTICSEARCH.md +347 -347
- package/templates/services/GCS.md +178 -178
- package/templates/services/HELM.md +194 -194
- package/templates/services/INFLUXDB.md +265 -265
- package/templates/services/KAFKA.md +341 -341
- package/templates/services/KUBERNETES.md +208 -208
- package/templates/services/MARIADB.md +183 -183
- package/templates/services/MEMCACHED.md +242 -242
- package/templates/services/MINIO.md +201 -201
- package/templates/services/MONGODB.md +268 -268
- package/templates/services/MYSQL.md +358 -358
- package/templates/services/NEO4J.md +247 -247
- package/templates/services/OPENTELEMETRY.md +25 -25
- package/templates/services/ORACLE.md +290 -290
- package/templates/services/PINO.md +24 -24
- package/templates/services/POSTGRESQL.md +326 -326
- package/templates/services/PROMETHEUS.md +33 -33
- package/templates/services/RABBITMQ.md +286 -286
- package/templates/services/REDIS.md +292 -292
- package/templates/services/S3.md +298 -298
- package/templates/services/SENTRY.md +23 -23
- package/templates/services/SQLITE.md +294 -294
- package/templates/services/SQLSERVER.md +294 -294
- package/templates/services/WINSTON.md +30 -30
- package/templates/skills/cli/aider/SKILL.md +59 -59
- package/templates/skills/cli/amazon-q/SKILL.md +35 -35
- package/templates/skills/cli/auggie/SKILL.md +42 -42
- package/templates/skills/cli/claude/SKILL.md +42 -42
- package/templates/skills/cli/cline/SKILL.md +42 -42
- package/templates/skills/cli/codebuddy/SKILL.md +30 -30
- package/templates/skills/cli/codeium/SKILL.md +30 -30
- package/templates/skills/cli/codex/SKILL.md +31 -31
- package/templates/skills/cli/continue/SKILL.md +44 -44
- package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
- package/templates/skills/cli/factory/SKILL.md +28 -28
- package/templates/skills/cli/gemini/SKILL.md +45 -45
- package/templates/skills/cli/kilocode/SKILL.md +28 -28
- package/templates/skills/cli/opencode/SKILL.md +28 -28
- package/templates/skills/core/agent-automation/SKILL.md +194 -194
- package/templates/skills/core/dag/SKILL.md +314 -314
- package/templates/skills/core/documentation-rules/SKILL.md +46 -46
- package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
- package/templates/skills/core/rulebook/SKILL.md +176 -176
- package/templates/skills/dev/accessibility/SKILL.md +17 -0
- package/templates/skills/dev/api-design/SKILL.md +15 -0
- package/templates/skills/dev/architect/SKILL.md +17 -0
- package/templates/skills/dev/build-fix/SKILL.md +17 -0
- package/templates/skills/dev/db-design/SKILL.md +15 -0
- package/templates/skills/dev/debug/SKILL.md +16 -0
- package/templates/skills/dev/deploy/SKILL.md +17 -0
- package/templates/skills/dev/docs/SKILL.md +17 -0
- package/templates/skills/dev/migrate/SKILL.md +15 -0
- package/templates/skills/dev/perf/SKILL.md +17 -0
- package/templates/skills/dev/refactor/SKILL.md +17 -0
- package/templates/skills/dev/research/SKILL.md +14 -0
- package/templates/skills/dev/review/SKILL.md +18 -0
- package/templates/skills/dev/security-audit/SKILL.md +17 -0
- package/templates/skills/frameworks/angular/SKILL.md +46 -46
- package/templates/skills/frameworks/django/SKILL.md +93 -93
- package/templates/skills/frameworks/electron/SKILL.md +157 -157
- package/templates/skills/frameworks/flask/SKILL.md +48 -48
- package/templates/skills/frameworks/flutter/SKILL.md +65 -65
- package/templates/skills/frameworks/jquery/SKILL.md +42 -42
- package/templates/skills/frameworks/laravel/SKILL.md +48 -48
- package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
- package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
- package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
- package/templates/skills/frameworks/rails/SKILL.md +76 -76
- package/templates/skills/frameworks/react/SKILL.md +48 -48
- package/templates/skills/frameworks/react-native/SKILL.md +57 -57
- package/templates/skills/frameworks/spring/SKILL.md +49 -49
- package/templates/skills/frameworks/symfony/SKILL.md +46 -46
- package/templates/skills/frameworks/vue/SKILL.md +46 -46
- package/templates/skills/frameworks/zend/SKILL.md +45 -45
- package/templates/skills/ides/copilot/SKILL.md +47 -47
- package/templates/skills/ides/cursor/SKILL.md +53 -53
- package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
- package/templates/skills/ides/replit/SKILL.md +46 -46
- package/templates/skills/ides/tabnine/SKILL.md +39 -39
- package/templates/skills/ides/vscode/SKILL.md +50 -50
- package/templates/skills/ides/windsurf/SKILL.md +46 -46
- package/templates/skills/ides/zed/SKILL.md +42 -42
- package/templates/skills/languages/c/SKILL.md +343 -343
- package/templates/skills/languages/cpp/SKILL.md +753 -753
- package/templates/skills/languages/csharp/SKILL.md +427 -427
- package/templates/skills/languages/elixir/SKILL.md +464 -464
- package/templates/skills/languages/erlang/SKILL.md +371 -371
- package/templates/skills/languages/go/SKILL.md +655 -655
- package/templates/skills/languages/haskell/SKILL.md +187 -187
- package/templates/skills/languages/java/SKILL.md +617 -617
- package/templates/skills/languages/javascript/SKILL.md +641 -641
- package/templates/skills/languages/julia/SKILL.md +107 -107
- package/templates/skills/languages/kotlin/SKILL.md +521 -521
- package/templates/skills/languages/lisp/SKILL.md +110 -110
- package/templates/skills/languages/lua/SKILL.md +84 -84
- package/templates/skills/languages/objectivec/SKILL.md +100 -100
- package/templates/skills/languages/php/SKILL.md +426 -426
- package/templates/skills/languages/python/SKILL.md +692 -692
- package/templates/skills/languages/ruby/SKILL.md +431 -431
- package/templates/skills/languages/rust/SKILL.md +487 -487
- package/templates/skills/languages/sas/SKILL.md +83 -83
- package/templates/skills/languages/scala/SKILL.md +358 -358
- package/templates/skills/languages/solidity/SKILL.md +590 -590
- package/templates/skills/languages/sql/SKILL.md +147 -147
- package/templates/skills/languages/swift/SKILL.md +476 -476
- package/templates/skills/languages/typescript/SKILL.md +302 -302
- package/templates/skills/languages/zig/SKILL.md +275 -275
- package/templates/skills/modules/atlassian/SKILL.md +265 -265
- package/templates/skills/modules/context7/SKILL.md +64 -64
- package/templates/skills/modules/figma/SKILL.md +277 -277
- package/templates/skills/modules/github-mcp/SKILL.md +74 -74
- package/templates/skills/modules/grafana/SKILL.md +338 -338
- package/templates/skills/modules/memory/SKILL.md +73 -73
- package/templates/skills/modules/notion/SKILL.md +257 -257
- package/templates/skills/modules/playwright/SKILL.md +100 -100
- package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
- package/templates/skills/modules/serena/SKILL.md +347 -347
- package/templates/skills/modules/supabase/SKILL.md +233 -233
- package/templates/skills/modules/synap/SKILL.md +79 -79
- package/templates/skills/modules/vectorizer/SKILL.md +73 -73
- package/templates/skills/services/azure-blob/SKILL.md +194 -194
- package/templates/skills/services/cassandra/SKILL.md +249 -249
- package/templates/skills/services/dynamodb/SKILL.md +318 -318
- package/templates/skills/services/elasticsearch/SKILL.md +357 -357
- package/templates/skills/services/gcs/SKILL.md +188 -188
- package/templates/skills/services/influxdb/SKILL.md +275 -275
- package/templates/skills/services/kafka/SKILL.md +351 -351
- package/templates/skills/services/mariadb/SKILL.md +193 -193
- package/templates/skills/services/memcached/SKILL.md +252 -252
- package/templates/skills/services/minio/SKILL.md +211 -211
- package/templates/skills/services/mongodb/SKILL.md +278 -278
- package/templates/skills/services/mysql/SKILL.md +368 -368
- package/templates/skills/services/neo4j/SKILL.md +257 -257
- package/templates/skills/services/oracle/SKILL.md +300 -300
- package/templates/skills/services/postgresql/SKILL.md +336 -336
- package/templates/skills/services/rabbitmq/SKILL.md +296 -296
- package/templates/skills/services/redis/SKILL.md +302 -302
- package/templates/skills/services/s3/SKILL.md +308 -308
- package/templates/skills/services/sqlite/SKILL.md +304 -304
- package/templates/skills/services/sqlserver/SKILL.md +304 -304
- package/templates/skills/workflows/ralph/SKILL.md +309 -309
- package/templates/skills/workflows/ralph/install.sh +87 -87
- package/templates/skills/workflows/ralph/manifest.json +158 -158
package/templates/core/RALPH.md
CHANGED
|
@@ -1,471 +1,471 @@
|
|
|
1
|
-
<!-- RALPH:START -->
|
|
2
|
-
# Ralph Autonomous Loop Integration
|
|
3
|
-
|
|
4
|
-
Ralph is an autonomous AI agent loop that iteratively solves tasks with fresh context for each iteration. This document explains how to use Ralph with your Rulebook project.
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
Ralph enables:
|
|
9
|
-
- **Autonomous Multi-Iteration Development**: AI agents solve tasks across multiple iterations
|
|
10
|
-
- **Quality Gates**: Automatic checks for type-safety, linting, testing, and coverage
|
|
11
|
-
- **Progress Tracking**: Detailed history of each iteration with metrics and learnings
|
|
12
|
-
- **Fresh Context per Iteration**: Each iteration starts with clean context, avoiding context window exhaustion
|
|
13
|
-
- **Graceful Interruption**: Pause and resume capabilities for long-running tasks
|
|
14
|
-
|
|
15
|
-
## Quick Start
|
|
16
|
-
|
|
17
|
-
### Initialize Ralph
|
|
18
|
-
```bash
|
|
19
|
-
rulebook ralph init
|
|
20
|
-
```
|
|
21
|
-
This creates:
|
|
22
|
-
- `.rulebook/ralph/prd.json` - Product Requirements Document from rulebook tasks
|
|
23
|
-
- `.rulebook/ralph/state.json` - Current loop state and progress
|
|
24
|
-
- `.rulebook/ralph/history/` - Per-iteration metadata and results
|
|
25
|
-
|
|
26
|
-
### Run Ralph Loop
|
|
27
|
-
```bash
|
|
28
|
-
rulebook ralph run --max-iterations 10 --tool claude
|
|
29
|
-
```
|
|
30
|
-
Flags:
|
|
31
|
-
- `--max-iterations N` - Maximum iterations before stopping (default: 10)
|
|
32
|
-
- `--tool TOOL` - AI tool to use: `claude`, `amp`, or `gemini` (default: claude)
|
|
33
|
-
|
|
34
|
-
### Check Status
|
|
35
|
-
```bash
|
|
36
|
-
rulebook ralph status
|
|
37
|
-
```
|
|
38
|
-
Shows:
|
|
39
|
-
- Current iteration count
|
|
40
|
-
- Completed vs. pending tasks
|
|
41
|
-
- Success rate and quality metrics
|
|
42
|
-
|
|
43
|
-
### View History
|
|
44
|
-
```bash
|
|
45
|
-
rulebook ralph history --limit 5
|
|
46
|
-
```
|
|
47
|
-
Displays:
|
|
48
|
-
- Last 5 iterations with status and duration
|
|
49
|
-
- Task completions and failures
|
|
50
|
-
- Quality gate results
|
|
51
|
-
|
|
52
|
-
### Pause/Resume
|
|
53
|
-
```bash
|
|
54
|
-
rulebook ralph pause # Gracefully pause the loop
|
|
55
|
-
rulebook ralph resume # Continue from where it paused
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## How Ralph Works
|
|
59
|
-
|
|
60
|
-
### Iteration Loop
|
|
61
|
-
```
|
|
62
|
-
┌─────────────────────────────────────────┐
|
|
63
|
-
│ 1. Load Next Pending Task from PRD │
|
|
64
|
-
├─────────────────────────────────────────┤
|
|
65
|
-
│ 2. Execute Agent with Task Context │
|
|
66
|
-
│ - Fresh context per iteration │
|
|
67
|
-
│ - Task description and acceptance │
|
|
68
|
-
│ criteria from rulebook │
|
|
69
|
-
│ - Previous iteration learnings │
|
|
70
|
-
├─────────────────────────────────────────┤
|
|
71
|
-
│ 3. Parse Agent Output │
|
|
72
|
-
│ - Extract quality gate results │
|
|
73
|
-
│ - Extract learnings and errors │
|
|
74
|
-
│ - Extract git commit hash │
|
|
75
|
-
├─────────────────────────────────────────┤
|
|
76
|
-
│ 4. Record Iteration Results │
|
|
77
|
-
│ - Save to history/.iteration-N.json │
|
|
78
|
-
│ - Update task status in PRD │
|
|
79
|
-
│ - Log progress to progress.txt │
|
|
80
|
-
├─────────────────────────────────────────┤
|
|
81
|
-
│ 5. Check Loop Continuation │
|
|
82
|
-
│ - All tasks completed? → Stop │
|
|
83
|
-
│ - Max iterations reached? → Stop │
|
|
84
|
-
│ - Otherwise → Loop │
|
|
85
|
-
└─────────────────────────────────────────┘
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Quality Gates
|
|
89
|
-
Ralph automatically checks these gates after each iteration:
|
|
90
|
-
|
|
91
|
-
| Gate | Description | Pass Criteria |
|
|
92
|
-
|------|-------------|---------------|
|
|
93
|
-
| **type-check** | TypeScript compilation | No errors |
|
|
94
|
-
| **lint** | ESLint code quality | No errors |
|
|
95
|
-
| **tests** | Unit tests | All passing |
|
|
96
|
-
| **coverage** | Code coverage | ≥95% |
|
|
97
|
-
| **security** | Vulnerability scan | No findings above `failOn` severity |
|
|
98
|
-
|
|
99
|
-
**Security Gate** scans for vulnerabilities using the first available tool:
|
|
100
|
-
1. **trivy** — container and filesystem scanning (`trivy fs --format json`)
|
|
101
|
-
2. **semgrep** — static analysis (`semgrep --config auto --json`)
|
|
102
|
-
3. **npm audit** — Node.js dependency audit (always available in Node projects)
|
|
103
|
-
|
|
104
|
-
Configure via `.rulebook` file:
|
|
105
|
-
```json
|
|
106
|
-
{
|
|
107
|
-
"ralph": {
|
|
108
|
-
"securityGate": {
|
|
109
|
-
"enabled": true,
|
|
110
|
-
"failOn": "high",
|
|
111
|
-
"tool": "auto"
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
| Setting | Default | Options | Description |
|
|
118
|
-
|---------|---------|---------|-------------|
|
|
119
|
-
| `enabled` | `true` | `true`/`false` | Enable/disable security gate |
|
|
120
|
-
| `failOn` | `"high"` | `critical`/`high`/`moderate`/`low` | Minimum severity to fail |
|
|
121
|
-
| `tool` | `"auto"` | `auto`/`npm-audit`/`trivy`/`semgrep` | Scanner to use |
|
|
122
|
-
|
|
123
|
-
**Iteration Status:**
|
|
124
|
-
- ✅ **success** - All 5 gates pass
|
|
125
|
-
- ⚠️ **partial** - 2-4 gates pass
|
|
126
|
-
- ❌ **failed** - 0-1 gates pass
|
|
127
|
-
|
|
128
|
-
### Fresh Context Strategy
|
|
129
|
-
Each iteration provides context to the agent:
|
|
130
|
-
1. **Task Description** - What to implement
|
|
131
|
-
2. **Acceptance Criteria** - How to verify success
|
|
132
|
-
3. **Quality Requirements** - Type-check, lint, tests, coverage
|
|
133
|
-
4. **Previous Learnings** - Lessons from prior iterations
|
|
134
|
-
5. **Project Context** - Recent git commits, file structure
|
|
135
|
-
6. **Git Status** - Current diff and uncommitted changes
|
|
136
|
-
|
|
137
|
-
This allows agents to make progress without exhausting context window.
|
|
138
|
-
|
|
139
|
-
## Task Sizing for Ralph
|
|
140
|
-
|
|
141
|
-
### Good Task Sizes
|
|
142
|
-
✅ **Small Tasks** (1-2 iterations)
|
|
143
|
-
- Add single feature (button, form field)
|
|
144
|
-
- Fix localized bug
|
|
145
|
-
- Refactor single function/component
|
|
146
|
-
- Add utility function
|
|
147
|
-
|
|
148
|
-
Example:
|
|
149
|
-
```markdown
|
|
150
|
-
## Task: Add Dark Mode Toggle
|
|
151
|
-
|
|
152
|
-
What Changes: Add UI toggle for theme switching
|
|
153
|
-
|
|
154
|
-
Acceptance Criteria:
|
|
155
|
-
- [ ] Toggle button visible in settings
|
|
156
|
-
- [ ] Click toggles theme immediately
|
|
157
|
-
- [ ] Selection persists in localStorage
|
|
158
|
-
- [ ] All tests passing
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
✅ **Medium Tasks** (3-5 iterations)
|
|
162
|
-
- Implement new API endpoint
|
|
163
|
-
- Refactor component with dependencies
|
|
164
|
-
- Add authentication system
|
|
165
|
-
- Build complex feature with multiple parts
|
|
166
|
-
|
|
167
|
-
Example:
|
|
168
|
-
```markdown
|
|
169
|
-
## Task: Implement User Authentication
|
|
170
|
-
|
|
171
|
-
What Changes: Add JWT-based user auth
|
|
172
|
-
|
|
173
|
-
Acceptance Criteria:
|
|
174
|
-
- [ ] Login endpoint working
|
|
175
|
-
- [ ] Token generation and validation
|
|
176
|
-
- [ ] Protected routes enforced
|
|
177
|
-
- [ ] Refresh token rotation
|
|
178
|
-
- [ ] Error handling comprehensive
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Poor Task Sizes
|
|
182
|
-
❌ **Too Large** (>5 iterations)
|
|
183
|
-
- Build entire new module
|
|
184
|
-
- Major architectural redesign
|
|
185
|
-
- Complete feature system
|
|
186
|
-
|
|
187
|
-
→ Break into smaller, focused tasks
|
|
188
|
-
|
|
189
|
-
❌ **Too Vague** (unclear acceptance criteria)
|
|
190
|
-
- "Improve performance"
|
|
191
|
-
- "Make code better"
|
|
192
|
-
- "Add tests"
|
|
193
|
-
|
|
194
|
-
→ Define specific, measurable criteria
|
|
195
|
-
|
|
196
|
-
## Configuration
|
|
197
|
-
|
|
198
|
-
### .rulebook File
|
|
199
|
-
```json
|
|
200
|
-
{
|
|
201
|
-
"ralph": {
|
|
202
|
-
"enabled": true,
|
|
203
|
-
"maxIterations": 10,
|
|
204
|
-
"tool": "claude",
|
|
205
|
-
"maxContextLoss": 3,
|
|
206
|
-
"securityGate": {
|
|
207
|
-
"enabled": true,
|
|
208
|
-
"failOn": "high",
|
|
209
|
-
"tool": "auto"
|
|
210
|
-
},
|
|
211
|
-
"contextCompression": {
|
|
212
|
-
"enabled": true,
|
|
213
|
-
"recentCount": 3,
|
|
214
|
-
"threshold": 5
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
| Setting | Default | Description |
|
|
221
|
-
|---------|---------|-------------|
|
|
222
|
-
| `enabled` | `true` | Enable Ralph features |
|
|
223
|
-
| `maxIterations` | `10` | Max iterations per run |
|
|
224
|
-
| `tool` | `claude` | Default AI tool: `claude`, `amp`, `gemini` |
|
|
225
|
-
| `maxContextLoss` | `3` | Allow 3 context loss events before stopping |
|
|
226
|
-
| `securityGate.enabled` | `true` | Enable 5th quality gate (vulnerability scan) |
|
|
227
|
-
| `securityGate.failOn` | `"high"` | Fail on: `critical`, `high`, `moderate`, `low` |
|
|
228
|
-
| `securityGate.tool` | `"auto"` | Scanner: `auto`, `npm-audit`, `trivy`, `semgrep` |
|
|
229
|
-
| `contextCompression.enabled` | `true` | Compress old iteration history in prompts |
|
|
230
|
-
| `contextCompression.recentCount` | `3` | Iterations shown in full detail |
|
|
231
|
-
| `contextCompression.threshold` | `5` | Min iterations before compression activates |
|
|
232
|
-
|
|
233
|
-
## MCP Integration
|
|
234
|
-
|
|
235
|
-
Ralph provides 4 MCP tools for programmatic access:
|
|
236
|
-
|
|
237
|
-
### rulebook_ralph_init
|
|
238
|
-
Initialize Ralph and generate PRD from tasks
|
|
239
|
-
```json
|
|
240
|
-
{
|
|
241
|
-
"type": "resource",
|
|
242
|
-
"name": "rulebook_ralph_init",
|
|
243
|
-
"description": "Initialize Ralph autonomous loop"
|
|
244
|
-
}
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### rulebook_ralph_run
|
|
248
|
-
Execute autonomous iteration loop
|
|
249
|
-
```json
|
|
250
|
-
{
|
|
251
|
-
"type": "resource",
|
|
252
|
-
"name": "rulebook_ralph_run",
|
|
253
|
-
"description": "Run Ralph iteration loop"
|
|
254
|
-
}
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
### rulebook_ralph_status
|
|
258
|
-
Get current loop state and progress
|
|
259
|
-
```json
|
|
260
|
-
{
|
|
261
|
-
"type": "resource",
|
|
262
|
-
"name": "rulebook_ralph_status",
|
|
263
|
-
"description": "Get Ralph loop status"
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
### rulebook_ralph_get_iteration_history
|
|
268
|
-
Retrieve iteration metadata and statistics
|
|
269
|
-
```json
|
|
270
|
-
{
|
|
271
|
-
"type": "resource",
|
|
272
|
-
"name": "rulebook_ralph_get_iteration_history",
|
|
273
|
-
"description": "Get Ralph iteration history"
|
|
274
|
-
}
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
## Directory Structure
|
|
278
|
-
|
|
279
|
-
Ralph stores all data in `.rulebook/ralph/`:
|
|
280
|
-
```
|
|
281
|
-
.rulebook/ralph/
|
|
282
|
-
├── prd.json # Product Requirements Document
|
|
283
|
-
├── state.json # Current loop state
|
|
284
|
-
├── progress.txt # Append-only progress log
|
|
285
|
-
└── history/
|
|
286
|
-
├── iteration-1.json # Metadata from iteration 1
|
|
287
|
-
├── iteration-2.json # Metadata from iteration 2
|
|
288
|
-
└── ...
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
### prd.json Structure
|
|
292
|
-
```json
|
|
293
|
-
{
|
|
294
|
-
"version": "1.0",
|
|
295
|
-
"generated_at": "2026-02-26T12:00:00Z",
|
|
296
|
-
"project_name": "my-project",
|
|
297
|
-
"total_tasks": 5,
|
|
298
|
-
"tasks": [
|
|
299
|
-
{
|
|
300
|
-
"id": "task-1",
|
|
301
|
-
"title": "Task Title",
|
|
302
|
-
"description": "Task description",
|
|
303
|
-
"status": "pending|in_iteration|completed|blocked",
|
|
304
|
-
"priority": 1,
|
|
305
|
-
"acceptance_criteria": ["Criterion 1", "Criterion 2"],
|
|
306
|
-
"estimated_iterations": 2,
|
|
307
|
-
"created_at": "2026-02-26T12:00:00Z",
|
|
308
|
-
"updated_at": "2026-02-26T12:00:00Z"
|
|
309
|
-
}
|
|
310
|
-
]
|
|
311
|
-
}
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
### iteration-N.json Structure
|
|
315
|
-
```json
|
|
316
|
-
{
|
|
317
|
-
"iteration": 1,
|
|
318
|
-
"started_at": "2026-02-26T12:00:00Z",
|
|
319
|
-
"completed_at": "2026-02-26T12:05:00Z",
|
|
320
|
-
"task_id": "task-1",
|
|
321
|
-
"task_title": "Task Title",
|
|
322
|
-
"duration_ms": 300000,
|
|
323
|
-
"status": "success|partial|failed",
|
|
324
|
-
"git_commit": "abc1234",
|
|
325
|
-
"quality_checks": {
|
|
326
|
-
"type_check": true,
|
|
327
|
-
"lint": true,
|
|
328
|
-
"tests": true,
|
|
329
|
-
"coverage_met": true
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
## Best Practices
|
|
335
|
-
|
|
336
|
-
### 1. Clear Acceptance Criteria
|
|
337
|
-
❌ Bad: "Make it work"
|
|
338
|
-
✅ Good: "User can click button and see modal dialog with form"
|
|
339
|
-
|
|
340
|
-
### 2. Limit to 1 Task per Run
|
|
341
|
-
Run Ralph on single focused task for best results
|
|
342
|
-
```bash
|
|
343
|
-
# Focus on one task at a time
|
|
344
|
-
rulebook ralph run --max-iterations 5
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
### 3. Review Iteration Results
|
|
348
|
-
Check quality gates and learnings between runs
|
|
349
|
-
```bash
|
|
350
|
-
rulebook ralph history --limit 1 # See latest iteration
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
### 4. Break Large Features
|
|
354
|
-
Don't try to implement entire systems in one run
|
|
355
|
-
- Task 1: API endpoint with basic validation
|
|
356
|
-
- Task 2: Database models and migrations
|
|
357
|
-
- Task 3: Error handling and edge cases
|
|
358
|
-
- Task 4: Tests and documentation
|
|
359
|
-
|
|
360
|
-
### 5. Inspect Failed Iterations
|
|
361
|
-
If status is "failed", examine what went wrong:
|
|
362
|
-
```bash
|
|
363
|
-
cat .rulebook/ralph/history/iteration-N.json
|
|
364
|
-
cat .rulebook/ralph/progress.txt
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
### 6. Use Learnings from History
|
|
368
|
-
Ralph extracts and stores learnings from iterations. Review these to understand what strategies worked.
|
|
369
|
-
|
|
370
|
-
## Troubleshooting
|
|
371
|
-
|
|
372
|
-
### Iteration Loop Stops Early
|
|
373
|
-
**Cause**: Hit max iterations or all tasks completed
|
|
374
|
-
|
|
375
|
-
**Solution**:
|
|
376
|
-
- Check status: `rulebook ralph status`
|
|
377
|
-
- View history: `rulebook ralph history`
|
|
378
|
-
- Increase max iterations: `rulebook ralph run --max-iterations 20`
|
|
379
|
-
|
|
380
|
-
### Quality Gates Failing
|
|
381
|
-
**Cause**: Type-check, lint, tests, or coverage not meeting standards
|
|
382
|
-
|
|
383
|
-
**Solution**:
|
|
384
|
-
- Review failing gate in iteration history
|
|
385
|
-
- Check PRD acceptance criteria match quality gates
|
|
386
|
-
- Ensure task is small enough for single iteration
|
|
387
|
-
|
|
388
|
-
### Context Loss Events
|
|
389
|
-
**Cause**: Agent ran out of context window during iteration
|
|
390
|
-
|
|
391
|
-
**Solution**:
|
|
392
|
-
- Break task into smaller pieces
|
|
393
|
-
- Reduce task description complexity
|
|
394
|
-
- Increase agent context window if possible
|
|
395
|
-
|
|
396
|
-
### Ralph State Gets Stuck
|
|
397
|
-
**Cause**: Invalid state.json or corrupted PRD
|
|
398
|
-
|
|
399
|
-
**Solution**:
|
|
400
|
-
```bash
|
|
401
|
-
rm .rulebook/ralph/state.json # Reset state
|
|
402
|
-
rulebook ralph init # Regenerate PRD
|
|
403
|
-
rulebook ralph run # Restart loop
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
## Examples
|
|
407
|
-
|
|
408
|
-
### Example 1: Simple Feature Implementation
|
|
409
|
-
Task: Add dark mode toggle button
|
|
410
|
-
|
|
411
|
-
```bash
|
|
412
|
-
# Initialize Ralph
|
|
413
|
-
rulebook ralph init
|
|
414
|
-
|
|
415
|
-
# Run for up to 3 iterations
|
|
416
|
-
rulebook ralph run --max-iterations 3
|
|
417
|
-
|
|
418
|
-
# Check results
|
|
419
|
-
rulebook ralph history
|
|
420
|
-
|
|
421
|
-
# Review final output
|
|
422
|
-
cat .rulebook/ralph/history/iteration-*.json
|
|
423
|
-
```
|
|
424
|
-
|
|
425
|
-
### Example 2: Multiple Task Execution
|
|
426
|
-
Tasks: Several small features to implement
|
|
427
|
-
|
|
428
|
-
```bash
|
|
429
|
-
# Run multiple tasks with generous iteration limit
|
|
430
|
-
rulebook ralph run --max-iterations 20
|
|
431
|
-
|
|
432
|
-
# Monitor progress
|
|
433
|
-
watch -n 5 'rulebook ralph status'
|
|
434
|
-
|
|
435
|
-
# Pause if needed
|
|
436
|
-
rulebook ralph pause
|
|
437
|
-
|
|
438
|
-
# Review and resume
|
|
439
|
-
rulebook ralph history
|
|
440
|
-
rulebook ralph resume
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
### Example 3: Debugging Failed Iteration
|
|
444
|
-
```bash
|
|
445
|
-
# Run into failure
|
|
446
|
-
rulebook ralph run --max-iterations 3
|
|
447
|
-
|
|
448
|
-
# See what failed
|
|
449
|
-
cat .rulebook/ralph/history/iteration-3.json
|
|
450
|
-
|
|
451
|
-
# View full progress log
|
|
452
|
-
tail -50 .rulebook/ralph/progress.txt
|
|
453
|
-
|
|
454
|
-
# Manual fix and resume
|
|
455
|
-
rulebook ralph resume
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
## Limitations
|
|
459
|
-
|
|
460
|
-
- **Single Sequential Loop**: Ralph processes one task at a time sequentially
|
|
461
|
-
- **No Parallel Execution**: Tasks don't run in parallel (by design)
|
|
462
|
-
- **No Task Dependencies**: No automatic dependency resolution between tasks
|
|
463
|
-
- **Manual Task Ordering**: You order tasks by priority in PRD
|
|
464
|
-
|
|
465
|
-
## Related Documentation
|
|
466
|
-
|
|
467
|
-
- See `/.rulebook/specs/RULEBOOK.md` for task structure
|
|
468
|
-
- See `/.rulebook/specs/QUALITY_ENFORCEMENT.md` for quality gates
|
|
469
|
-
- See `/rulebook/AGENTS.md` for AI agent integration
|
|
470
|
-
|
|
471
|
-
<!-- RALPH:END -->
|
|
1
|
+
<!-- RALPH:START -->
|
|
2
|
+
# Ralph Autonomous Loop Integration
|
|
3
|
+
|
|
4
|
+
Ralph is an autonomous AI agent loop that iteratively solves tasks with fresh context for each iteration. This document explains how to use Ralph with your Rulebook project.
|
|
5
|
+
|
|
6
|
+
## Overview
|
|
7
|
+
|
|
8
|
+
Ralph enables:
|
|
9
|
+
- **Autonomous Multi-Iteration Development**: AI agents solve tasks across multiple iterations
|
|
10
|
+
- **Quality Gates**: Automatic checks for type-safety, linting, testing, and coverage
|
|
11
|
+
- **Progress Tracking**: Detailed history of each iteration with metrics and learnings
|
|
12
|
+
- **Fresh Context per Iteration**: Each iteration starts with clean context, avoiding context window exhaustion
|
|
13
|
+
- **Graceful Interruption**: Pause and resume capabilities for long-running tasks
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
### Initialize Ralph
|
|
18
|
+
```bash
|
|
19
|
+
rulebook ralph init
|
|
20
|
+
```
|
|
21
|
+
This creates:
|
|
22
|
+
- `.rulebook/ralph/prd.json` - Product Requirements Document from rulebook tasks
|
|
23
|
+
- `.rulebook/ralph/state.json` - Current loop state and progress
|
|
24
|
+
- `.rulebook/ralph/history/` - Per-iteration metadata and results
|
|
25
|
+
|
|
26
|
+
### Run Ralph Loop
|
|
27
|
+
```bash
|
|
28
|
+
rulebook ralph run --max-iterations 10 --tool claude
|
|
29
|
+
```
|
|
30
|
+
Flags:
|
|
31
|
+
- `--max-iterations N` - Maximum iterations before stopping (default: 10)
|
|
32
|
+
- `--tool TOOL` - AI tool to use: `claude`, `amp`, or `gemini` (default: claude)
|
|
33
|
+
|
|
34
|
+
### Check Status
|
|
35
|
+
```bash
|
|
36
|
+
rulebook ralph status
|
|
37
|
+
```
|
|
38
|
+
Shows:
|
|
39
|
+
- Current iteration count
|
|
40
|
+
- Completed vs. pending tasks
|
|
41
|
+
- Success rate and quality metrics
|
|
42
|
+
|
|
43
|
+
### View History
|
|
44
|
+
```bash
|
|
45
|
+
rulebook ralph history --limit 5
|
|
46
|
+
```
|
|
47
|
+
Displays:
|
|
48
|
+
- Last 5 iterations with status and duration
|
|
49
|
+
- Task completions and failures
|
|
50
|
+
- Quality gate results
|
|
51
|
+
|
|
52
|
+
### Pause/Resume
|
|
53
|
+
```bash
|
|
54
|
+
rulebook ralph pause # Gracefully pause the loop
|
|
55
|
+
rulebook ralph resume # Continue from where it paused
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## How Ralph Works
|
|
59
|
+
|
|
60
|
+
### Iteration Loop
|
|
61
|
+
```
|
|
62
|
+
┌─────────────────────────────────────────┐
|
|
63
|
+
│ 1. Load Next Pending Task from PRD │
|
|
64
|
+
├─────────────────────────────────────────┤
|
|
65
|
+
│ 2. Execute Agent with Task Context │
|
|
66
|
+
│ - Fresh context per iteration │
|
|
67
|
+
│ - Task description and acceptance │
|
|
68
|
+
│ criteria from rulebook │
|
|
69
|
+
│ - Previous iteration learnings │
|
|
70
|
+
├─────────────────────────────────────────┤
|
|
71
|
+
│ 3. Parse Agent Output │
|
|
72
|
+
│ - Extract quality gate results │
|
|
73
|
+
│ - Extract learnings and errors │
|
|
74
|
+
│ - Extract git commit hash │
|
|
75
|
+
├─────────────────────────────────────────┤
|
|
76
|
+
│ 4. Record Iteration Results │
|
|
77
|
+
│ - Save to history/.iteration-N.json │
|
|
78
|
+
│ - Update task status in PRD │
|
|
79
|
+
│ - Log progress to progress.txt │
|
|
80
|
+
├─────────────────────────────────────────┤
|
|
81
|
+
│ 5. Check Loop Continuation │
|
|
82
|
+
│ - All tasks completed? → Stop │
|
|
83
|
+
│ - Max iterations reached? → Stop │
|
|
84
|
+
│ - Otherwise → Loop │
|
|
85
|
+
└─────────────────────────────────────────┘
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Quality Gates
|
|
89
|
+
Ralph automatically checks these gates after each iteration:
|
|
90
|
+
|
|
91
|
+
| Gate | Description | Pass Criteria |
|
|
92
|
+
|------|-------------|---------------|
|
|
93
|
+
| **type-check** | TypeScript compilation | No errors |
|
|
94
|
+
| **lint** | ESLint code quality | No errors |
|
|
95
|
+
| **tests** | Unit tests | All passing |
|
|
96
|
+
| **coverage** | Code coverage | ≥95% |
|
|
97
|
+
| **security** | Vulnerability scan | No findings above `failOn` severity |
|
|
98
|
+
|
|
99
|
+
**Security Gate** scans for vulnerabilities using the first available tool:
|
|
100
|
+
1. **trivy** — container and filesystem scanning (`trivy fs --format json`)
|
|
101
|
+
2. **semgrep** — static analysis (`semgrep --config auto --json`)
|
|
102
|
+
3. **npm audit** — Node.js dependency audit (always available in Node projects)
|
|
103
|
+
|
|
104
|
+
Configure via `.rulebook` file:
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"ralph": {
|
|
108
|
+
"securityGate": {
|
|
109
|
+
"enabled": true,
|
|
110
|
+
"failOn": "high",
|
|
111
|
+
"tool": "auto"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
| Setting | Default | Options | Description |
|
|
118
|
+
|---------|---------|---------|-------------|
|
|
119
|
+
| `enabled` | `true` | `true`/`false` | Enable/disable security gate |
|
|
120
|
+
| `failOn` | `"high"` | `critical`/`high`/`moderate`/`low` | Minimum severity to fail |
|
|
121
|
+
| `tool` | `"auto"` | `auto`/`npm-audit`/`trivy`/`semgrep` | Scanner to use |
|
|
122
|
+
|
|
123
|
+
**Iteration Status:**
|
|
124
|
+
- ✅ **success** - All 5 gates pass
|
|
125
|
+
- ⚠️ **partial** - 2-4 gates pass
|
|
126
|
+
- ❌ **failed** - 0-1 gates pass
|
|
127
|
+
|
|
128
|
+
### Fresh Context Strategy
|
|
129
|
+
Each iteration provides context to the agent:
|
|
130
|
+
1. **Task Description** - What to implement
|
|
131
|
+
2. **Acceptance Criteria** - How to verify success
|
|
132
|
+
3. **Quality Requirements** - Type-check, lint, tests, coverage
|
|
133
|
+
4. **Previous Learnings** - Lessons from prior iterations
|
|
134
|
+
5. **Project Context** - Recent git commits, file structure
|
|
135
|
+
6. **Git Status** - Current diff and uncommitted changes
|
|
136
|
+
|
|
137
|
+
This allows agents to make progress without exhausting context window.
|
|
138
|
+
|
|
139
|
+
## Task Sizing for Ralph
|
|
140
|
+
|
|
141
|
+
### Good Task Sizes
|
|
142
|
+
✅ **Small Tasks** (1-2 iterations)
|
|
143
|
+
- Add single feature (button, form field)
|
|
144
|
+
- Fix localized bug
|
|
145
|
+
- Refactor single function/component
|
|
146
|
+
- Add utility function
|
|
147
|
+
|
|
148
|
+
Example:
|
|
149
|
+
```markdown
|
|
150
|
+
## Task: Add Dark Mode Toggle
|
|
151
|
+
|
|
152
|
+
What Changes: Add UI toggle for theme switching
|
|
153
|
+
|
|
154
|
+
Acceptance Criteria:
|
|
155
|
+
- [ ] Toggle button visible in settings
|
|
156
|
+
- [ ] Click toggles theme immediately
|
|
157
|
+
- [ ] Selection persists in localStorage
|
|
158
|
+
- [ ] All tests passing
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
✅ **Medium Tasks** (3-5 iterations)
|
|
162
|
+
- Implement new API endpoint
|
|
163
|
+
- Refactor component with dependencies
|
|
164
|
+
- Add authentication system
|
|
165
|
+
- Build complex feature with multiple parts
|
|
166
|
+
|
|
167
|
+
Example:
|
|
168
|
+
```markdown
|
|
169
|
+
## Task: Implement User Authentication
|
|
170
|
+
|
|
171
|
+
What Changes: Add JWT-based user auth
|
|
172
|
+
|
|
173
|
+
Acceptance Criteria:
|
|
174
|
+
- [ ] Login endpoint working
|
|
175
|
+
- [ ] Token generation and validation
|
|
176
|
+
- [ ] Protected routes enforced
|
|
177
|
+
- [ ] Refresh token rotation
|
|
178
|
+
- [ ] Error handling comprehensive
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Poor Task Sizes
|
|
182
|
+
❌ **Too Large** (>5 iterations)
|
|
183
|
+
- Build entire new module
|
|
184
|
+
- Major architectural redesign
|
|
185
|
+
- Complete feature system
|
|
186
|
+
|
|
187
|
+
→ Break into smaller, focused tasks
|
|
188
|
+
|
|
189
|
+
❌ **Too Vague** (unclear acceptance criteria)
|
|
190
|
+
- "Improve performance"
|
|
191
|
+
- "Make code better"
|
|
192
|
+
- "Add tests"
|
|
193
|
+
|
|
194
|
+
→ Define specific, measurable criteria
|
|
195
|
+
|
|
196
|
+
## Configuration
|
|
197
|
+
|
|
198
|
+
### .rulebook File
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"ralph": {
|
|
202
|
+
"enabled": true,
|
|
203
|
+
"maxIterations": 10,
|
|
204
|
+
"tool": "claude",
|
|
205
|
+
"maxContextLoss": 3,
|
|
206
|
+
"securityGate": {
|
|
207
|
+
"enabled": true,
|
|
208
|
+
"failOn": "high",
|
|
209
|
+
"tool": "auto"
|
|
210
|
+
},
|
|
211
|
+
"contextCompression": {
|
|
212
|
+
"enabled": true,
|
|
213
|
+
"recentCount": 3,
|
|
214
|
+
"threshold": 5
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
| Setting | Default | Description |
|
|
221
|
+
|---------|---------|-------------|
|
|
222
|
+
| `enabled` | `true` | Enable Ralph features |
|
|
223
|
+
| `maxIterations` | `10` | Max iterations per run |
|
|
224
|
+
| `tool` | `claude` | Default AI tool: `claude`, `amp`, `gemini` |
|
|
225
|
+
| `maxContextLoss` | `3` | Allow 3 context loss events before stopping |
|
|
226
|
+
| `securityGate.enabled` | `true` | Enable 5th quality gate (vulnerability scan) |
|
|
227
|
+
| `securityGate.failOn` | `"high"` | Fail on: `critical`, `high`, `moderate`, `low` |
|
|
228
|
+
| `securityGate.tool` | `"auto"` | Scanner: `auto`, `npm-audit`, `trivy`, `semgrep` |
|
|
229
|
+
| `contextCompression.enabled` | `true` | Compress old iteration history in prompts |
|
|
230
|
+
| `contextCompression.recentCount` | `3` | Iterations shown in full detail |
|
|
231
|
+
| `contextCompression.threshold` | `5` | Min iterations before compression activates |
|
|
232
|
+
|
|
233
|
+
## MCP Integration
|
|
234
|
+
|
|
235
|
+
Ralph provides 4 MCP tools for programmatic access:
|
|
236
|
+
|
|
237
|
+
### rulebook_ralph_init
|
|
238
|
+
Initialize Ralph and generate PRD from tasks
|
|
239
|
+
```json
|
|
240
|
+
{
|
|
241
|
+
"type": "resource",
|
|
242
|
+
"name": "rulebook_ralph_init",
|
|
243
|
+
"description": "Initialize Ralph autonomous loop"
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### rulebook_ralph_run
|
|
248
|
+
Execute autonomous iteration loop
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"type": "resource",
|
|
252
|
+
"name": "rulebook_ralph_run",
|
|
253
|
+
"description": "Run Ralph iteration loop"
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### rulebook_ralph_status
|
|
258
|
+
Get current loop state and progress
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"type": "resource",
|
|
262
|
+
"name": "rulebook_ralph_status",
|
|
263
|
+
"description": "Get Ralph loop status"
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### rulebook_ralph_get_iteration_history
|
|
268
|
+
Retrieve iteration metadata and statistics
|
|
269
|
+
```json
|
|
270
|
+
{
|
|
271
|
+
"type": "resource",
|
|
272
|
+
"name": "rulebook_ralph_get_iteration_history",
|
|
273
|
+
"description": "Get Ralph iteration history"
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Directory Structure
|
|
278
|
+
|
|
279
|
+
Ralph stores all data in `.rulebook/ralph/`:
|
|
280
|
+
```
|
|
281
|
+
.rulebook/ralph/
|
|
282
|
+
├── prd.json # Product Requirements Document
|
|
283
|
+
├── state.json # Current loop state
|
|
284
|
+
├── progress.txt # Append-only progress log
|
|
285
|
+
└── history/
|
|
286
|
+
├── iteration-1.json # Metadata from iteration 1
|
|
287
|
+
├── iteration-2.json # Metadata from iteration 2
|
|
288
|
+
└── ...
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### prd.json Structure
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"version": "1.0",
|
|
295
|
+
"generated_at": "2026-02-26T12:00:00Z",
|
|
296
|
+
"project_name": "my-project",
|
|
297
|
+
"total_tasks": 5,
|
|
298
|
+
"tasks": [
|
|
299
|
+
{
|
|
300
|
+
"id": "task-1",
|
|
301
|
+
"title": "Task Title",
|
|
302
|
+
"description": "Task description",
|
|
303
|
+
"status": "pending|in_iteration|completed|blocked",
|
|
304
|
+
"priority": 1,
|
|
305
|
+
"acceptance_criteria": ["Criterion 1", "Criterion 2"],
|
|
306
|
+
"estimated_iterations": 2,
|
|
307
|
+
"created_at": "2026-02-26T12:00:00Z",
|
|
308
|
+
"updated_at": "2026-02-26T12:00:00Z"
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### iteration-N.json Structure
|
|
315
|
+
```json
|
|
316
|
+
{
|
|
317
|
+
"iteration": 1,
|
|
318
|
+
"started_at": "2026-02-26T12:00:00Z",
|
|
319
|
+
"completed_at": "2026-02-26T12:05:00Z",
|
|
320
|
+
"task_id": "task-1",
|
|
321
|
+
"task_title": "Task Title",
|
|
322
|
+
"duration_ms": 300000,
|
|
323
|
+
"status": "success|partial|failed",
|
|
324
|
+
"git_commit": "abc1234",
|
|
325
|
+
"quality_checks": {
|
|
326
|
+
"type_check": true,
|
|
327
|
+
"lint": true,
|
|
328
|
+
"tests": true,
|
|
329
|
+
"coverage_met": true
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## Best Practices
|
|
335
|
+
|
|
336
|
+
### 1. Clear Acceptance Criteria
|
|
337
|
+
❌ Bad: "Make it work"
|
|
338
|
+
✅ Good: "User can click button and see modal dialog with form"
|
|
339
|
+
|
|
340
|
+
### 2. Limit to 1 Task per Run
|
|
341
|
+
Run Ralph on single focused task for best results
|
|
342
|
+
```bash
|
|
343
|
+
# Focus on one task at a time
|
|
344
|
+
rulebook ralph run --max-iterations 5
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### 3. Review Iteration Results
|
|
348
|
+
Check quality gates and learnings between runs
|
|
349
|
+
```bash
|
|
350
|
+
rulebook ralph history --limit 1 # See latest iteration
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### 4. Break Large Features
|
|
354
|
+
Don't try to implement entire systems in one run
|
|
355
|
+
- Task 1: API endpoint with basic validation
|
|
356
|
+
- Task 2: Database models and migrations
|
|
357
|
+
- Task 3: Error handling and edge cases
|
|
358
|
+
- Task 4: Tests and documentation
|
|
359
|
+
|
|
360
|
+
### 5. Inspect Failed Iterations
|
|
361
|
+
If status is "failed", examine what went wrong:
|
|
362
|
+
```bash
|
|
363
|
+
cat .rulebook/ralph/history/iteration-N.json
|
|
364
|
+
cat .rulebook/ralph/progress.txt
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### 6. Use Learnings from History
|
|
368
|
+
Ralph extracts and stores learnings from iterations. Review these to understand what strategies worked.
|
|
369
|
+
|
|
370
|
+
## Troubleshooting
|
|
371
|
+
|
|
372
|
+
### Iteration Loop Stops Early
|
|
373
|
+
**Cause**: Hit max iterations or all tasks completed
|
|
374
|
+
|
|
375
|
+
**Solution**:
|
|
376
|
+
- Check status: `rulebook ralph status`
|
|
377
|
+
- View history: `rulebook ralph history`
|
|
378
|
+
- Increase max iterations: `rulebook ralph run --max-iterations 20`
|
|
379
|
+
|
|
380
|
+
### Quality Gates Failing
|
|
381
|
+
**Cause**: Type-check, lint, tests, or coverage not meeting standards
|
|
382
|
+
|
|
383
|
+
**Solution**:
|
|
384
|
+
- Review failing gate in iteration history
|
|
385
|
+
- Check PRD acceptance criteria match quality gates
|
|
386
|
+
- Ensure task is small enough for single iteration
|
|
387
|
+
|
|
388
|
+
### Context Loss Events
|
|
389
|
+
**Cause**: Agent ran out of context window during iteration
|
|
390
|
+
|
|
391
|
+
**Solution**:
|
|
392
|
+
- Break task into smaller pieces
|
|
393
|
+
- Reduce task description complexity
|
|
394
|
+
- Increase agent context window if possible
|
|
395
|
+
|
|
396
|
+
### Ralph State Gets Stuck
|
|
397
|
+
**Cause**: Invalid state.json or corrupted PRD
|
|
398
|
+
|
|
399
|
+
**Solution**:
|
|
400
|
+
```bash
|
|
401
|
+
rm .rulebook/ralph/state.json # Reset state
|
|
402
|
+
rulebook ralph init # Regenerate PRD
|
|
403
|
+
rulebook ralph run # Restart loop
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
## Examples
|
|
407
|
+
|
|
408
|
+
### Example 1: Simple Feature Implementation
|
|
409
|
+
Task: Add dark mode toggle button
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
# Initialize Ralph
|
|
413
|
+
rulebook ralph init
|
|
414
|
+
|
|
415
|
+
# Run for up to 3 iterations
|
|
416
|
+
rulebook ralph run --max-iterations 3
|
|
417
|
+
|
|
418
|
+
# Check results
|
|
419
|
+
rulebook ralph history
|
|
420
|
+
|
|
421
|
+
# Review final output
|
|
422
|
+
cat .rulebook/ralph/history/iteration-*.json
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Example 2: Multiple Task Execution
|
|
426
|
+
Tasks: Several small features to implement
|
|
427
|
+
|
|
428
|
+
```bash
|
|
429
|
+
# Run multiple tasks with generous iteration limit
|
|
430
|
+
rulebook ralph run --max-iterations 20
|
|
431
|
+
|
|
432
|
+
# Monitor progress
|
|
433
|
+
watch -n 5 'rulebook ralph status'
|
|
434
|
+
|
|
435
|
+
# Pause if needed
|
|
436
|
+
rulebook ralph pause
|
|
437
|
+
|
|
438
|
+
# Review and resume
|
|
439
|
+
rulebook ralph history
|
|
440
|
+
rulebook ralph resume
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### Example 3: Debugging Failed Iteration
|
|
444
|
+
```bash
|
|
445
|
+
# Run into failure
|
|
446
|
+
rulebook ralph run --max-iterations 3
|
|
447
|
+
|
|
448
|
+
# See what failed
|
|
449
|
+
cat .rulebook/ralph/history/iteration-3.json
|
|
450
|
+
|
|
451
|
+
# View full progress log
|
|
452
|
+
tail -50 .rulebook/ralph/progress.txt
|
|
453
|
+
|
|
454
|
+
# Manual fix and resume
|
|
455
|
+
rulebook ralph resume
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
## Limitations
|
|
459
|
+
|
|
460
|
+
- **Single Sequential Loop**: Ralph processes one task at a time sequentially
|
|
461
|
+
- **No Parallel Execution**: Tasks don't run in parallel (by design)
|
|
462
|
+
- **No Task Dependencies**: No automatic dependency resolution between tasks
|
|
463
|
+
- **Manual Task Ordering**: You order tasks by priority in PRD
|
|
464
|
+
|
|
465
|
+
## Related Documentation
|
|
466
|
+
|
|
467
|
+
- See `/.rulebook/specs/RULEBOOK.md` for task structure
|
|
468
|
+
- See `/.rulebook/specs/QUALITY_ENFORCEMENT.md` for quality gates
|
|
469
|
+
- See `/rulebook/AGENTS.md` for AI agent integration
|
|
470
|
+
|
|
471
|
+
<!-- RALPH:END -->
|