Mz Release Signoff
MaterializeInc/materialize
Verify a release candidate on the Grafana dashboards and sign off in release.
Generate LogQL queries, log stream selectors, metric queries, and alerting rules for Grafana Loki.
$ npx skills add akin-ozer/cc-devops-skills --skill logql-generator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install akin-ozer/cc-devops-skills logql-generator --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/akin-ozer/cc-devops-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/devops-skills-plugin/skills/logql-generator .claude/skills/logql-generator && 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 "logql-generator" agent skill from https://github.com/akin-ozer/cc-devops-skills/tree/main/devops-skills-plugin/skills/logql-generator into .claude/skills/logql-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logql-generator", 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/akin-ozer/cc-devops-skills/tree/main/devops-skills-plugin/skills/logql-generatorType 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 akin-ozer/cc-devops-skills --skill logql-generator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install akin-ozer/cc-devops-skills logql-generator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/akin-ozer/cc-devops-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/devops-skills-plugin/skills/logql-generator .agents/skills/logql-generator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "logql-generator" agent skill from https://github.com/akin-ozer/cc-devops-skills/tree/main/devops-skills-plugin/skills/logql-generator into .agents/skills/logql-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logql-generator", 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 akin-ozer/cc-devops-skills --skill logql-generator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install akin-ozer/cc-devops-skills logql-generator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/akin-ozer/cc-devops-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/devops-skills-plugin/skills/logql-generator .cursor/skills/logql-generator && 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 "logql-generator" agent skill from https://github.com/akin-ozer/cc-devops-skills/tree/main/devops-skills-plugin/skills/logql-generator into .cursor/skills/logql-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logql-generator", 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/akin-ozer/cc-devops-skills.git --path devops-skills-plugin/skills/logql-generator--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 akin-ozer/cc-devops-skills --skill logql-generator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install akin-ozer/cc-devops-skills logql-generator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/akin-ozer/cc-devops-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/devops-skills-plugin/skills/logql-generator .gemini/skills/logql-generator && 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 "logql-generator" agent skill from https://github.com/akin-ozer/cc-devops-skills/tree/main/devops-skills-plugin/skills/logql-generator into .gemini/skills/logql-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logql-generator", 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 akin-ozer/cc-devops-skills logql-generatorInstalls 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 akin-ozer/cc-devops-skills --skill logql-generator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/akin-ozer/cc-devops-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/devops-skills-plugin/skills/logql-generator .github/skills/logql-generator && 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 "logql-generator" agent skill from https://github.com/akin-ozer/cc-devops-skills/tree/main/devops-skills-plugin/skills/logql-generator into .github/skills/logql-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logql-generator", 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 akin-ozer/cc-devops-skills --skill logql-generator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install akin-ozer/cc-devops-skills logql-generator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/akin-ozer/cc-devops-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/devops-skills-plugin/skills/logql-generator .opencode/skills/logql-generator && 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 "logql-generator" agent skill from https://github.com/akin-ozer/cc-devops-skills/tree/main/devops-skills-plugin/skills/logql-generator into .opencode/skills/logql-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "logql-generator", 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.
logql-generatorGenerate LogQL queries, log stream selectors, metric queries, and alerting rules for Grafana Loki.
Logql Generator is an agent skill from akin-ozer/cc-devops-skills. Generate LogQL queries, log stream selectors, metric queries, and alerting rules for Grafana Loki.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `references/best_practices.md`, `scripts/run_regression_checks.sh` and `tests/test_loki_runtime_integration.py`).
It sits in DevOps & Cloud, covering Monitoring and alerting. It works with Grafana. The repository describes itself as: DevOps skills for Claude Code and Codex. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 276af75. 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.
Ships 1 file in scripts/ (Python and Shell), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Logql Generator loads about 3.8k tokens when it runs, and up to ~9.8k if it reads all its reference files. Until then it costs about 29 tokens; SKILL.md has 1,457 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); the scripts in this folder are not scanned.
The full file from akin-ozer/cc-devops-skills at commit 276af75, republished under its Apache-2.0 licence (© akin-ozer). 1,457 words, ~3,838 tokens.
.claude/skills/logql-generator/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Interactive workflow for generating production-ready LogQL queries. LogQL is Grafana Loki's query language with indexed label selection, line filtering, parsing, and metric aggregation.
Use this skill for query generation, dashboard queries, alerting expressions, and troubleshooting with Loki logs.
Always run stages in order. Do not skip required stages.
Use AskUserQuestion to collect goal and use case.
Template:
Fallback if AskUserQuestion is unavailable:
Collect:
job, namespace, app, service_name, cluster)status, level, duration, path, trace_id)Ambiguity and partial-answer handling:
Assumptions: in the output so the user can correct them quickly.Collect or infer:
2.9.x, 3.0+, unknown)10.x, 11.x, unknown)Version compatibility policy:
Avoid by default when version is unknown:
|> and !>approx_topkdetected_level, accelerated metadata filtering assumptions)Present a plain-English plan, then ask the user to choose output mode.
Plan template:
LogQL Query Plan
Goal: <goal>
Query type: <log or metric>
Streams: <selector>
Filters/parsing: <filters + parser>
Aggregation window: <function and [range]>
Compatibility mode: <version-aware or compatibility-first>Mode selection template:
final query only (default) or incremental build (step-by-step)?"If user does not choose, default to final query only.
Complex query triggers:
topk(sum by(...)), multiple sum by, percentiles)line_format, label_format)Blocking checkpoint rule:
examples/common_queries.logql for syntax and query patternsreferences/best_practices.md for performance and alerting guidanceFallback when file-read tools are unavailable:
Unverified against local references.Use external lookup only for version-specific behavior, unclear syntax, or advanced features not covered in local references.
Decision order:
mcp__context7__resolve-library-id with libraryName="grafana loki"mcp__context7__query-docs for the exact topicWebSearch fallback constraints:
Return one production-ready query plus short explanation.
Use this when requested or when debugging complex pipelines.
Step-by-step template:
Always include:
logcli)<field>. Should I assume <default> so I can continue?"{job="app"} |= "error" |= "timeout"
{job="app"} |~ "error|fatal|critical"
{job="app"} != "debug"{app="api"} | json | level="error" | status_code >= 500
{app="api"} | logfmt | caller="database.go"
{job="nginx"} | pattern "<ip> - - [<_>] \"<method> <path>\" <status> <size>"rate({job="app"} | json | level="error" [5m])
sum by (app) (count_over_time({namespace="prod"} | json [5m]))
sum(rate({app="api"} | json | level="error" [5m])) / sum(rate({app="api"}[5m])) * 100
quantile_over_time(0.95, {app="api"} | json | unwrap duration [5m])
topk(10, sum by (error_type) (count_over_time({job="app"} | json | level="error" [1h]))){job="app"} | json | line_format "{{.level}}: {{.message}}"
{job="app"} | json | label_format env=`{{.environment}}`
{job="nginx"} | logfmt | remote_addr = ip("192.168.4.0/24")pattern > logfmt > json > regexp.{app="api"} | json | regexp "user_(?P<user_id>\\d+)"sum(sum_over_time({app="api"} | json | unwrap duration [5m])){service_name=`app`} |> "<_> level=debug <_>"{app="api"} | json | (status_code >= 400 and status_code < 500) or level="error"sum(rate({app="api"} | json | level="error" [5m])) - sum(rate({app="api"} | json | level="error" [5m] offset 1d)){app="api"} | json | keep namespace, pod, level
{app="api"} | json | drop pod, instanceNote: LogQL has no
dedupordistinctoperators. Use metric aggregations likesum by (field)for programmatic deduplication.
High-cardinality data without indexing (trace_id, user_id, request_id):
# Filter AFTER stream selector, NOT in it
{app="api"} | trace_id="abc123" | json | level="error"Place structured metadata filters BEFORE parsers:
# ACCELERATED
{cluster="prod"} | detected_level="error" | logfmt | json
# NOT ACCELERATED
{cluster="prod"} | logfmt | json | detected_level="error"approx_topk(10, sum by (endpoint) (rate({app="api"}[5m])))sum(count_over_time({app="api"} | json | level="error" [5m])) or vector(0)discover_log_levels: true (stored as structured metadata)| Function | Description |
|---|---|
rate(log-range) | Entries per second |
count_over_time(log-range) | Count entries |
bytes_rate(log-range) | Bytes per second |
bytes_over_time(log-range) | Total bytes in time range |
absent_over_time(log-range) | Returns 1 if no logs |
Rule:
bytes_over_time(<log-range>) for raw log-byte volume.| unwrap bytes(field) with unwrapped range aggregations for numeric byte fields extracted from log content.| Function | Description |
|---|---|
sum_over_time, avg_over_time, max_over_time, min_over_time | Aggregate numeric values |
quantile_over_time(φ, range) | φ-quantile (0 ≤ φ ≤ 1) |
first_over_time, last_over_time | First/last value in interval |
stddev_over_time | Population standard deviation of unwrapped values |
stdvar_over_time | Population variance of unwrapped values |
rate_counter | Per-second rate treating values as a monotonically increasing counter |
sum, avg, min, max, count, stddev, topk, bottomk, approx_topk, sort, sort_desc
With grouping: sum by (label1, label2) or sum without (label1)
| Function | Description |
|---|---|
duration_seconds(label) | Convert duration string |
bytes(label) | Convert byte string (KB, MB) |
label_replace(rate({job="api"} |= "err" [1m]), "foo", "$1", "service", "(.*):.*")| logfmt [--strict] [--keep-empty]--strict: Error on malformed entries--keep-empty: Keep standalone keys| json # All fields
| json method="request.method", status="response.status" # Specific fields
| json servers[0], headers="request.headers[\"User-Agent\"]" # Nested/array| pattern "<ip> - - [<timestamp>] \"<method> <path> <_>\" <status> <size>"Named placeholders become extracted labels; <_> discards a field.
| regexp "(?P<level>\\w+): (?P<message>.+)"Uses named capture groups (?P<name>). Slower than pattern/logfmt/json.
| decolorizeStrips ANSI color escape codes. Apply before parsing when logs come from terminal output.
| unpackUnpacks log entries that were packed by Promtail's pack pipeline stage. Restores the original log line and any embedded labels.
Common functions for line_format and label_format:
String: trim, upper, lower, replace, trunc, substr, printf, contains, hasPrefix
Math: add, sub, mul, div, addf, subf, floor, ceil, round
Date: date, now, unixEpoch, toDate, duration_seconds
Regex: regexReplaceAll, count
Other: fromJson, default, int, float64, __line__, __timestamp__
See examples/common_queries.logql for detailed usage.
# Alert when error rate exceeds 5%
(sum(rate({app="api"} | json | level="error" [5m])) / sum(rate({app="api"}[5m]))) > 0.05
# With vector() to avoid "no data"
sum(rate({app="api"} | json | level="error" [5m])) or vector(0) > 10| Issue | Solution |
|---|---|
| No results | Check labels exist, verify time range, test stream selector alone |
| Query slow | Use specific selectors, filter before parsing, reduce time range |
| Parse errors | Verify log format matches parser, test JSON validity |
| High cardinality | Use line filters not label filters for unique values, aggregate |
Use Stage 6 policy. Trigger external docs for:
| Trigger | Topic to Search | Tool to Use |
|---|---|---|
| User mentions Loki 3.x features | structured metadata, bloom filters, detected_level | Context7 first |
approx_topk function needed | approx_topk probabilistic | Context7 first |
Pattern match operators (|>, !>) | pattern match operator | Context7 first |
vector() function for alerting | vector function alerting | Context7 first |
| Recording rules configuration | recording rules loki | Context7 first |
| Unclear syntax or edge cases | Specific function/operator | Context7 first |
| Version-specific behavior questions | Version + feature | WebSearch fallback |
| Grafana Alloy integration | grafana alloy loki | WebSearch fallback |
examples/common_queries.logql: Query patterns, template function examplesreferences/best_practices.md: Optimization, anti-patterns, alerting guidancejson).final query only).sum by (service) (rate({namespace="prod", app="api"} | json | status_code >= 500 [15m])){app="auth"}
{app="auth"} |= "login failed"
{app="auth"} |= "login failed" | json
sum(count_over_time({app="auth"} |= "login failed" | json [5m]))Mark task done only when all checks pass:
final query only).|>, !>)approx_topk functionDeprecations: Promtail (use Alloy), BoltDB store (use TSDB with v13 schema)
© akin-ozer, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts, references) in devops-skills-plugin/skills/logql-generator of akin-ozer/cc-devops-skills.
Open the folder on GitHubat commit 276af75
Logql Generator 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 |
|---|---|---|---|---|---|---|
| Logql Generator this skillakin-ozer/cc-devops-skills | 320 | — | ~3.8k | Automated safety check: Pass | Apache-2.0 | |
| Mz Release SignoffMaterializeInc/materialize | 6.4k | — | ~7.2k | Automated safety check: Pass | Custom licence | |
| Axiom Dashboard Builderopenclaw/clawhub | 9.5k | — | ~4.9k | Automated safety check: Pass | MIT | |
| Happy Infra Metrics and Grafanaslopus/happy | 24k | — | ~2k | Automated safety check: Notes | MIT | |
| Syncmetapawurb/hotpath-rs | 1.9k | — | ~1.2k | Automated safety check: Notes | MIT | |
| Optimize Slurm TopologyNVlabs/alpasim | 1.3k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 |
MaterializeInc/materialize
Verify a release candidate on the Grafana dashboards and sign off in release.
openclaw/clawhub
Designs and deploys Axiom dashboards through the API, choosing chart types and writing APL or metrics queries, with templates and migration notes for Splunk and Grafana.
slopus/happy
Queries live Prometheus metrics and manages Grafana dashboards as code for Happy's infrastructure, using the grafanactl CLI and the Grafana datasource proxy API.
pawurb/hotpath-rs
Sync changes from the hotpath, hotpath-macros and hotpath-drain crates to their meta counterparts (hotpath-meta, hotpath-macros-meta and hotpath-drain-meta).
NVlabs/alpasim
Optimize AlpaSim Slurm topology throughput using persistent local Prometheus/Grafana telemetry and run artifacts.
comet-ml/opik
Specifies how to instrument an opik-backend pipeline with per-stage OpenTelemetry metrics for throughput, latency, errors and queue delay by workspace.
akin-ozer/cc-devops-skills
Create, generate, or scaffold GitHub Actions workflows, action.yml, or .github/workflows CI/CD pipelines.
akin-ozer/cc-devops-skills
Create, scaffold, or generate Helm charts, Chart.yaml, values.yaml, templates, helpers.
akin-ozer/cc-devops-skills
Generate/create/scaffold Jenkinsfile — declarative, scripted, shared library, CI/CD pipelines.
akin-ozer/cc-devops-skills
Validate, lint, audit, or scan a Dockerfile for security and best practices.
akin-ozer/cc-devops-skills
Validate, lint, audit, fix GitHub Actions workflows (.github/workflows).
akin-ozer/cc-devops-skills
Validate, lint, audit, or check Jenkinsfiles and shared libraries.
Works with
Categories
Generate LogQL queries, log stream selectors, metric queries, and alerting rules for Grafana Loki. Logql Generator is an agent skill from akin-ozer/cc-devops-skills. Generate LogQL queries, log stream selectors, metric queries, and alerting rules for Grafana Loki.
Logql Generator fits situations like: tasks that involve Monitoring and alerting.
Run `npx skills add akin-ozer/cc-devops-skills --skill logql-generator -a claude-code`. Or copy the skill folder (devops-skills-plugin/skills/logql-generator in akin-ozer/cc-devops-skills) into .claude/skills/logql-generator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add akin-ozer/cc-devops-skills --skill logql-generator -a codex`. Or copy the skill folder (devops-skills-plugin/skills/logql-generator in akin-ozer/cc-devops-skills) into .agents/skills/logql-generator 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 akin-ozer/cc-devops-skills --skill logql-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/logql-generator, .gemini/skills/logql-generator, .github/skills/logql-generator and .opencode/skills/logql-generator in your project.
Going by SKILL.md and its folder, Logql Generator needs Python and a shell for the scripts in its folder. Our summary lists: Python 3; A Bash shell.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Logql Generator is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k 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 6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Logql Generator: Mz Release Signoff (MaterializeInc/materialize, 6.4k stars), Axiom Dashboard Builder (openclaw/clawhub, 9.5k stars), Happy Infra Metrics and Grafana (slopus/happy, 24k stars) and Syncmeta (pawurb/hotpath-rs, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
akin-ozer (a GitHub user) maintains it in akin-ozer/cc-devops-skills, which has 320 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on July 26, 2026.
Source: akin-ozer/cc-devops-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.