SkillAgentSearch skills...

Discover_Nashik

Offline-first digital companion for Kumbh Mela pilgrims. Map-based place discovery (temples, ghats, food, hospitals) with a voice assistant in Marathi/Hindi/English, PWA offline support, emergency access, and an admin advisory panel.

Install / Use

npx skills add Suyash2527/Discover_Nashik

Installs into whichever agent you are using.

About this skill
♊

Gemini Rules

Gemini CLI config

Quality Score

70/100

Supported Platforms

Gemini CLI

Our assessment of Discover_Nashik

Discover_Nashik scores 70/100 on our quality scale, 1074th of 1,169 Content & Media skills we index.

Its Gemini Rules is 16 KB long, well organised into 13 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.

It has no GitHub stars yet, so there is no community track record; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
0/20
Freshness
5/15

Maintenance, license and trust

  • We could not determine when the repository was last updated.
  • Our last check on 2026-10-21 found the source still online.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

Discover_Nashik compared with similar skills

All 4 of these similar skills score higher than Discover_Nashik; compare them before choosing.

SkillScoreStarsUpdatedFormat
Discover_Nashik (this skill)by Suyash2527700—Gemini Rules
Agent-Reachby Panniantong100107.1k6d agoCLAUDE.md
LocalAIby mudler10050.1ktodayMCP Server
siyuanby siyuan-note10047.0ktodayMCP Server
content-research-writerby ComposioHQ10077.4k43d agoSKILL.md

Frequently asked questions

How do I install Discover_Nashik?
Run npx skills add Suyash2527/Discover_Nashik. The install tabs above show the steps for each supported agent.
Which AI agents does Discover_Nashik work with?
It is written for Gemini CLI, as a Gemini Rules file. Other agents that read the same format can often use it too.
Is Discover_Nashik safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is Discover_Nashik still maintained?
We could not determine when the repository was last updated.

Java SDK Examples

This guide describes how to translate a Draft Bucket Creation Plan (from Phase 2) into the Java SDK.

Official Documentation Reference

Version Requirements

[!IMPORTANT] Encryption Enforcement Config requires the Java SDK version 2.55.0 or higher. If you are using a version below 2.55.0, you must configure this setting using the REST API, gcloud, or Terraform (the bucket can then be managed through the SDK).


Example 1: Standard Secure Bucket (Baseline)

Input Draft Plan

  • Bucket Name: my-company-secure-bucket
  • Project: my-security-project
  • Location: us-east1
  • Storage Class: STANDARD
  • UBLA: Enabled
  • Public Access Prevention (PAP): Enforced
  • Soft Delete: Enabled (7 days)
  • Encryption Enforcement: CSEK Restricted
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;
import java.time.Duration;

public class GcsExamples {

  public static Bucket createSecureBucket(String projectId, String bucketName) {
    Storage storage = StorageOptions.newBuilder()
        .setProjectId(projectId)
        .build()
        .getService();

    BucketInfo.IamConfiguration iamConfig = BucketInfo.IamConfiguration.newBuilder()
        .setIsUniformBucketLevelAccessEnabled(true)
        .setPublicAccessPrevention(BucketInfo.PublicAccessPrevention.ENFORCED)
        .build();

    BucketInfo.CustomerSuppliedEncryptionEnforcementConfig csekConfig =
        BucketInfo.CustomerSuppliedEncryptionEnforcementConfig.of(
            BucketInfo.EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED);

    BucketInfo bucketInfo = BucketInfo.newBuilder(bucketName)
        .setLocation("us-east1")
        .setStorageClass(StorageClass.STANDARD)
        .setIamConfiguration(iamConfig)
        .setCustomerSuppliedEncryptionEnforcementConfig(csekConfig)
        .setSoftDeletePolicy(BucketInfo.SoftDeletePolicy.newBuilder()
            .setRetentionDuration(Duration.ofDays(7))
            .build())
        .build();

    return storage.create(bucketInfo);
  }
}

Example 2: Sensitive Data / Compliance

Input Draft Plan

  • Bucket Name: my-compliance-pii-bucket
  • Project: my-compliance-project
  • Location: us-central1
  • Storage Class: STANDARD (Autoclass will handle transitions)
  • UBLA: Enabled
  • Public Access Prevention (PAP): Enforced
  • Encryption Enforcement: Restrict CSEK
  • Encryption: Customer-Managed Key (CMEK)
  • Soft Delete: Enabled (7 days)
  • Bucket Lock (Retention Policy): Enabled (90 days, Unlocked)
  • Use-case specific settings:
    • Autoclass: Enabled
    • CMEK Key ID: projects/my-kms-project/locations/us-central1/keyRings/my-keyring/cryptoKeys/my-key
    • Labels: data-class=pii, owner=security-team
    • Lifecycle: Abort incomplete multipart uploads after 7 days
    • IP Filtering: Restrict access to 192.0.2.0/24 (Corporate Range) and VPC networks (10.0.0.0/16) without cross-org VPCs.
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;
import java.time.Duration;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class GcsExamples {

  public static Bucket createComplianceBucket(String projectId, String bucketName, String kmsKeyId) {
    Storage storage = StorageOptions.newBuilder()
        .setProjectId(projectId)
        .build()
        .getService();

    BucketInfo.IamConfiguration iamConfig = BucketInfo.IamConfiguration.newBuilder()
        .setIsUniformBucketLevelAccessEnabled(true)
        .setPublicAccessPrevention(BucketInfo.PublicAccessPrevention.ENFORCED)
        .build();

    BucketInfo.CustomerSuppliedEncryptionEnforcementConfig csekConfig =
        BucketInfo.CustomerSuppliedEncryptionEnforcementConfig.of(
            BucketInfo.EncryptionEnforcementRestrictionMode.FULLY_RESTRICTED);
    BucketInfo.CustomerManagedEncryptionEnforcementConfig cmekConfig =
        BucketInfo.CustomerManagedEncryptionEnforcementConfig.of(
            BucketInfo.EncryptionEnforcementRestrictionMode.NOT_RESTRICTED);
    BucketInfo.GoogleManagedEncryptionEnforcementConfig gmekConfig =
        BucketInfo.GoogleManagedEncryptionEnforcementConfig.of(
            BucketInfo.EncryptionEnforcementRestrictionMode.NOT_RESTRICTED);

    // IP Filtering configuration
    BucketInfo.IpFilter.PublicNetworkSource publicSource = BucketInfo.IpFilter.PublicNetworkSource.of(
        Collections.singletonList("192.0.2.0/24"));

    BucketInfo.IpFilter.VpcNetworkSource vpcSource = BucketInfo.IpFilter.VpcNetworkSource.newBuilder()
        .setNetwork("projects/" + projectId + "/global/networks/NETWORK_NAME")
        .setAllowedIpCidrRanges(Collections.singletonList("10.0.0.0/16"))
        .build();

    BucketInfo.IpFilter ipFilter = BucketInfo.IpFilter.newBuilder()
        .setMode("Enabled")
        .setAllowAllServiceAgentAccess(true)
        .setAllowCrossOrgVpcs(false)
        .setPublicNetworkSource(publicSource)
        .setVpcNetworkSources(Collections.singletonList(vpcSource))
        .build();

    Map<String, String> labels = new HashMap<>();
    labels.put("data-class", "pii");
    labels.put("owner", "security-team");

    BucketInfo bucketInfo = BucketInfo.newBuilder(bucketName)
        .setLocation("us-central1")
        .setStorageClass(StorageClass.STANDARD)
        .setIamConfiguration(iamConfig)
        .setDefaultKmsKeyName(kmsKeyId)
        .setCustomerSuppliedEncryptionEnforcementConfig(csekConfig)
        .setCustomerManagedEncryptionEnforcementConfig(cmekConfig)
        .setGoogleManagedEncryptionEnforcementConfig(gmekConfig)
        .setIpFilter(ipFilter)
        .setSoftDeletePolicy(BucketInfo.SoftDeletePolicy.newBuilder()
            .setRetentionDuration(Duration.ofDays(7))
            .build())
        .setRetentionPeriodDuration(Duration.ofDays(90))
        .setAutoclass(BucketInfo.Autoclass.newBuilder().setEnabled(true).build())
        .setLabels(labels)
        .setLifecycleRules(Collections.singletonList(
            new BucketInfo.LifecycleRule(
                BucketInfo.LifecycleRule.LifecycleAction.newAbortIncompleteMPUploadAction(),
                BucketInfo.LifecycleRule.LifecycleCondition.newBuilder().setAge(7).build()
            )
        ))
        .build();

    return storage.create(bucketInfo);
  }

  // Locking the retention policy is permanent and irreversible.
  public static Bucket lockRetentionPolicy(String projectId, String bucketName) {
    Storage storage = StorageOptions.newBuilder()
        .setProjectId(projectId)
        .build()
        .getService();
    Bucket bucket = storage.get(bucketName);
    return bucket.lockRetentionPolicy(Storage.BucketTargetOption.metagenerationMatch());
  }
}

Example 3: Static Website Hosting

Input Draft Plan

  • Bucket Name: www.my-company-site.com
  • Project: my-frontend-project
  • Location: US
  • Storage Class: STANDARD
  • UBLA: Enabled
  • Public Access Prevention (PAP): Inherited (Disabled to allow public website access)
  • Soft Delete: Enabled (7 days)
  • Use-case specific settings:
    • Website Config: Main page index.html, Error page 404.html
    • Public Access: Required (allUsers -> storage.objectViewer)
    • CORS: Allowed GET/HEAD/OPTIONS from any domain
    • Versioning: Enabled
import com.google.cloud.Identity;
import com.google.cloud.Policy;
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.Cors;
import com.google.cloud.storage.HttpMethod;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;
import com.google.cloud.storage.StorageRoles;
import java.time.Duration;
import java.util.Arrays;
import java.util.Collections;

public class GcsExamples {

  public static Bucket createStaticWebsiteBucket(String projectId, String bucketName) {
    Storage storage = StorageOptions.newBuilder()
        .setProjectId(projectId)
        .build()
        .getService();

    Cors cors = Cors.newBuilder()
        .setMaxAgeSeconds(3600)
        .setMethods(Arrays.asList(HttpMethod.GET, HttpMethod.HEAD, HttpMethod.OPTIONS))
        .setOrigins(Collections.singletonList(Cors.Origin.of("*")))
        .setResponseHeaders(Collections.singletonList("Content-Type"))
        .build();

    BucketInfo.IamConfiguration iamConfig = BucketInfo.IamConfiguration.newBuilder()
        .setIsUniformBucketLevelAccessEnabled(true)
        .setPublicAccessPrevention(BucketInfo.PublicAccessPrevention.INHERITED) // allow public
        .build();

    BucketInfo bucketInfo = BucketInfo.newBuilder(bucketName)
        .setStorageClass(StorageClass.STANDARD)
        .setLocation("US")
        .setIamConfiguration(iamConfig)
        .setVersioningEnabled(true)
        .setSoftDeletePolicy(BucketInfo.SoftDeletePolicy.newBuilder()
            .setRetentionDuration(Duration.ofDays(7))
            .build())
        .setIndexPage("index.html")
        .setNotFoundPage("404.html")
        .setCors(Collections.singletonList(cors))
        .build();

    Bucket bucket = storage.create(bucketInfo);

    // Grant public access
    Policy policy = storage.getIamPolicy(bucketName);
    policy = policy.toBuilder()
        .addIdentity(StorageRoles.objectViewer(), Identity.allUsers())
        .build();
    storage.setIamPolicy(bucketName, policy);

    return bucket;
  }
}

Example 4: AI/ML Checkpointing (Zonal Bucket / Rapid Storage)

Input Draft Plan

  • Bucket Name: my-training-checkpoints-us-east1-b
  • Project: my-ai-project
  • Location: us-east1 (Region)
  • Placement: us-east1-b (Zone-level co-location for high performance)
  • Storage Class: RAPID (Must be explicitly specified for zonal buckets)
  • UBLA: Enabled (Required for HNS)
  • Public Access Prevention (PAP): Enforced
  • Encryption: Google-managed key
  • Soft Delete: Disabled (Not supported for zonal buckets)
  • Use-case specific settings:
    • Hierarchical Namespace (HNS): Enabled (Required for Zonal buckets)
    • Lifecycle: Delete checkpoint files older than 14 days
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageClass;
import com.google.cloud.storage.StorageOptions;
import com.google.cloud.storage.BucketInfo.CustomPlacementConfig;
import java.time.Duration;
import java.util.Collections;

public class GcsExamples {

  public static Bucket createCheckpointBucket(String projectId, String bucketName) {
    Storage storage = StorageOptions.newBuilder()
        .setProjectId(projectId)
        .build()
        .getService();

    BucketInfo.IamConfiguration iamConfig = BucketInfo.IamConfiguration.newBuilder()
        .setIsUniformBucketLevelAccessEnabled(true)
        .setPublicAccessPrevention(BucketInfo.PublicAccessPrevention.ENFORCED)
        .build();

    BucketInfo bucketInfo = Buc

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars0
CategoryContent
UpdatedNaNy ago
Forks0

Trust signals

68/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

2 medium1 low
Discover_Nashik — Gemini Rules: Install & Safety Check | SkillAgent