From sdk-lifecycle
Scaffold SDK projects for .NET, Python, or TypeScript with complete structure, tests, and CI/CD
npx claudepluginhub infiquetra/infiquetra-claude-plugins --plugin sdk-lifecycleThis skill uses the workspace's default tool permissions.
You are helping the user create a new SDK project with a complete structure, testing framework, and CI/CD pipeline.
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
You are helping the user create a new SDK project with a complete structure, testing framework, and CI/CD pipeline.
The sdk-scaffolding skill generates a production-ready SDK project structure for:
Each generated project includes:
Before scaffolding, verify:
Ask the user for:
Use the scaffold_sdk.py script:
python plugins/sdk-lifecycle/skills/sdk-scaffolding/scripts/scaffold_sdk.py \
--name "sdk-name" \
--language "python|dotnet|typescript" \
--description "SDK description" \
--api-url "https://api.service.com" \
--author "Infiquetra Team"
The script will create:
my-sdk/
├── src/
│ └── vecu_my_sdk/
│ ├── __init__.py
│ ├── client.py
│ ├── models.py
│ ├── exceptions.py
│ └── version.py
├── tests/
│ ├── __init__.py
│ ├── test_client.py
│ └── test_models.py
├── docs/
│ ├── index.md
│ └── api-reference.md
├── examples/
│ └── quickstart.py
├── .github/
│ └── workflows/
│ ├── test.yml
│ └── publish.yml
├── pyproject.toml
├── README.md
├── CHANGELOG.md
├── LICENSE
└── .gitignore
infiquetra.Wallet.SDK/
├── src/
│ └── infiquetra.Wallet.SDK/
│ ├── Client.cs
│ ├── Models/
│ ├── Exceptions/
│ └── infiquetra.Wallet.SDK.csproj
├── tests/
│ └── infiquetra.Wallet.SDK.Tests/
│ ├── ClientTests.cs
│ └── infiquetra.Wallet.SDK.Tests.csproj
├── docs/
├── examples/
│ └── Quickstart/
├── .github/workflows/
├── infiquetra.Wallet.SDK.sln
├── README.md
├── CHANGELOG.md
└── LICENSE
my-sdk/
├── src/
│ ├── client.ts
│ ├── models.ts
│ ├── exceptions.ts
│ └── index.ts
├── tests/
│ ├── client.test.ts
│ └── models.test.ts
├── docs/
├── examples/
│ └── quickstart.ts
├── .github/workflows/
├── package.json
├── tsconfig.json
├── README.md
├── CHANGELOG.md
└── LICENSE
The script generates language-specific configuration:
[project]
name = "my-sdk"
version = "0.1.0"
description = "Python SDK for Infiquetra Wallet Service"
authors = [{name = "Infiquetra Team", email = "hello@infiquetra.com"}]
requires-python = ">=3.12"
dependencies = [
"httpx>=0.27.0",
"pydantic>=2.0.0"
]
[project.optional-dependencies]
dev = [
"pytest>=8.0.0",
"pytest-asyncio>=0.23.0",
"ruff>=0.3.0",
"mypy>=1.9.0"
]
[tool.ruff]
line-length = 100
target-version = "py312"
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<PackageId>infiquetra.Wallet.SDK</PackageId>
<Version>0.1.0</Version>
<Authors>Infiquetra Team</Authors>
<Description>C# SDK for Infiquetra Wallet Service</Description>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="System.Text.Json" Version="8.0.0" />
</ItemGroup>
</Project>
{
"name": "@vecu/my-sdk",
"version": "0.1.0",
"description": "TypeScript SDK for Infiquetra Wallet Service",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "tsc",
"test": "jest",
"lint": "eslint src/"
},
"dependencies": {
"axios": "^1.6.0"
},
"devDependencies": {
"@types/node": "^20.0.0",
"typescript": "^5.3.0",
"jest": "^29.0.0",
"eslint": "^8.0.0"
}
}
Create GitHub Actions workflows:
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup
# Language-specific setup
- name: Install dependencies
# Language-specific install
- name: Run tests
# Language-specific test command
- name: Run linting
# Language-specific lint command
name: Publish
on:
release:
types: [created]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build package
# Language-specific build
- name: Publish to package registry (PyPI/npm)
# package registry (PyPI/npm) publish command
cd sdk-name/
git init
git add .
git commit -m "chore: initial SDK scaffolding"
Run initial tests to verify:
Python:
uv pip install -e ".[dev]"
pytest tests/
ruff check src/
mypy src/
/.NET:
dotnet restore
dotnet build
dotnet test
TypeScript:
npm install
npm test
npm run lint
httpx for async HTTP clientpydantic for data validationHttpClient with dependency injectionaxios for HTTP clientSolution:
Solution:
Solution:
After scaffolding:
For detailed templates and patterns, see:
references/python-template.md - Python SDK structure and patternsreferences/dotnet-template.md - .NET SDK structure and patternsreferences/typescript-template.md - TypeScript SDK structure and patternsreferences/ci-pipeline-patterns.md - CI/CD workflow examples