coreex-subscriber
A tool to manage messaging subscribers in CoreEx architecture, delegating to services or adapters.
Install
mkdir -p .claude/skills/coreex-subscriber && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/19359" && unzip -o skill.zip -d .claude/skills/coreex-subscriber && rm skill.zipInstalls to .claude/skills/coreex-subscriber
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Add or modify an event/command subscriber in a CoreEx Subscribe host. USE FOR: command subscriber (owns the contract, delegates to app service), event-data-sync subscriber (delegates to IXxxSyncAdapter), event-business-process subscriber (choreography step, delegates to app service). Covers SubscribedBase, SubscribedBase<T>, ValueValidator, ErrorHandler, and subject naming. DO NOT USE FOR: API controllers (use coreex-api), application services (use coreex-app-service), replication adapter implementations (use coreex-adapter), Subscribe host Program.cs setup (see coreex-host-setup.instructions.md), Subscribe-test integration tests (use coreex-test-subscribe).Key capabilities
- →Create command subscribers
- →Implement event-data-sync subscribers
- →Configure business process choreography
- →Manage error handling and validation
How it works
Subscribers receive messages from a broker and delegate logic to application services or adapters using attributes like [ScopedService] and [Subscribe].
Inputs & outputs
When to use coreex-subscriber
- →Adding a new command subscriber
- →Implementing an event-data-sync subscriber
- →Setting up a business process choreography subscriber
- →Updating error handling logic in a subscriber
About this skill
CoreEx: Subscriber
Guides you through adding or modifying a subscriber in a CoreEx Subscribe host. A subscriber is the messaging equivalent of a controller — it receives a command or event from the broker and immediately delegates to an Application-layer service or adapter. No business logic lives here.
When to Use
There are three distinct subscriber scenarios — determine which applies before writing any code:
| Scenario | Trigger | Delegates to | Example |
|---|---|---|---|
| Command | A command addressed to this domain arrives on the broker | Application service | e.g. {Entity}ConfirmSubscriber → I{Entity}Service |
| Event — Data Sync | An event from another domain/system arrives; maintain a local cached copy | Replication adapter (IXxxSyncAdapter) | e.g. {Entity}ModifySubscriber → I{Entity}SyncAdapter |
| Event — Business Process | An event from another domain arrives; trigger a choreography step in this domain | Application service | e.g. {Entity}PlacedSubscriber → I{Entity}Service |
Rule: Never subscribe to a command addressed to another domain — only to commands addressed to this domain, or to events from any domain. Subscribing to another domain's commands means you are not the intended recipient. Use events for cross-domain coordination.
When Not to Use
- HTTP API controllers — use
coreex-api - Application services that the subscriber calls — use
coreex-app-service - Replication adapter implementations (
IXxxSyncAdapter) — usecoreex-adapter - Subscribe host
Program.cssetup or Service Bus receiver wiring — see/.github/instructions/coreex-host-setup.instructions.md
Resolve project-wide choices from state before asking. Read the solution-root
AGENTS.mdFeature Configuration:messaging-providergates this skill (a Subscribe host exists only when a messaging provider is configured);outbox-enableddetermines whether the delegated service publishes resulting events transactionally;rop-enabledconfirmsResult/Result<T>return-style pipelines. Only prompt for what is unrecorded; re-state resolved values for confirmation.
Quick Reference
- Untyped subscriber (
SubscribedBase) — message carries data in the key only; extract with@event.Key.Required() - Typed subscriber (
SubscribedBase<TValue>) — message carries a serialised payload; setValueValidatorto validate beforeOnReceiveAsync [ScopedService]+ one or more[Subscribe("subject")]attributes on every subscriber class- No
Program.csedit needed —AddSubscribersUsing<T>()discovers all[Subscribe]-decorated classes automatically - Subject format:
{solution}.{domain}.{entity}.{action}[.v{n}]— include.v{n}only when the message carries a payload EventData.CreateCommand(...)for commands;EventData.CreateEvent(...)/new EventData().WithTitle(...)for eventsErrorHandlerfor graceful not-found and retry/dead-letter control — share the same static instance across related subscribers- Integration tests use
WithApiTester<Program>(Subscribe host); simulate receipt viaServiceBusSubscribedSubscriber.ReceiveAsync(sbm)— seecoreex-test-subscribefor the full test workflow
For full workflow and code examples see references/workflow.md.
Key References
/.github/instructions/coreex-event-subscribers.instructions.md— full subscriber conventions reference/.github/instructions/coreex-host-setup.instructions.md— Subscribe hostProgram.csshape- Related skills:
coreex-app-service(command/business-process subscribers delegate to it),coreex-adapter(data-sync subscribers driveIXxxSyncAdapter),coreex-api(sibling HTTP entry point),coreex-test-subscribe(full Subscribe-test integration test workflow — test class shape, simulating message receipt, per-scenario patterns, unsubscribed-subject test) - Hosts layer deep-dive — optional (after
/coreex-docs-sync) - Illustrative examples (CoreEx sample — not present in your project):
- ReservationConfirmSubscriber — command subscriber with
ErrorHandler - ReservationCancelSubscriber — command subscriber sharing an
ErrorHandler - ProductModifySubscriber — typed event-sync subscriber with
ValueValidator - ProductDeleteSubscriber — untyped event-sync subscriber (key-only delete)
- ReservationConfirmSubscriber — command subscriber with
When not to use it
- →HTTP API controller development
- →Application service implementation
- →Replication adapter implementation
Prerequisites
Limitations
- →No business logic allowed in subscriber
- →Must not subscribe to commands addressed to other domains
How it compares
It enforces a strict separation where subscribers only handle message receipt and delegation, keeping business logic in application services.
Compared to similar skills
coreex-subscriber side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| coreex-subscriber (this skill) | 0 | 21d | No flags | Intermediate |
| fastapi-templates | 520 | 2mo | No flags | Intermediate |
| android-kotlin-development | 268 | 4mo | Review | Advanced |
| unity-developer | 142 | 3mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by Avanade
View all by Avanade →You might also like
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
android-kotlin-development
aj-geddes
Develop native Android apps with Kotlin. Covers MVVM with Jetpack, Compose for modern UI, Retrofit for API calls, Room for local storage, and navigation architecture.
unity-developer
sickn33
Build Unity games with optimized C# scripts, efficient rendering, and proper asset management. Masters Unity 6 LTS, URP/HDRP pipelines, and cross-platform deployment. Handles gameplay systems, UI implementation, and platform optimization. Use PROACTIVELY for Unity performance issues, game mechanics, or cross-platform builds.
supabase-developer
daffy0208
Build full-stack applications with Supabase (PostgreSQL, Auth, Storage, Real-time, Edge Functions). Use when implementing authentication, database design with RLS, file storage, real-time features, or serverless functions.
payload
payloadcms
Use when working with Payload CMS projects (payload.config.ts, collections, fields, hooks, access control, Payload API). Use when debugging validation errors, security issues, relationship queries, transactions, or hook behavior.
architecture-patterns
wshobson
Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.