From grimoire-vm
Install and operate Grimoire, author .spell files with full syntax coverage (including advisory decision logic), and run compile/validate/simulate/cast safely. Use when users ask to create, edit, debug, validate, simulate, execute, or explain Grimoire strategies.
npx claudepluginhub franalgaba/grimoire --plugin grimoire-vmThis skill uses the workspace's default tool permissions.
This skill is the base operating playbook for Grimoire.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
This skill is the base operating playbook for Grimoire.
Use this skill when the task includes:
.spell filesadvise) authoring, debugging, and replay workflowsAll references/ and docs/ paths below are relative to this skill directory (skills/grimoire/). These rules are required — they solve syntax coverage gaps that cause authoring errors.
STOP — read this first: Do NOT search the codebase, grep for syntax patterns, or rely on memory for DSL syntax. The reference files bundled with this skill are the single source of truth. IMMEDIATELY use the Read tool on the files listed below before writing or editing any spell content.
.spell authoring/editing task — IMMEDIATELY read these files using the Read tool before doing anything else:
references/syntax-capabilities.mdreferences/authoring-workflow.mdreferences/cli-quick-reference.mdadvise, advisors, replay) — IMMEDIATELY read using the Read tool:
docs/how-to/use-advisory-decisions.mddocs/explanation/advisory-decision-flow.mdreferences/anvil-cheatsheet.mddocs/how-to/simulate-on-anvil-fork.mddocs/how-to/use-wallet-commands-end-to-end.mdreferences/cast-cheatsheet.mdSelect the first working invocation and reuse it for the session.
npm i -g @grimoirelabs/cligrimoirenpx -y @grimoirelabs/clibun run packages/cli/src/index.ts --If one path fails, move to the next path automatically.
If grimoire venue doctor ... fails with Unknown venue adapter "doctor", prefer repo-local invocation (bun run packages/cli/src/index.ts) or upgrade global CLI.
When using repo-local Bun execution, always keep the trailing -- so Bun forwards flags to Grimoire instead of consuming them.
Use this sequence before writing custom spells:
<grimoire-cmd> --help<grimoire-cmd> setup (guided interactive execute onboarding)<grimoire-cmd> validate spells/compute-only.spell<grimoire-cmd> simulate spells/compute-only.spell --chain 1If all three pass, proceed to spell authoring.
Setup security/runtime expectations:
.grimoire/setup.env unless --no-save-password-env is used.grimoire/setup.env at startup without overriding existing env varsformat to canonicalize layout before validation.validate (use --strict for advisory-heavy spells).simulate.venue doctor for the target adapter/chain.
<grimoire-cmd> venue doctor --adapter uniswap --chain 1 --rpc-url <rpc> --jsonchain-id, block-number, balance, nonce).
hyperliquid.--advisory-replay <runId> in dry-run/live cast.cast --dry-run before any live cast.cast.--rpc-url <sourceChainId>=<url>--rpc-url <destinationChainId>=<url>--morpho-market-id <actionRef>=<marketId> (repeatable), or--morpho-market-map <path>vault_deposit / vault_withdraw (explicit vault address).market_id and use explicit actions:morpho_blue.supply_collateral(asset, amount, market_id)morpho_blue.withdraw_collateral(asset, amount, market_id)0x... address literals in action token fields; quoted address-like strings trigger QUOTED_ADDRESS_LITERAL.GRIMOIRE_WALLET_ADDRESS preferred, fallback WALLET_ADDRESS).resume <runId> (use --watch to poll settlement).--password-env over --private-key for dry-run/live casts..grimoire/setup.env as plaintext secret material: keep local-only and rotate/remove when no longer needed.GRIMOIRE_SETUP_ENV_FILE=/abs/path/to/.grimoire/setup.env when needed.initsetupformatcompilecompile-allvalidatetriggerssimulatecastvenuesvenuevenue doctorhistorylogresumewallet (generate, address, balance, import, wrap, unwrap)Use references/cli-quick-reference.md for concise command signatures and safety-critical flags.
simulate and cast --dry-run are preview-only flows.cast can commit irreversible actions when policy and runtime checks pass.simulate supports explicit --rpc-url, with precedence: --rpc-url -> RPC_URL_<chainId> -> RPC_URL.--destination-spell) with one logical run id and resume support.triggers <spell> to discover stable handler ids natively before targeted execution.simulate and cast support selected-trigger execution via --trigger-id, --trigger-index, and legacy --trigger.--trigger-id; --trigger is label-based and can be ambiguous.simulate / cast must forward the same selected trigger into per-chain execution.--json mode, parse stdout only; progress and spinner output can still appear on stderr.Always prefer query functions over advisory for structured data fetching. These are deterministic, fast, and don't require LLM calls.
price(BASE, QUOTE[, SOURCE]) — live token price via query provider (requires Alchemy RPC URL)balance(ASSET[, ADDRESS]) — on-chain token balance via RPC (any RPC URL)apy(VENUE, ASSET[, SELECTOR]) — venue-backed APY surface (for example Aave and Morpho)metric(SURFACE, VENUE[, ASSET[, SELECTOR]]) — generic protocol metric surfaceapy(morpho, USDC, "wbtc-usdc-86")metric("vault_net_apy", morpho, USDC, "vault=0xVaultAddress")vault_apy / vault_net_apy require explicit selector; do not rely on implicit defaults.metric("quote_out", uni_v3, USDC, "asset_out=WETH,amount=1000000,fee_tier=3000")advise) just to fetch prices, balances, APYs, or other structured metricsUse advisory only when the task requires LLM judgment, reasoning, or interpretation.
x = advise advisor: "prompt" { ... }.output.timeout and fallback in every advisory block.validate --strict when advisory logic gates value-moving actions.--advisory-trace-verbose (non-JSON mode) to stream detailed advisory traces.Use venue skills for snapshot parameters and market metadata:
grimoire-aavegrimoire-uniswapgrimoire-morpho-bluegrimoire-hyperliquidgrimoire-pendlegrimoire-polymarketFormatting policy for venue CLI output:
--format json for automation or nested payloads--format table for human-readable summariesreferences/syntax-capabilities.mdreferences/authoring-workflow.mdreferences/anvil-cheatsheet.mdreferences/cast-cheatsheet.mdreferences/cli-quick-reference.mddocs/how-to/simulate-on-anvil-fork.mddocs/how-to/use-wallet-commands-end-to-end.mddocs/how-to/use-advisory-decisions.mddocs/how-to/compare-protocol-metrics.mddocs/explanation/advisory-decision-flow.mddocs/reference/cli.mddocs/reference/spell-syntax.mddocs/reference/grimoire-dsl-spec.mddocs/reference/compiler-runtime.md