llm-as-computer/SKILL.md
Execute programs on a compiled transformer stack machine where every instruction fetch and memory read is a parabolic attention head. Demonstrates that transformer attention + FF layers can implement a working computer. Use when user mentions "llm-as-computer", "lac", "stack machine", "compiled transformer", "percepta", "parabolic attention", "execute program", or asks to run/trace programs on the transformer executor.
npx skillsauth add oaustegard/claude-skills llm-as-computerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A working computer built from transformer primitives. Every instruction fetch and stack read is a parabolic attention head (dot-product → argmax → value extraction). The transformer's weights ARE the interpreter — compiled analytically, not trained.
Attention is lookup; feed-forward is routing. A vanilla transformer with compiled weights can execute arbitrary programs: loops, recursion, arithmetic, memory access. 55 opcodes covering WASM i32 semantics. 21M+ steps/second via the Mojo executor.
cd /mnt/skills/user/llm-as-computer/src && bash setup.sh
This installs Mojo (~20s) and compiles the executor binary (~6s). If Mojo is unavailable, the skill falls back to a pure-Python executor (slower but functional).
import sys
sys.path.insert(0, '/mnt/skills/user/llm-as-computer/src')
from programs import make_fibonacci, make_factorial, make_gcd, make_multiply
from runner import run, setup
# Ensure Mojo is compiled (idempotent)
setup()
# Run a program — shows instructions, trace, result
prog, expected = make_fibonacci(10)
print(run(prog))
# Benchmark mode — measures throughput
print(run(prog, benchmark=True, repeat=200))
From programs.py — all return (program, expected_result):
| Generator | Description | Example |
|-----------|-------------|---------|
| make_fibonacci(n) | Iterative fib via SWAP+OVER+ADD+ROT | fib(10)=55, 111 steps |
| make_multiply(a, b) | Repeated addition | mul(7,8)=56 |
| make_factorial(n) | Loop with MUL | fact(8)=40320 |
| make_gcd(a, b) | Euclidean algorithm | gcd(48,18)=6 |
| make_power_of_2(n) | Repeated doubling | 2^7=128 |
| make_sum_1_to_n(n) | Accumulation loop | sum(15)=120 |
| make_is_even(n) | Parity check | is_even(7)=0 |
| make_native_multiply(a,b) | Single MUL opcode | |
| make_native_divmod(a,b) | DIV_S + REM_S | |
| make_compare_binary(op,a,b) | eq/ne/lt_s/gt_s/le_s/ge_s | |
| make_bitwise_binary(op,a,b) | and/or/xor/shl/shr_u/rotl/rotr | |
| make_select(a,b,c) | Conditional select | |
from isa_lite import program
# Assembly tuples
prog = program(
('PUSH', 10),
('PUSH', 20),
('ADD',),
('DUP',),
('ADD',), # (10+20)*2 = 60
('HALT',),
)
print(run(prog))
# Loops: countdown from 5
prog = program(
('PUSH', 5), # 0: counter
('PUSH', 1), # 1: decrement
('SUB',), # 2: counter - 1
('DUP',), # 3: copy for JNZ test
('JNZ', 1), # 4: loop if non-zero
('HALT',), # 5: done, top = 0
)
print(run(prog))
Stack: PUSH n, POP, DUP, SWAP, OVER, ROT Arithmetic: ADD, SUB, MUL, DIV_S, DIV_U, REM_S, REM_U Comparison: EQZ, EQ, NE, LT_S/U, GT_S/U, LE_S/U, GE_S/U Bitwise: AND, OR, XOR, SHL, SHR_S/U, ROTL, ROTR Unary: CLZ, CTZ, POPCNT, ABS, NEG, SELECT Control: JZ addr, JNZ addr, CALL addr, RETURN, HALT, NOP Locals: LOCAL.GET idx, LOCAL.SET idx, LOCAL.TEE idx Memory: I32.LOAD, I32.STORE, I32.LOAD8_U/S, I32.LOAD16_U/S, I32.STORE8, I32.STORE16
All arithmetic is 32-bit signed with WASM i32 semantics (wrap on overflow).
The key insight: parabolic encoding k = (2j, -j²) makes dot-product attention peak
sharply at a target position. Same encoding addresses program memory, stack, locals,
and heap without interference. Each attention head is a compiled W_Q @ state → query,
W_K @ memory → keys, scores = K @ q, output = V[argmax(scores)].
To pull latest source from the repository:
cd /mnt/skills/user/llm-as-computer/src
GH_TOKEN=$(grep GH_TOKEN /mnt/project/GitHub.env 2>/dev/null | cut -d= -f2)
for f in executor.mojo; do
curl -sL -H "Authorization: token $GH_TOKEN" -H "Accept: application/vnd.github.v3.raw" \
"https://api.github.com/repos/oaustegard/llm-as-computer/contents/src/$f?ref=main" > $f
done
for f in isa_lite.py programs.py runner.py; do
curl -sL -H "Authorization: token $GH_TOKEN" -H "Accept: application/vnd.github.v3.raw" \
"https://api.github.com/repos/oaustegard/llm-as-computer/contents/skill/src/$f?ref=main" > $f
done
rm -f percepta_exec # force recompile
bash setup.sh
development
--- name: verifying-claims description: Check that a document's claims about code are actually true by reading the prose, the code, and the tests and reporting (or fixing) where they disagree. Use whenever the user wants to verify a README, guide, spec, or docstring still matches the code; whenever they mention documentation drift, doc-code sync, "is this still accurate", stale docs, or keeping docs/tests/code consistent; before publishing or merging a docs change; or as a periodic doc-accuracy
tools
Query, filter, and transform Markdown structurally with mq — a jq-like CLI for Markdown. Use to extract headings/sections/code-blocks/links from .md files, build a table of contents, pull code blocks of a given language, slice or reshape LLM prompt/output Markdown, or batch-transform docs. Triggers on "extract sections from this markdown", "get all the code blocks", "jq for markdown", "mq", or any structural query over Markdown that grep/Read can't do cleanly.
development
Composes single-file HTML artifacts (PR review writeups, status reports, incident postmortems, slide decks, design systems, prototypes, flowcharts, module maps, feature explainers, kanban boards, prompt tuners) from a small JSON spec instead of hand-written HTML/CSS/JS. Use when the user asks to "compare options side-by-side", requests an HTML version of a report or review or deck, asks for a flowchart, status update, postmortem, design system reference, interactive prototype, custom editor — or explicitly says "HTML artifact", "single HTML file", "self-contained HTML". Skip for ad-hoc HTML snippets (forms, emails, embedded widgets) where there's no template fit.
development
DAG workflow runner that encodes control flow in code, not prose. Use when a procedure has 3+ steps with branching, retries, or validation that must be enforced — gates as `when=`, edge contracts as `validate=`, predicate loops as `retry_until=`. The runner owns the graph; the LLM provides leaves. Also covers parallel execution, checkpoint resume, detached side-effects.