SuperAPI AI Directory

ssd

Coding & development

View repository

Updated 10-15 23:39

About this skill

SSD Agent Skills

You are an AI assistant that helps the Smile Solution Development (SSD) team write code according to the team's standards

How to use

Type /ssd <command> to invoke commands such as:

  • /ssd frontend-setup — set up a React/TypeScript project
  • /ssd git-commit — write a commit message according to the standards
  • /ssd python-review — review Python code

Available commands (37 commands)

Frontend (React + TypeScript)

Command Details
frontend-init Start a new Frontend project from react-ts-template-2023 v1.2.0
backend-init Start a new Backend project from Net60_ApiTemplate_2023 (202306)
frontend-setup Set up a new React/TS project — folder structure, tools, naming conventions
frontend-feature Create a new feature from natural language — components, pages, Redux slice, API client, complete
react-component React functional component standards, Props typing, hooks
react-form Formik form implementation กับ MUI
react-state Redux slice, dispatch patterns
react-api API client with Axios, React Query, NSwag

Backend (.NET Core)

Command Details
backend-setup Set up a new ASP.NET Core 6 project
backend-feature Create a new feature from natural language — Service, Controller, DTO, complete (database-first, requires an EF Core Model first)
dotnet-controller ASP.NET API controllers, routing, authorization
dotnet-service Service layer, DTO, AutoMapper
dotnet-infra Serilog logging, Quartz jobs, RestSharp HTTP clients
dotnet-scaffold EF Core Reverse Engineer via CLI — dotnet ef dbcontext scaffold with SSD conventions
dotnet-ef-query EF Core query patterns — AsNoTracking, Include, pagination, transaction, async
database EF Core Reverse Engineer, database naming conventions

Python

Command Details
python-starter Start a new FastAPI project with Clean Architecture
python-feature Create a new feature/endpoint from natural language — CRUD and streaming + external service
python-review Review Python code (architecture, HTTP methods, logging, SQLAlchemy)
python-refactor Safely refactor .py files with pytest
python-database PostgreSQL + SQLAlchemy 2.x: naming, ORM models, Alembic migration

Review & Refactor

Command Details
ts-fix-unused Fix TS6133/TS6196 build errors — @ts-nocheck for NSwag files, @ts-ignore for manual code
frontend-review Review React/TypeScript code
backend-review Review C#/.NET code
frontend-refactor Safely refactor .tsx/.ts files
backend-refactor Safely refactor .cs files

Git & Release

Command Details
git-commit Conventional Commits, Semantic Versioning
git-flow Git Flow workflow, branch naming, pull request standards
release-it-setup Set up release-it for automated GitHub releases

Specialized

Command Details
contact-skill-gen Create SKILL.md for shared libraries
bug-auth-redirect Fix white screen / auth redirect loop
bug-version-checker Fix version cache race condition

Doctor (Project Health)

Command Details
frontend-doctor Check the health of a React/TypeScript project — dependencies, config, folder structure, ENV pattern
backend-doctor Health check for ASP.NET Core project — NuGet packages, middleware pipeline, appsettings
python-doctor Health check for FastAPI project — dependencies, Clean Architecture layers, main.py wiring
python-streaming-doctor Check production-readiness of SSE/streaming endpoint — proxy buffering, timeout, worker, resource leak, multi-replica
db-doctor Health check for Database schema — standard columns, datetime2, naming, SP prefix

How to respond to commands

When the user types /ssd <command>:

  1. matches exactly one command in full (exact match) — load the matching reference file from reference/<command>.md, follow every SSD standard specified in that file, write code only according to the defined conventions, do not deviate
  2. did not specify a command, or typed help / --help / -h / ? / -? — show the full list of commands above (grouped by category) and ask which command to use
  3. typed incompletely/does not match any command at all (partial) — split all command names by - into segments, then find commands where any segment "starts with" the typed text (prefix match per segment, case-insensitive), covering both the first segment (category) and the last segment (keyword), e.g.:
    • typed dotn → matches the first segment of dotnet-controller, dotnet-service, dotnet-infra, dotnet-scaffold, dotnet-ef-query (5 commands → display as plain text, do not use AskUserQuestion)
    • typed doctor → matches the last segment of frontend-doctor, backend-doctor, python-doctor, db-doctor
    • typed review → matches the last segment of frontend-review, backend-review, python-review
    • found 1 command — suggest that command immediately, with a short description and the line "Try typing: /ssd <command>"
    • found more than 1 command but not more than 4 commands — Show only matching commands (not all) with descriptions, then use AskUserQuestion to ask the user which command they want from those matches (include every matching command as an option — AskUserQuestion accepts at most 4 options only)
    • More than 4 commands found — Do not use AskUserQuestion (options beyond 4 will be partially truncated with no rule on which are cut, making some commands unselectable) Show all matching commands as text, then ask the user to type the name of the command they want from that list instead
    • None found — fall back to showing all commands and asking which command to use (same as item 2)

Shared Context (Shared Standards)

These standards apply to every skill:

Core Stack:

  • Frontend: React 18.2 + TypeScript + Vite 4.3.9 + MUI v5
  • Backend: ASP.NET Core 6 + Entity Framework Core 6
  • Python: FastAPI + SQLAlchemy 2.x + Clean/Hexagonal Architecture

Encoding: UTF-8, line ending CRLF (Windows)

Naming:

  • TypeScript: PascalCase (class/component), camelCase (var/func), CONSTANT_CASE (constants)
  • C#: PascalCase (class/method), camelCase (local), _camelCase (private field)
  • Python: snake_case (func/var), PascalCase (class)

Universal Prohibitions:

  • Do not use any type in TypeScript
  • Do not use f-strings in logging (Python)
  • Do not use DELETE/PUT/PATCH in APIs in any stack (C#/.NET, Python) — the company standard uses REST API, not RESTful; there are only GET and POST HTTP methods. Use POST + action path, e.g. {id}/update, {id}/delete

config file: CLAUDE.md