francescovallone/serinus/serinus-microservices

Claude Code and agent skill by francescovallone/serinus

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when building Serinus microservices with createMicroservice(), RpcController, RpcRoute, transport adapters, ClientsModule, or gRPC integration via serinus_microservices.

Install

npx vskill@latest install francescovallone/serinus/serinus-microservices

SKILL.md

Serinus Microservices

Guidelines

  • Use serinus.createMicroservice(...) when the application is transport-based rather than HTTP-based.
  • Define request-response handlers by mixing RpcController into a controller and registering handlers with onMessage(...).
  • Define fire-and-forget event consumers with onEvent(...).
  • Use RpcRoute(pattern: '...') to define message and event patterns. Patterns must be unique at application scope for message handlers.
  • Keep microservice business logic in providers and use context.use<T>() from RpcContext to access dependencies.
  • Use ClientsModule([...]) to register transport clients that should be connected and exported during module initialization.
  • In mixed HTTP plus microservice apps, use connectMicroservice(...) on SerinusApplication and avoid port collisions.
  • For gRPC-specific controllers and transports, rely on the serinus_microservices package and use the concrete generated service implementation in GrpcRoute(...).

Prefer This Pattern

dart
import 'package:serinus/serinus.dart';
import 'package:serinus_microservices/serinus_microservices.dart';
class MathController extends Controller with RpcController {
MathController() : super('/math') {
onMessage<int>(RpcRoute(pattern: 'add'), add);
onEvent(RpcRoute(pattern: 'math.updated'), onUpdated);
}
Future<int> add(RpcContext context) async {
final a = context.payload['a'] as int;
final b = context.payload['b'] as int;
return a + b;
}
Future<void> onUpdated(RpcContext context) async {}
}
Future<void> main() async {
final app = await serinus.createMicroservice(
entrypoint: AppModule(),
transport: TcpTransport(TcpOptions(port: 3001)),
);
await app.serve();
}

Avoid

  • Do not model transport patterns as HTTP routes when the feature is genuinely message-based.
  • Do not reuse the same RPC pattern for both a message route and an event route in the same controller.
  • Do not assume gRPC routes use the abstract generated service type. Use the concrete implementation class as documented.

References

  • references/microservices.md for transport, RpcController, RpcRoute, and client-module guidance.
  • references/grpc.md for gRPC transport and controller-specific notes.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
108
Repository forks
11
7-day trend score
23

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/francescovallone/serinus/serinus-microservices/badge)](https://verified-skill.com/skills/francescovallone/serinus/serinus-microservices)

Something wrong with this skill or its page? Tell us.