How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/iteam-company/claude-code-boilerplates --skill create-hookBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Create Hook
Analyze a component or file and determine if any inline logic can be extracted into a reusable hook. Proposes the hook API and asks before implementing -- never writes code without confirmation.
When to use this skill
Invoke when:
- A component feels too large or mixes concerns (state + effects + layout)
- You spot a pattern repeated across more than one component
- Inline
useEffect+useStatelogic is complex enough to have a name - The user asks "can this be a hook?" or "should I extract this?"
Steps
- Read the target file(s).
- Identify extraction candidates -- inline logic blocks that:
- Combine state + side effects (timers, listeners, observers, storage)
- Access browser APIs (scroll, resize, matchMedia, localStorage, IntersectionObserver)
- Would have a clear, reusable name independent of the component's UI
- Check
hooks/for existing hooks before proposing a new one:
useDebounce<T>(value, delay)-- debounces any valueuseClickOutside<T extends HTMLElement>(callback)-- fires callback on outside click, returns refuseActiveSection(ids)-- tracks which section id is centered in the viewportuseAuth()-- reads JWT token, exposes user + helpersuseOrg()-- current org from OrgProvider context
If the existing hook already covers the case, suggest using it instead.
- For each candidate, propose:
- Hook name (
useprefix, describes what it returns) - Signature: inputs and return value
- Which component(s) would benefit
- Whether it is worth extracting (skip trivial single-
useStatewrappers)
- Ask the user: "Should I extract [hookName]?" before writing any code.
Only implement after confirmation.
- If confirmed, write the hook to
hooks/<hookName>.tsand refactor the component to use it.
Hook design rules (apply when implementing)
- Named export only, no default export
'use client';at the top- Generic when return type depends on input
- Clean up all effects (timers, listeners, observers)
- Wrap callback args in
useRefso callers don't needuseCallback - No comments unless the WHY is non-obvious
Usage
/create-hook <file or component path>
Examples: /create-hook components/blog/BlogSearch.tsx /create-hook components/layout/header.tsx /create-hook app/(layout)/blog/page.tsx


