# Manifests

The bot manifest provides RuneMate with the information required to display and launch your bot. Gradle can be configured to generate these for you automatically using the **manifest** configuration block:

```kotlin
runemate {
    //... other configuration

    manifests {
        create("My Bot Name") {
            //... manifest elements
        }
    }
}

```

These manifest declarations will be used to generate JSON manifests in `$projectDir/build/runemate/sources/.runemate` and are automatically included in your project artifacts and your bot store submissions.



#### Sample Manifest

The following is a sample bot manifest:

```kotlin
manifests {
    create("Development Toolkit") {
        //Required: mainClass, tagline, description, version, internalId
        mainClass = "com.runemate.bots.dev.DevelopmentToolkit"
        tagline = "RuneMate's Swiss Army Knife"
        description = "Presents runtime data, such as the loaded NPCs, to assist in bot development."
        version = "2.5.1"
        internalId = "devkit"

        //Optional: Everything else
        access = Access.PUBLIC
        hidden = false
        categories(Category.DEVELOPER_TOOLS)
        tags("devkit", "debug")
        resources {
            include("css/DevelopmentToolkitPage.css")
            include("fxml/DevelopmentToolkitPage.fxml")
            include("fxml/QueryBuilderPage.fxml")
        }

        //Tailors the variant pricing of the bot, can omit entirely for free bots
        variants {
            variant("Premium", 0.20)
        }

        //Tailors the trial for premium bots
        trial {
            window = Duration.ofDays(7) //or window("ISO-8601 duration format")
            allowance = Duration.ofHours(3) //or allowance("ISO-8601 duration format")
        }

        //Advanced (Optional): Used to declare the use and optionality of advanced features
        //This is required if using direct input, optional otherwise
        features {
            required(FeatureType.DIRECT_INPUT)
        }

        //Advanced (Optional): Used to tailor obfuscation
        obfuscation {
            exclude("class.i.dont.want.to.Obfuscate")
        }

        //Optional: Enabling this will cause the plugin to skip this manifest during the generation phase
        skip = false
        
        //Optional: Enabling this will effectively delete the bot from the store
        hidden = false
    }
}

```

&#x20;
