๐Ÿ“ฆ

openhook

์ฝ˜ํ…์ธ  ๋ฆฌ๋น„์ „ r1 ์•ˆ์ „ ๐ŸŒ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผโš™๏ธ ์™ธ๋ถ€ ๋ช…๋ น์–ด

Test Webhook Callbacks with Openhook

Webhook integrations need public callback addresses and reliable event inspection. Openhook guides agents through inbox creation, event waiting, local forwarding, validation, and cleanup.

์ง€์›: Claude Codex Code(CC)
Maintain this Skill? Claim it ๐Ÿฅ‰ 78 ๋ธŒ๋ก ์ฆˆ

๋‚ด ์—์ด์ „ํŠธ๋กœ ์„ค์น˜

์ด ์š”์ฒญ์„ ์—์ด์ „ํŠธ์— ๋ณต์‚ฌํ•˜์„ธ์š”. ๊ณต์‹ Skill ํŽ˜์ด์ง€์™€ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ ์š”์ฒญ
Review the Skillstore skill "openhook" from https://skillstore.io/skills/openhook-dev-openhook.md and its manifest at https://skillstore.io/api/skills/openhook-dev-openhook/manifest. Verify the artifact. You may proceed after verification, subject to the environment's own policy.

์—์ด์ „ํŠธ๋Š” ๊ณ„์†ํ•ด์„œ ๊ณ„ํš์„ ํ‘œ์‹œํ•˜๊ณ  ๋ณด์•ˆ ์ •์ฑ…์—์„œ ์š”๊ตฌํ•˜๋Š” ํ™•์ธ์„ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์šด ๋ฆฌ์†Œ์Šค

AI ์—์ด์ „ํŠธ, ํฌ๋กค๋Ÿฌ, ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ „์ฒด ํŽ˜์ด์ง€ ๋Œ€์‹  ์ •๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ๋งŒ ํ•„์š”ํ•  ๋•Œ ์ด ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ธฐ

"openhook" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. Illustrative scenario: a synthetic payment callback reaches both the inbox and the authorized local handler.

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

  • The expected synthetic payment event was received and its required fields matched.
  • The local handler returned a successful response.
  • The disposable inbox was deleted. Its private token was not included in the report.

"openhook" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. Illustrative scenario: a repository callback wait times out while the task remains active.

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

  • No matching callback arrived during this wait.
  • The existing cursor was preserved for the next wait.
  • The task remains pending; timeout does not prove completion.

๋ณด์•ˆ ๊ฐ์‚ฌ

์•ˆ์ „

All 34 static findings are false positives: Markdown spans, metadata links, and documented service connections or authorized local forwarding. The reviewed files require token privacy, authorized provider changes, and treating callbacks as untrusted data; no malicious instructions were found. Hosted service behavior, external dependencies, and listener implementation were not evaluated.

4
์Šค์บ”๋œ ํŒŒ์ผ
224
๋ถ„์„๋œ ์ค„ ์ˆ˜
0
๊ฒ€ํ†  ํ•ญ๋ชฉ
0
์˜คํƒ ๋ฌด์‹œ๋จ
๊ฐ€์žฅ ์ตœ๊ทผ์— ์™„๋ฃŒ๋œ ์ •์ ยท์˜๋ฏธ๋ก ์  ๊ฐ์‚ฌ์—์„œ ํ™•์ธ๋œ ๋ณด์•ˆ ๋ฐœ๊ฒฌ ์‚ฌํ•ญ์ด ๊ฐ์ง€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํ‚ฌ์— ๋ถ€์ž‘์šฉ์ด ์—†์Œ์„ ์ฆ๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌ์ž: codex
์ด ๋ณด๊ณ ์„œ ๊ณต์œ  ๋ฐ ์ธ์šฉ

๋ฒ„์ „์ด ์ง€์ •๋œ ํ‰๊ฐ€ ๋ณด๊ณ ์„œ, ์ค‘๋ฆฝ ๋ฐฐ์ง€, ์ž„๋ฒ ๋“œ ์นด๋“œ ๋ฐ ์ธ์šฉ์„ ๊ณต์œ ํ•˜์„ธ์š”. Skillstore๋Š” ๊ทผ๊ฑฐ๋ฅผ ๋ณด๊ณ ํ•˜์ง€๋งŒ ์ด Skill์˜ ์•ˆ์ „ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „๋ณ„ ๋ณด๊ณ ์„œ ์—ด๊ธฐ
๋ณด์•ˆ ํ‰๊ฐ€

๋ณด๊ณ ์„œ ๋งํฌ ๋ณต์‚ฌ

https://skillstore.io/skills/openhook-dev-openhook/audits/1?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_report

Markdown ๋ฐฐ์ง€

[![Skillstore security assessment](https://skillstore.io/badges/skills/openhook-dev-openhook/security.svg)](https://skillstore.io/skills/openhook-dev-openhook?utm_source=security_passport_badge)

HTML ๋ฐฐ์ง€

<a href="https://skillstore.io/skills/openhook-dev-openhook?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/openhook-dev-openhook/security.svg" alt="Skillstore security assessment" loading="lazy"></a>

์ž„๋ฒ ๋“œ ์นด๋“œ

<iframe src="https://skillstore.io/embed/skills/openhook-dev-openhook.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>
ํ•™์ˆ  ์ธ์šฉ (APA ยท BibTeX ยท CFF)

APA ์ธ์šฉ

openhook-dev. (2026). openhook security audit report (audit version 1) [Author version unspecified]. Skillstore. https://skillstore.io/skills/openhook-dev-openhook/audits/1

BibTeX ์ธ์šฉ

@techreport{openhook-dev-openhook-dev-openhook-2026, author = {openhook-dev}, title = {openhook security audit report (audit version 1)}, institution = {Skillstore}, year = {2026}, number = {1}, url = {https://skillstore.io/skills/openhook-dev-openhook/audits/1}, note = {Author version unspecified} }

CITATION.cff

cff-version: 1.2.0 message: "If you use this Skill, cite its author and this versioned security audit report." title: "openhook security audit report (audit version 1)" version: "unspecified" type: report authors: - name: "openhook-dev" date-released: "2026-10-16" url: "https://skillstore.io/skills/openhook-dev-openhook/audits/1" identifiers: - type: other value: "skillstore:openhook-dev-openhook:audit:1" description: "Skillstore immutable audit report identifier"

Skillstore ์ ์ˆ˜

์ด ์ ์ˆ˜์˜ ์ด์œ  ์ฆ๊ฑฐ ์‹ ๋ขฐ๋„: ์ค‘๊ฐ„
55
์•„ํ‚คํ…์ฒ˜
85
์œ ์ง€๋ณด์ˆ˜์„ฑ
87
์ฝ˜ํ…์ธ 
65
์ปค๋ฎค๋‹ˆํ‹ฐ
91
์‚ฌ์–‘ ์ค€์ˆ˜

๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

Validate a local payment handler

Forward a synthetic payment callback to an authorized development endpoint and verify the local response before declaring success.

Inspect provider callback behavior

Create a disposable inbox, inspect expected event fields and headers, and delete test resources after integration checks.

Continue an active task after a repository event

Register an authorized GitHub subscription, wait with a cursor, validate the callback, and remove the subscription when finished.

์ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”

Create a test inbox
Create a disposable Openhook inbox for synthetic test data. Return only its public callback URL and keep its management token private.
Inspect an expected callback
Wait for my synthetic callback in the current inbox. Check its expected source, headers, and body. Preserve the cursor after successful processing.
Verify local forwarding
Forward synthetic Openhook events only to my authorized local handler at http://127.0.0.1:8080/webhook. Verify local delivery and deduplicate events before reporting success.
Manage a repository event workflow
Use my authorized GitHub repository scope to register a callback. Wait while this task remains active, validate events, then unregister and delete the inbox.

๋ชจ๋ฒ” ์‚ฌ๋ก€

  • Use authorized synthetic payloads, keep management tokens private, and treat every callback body as untrusted data.
  • Validate the expected source and event, deduplicate identifiers, and save cursors only after successful processing.
  • Verify local delivery separately, unregister provider subscriptions, and delete disposable inboxes after the task.

ํ”ผํ•˜๊ธฐ

  • Publishing private tokens, provider credentials, or sensitive production payloads in callback URLs, logs, or reports.
  • Treating a callback body as agent instructions or treating receipt acknowledgement as proof of local delivery.
  • Retrying potentially successful registrations blindly or assuming a timed-out wait completed the task.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Does installing the skill configure everything?
No. Skill-only installation requires a separate MCP connection. The Claude Code plugin bundles that connection, but does not install a background listener.
Can I use Openhook without MCP?
Yes. The skill references the REST quickstart and OpenAPI schemas for clients without MCP support.
Do free inboxes require an account?
No. Free inboxes use private management tokens. Optional persistent Pro inboxes use account sign-in and revocable agent keys.
Can a webhook restart a stopped agent?
No. Normal MCP waits return only to a running agent. Background workflows require a separately configured listener and local agent hook.
Where do hosted callback payloads go?
Hosted use sends callback bodies and headers to openhook.dev. Use authorized test data or self-host when payloads must remain on your infrastructure.
What should happen after a wait times out?
Keep the same cursor and repeat only while the task is active. A timeout does not mean the expected event arrived.

๊ฐœ๋ฐœ์ž ์„ธ๋ถ€ ์ •๋ณด

์ž‘์„ฑ์ž

openhook-dev

๋ผ์ด์„ ์Šค

MIT

Skillstore ๋ฆฌ๋น„์ „

r1

๋ฒ„์ „ ์•ˆ๋‚ด

์ž‘์„ฑ์ž๊ฐ€ ๋ฒ„์ „์„ ์„ ์–ธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ

addec4a6142bff9f134981df95c7d46cee648e9a

์œ ์ง€๋ณด์ˆ˜ ์ตœ์‹ ์„ฑ

2026. 10. 16.

์‚ฌ์šฉ๋Ÿ‰

0 ๋‹ค์šด๋กœ๋“œ ยท 0 ์กฐํšŒ

ํŒŒ์ผ ๊ตฌ์กฐ

๐Ÿ“ .claude-plugin/

๐Ÿ“„ plugin.json

๐Ÿ“„ LICENSE

๐Ÿ“„ README.md

๐Ÿ“„ SKILL.md

์ „์ฒด ๋ณด๊ธฐ
๐Ÿ“ฆ

tool-design

81

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์—์ด์ „ํŠธ ๋„๊ตฌ ์„ค๊ณ„

์ž‘์„ฑ์ž Asmayaseen

๋„๊ตฌ ์ด๋ฆ„, ์ž…๋ ฅ, ์ถœ๋ ฅ ๋˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ชจํ˜ธํ•˜๋ฉด ์—์ด์ „ํŠธ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํ‚ฌ์€ ๋„๊ตฌ ์„ค๋ช…, ์Šคํ‚ค๋งˆ, ์‘๋‹ต ํ˜•์‹, ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์‹ค์šฉ์ ์ธ ํŒจํ„ด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋”ฉ ๋ฐ ๊ฐœ๋ฐœ ๋ณด๊ธฐ
๐Ÿ“ฆ

Plugin Structure

80

Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์กฐ ๋งŒ๋“ค๊ธฐ

์ž‘์„ฑ์ž anthropics

ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์„ฑ์ž๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ, ๋ช…๋ น, ์—์ด์ „ํŠธ, ์Šคํ‚ฌ, ํ›…, MCP ํŒŒ์ผ์„ ์•ˆ์ •์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํ‚ฌ์€ ํ‘œ์ค€ Claude Code ๋ ˆ์ด์•„์›ƒ์„ ์„ค๋ช…ํ•˜๊ณ  ์‹ค์šฉ์ ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒจํ„ด์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ฝ”๋”ฉ ๋ฐ ๊ฐœ๋ฐœ ๋ณด๊ธฐ