Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
b64eb62
Merge branch 'dev' into task/152075
suliman-ottu Apr 29, 2026
c92a3a4
add Payment Object Model section to Payment States and Transaction St…
suliman-ottu Apr 29, 2026
2f75bae
add Payment Transaction, Payment Attempt, and E-commerce Payment glos…
suliman-ottu Apr 29, 2026
3185ce0
add request body example to Check Status-Inquiry endpoint
suliman-ottu Apr 29, 2026
45956e1
add session_id and order_no to Message Notification body example
suliman-ottu Apr 29, 2026
a504404
npm run gen-api
suliman-ottu Apr 29, 2026
fff04a8
npm run update-api
suliman-ottu Apr 29, 2026
85b79d3
fix broken anchors in Checkout API permission links
suliman-ottu Apr 29, 2026
176d7ff
Merge branch 'main' into task/152075
suliman-ottu Apr 30, 2026
008f5cb
enhance Payment Object Model.
suliman-ottu Apr 30, 2026
91cbcff
warn on missing property when format/type override is specified
suliman-ottu May 3, 2026
144b4db
use encodeURIComponent for path/query param encoding
suliman-ottu May 3, 2026
74d83de
warn when param example is not in enum options and clean up exampleSt…
suliman-ottu May 3, 2026
9217bd4
move enum mismatch warn into useEffect to fire once on mount
suliman-ottu May 4, 2026
8c3985e
keep %2F encoded for path params, decode only for query params
suliman-ottu May 4, 2026
8e2e4bb
emit single warn when property is missing regardless of override fiel…
suliman-ottu May 4, 2026
abf3879
remove redundant schemaProps checks inside else branch
suliman-ottu May 4, 2026
652a3c6
Merge pull request #60 from ottuco/task/152075
jab3z May 4, 2026
cd85835
document Android SDK 2.2.2 prepayment hook and theme additions
suliman-ottu May 5, 2026
a3a284e
document iOS SDK 2.2.5 prepayment hook and theme additions
suliman-ottu May 5, 2026
134335a
document Flutter SDK 2.2.2 prepayment hook and theme additions
suliman-ottu May 5, 2026
1a44a06
fix verifyPayment cross-reference and tidy Payment Item table in iOS …
suliman-ottu May 6, 2026
a3c2dcc
fix grammar and formatting in verifyPayment and payButtonText propert…
suliman-ottu May 6, 2026
354fbc8
fix 'will be proceeded' → 'will proceed' in Prepayment Hook sections
suliman-ottu May 6, 2026
e3b8ddd
fix typo: 'color or' → 'color of' in flutter.md paymentItemBorderColo…
suliman-ottu May 6, 2026
f3f1d22
add syntax highlighting to Prepayment Hook code blocks (kotlin, swift…
suliman-ottu May 6, 2026
35d35c1
fix missing period after 'app' in iOS delegate property description
suliman-ottu May 6, 2026
ac70d5e
fix verifyPayment and payButtonText descriptions across mobile SDK docs
suliman-ottu May 7, 2026
35977e7
fix iOS SDK doc formatting and CardVerificationResult casing
suliman-ottu May 7, 2026
3fe00e8
docs(checkout-sdk/web): add Onsite Checkout (Jazz SDK) section
farhan-t-ottu May 7, 2026
273bb1b
Merge pull request #63 from ottuco/task/153299
jab3z May 7, 2026
4c1976d
docs(checkout-sdk/web): address Onsite Checkout PR review
farhan-t-ottu May 7, 2026
e75e7c5
docs(checkout-sdk/web): clarify formsOfPayment guidance and standardi…
farhan-t-ottu May 7, 2026
dd97fe4
Merge pull request #64 from ottuco/docs/onsite-checkout-jazz-sdk
farhan-t-ottu May 7, 2026
fe18834
Update the SDKs versions.
suliman-ottu May 7, 2026
f5e08da
fix Flutter SDK page TOC not rendering on the right side
suliman-ottu May 7, 2026
5083a3b
promote Checkout SDK overview sections to top-level headings
suliman-ottu May 7, 2026
5d5c250
Merge pull request #65 from ottuco/task/153299
suliman-ottu May 10, 2026
d86c72c
docs(spec): wallet public documentation design (#150388)
jab3z May 11, 2026
ebae600
docs(plan): wallet public documentation implementation plan (#150388)
jab3z May 11, 2026
824e0b2
chore: scaffold wallet documentation directories
jab3z May 11, 2026
f37bc9c
docs(glossary): add Wallet, Wallet Credit, Wallet Reservation terms
jab3z May 11, 2026
04ac0f1
docs(sidebars): add Wallet category to developer and business sidebars
jab3z May 11, 2026
ccec0b0
docs(business): add wallet overview page
jab3z May 11, 2026
c4a3f0a
docs(business): add refund-to-wallet dashboard workflow
jab3z May 11, 2026
2b3cebd
docs(business): add wallet-at-checkout customer experience page
jab3z May 11, 2026
5f8e766
docs(business): add wallet reporting screens page
jab3z May 11, 2026
aea3f64
docs(developers): add wallet integration page with workflow and read …
jab3z May 11, 2026
e7d4c12
docs(checkout-sdk): add Wallet section to web SDK page
jab3z May 11, 2026
521feef
docs(checkout-sdk): add Wallet section to iOS SDK page
jab3z May 11, 2026
ee904de
docs(checkout-sdk): add Wallet section to Android SDK page
jab3z May 11, 2026
47bae1d
docs(checkout-sdk): add Wallet section to Flutter SDK page
jab3z May 11, 2026
1c7a860
docs(operations): add Refund to Wallet subsection with destination field
jab3z May 11, 2026
ceb5f2c
docs: cross-link wallet from payments index, payment methods, and tra…
jab3z May 11, 2026
3e9859d
chore(api-enrichments): add basic_auth_wallet_read shared permission
jab3z May 11, 2026
99770b2
chore(api-enrichments): add wallet read operations enrichment
jab3z May 11, 2026
fd3398b
chore(api-enrichments): add wallet schemas and refund destination field
jab3z May 11, 2026
c487077
feat(sandbox): add createSandboxWalletCredit utility for WalletDemo
jab3z May 11, 2026
f7a0170
feat(walletdemo): add interactive wallet seeding + checkout demo comp…
jab3z May 11, 2026
f974840
refactor(walletdemo): reuse shared Checkout SDK utilities and add lau…
jab3z May 11, 2026
eb5a0cd
docs(developers): wire WalletDemo into wallet overview page
jab3z May 11, 2026
82e907d
chore(assets): add wallet screenshot placeholders (replace with final…
jab3z May 11, 2026
f24cafc
fix(build): exclude superpowers specs and gate wallet ApiDocEmbeds un…
jab3z May 11, 2026
57eff47
fix(payment-methods): use absolute path for wallet cross-link
jab3z May 11, 2026
d3b872c
fix(checkout-sdk): use absolute wallet paths in SDK Wallet sections
jab3z May 11, 2026
9d6059d
fix(business): use absolute paths for wallet cross-links between sibl…
jab3z May 11, 2026
515bbc5
fix: wallet link in operations.md and .md → .mdx for renamed SDK pages
jab3z May 11, 2026
a5db6ff
Merge remote-tracking branch 'origin/dev' into task/150388-wallet-docs
jab3z May 11, 2026
e693d09
docs(wallet): apply PR review fixes (demo text, Ottu Wallet rename, i…
jab3z May 11, 2026
0b7a1e2
docs(wallet): rewrite Step 1 with correct Payment Methods endpoint sh…
jab3z May 11, 2026
c895e50
docs(wallet): rewrite developer journey, hand-author SVG flow, centra…
jab3z May 12, 2026
5336478
Merge pull request #66 from ottuco/task/150388-wallet-docs
jab3z May 12, 2026
465c0a2
docs(wallet): consolidate business pages, hide demo seeding, add refu…
jab3z May 12, 2026
72abd6a
148035 :: fix: adjust min-width for TOC column to enhance layout resp…
junaidsarfrazdev May 12, 2026
570b869
Merge pull request #67 from ottuco/task/148035
junaidsarfrazdev May 12, 2026
05e57b8
Merge branch 'task/150388-wallet-docs' into dev
jab3z May 12, 2026
03fe4bd
153887 :: feat: enhance sidebar structure and add documentation for …
junaidsarfrazdev May 12, 2026
10b9966
feat(wallet-demo): real backend seeding with Keycloak + PaymentJourne…
jab3z May 12, 2026
c32228a
fix(wallet-demo): match CheckoutDemo stepper UX + correct wallet endp…
jab3z May 12, 2026
28b202b
Merge branch 'task/wallet-demo-real-backend' into dev
jab3z May 12, 2026
cc239b2
refactor(wallet-demo): drop YAML config; use TS/JS constants like SAN…
jab3z May 12, 2026
6b85c38
153867:: wallet & checkout docs: screenshots + payment service sectio…
farhan-t-ottu May 12, 2026
3f2bed8
Merge branch 'dev' into 153867
farhan-t-ottu May 12, 2026
820949e
feat(docs): target ksa.ottu.dev for API references and refresh OpenAP…
gergesfikry-ottu May 12, 2026
07a3524
fix(demos): route all Checkout SDK calls through a single ACTIVE_CONNECT
jab3z May 12, 2026
41327b4
Merge branch 'dev' of github-ottu:ottuco/docs into task/150388-wallet…
gergesfikry-ottu May 12, 2026
ddab3a3
153867:: fix(wallet): restore business carousel + correct shared scen…
farhan-t-ottu May 13, 2026
838ecfe
docs(wallet): align FAQ sections to the <FAQ>/<FAQItem> house style
jab3z May 13, 2026
5049a43
Merge branch 'dev' into documentation/153887
junaidsarfrazdev May 13, 2026
18a4a68
Merge pull request #72 from ottuco/documentation/153887
junaidsarfrazdev May 13, 2026
98a1517
fix(wallet-demo): unblock SDK render + remove duplicate top border
jab3z May 13, 2026
f802bc3
update Checkout SDK url
farhan-t-ottu May 13, 2026
19d8ff0
153867:: update Claude.md
farhan-t-ottu May 13, 2026
aab191c
Merge branch 'dev' into 153867
farhan-t-ottu May 13, 2026
9ec068f
fix(docs): apply review fixes — curl typo and refresh API spec
gergesfikry-ottu May 13, 2026
3507f19
Merge remote-tracking branch 'origin/dev' into task/150388-wallet-docs
gergesfikry-ottu May 13, 2026
9ee9321
Merge pull request #70 from ottuco/153867
farhan-t-ottu May 13, 2026
7428bc2
fix(docs): retarget native-payments.md curl examples to ksa.ottu.dev
gergesfikry-ottu May 13, 2026
7734750
fix(docs): apply re-review fixes — CodeBlock pattern + CLAUDE.md cleanup
gergesfikry-ottu May 13, 2026
c776f22
update sdk theme
farhan-t-ottu May 13, 2026
4921fbc
153887 :: feat(wallet): update refund process documentation and enha…
junaidsarfrazdev May 13, 2026
e3363f6
153887 :: feat(wallet): update refund documentation and enhance sideb…
junaidsarfrazdev May 13, 2026
b9e3eb0
Merge pull request #71 from ottuco/task/150388-wallet-docs
jab3z May 13, 2026
9a7cd51
153887 :: feat(wallet): update wallet documentation, enhance sidebar …
junaidsarfrazdev May 13, 2026
a691a2c
Merge branch 'dev' into documentation/153887
junaidsarfrazdev May 13, 2026
85a067a
153887 :: feat(wallet): enhance wallet API documentation tabs for bet…
junaidsarfrazdev May 13, 2026
0ff6b3c
153887 :: fix(wallet): correct file generation failure message and re…
junaidsarfrazdev May 13, 2026
5946e8a
153887 :: fix(wallet): update image alt text for refund button and ch…
junaidsarfrazdev May 13, 2026
9b5d366
153887 :: feat(wallet): add new social card image for enhanced visual…
junaidsarfrazdev May 13, 2026
b5548fb
fix(wallet): update entry type terminology in wallet operations docum…
junaidsarfrazdev May 13, 2026
825567a
Merge pull request #74 from ottuco/documentation/153887
junaidsarfrazdev May 13, 2026
9769a8d
153867:: update the screenshorts & also add gif
farhan-t-ottu May 13, 2026
cd31494
Merge branch '153867' into dev
farhan-t-ottu May 13, 2026
ee0f933
Merge branch 'main' into dev
junaidsarfrazdev May 14, 2026
a764987
Merge branch 'main' into dev
junaidsarfrazdev May 14, 2026
c88ff02
153887 :: fix: enhance wallet documentation with detailed steps and u…
junaidsarfrazdev May 14, 2026
a9e0d28
Merge pull request #76 from ottuco/documentation/153887
junaidsarfrazdev May 14, 2026
df2bfa8
154078:: add the updated Screenshots , Gif & Text
farhan-t-ottu May 15, 2026
e5f8633
fix(wallet): clarify reservation trigger copy in scenarios
farhan-t-ottu May 15, 2026
c42a5de
update the wallet reservation Text
farhan-t-ottu May 15, 2026
5dabc2b
docs(wallet): support One-Step Checkout in FAQ; remove ambiguous "today"
jab3z May 15, 2026
4fc64b7
docs(wallet): add merchant reconciliation section to business wallet …
gergesfikry-ottu May 15, 2026
79ce343
docs(wallet): refine reconciliation section per merchant review
gergesfikry-ottu May 15, 2026
8829763
153867:: update carousel with emphasize screenshots
farhan-t-ottu May 18, 2026
fd8a612
153867:: update the screenshots file name
farhan-t-ottu May 18, 2026
0e46ae4
153887 :: update refund process documentation with new images and steps
junaidsarfrazdev May 18, 2026
86d1e81
153887 :: fix: correct typos and improve descriptions in wallet refun…
junaidsarfrazdev May 18, 2026
1360589
Merge pull request #78 from ottuco/documentation/153887
junaidsarfrazdev May 18, 2026
3e2594c
Merge branch 'dev' into task/150388-wallet-docs
junaidsarfrazdev May 18, 2026
92ed603
150388 :: update wallet documentation with new images and correct ima…
junaidsarfrazdev May 18, 2026
cb91d7b
150388 :: remove wallet_code from refund-to-wallet flow and drop nati…
gergesfikry-ottu May 18, 2026
2581d91
153887 :: update: replace accounts listing image in wallet documenta…
junaidsarfrazdev May 19, 2026
e7a6fac
Merge pull request #79 from ottuco/documentation/153887
junaidsarfrazdev May 19, 2026
20d3c52
150388 :: add wallet fee-charging section explaining wallet+PG fee al…
gergesfikry-ottu May 19, 2026
bef3f9f
refactor wallet documentation to clarify payment flow and remove outd…
gergesfikry-ottu May 19, 2026
1abc4cb
Merge pull request #77 from ottuco/task/150388-wallet-docs
gergesfikry-ottu May 19, 2026
aa9bcfe
150388 :: add wallet webhook details section and restore SDK FAQ
jab3z May 20, 2026
5eb565e
150388 :: docs(wallet): add customer_wallet_transactions reconciliati…
gergesfikry-ottu May 20, 2026
f137d63
150388 :: docs(wallet): relocate wallet endpoints to dedicated Wallet…
gergesfikry-ottu May 20, 2026
921c572
Merge remote-tracking branch 'origin/dev' into task/150388-wallet-docs
gergesfikry-ottu May 20, 2026
8c0c94d
Merge pull request #80 from ottuco/task/150388-wallet-docs
gergesfikry-ottu May 20, 2026
f822738
153887 :: update funds auto release screenshot
junaidsarfrazdev May 21, 2026
cac8e29
Merge pull request #81 from ottuco/documentation/153887
junaidsarfrazdev May 21, 2026
88e6191
docs(wallet): clarify wallet-paid transactions cannot be refunded
gergesfikry-ottu May 21, 2026
e470128
docs(wallet): document multi-wallet pg_codes 400 on checkout creation
gergesfikry-ottu May 22, 2026
2269788
bump SDK versions: Android 2.2.4, iOS 2.2.8, Flutter 2.2.5
suliman-ottu May 25, 2026
814bdc9
Merge pull request #83 from ottuco/task/154665
jab3z May 25, 2026
753d514
feat(diagrams): add svg-diagram skill + migrate diagrams to inline th…
jab3z May 29, 2026
6a0419c
docs(native-payments): document wallet config from session payment_se…
gergesfikry-ottu Jun 2, 2026
0689b3a
Merge pull request #89 from ottuco/native-apis-update
jab3z Jun 2, 2026
83b50f9
docs: route base-URL stragglers through the single source of truth
jab3z Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
120 changes: 120 additions & 0 deletions .claude/skills/svg-diagram/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
---
name: svg-diagram
description: >-
Create or update a documentation diagram for the Ottu docs as a single,
hand-built, theme-aware inline SVG rendered through the <Diagram> React
component. This is the PRIMARY way to make any docs diagram — architecture
diagrams, payment/data flows, sequence-style flows, system overviews, "how it
works" visuals. Use it whenever the user asks to add, create, draw, design,
build, illustrate, or visualize a diagram, flow, architecture, or system
picture on a docs page — even if they don't say "SVG" — and whenever they ask
to replace, upgrade, or restyle an existing Mermaid diagram. Mermaid is now
only a fallback left over from content migration; prefer this skill and
convert Mermaid diagrams to inline SVG as you encounter them. Also triggers on
"diagram for this page", "make this look better", or "we need a visual here".
---

# Ottu SVG Diagram

Produce documentation diagrams as **a single, hand-built, theme-aware inline SVG** — premium, restrained, on-brand. The diagram renders *in the page DOM* (via the `<Diagram>` component), so it inherits the site's **Poppins** font and switches light/dark instantly with the page. One file, no `<img>`, no second file to keep in sync.

The diagrams on `/overview/architecture/` and `/developers/payments/wallet/` are the bar. New diagrams match them; Mermaid diagrams get converted to this style over time.

**What you deliver:** one inline SVG (scoped + dual-theme), embedded in a tiny `src/diagrams/<Name>.tsx` module, rendered on the page with `<YourDiagram />`.

## Why inline SVG (and not Mermaid, and not `<img>`)

- **Not Mermaid:** Mermaid auto-lays-out nodes and can't render Poppins without overflow, so it's locked to a generic look. Hand-built SVG gives full control over composition, type, and the palette — the point of a *premium* diagram. Mermaid stays a quick fallback but is being phased out.
- **Not `<img>`/ThemedImage:** an `<img>`-loaded SVG is an isolated document — it can't use the page's Poppins and can't react to the theme toggle, which forces a second dark file. Rendering the SVG **inline** (in the DOM) is the frontend best practice: one file, true Poppins, instant CSS theme switch, nothing to drift.

## The aesthetic, in one line

> **Almost everything is grey. Blue is a spotlight, not a paint job.**

Most nodes are neutral scaffolding; only the 1–2 nodes the diagram is *about* get Ottu blue (`#0B82BE`). Stripe docs / Apple keynote, not a rainbow flowchart. The locked palette, fonts, and shape grammar live in [`references/design-tokens.md`](references/design-tokens.md) — read it before choosing any colour or font.

## Workflow

### 1. Understand the flow before drawing it

A diagram is a teaching tool, not decoration. Pin down: the **actors/pieces** (respect the payment-domain roles in the repo `CLAUDE.md` — merchant calls APIs, customer only touches checkout UI, Ottu sits between merchant and gateway); the **direction** (usually left-to-right); the **ONE thing to notice** (the 1–2 Ottu pieces that become the accent nodes); and **what to leave out** (status codes, retries, protocol minutiae belong in prose beside the diagram). If the request is vague, read the surrounding page and let the prose tell you what to illustrate.

### 2. Design pass — borrow the eye of `frontend-design`, keep Ottu's rails

Invoke the **`frontend-design`** skill for the composition judgement: hierarchy, alignment, balance, whitespace, the "is this actually premium?" eye. But it defaults to **bold, grid-breaking, anti-Inter maximalism**, which would shatter a brand-locked system — so hold the rails firm:

- **Palette is locked** to the Ottu tokens — `#0B82BE` accent, neutral greys, `#ED2833` for genuine risk only. No new hues, no gradients.
- **Font is locked** to Poppins.
- **The aesthetic is refined restraint**, which `frontend-design` explicitly supports ("Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details"). That's the part you want.

**`frontend-design` supplies the eye; Ottu's tokens supply the rails. Apply the craft *within* the constraints.**

### 3. Author the light SVG

Start from [`assets/template.svg`](assets/template.svg) — root element, accessibility block, the single shared arrow marker, and the light `<style>`. Compose with the building blocks and rules in [`references/svg-conventions.md`](references/svg-conventions.md), and study [`references/examples.md`](references/examples.md). You only author the **light** theme and a normal `<style>` — the next step adds dark + scoping mechanically.

Keep columns aligned, give the focal node room, label arrows with verbs, and write a real `<title>`/`<desc>`.

### 4. Make it inline-ready (scope + theme) with one command

A single command turns your authored light SVG into the final inline SVG — scoped to a unique class, ids made unique (so several diagrams can share a page), and a `[data-theme='dark']` override block appended from the dark token map:

```bash
python .claude/skills/svg-diagram/scripts/inline-svg.py <your-light>.svg <slug>
```

`<slug>` is kebab-case and unique per diagram (e.g. `webhook-signing`). It prints the finished SVG to stdout. **Don't hand-write the dark rules or the scoping** — the script is the source of truth and keeps every diagram consistent.

### 5. Drop it into a diagram module

Create `src/diagrams/<Name>.tsx` holding the SVG as a `String.raw` template literal and rendering it through the shared component:

```tsx
import React from "react";
import Diagram from "@site/src/components/Diagram";

const SVG = String.raw`<svg ...>...the inline-svg.py output...</svg>`;

export default function WebhookSigning(): React.JSX.Element {
return <Diagram svg={SVG} alt="One-sentence summary, mirroring the SVG's <desc>." />;
}
```

`<Diagram>` (`src/components/Diagram/index.tsx`) injects the SVG inline so it gets Poppins and theme-switching; it also takes an optional `caption`. SVG markup never contains backticks or `${`, so `String.raw` is safe.

### 6. Render it on the page

```mdx
import WebhookSigning from '@site/src/diagrams/WebhookSigning';

<WebhookSigning />
```

The page must be `.mdx` (not `.md`) to import a component — rename it and update any sidebar `id` if needed.

### 7. Self-check

Run the checklist at the end of [`references/svg-conventions.md`](references/svg-conventions.md). Essentials:

- The SVG parses as well-formed XML; `<style>` has a `[data-theme='dark']` override block.
- Every selector is scoped under `.ottu-dgm--<slug>`; ids (`marker`, `title`, `desc`) are suffixed with the slug.
- Poppins everywhere; the string `Inter` appears nowhere.
- At most 1–2 `accent` nodes, at most 1 `danger`.
- `role="img"` plus a descriptive `<title>` and `<desc>`.
- No `width`/`height` on the root `<svg>` (so it scales).
- `npm run typecheck` passes. If a dev server is running, the page renders in both themes (toggle and check the focal node colour changes).

## Replacing an existing Mermaid diagram

1. Read the ```mermaid``` block and reconstruct the flow — nodes, edges, direction, focus.
2. Author the light SVG, run `inline-svg.py`, and create the `src/diagrams/<Name>.tsx` module.
3. Delete the ```mermaid``` fence and render `<YourDiagram />` in its place (add the import).
4. Mention the conversion so it's reviewable.

## Reference files

- [`references/design-tokens.md`](references/design-tokens.md) — locked palette (light + dark overrides), Poppins type scale, shape→role grammar. **The colour/font source of truth.**
- [`references/svg-conventions.md`](references/svg-conventions.md) — the SVG skeleton, accessibility, the single shared arrow marker, the inline/scoping contract, building-block snippets, the self-check.
- [`references/examples.md`](references/examples.md) — the shipped diagrams annotated, plus a minimal complete one.
- [`assets/template.svg`](assets/template.svg) — the light authoring scaffold. Run `scripts/inline-svg.py` on it to produce the final inline SVG.
- `scripts/inline-svg.py` — scope + id-uniquify + append the dark overrides. (`scripts/make-dark.py` is retired — it produced the old second file.)
77 changes: 77 additions & 0 deletions .claude/skills/svg-diagram/assets/template.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 47 additions & 0 deletions .claude/skills/svg-diagram/evals/evals.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"skill_name": "svg-diagram",
"notes": "Baseline = no skill (creating a new skill). Each eval is a realistic docs-author request covering one core use case: build-from-prose (small, security-flavored), convert-an-existing-Mermaid, and synthesize-a-large-end-to-end. The shared expectations encode the skill's hard invariants; eval-specific ones check task fidelity. Subjective quality (composition, premium feel, right accent choice) is judged in the human review viewer, not asserted here.",
"shared_expectations": [
"Produced both a light and a dark SVG file",
"Both SVGs are well-formed XML",
"Light and dark differ only inside the <style> block (theme parity)",
"Uses Poppins; the string 'Inter' never appears",
"Accent is Ottu blue #0B82BE; no orange/green/pink node fills",
"Restraint: at most 2 accent nodes and at most 1 danger node",
"Accessibility: role='img' with a non-empty <title> and <desc>",
"Root <svg> scales (has viewBox, no width/height)",
"Embeds via <ThemedImage> with light and dark sources"
],
"evals": [
{
"id": 1,
"name": "webhook-hmac-flow",
"prompt": "Our webhooks overview page is all text and could really use a diagram. Can you add one that shows how a signed webhook works end to end: Ottu POSTs a payment-outcome event to the merchant's webhook_url, the event carries an HMAC-SHA256 signature, and the merchant recomputes and verifies that signature before trusting the payload, then responds 200 OK. It should look like the diagram on our architecture page and work in dark mode too.",
"expected_output": "A light+dark pair of SVGs in Ottu's restrained style: neutral nodes for Ottu's webhook sender and the merchant receiver, the HMAC signature/verification given appropriate emphasis, a solid POST arrow and a 200 OK response, Poppins, #0B82BE accent, accessibility block, and the <ThemedImage> snippet. Light and dark differ only in <style>.",
"files": [],
"expectations": ["Represents the HMAC signature / verification step"]
},
{
"id": 2,
"name": "convert-recurring-mermaid",
"prompt": "I want to get rid of the Mermaid diagram on our recurring payments page (docs/developers/cards-and-tokens/recurring-payments.mdx) and replace it with a hand-built diagram that matches our architecture page, including light and dark mode. The current Mermaid shows the CIT/MIT recurring flow: the Merchant creates a Checkout session (CIT), the Customer pays and saves the card, a webhook returns the token, then the Merchant charges the saved token via the Auto-Debit API (MIT) and gets a result webhook back. The Auto-Debit API is the key piece.",
"expected_output": "Two themed SVGs faithfully preserving the CIT/MIT flow and actors (Merchant, Checkout API, Customer, Auto-Debit API), Auto-Debit API as the single accent node, dashed async webhook returns, accessibility block, and a <ThemedImage> snippet that replaces the ```mermaid``` fence. Light/dark parity.",
"files": [],
"expectations": [
"Preserves the flow: includes Checkout and Auto-Debit, with an accent node",
"Replaces the Mermaid fence (snippet uses ThemedImage, no triple-backtick mermaid)"
]
},
{
"id": 3,
"name": "payment-journey-overview",
"prompt": "Our payment journey is explained only in prose and it's hard to follow. I'd like a diagram of the whole flow: the merchant backend creates a session via the Checkout API, Ottu returns a session_id and checkout_url, the merchant presents the checkout UI to the customer, the customer pays, Ottu routes the payment to the gateway, then Ottu notifies the merchant by webhook and redirects the customer back. Make it premium like our architecture diagram, in light and dark.",
"expected_output": "Two themed SVGs of the end-to-end journey with merchant, the Ottu platform (dashed container), and gateway. Despite ~6-7 boxes, only 1-2 accent nodes (restraint); labeled arrows carrying verbs; a dashed async webhook return; accessibility block; and the <ThemedImage> snippet. Light/dark differ only in <style>.",
"files": [],
"expectations": [
"Groups Ottu services in a dashed platform container (container-bg)",
"Includes a dashed asynchronous return path"
]
}
]
}
Loading
Loading