#580 by GitHub stars
achimala/dream-loop
Build a game or app from a description so that a live screenshot matches a generated rendering. Use when the user says "dream loop" or asks for something built to a very high level of graphical fidelity.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
9bddb901f7d0 → 9bddb901f7d0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 9bddb901f7d0
No earlier version was observed for comparison.
Heat
6.2- Star growth, last 7 daysAhead of 93% of tracked repositories
- Star growth, last 24 hoursAhead of 93% of tracked repositories
- Rank movement, last 7 daysAhead of 55% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
How it works
dream-loop
When your agent uses it
Build a game or app from a description so that a live screenshot matches a generated rendering. Use when the user says "dream loop" or asks for something built to a very high level of graphical fidelity.
What it loads into context
Frontmatter
51 tokensAlways available to the agent
SKILL.md
621 tokensWhen the skill is activated
Reference documents
4,689 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- General
- The target image
- Time budget
Scripts executed separately
scripts/fal-batch.mjsscripts/fal-batch.test.mjsscripts/preview-server.py
Files
.gitignoreasset13 bytesLICENSEasset1,070 bytesREADME.mddoc2,182 bytesSKILL.mdcore2,903 bytesassets/vesper-preview.gifasset6,976,947 bytesreferences/fal.mddoc5,318 bytesreferences/plus-mode/assets-3d.mddoc3,315 bytesreferences/plus-mode/workflow.mddoc2,282 bytesreferences/pro-mode/assets-3d.mddoc3,151 bytesreferences/pro-mode/workflow.mddoc4,462 bytesscripts/fal-batch.mjsruns11,733 bytesscripts/fal-batch.test.mjsruns9,124 bytesscripts/preview-server.pyruns2,101 bytes
Read SKILL.md
# dream-loop
This is a process for you to autonomously build extremely impressive visuals, especially for 3D scenes (e.g. in a game or app).
Your first step is to determine which workflow to use:
- If the user told you to use the Plus or Pro workflow explicitly, that's your answer
- If not, check if the user is on a low or high tier coding subscription. "Low tier" means ChatGPT Plus or equivalent. "High tier" means ChatGPT Pro. For low-tier subscriptions, use the Plus workflow. For high-tier, use the Pro workflow.
Plus workflow: read [references/plus-mode/workflow.md](references/plus-mode/workflow.md)
Pro workflow: read [references/pro-mode/workflow.md](references/pro-mode/workflow.md)
Do not read both documents. They are not inter-compatible.
View the complete source on GitHubSkills included
- dream-loop
Repository facts
- License
- MIT
- Created
- Sep 7, 2026
- Last pushed
- Sep 9, 2026
- Forks
- 180
- Open issues
- 3
- Project activity
- Active
Rank over the last 12 weeks
Now #580 · best #485 · down 71 in 30 days
- #575 from Oct 29 to Oct 30
- #574 on Oct 31
- #576 on Nov 1
- #577 on Nov 2
- #579 from Nov 3 to Nov 4
- #580 since Nov 5
49 earlier periods
- #918 on Sep 6
- #926 on Sep 7
- #928 on Sep 8
- #883 on Sep 9
- #760 on Sep 10
- #685 on Sep 11
- #660 on Sep 12
- #640 on Sep 13
- #649 on Sep 14
- #536 on Sep 15
- #529 on Sep 16
- #521 from Sep 17 to Sep 18
- #505 on Sep 19
- #512 on Sep 20
- #508 on Sep 21
- #516 on Sep 22
- #508 on Sep 23
- #494 on Sep 24
- #493 on Sep 25
- #489 on Sep 26
- #508 from Sep 27 to Sep 28
- #521 on Sep 29
- #510 on Sep 30
- #504 on Oct 1
- #502 on Oct 2
- #491 on Oct 3
- #485 on Oct 4
- #492 on Oct 5
- #510 on Oct 6
- #509 on Oct 7
- #525 on Oct 8
- #522 on Oct 9
- #514 on Oct 10
- #512 on Oct 11
- #524 on Oct 12
- #521 on Oct 13
- #522 on Oct 14
- #519 on Oct 15
- #522 on Oct 16
- #512 on Oct 17
- #518 on Oct 18
- #531 on Oct 19
- #533 on Oct 20
- #541 on Oct 21
- #529 on Oct 22
- #524 on Oct 23
- #514 on Oct 24
- #565 on Oct 25
- #573 on Oct 28
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 3, 2026
- No broad tool permissions
- No dangerous shell commands
- 31 network referencesin 5 files: scripts/fal-batch.test.mjs:32 scripts/fal-batch.mjs:106 scripts/preview-server.py:43 and 2 more
- No hidden or obfuscated text
- No instruction overrides
- 3 executable scriptsin 3 files: scripts/fal-batch.mjs:1 scripts/fal-batch.test.mjs:1 scripts/preview-server.py:1
- 3 references to secretsin 2 files: scripts/fal-batch.mjs:55 references/fal.md:3
- No requests to vote in Hot
Show all 37 signals by file
README.md
references/fal.md
- Access to secretsline 3
[Credential-related source omitted] - Network accessline 68
Model inputs and outputs: [Tripo H3.1](https://fal.ai/models/tripo3d/h3.1/image-to-3d/api), [Trellis](https://fal.ai/models/fal-ai/trellis/api). Queue behavior: [Fal asynchronous inference](https://fal.ai/docs/documentation/model-apis/infer
scripts/fal-batch.mjs
- Executable scriptline 1
#!/usr/bin/env node - Access to secretsline 55
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Network accessline 106
const mime = imageMime(bytes); job.state = 'submitting'; job.submitted_at = new Date().toISOString(); delete job.error; delete job.error_detail; delete job.error_stage; delete job.connection_error; save(); const result = - Network accessline 107
job.state = 'submitting'; job.submitted_at = new Date().toISOString(); delete job.error; delete job.error_detail; delete job.error_stage; delete job.connection_error; save(); const result = await request(`https://queue.fal.run/${j - Network accessline 108
const result = await request(`https://queue.fal.run/${job.endpoint}`, {
scripts/fal-batch.test.mjs
- Executable scriptline 1
Executable file - Network accessline 32
assert.match(JSON.parse(options.body).image_url, /^data:image\/png;base64,.+/); await new Promise(resolve => setTimeout(resolve, 10)); active--; return json({ request_id: `r${i}`, status: 'IN_QUEUE', status_url: `https://queue.f - Network accessline 33
await new Promise(resolve => setTimeout(resolve, 10)); active--; return json({ request_id: `r${i}`, status: 'IN_QUEUE', status_url: `https://queue.fal.run/returned/r${i}/status`, response_url: `https://queue.fal.run/returned/r${i}/res - Network accessline 34
return json({ request_id: `r${i}`, status: 'IN_QUEUE', status_url: `https://queue.fal.run/returned/r${i}/status`, response_url: `https://queue.fal.run/returned/r${i}/result` }); - Network accessline 35
} if (url.endsWith('/status')) return json({ status: 'COMPLETED' }); if (url.endsWith('/result')) return json({ model_mesh: { url: 'https://files.example/model.glb' } }); - Network accessline 36
if (url.endsWith('/status')) return json({ status: 'COMPLETED' }); if (url.endsWith('/result')) return json({ model_mesh: { url: 'https://files.example/model.glb' } }); assert.equal(url, 'https://files.example/model.glb'); - Network accessline 37
if (url.endsWith('/result')) return json({ model_mesh: { url: 'https://files.example/model.glb' } }); assert.equal(url, 'https://files.example/model.glb'); assert.equal(options.headers, undefined, 'download must not receive Fal cred - Network accessline 38
assert.equal(url, 'https://files.example/model.glb'); assert.equal(options.headers, undefined, 'download must not receive Fal credentials'); return new Response(glb()); - Network accessline 75
await runBatch('submit', f.filename, { key: 'test-only-key', fetchFn: async () => { called = true; return json({ request_id: 'retried', status_url: 'https://queue.fal.run/status', response_url: 'https://queue.fal.run/result' }); - Network accessline 76
called = true; return json({ request_id: 'retried', status_url: 'https://queue.fal.run/status', response_url: 'https://queue.fal.run/result' }); } }); - Network accessline 77
return json({ request_id: 'retried', status_url: 'https://queue.fal.run/status', response_url: 'https://queue.fal.run/result' }); - Network accessline 82
test('404 results remain unresolved without overwriting an output with an error page', async t => { const f = fixture(t, 1), data = f.read(); Object.assign(data.jobs[0], { request_id: 'r1', status_url: 'https://queue.fal.run/status', re - Network accessline 83
const f = fixture(t, 1), data = f.read(); Object.assign(data.jobs[0], { request_id: 'r1', status_url: 'https://queue.fal.run/status', response_url: 'https://queue.fal.run/result' }); fs.writeFileSync(f.filename, JSON.stringify(data)); - Network accessline 84
Object.assign(data.jobs[0], { request_id: 'r1', status_url: 'https://queue.fal.run/status', response_url: 'https://queue.fal.run/result' }); - Network accessline 116
for (const value of [key, 'DO NOT SAVE THIS IMAGE', 'base64,AAAA']) assert.equal(saved.includes(value), false); let calls = 0; await runBatch('submit', f.filename, { key, fetchFn: async () => { calls++; return json({request_id:'fixed',s - Network accessline 117
let calls = 0; await runBatch('submit', f.filename, { key, fetchFn: async () => { calls++; return json({request_id:'fixed',status_url:'https://queue.fal.run/status',response_url:'https://queue.fal.run/result'}); } }); assert.equal(calls - Network accessline 118
await runBatch('submit', f.filename, { key, fetchFn: async () => { calls++; return json({request_id:'fixed',status_url:'https://queue.fal.run/status',response_url:'https://queue.fal.run/result'}); } }); - Network accessline 122
test('failed completed results retain their request identity and explain the failure without resubmitting', async t => { const f = fixture(t, 1), data = f.read(); Object.assign(data.jobs[0], { endpoint:'fal-ai/trellis/image-to-3d', requ - Network accessline 123
const f = fixture(t, 1), data = f.read(); Object.assign(data.jobs[0], { endpoint:'fal-ai/trellis/image-to-3d', request_id:'accepted', status_url:'https://queue.fal.run/status',response_url:'https://queue.fal.run/result' }); fs.writeFile - Network accessline 124
Object.assign(data.jobs[0], { endpoint:'fal-ai/trellis/image-to-3d', request_id:'accepted', status_url:'https://queue.fal.run/status',response_url:'https://queue.fal.run/result' }); - Network accessline 140
assert.equal(rows[0].request_id, 'partial-accepted'); assert.equal(rows[0].state, 'submission-uncertain'); const data=f.read();delete data.jobs[0].request_id; Object.assign(data.jobs[0], {state:'IN_QUEUE',response_url:'https://queue.fal - Network accessline 141
const data=f.read();delete data.jobs[0].request_id; Object.assign(data.jobs[0], {state:'IN_QUEUE',response_url:'https://queue.fal.run/result'}); fs.writeFileSync(f.filename, JSON.stringify(data)); - Network accessline 142
Object.assign(data.jobs[0], {state:'IN_QUEUE',response_url:'https://queue.fal.run/result'});
scripts/preview-server.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 43
args = parser.parse_args() handler = partial(Handler, directory=str(Path(args.directory).resolve())) print(f"Preview http://127.0.0.1:{args.port}; POST PNG to /__capture", flush=True) - Network accessline 44
handler = partial(Handler, directory=str(Path(args.directory).resolve())) print(f"Preview http://127.0.0.1:{args.port}; POST PNG to /__capture", flush=True) ThreadingHTTPServer(("127.0.0.1", args.port), handler).serve_forever() - Network accessline 45
print(f"Preview http://127.0.0.1:{args.port}; POST PNG to /__capture", flush=True)
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
No combined signals at this commit.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/achimala-dream-loop/)