Agent skill

Tsh Implementing Backend

by TheSoftwareHouse in TheSoftwareHouse/copilot-collections

Backend service implementation patterns, standards, and procedures.

MITAuto-check: notesBackend & APIs

Install Tsh Implementing Backend

skills CLI
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-backend -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install TheSoftwareHouse/copilot-collections tsh-implementing-backend --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/tsh-implementing-backend .claude/skills/tsh-implementing-backend && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
tsh-implementing-backend
GitHub stars
284
Token cost
~5.8k tokens
SKILL.md length
2,335 words
Files
6 (incl. references)
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Backend service implementation patterns, standards, and procedures.

  • Works in 6 steps: Isolate all HTTP communication with… → Map external types to internal domain… → Store configuration (API URLs, keys,… → …
  • Building REST/GraphQL APIs
  • SKILL.md covers When to Use, Guiding Principles, Architecture: Vertical Slice /… and REST API Design, plus 6 more sections
  • Calls docker-compose and npm

What it does

Tsh Implementing Backend is an agent skill from TheSoftwareHouse/copilot-collections. Backend service implementation patterns, standards, and procedures. Use for building REST/GraphQL APIs, implementing CRUD endpoints, database handling, authentication, testing strategies, external service integrations, filtering/pagination (DataGrid), logging, Docker setup, and modular architecture. Applies to Node.js, PHP, .NET, Java, and Go backends.

Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/dotnet-patterns.md`, `references/go-patterns.md` and `references/java-spring-boot-patterns.md`).

It sits in Backend & APIs, covering Authentication, GraphQL and Test strategy. It works with Docker, Java, PHP and .NET. The repository describes itself as: Opinionated AI-enabled workflows for product engineering. The licence is MIT.

When your agent uses it

  • Building REST/GraphQL APIs
  • Implementing CRUD endpoints
  • Database handling
  • Testing strategies

Example prompts

  • “/tsh-implementing-backend”

Requirements

  • Node.js
  • Docker

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Isolate all HTTP communication with external services into a client class. Never call HTTP clients (Axios, fetch, HttpClient) directly…
  2. Map external types to internal domain types at the adapter boundary. The rest of the application should not know about the external API's…
  3. Store configuration (API URLs, keys, tokens) in environment variables and inject via config.
  4. Handle errors gracefully: catch HTTP errors, map them to domain-specific exceptions, and log the details.
  5. Make clients testable: depend on an interface so the client can be mocked in tests.
  6. Add retry logic and timeouts for resilience. Use circuit breaker patterns for critical integrations.

What it can do on your machine

Read from SKILL.md and the folder at commit 2fbe51e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • docker-compose
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Tsh Implementing Backend loads about 5.8k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 95 tokens; SKILL.md has 2,335 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~95
When it runs · the whole SKILL.md, loaded when a task matches
~5.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~15k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:448
    - Use `.env` files for local development with a `.env.dist` (or `.env.example`) template committed to the repo.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from TheSoftwareHouse/copilot-collections at commit 2fbe51e, republished under its MIT licence (© TheSoftwareHouse). 2,335 words, ~5,823 tokens.

Download SKILL.mdSave it as .claude/skills/tsh-implementing-backend/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
tsh-implementing-backend
description
Backend service implementation patterns, standards, and procedures. Use for building REST/GraphQL APIs, implementing CRUD endpoints, database handling, authentication, testing strategies, external service integrations, filtering/pagination (DataGrid), logging, Docker setup, and modular architecture. Applies to Node.js, PHP, .NET, Java, and Go backends.
user-invocable
false

Implementing Backend

Provides patterns for building backend API services with modular architecture, structured testing, and production-ready infrastructure following TSH best practices.

When to Use

  • Building new REST or GraphQL API endpoints
  • Implementing CRUD operations with filtering, sorting, and pagination
  • Setting up authentication and authorization (JWT)
  • Integrating with external/third-party services
  • Writing integration tests for endpoints or unit tests for business logic
  • Configuring database migrations, seeding, or repository patterns
  • Setting up Docker and docker-compose for local development
  • Implementing logging and observability
  • Documenting APIs with Swagger/OpenAPI
  • Designing modular architecture with vertical slices

Guiding Principles

PrincipleApplication
SRPEach class/module has one reason to change. Controllers handle HTTP, services handle business logic, repositories handle data access.
DRYExtract shared logic into reusable services or utilities. Do not duplicate validation, mapping, or query logic.
KISSPrefer simple, readable solutions. Avoid over-engineering. Do not add abstractions until they are needed.
YAGNIDo not build features or infrastructure "just in case". Implement what is needed now.
PragmatismFollow patterns when they add value. Break rules when strict adherence creates unnecessary complexity. Document the reasoning.

Architecture: Vertical Slice / Modular Structure

Organize code by domain/feature, not by technical layer. All artifacts related to a domain live in the same directory.

src/
├── users/
│   ├── users.controller.ts      # HTTP layer (routes, request/response)
│   ├── users.service.ts          # Business logic
│   ├── users.repository.ts       # Data access
│   ├── users.module.ts           # Module registration / DI wiring
│   ├── dto/
│   │   ├── create-user.dto.ts
│   │   └── update-user.dto.ts
│   ├── entities/
│   │   └── user.entity.ts
│   ├── tests/
│   │   ├── users.integration.test.ts
│   │   └── users.service.unit.test.ts
│   └── users.swagger.yml         # (if using separate swagger files)
├── orders/
│   ├── orders.controller.ts
│   ├── orders.service.ts
│   ├── orders.repository.ts
│   └── ...
├── shared/                       # Cross-cutting concerns only
│   ├── middleware/
│   ├── guards/
│   ├── filters/
│   ├── interceptors/
│   └── utils/
└── config/
    ├── database.config.ts
    ├── auth.config.ts
    └── app.config.ts

Rules:

  • A module should be self-contained. Moving or removing a feature module should not break other modules.
  • Cross-module communication goes through well-defined interfaces (service interfaces, events), never direct imports of internal classes.
  • Shared utilities go in shared/ only when used by 3+ modules. Otherwise keep them in the feature module.

REST API Design

Resource Naming & HTTP Methods
MethodPathPurposeSuccess Code
GET/resourcesList with filtering, sorting, pagination200
GET/resources/:idSingle resource details200
POST/resourcesCreate resource201
PATCH/resources/:idPartial update200
PUT/resources/:idFull replace (use sparingly)200
DELETE/resources/:idRemove resource204

Naming conventions:

  • Use plural nouns for resource names: /users, /orders, /products
  • Use kebab-case for multi-word resources: /order-items
  • Nest sub-resources max 1 level deep: /users/:id/orders (avoid deeper nesting)
  • Use query parameters for filtering, not path segments
Standard Error Response Codes
CodeMeaning
400Validation errors (malformed request body, missing fields)
401Unauthenticated (missing or invalid token)
403Unauthorized (valid token but insufficient permissions)
404Resource not found
409Conflict (e.g. duplicate unique field)
422Business logic errors (foreign key violation, state conflict)
500Unexpected server error (never expose stack traces in production)
Standard Error Response Format
json
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "Validation failed",
  "details": [
    { "field": "email", "message": "must be a valid email address" }
  ]
}

DataGrid: Filtering, Sorting & Pagination (TSH Standard)

Every list endpoint returning paginated data MUST follow this schema.

Request Query Parameters
ParameterFormatDescription
pagepage=1Page number (starting from 1)
limitlimit=10Max results per page
sort[field]sort[lastName]=ASCSort by field, direction: ASC or DESC
filter[field]filter[firstName]=JohnFilter by field value
searchsearch=johnGeneral text search (implementation-specific: LIKE, full-text, etc.)

Example: GET /users?page=1&limit=10&sort[lastName]=ASC&filter[status]=active&search=john

Filter Behavior
  • Same field, multiple values → interpreted as OR:
    ?filter[firstName]=Ewa&filter[firstName]=Adam
    → WHERE (firstName = 'Ewa' OR firstName = 'Adam')
  • Different fields → interpreted as AND:
    ?filter[firstName]=Ewa&filter[lastName]=Kowalska
    → WHERE (firstName = 'Ewa' AND lastName = 'Kowalska')
  • LIKE search → use URL-encoded %25 suffix:
    ?filter[lastName]=Now%25
    → WHERE lastName LIKE 'Now%'
Advanced Filter Operators (when applicable)
OperatorSQL EquivalentExample
eq=filter[status][eq]=active
neq<>filter[status][neq]=deleted
lt, lte<, <=filter[age][lt]=30
gt, gte>, >=filter[age][gte]=18
includeLIKE %val%filter[name][include]=john
inIN (...)filter[status][in]=active,pending
Response Format (Mandatory)
json
{
  "meta": {
    "pagination": {
      "page": 1,
      "limit": 10,
      "total": 57,
      "totalPages": 6
    },
    "filter": {
      "status": "active"
    },
    "sort": {
      "lastName": "ASC"
    },
    "search": "john"
  },
  "data": [{ "..." }]
}

Rules:

  • meta always reflects the actual applied parameters back to the client.
  • Invalid filter/sort field names are silently ignored (no error thrown), but not applied.
  • Default limit should be defined in app configuration (e.g. 20 or 50).
  • Maximum limit should be capped to prevent abuse (e.g. 100 or 250).

Authentication & Authorization

JWT-Based Authentication
  • Use JSON Web Tokens (JWT) for stateless authentication.
  • Token is passed in the Authorization header: Bearer <token>.
  • Validate the token signature, expiration (exp), and issuer (iss) on every protected request.
  • Store secrets/keys in environment variables, never in code.
  • Use short-lived access tokens (15-60 minutes) with refresh token rotation where appropriate.
Current User Endpoint
  • Expose a GET /me endpoint that returns the profile of the currently authenticated user.
  • This endpoint should extract the user identity from the JWT (e.g. sub claim) and return the full user profile.
  • Do not accept user ID as a parameter — always derive from the token.
GET /me
Authorization: Bearer <token>
→ 200 { "id": "...", "email": "...", "roles": [...] }
Authorization
  • Implement role-based access control (RBAC) or attribute-based access control (ABAC) depending on project complexity.
  • Authorization checks happen via middleware/guards before reaching the controller action.
  • Always validate that the authenticated user has permission to access/modify the specific resource (not just the endpoint).

Dependency Injection

  • Always use a DI container. Register services, repositories, and infrastructure in a central container/module.
  • Inject dependencies via constructor injection.
  • Depend on interfaces/abstractions, not concrete implementations.
  • DI enables testability: in tests, swap real implementations with mocks/stubs.

See the technology-specific references below for recommended DI frameworks per language.

Database Handling

ORM & Repository Pattern
  • Use the project's ORM for all database operations (TypeORM, MikroORM, Doctrine, Entity Framework, Hibernate, GORM, etc.).
  • Implement the Repository Pattern: all database queries go through repository classes, never directly from services or controllers.
  • Repositories return domain entities/models, not raw database rows.
  • Use transactions for operations that modify multiple tables/records.
Migrations
  • All database schema changes go through migration files. Never modify the database manually.
  • Each migration must have both up (apply) and down (revert) methods.
  • Migrations run automatically on application startup (for containerized apps) or via a dedicated migration command/lambda (for serverless).
  • Never modify an existing migration that has been deployed. Create a new migration instead.
  • Name migrations descriptively: 2025-02-08-add-status-column-to-orders.
Seeding
  • Provide seed data for development, test, and staging environments only.
  • Never seed production or UAT environments with test data.
  • Seeds should be idempotent — running them multiple times produces the same result.
  • Separate seed files by domain (e.g. seed-users.ts, seed-products.ts).
Database Best Practices
  • Use UUID or ULID for primary keys where appropriate (better for distributed systems).
  • Define proper indexes for foreign keys, frequently queried columns, and unique constraints.
  • Use snake_case naming for tables and columns (e.g. order_items, created_at).
  • Always define created_at and updated_at timestamps.
  • Use soft deletes (deleted_at) when business rules require record retention.

External Service Adapters (Third-Party Clients)

When integrating with external APIs, always create a dedicated client/adapter class.

Pattern
src/
├── integrations/
│   ├── payment-gateway/
│   │   ├── payment-gateway.client.ts   # HTTP calls, request/response mapping
│   │   ├── payment-gateway.types.ts    # External API types/interfaces
│   │   └── payment-gateway.module.ts   # DI registration
│   ├── email-provider/
│   │   ├── email-provider.client.ts
│   │   └── ...
Rules
  1. Isolate all HTTP communication with external services into a client class. Never call HTTP clients (Axios, fetch, HttpClient) directly from services or controllers.
  2. Map external types to internal domain types at the adapter boundary. The rest of the application should not know about the external API's data format.
  3. Store configuration (API URLs, keys, tokens) in environment variables and inject via config.
  4. Handle errors gracefully: catch HTTP errors, map them to domain-specific exceptions, and log the details.
  5. Make clients testable: depend on an interface so the client can be mocked in tests.
  6. Add retry logic and timeouts for resilience. Use circuit breaker patterns for critical integrations.

Testing Strategy

Test Pyramid
LevelWhat to Test
Unit TestsPure business logic in services, domain models, utility functions. Mock all external dependencies.
Integration TestsAPI endpoints end-to-end (HTTP request → response). Use a real test database.
E2E TestsCritical user flows across the full stack.

See the technology-specific references below for recommended testing tools per language.

Integration Tests for Endpoints
  • Test every endpoint with valid and invalid inputs.
  • Use a dedicated test database (same engine as production, e.g. PostgreSQL).
  • Each test should set up its own data (arrange), call the endpoint (act), and verify the response (assert).
  • Clean up test data after each test (use transactions or truncation).
  • Verify: HTTP status code, response body structure, side effects (database state, events emitted).
describe('POST /users', () => {
  it('should create a user and return 201', async () => {
    // Arrange
    const payload = { email: 'test@example.com', name: 'Test User' };

    // Act
    const response = await request(app).post('/users').send(payload);

    // Assert
    expect(response.status).toBe(201);
    expect(response.body.data.email).toBe('test@example.com');
  });

  it('should return 400 for invalid email', async () => {
    const response = await request(app).post('/users').send({ email: 'invalid' });
    expect(response.status).toBe(400);
  });
});
Unit Tests for Business Logic
  • Test services and domain models in isolation.
  • Mock repositories, external clients, and infrastructure.
  • Focus on edge cases, error paths, and business rules.
  • Keep unit tests fast — no database, no network, no filesystem.
  • Use descriptive test names: should throw InsufficientFundsError when balance is below transfer amount.
Testing Rules
  • Every new endpoint or business rule must have tests before merging.
  • Aim for meaningful coverage of critical paths, not arbitrary percentage targets.
  • Integration tests are the primary quality gate for API behavior.
  • Unit tests are the primary quality gate for business logic.
  • Mock external services (payment gateways, email providers) — never call real external APIs in tests.

API Documentation

Swagger / OpenAPI
  • Every API must be documented using OpenAPI/Swagger specification.
  • Prefer auto-generated docs from code annotations/decorators when the framework supports it.
  • If auto-generation is not available, maintain a separate swagger.yml file split by domain.
  • Serve documentation at /api-docs endpoint.
  • Document: request/response schemas, query parameters, authentication requirements, error responses, and example values.
  • Keep documentation in sync with the actual API — stale docs are worse than no docs.

See the technology-specific references below for recommended Swagger tooling per language.

Show full SKILL.md (943 more words)Show less

Docker & Local Development

Docker Setup
  • Every project must include a Dockerfile and docker-compose.yml for local development.
  • The docker-compose.yml should include all required services: app, database (PostgreSQL), cache (Redis), mail catcher (Mailhog), etc.
  • Use docker-compose.override.yml for developer-specific customizations (additional ports, volumes, debug settings).
  • Application should be fully runnable with a single docker-compose up command.
Dockerfile Best Practices
  • Use multi-stage builds to keep images small.
  • Pin base image versions (e.g. node:20-alpine, php:8.3-fpm-alpine, mcr.microsoft.com/dotnet/aspnet:8.0).
  • Install only production dependencies in the final stage.
  • Use .dockerignore to exclude build artifacts, test files, etc.
  • Run as a non-root user in the container.

Health Check

Every application must expose a GET /health endpoint:

  • Placed before all middleware and auth guards.
  • Publicly accessible (no authentication required).
  • Returns 200 with status information.
json
{
  "status": "ok"
}

For more thorough health checks, optionally verify database connectivity and critical service availability.

Logging & Observability

Structured Logging
  • Use a structured logger — never console.log or print in production.
  • Log in JSON format for machine parseability.
  • Include contextual fields in every log entry: timestamp, level, requestId/correlationId, userId (if authenticated), service.

See the technology-specific references below for recommended logging libraries per language.

Log Levels
LevelWhen to Use
errorUnexpected failures, unhandled exceptions, critical issues
warnRecoverable issues, deprecation notices, approaching limits
infoSignificant business events: user created, order placed, payment processed
debugDetailed diagnostic information (disabled in production)
What to Log
  • Always log: incoming requests (method, path, status code, duration), authentication failures, authorization failures, external service calls (URL, status, duration), errors with stack traces.
  • Never log: passwords, tokens, API keys, credit card numbers, PII (personally identifiable information) unless encrypted or masked.
Request Logging
  • Log every HTTP request with: method, path, status code, response time, and correlation/request ID.
  • Use middleware (Morgan, express request logger, or framework equivalent) for automatic request logging.
  • Propagate a correlationId / requestId header through the entire request lifecycle for tracing.

Scalability & Security

Scalability
  • Design for horizontal scaling: no in-memory state, no sticky sessions.
  • Never store temporary data in application memory — use Redis or an external cache.
  • Use message queues (SQS, RabbitMQ, Bull) for async operations (email sending, PDF generation, data processing).
  • Use database connection pooling.
  • Apply rate limiting on public endpoints.
  • Implement pagination on all list endpoints (never return unbounded result sets).
Security (OWASP TOP 10)
  • Input validation: Validate and sanitize all user input at the API boundary (request body, query params, headers).
  • SQL Injection: Always use parameterized queries / ORM. Never concatenate user input into SQL.
  • Authentication: Use short-lived JWTs, validate signatures, handle token expiration.
  • Authorization: Enforce at every endpoint. Check resource ownership, not just role membership.
  • Sensitive data: Never expose stack traces, internal paths, or database details in error responses.
  • CORS: Configure explicitly — never use * in production.
  • Security headers: Use framework-appropriate middleware to set security headers (CSP, X-Frame-Options, etc.).
  • Dependencies: Regularly audit and update dependencies. Use tools like npm audit, Snyk, or Dependabot.
  • Rate limiting: Apply on authentication and public endpoints.
  • Secrets: Store in environment variables or a secrets manager. Never commit to source control.

Configuration & Environment

  • Use .env files for local development with a .env.dist (or .env.example) template committed to the repo.
  • Validate all configuration on application startup (using Joi, Zod, class-validator, or equivalent). Fail fast on missing required config.
  • Group configuration by concern: database, auth, cache, externalServices.
  • Never hardcode environment-specific values. Everything must come from environment variables.

Implementation Procedure

When implementing a new backend feature, follow this workflow:

Implementation progress:
- [ ] Step 1: Understand the requirements
- [ ] Step 2: Design the data model
- [ ] Step 3: Create migration(s)
- [ ] Step 4: Implement the domain layer (entities, services, repositories)
- [ ] Step 5: Implement the API layer (controllers, DTOs, validation)
- [ ] Step 6: Add authentication/authorization guards
- [ ] Step 7: Write integration tests for endpoints
- [ ] Step 8: Write unit tests for business logic
- [ ] Step 9: Document the API (Swagger)
- [ ] Step 10: Verify logging and error handling

Step 1: Understand the requirements Read the task description, acceptance criteria, and any research documents. Clarify ambiguities before starting.

Step 2: Design the data model Define entities, relationships, indexes, and constraints. Review with the team if the model is non-trivial.

Step 3: Create migration(s) Generate migration files for all schema changes. Ensure both up and down are implemented. Run and verify locally.

Step 4: Implement the domain layer Create entity classes, repository interfaces and implementations, and service classes with business logic. Follow vertical slice structure.

Step 5: Implement the API layer Create controllers with proper HTTP methods. Define DTOs for request/response. Add input validation. Follow the DataGrid standard for list endpoints.

Step 6: Add authentication/authorization guards Apply JWT validation middleware. Add role/permission checks as needed. Implement resource-level authorization.

Step 7: Write integration tests Test every endpoint: success and error paths. Verify response structure, status codes, and database side effects.

Step 8: Write unit tests Test business logic in services. Mock dependencies. Cover edge cases and error scenarios.

Step 9: Document the API Add or update Swagger/OpenAPI documentation. Verify docs render correctly at /api-docs.

Step 10: Verify logging and error handling Ensure requests are logged, errors produce structured log entries, and no sensitive data leaks in logs or responses.

Technology-Specific Patterns

The patterns above are language-agnostic. For technology-specific implementation guidance, load the appropriate reference:

  • Node.js: See ./references/nodejs-patterns.md — NestJS/Express DI, Jest/Supertest testing, Pino/Winston logging, TypeORM/Prisma ORM, Swagger integration.
  • PHP: See ./references/php-patterns.md — Symfony/Laravel DI, PHPUnit testing, Monolog logging, Doctrine/Eloquent ORM, Swagger integration.
  • dotNET: See ./references/dotnet-patterns.md — built-in DI, xUnit testing, Serilog logging, Entity Framework ORM, Swashbuckle Swagger.
  • Java: See ./references/java-spring-boot-patterns.md — Spring IoC, JUnit/REST Assured testing, SLF4J/Logback logging, Hibernate ORM, springdoc-openapi, Spring Cloud Stream async messaging.
  • Go: See ./references/go-patterns.md — Wire/Fx DI, Go testing, Zap logging, GORM ORM, swaggo Swagger.

Connected Skills

  • tsh-sql-and-database-understanding — for database schema design, query optimization, and ORM integration
  • tsh-technical-context-discovering — for understanding project conventions before implementing
  • tsh-implementation-gap-analysing — for verifying current state before making changes
  • tsh-codebase-analysing — for understanding existing architecture and patterns
  • tsh-implementing-ci-cd — for CI/CD pipeline setup and deployment strategies
  • tsh-implementing-observability — for logging, monitoring, and distributed tracing
  • tsh-managing-secrets — for secure credential storage and rotation
  • tsh-e2e-testing — for end-to-end testing with Playwright

Connected Skills

  • technical-context-discovery — for establishing project conventions before implementing
  • architecture-design — for designing complex feature architectures
  • code-review — for validating implemented code against these standards
  • e2e-testing — for E2E test patterns when full-stack testing is needed

© TheSoftwareHouse, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in .github/skills/tsh-implementing-backend of TheSoftwareHouse/copilot-collections.

  • SKILL.md
  • references/dotnet-patterns.md
  • references/go-patterns.md
  • references/java-spring-boot-patterns.md
  • references/nodejs-patterns.md
  • references/php-patterns.md

Open the folder on GitHubat commit 2fbe51e

Compare with similar skills

Tsh Implementing Backend next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Tsh Implementing Backend compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tsh Implementing Backend this skillTheSoftwareHouse/copilot-collections284—~5.8kAutomated safety check: NotesMIT
Assess Migrationmendixlabs/mxcli128—~3.6kAutomated safety check: NotesApache-2.0
Detecting Insecure Deserializationjeremylongshore/tons-of-skills-marketplace2.8k—~1.4kAutomated safety check: PassMIT
Testcontainers Guide Migratordocker/docs4.7k—~5kAutomated safety check: PassApache-2.0
Dt Obs ServicesDynatrace/dynatrace-for-ai161—~3.3kAutomated safety check: PassApache-2.0
Copilot SDKintellectronica/agent-skills295—~3.2kAutomated safety check: PassCC0-1.0

Similar skills

  • Assess Migration

    mendixlabs/mxcli

    Investigate an existing non-Mendix application (Java, .NET, Python, Node, PHP, …) and produce a structured migration assessment for Mendix.

    128 GitHub stars~3.6k tokensUpdated today
    Backend & APIsAuto-check: notes
  • Detecting Insecure Deserialization

    jeremylongshore/tons-of-skills-marketplace

    Scan a source tree for unsafe-by-default deserialization APIs: Python pickle.loads / cPickle / shelve / dill, Ruby Marshal.load / YAML.load (pre-3.1 default), Java ObjectInputStream.readObject, PHP…

    2.8k GitHub stars~1.4k tokensUpdated today
    Backend & APIsAuto-check passed
  • Official

    Migrate a Testcontainers guide from testcontainers.com into the Docker docs site (docs.docker.com).

    4.7k GitHub stars~5k tokensUpdated today
    Testing & QAAuto-check passed
  • Dt Obs Services

    Dynatrace/dynatrace-for-ai

    Service performance monitoring with RED metrics (Rate, Errors, Duration) and runtime-specific telemetry for Java, .NET, Node.js, Python, PHP, and Go.

    161 GitHub stars~3.3k tokensUpdated 6 days ago
    DevOps & CloudAuto-check passed
  • Copilot SDK

    intellectronica/agent-skills

    This skill helps with GitHub Copilot SDK work across Node.js/TypeScript, Python, Go, .NET, and Java.

    295 GitHub stars~3.2k tokensUpdated 5 mo ago
    Agent WorkflowsAuto-check passed
  • Shopsys Commands

    shopsys/shopsys

    The command catalog for this Shopsys project — how to build, run, test, check code, access the database, and sync the GraphQL schema, including the macOS Mutagen workflow.

    350 GitHub stars~1.3k tokensUpdated today
    DevOps & CloudAuto-check: notes

More from TheSoftwareHouse/copilot-collections

All 21 skills in this repo
  • Tsh Creating Skills

    TheSoftwareHouse/copilot-collections

    Create new skills (SKILL.md) for GitHub Copilot. An agent skill from TheSoftwareHouse/copilot-collections.

    284 GitHub stars~4.1k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Implementing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend component patterns, composition, design token integration, barrel file organization, error handling, and Figma-to-code workflow.

    284 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Implementing Terraform Modules

    TheSoftwareHouse/copilot-collections

    Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices.

    284 GitHub stars~1.6k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Optimizing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend rendering optimization, code splitting, memoization strategies, bundle size control, asset optimization, and memory management.

    284 GitHub stars~4.1k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Reviewing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend-specific code review criteria, component anti-patterns, hooks quality, rendering correctness, accessibility and performance spot-checks, and module organization issues.

    284 GitHub stars~4.4k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Writing Hooks

    TheSoftwareHouse/copilot-collections

    Custom hook and composable patterns — naming, composition, stable return shapes, lifecycle cleanup, and testing strategies.

    284 GitHub stars~3k tokensUpdated 2 days ago
    Auto-check passed

Categories

Questions about Tsh Implementing Backend

What does Tsh Implementing Backend do?

Backend service implementation patterns, standards, and procedures. Tsh Implementing Backend is an agent skill from TheSoftwareHouse/copilot-collections. Backend service implementation patterns, standards, and procedures.

When should I use Tsh Implementing Backend?

Tsh Implementing Backend fits situations like: building REST/GraphQL APIs; implementing CRUD endpoints; database handling; testing strategies.

How do I install Tsh Implementing Backend in Claude Code?

Run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-backend -a claude-code`. Or copy the skill folder (.github/skills/tsh-implementing-backend in TheSoftwareHouse/copilot-collections) into .claude/skills/tsh-implementing-backend in your project. Claude Code loads it when a task matches its description.

How do I install Tsh Implementing Backend in Codex?

Run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-backend -a codex`. Or copy the skill folder (.github/skills/tsh-implementing-backend in TheSoftwareHouse/copilot-collections) into .agents/skills/tsh-implementing-backend in your project. Codex loads it when a task matches its description.

Can I use Tsh Implementing Backend in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-backend -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tsh-implementing-backend, .gemini/skills/tsh-implementing-backend, .github/skills/tsh-implementing-backend and .opencode/skills/tsh-implementing-backend in your project.

What does Tsh Implementing Backend need to run?

Going by SKILL.md and its folder, Tsh Implementing Backend needs the command-line tools its instructions call (docker-compose and npm). Our summary lists: Node.js; Docker.

Does Tsh Implementing Backend access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Tsh Implementing Backend safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Tsh Implementing Backend use?

Tsh Implementing Backend is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Tsh Implementing Backend use?

About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.7k tokens, read only when the agent opens those files.

What are the alternatives to Tsh Implementing Backend?

Skills that share tags, products or a category with Tsh Implementing Backend: Assess Migration (mendixlabs/mxcli, 128 stars), Detecting Insecure Deserialization (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Testcontainers Guide Migrator (docker/docs, 4.7k stars) and Dt Obs Services (Dynatrace/dynatrace-for-ai, 161 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Tsh Implementing Backend?

TheSoftwareHouse (a GitHub organization) maintains it in TheSoftwareHouse/copilot-collections, which has 284 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 5, 2026.

Source: TheSoftwareHouse/copilot-collections on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.