agentsclimarketplace

Figma canva client api integration

Skill lubochka/xiigen-mvp-engine/.agents/skills/figma-canva-client-api-integration

Self-building AI code generation engine that generates application flows instead of implementing them. AGPL-3.0.

Install
npx -y skills add lubochka/xiigen-mvp-engine --skill figma-canva-client-api-integration

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 14 days oldThe repository was created 14 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

The thin-client boundary for design-source integration (FigmaToCode / CanvaToCode) in XIIGen mvp: the client only sends a payload and receives a result/artifacts; no client-side training, semantic ranking, visual scoring, DPO, or checkpoint mutation. Defines the payload contract (source_kind, payload_ref_or_inline_payload, selected_frame_or_page, viewport_state_request, tier_policy_id, privacy_scope, user_approval_refs), the privacy-gate, the debug-gate, and honest failed/quarantine statuses.

SKILL.md

5.7 KB, as published. Nobody here has run it

SK-565 Figma/Canva Client API Integration (GUIDE) — thin client (React/NestJS)

A design-source converter (Figma → code, Canva → code) is a thin client: it ships a payload to a core endpoint and renders back the result/artifacts. All intelligence — normalisation, scoring, ranking, DPO, training — lives in llm_mvp_core behind that endpoint, never in the mvp client (R5/R6).

Why this guide exists (the gap it closes)

mvp has no design-source integration yet, and it must be built as a thin adapter, not as a place where model logic leaks into the agent/client layer. mvp already calls Anthropic/OpenAI/Google SDKs on the server (server/package.json: @anthropic-ai/sdk, openai, @google/generative-ai) and has an adapter catalogue (adapters/, server/src/engine/adapters/). The Figma/Canva client is one more thin adapter: a typed fetch to a core endpoint, plus a React artifact viewer. SK-565 defines that boundary and its gates.

When to Invoke

  • When adding FigmaToCode / CanvaToCode (or any design-source → code) capability.
  • When reviewing an integration that risks doing model work client-side.

Section 1 — Thin-client boundary (the hard line)

The client may ONLY:

  • collect/select the design source and build a payload;
  • POST that payload to the core endpoint;
  • receive result + artifacts and render them (React viewer);
  • show honest status (success / failed / quarantine).

The client may NOT:

  • train, fine-tune, or update any model or checkpoint;
  • run semantic ranking, visual scoring, or quality judgement;
  • build DPO pairs;
  • normalise/learn from the design corpus.

Those all happen in llm_mvp_core behind the endpoint. A converter that scores or ranks in the React/NestJS client is a boundary violation (R6).

[Figma/Canva] -> client builds payload -> POST core endpoint (llm_mvp_core)
                                              |
                          (normalise / rank / score / DPO / train — CORE ONLY)
                                              v
            client renders <- { result, artifacts, status } <- core

Section 2 — Payload contract

The client sends exactly this shape (typed; validate with a zod schema on the NestJS adapter before forwarding):

interface DesignSourcePayload {
  source_kind: "figma" | "canva";
  payload_ref_or_inline_payload: string;     // a ref/URL OR an inline payload
  selected_frame_or_page: string;            // which frame/page to convert
  viewport_state_request: ("desktop" | "tablet" | "mobile" | "rtl")[];
  tier_policy_id: string;                     // which tier/policy governs the call
  privacy_scope: "public" | "tenant" | "private";
  user_approval_refs: string[];              // consent/approval evidence ids
}

The core response is { result, artifacts[], status }; the client renders artifacts and never re-computes them.


Section 3 — Privacy gate

  • A payload with privacy_scope: "private" (or "tenant" without explicit approval) must not be sent into any common-training path. Private user designs train only the adaptive/user leg, and only with user_approval_refs present.
  • Missing user_approval_refs for a non-public scope = do not send; surface a consent affordance instead (ties to FC-18 UX-29).
  • This is enforced client-side as a pre-send check and re-enforced in core.

Section 4 — Debug gate

  • Debug/inspection surfaces must not leak model internals or any private corpus content (prompts, other tenants' designs, checkpoint internals).
  • A debug view may show the payload the client sent and the artifacts core returned, never core's internal model state.

Section 5 — Honest status (failed / quarantine)

The client must render the core status truthfully:

statusmeaningclient behaviour
successconversion produced artifactsrender artifacts
failedconversion could not completeshow the reason, offer retry; do not fabricate a result
quarantinesource/consent/license could not be clearedshow why; block use until cleared

Never paper over a failed/quarantine with a fake "looks done" view.

Section 6 — What stays in llm_mvp_core (not here)

Normalisation of design payloads, semantic/visual scoring, ranking, DPO pair construction, checkpoints, and any training/promotion of common models live in llm_mvp_core (R5/R6). The mvp side is strictly the thin adapter + viewer + gates defined above.

Section 7 — Integration

  • Adapter home: server/src/engine/adapters/ (or adapters/) — a typed NestJS provider (fabric/DI) that validates the payload (zod) and forwards to core; a thin React viewer in client/src for artifacts.
  • Render-QA / visual-diff: returned artifacts can feed SK-563 (render-QA) and SK-564 (visual-diff) as evidence — but those run on the rendered output, not inside this client.

Gives 0 of the 12 instructions most apis services skills give

Counted across 424 of the 426 authors here whose files we hold, read 2026-08-06

  • use plural nouns for resource namesin 41 of 424, across 32 files
  • use cursor-based pagination for large datasetsin 35 of 424, across 20 files
  • include rate limit headers in responsesin 25 of 424, across 13 files
  • Use kebab-case for multi-word resourcesin 23 of 424, across 13 files
  • version APIs in the URL pathin 19 of 424, across 9 files
  • use semantic HTTP status codesin 18 of 424, across 8 files
  • verify webhook signaturesin 18 of 424, across 11 files
  • use query parameters for filteringin 17 of 424, across 6 files
  • use async database operationsin 14 of 424, across 7 files
  • wrap successful responses in a data fieldin 13 of 424, across 3 files
  • prefix sorting parameters with a hyphen for descending orderin 13 of 424, across 3 files
  • set appropriate HTTP status codesin 13 of 424, across 6 files

Said here and by no other author read

  • send design payload to core endpoint
  • render returned artifacts and status
  • require user approval refs for private data
  • surface consent affordance for missing approvals
  • block private payloads from common training paths
  • display failed or quarantine status truthfully

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.