A programmable shell for AI work. Compose engineering, security,
content, and deployment workflows the way Unix composed software, one
skill, one pipe at a time.
The pipe operator >> is the grammar. Skills are the
lexicon. You compose; the runtime executes.
The lexicon has 285 entries. Most you'll meet later. These ten
cover the day-one workflows — review, test, ship, audit, document,
search — and compose into every recipe above.
The pipe operator >> composes verbs the way Unix
pipes composed software. Each verb is one job; the runtime threads
output to input. Type it in your terminal, paste it into Claude
Code, run it from CI — same grammar everywhere.
01
Ship a feature, end-to-end.
$lunapipe"req >> plan >> go >> ll-no-bluf >> pr 'feat: auth'"
composed: 5 stages
[01] req → 12 requirements extracted from src/auth/*
[02] plan → 8 ordered tasks (deps resolved)
[03] go → 6 files written, 2 modified
[04] ll-no-bluf → 0 unverified claims in commits
[05] pr → PR #142 opened: feat: auth
ok. 14m21s wall clock. 1 PR, 1 human.
One line does the whole sprint: read the codebase, propose tasks, implement them, audit your own claims, open the PR. No context switching.
same parser. same runtime. results stream into the chat.
The /luna-agents:pipe command takes the same pipe
expression. Quoting rules match POSIX shell. Stages stream their
output back as the run progresses.
The power, in three lines.
Composable. Every verb is the same shape: takes a
thing, returns a thing. So any two verbs compose. 285 verbs ×
285 verbs = 81225 two-stage pipelines you didn't have to
design.
Honest. Pipe in /ll-no-bluf and
every claim downstream is verified against the code. The runtime
refuses to ship lies.
Portable. Same pipe runs in your shell, in
Claude Code, in CI. No re-syntax, no glue script. The pipe IS
the glue.
Configuration files describe state. Pipelines describe motion.
Luna Pipes treats agent skills as words and composition as
grammar: a tradition older than JSON, sharper than YAML,
and built for the way work actually runs.
Forth, Joy, Factor, and Unix proved you can build a programming
language from one good idea: concatenation. f g h
means do f, then g, then h,
passing the value along. Luna Pipes adapts this for the agent era.
The unit of composition is not a function call; it is a skill
invocation. The runtime is your machine.
The same expression, three ways.
$/personagenerate>>ghost"post">>publishnotion
composed: 3 stages, sequential
With repetition.
$/personagenerate>>ghost"post"*4>>publishnotion
composed: 6 stages, ghost runs 4 times in parallel, then publish
Most AI workflow tools express composition as configuration. Luna Pipes
expresses composition as code, the same trick Unix played in 1973. Side
by side, on the same job, four personas writing a launch post each, then
posting to Notion.
Composition lives outside the executor (CI definitions, orchestrators).
Composition is the language. The shell is the executor.
Renaming an action means a global find-and-replace across files.
Renaming a verb is a one-line edit; pipes that used it break loudly.
§
Skills already touch these.
Many of the lexicon entries call one of the services below. Each is
accessed through a verb in the lexicon, not a bespoke integration page.
The runtime carries credentials; the pipe carries intent.
GitHubissues, PRs, releases, commits
Slackchannels, threads, alerts
Notionpages, databases, indexes
Cloudflareworkers, pages, KV, R2, D1
OpenAIgpt, embeddings, vision
Anthropicclaude, opus, sonnet, haiku
Stripepayments, subs, dunning
LemonSqueezysubscriptions, licenses, refunds
Linearissues, projects, triage
Postgresqueries, migrations, audit
Dockerimages, builds, manifests
Figmafiles, frames, design tokens
Five operators. That is the whole grammar.
>>
pipe. Pass the output of the left skill into the right.
*
repeat. Run the preceding stage N times, in parallel.
||
fanout. Run two stages concurrently; join their results.
?
conditional. Branch on a flag; either side is a sub-pipe.
!
sink. Run for effect; discard the value.
Read the full grammar in Chapter 02, including the
production rules in EBNF.
The standard library is 358 words long.
Skills are the language's vocabulary. Each one is a callable verb with
a strict signature, an etymology, and example sentences. You install
one binary; you inherit the whole lexicon.
Luna Agents ships as a CLI and a Claude Code plugin.
Both expose the same lexicon. Pipes work in your terminal, your editor,
and your CI. See Chapter 04 for platform-specific notes.