CtrlK
BlogDocsLog inGet started
Tessl Logo

nullstone/nullstone-config-files

Use when creating or editing Nullstone IaC YAML files under `.nullstone/` — adding or wiring apps, datastores, networks, domains, subdomains, ingresses, clusters, cluster-namespaces; setting `vars`, `environment`, `connections`, or `capabilities`; configuring `events`. Triggers on file paths `.nullstone/config.yml`, `.nullstone/{env}.yml`, `.nullstone/previews.yml`, and anything under `.nullstone/stacks/{stack}/`.

80

Quality

100%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

config.0.1.jsonreferences/schema/

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://nullstone.io/.nullstone/config.yml",
  "title": "Nullstone configuration specification",
  "description": "The Nullstone configuration file is a YAML file defining a platform-agnostic architecture",
  "type": "object",
  "properties": {
    "version": {
      "const": "0.1"
    },
    "apps": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/app" }
      },
      "additionalProperties": false
    },
    "blocks": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/block" }
      },
      "additionalProperties": false
    },
    "cluster_namespaces": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/cluster_namespace" }
      },
      "additionalProperties": false
    },
    "clusters": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/cluster" }
      },
      "additionalProperties": false
    },
    "datastores": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/datastore" }
      },
      "additionalProperties": false
    },
    "domains": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/domain" }
      },
      "additionalProperties": false
    },
    "ingresses": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/ingress" }
      },
      "additionalProperties": false
    },
    "networks": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/network" }
      },
      "additionalProperties": false
    },
    "subdomains": {
      "type": "object",
      "patternProperties": {
        "^[a-z0-9\\-]+$": { "$ref":  "#/definitions/subdomain" }
      },
      "additionalProperties": false
    }
  },
  "required": ["version"],
  "additionalProperties": false,
  "definitions": {
    "block": {
      "id": "#/definitions/block",
      "type": "object",
      "properties": {
        "module": {
          "type": "string",
          "description": ""
        },
        "module_version": {
          "type": "string",
          "description": ""
        },
        "vars": { "$ref": "#/definitions/variables" },
        "connections": { "$ref": "#/definitions/connection_targets" },
        "is_shared": {
          "type": "boolean",
          "description": ""
        }
      },
      "patternProperties": {"^x-": {}},
      "additionalProperties": false
    },
    "app": {
      "id": "#/definitions/app",
      "type": "object",
      "properties": {
        "module": {
          "type": "string",
          "description": ""
        },
        "module_version": {
          "type": "string",
          "description": ""
        },
        "vars": { "$ref": "#/definitions/variables" },
        "connections": { "$ref": "#/definitions/connection_targets" },
        "is_shared": {
          "type": "boolean",
          "description": ""
        },
        "framework": {
          "type": "string",
          "description": ""
        },
        "environment": {
          "type": "object",
          "patternProperties": {
            "^[A-Za-z0-9_]+$": { "type": "string" }
          }
        },
        "capabilities": {
          "oneOf": [
            { "$ref":  "#/definitions/capabilities" },
            { "$ref":  "#/definitions/capabilitiesArray" }
          ]
        }
      },
      "patternProperties": {"^x-": {}},
      "additionalProperties": false
    },
    "cluster_namespace": {
      "allOf": [
        { "$ref": "#/definitions/block" }
      ]
    },
    "cluster": {
      "allOf": [
        { "$ref": "#/definitions/block" }
      ]
    },
    "datastore": {
      "allOf": [
        { "$ref": "#/definitions/block" }
      ]
    },
    "domain": {
      "id": "#/definitions/subdomain",
      "type": "object",
      "properties": {
        "module": {
          "type": "string",
          "description": ""
        },
        "module_version": {
          "type": "string",
          "description": ""
        },
        "vars": { "$ref": "#/definitions/variables" },
        "connections": { "$ref": "#/definitions/connection_targets" },
        "dns": { "$ref": "#/definitions/domain_dns" }
      },
      "patternProperties": {"^x-": {}},
      "additionalProperties": false
    },
    "domain_dns": {
      "id": "#/definitions/domain_dns",
      "type": "object",
      "properties": {
        "template": {
          "type": "string",
          "description": "A templated string for configuration the domain name. This interpolates {{ NULLSTONE_ORG }}"
        }
      },
      "patternProperties": {"^x-": {}},
      "additionalProperties": false
    },
    "ingress": {
      "allOf": [
        { "$ref": "#/definitions/block" }
      ]
    },
    "network": {
      "allOf": [
        { "$ref": "#/definitions/block" }
      ]
    },
    "subdomain": {
      "id": "#/definitions/subdomain",
      "type": "object",
      "properties": {
        "module": {
          "type": "string",
          "description": ""
        },
        "module_version": {
          "type": "string",
          "description": ""
        },
        "vars": { "$ref": "#/definitions/variables" },
        "connections": { "$ref": "#/definitions/connection_targets" },
        "is_shared": {
          "type": "boolean",
          "description": ""
        },
        "dns": { "$ref": "#/definitions/subdomain_dns" }
      },
      "patternProperties": {"^x-": {}},
      "additionalProperties": false
    },
    "subdomain_dns": {
      "id": "#/definitions/subdomain_dns",
      "type": "object",
      "properties": {
        "template": {
          "type": "string",
          "description": "A templated string for configuration the subdomain name. This interpolates {{ random() }}, {{ NULLSTONE_ORG }}, {{ NULLSTONE_STACK }}, {{ NULLSTONE_ENV }}"
        }
      },
      "patternProperties": {"^x-": {}},
      "additionalProperties": false
    },
    "capabilities": {
      "type": "object",
      "additionalProperties": { "$ref": "#/definitions/capability" }
    },
    "capabilitiesArray": {
      "type": "array",
      "items": { "$ref": "#/definitions/namedCapability" }
    },
    "capability": {
      "type": "object",
      "properties": {
        "namespace": { "type": "string" },
        "module": { "type": "string" },
        "module_version": { "type": "string" },
        "vars": { "$ref": "#/definitions/variables" },
        "connections": { "$ref": "#/definitions/connection_targets" }
      }
    },
    "namedCapability": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "namespace": { "type": "string" },
        "module": { "type": "string" },
        "module_version": { "type": "string" },
        "vars": { "$ref": "#/definitions/variables" },
        "connections": { "$ref": "#/definitions/connection_targets" }
      }
    },
    "variables": {
      "type": "object",
      "patternProperties": {
        "^[A-Za-z_][A-Za-z0-9_\\-]*$": {
          "anyOf": [
            { "type": "boolean" },
            { "type": "string" },
            { "type": "integer" },
            { "type": "number" },
            { "type": "object" },
            { "type": "array" }
          ]
        }
      }
    },
    "connection_targets": {
      "type": "object",
      "patternProperties": {
        "^[_a-z0-9\\-]+$": {
          "oneOf": [
            {
              "type": "string",
              "pattern": "^(?:([a-zA-Z0-9\\-]+)\\.)?(?:([a-zA-Z0-9\\-]+)\\.)?([a-zA-Z0-9\\-]+)$"
            },
            { "$ref": "#/definitions/connection_target" }
          ]
        }
      }
    },
    "connection_target": {
      "type": "object",
      "properties": {
        "stack_name": {
          "type": "string"
        },
        "env_name": {
          "type": "string"
        },
        "block_name": {
          "type": "string"
        }
      },
      "required": ["block_name"]
    }
  }
}

SKILL.md

tile.json