Skip to content

create-sandbox — build a TypeScript API sandbox from C# or Postman, end-to-end

← Skills Built at NBG

Slash command /create-sandbox

build a TypeScript API sandbox from C# or Postman, end-to-end

End-to-end pipeline for building a TypeScript implementation of an existing . Translate C# types and controllers to TypeScript (or infer types from a Postman collection), design the sandbox architecture, scaffold the multi-sandbox infrastructure, then implement service methods one at a time with integration + contract tests generated and run automatically.

advanced ⏱ ~1-2 days of manual scaffolding per API View source ↗

create-sandbox is the team’s end-to-end pipeline for spinning up a TypeScript implementation of an existing . The sandbox is a working backend stub the front end can develop against, integration tests can hit, and contract checks can validate — without waiting on the real backend to be deployable, stable, or even finished.

Two entry points converge on the same workflow:

  • You have C# source — Claude reads the types and controllers and translates them
  • You have a Postman collection — Claude infers types and service stubs from the request/response examples

Either way, the output is a typed TypeScript service layer plus a multi-sandbox infrastructure you can run locally.

The eight capabilities

The ships as an 8-step lifecycle. You can run them in order, jump in at any step, or invoke a single capability standalone.

#CapabilityPurposeOutput
1Type TranslationC# types → TypeScriptgenerated-types.d.ts
2Controller TranslationC# controllers → service stubsgenerated-services/*.service.ts
3Sandbox DesignArchitecture design documentsandbox-design.md (no code)
4Sandbox InfrastructureMulti-sandbox runtime scaffoldsrc/sandbox/ (7 files)
5Method ImplementationImplement ONE service method per callUpdated .service.ts
6Postman Type InferencePostman collection → TypeScript typesgenerated-types.d.ts
7Postman Service GenerationPostman collection → service stubsgenerated-services/*.service.ts
8Endpoint TestingGenerate and run integration + contract testssrc/tests/endpoints/*.test.ts

Typical flow: 1 → 2 (or 6 → 7 from Postman) → 3 (design doc) → 4 (infrastructure) → 5 + 8 repeated per method.

When you reach for it

Concrete triggers, lifted straight from the skill’s usage catalogue:

  • “Translate the C# types in ./src/Models to TypeScript” — Capability 1
  • “Generate TypeScript services from my C# controllers” — Capability 2
  • “Design a sandbox for the services in ./services — Capability 3
  • “Implement the sandbox infrastructure based on docs/sandbox-design.md — Capability 4
  • “Implement the GetUserInfo method” — Capability 5
  • “Generate types from my Postman collection” — Capability 6
  • “Generate service stubs from my Postman collection” — Capability 7
  • “Run the tests for getUserInfo — Capability 8

If you’re not building or extending a sandbox of an existing API, this isn’t the skill — try /team or plain instead.

Rules the skill enforces

A few non-negotiables baked into the skill that are easy to miss if you skim the docs:

  • Never modify tsconfig.json to suppress errors. No noUnusedParameters: false, no // @ts-ignore, no any-typed escape hatches. Genuine fixes only.
  • Capability 5 implements exactly one method per invocation. Bulk requests are denied. After each method, Swagger JSDoc is updated and tests are generated + run automatically.
  • Always use absolute paths ($PWD/...) for the script invocations — relative paths resolve incorrectly under npx tsx.
  • Capabilities 6 → 7 flag alignment is critical. If you used --envelope "payload" in 6, you must use --envelope in 7. If you used --folders "Account,Cards" in 6, the same in 7. Mismatched flags produce subtly wrong type names that only surface at build time.

Required environment variables

Capabilities 4 and 5 require:

SANDBOX_APP_ID=<app-name>          # Application identifier
SANDBOX_DATA_DIR=./data/sandboxes  # Base directory for sandbox files

No fallback values. The application fails at startup if either is missing — by design, per the team’s no-silent-defaults rule.

Limitations to know up front

  • Translation covers type definitions only — C# method bodies are not translated. Method implementation happens in Capability 5, one method at a time.
  • The sandbox is file-based and single-threaded — for development and integration testing, not production load.
  • WebSocket and streaming endpoints are not supported by the test generator.
  • Contract validation is structural (field presence and types), not semantic — business-rule validation is your responsibility in Capability 5.

Going deeper

The full SKILL. and the eight capability-specific guides (01-type-translation.md through 08-endpoint-testing.md) live in the upstream repo. The eight guides go into detail on naming conventions, generated code structure, entity design, manager patterns, and test scope modes — read them when you hit the capability you’re about to invoke.

Next skill →

deploy — deploy to NBG Azure

Automates end-to-end deployment of NBG Azure-hosted web applications via the Azure Management Portal REST — first-deploy (provision), auth-setup (identity team credentials + proxy + Kafka), and redeploy (rebuild + push).