
indexer
This skill has instructions to setup a Envio HyperIndex indexer to capture onchain smart contract events. Use when user wants a historical feed or activity feed or some similar tracking feed or feature in their app or wants to capture onchain smart contracts events as a trigger to perform some other actions in their app. Also use this skill when the user wants to debug, restart, promote or delete and existing Envio indexer deployed on Envio Cloud.
- Installs
- 224
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/therealharpaljadeja/monskills --skill indexer- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads indexer automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Indexer
This skill covers initializing a HyperIndex indexer and deploying/managing it on Envio Cloud using the envio-cloud CLI.
When to fetch this skill
- The user wants to initialize a new indexer for a Monad contract.
- The user wants to deploy a new indexer to Envio Cloud.
- The user wants to inspect, promote, restart, or delete an existing deployment.
- The user wants to manage indexer environment variables or IP allowlists.
- The user wants to debug an indexer that is failing to deploy or sync.
- The user wants the GraphQL API URL for an indexer (e.g. to point a frontend or curl at it).
Initialize a new indexer
Run the init command inside an indexer/ folder at the project root. Create the folder first if it doesn't exist.
Hard prereq: the contract must be both deployed AND verified on a Monad explorer before you run this. contract-import pulls the ABI from the explorer — an unverified contract will fail the import. If the user hasn't verified yet, stop and do that first (see scaffold/ skill for the verification API).
Monad mainnet
mkdir -p indexer && cd indexer
pnpx envio@3.0.0-alpha.21 init contract-import explorer \
-b monad \
-c <CONTRACT_ADDRESS> \
-n <CONTRACT_NAME> \
-l typescript \
-d ./ -o ./ \
--all-events --single-contract --api-token ""
Monad testnet
mkdir -p indexer && cd indexer
pnpx envio@3.0.0-alpha.21 init contract-import explorer \
-b monad-testnet \
-c <CONTRACT_ADDRESS> \
-n <CONTRACT_NAME> \
-l typescript \
-d ./ -o ./ \
--all-events --single-contract --api-token ""
Notes:
<CONTRACT_ADDRESS>— the deployed, verified contract address.<CONTRACT_NAME>— the contract name (matches the Solidity contract, e.g.MyToken).--all-eventsimports every event in the ABI. Narrow this later by editingconfig.yamlif the user wants only specific events.--single-contractscaffolds for one contract. Re-run the command for additional contracts, or edit the config by hand.--api-token ""is intentional — leave it empty.-l typescriptis a flag, not a positional — the envio CLI rejectstypescriptas a bare positional arg.- The version is pinned to
envio@3.0.0-alpha.21(use exactly this).
After init, the indexer/ folder will contain config.yaml, schema.graphql, and handler stubs. The user edits the handlers to decide what gets stored in the database. Once the code is ready and pushed to GitHub, deploy to Envio Cloud (see below).
Opt into transaction fields before writing handlers
By default, event.transaction.* is typed never in generated handlers — accessing event.transaction.hash (or any other tx field) is a TypeScript error. Most frontends want the tx hash (for explorer links, dedup, etc.), so opt in explicitly before writing handler code.
Add field_selection to config.yaml:
field_selection:
transaction_fields:
- hash
Place it at the top level of config.yaml (sibling of networks:, contracts:, etc.), not nested under a network or contract. After editing, re-run pnpm codegen (or pnpx envio@3.0.0-alpha.21 codegen) so the types regenerate — otherwise event.transaction.hash will still be typed never.
Add other fields the handlers need (from, to, value, gasUsed, input, etc.) to the same list. Envio only pulls and types the fields listed here, so keep it minimal. The full set of available fields is in the Envio field selection docs.
Prerequisites
Before any indexer command will work, the user must have all four of these in place:
envio-cloudinstalled globally:npm install -g envio-cloudenvio-cloudlogged in:envio-cloud login(browser flow, 30-day session)- GitHub CLI (
gh) installed:brew install ghon macOS, or see https://cli.github.com/ - GitHub CLI logged in:
gh auth login
gh is required because Envio Cloud deploys from GitHub — the indexer repo has to be pushed there, and gh is how that's done.
What NOT to do
- Do not install either CLI for the user. If one is missing, tell them the exact command and wait.
- Do not run
envio-cloud loginorgh auth loginfor the user. Both open a browser and require the user to complete the flow themselves.
If you attempt an envio-cloud command without these prereqs, the monskills hook will deny the tool call with a message pointing to the exact missing piece. That's expected — surface the message to the user and wait for them to resolve it.
Where to look next
This skill is split across reference files. Fetch them on demand:
- Workflow recipes — opinionated sequences for common tasks (first deploy, debug a failing deploy, rotate env vars, allowlist an IP).
- CLI reference — every
envio-cloudcommand, grouped by area (auth, context, indexer lifecycle, deployment, env, security).
Start with the workflow recipe that matches the user's goal. Drop into the CLI reference only when you need a flag or subcommand not covered there.
Exit-code contract
Every envio-cloud command follows the same exit code convention — check this, not just stdout, when deciding whether a step succeeded:
| Exit code | Meaning | How to react |
|---|---|---|
0 | Success | Continue |
1 | User error (bad args, unknown indexer, not logged in) | Read stderr, fix the input, retry |
2 | API/server error | Not the user's fault. Retry once; if it persists, tell the user and stop. |
Official docs
FAQ
What does the indexer skill do?
This skill has instructions to setup a Envio HyperIndex indexer to capture onchain smart contract events. Use when user wants a historical feed or activity feed or some similar tracking feed or feature in their app or wants to capture onchain smart contracts events as a trigger to perform some other actions in their app. Also use this skill when the user wants to debug, restart, promote or delete and existing Envio indexer deployed on Envio Cloud.
How do I install indexer?
Run npx skills add https://github.com/therealharpaljadeja/monskills --skill indexer in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/indexer/ (personal) or .claude/skills/indexer/ (project).
Which AI agents can use indexer?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is indexer safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains indexer?
It is published by therealharpaljadeja in therealharpaljadeja/monskills. It has 224 recorded installs.
More from therealharpaljadeja/monskills
monskill
therealharpaljadeja/monskills
Set of skills for developing/building apps on Monad. Always start with this skill, this skill helps the agent/llm maneuver and choose the right skills for the task assigned to the agent, from the whole set of monskills.
concepts
therealharpaljadeja/monskills
Monad architecture concepts that affect how developers build apps — async execution, parallel execution, block states, reserve balance, EIP-7702, real-time data sources, and execution events. Fetch this skill when the developer needs to understand Monad-specific behavior that differs from Ethereum.
scaffold
therealharpaljadeja/monskills
End to end guide to take an idea build an app to production, if you are starting an app from scratch this skill must be fetched first.
gas
therealharpaljadeja/monskills
How gas pricing works on Monad and how it differs from Ethereum. Monad charges gas based on gaslimit (not gas used), has a different base fee controller, and different block gas limits. Fetch this skill whenever writing smart contracts, setting gas limits, estimating gas, or building any transaction-related UI on Monad incorrect gas handling can cost users real money.
wallet-integration
therealharpaljadeja/monskills
How to add wallet connection and authentication to an existing Monad frontend using Para — embedded MPC wallets with email / phone / passkey / social login, plus external-wallet connect (MetaMask, Coinbase, WalletConnect, Rainbow, etc.). Driven by the para CLI (@getpara/cli). Fetch when the user wants to integrate Para into an existing Next.js or Vite frontend, or manage Para projects, API keys, and webhooks from the terminal. This is monskills' canonical wallet-integration skill — there is no separate skill for "social login" or "embedded wallets," it's all here.
addresses
therealharpaljadeja/monskills
Smart contract address for well known protocols on Monad. The addresses include testnet and mainnet smart contract addresses.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.