Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Expertise in evaluating GCP projects for compliance — what checks are meaningful, which SCF controls they map to, and how to interpret gcloud output.
.claude/skills/grcengclub-gcp-inspector-expert/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 21% | 0% |
| case-12 | ✓→✗ | ▼ Worse | -4% | 0% |
You are the interpretation layer between raw GCP configuration data and compliance frameworks.
IAM (project-scoped):
| SCF | Check | Severity | |---|---|---| | IAC-07.2 | No user accounts with primitive roles (owner/editor) | high | | IAC-15.1 | Service-account user-managed keys < 90 days old | medium |
Cloud Storage (per bucket):
| SCF | Check | Severity | |---|---|---| | DCH-01.2 | Public access prevention enforced | critical | | IAC-10 | Uniform bucket-level access enabled | medium | | CRY-05 | Encryption at rest (Google-managed is default; CMEK for regulated data) | info (pass) | | MON-01.2 | Access logging to a log bucket | low |
Audit logging (project):
| SCF | Check | Severity | |---|---|---| | MON-02 | At least one log sink exists | high | | MON-02.1 | Log sink destination isn't publicly readable | high |
KMS (per key):
| SCF | Check | Severity | |---|---|---| | CRY-09 | Rotation period ≤ 90 days (7,776,000s) on ENCRYPT_DECRYPT keys | medium |
Compute (project):
| SCF | Check | Severity | |---|---|---| | IAC-02 | OS Login enabled at project level | medium |
roles/owner and roles/editor are over-broad. A user with roles/editor can delete almost anything except IAM. FedRAMP auditors flag any human user with primitive roles. Service accounts are evaluated separately because automation sometimes needs broader roles (though even then, custom roles are preferred).
Fix pattern: custom roles or predefined roles scoped to the specific service. See the Terraform template /grc-engineer:generate-implementation least_privilege gcp.
Google recommends keys ≤ 90 days. Even better: use Workload Identity Federation or IAM conditions to avoid long-lived keys entirely. The connector evaluates only user-managed keys (--managed-by=user) — Google-managed keys rotate automatically.
publicAccessPrevention=enforced is the bucket-level safeguard that prevents even IAM misconfigurations from exposing the bucket. Without it, an accidental allUsers:storage.objectViewer binding would make the bucket public.
Fix: one API call per bucket: gcloud storage buckets update gs://<bucket> --public-access-prevention=enforced. For new buckets, set at creation.
Only applies to ENCRYPT_DECRYPT purpose keys. ASYMMETRIC_* keys don't auto-rotate by design (public keys are published and must be stable). Hardware-backed keys (protection_level=HSM) rotate the same way as software keys.
Fix: rotationPeriod=7776000s (90d). Shorter is fine; longer triggers the warning.
Not covered yet:
When a user asks about these, say "v0.2 roadmap" and point at gcloud security command-center or Policy Intelligence as complementary GCP-native tooling.
gcloud auth list may show it indirectly. Setup still works.--services=storage,logging,kms,compute if you want a faster run and will do IAM separately.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 17,545 | 12,080 | -31% | 1 | 1 | 0% | 2,702 | 3,210 | +19% | 0 | 0 | — |
case-03 | fail→pass | 18,451 | 11,053 | -40% | 1 | 1 | 0% | 2,723 | 3,215 | +18% | 0 | 0 | — |
case-01 | pass→pass | 18,917 | 17,523 | -7% | 1 | 1 | 0% | 2,932 | 3,602 | +23% | 0 | 0 | — |
case-02 | fail→pass | 14,948 | 10,490 | -30% | 1 | 1 | 0% | 2,649 | 3,254 | +23% | 0 | 0 | — |
case-05 | pass→fail | 11,140 | 5,347 | -52% | 1 | 1 | 0% | 1,756 | 2,117 | +21% | 0 | 0 | — |
case-06 | pass→pass | 12,420 | 8,808 | -29% | 1 | 1 | 0% | 2,014 | 2,803 | +39% | 0 | 0 | — |
case-07 | pass→pass | 13,596 | 7,320 | -46% | 1 | 1 | 0% | 2,200 | 2,578 | +17% | 0 | 0 | — |
case-08 | pass→pass | 14,693 | 7,162 | -51% | 1 | 1 | 0% | 2,405 | 2,621 | +9% | 0 | 0 | — |
case-09 | pass→pass | 16,367 | 3,552 | -78% | 1 | 1 | 0% | 916 | 1,742 | +90% | 0 | 0 | — |
case-10 | pass→pass | 13,246 | 9,639 | -27% | 1 | 1 | 0% | 2,052 | 2,780 | +35% | 0 | 0 | — |
case-11 | pass→pass | 14,564 | 14,213 | -2% | 1 | 1 | 0% | 2,192 | 3,529 | +61% | 0 | 0 | — |
case-12 | pass→fail | 18,497 | 8,249 | -55% | 1 | 1 | 0% | 2,769 | 2,662 | -4% | 0 | 0 | — |
case-13 | pass→pass | 13,945 | 9,421 | -32% | 1 | 1 | 0% | 2,269 | 2,666 | +17% | 0 | 0 | — |
case-14 | pass→pass | 12,042 | 10,256 | -15% | 1 | 1 | 0% | 1,807 | 2,834 | +57% | 0 | 0 | — |
case-15 | pass→pass | 12,328 | 6,860 | -44% | 1 | 1 | 0% | 1,937 | 2,304 | +19% | 0 | 0 | — |
case-16 | fail→pass | 16,011 | 12,210 | -24% | 1 | 1 | 0% | 2,545 | 3,180 | +25% | 0 | 0 | — |
case-17 | pass→pass | 18,033 | 12,860 | -29% | 1 | 1 | 0% | 2,771 | 3,323 | +20% | 0 | 0 | — |
case-18 | pass→pass | 12,337 | 13,469 | +9% | 1 | 1 | 0% | 1,803 | 3,320 | +84% | 0 | 0 | — |
case-19 | pass→pass | 13,785 | 8,613 | -38% | 1 | 1 | 0% | 2,000 | 2,600 | +30% | 0 | 0 | — |
case-20 | pass→pass | 17,158 | 17,198 | +0% | 1 | 1 | 0% | 3,197 | 4,606 | +44% | 0 | 0 | — |
case-21 | pass→pass | 4,240 | 6,721 | +59% | 1 | 1 | 0% | 783 | 2,438 | +211% | 0 | 0 | — |
case-22 | pass→pass | 11,928 | 12,325 | +3% | 1 | 1 | 0% | 2,184 | 3,569 | +63% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.