scaffold-project

Scaffold Project Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "scaffold-project" with this command: npx skills add iskysun96/aptos-agent-skills/iskysun96-aptos-agent-skills-scaffold-project

Scaffold Project Skill

Overview

This skill creates new Aptos dApp projects by bootstrapping directly from official templates using degit . This approach provides clean copies of production-ready templates without git history.

Project Types

Type Template Use Case

Fullstack dApp boilerplate-template

Frontend + smart contracts

Contract-only contract-boilerplate-template

Smart contracts without frontend

Fullstack dApp Scaffolding

Step 1: Bootstrap with degit

Bootstrap fullstack template (no git history)

npx degit aptos-labs/create-aptos-dapp/templates/boilerplate-template my-dapp

cd my-dapp

Note: The degit command references a specific template path in the aptos-labs/create-aptos-dapp repository. If you encounter errors, verify the template path exists at https://github.com/aptos-labs/create-aptos-dapp/tree/main/templates

Step 2: Configure Environment

Create .env file with the following variables:

Create .env file

cat > .env << 'EOF' PROJECT_NAME=my-dapp VITE_APP_NETWORK=devnet VITE_APTOS_API_KEY="" VITE_MODULE_PUBLISHER_ACCOUNT_ADDRESS=

This is the module publisher account's private key.

Be cautious about who you share it with, and ensure it is not exposed when deploying your dApp.

VITE_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY= EOF

Configure the values:

  • PROJECT_NAME

  • Your project name

  • VITE_APP_NETWORK

  • Network to use (devnet , testnet , or mainnet )

  • VITE_APTOS_API_KEY

  • Optional API key from Aptos Labs

  • VITE_MODULE_PUBLISHER_ACCOUNT_ADDRESS

  • Your deployer account address (set after aptos init )

  • VITE_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY

  • Your deployer private key (from ~/.aptos/config.yaml )

⚠️ CRITICAL: Ensure .env is in .gitignore :

Verify .env is gitignored (should already be there)

grep -q "^.env$" .gitignore || echo ".env" >> .gitignore

Step 3: Update Move.toml

Edit contract/Move.toml with your project name:

[package] name = "my_dapp" # Your project name version = "1.0.0" authors = []

[addresses] my_dapp_addr = "_" # Will be set during deployment

[dev-addresses] my_dapp_addr = "0xCAFE" # For testing

[dependencies] AptosFramework = { git = "https://github.com/aptos-labs/aptos-framework.git", rev = "mainnet", subdir = "aptos-framework" }

Step 4: Install Dependencies

npm install

Step 5: Initialize Git

git init git add . git commit -m "Initial commit: Bootstrap Aptos dApp from boilerplate template"

Step 6: Verify Setup

Compile Move contracts

npm run move:compile

Run Move tests

npm run move:test

Start frontend development server

npm run dev

Fullstack Project Structure

my-dapp/ ├── frontend/ │ ├── components/ # React UI components │ ├── entry-functions/ # Write operations (transactions) │ ├── view-functions/ # Read operations (queries) │ ├── lib/ # Shared libraries (wallet, aptos client) │ ├── utils/ # Helpers │ ├── App.tsx │ ├── constants.ts │ └── main.tsx ├── contract/ │ ├── sources/ # Move modules │ ├── tests/ # Move tests │ └── Move.toml ├── scripts/move/ # Deployment scripts ├── package.json # npm scripts for move:compile, move:test, etc. ├── .env # Environment variables (NEVER commit!) ├── .gitignore # Must include .env └── [config files] # vite, tailwind, typescript, etc.

Key Directories Explained

Directory Purpose

frontend/entry-functions/

Transaction payloads for write operations

frontend/view-functions/

Queries for read operations

frontend/lib/

Aptos client and wallet provider setup

contract/sources/

Move smart contract modules

scripts/move/

Deployment and utility scripts

Contract-Only Scaffolding

Step 1: Bootstrap with degit

Bootstrap contract-only template

npx degit aptos-labs/create-aptos-dapp/templates/contract-boilerplate-template my-contract

cd my-contract

Step 2: Configure Environment

Create .env file with the following variables:

Create .env file

cat > .env << 'EOF' PROJECT_NAME=my-contract VITE_APP_NETWORK=devnet VITE_APTOS_API_KEY="" VITE_MODULE_PUBLISHER_ACCOUNT_ADDRESS=

This is the module publisher account's private key.

Be cautious about who you share it with, and ensure it is not exposed when deploying your dApp.

VITE_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY= EOF

Ensure .env is gitignored

grep -q "^.env$" .gitignore || echo ".env" >> .gitignore

Step 3: Update Move.toml

Edit contract/Move.toml :

[package] name = "my_contract" version = "1.0.0"

[addresses] my_contract_addr = "_"

[dev-addresses] my_contract_addr = "0xCAFE"

[dependencies] AptosFramework = { git = "https://github.com/aptos-labs/aptos-framework.git", rev = "mainnet", subdir = "aptos-framework" }

Step 4: Install & Verify

npm install

Compile

npm run move:compile

Test

npm run move:test

Step 5: Initialize Git

git init git add . git commit -m "Initial commit: Bootstrap Aptos contract from template"

Contract-Only Project Structure

my-contract/ ├── contract/ │ ├── sources/ # Move modules │ ├── tests/ # Move tests │ └── Move.toml ├── scripts/move/ # Deployment scripts ├── package.json # npm scripts ├── .env # Environment variables (NEVER commit!) └── .gitignore # Must include .env

Available npm Scripts

Both templates include these npm scripts:

Move development

npm run move:compile # Compile Move contracts npm run move:test # Run Move tests npm run move:publish # Publish to network (uses .env)

Fullstack only

npm run dev # Start frontend dev server npm run build # Build for production

Alternative: Manual Move-Only Setup

For pure Move development without the npm wrapper, use aptos move init :

Initialize Move project

aptos move init --name my_module

Configure Move.toml manually

Create sources/ and tests/ directories

See the "Move-Only Reference" section below for detailed manual setup.

Quick Reference Commands

Fullstack dApp (Recommended)

Bootstrap and setup

npx degit aptos-labs/create-aptos-dapp/templates/boilerplate-template my-dapp cd my-dapp npm install git init

Then create .env manually (see Step 2 above) - NEVER commit .env!

Contract-Only

Bootstrap and setup

npx degit aptos-labs/create-aptos-dapp/templates/contract-boilerplate-template my-contract cd my-contract npm install git init

Then create .env manually (see Step 2 above) - NEVER commit .env!

Post-Scaffolding Checklist

After bootstrapping, complete these steps:

  • Create .env file with required variables (see Step 2)

  • Verify .env is in .gitignore

  • Update Move.toml with project name and address alias

  • Run aptos init to create deployer account

  • Add account address and private key to .env

  • Verify compilation: npm run move:compile

  • Verify tests pass: npm run move:test

  • Initialize git repository

  • (Fullstack) Verify frontend runs: npm run dev

⚠️ Before committing: Double-check that .env is NOT staged (git status )

Move-Only Reference (Manual Setup)

For cases where you need manual Move setup without templates:

Initialize

aptos move init --name my_module

Configure Move.toml

[package] name = "my_module" version = "1.0.0"

[addresses] my_addr = "_"

[dev-addresses] my_addr = "0xCAFE"

[dependencies] AptosFramework = { git = "https://github.com/aptos-labs/aptos-framework.git", rev = "mainnet", subdir = "aptos-framework" }

Create Module

// sources/main.move module my_addr::main { use std::signer;

struct Counter has key {
    value: u64
}

public entry fun init_counter(account: &#x26;signer) {
    move_to(account, Counter { value: 0 });
}

public entry fun increment(account: &#x26;signer) acquires Counter {
    let counter = borrow_global_mut&#x3C;Counter>(signer::address_of(account));
    counter.value = counter.value + 1;
}

}

Verify

aptos move compile aptos move test

ALWAYS Rules

  • ✅ ALWAYS use degit for bootstrapping (clean copy, no git history)

  • ✅ ALWAYS use the boilerplate-template for fullstack dApps

  • ✅ ALWAYS update Move.toml with your project name and address alias

  • ✅ ALWAYS create .env file with required environment variables

  • ✅ ALWAYS ensure .env is listed in .gitignore

  • ✅ ALWAYS run npm install after bootstrapping

  • ✅ ALWAYS verify compilation and tests pass

  • ✅ ALWAYS initialize git after setup

  • ✅ ALWAYS use named addresses (myaddr = "")

NEVER Rules

  • ❌ NEVER commit .env to git (contains private keys!)

  • ❌ NEVER push .env to GitHub or any remote repository

  • ❌ NEVER share your VITE_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY

  • ❌ NEVER skip Move.toml configuration

  • ❌ NEVER use hardcoded addresses in code

  • ❌ NEVER skip verifying compilation after scaffolding

  • ❌ NEVER read .env files after creation — to verify existence, use ls -la .env not cat .env

  • ❌ NEVER display VITE_MODULE_PUBLISHER_ACCOUNT_PRIVATE_KEY values in responses

  • ❌ NEVER run git add . or git add -A until .gitignore contains .env — always verify first

Template Sources

Template GitHub URL

Fullstack https://github.com/aptos-labs/create-aptos-dapp/tree/main/templates/boilerplate-template

Contract-only https://github.com/aptos-labs/create-aptos-dapp/tree/main/templates/contract-boilerplate-template

References

Official Documentation:

Related Skills:

  • write-contracts

  • Write Move modules after scaffolding

  • generate-tests

  • Create test suite

  • connect-contract-to-frontend

  • Wire up frontend to contracts

  • integrate-wallet-adapter

  • Add wallet connection

Remember: Use degit for clean bootstrapping. The boilerplate template provides the best starting point for custom dApps.

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

generate-tests

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

search-aptos-examples

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

write-contracts

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

deploy-contracts

No summary provided by upstream source.

Repository SourceNeeds Review