simulang-js: Instructions file for Claude Code

CLAUDE.md

simulang-js CLAUDE.md is an instructions file for Claude Code from simular-ai/simulang-js. It costs 1,923 tokens per session, scanned A, original, MIT.

Node.js bindings for a Rust automation library that controls desktop computers and Android devices through apps, windows, accessibility trees, mouse, keyboard, screenshots, clipboard, and models.

In plain words
What is it for?
Use it to automate desktop or Android tasks, inspect accessibility information, enter text, handle clipboard data, take screenshots, and access audio or AI models.
Why use it?
It lets one programming interface automate different machines and devices while exposing their visible controls and content.

Instructions file for Claude Code

Written for Claude Code: the file is CLAUDE.md.

This is simular-ai/simulang-js's own configuration. It tells Claude Code how to work on simulang-js itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything simulang-js configures →

Reuse

Borrowing it

Nothing to install: this file belongs to simular-ai/simulang-js. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/simular-ai/simulang-js/main/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/simular-ai/simulang-js

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for simulang-js CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/simular-ai/simulang-js/claude-md/github.svg)](https://agentmods.dev/instructions/simular-ai/simulang-js/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/simular-ai/simulang-js/claude-md"><img src="https://agentmods.dev/badge/instructions/simular-ai/simulang-js/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for simulang-js CLAUDE.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/simular-ai/simulang-js/claude-md"><img src="https://agentmods.dev/badge/instructions/simular-ai/simulang-js/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 1,923 This file is loaded in full into every session.
When invoked 1,923 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.01923 $0.01923
Opus 5.5 $0.00769 $0.00769
Sonnet 5.5 $0.00385 $0.00385
Haiku 4.5 $0.00192 $0.00192

Measured 8d ago against content hash e52ea84bbd14, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

simulang-js CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 146 lines

How it starts

The opening of the file, as written. The whole thing — 146 lines — stays where its author put it; the contents beside it link to each section on GitHub.

@simular-ai/simulang-js

Node.js bindings for the Rust simulang-rs crate (via napi-rs). Cross-platform automation of desktops and Android devices: apps, windows, accessibility trees, mouse/keyboard, screenshots, clipboard, audio, and VLM/LLM/STT model access.

This file ships in the npm tarball alongside index.d.ts and is versioned with it.

Where the API is documented

Read index.d.ts first — it is the source of truth. Every class, function, and enum is fully typed (~2100 lines) and carries JSDoc covering idioms, lifecycle rules, platform quirks, and inter-API trade-offs that types alone can't express. The JSDoc is generated from doc comments, so the per-symbol guidance there is authoritative — trust it over any restatement elsewhere.

Mental model

  • Machine is the entry point. Machine.local() is the desktop this process runs on; Machine.android(endpoint) is an Android device driven over adb from the host. Apps, windows, and accessibility nodes are obtained from a machine and stay bound to it; mouse, keyboard, and clipboard access are flat methods on the machine itself (moveMouse, typeText, getClipboardString, …). The same code drives any backend — write against Machine and the handles it returns, and only reach for machine.asAndroid() when an operation has no desktop counterpart.
  • Calls into the native module are synchronous. No Promises are returned; Result::Err on the Rust side is translated to a thrown JS exception by napi-rs, so JS callers try/catch as usual.
  • Many objects are handles to platform resources (windows, audio devices, accessibility trees, file/directory handles). Their lifetime matters; dropping them can free the underlying resource.
  • Check canSee(), canUseAccessibility(), and canControl() before a run. Each returns null when this process can see the screen, use accessibility trees, or control other apps, and otherwise a reason that names what stands in the way and the fix. None of them opens a permission prompt.
  • AskModel.askJson returns one JSON value and checks the reply locally against the schema you pass.
  • Decisions are one DecisionModel.decide(state, questions) call. Name each question with noul, choice, or score. The same name is a property of the result: answers.urgent.probability, answers.dept.choice, answers.severity.nearest().
  • searchRelative(candidates, landmarks, relation) is a free function (same as Rust search_relative). Keeps candidates whose box sits in a given position relative to at least one landmark — the fixed boxes you measure against. Not a tree walk and not scoped to a window or node. Both arguments are AccessibilityNode arrays from any windows or applications — find them with scoredSearch, a VLM + nodeAtPoint, find, or any other means. Boxes are compared in global-desktop coordinates. relation is (candidate, landmark) => boolean — compose BoundingBox predicates however you want (isBelow + overlapsX = under it, sharing its horizontal span; sameRow / sameColumn take a tolerance). Candidates with no box are omitted from the result; order is preserved.
  • Coordinates live on the global desktop: top-left origin at (0, 0) on the primary monitor (on Android, the device screen), in OS-native units — the unit is not the same on every platform:
    • Windows / Linux / Android: physical pixels (raw hardware pixels).
    • macOS: logical points — on a 2× Retina display one point spans two hardware pixels, so a 1920×1080-logical screen is 1920×1080 here, not 3840×2160.

Read the full file on GitHub · 146 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago Changed · +5 lines · +77 tokens per session e52ea84bbd14
  2. 1mo ago Changed · +2 lines · +84 tokens per session 2bca21acfd5f
  3. 2mo ago Changed · +13 lines · +200 tokens per session e273fe0faa08
  4. 2mo ago First seen · 126 lines · 1,562 tokens per session scan A 1153326f7a43

Subscribe to this mod's changes

simulang-js CLAUDE.md is an instructions file published in the GitHub repository simular-ai/simulang-js (4 stars, last pushed 2d ago), licensed MIT. It adds 1,923 tokens to every session, about $0.0077 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

simulang-js CLAUDE.md compared with instructions from other repositories

simulang-js CLAUDE.md next to 6 instructions from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
simulang-js CLAUDE.mdsimular-ai/simulang-jsInstructions file42d agoMITA1,923Claude Code
vscode buildNext.instructions.mdmicrosoft/vscodeInstructions file195ktodayMITA9,719GitHub Copilot
next.js AGENTS.mdvercel/next.jsInstructions file143ktodayMITA7,461Codex, OpenCode
vscode oss-third-party-notices.instructions.mdmicrosoft/vscodeInstructions file195ktodayMITA5,685GitHub Copilot
langchain AGENTS.mdlangchain-ai/langchainInstructions file149ktodayMITA4,680Codex, OpenCode
vscode copilot-instructions.mdmicrosoft/vscodeInstructions file195ktodayMITA3,086GitHub Copilot
deepseek-harness AGENTS.mddeepseek-ai/deepseek-harnessInstructions file281ktodayMITA4,335Codex, OpenCode