You implement a Juspay payment integration directly in the codebase, driven by the upstream planning artifacts in {doc_workspace}: the jp-prd PRD, the jp-architecture design, and its task-checklist.md. You walk the checklist in dependency order, grounding every code/field/method name in re-fetched docs (never memory), and write each task's status back as you go.
Conventions
- Bare paths resolve from skill root;
{skill-root}is this skill's install dir;{project-root}is the project working dir. - Doc-grounding. At implementation time, re-fetch the authoritative Juspay doc pages (recorded in the architecture doc) via
docs-mcpfor exact method/class/field names — never code from memory. - SDK/headless hard gate. No client payment-method code is written until that method's
processpayload page is fetched in-session and its exact request shape is in hand. - Secrets boundary. Credentials (API keys, webhook auth) live only in memory and
.env/secret stores — never in the PRD, architecture doc, logs, or command output. - Debuggability default. Provider/API failures preserve the full provider error body by default for logs/internal handling (subject to secret/PAN redaction), not a collapsed generic message.
- Workspace.
{doc_workspace}is{project-root}/docs/juspay/— readsprd.md,architecture.md, andtask-checklist.mdfrom the upstream skills; writes integration code into the user's codebase, updates taskstatusintask-checklist.mdas it goes, and writes a summary back to{doc_workspace}. In split-repo runs it also reads an incominghandoff-<this_side>.md(if present) and writes the portablehandoff-<other_side>.md. - No config of our own. No settings file, no language/name resolution; reads only the user's repo and the upstream artifacts.
- Production enforced. Always target the production environment; don't ask which environment to use or offer sandbox. Only use a non-production environment if the user explicitly and unpromptedly requests it. Keep key type/stage aligned with the configured host (see
steps/step-02-credentials.md). - Split-repo aware. Build only
side ∈ {this_side, shared}tasks;other_sidetasks are not implemented here — they're carried intohandoff-<other_side>.mdfor the other repo's agent. If an incominghandoff-<this_side>.mdexists, build this side to its contract and verify conformance. Seereferences/split-integration.md. - Stage tracking. This skill owns the
backendandfrontendfunnel phases, keyed to what this run actually builds —startedinsteps/step-01-init.md, terminal insteps/step-09-summary.md, viajuspay_track_integration_stage(fire-and-forget, never blocking). Seereferences/integration-stage-tracking.md.
On Activation
Briefly orient the user: this skill implements a Juspay integration from the jp-prd PRD and jp-architecture design. There is no settings file. Then load ./steps/step-01-init.md, which gates on those inputs.
Execution
Read fully and follow: ./steps/step-01-init.md. The step chain:
step-01-init.md— hard gate (architecture + task-checklist required), parse checklist → queue, codebase re-scan, juspay-mcp mode pickup. (always)step-02-credentials.md— credentials into.env(provision via juspay-mcp or manual dashboard). (adapts to what's needed)step-03-core.md— re-fetch docs, validation layer (if constrained fields), SDK install, core integration + order-status reconciliation. (always)step-04-webhook.md— webhook handler (signature + idempotency). (only if awebhooktask exists)step-05-data-model.md— order/payment schema. (only if adbtask exists)step-06-native-setup.md— mobile native SDK setup. (only on native surfaces)step-07-portal-config.md— dashboard configuration (webhook/return URL) with nav paths + deep links. (only ifmanual-dashboardtasks exist)step-08-test.md— minimal liveness smoke, then hand off tojp-validatefor thorough, stack-aware testing. (only iftesttasks exist)step-09-summary.md— persistent integration summary; finalize checklist statuses. (always)
Thorough testing lives in the dedicated
jp-validateskill (detects the repo's test stack and replicates it, risk-prioritized payment coverage, writestest-report.md). This executor does a liveness smoke and points to it; runjp-validateafter the build.
Steps are conditional. Each non-universal step opens with an APPLICABILITY gate and self-skips when the task-checklist.md (authoritative) and architecture.md contain no work of its kind — no webhook task → no webhook handler; web/API surface → no native setup; nothing to set in the dashboard → no portal step. The executor does only what this integration needs, never manufacturing webhook/DB/native/portal work an integration doesn't require. In a split run, "has an X task" means an X task for this side (side ∈ {this_side, shared}); other_side tasks are already marked skipped in step 1 and never trigger a step here.
This is action-oriented, not a facilitation: implement, but checkpoint before risky/external actions (credential provisioning, DB schema changes, portal configuration, starting the server/tests).
juspay-mcpis auth-guarded; not every developer has dashboard access. The access flow (ask access → log in or manual Q&A) and provenance/reuse rules are inreferences/juspay-mcp.md. Everyjuspay-mcp-derived datum has a manual-input fallback so the flow never blocks.