# jb-hook-deploy-ui
> Deploy custom Juicebox hooks from browser. Compile Solidity, deploy contracts, verify on explorers, and attach to projects. Works with Claude-generated hooks.
- Author: Adam Delisi
- Repository: massiveadam/skills
- Version: 20260131183437
- Stars: 0
- Forks: 0
- Last Updated: 2026-02-06
- Source: https://github.com/massiveadam/skills
- Web: https://mule.run/skillshub/@@massiveadam/skills~jb-hook-deploy-ui:20260131183437
---
---
name: jb-hook-deploy-ui
description: Deploy custom Juicebox hooks from browser. Compile Solidity, deploy contracts, verify on explorers, and attach to projects. Works with Claude-generated hooks.
---
# Juicebox V5 Hook Deployment UI
Deploy custom hooks directly from the browser. Compile Solidity code, deploy to any chain, verify on block explorers, and attach to your Juicebox project.
## Overview
```
1. Paste or load Solidity source code
2. Compile in browser using solc.js
3. Deploy via connected wallet
4. Optionally verify on Etherscan/Basescan/etc.
5. Attach hook to project ruleset
```
## Complete Hook Deploy UI Template
```html
Deploy Custom Hook
Deploy Custom Hook
Compile, deploy, and attach hooks to your Juicebox project
Connected: on
1
Source Code
Paste or load Solidity code
2
Compile
Generate ABI and bytecode
3
Deploy
Deploy contract to chain
4
Attach
Set as project hook
Source Code
Paste
From Catalog
Upload
Compiler Output
Target Chain
Ethereum
Sepolia
Optimism
Base
Arbitrum
Deploy Contract
```
## Compilation API Endpoint
For browser compilation, you'll need a server-side endpoint:
```typescript
// pages/api/compile.ts
import solc from 'solc';
export default async function handler(req, res) {
if (req.method !== 'POST') return res.status(405).json({ error: 'Method not allowed' });
const { source } = req.body;
const input = {
language: 'Solidity',
sources: { 'contract.sol': { content: source } },
settings: { outputSelection: { '*': { '*': ['abi', 'evm.bytecode'] } }, optimizer: { enabled: true, runs: 200 } }
};
const output = JSON.parse(solc.compile(JSON.stringify(input), { import: findImports }));
res.json(output);
}
function findImports(path) {
// Resolve from GitHub/npm
return { error: 'Import not found: ' + path };
}
```
## Import Resolution
```javascript
const IMPORT_MAPPINGS = {
'@bananapus/core/': 'https://raw.githubusercontent.com/Bananapus/nana-core-v5/main/',
'@bananapus/721-hook/': 'https://raw.githubusercontent.com/Bananapus/nana-721-hook-v5/main/',
'@openzeppelin/contracts/': 'https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-contracts/v5.0.0/contracts/'
};
```
## Related Skills
- `/jb-pay-hook` - Generate pay hook Solidity code
- `/jb-cash-out-hook` - Generate cash out hook Solidity code
- `/jb-split-hook` - Generate split hook Solidity code
- `/jb-interact-ui` - Queue rulesets with hooks