Skip to main content

qa-gate-gcp

Validates GCP applications pre-deployment by generating test plans, executing tests, and producing go/no-go reports.

Install this skill

or
0/100

Security score

The qa-gate-gcp skill was audited on Mar 3, 2026 and we found 45 security issues across 4 threat categories, including 2 high-severity. Review the findings below before installing.

Categories Tested

Security Issues

high line 437

Direct command execution function call

SourceSKILL.md
437const match = pattern.exec(output.content);
high line 824

Direct command execution function call

SourceSKILL.md
824// execSync("npx prisma migrate status") should show no pending migrations
medium line 174

Template literal with variable interpolation in command context

SourceSKILL.md
174const res = await fetch(`${BASE_URL}/api/entities`, {
medium line 175

Template literal with variable interpolation in command context

SourceSKILL.md
175headers: { Authorization: `Bearer ${process.env.TEST_AUTH_TOKEN}` },
medium line 181

Template literal with variable interpolation in command context

SourceSKILL.md
181const res = await fetch(`${BASE_URL}/api/entities`);
medium line 186

Template literal with variable interpolation in command context

SourceSKILL.md
186const res = await fetch(`${BASE_URL}/api/entities`, {
medium line 187

Template literal with variable interpolation in command context

SourceSKILL.md
187headers: { Authorization: `Bearer ${process.env.TEST_AUTH_TOKEN}` },
medium line 198

Template literal with variable interpolation in command context

SourceSKILL.md
198const res = await fetch(`${BASE_URL}/api/entities`, {
medium line 201

Template literal with variable interpolation in command context

SourceSKILL.md
201Authorization: `Bearer ${process.env.TEST_AUTH_TOKEN}`,
medium line 212

Template literal with variable interpolation in command context

SourceSKILL.md
212const res = await fetch(`${BASE_URL}/api/entities`, {
medium line 397

Template literal with variable interpolation in command context

SourceSKILL.md
397details: `Content length: ${output.content.length}, minimum: ${config.minLength}`,
medium line 405

Template literal with variable interpolation in command context

SourceSKILL.md
405details: `Content length: ${output.content.length}, maximum: ${config.maxLength}`,
medium line 413

Template literal with variable interpolation in command context

SourceSKILL.md
413details: `Tokens used: ${output.tokens_used}, budget: ${config.maxTokens}`,
medium line 421

Template literal with variable interpolation in command context

SourceSKILL.md
421details: `Latency: ${output.latency_ms}ms, max: ${config.maxLatencyMs}ms`,
medium line 428

Template literal with variable interpolation in command context

SourceSKILL.md
428rule: `required_section:${section}`,
medium line 430

Template literal with variable interpolation in command context

SourceSKILL.md
430details: `Section "${section}" ${output.content.toLowerCase().includes(section.toLowerCase()) ? "found" : "missing"}`,
medium line 439

Template literal with variable interpolation in command context

SourceSKILL.md
439rule: `forbidden_pattern:${pattern.source}`,
medium line 441

Template literal with variable interpolation in command context

SourceSKILL.md
441details: match ? `Found forbidden pattern: "${match[0]}"` : "No forbidden patterns found",
medium line 501

Template literal with variable interpolation in command context

SourceSKILL.md
501const judgingPrompt = `You are a strict QA evaluator. Assess the following LLM output against the original prompt.
medium line 533

Template literal with variable interpolation in command context

SourceSKILL.md
533Authorization: `Bearer ${OPENROUTER_API_KEY}`,
medium line 555

Template literal with variable interpolation in command context

SourceSKILL.md
555const res = await fetch(`${BASE_URL}/api/generate`, {
medium line 557

Template literal with variable interpolation in command context

SourceSKILL.md
557headers: { "Content-Type": "application/json", Authorization: `Bearer ${TOKEN}` },
medium line 594

Template literal with variable interpolation in command context

SourceSKILL.md
594```bash
medium line 661

Template literal with variable interpolation in command context

SourceSKILL.md
661```bash
medium line 713

Template literal with variable interpolation in command context

SourceSKILL.md
713```bash
medium line 747

Template literal with variable interpolation in command context

SourceSKILL.md
747```bash
low line 530

Fetch to external URL

SourceSKILL.md
530const response = await fetch("https://openrouter.ai/api/v1/chat/completions", {
medium line 9

Access to .env file

SourceSKILL.md
9You are a senior QA architect responsible for the final validation gate before production deployment on Google Cloud Platform. You do NOT write individual unit tests (that is test-sentinel's job). Ins
medium line 13

Access to .env file

SourceSKILL.md
13`OPENROUTER_API_KEY` is used in generated validation scripts to run LLM-as-judge evaluations on content quality. `GCP_PROJECT_ID` and `GCP_REGION` are referenced in generated infrastructure validation
low line 170

Access to .env file

SourceSKILL.md
170const BASE_URL = process.env.VALIDATION_BASE_URL || "http://localhost:3000";
low line 175

Access to .env file

SourceSKILL.md
175headers: { Authorization: `Bearer ${process.env.TEST_AUTH_TOKEN}` },
low line 187

Access to .env file

SourceSKILL.md
187headers: { Authorization: `Bearer ${process.env.TEST_AUTH_TOKEN}` },
low line 201

Access to .env file

SourceSKILL.md
201Authorization: `Bearer ${process.env.TEST_AUTH_TOKEN}`,
low line 231

Access to .env file

SourceSKILL.md
231await page.fill('[name="email"]', process.env.TEST_USER_EMAIL!);
low line 232

Access to .env file

SourceSKILL.md
232await page.fill('[name="password"]', process.env.TEST_USER_PASSWORD!);
low line 326

Access to .env file

SourceSKILL.md
326await page.fill('[name="email"]', process.env.TEST_USER_EMAIL!);
low line 327

Access to .env file

SourceSKILL.md
327await page.fill('[name="password"]', process.env.TEST_USER_PASSWORD!);
low line 349

Access to .env file

SourceSKILL.md
349await page.fill('[name="email"]', process.env.TEST_USER_EMAIL!);
low line 350

Access to .env file

SourceSKILL.md
350await page.fill('[name="password"]', process.env.TEST_USER_PASSWORD!);
low line 491

Access to .env file

SourceSKILL.md
491const OPENROUTER_API_KEY = process.env.OPENROUTER_API_KEY;
low line 649

Access to .env file

SourceSKILL.md
649--format="value(spec.template.spec.containers[0].env.name)" 2>/dev/null)
medium line 982

Access to .env file

SourceSKILL.md
982- NEVER read or modify `.env`, `.env.local`, or any credential file directly
medium line 983

Access to .env file

SourceSKILL.md
983- All env var references are in generated test/script code via `process.env.*` or `os.environ.get()`
low line 170

External URL reference

SourceSKILL.md
170const BASE_URL = process.env.VALIDATION_BASE_URL || "http://localhost:3000";
low line 530

External URL reference

SourceSKILL.md
530const response = await fetch("https://openrouter.ai/api/v1/chat/completions", {
Scanned on Mar 3, 2026
View Security Dashboard
Installation guide →
GitHub Stars 2.2K
Rate this skill
Categorydevelopment
UpdatedApril 4, 2026
openclaw/skills