New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

create-programmable-hook

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

create-programmable-hook

Scaffold Uniswap v4 hooks for Programmable Market, and check them against the live admission invariants before you submit

latest
Source
npmnpm
Version
0.1.0
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

create-programmable-hook

Scaffold Uniswap v4 hooks for Programmable Market, and check them against the platform's admission invariants before you submit.

npx create-programmable-hook my-hook
npx programmable-check ./my-hook/src/

A custom launch request is immutable. A rejected submission burns the attempt and you only find out afterwards. This catches the seven hard blocks locally first.

Scaffold

npx create-programmable-hook my-hook                            # buyback-hook
npx create-programmable-hook my-hook --template creator-fee-hook
npx create-programmable-hook --list

You get a contract pinned to 0.8.26 with PoolManager auth on every effectful callback and permissions matched to implementations, plus foundry.toml, remappings.txt, a key leak guard, a filled-in launch config, and an AGENTS.md your AI assistant reads automatically. The scaffolder checks its own output before it finishes.

Check

npx programmable-check ./src/           # exit 0 = nothing would hard-block
npx programmable-check ./src/ --json
npx programmable-check --show-profile   # the pinned compiler, bits, and invariants
Hard blockCondition
HC-001callcode in source
HC-002selfdestruct in source
HC-003Effectful callback with no PoolManager check
HC-004Hardcoded PoolManager address
HC-005Permissions and implementations disagree
HC-006Callback returns the wrong number of values
HC-007Reserved platform: action id

Plus soft warnings for delegatecall, a non-pinned pragma, ownership/pause controls, and mint functions — each a disclosure obligation, none of which fail the run.

Comments and strings are stripped before scanning, and revert-only stubs are recognised as stubs, so correct hooks don't get flagged.

Programmatic use

import { checkPath, scaffold } from "create-programmable-hook";

const result = await checkPath("./src");
if (!result.ok) console.error(result.findings);

Every rule is grounded in the platform's live manifest, not inferred. Full docs: BUILD_GUIDE.md.

Keywords

uniswap-v4

FAQs

Package last updated on 18 Sep 2026

Related posts