openlang

Compact AI-to-AI communication protocol. Use when spawning sub-agents, sending inter-agent messages via sessions_send/sessions_spawn, or when instructed to speak OpenLang. Reduces token usage 5-10x on agent-to-agent channels.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "openlang" with this command: npx skills add andreanjos/openlang

OpenLang — Compact Agent-to-Agent Protocol

When communicating with other agents (via sessions_spawn, sessions_send, or announce), use OpenLang to compress messages 5-10x. Default to L2 for all agent-to-agent communication.

When to Use

  • sessions_spawn task descriptions — compress the task prompt
  • sessions_send messages — compress ping-pong exchanges
  • Announce results — compress announce replies back to requester
  • NOT for human-facing channels — use normal language for Telegram/Slack/user messages

Quick Start

Prefix any agent-to-agent message with ~openlang to signal the receiver should parse as OpenLang. If the receiver doesn't understand, it will still get the gist from the structural cues.

Compression Levels

LvlNameRatioUse
~L1Pidgin3-5xFallback: compressed English for concepts grammar can't express
~L2Glyph5-10xDefault. Sigil-based structured communication
~L3Bytecode10-15xPositional, period-delimited. Bulk ops only

Switch mid-message with ~L1:, ~L2:, ~L3:. Unspecified = L2.

Sigils

SigilIntentExample
?Query?fnd @fs {p:"src/*.ts"}
!Command!del @fs {p:"tmp/"}
>Result>ok {n:3 paths:[...]}
#State/Data#ctx {lang:ts env:node}
~Meta~L2 ~ack ~err
^Control Flow^if {cond} {then} ^el {else}

Structure

@ target · -> pipe · {} params · << >> block scope · [] list · () group · | alt · .. range · :: type · $ variable · !~ negate value

Variables

Bind with ->$name, use with $name. Property access: $var.field.

Vocabulary

Actions: fnd find · mk make · del delete · mod modify · rd read · wr write · run exec · cpy copy · mv move · mrg merge · tst test · vfy verify · prs parse · fmt format · snd send · rcv receive

Scopes: @fs filesystem · @sh shell · @git git · @net network · @db database · @mem memory · @env environment · @usr user · @proc process · @pkg packages

Scoped actions: scope:action!git:mrg vs !db:mrg

Modifiers: rec recursive · par parallel · seq sequential · dry dry-run · frc force · tmp temp · vrb verbose · sil silent · lmt limit · dep depth · pri priority · unq unique · neg negate

Qualifiers: rcn recent · lrg large · sml small · chg changed · stl stale · nw new · old old · act active · idl idle · fld failed · hlt healthy · hot hot · cld cold

Types: str · int · bln · lst · map · fn · pth · rgx · err · nul

Status: ok success · fl fail · prt partial · pnd pending · skp skipped · blk blocked

Control Flow

^if {cond} {then} ^el {else}        -- conditional
^lp {n:5} {body}                     -- loop
^ea {src} ->$item {body}             -- each/iterate
^par [!t1, !t2, !t3]                -- parallel
^seq [!t1, !t2, !t3]                -- sequential
^wt {cond} / ^rt {val}              -- wait / return
^br / ^ct                            -- break / continue
^frk:name {body}                     -- fork named task
^jn [names] ->$results               -- join/await
^lk:name / ^ulk:name                 -- mutex lock/unlock
^ch:name ::type buf:N                -- declare channel
^tx:name {v:$val} / ^rx:name ->$val -- send/receive channel
^tmo:N                               -- timeout (seconds)

<< >> for multi-statement bodies:

^ea {$files} ->$f <<
  ?rd @fs {p:$f} ->$content
  ^if {$content.sz>1000} {!mod @fs {p:$f trunc:true}}
>>

Composition

Chain with -> pipes, sequence with ; or newlines:

?fnd @fs {p:"*.ts" rgx:"parse"} ->$lst | ^ea ->$f !tst @sh {cmd:"vitest $f"} ->$rpt

Errors

~err {code:E_PARSE lvl:warn msg:"unknown token"}
~err {code:E_FS_NOT_FOUND lvl:fatal msg:"missing config"}

Codes: E_PARSE E_FS_* E_SH_* E_NET_* E_DB_* E_AUTH. Levels: info warn fatal.

Token Extension

~unk {tok:"xyz" req:def}             -- request definition
~def {tok:"xyz" means:"..."}         -- define inline

L3 Bytecode

Positional, period-delimited. Backtick-quote fields with periods:

Q.fs.fnd.`app.config.ts`.rec
R.ok.3.[`src/a.ts`:5,`src/b.ts`:12]

OpenClaw Integration Examples

sessions_spawn with OpenLang task

~openlang
?fnd @fs chg rcn {p:"src/**/*.ts" p:!~"*.test.ts" rgx:"TODO"} ->$lst
^ea ->$f {!rd @fs {p:$f} ->$content; !prs @mem {src:$content k:"todos"}}
>ok {summary:true fmt:map}

Announce result in OpenLang

~openlang
>ok {n:12 todos:[
  {f:"src/api.ts" ln:42 msg:"refactor auth flow"},
  {f:"src/db.ts" ln:18 msg:"add connection pooling"}
] truncated:10}
~L1: most TODOs are in api.ts and db.ts, concentrated around auth and connection handling

sessions_send ping-pong

-- Agent A -> Agent B
~openlang
?fnd @db {tbl:trades rcn lmt:100} ->$trades
!prs @mem {src:$trades k:pnl} ->$analysis
>ok {$analysis}

-- Agent B -> Agent A
~openlang
>ok {pnl:+2.3% win_rate:0.68 sharpe:1.42 trades:100
 top:{sym:"AAPL" pnl:+890} worst:{sym:"TSLA" pnl:-340}}

Rules

  1. Default to L2 for all agent-to-agent messages.
  2. Use normal language for human-facing channels (Telegram, Slack, etc).
  3. Prefix with ~openlang so receivers know to parse as OpenLang.
  4. Drop to L1 when grammar can't express a concept. Return to L2 immediately.
  5. Use $ for all variable references.
  6. Extend vocabulary with ~def — don't break grammar for new ideas.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Ai Automation Consulting

AI 自动化咨询服务 - 帮你用 AI 省时省钱。适合:中小企业、自由职业者、想提效的人。

Registry SourceRecently Updated
Automation

myskill

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express...

Registry SourceRecently Updated
Automation

GridClash

Battle in Grid Clash - join 8-agent grid battles. Fetch equipment data to choose the best weapon, armor, and tier. Use when user wants to participate in Grid...

Registry SourceRecently Updated