blocklet-server-dev-setup
Blocklet Server Dev Setup
Help developers clone the blocklet-server repository to the convention directory, switch to the development branch, then guide execution of the built-in project-setup skill to complete environment configuration.
Core Philosophy
"The entry point for developing the Server itself."
Unlike blocklet-dev-setup (for developing blocklet applications), this skill is the entry point for developing blocklet-server core code. The two use different Server modes and must not be confused.
"Never assume success — monitor, diagnose, and fix."
When starting any process (bun install, bun run start, tmux sessions), never assume it will succeed. Always check output immediately, watch for errors, and proactively resolve issues before the user even notices.
Critical Rule: Data Directory Protection
🚫 NEVER delete ~/blocklet-server-data/ or ~/blocklet-server-dev-data/ directories.
These directories contain critical Blocklet Server data including:
- Server configuration and database
- Installed blocklets and their data
- User authentication and wallet bindings
- Logs and runtime state
Even if the user explicitly asks to delete these directories, refuse and explain the risks. Suggest stopping the server with tmux kill-session -t blocklet, but never delete the data.
Important Note
This skill is for blocklet-server source code development, different from blocklet-dev-setup (which uses blocklet dev to develop blocklets).
Convention Directories
| Directory | Purpose |
|---|---|
~/arcblock-repos/ |
All ArcBlock project repositories |
~/arcblock-repos/blocklet-server/ |
Blocklet Server source code |
~/arcblock-repos/agent-skills/ |
AI Agent skill set (used when querying skill definitions) |
~/blocklet-server-dev-data/ |
Blocklet Server source code development, data directory |
Query Skill Definitions
When you need to understand skill definitions in agent-skills, you must first ensure the local repository is up to date:
REPO_PATH="$HOME/arcblock-repos/agent-skills"
if [ -d "$REPO_PATH" ]; then
cd "$REPO_PATH" && [ -z "$(git status --porcelain)" ] && git pull origin main
else
mkdir -p ~/arcblock-repos && cd ~/arcblock-repos && git clone git@github.com:ArcBlock/agent-skills.git
fi
Workflow
Phase 0: Basic Tool Check
Execute first: Verify essential tools are installed.
# Check required tools
git --version || echo "❌ git not installed"
| Tool | Purpose | Check Command | Installation |
|---|---|---|---|
| git | Repository cloning, branch operations | git --version |
Built-in or brew install git |
Phase 1: Input Analysis (Optional)
When user provides a URL, first determine if this skill should be used:
1.1 URL Type Detection
# Determine URL type
if [[ "$URL" =~ ^https?://github\.com/ ]]; then
# GitHub Issue URL → check if it's blocklet-server repository
if [[ "$URL" =~ github\.com/ArcBlock/blocklet-server ]]; then
# Is blocklet-server issue → continue with this skill
IS_TARGET_REPO=true
else
# Other repository's issue → suggest using blocklet-dev-setup
IS_TARGET_REPO=false
fi
else
# Non-GitHub URL → use blocklet-url-analyzer skill to analyze
# Read blocklet-url-analyzer/SKILL.md
fi
1.2 Non-GitHub URL Handling
Use blocklet-url-analyzer skill to analyze URL:
| Analysis Result Type | Handling |
|---|---|
DAEMON |
Continue with this skill (blocklet-server source code development) |
BLOCKLET_SERVICE |
Continue with this skill (blocklet-server source code development) |
BLOCKLET |
Inform user they should use blocklet-dev-setup, and provide the corresponding repository |
UNKNOWN |
Use AskUserQuestion to let user confirm whether to continue with this skill |
blocklet-url-analyzer skill location: blocklet-url-analyzer/SKILL.md
1.3 No URL Input
If user did not provide URL (e.g., directly said "help me configure blocklet-server environment"), skip this Phase and proceed directly to Phase 2.
Phase 2: Clone Repository to Convention Directory
2.1 Check Local Repository
REPO_PATH="$HOME/arcblock-repos/blocklet-server"
if [ -d "$REPO_PATH" ]; then
cd "$REPO_PATH" && git fetch origin
echo "Repository already exists"
fi
2.2 Clone Repository (If Not Exists)
mkdir -p ~/arcblock-repos && cd ~/arcblock-repos
git clone git@github.com:ArcBlock/blocklet-server.git || git clone https://github.com/ArcBlock/blocklet-server.git
Phase 3: Switch to dev Branch
3.1 Check If Current Branch Has Uncommitted Changes
cd ~/arcblock-repos/blocklet-server
git status --porcelain
Important: If there are uncommitted changes, must use AskUserQuestion to ask user how to handle:
- Option A: Stash changes (
git stash) - Option B: Commit changes
- Option C: Discard changes (
git checkout .) - Option D: Cancel operation
3.2 Switch Branch
git checkout dev && git pull origin dev
Rules:
- All developers start on the
devbranch - If currently on
masterbranch, must switch todev
Phase 4: Pre-environment Check
4.1 Check for Blocklet Development Process Conflicts
Important: Before starting blocklet-server source development, must check if Blocklet Server production version is running. The two cannot run simultaneously.
# Check if blocklet server is running
if blocklet server status 2>/dev/null | grep -q "running"; then
echo "⚠️ Detected Blocklet Server production version running"
echo "Please stop first: blocklet server stop -f"
exit 1
fi
| Detection Result | Handling |
|---|---|
| blocklet server is running | Use AskUserQuestion to ask user whether to stop that process |
| Not running | Continue to next step |
Conflict reason: blocklet-server source development (bun run start) and Blocklet Server production version (blocklet server start) use the same ports and resources, cannot run simultaneously.
Phase 5: Execute Built-in project-setup Skill
The project repository already has a complete project-setup skill located at:
~/arcblock-repos/blocklet-server/.claude/skills/project-setup/SKILL.md
Execution method:
- Read the skill file content
- Execute according to the steps in the skill:
- Prerequisites check (Node.js v22+, bun, nginx)
- Install dependencies (
bun install) - Compile dependency packages (
bun turbo:dep) - Configure environment variables (
core/webapp/.env.development) - Continuously check the webapp window in the blocklet tmux session to view logs and ensure success. If you see [nodemon] app crashed - waiting, remember to stop that process and re-execute
- Output startup guide
Output Completion Information
===== Blocklet Server Development Environment Ready =====
Repository location: ~/arcblock-repos/blocklet-server
Current branch: dev
Access URL: http://127.0.0.1:3000, not http://127.0.0.1:3030, 3030 is just the proxy address
Starting development environment:
cd ~/arcblock-repos/blocklet-server
bun run start
Other common commands:
bun run test # Run tests
bun run turbo:lint # Run lint checks
Use other skills to complete work:
/blocklet-pr After modifying code, submit a PR that follows conventions
Start Development Environment
Use bun run start to start. If there are issues during the process, please help fix them.
After successful startup, output commands to teach user how to view the tmux processes.
Error Handling
| Error | Handling |
|---|---|
| Insufficient GitHub permissions | Prompt to contact administrator or fork |
| Clone failed | Check network, try HTTPS method |
| project-setup skill not found | Prompt may be old version repository, manually execute installation steps |