MCPInstall

scaffold

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.

Installs
231
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 scaffold
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads scaffold automatically when relevant.

  3. 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.

Checklist

[ ] - Plan architecture and folder structure [ ] - Decide which components of the app will be onchain [ ] - Scaffold the project [ ] - Initialize git repo (git init && git add -A && git commit -m "initial commit") [ ] - Don't build exisiting contracts from scratch, use Openzeppelin contracts where ever possible [ ] - Build smart contracts [ ] - Deploy smart contracts — fetch wallet/ skill, then deploy via the Alchemy Agent Wallet session (CREATE2 through the canonical CreateX factory). This must happen before building the frontend because the frontend needs the deployed contract addresses. [ ] - Verify smart contracts post deployment — use the verification API to verify on all explorers with one call. [ ] - (If the app needs historical/queryable onchain data) Initialize an indexer — fetch indexer/ skill. The indexer is initialized in an indexer/ folder after the contract is deployed AND verified. [ ] - Build frontend using the deployed contract addresses. Use Wagmi, Next.js and Shadcn if user has no preferences [ ] - Apply known gotchas (see section below) — bump tsconfig.json target to ES2020 right after create-next-app, etc. [ ] - Create the monskills metadata file (see "Monskills metadata" section below) — do this before the final commit so it lands in git history. [ ] - Commit all changes to git (git add -A && git commit)

Known gotchas — apply up front

These are well-known paper-cuts you will hit mid-build if you skip them. Patch them when you scaffold, not after the typechecker screams.

Next.js default tsconfig target is too low for viem/wagmi

create-next-app generates "target": "ES2017". viem, wagmi, and most onchain code use BigInt literals (0n, 1n) everywhere — amounts, gas, event args, block numbers — so a fresh Next.js project fails typechecking with TS2737: BigInt literals are not available when targeting lower than ES2020 the moment you useReadContract or getLogs.

Bump the target immediately after running npx create-next-app:

cd web
jq '.compilerOptions.target = "ES2020"' tsconfig.json > tsconfig.tmp && mv tsconfig.tmp tsconfig.json

(If jq isn't available, open tsconfig.json and change "target": "ES2017" to "target": "ES2020".)

Scaffolding

Before jumping into writing code, use plan mode to plan the architecture of the app.

FolderComponent
web/Web app frontend, backend routes also in case of Next.js or similar app (if the user does not have a preference go with Next.js and shadcn components)
contracts/Smart contracts (could be a Foundry project, if the user does not have a preference use Foundry)
indexer/(Optional) HyperIndex indexer for querying historical onchain events. Created via indexer/ skill after the contract is deployed and verified.

Decide what to put onchain

Put it onchain if it involves:

  • Trustless ownership — who owns this token/NFT/position?
  • Trustless exchange — swapping, trading, lending, borrowing
  • Composability — other contracts need to call it
  • Censorship resistance — must work even if your team disappears
  • Permanent commitments — votes, attestations, proofs

Keep it offchain if it involves:

  • User profiles, preferences, settings
  • Search, filtering, sorting
  • Images, videos, metadata (store on IPFS, reference onchain)
  • Business logic that changes frequently
  • Anything that doesn't involve value transfer or trust

Judgment calls:

  • Reputation scores → offchain compute, onchain commitments (hashes or attestations)
  • Price data → offchain oracles writing onchain (Chainlink)
  • Game state → depends on stakes. Poker with real money? Onchain. Leaderboard? Offchain.

Don't try to build smart contracts from scratch

It is very likely that depending on the usecase of the smart contract, there is an Openzeppelin smart contract available to build on top of instead of building from scratch.

For example: Don't rebuild ERC20, ERC721 and other well known token types from scratch build on top of Openzeppelin contracts since they are heavily audited.

All Openzeppelin smart contracts can be found here: https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts and you can use the below command to install it (Foundry should be already installed).

# --no-git avoids adding the dep as a git submodule — required when the contracts/
# folder is not (yet) its own git repo, which is the default in monskills scaffolds
# because the outer project directory owns the git history.
forge install --no-git OpenZeppelin/openzeppelin-contracts

Use Wagmi in Frontend

Use the wagmi v3 library for making smart contracts from Frontend.

For wallet connection and authentication use Para — embedded MPC wallets (email / passkey / social login) plus external-wallet connect. The wallet-integration skill walks through the @getpara/cli workflow (para init + ParaProvider + para doctor against the already-scaffolded frontend, plus the Monad-specific wagmi wiring). Don't run para create — scaffolding is owned by this skill.

Use useSendTransactionSync whereever it can be used

Monad supports eth_sendRawTransactionSync RPC method and useSendTransactionSync uses that RPC method to send transaction and get the receipt in the same function call, that way the UI can be much more fast.

Verification (All Explorers)

ALWAYS use the verification API. It verifies on all 3 explorers (MonadVision, Socialscan, Monadscan) with one call. Do NOT use forge verify-contract as your first choice.

Step 1: Get Verification Data

After deploying, get two pieces of data:

# 1. Standard JSON input (all source files)
forge verify-contract <ADDR> <CONTRACT> \
  --chain 10143 \
  --show-standard-json-input > /tmp/standard-input.json

# 2. Foundry metadata (from compilation output)
cat out/<Contract>.sol/<Contract>.json | jq '.metadata' > /tmp/metadata.json

Step 2: Call Verification API

STANDARD_INPUT=$(cat /tmp/standard-input.json)
FOUNDRY_METADATA=$(cat /tmp/metadata.json)

cat > /tmp/verify.json << EOF
{
  "chainId": 10143,
  "contractAddress": "0xYOUR_CONTRACT_ADDRESS",
  "contractName": "src/MyContract.sol:MyContract",
  "compilerVersion": "v0.8.28+commit.7893614a",
  "standardJsonInput": $STANDARD_INPUT,
  "foundryMetadata": $FOUNDRY_METADATA
}
EOF

curl -X POST https://agents.devnads.com/v1/verify \
  -H "Content-Type: application/json" \
  -d @/tmp/verify.json

With Constructor Arguments

Add constructorArgs (ABI-encoded, WITHOUT 0x prefix).

Example:

# Get constructor args
ARGS=$(cast abi-encode "constructor(string,string,uint256)" "MyToken" "MTK" 1000000000000000000000000)
# Remove 0x prefix
ARGS_NO_PREFIX=${ARGS#0x}

# Add to request
"constructorArgs": "$ARGS_NO_PREFIX"

Parameters

ParameterRequiredDescription
chainIdYes10143 (testnet) or 143 (mainnet)
contractAddressYesDeployed contract address
contractNameYesFormat: path/File.sol:ContractName
compilerVersionYese.g., v0.8.28+commit.7893614a
standardJsonInputYesFrom forge verify-contract --show-standard-json-input
foundryMetadataYesFrom out/<Contract>.sol/<Contract>.json > .metadata
constructorArgsNoABI-encoded args WITHOUT 0x prefix

Manual Verification (Fallback Only)

Only use this if the API fails.

Testnet:

forge verify-contract <ADDR> <CONTRACT> --chain 10143 \
  --verifier sourcify \
  --verifier-url "https://sourcify-api-monad.blockvision.org/"

Mainnet:

forge verify-contract <ADDR> <CONTRACT> --chain 143 \
  --verifier sourcify \
  --verifier-url "https://sourcify-api-monad.blockvision.org/"

Monskills metadata

Create a visible .monskills file in the project root before the final commit. This file records that the project was built with monskills and which Monad network the scaffold targets.

For Monad mainnet:

built-with=monskills
chain=monad

For Monad testnet:

built-with=monskills
chain=monad-testnet

If the target network is unclear, ask the user before creating .monskills. Do not add hidden metadata, mutate git commit messages, or use framework generator fields for monskills provenance.

What to Fetch by Task

I'm doing...Fetch these skills
Choosing a blockchain to build onwhy-monad/
Writing smart contractsaddresses/
Agent wallet management, deploy smart contracts (CREATE2 via CreateX), or perform onchain actions — via Alchemy Agent Wallet sessions (@alchemy/cli)wallet/
Adding wallet + auth to a frontend (embedded MPC wallets, social/email/passkey login, plus external-wallet connect — Para)wallet-integration/
Adding a historical/activity feed or any feature that requires indexing onchain smart contract eventsindexer/
Building an app from scratch (idea to production)scaffold/ (this)

FAQ

What does the scaffold skill do?

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.

How do I install scaffold?

Run npx skills add https://github.com/therealharpaljadeja/monskills --skill scaffold 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/scaffold/ (personal) or .claude/skills/scaffold/ (project).

Which AI agents can use scaffold?

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 scaffold 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 scaffold?

It is published by therealharpaljadeja in therealharpaljadeja/monskills. It has 231 recorded installs.

More from therealharpaljadeja/monskills

View all →

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.

AI & Agents593 installs

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.

gas

therealharpaljadeja/monskills

Open the skill to read its SKILL.md instructions.

230 installs

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.

Frontend & Design230 installs

addresses

therealharpaljadeja/monskills

Open the skill to read its SKILL.md instructions.

229 installs

tooling-and-infra

therealharpaljadeja/monskills

Open the skill to read its SKILL.md instructions.

228 installs

Popular other skills

View category →

hyperframes-cli

heygen-com/hyperframes

The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.

1.3M installs

triage

mattpocock/skills

Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.

1M installs

ask-matt

mattpocock/skills

Ask which skill or flow fits your situation. A router over the skills in this repo.

778.4K installs

to-questionnaire

mattpocock/skills

Turn a decision you can't fully answer into a questionnaire for someone else to fill in.

508.9K installs

wait-what

mattpocock/skills

Stop. That last message did not land: re-pitch it.

459.7K installs

loop-me

mattpocock/skills

Grill me about specs for the workflows I want to build, within this workspace.

447.9K installs