Skip to content

Commit 61f57b1

Browse files
committed
docs: add demo GIFs and improve README
- Add INSTALLATION.md with detailed install instructions - Simplify README installation section (just Homebrew) - Reorder README: Installation first, then Quick Start - Add 3 storytelling GIFs showing the full workflow: - gif-2-build.gif: Build loop in action (shown first as hook) - gif-1-init.gif: Initialize and create PRD - gif-3-done.gif: Project complete with results - Include recording scripts for future GIF updates
1 parent 6ac2712 commit 61f57b1

20 files changed

+605
-46
lines changed

INSTALLATION.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Installation
2+
3+
## Homebrew (Recommended)
4+
5+
The easiest way to install LoopForge on macOS or Linux:
6+
7+
```bash
8+
brew install matheus3301/tap/loopforge
9+
```
10+
11+
## Go Install
12+
13+
If you have Go 1.22+ installed:
14+
15+
```bash
16+
go install github.com/matheus3301/loopforge/cmd/loopforge@latest
17+
```
18+
19+
Make sure `$GOPATH/bin` is in your `PATH`.
20+
21+
## Binary Download
22+
23+
Download pre-built binaries from the [releases page](https://github.com/matheus3301/loopforge/releases).
24+
25+
### macOS (Apple Silicon)
26+
```bash
27+
curl -LO https://github.com/matheus3301/loopforge/releases/latest/download/loopforge_darwin_arm64.tar.gz
28+
tar -xzf loopforge_darwin_arm64.tar.gz
29+
sudo mv loopforge /usr/local/bin/
30+
```
31+
32+
### macOS (Intel)
33+
```bash
34+
curl -LO https://github.com/matheus3301/loopforge/releases/latest/download/loopforge_darwin_amd64.tar.gz
35+
tar -xzf loopforge_darwin_amd64.tar.gz
36+
sudo mv loopforge /usr/local/bin/
37+
```
38+
39+
### Linux (x64)
40+
```bash
41+
curl -LO https://github.com/matheus3301/loopforge/releases/latest/download/loopforge_linux_amd64.tar.gz
42+
tar -xzf loopforge_linux_amd64.tar.gz
43+
sudo mv loopforge /usr/local/bin/
44+
```
45+
46+
### Linux (ARM64)
47+
```bash
48+
curl -LO https://github.com/matheus3301/loopforge/releases/latest/download/loopforge_linux_arm64.tar.gz
49+
tar -xzf loopforge_linux_arm64.tar.gz
50+
sudo mv loopforge /usr/local/bin/
51+
```
52+
53+
### Windows
54+
```powershell
55+
# Download from releases page and add to PATH
56+
```
57+
58+
## Build from Source
59+
60+
Requires Go 1.22+:
61+
62+
```bash
63+
git clone https://github.com/matheus3301/loopforge.git
64+
cd loopforge
65+
go build -o loopforge ./cmd/loopforge
66+
67+
# Optional: install to GOPATH/bin
68+
go install ./cmd/loopforge
69+
```
70+
71+
## Verify Installation
72+
73+
```bash
74+
loopforge version
75+
```
76+
77+
## Uninstall
78+
79+
### Homebrew
80+
```bash
81+
brew uninstall loopforge
82+
```
83+
84+
### Manual
85+
```bash
86+
rm $(which loopforge)
87+
```

README.md

Lines changed: 36 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,46 @@
1313
<a href="https://github.com/matheus3301/loopforge/blob/master/LICENSE"><img src="https://img.shields.io/github/license/matheus3301/loopforge?style=flat-square" alt="License"></a>
1414
<a href="https://github.com/matheus3301/loopforge/actions"><img src="https://img.shields.io/github/actions/workflow/status/matheus3301/loopforge/ci.yml?style=flat-square&label=CI" alt="CI"></a>
1515
</p>
16-
17-
<p>
18-
<a href="#installation">Installation</a> •
19-
<a href="#quick-start">Quick Start</a> •
20-
<a href="#how-it-works">How It Works</a> •
21-
<a href="#documentation">Docs</a>
22-
</p>
2316
</div>
2417

2518
<br>
2619

27-
## Why LoopForge?
20+
## Installation
21+
22+
```bash
23+
brew install matheus3301/tap/loopforge
24+
```
25+
26+
> 📦 Other methods (Go install, binary download, build from source): [INSTALLATION.md](INSTALLATION.md)
27+
28+
## See It In Action 🔨
29+
30+
<img src="assets/gif-2-build.gif" alt="Build with LoopForge" width="650" />
31+
32+
## Quick Start
33+
34+
### 1. Initialize & Create PRD 📝
35+
36+
```bash
37+
loopforge init
38+
loopforge prd generate "Build a REST API with user authentication"
39+
```
40+
41+
<img src="assets/gif-1-init.gif" alt="Initialize LoopForge" width="600" />
42+
43+
### 2. Run the Build Loop
44+
45+
```bash
46+
loopforge build
47+
```
48+
49+
### 3. Done! ✨
50+
51+
<img src="assets/gif-3-done.gif" alt="Project Complete" width="600" />
52+
53+
<br>
54+
55+
## Features
2856

2957
AI coding agents like Claude Code, Codex, and OpenCode are powerful, but they work best with **focused, single-task prompts**. LoopForge orchestrates these agents in structured, iterative loops — one story at a time.
3058

@@ -61,44 +89,6 @@ Each iteration:
6189
4. **Commits** on success, or resets and logs on failure
6290
5. **Repeats** until all stories are done
6391

64-
## Installation
65-
66-
### Homebrew (macOS/Linux)
67-
68-
```bash
69-
brew install matheus3301/tap/loopforge
70-
```
71-
72-
### Go Install
73-
74-
```bash
75-
go install github.com/matheus3301/loopforge/cmd/loopforge@latest
76-
```
77-
78-
### Binary Download
79-
80-
Download from the [releases page](https://github.com/matheus3301/loopforge/releases) for your platform.
81-
82-
### Build from Source
83-
84-
```bash
85-
git clone https://github.com/matheus3301/loopforge.git
86-
cd loopforge && go build -o loopforge ./cmd/loopforge
87-
```
88-
89-
## Quick Start
90-
91-
```bash
92-
# Initialize in your project
93-
loopforge init
94-
95-
# Generate a PRD from a description
96-
loopforge prd generate "Build a REST API with user authentication"
97-
98-
# Run the build loop
99-
loopforge build
100-
```
101-
10292
## Core Concepts
10393

10494
### PRD (Product Requirements Document)

assets/demo.gif

184 KB
Loading

assets/gif-1-init.gif

24.4 KB
Loading

assets/gif-2-build.gif

24.3 KB
Loading

assets/gif-3-done.gif

13.7 KB
Loading

demo-full.cast

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{"version":3,"term":{"cols":80,"rows":24},"timestamp":1769218311,"command":"./scripts/demo-full.sh","env":{"SHELL":"/bin/bash"}}
2+
[0.003, "o", "$ loopforge init\r\n"]
3+
[0.507, "o", "✓ Initialized LoopForge in .loopforge/\r\n\r\n→ Next steps:\r\n 1. Create a PRD: loopforge prd generate 'your project description'\r\n 2. Or add an existing PRD to .loopforge/prd.json\r\n 3. Run the build loop: loopforge build\r\n"]
4+
[1.506, "o", "\r\n→ PRD created with 3 stories\r\n"]
5+
[1.003, "o", "\r\n$ loopforge build\r\n"]
6+
[0.506, "o", "→ PRD: hello-cli\r\nTotal: 3\r\nOpen: 3\r\nIn Progress: 0\r\nDone: 0\r\nBlocked: 0\r\n\r\n"]
7+
[0.000, "o", "→ Starting build loop (Run ID: 20260123-223155)\r\n\r\n"]
8+
[32.696, "o", "✓ Iteration 1: US-001 - Initialize Go module (completed, 33s)\r\n"]
9+
[21.431, "o", "✓ Iteration 2: US-002 - Create main.go (completed, 21s)\r\n"]
10+
[24.235, "o", "✓ Iteration 3: US-003 - Add --name flag (completed, 24s)\r\n\r\n"]
11+
[0.001, "o", "Build Summary (Run: 20260123-223155)\r\n╭────────────────────────╮\r\n│ Status: completed │\r\n│ Iterations: 3 │\r\n│ Completed: 3 │\r\n│ Failed: 0 │\r\n│ Duration: 1m18s │\r\n╰────────────────────────╯\r\n"]
12+
[1.003, "o", "\r\n$ go run main.go\r\n"]
13+
[0.546, "o", "Hello, World!\r\n"]
14+
[0.503, "o", "\r\n$ go run main.go --name=LoopForge\r\n"]
15+
[0.545, "o", "Hello, LoopForge!\r\n"]
16+
[1.003, "o", "\r\n✨ Built autonomously with LoopForge!\r\n"]
17+
[2.003, "x", "0"]

demo.cast

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
{"version":3,"term":{"cols":80,"rows":24},"timestamp":1769217802,"command":"./demo.sh","env":{"SHELL":"/bin/bash"}}
2+
[0.011, "o", "TERM environment variable not set.\r\n"]
3+
[0.000, "o", "$ "]
4+
[0.000, "o", "c"]
5+
[0.052, "o", "d"]
6+
[0.052, "o", " "]
7+
[0.052, "o", "~"]
8+
[0.052, "o", "/"]
9+
[0.051, "o", "w"]
10+
[0.052, "o", "w"]
11+
[0.051, "o", "w"]
12+
[0.052, "o", "/"]
13+
[0.052, "o", "s"]
14+
[0.052, "o", "n"]
15+
[0.052, "o", "a"]
16+
[0.052, "o", "k"]
17+
[0.051, "o", "e"]
18+
[0.052, "o", "-"]
19+
[0.052, "o", "g"]
20+
[0.052, "o", "a"]
21+
[0.052, "o", "m"]
22+
[0.051, "o", "e"]
23+
[0.052, "o", "-"]
24+
[0.052, "o", "d"]
25+
[0.052, "o", "e"]
26+
[0.052, "o", "m"]
27+
[0.053, "o", "o"]
28+
[0.051, "o", "\r\n"]
29+
[0.804, "o", "$ l"]
30+
[0.052, "o", "o"]
31+
[0.052, "o", "o"]
32+
[0.053, "o", "p"]
33+
[0.052, "o", "f"]
34+
[0.052, "o", "o"]
35+
[0.052, "o", "r"]
36+
[0.053, "o", "g"]
37+
[0.052, "o", "e"]
38+
[0.053, "o", " "]
39+
[0.052, "o", "i"]
40+
[0.052, "o", "n"]
41+
[0.052, "o", "i"]
42+
[0.052, "o", "t"]
43+
[0.053, "o", "\r\n"]
44+
[0.383, "o", "✓ Initialized LoopForge in .loopforge/\r\n\r\n→ Next steps:\r\n 1. Create a PRD: loopforge prd generate 'your project description'\r\n 2. Or add an existing PRD to .loopforge/prd.json\r\n 3. Run the build loop: loopforge build\r\n"]
45+
[1.003, "o", "$ "]
46+
[0.000, "o", "l"]
47+
[0.052, "o", "s"]
48+
[0.051, "o", " "]
49+
[0.052, "o", "-"]
50+
[0.052, "o", "l"]
51+
[0.051, "o", "a"]
52+
[0.052, "o", " "]
53+
[0.052, "o", "."]
54+
[0.052, "o", "l"]
55+
[0.052, "o", "o"]
56+
[0.051, "o", "o"]
57+
[0.052, "o", "p"]
58+
[0.053, "o", "f"]
59+
[0.051, "o", "o"]
60+
[0.052, "o", "r"]
61+
[0.053, "o", "g"]
62+
[0.052, "o", "e"]
63+
[0.051, "o", "/"]
64+
[0.052, "o", "\r\n"]
65+
[0.303, "o", "total 24\r\ndrwxr-xr-x 3 javazap javazap 4096 Jan 23 22:23 .\r\ndrwxrwxr-x 4 javazap javazap 4096 Jan 23 22:23 ..\r\n-rw-r--r-- 1 javazap javazap 0 Jan 23 22:23 activity.log\r\n-rw-r--r-- 1 javazap javazap 360 Jan 23 22:23 config.yaml\r\n-rw-r--r-- 1 javazap javazap 0 Jan 23 22:23 errors.log\r\n-rw-r--r-- 1 javazap javazap 923 Jan 23 22:23 guardrails.md\r\n-rw-r--r-- 1 javazap javazap 81 Jan 23 22:23 progress.md\r\ndrwxr-xr-x 2 javazap javazap 4096 Jan 23 22:23 runs\r\n"]
66+
[1.003, "o", "$ l"]
67+
[0.052, "o", "o"]
68+
[0.052, "o", "o"]
69+
[0.052, "o", "p"]
70+
[0.052, "o", "f"]
71+
[0.052, "o", "o"]
72+
[0.052, "o", "r"]
73+
[0.052, "o", "g"]
74+
[0.053, "o", "e"]
75+
[0.052, "o", " "]
76+
[0.052, "o", "v"]
77+
[0.052, "o", "e"]
78+
[0.052, "o", "r"]
79+
[0.052, "o", "s"]
80+
[0.052, "o", "i"]
81+
[0.052, "o", "o"]
82+
[0.051, "o", "n"]
83+
[0.051, "o", "\r\n"]
84+
[0.306, "o", "LoopForge 0.1.0\r\n"]
85+
[1.003, "o", "$ l"]
86+
[0.052, "o", "o"]
87+
[0.052, "o", "o"]
88+
[0.052, "o", "p"]
89+
[0.052, "o", "f"]
90+
[0.052, "o", "o"]
91+
[0.052, "o", "r"]
92+
[0.052, "o", "g"]
93+
[0.052, "o", "e"]
94+
[0.053, "o", " "]
95+
[0.052, "o", "b"]
96+
[0.052, "o", "u"]
97+
[0.052, "o", "i"]
98+
[0.052, "o", "l"]
99+
[0.052, "o", "d"]
100+
[0.052, "o", " "]
101+
[0.052, "o", "-"]
102+
[0.052, "o", "-"]
103+
[0.052, "o", "d"]
104+
[0.053, "o", "r"]
105+
[0.052, "o", "y"]
106+
[0.052, "o", "-"]
107+
[0.052, "o", "r"]
108+
[0.052, "o", "u"]
109+
[0.052, "o", "n"]
110+
[0.052, "o", "\r\n"]
111+
[0.306, "o", "No PRD found (expected in demo)\r\n"]
112+
[1.002, "o", "\r\n✨ LoopForge initialized!\r\n"]
113+
[2.003, "x", "0"]

demo.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/bin/bash
2+
# Demo script for LoopForge
3+
4+
# Simulate typing
5+
type_slow() {
6+
echo -n "$ "
7+
for ((i=0; i<${#1}; i++)); do
8+
echo -n "${1:$i:1}"
9+
sleep 0.05
10+
done
11+
echo
12+
sleep 0.3
13+
}
14+
15+
clear
16+
17+
# Navigate to demo project
18+
type_slow "cd ~/www/snake-game-demo"
19+
cd ~/www/snake-game-demo
20+
sleep 0.5
21+
22+
# Initialize LoopForge
23+
type_slow "loopforge init"
24+
loopforge init
25+
sleep 1
26+
27+
# Show structure
28+
type_slow "ls -la .loopforge/"
29+
ls -la .loopforge/
30+
sleep 1
31+
32+
# Show version
33+
type_slow "loopforge version"
34+
loopforge version
35+
sleep 1
36+
37+
# Run dry-run build
38+
type_slow "loopforge build --dry-run"
39+
loopforge build --dry-run 2>/dev/null || echo "No PRD found (expected in demo)"
40+
sleep 1
41+
42+
echo
43+
echo "✨ LoopForge initialized!"
44+
sleep 2

0 commit comments

Comments
 (0)