Skip to content

chore(paddle-webhooks): trim SKILL.md + bump SDKs (review-mode test output)#58

Merged
leggetter merged 2 commits into
mainfrom
improve/paddle-webhooks
May 11, 2026
Merged

chore(paddle-webhooks): trim SKILL.md + bump SDKs (review-mode test output)#58
leggetter merged 2 commits into
mainfrom
improve/paddle-webhooks

Conversation

@leggetter
Copy link
Copy Markdown
Collaborator

@leggetter leggetter commented May 11, 2026

Summary

End-to-end demonstration of two generator-prompt features applied to paddle-webhooks via ./scripts/generate-skills.sh review paddle. The review iteration ran twice — once with each feature merged into main — and produced clean, focused fix commits both times.

Commit Source PR What the reviewer caught
trim SKILL.md to verification core #57 — review-skill prompt: trim-convention checks Full Express + FastAPI handlers duplicated in SKILL.md. Trimmed to verification core (~30 lines each) + canonical pointer block; SKILL.md shrank from 178 → 139 lines.
bump SDKs and tooling #59 — per-provider SDK version-tracking via sdks field @paddle/paddle-node-sdk ^1.4.0 was 2 majors behind ^3.8.0 (Express + Next.js). paddle-python-sdk>=1.0.0 was too loose to guarantee the Verifier/Secret API the docs reference. Plus a verification.md "gotcha" describing replay protection the handlers don't implement.

What changed

Commit 1 (909e72a) — SKILL.md trim:

  • SKILL.md — "Essential Code (USE THIS)" → "Verification (core)". Removed the full Express + FastAPI route wiring, raw-body middleware, event-type switches, response sending. Kept the byte-identical HMAC verification helpers in Node + Python. Added context about @paddle/paddle-node-sdk's unmarshal() SDK helper. Inserted the canonical pointer block.
  • references/verification.md — minor wording adjustment.
  • examples/fastapi/main.py — removed dead code path that pretended to use paddle_billing.Notifications.Verifier but always fell back to manual verification.

Commit 2 (cacdf4a) — SDK + tooling bumps:

  • examples/express/package.json: @paddle/paddle-node-sdk ^1.4.0 → ^3.8.0
  • examples/nextjs/package.json: same SDK bump, plus next ^16.1.6 → ^16.2.6 and typescript ^5.9.3 → ^6.0.3
  • examples/fastapi/requirements.txt: paddle-python-sdk>=1.0.0 → >=1.14.1
  • references/verification.md: removed a replay-protection "gotcha" — the strict 5-second tolerance described would reject Paddle's legitimate retries, and none of the handlers actually enforced it.

Combined: +47 / −181 lines net across the trim + bump.

Dependencies

This PR's content is a downstream side-effect of two upstream prompt-engineering PRs:

Best merged after PR #59 so the SDK-bump commit's pedigree (machine-generated by the reviewer) ties cleanly to the merged spec change.

Test plan

  • cd skills/paddle-webhooks/examples/express && npm install && npm test
  • cd skills/paddle-webhooks/examples/nextjs && npm install && npm test
  • cd skills/paddle-webhooks/examples/fastapi && python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt && pytest test_webhook.py -v
  • Verify the SDK v1→v3 jump didn't break the handler's call sites. (The Node SDK's paddle.webhooks.unmarshal() signature is documented as stable across v2/v3 but worth a manual spot-check.)
  • Spot-check that SKILL.md still answers "how do I verify a Paddle webhook?" cold without loading the examples
  • Confirm the verification helpers in SKILL.md still match examples/<framework>/

Reviewer suggestions (informational, not addressed)

From the original review output:

  • None of the three handlers enforce timestamp tolerance / replay protection. Commit 2 dropped the false claim from verification.md. Adding actual replay protection (with a documented-wide-enough window) is a separate concern.
  • verification.md previously recommended a 5-second tolerance which matched Paddle's documented value but is tight in production due to clock skew. The recommendation is gone for now; if it's added back, note the production caveat.

https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB

… versions

- Trim SKILL.md Express/FastAPI snippets to verification-core only,
  matching the stripe-webhooks convention (drops route wiring, event
  dispatch, response handling)
- Fix SDK version claims in references/verification.md
  (@paddle/paddle-node-sdk v1.4.0+; paddle-python-sdk v1.14.0+)
- Remove dead Verifier branch in examples/fastapi/main.py
  (SDK targets Flask/Django request objects, FastAPI verifies manually)
- Bump fastapi/requirements.txt to current stable floors
- Remove orphan "# Or via NPM" comment from Local Development section

https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
…y-protection doc

- Bump @paddle/paddle-node-sdk to ^3.8.0 in express and nextjs examples
- Bump nextjs typescript to ^6.0.3, next to ^16.2.6
- Tighten paddle-python-sdk to >=1.14.1 to match documented Verifier/Secret API
- Remove replay-protection gotcha from verification.md so docs match handlers
  (strict 5s window would reject Paddle's legitimate retries)

Produced by re-running `./scripts/generate-skills.sh review paddle` after
the per-provider SDK version-tracking feature (PR #59) was applied. The
review iteration's prompt now sees @paddle/paddle-node-sdk@3.8.0 and
paddle-python-sdk@1.14.1 in {{VERSIONS_TABLE}}, applies the existing
severity rubric (2 majors behind → major), and proposes the bumps.

https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
@leggetter leggetter changed the title chore(paddle-webhooks): trim SKILL.md to verification core (review-mode test) chore(paddle-webhooks): trim SKILL.md + bump SDKs (review-mode test output) May 11, 2026
@leggetter leggetter marked this pull request as ready for review May 11, 2026 21:40
@leggetter leggetter merged commit 400dd10 into main May 11, 2026
6 checks passed
@leggetter leggetter deleted the improve/paddle-webhooks branch May 11, 2026 21:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants