From qaas
Maps a testing intent to the correct QaaS session action type (Publisher/Consumer/Transaction/Collector/Probe/MockerCommands).
How this skill is triggered — by the user, by Claude, or both
Slash command
/qaas:choose-action-typeWhen to use
Before authoring a Sessions block; uncertain which action type to use for a given intent.
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Call this skill before writing any `Sessions[]` entry. Map the intent to one row in the table
Call this skill before writing any Sessions[] entry. Map the intent to one row in the table
below, then cite that row in your output.
| Intent | Action type | SessionData created | Notes |
|---|---|---|---|
| Send / produce a message to a broker, table, bucket | Publisher | Input named after publisher | DataSourceNames provides the payload |
| Receive / verify output from broker, table, bucket, queue | Consumer | Output named after consumer | TimeoutMs REQUIRED |
| Call an API and check response (HTTP or gRPC request/response) | Transaction | Input + Output named after transaction | DataSourceNames REQUIRED (FB s13#3) |
| Scrape metrics over a time window | Collector (Prometheus) | Output named after collector | Protocol: Prometheus only |
| Setup / teardown / wait-for-ready infra (create queue, flush DB, ping endpoint) | Probe | none | 43 probes available (FB s11) |
| Change mocker behavior mid-test at runtime | MockerCommands | none (Consume variant creates Input+Output) | Requires mocker Controller + Redis (FB s02) |
| Protocol | Key config fields |
|---|---|
| RabbitMq | Host, Port(5672), Username, Password, ExchangeName, QueueName, RoutingKey("/") |
| KafkaTopic | (see docs) |
| Redis | (see docs) |
| MsSqlTable | (see docs) |
| PostgreSqlTable | (see docs) |
| OracleSqlTable | (see docs) |
| MongoDbCollection | (see docs) |
| ElasticIndex | (see docs) |
| S3Bucket | (see docs) |
| Socket | (see docs) |
| Sftp | (see docs) |
RabbitMq, KafkaTopic, MsSqlTable, PostgreSqlTable, OracleSqlTable, TrinoSqlTable, ElasticIndices, S3Bucket, Socket, IbmMqQueue.
TimeoutMs (ms since last message) REQUIRED; set higher than expected async processing time.
| Protocol | Key config fields |
|---|---|
| Http | BaseAddress(req), Method(req), Port(8080), Route("" — NO leading slash FB s13#5), Headers, Retries(1), JwtAuth{...} |
| Grpc | Host, Port, AssemblyName, ProtoNameSpace, ServiceName, RpcName (all req) |
DataSourceNames or DataSourcePatterns REQUIRED (FB s13#3 — validation error otherwise).
Prometheus: Url (req base), Expression (req query_range), SampleIntervalMs(30000),
TimeoutMs(120000), ApiKey.
Selected useful probes by category:
Package: QaaS.Common.Probes (FB s13#8). Probes are synchronous — no Task.Run (CONSTITUTION V).
ChangeActionStub: {ActionName, StubName} — swap stub at runtimeTriggerAction: {ActionName, TimeoutMs} — trigger mocker actionConsume: {TimeoutMs(req), ActionName} — drain mock queue (destructive)Requires mocker Controller: {ServerName, Redis: {Host: host:port}} (FB s02 §2.6, LAB L6).
If Redis unreachable → silently times out, no error (FB s02).
Each action writes named Inputs/Outputs into SessionData. Assertion OutputNames/
InputNames must match the action Name exactly (FB s00).
Publisher "Pub1" → SessionData.Inputs["Pub1"]
Consumer "Con1" → SessionData.Outputs["Con1"]
Transaction "Tx1" → SessionData.Inputs["Tx1"] + SessionData.Outputs["Tx1"]
Every session with an HttpStatus or content assertion MUST also include:
HermeticByExpectedOutputCount (exact count), ORHermeticByInputOutputPercentage (ratio guard)HttpStatus passes vacuously when zero outputs arrive (false green, LAB L7).
FTL Runner execution configuration is invalid exit 1 (FB s13#3)Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub eldarush/qaas-copilot --plugin qaas