Back to Skills

dapp-builder

verified

Build decentralized applications on Freenet using river as a template. Guides through designing contracts (shared state), delegates (private state), and UI. Use when user wants to create a new Freenet dApp, design contract state, implement delegates, or build a Freenet-connected UI.

View on GitHub

Marketplace

freenet-agent-skills

freenet/freenet-agent-skills

Plugin

freenet

Repository
Verified Org

freenet/freenet-agent-skills
1stars

skills/dapp-builder/SKILL.md

Last Verified

January 24, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/freenet/freenet-agent-skills/blob/main/skills/dapp-builder/SKILL.md -a claude-code --skill dapp-builder

Installation paths:

Claude
.claude/skills/dapp-builder/
Powered by add-skill CLI

Instructions

# Freenet Decentralized Application Builder

Build decentralized applications on Freenet following the architecture patterns established in River (decentralized chat).

## How Freenet Applications Work

Freenet is a platform for building decentralized applications that run without centralized servers. Apps rely on a global, peer-to-peer **Key-Value Store** where the "Keys" are cryptographic contracts.

### Core Concept: The Contract is the Key

The "Key" for any piece of data is the **cryptographic hash of the WebAssembly (WASM) code** that controls it.

- This ties the *identity* of the data to its *logic*
- If you change the code (logic), the key changes
- This creates a "Trustless" system: You don't need to trust the node storing the data, because the data is self-verifying against the contract code

## The Three Components of a Freenet App

### 1. The Contract (Network Side)

- **Role:** Acts as the "Backend" or Database
- **Location:** Runs on the public network (untrusted peers)
- **Functionality:**
  - Defines what data (State) is valid
  - Defines how that data can be modified
- **State:** Holds the actual application data (arbitrary bytes)
- **Constraint:** Cannot hold private keys or secrets - all data is public (unless encrypted by the client)

### 2. The Delegate (Local Side)

- **Role:** Acts as the "Middleware" or private agent
- **Location:** Runs locally on the user's device (within the Freenet Kernel)
- **Functionality:**
  - **Trust Zone:** Safely stores secrets, private keys, and user data
  - **Computation:** Performs signing, encryption, and complex logic before sending data to the network
  - **Background Tasks:** Can run continuously to monitor contracts or handle notifications even when the UI is closed

### 3. The User Interface (Frontend)

- **Role:** Interaction layer for the user
- **Location:** Web Browser (SPA) or native app
- **Functionality:**
  - Connects to the local Freenet Kernel via WebSocket/HTTP
  - Built using standard web fra

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
7340 chars