Nodejs Backend Patterns
ever-works/ever-works
Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices.
Guide for querying MonsterMQ broker data, telemetry, metrics, sessions, live topic values, retained messages, historical message archives, time-series aggregations, ArchiveGroups, OPC UA node…
$ npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vogler75/monster-mq monstermq-graphql-data --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/vogler75/monster-mq.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/monstermq-graphql-data .claude/skills/monstermq-graphql-data && rm -rf skills-srcUse ~/.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/
Install the "monstermq-graphql-data" agent skill from https://github.com/vogler75/monster-mq/tree/main/.agents/skills/monstermq-graphql-data into .claude/skills/monstermq-graphql-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monstermq-graphql-data", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/vogler75/monster-mq/tree/main/.agents/skills/monstermq-graphql-dataType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vogler75/monster-mq monstermq-graphql-data --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vogler75/monster-mq.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/monstermq-graphql-data .agents/skills/monstermq-graphql-data && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "monstermq-graphql-data" agent skill from https://github.com/vogler75/monster-mq/tree/main/.agents/skills/monstermq-graphql-data into .agents/skills/monstermq-graphql-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monstermq-graphql-data", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vogler75/monster-mq monstermq-graphql-data --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vogler75/monster-mq.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/monstermq-graphql-data .cursor/skills/monstermq-graphql-data && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "monstermq-graphql-data" agent skill from https://github.com/vogler75/monster-mq/tree/main/.agents/skills/monstermq-graphql-data into .cursor/skills/monstermq-graphql-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monstermq-graphql-data", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/vogler75/monster-mq.git --path .agents/skills/monstermq-graphql-data--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vogler75/monster-mq monstermq-graphql-data --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vogler75/monster-mq.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/monstermq-graphql-data .gemini/skills/monstermq-graphql-data && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "monstermq-graphql-data" agent skill from https://github.com/vogler75/monster-mq/tree/main/.agents/skills/monstermq-graphql-data into .gemini/skills/monstermq-graphql-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monstermq-graphql-data", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install vogler75/monster-mq monstermq-graphql-dataInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vogler75/monster-mq.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/monstermq-graphql-data .github/skills/monstermq-graphql-data && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "monstermq-graphql-data" agent skill from https://github.com/vogler75/monster-mq/tree/main/.agents/skills/monstermq-graphql-data into .github/skills/monstermq-graphql-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monstermq-graphql-data", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vogler75/monster-mq monstermq-graphql-data --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vogler75/monster-mq.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/monstermq-graphql-data .opencode/skills/monstermq-graphql-data && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "monstermq-graphql-data" agent skill from https://github.com/vogler75/monster-mq/tree/main/.agents/skills/monstermq-graphql-data into .opencode/skills/monstermq-graphql-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "monstermq-graphql-data", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
monstermq-graphql-dataGuide for querying MonsterMQ broker data, telemetry, metrics, sessions, live topic values, retained messages, historical message archives, time-series aggregations, ArchiveGroups, OPC UA node…
Monstermq Graphql Data is an agent skill from vogler75/monster-mq. Guide for querying MonsterMQ broker data, telemetry, metrics, sessions, live topic values, retained messages, historical message archives, time-series aggregations, ArchiveGroups, OPC UA node browsing, topic schemas, flow engine statuses, AI agent conversations, and real-time GraphQL subscriptions. Use this skill whenever you need to fetch data, monitor broker health, read topic values, query historical data, check available archive groups/backends, or subscribe to live MQTT updates from MonsterMQ via GraphQL…
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering GraphQL and Forecasting and time series. It works with GraphQL. The repository describes itself as: MonsterMQ is a MQTT broker built on Vert.X and Hazelcast with data persistence through PostgreSQL or CrateDB or MongoDB.. The licence is GPL-3.0.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5920123. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Monstermq Graphql Data loads about 4k tokens when it runs. Until then it costs about 211 tokens; SKILL.md has 641 words of instructions outside code blocks.
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.
The automated check found no risky patterns in SKILL.md.
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.
The full file from vogler75/monster-mq at commit 5920123, republished under its GPL-3.0 licence (© vogler75). 641 words, ~3,997 tokens.
.claude/skills/monstermq-graphql-data/SKILL.md (or your agent's skills folder).This skill provides instructions, query schemas, parameter reference, and code examples for reading data, monitoring status, fetching telemetry, querying historical archives, discovering storage backends, and streaming real-time updates from MonsterMQ via the GraphQL API.
[!IMPORTANT] Archive Group Isolation & Parameter Requirement: In MonsterMQ, topic values and historical messages are stored in isolated databases/tables per ArchiveGroup. When reading historical data (
archivedMessages,aggregatedMessages), current values (currentValue,currentValues), or searching/browsing topics (searchTopics,browseTopics), you MUST specify thearchiveGroupargument if your data is stored in a group other than"Default".Recommended 2-Step Data Access Pattern:
- Discover Archives: Run
archiveGroupsto find which group covers your target MQTT topic filter.- Fetch Data: Pass the discovered
archiveGroupname (e.g.archiveGroup: "Industrial") intoarchivedMessages,aggregatedMessages, orcurrentValue.
http://localhost:4000/graphql (default port 4000)ws://localhost:4000/graphqlPOSTContent-Type: application/json
Authorization: Bearer <jwt-token> # Required if Auth.UserStoreType / User Management is enabledcurrentUser)Returns authentication details for the requesting API connection.
query GetCurrentUser {
currentUser {
username
isAdmin
}
}brokerConfig)Returns the complete static configuration loaded from config.yaml.
query GetBrokerConfig {
brokerConfig {
nodeId
version
clustered
tcpPort
wsPort
tcpsPort
wssPort
sessionStoreType
retainedStoreType
configStoreType
userManagementEnabled
anonymousEnabled
mcpEnabled
prometheusEnabled
i3xEnabled
graphqlEnabled
metricsEnabled
}
}broker, brokers)Query real-time throughput, active session counts, message bus rates, and node health.
# Current node or specific node status
query GetBroker($nodeId: String) {
broker(nodeId: $nodeId) {
nodeId
version
userManagementEnabled
isLeader
isCurrent
enabledFeatures
metrics {
messagesIn
messagesOut
nodeSessionCount
clusterSessionCount
queuedMessagesCount
subscriptionCount
messageBusIn
messageBusOut
mqttClientIn
mqttClientOut
opcUaClientIn
opcUaClientOut
winCCOaClientIn
timestamp
}
}
}
# All nodes in cluster
query GetAllBrokers {
brokers {
nodeId
isLeader
isCurrent
enabledFeatures
metrics {
messagesIn
messagesOut
clusterSessionCount
}
}
}Before querying historical messages or time-series aggregations, you should discover which Archive Groups, storage backends, database connections, and topic scopes are available in the broker.
archiveGroups, archiveGroup)Query all registered ArchiveGroups to inspect their topic filters, storage backends (archiveType, lastValType), connection status, and retention policies.
query GetArchiveGroups($enabled: Boolean) {
archiveGroups(enabled: $enabled) {
name
enabled
deployed
topicFilter # Match this filter against your topic of interest!
retainedOnly
lastValType # MEMORY, HAZELCAST, POSTGRES, CRATEDB, MONGODB, SQLITE
archiveType # POSTGRES, CRATEDB, MONGODB, SQLITE, NONE
databaseConnectionName
payloadFormat
lastValRetention
archiveRetention
purgeInterval
connectionStatus {
nodeId
messageArchive
lastValueStore
error
}
}
}
query GetSingleArchiveGroup($name: String!) {
archiveGroup(name: $name) {
name
enabled
topicFilter
archiveType
lastValType
databaseConnectionName
archiveRetention
}
}archiveStats)Fetch storage statistics for an archive group, including the earliest recorded timestamp (minTimestamp) and daily historical message counts (dailyCounts).
query GetArchiveStats($archiveGroup: String!, $startTime: String, $endTime: String) {
archiveStats(
archiveGroup: $archiveGroup,
startTime: $startTime,
endTime: $endTime
) {
minTimestamp
dailyCounts {
date
count
}
}
}databaseConnections, databaseConnectionNames, databaseConnection)Inspect configured database connections backing the message archives (PostgreSQL, MongoDB, SQLite).
query GetDatabaseConnections {
databaseConnections {
name
type
url
database
schema
}
databaseConnectionNames(type: POSTGRES)
}currentValue)Retrieves the most recent message for an exact topic from the LastValueStore.
topic: Exact topic string (no wildcards allowed).format: JSON or BINARY (base64).archiveGroup: Name of the ArchiveGroup containing the last value store (default: "Default").query GetCurrentValue($topic: String!, $archiveGroup: String = "Default") {
currentValue(topic: $topic, format: JSON, archiveGroup: $archiveGroup) {
topic
payload
format
timestamp
qos
retained
}
}currentValues)Retrieves the most recent messages matching an MQTT wildcard filter.
topicFilter: MQTT filter with + (single-level) or # (multi-level). E.g. "factory/+/temperature".limit: Max records to return (default: 100).archiveGroup: Target ArchiveGroup name.query GetCurrentValues($filter: String!, $archiveGroup: String = "Default", $limit: Int = 100) {
currentValues(topicFilter: $filter, format: JSON, limit: $limit, archiveGroup: $archiveGroup) {
topic
payload
timestamp
qos
}
}searchTopics, browseTopics)Note: Topic search and browsing operate on the
LastValueStoreof the specifiedarchiveGroup.
# Search topics using SQL LIKE pattern (% and _)
query SearchTopics($pattern: String!, $archiveGroup: String = "Default") {
searchTopics(pattern: $pattern, limit: 50, archiveGroup: $archiveGroup)
}
# Browse topic hierarchy one level down
query BrowseTopics($topic: String!, $archiveGroup: String = "Default") {
browseTopics(topic: $topic, archiveGroup: $archiveGroup) {
name
hasChildren
messageCount
}
}retainedMessage, retainedMessages)Query messages published with retain=true.
query GetRetainedMessages($filter: String) {
retainedMessages(topicFilter: $filter, format: JSON, limit: 100) {
topic
payload
timestamp
qos
}
}[!IMPORTANT] Always specify
archiveGroupwhen querying history. Different archive groups can be backed by different databases (e.g. PostgreSQL vs CrateDB vs MongoDB).
archivedMessages)Queries historical MQTT messages matching a time window and topic filter.
topicFilter: MQTT wildcard topic filter (e.g. "sensors/#").archiveGroup: Name of the target ArchiveGroup (default "Default").startTime / endTime: ISO 8601 strings (e.g. "2026-07-28T00:00:00Z").includeTopic: Boolean (set to false for performance when querying a single topic).query GetArchivedMessages(
$topicFilter: String!,
$archiveGroup: String = "Default",
$startTime: String,
$endTime: String,
$limit: Int = 100
) {
archivedMessages(
topicFilter: $topicFilter,
archiveGroup: $archiveGroup,
startTime: $startTime,
endTime: $endTime,
format: JSON,
limit: $limit
) {
topic
payload
timestamp
qos
}
}aggregatedMessages)Performs database-level bucketing and aggregation across archived messages.
topics: Array of exact topic strings.archiveGroup: ArchiveGroup to perform aggregation on (default "Default").interval: SECOND_1, SECOND_5, SECOND_10, MINUTE_1, MINUTE_5, MINUTE_15, HOUR_1, DAY_1.functions: AVG, MIN, MAX, SUM, COUNT, FIRST, LAST.fields: Optional JSON path fields (e.g. ["temperature", "humidity"]).query GetAggregatedMessages(
$topics: [String!]!,
$archiveGroup: String = "Default",
$interval: AggregationInterval!,
$startTime: String!,
$endTime: String!
) {
aggregatedMessages(
topics: $topics,
archiveGroup: $archiveGroup,
interval: $interval,
startTime: $startTime,
endTime: $endTime,
functions: [AVG, MAX, MIN],
fields: ["value"]
) {
timestamps
topics {
topic
field
function
values
}
}
}sessions, session)query GetSessions($connected: Boolean, $clientIdFilter: String) {
sessions(connected: $connected, clientId: $clientIdFilter) {
clientId
nodeId
connected
cleanSession
subscriptions {
topicFilter
qos
}
metrics {
messagesIn
messagesOut
}
}
}
query GetSingleSession($clientId: String!) {
session(clientId: $clientId) {
clientId
nodeId
connected
cleanSession
keepAlive
lastConnectedTime
}
}systemLogs)Inspect in-memory circular log buffer with filtering.
query GetSystemLogs($lastMinutes: Int, $level: [String!], $message: String) {
systemLogs(
lastMinutes: $lastMinutes,
level: $level,
message: $message,
limit: 50,
orderByTime: DESC
) {
timestamp
level
logger
message
node
sourceClass
sourceMethod
}
}Fetch active bridge and connector configurations:
mqttClientConfigs, opcUaClientConfigs, plc4xClientConfigs, winccOaClientConfigs, winccUaClientConfigskafkaClientConfigs, natsClientConfigs, redisClientConfigs, telegramClientConfigs, neo4jClientConfigsopcUaServerConfigs, jdbcLoggerConfigs, influxDbLoggerConfigs, timeBaseLoggerConfigs, sparkplugBDecoderConfigsquery GetDeviceConfigs {
opcUaClientConfigs {
name
endpointUrl
enabled
nodeId
connectState
subscriptions {
nodeId
mqttTopic
}
}
plc4xClientConfigs {
name
connectionString
enabled
connectState
}
}opcUaBrowse, opcUaRead)# Browse OPC UA address space
query BrowseOpcUaNode($name: String!, $nodePath: String) {
opcUaBrowse(name: $name, nodePath: $nodePath) {
nodeId
displayName
browseName
nodeClass
hasChildren
}
}
# Read OPC UA tag value directly
query ReadOpcUaNode($name: String!, $nodePath: String!) {
opcUaRead(name: $name, nodePath: $nodePath) {
value
statusCode
serverTimestamp
}
}flowClasses, flowInstances)query GetFlows {
flowClasses {
name
namespace
version
description
}
flowInstances {
name
flowClassId
nodeId
enabled
status {
running
lastExecution
executionCount
errorCount
lastError
}
}
}agents, agent)query GetAgents {
agents {
name
namespace
nodeId
enabled
provider
model
inputTopics
outputTopics
}
}topicSchemas, topicSchema)query GetTopicSchemas {
topicSchemas {
topicFilter
jsonSchema
description
}
}MonsterMQ supports WebSocket subscriptions for live streaming data (ws://localhost:4000/graphql).
topicUpdates)subscription OnTopicUpdates($filters: [String!]!) {
topicUpdates(topicFilters: $filters, format: JSON) {
topic
payload
format
timestamp
qos
retained
clientId
}
}topicUpdatesBulk)subscription OnTopicUpdatesBulk($filters: [String!]!) {
topicUpdatesBulk(topicFilters: $filters, format: JSON, timeoutMs: 500, maxSize: 50) {
count
timestamp
updates {
topic
payload
timestamp
}
}
}systemLogs)subscription OnSystemLogs($level: [String!]) {
systemLogs(level: $level) {
timestamp
level
logger
message
node
}
}import requests
GRAPHQL_URL = "http://localhost:4000/graphql"
headers = {"Content-Type": "application/json"}
# Step 1: Discover available Archive Groups & match target topic filter
archive_query = """
query DiscoverArchives {
archiveGroups(enabled: true) {
name
topicFilter
archiveType
lastValType
}
}
"""
res = requests.post(GRAPHQL_URL, json={"query": archive_query}, headers=headers).json()
groups = res["data"]["archiveGroups"]
print("Available Archive Groups:")
for g in groups:
print(f" - Group: {g['name']} | Filters: {g['topicFilter']} | Store: {g['archiveType']}")
# Assume target topic "opcua/plc1/temperature" matches group "Industrial"
target_group = "Industrial"
# Step 2: Query historical messages specifying the discovered archive group
history_query = """
query GetHistory($topicFilter: String!, $archiveGroup: String!) {
archivedMessages(
topicFilter: $topicFilter,
archiveGroup: $archiveGroup,
limit: 50
) {
topic
payload
timestamp
}
}
"""
params = {
"topicFilter": "opcua/plc1/temperature",
"archiveGroup": target_group
}
history_res = requests.post(GRAPHQL_URL, json={"query": history_query, "variables": params}, headers=headers).json()
print("Historical Messages:", history_res["data"]["archivedMessages"])curl -X POST http://localhost:4000/graphql \
-H "Content-Type: application/json" \
-d '{
"query": "query GetHistory($filter: String!, $group: String!) { archivedMessages(topicFilter: $filter, archiveGroup: $group, limit: 10) { topic payload timestamp } }",
"variables": {
"filter": "telemetry/#",
"group": "Industrial"
}
}'© vogler75, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/monstermq-graphql-data of vogler75/monster-mq.
Open the folder on GitHubat commit 5920123
Monstermq Graphql Data 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Monstermq Graphql Data this skillvogler75/monster-mq | 143 | — | ~4k | Automated safety check: Pass | GPL-3.0 | |
| Nodejs Backend Patternsever-works/ever-works | 162 | 18 repos | ~4k | Automated safety check: Pass | AGPL-3.0 | |
| API DesignerJeffallan/claude-skills | 12k | 1 repos | ~2k | Automated safety check: Pass | MIT | |
| GraphQL Operations with CodegenChrisWiles/claude-code-showcase | 6.1k | 3 repos | ~1.5k | Automated safety check: Pass | None | |
| API Design Principlesjh941213/my-cc-harness | 126 | 18 repos | ~3.4k | Automated safety check: Pass | None | |
| API And Interface Designdzhalaevd/Donatello | 135 | 8 repos | ~2.6k | Automated safety check: Pass | Apache-2.0 |
ever-works/ever-works
Build production-ready Node.js backend services with Express/Fastify, implementing middleware patterns, error handling, authentication, database integration, and API design best practices.
Jeffallan/claude-skills
Designs REST and GraphQL APIs from resource modeling to an OpenAPI 3.1 contract, with versioning, pagination and RFC 7807 error handling.
ChrisWiles/claude-code-showcase
Sets the rules for writing GraphQL queries and mutations in .gql files, running codegen, and using generated Apollo hooks with proper error and loading handling.
jh941213/my-cc-harness
REST 및 GraphQL API 설계 원칙 가이드. An agent skill from jh941213/my-cc-harness.
dzhalaevd/Donatello
Guides stable API and interface design. An agent skill from dzhalaevd/Donatello.
twentyhq/twenty
Registers a new syncable entity in three NestJS modules and adds its service and GraphQL resolver layers when contributing to the Twenty server.
vogler75/monster-mq
Guide for configuring, deploying, and operating the MonsterMQ broker.
vogler75/monster-mq
Guide for developing the MonsterMQ web dashboard. An agent skill from vogler75/monster-mq.
vogler75/monster-mq
Guide for configuring, managing, and mutating MonsterMQ settings, devices, flows, AI agents, users, loggers, archive groups, topic schemas, and publishing messages via the GraphQL API.
vogler75/monster-mq
Guide for integrating new device types into the MonsterMQ broker.
Works with
Categories
Guide for querying MonsterMQ broker data, telemetry, metrics, sessions, live topic values, retained messages, historical message archives, time-series aggregations, ArchiveGroups, OPC UA node…. Monstermq Graphql Data is an agent skill from vogler75/monster-mq. Guide for querying MonsterMQ broker data, telemetry, metrics, sessions, live topic values, retained messages, historical message archives, time-series aggregations, ArchiveGroups, OPC UA node browsing, topic schemas, flow engine statuses, AI agent conversations, and real-time GraphQL subscriptions.
Monstermq Graphql Data fits situations like: you need to fetch data; monitor broker health; read topic values; query historical data.
Run `npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a claude-code`. Or copy the skill folder (.agents/skills/monstermq-graphql-data in vogler75/monster-mq) into .claude/skills/monstermq-graphql-data in your project. Claude Code loads it when a task matches its description.
Run `npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a codex`. Or copy the skill folder (.agents/skills/monstermq-graphql-data in vogler75/monster-mq) into .agents/skills/monstermq-graphql-data in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vogler75/monster-mq --skill monstermq-graphql-data -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/monstermq-graphql-data, .gemini/skills/monstermq-graphql-data, .github/skills/monstermq-graphql-data and .opencode/skills/monstermq-graphql-data in your project.
Going by SKILL.md and its folder, Monstermq Graphql Data needs the command-line tools its instructions call (curl).
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Monstermq Graphql Data is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Monstermq Graphql Data: Nodejs Backend Patterns (ever-works/ever-works, 162 stars), API Designer (Jeffallan/claude-skills, 12k stars), GraphQL Operations with Codegen (ChrisWiles/claude-code-showcase, 6.1k stars) and API Design Principles (jh941213/my-cc-harness, 126 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
vogler75 (a GitHub user) maintains it in vogler75/monster-mq, which has 143 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 9, 2026.
Source: vogler75/monster-mq on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.