{
  "domain": {
    "prefix": "domain",
    "body": [
      ";Header and description",
      "",
      "(define (domain ${1:domain_name})",
      "",
      ";remove requirements that are not needed",
      "(:requirements :strips :fluents :durative-actions :timed-initial-literals :typing :conditional-effects :negative-preconditions :duration-inequalities :equality)",
      "",
      "(:types ;todo: enumerate types and their hierarchy here, e.g. car truck bus - vehicle",
      ")",
      "",
      "; un-comment following line if constants are needed",
      ";(:constants )",
      "",
      "(:predicates ;todo: define predicates here",
      ")",
      "",
      "",
      "(:functions ;todo: define numeric functions here",
      ")",
      "",
      ";define actions here",
      "$0",
      ")"
    ],
    "description": "Define domain"
  },
  "problem": {
    "prefix": "problem",
    "body": [
      "(define (problem ${1:problem_name}) (:domain ${2:domain_name})",
      "(:objects $0",
      ")",
      "",
      "(:init",
        "    ;todo: put the initial state's facts and numeric values here",
      ")",
      "",
      "(:goal (and",
      "    ;todo: put the goal condition here",
      "))",
      "",
      ";un-comment the following line if metric is needed",
      ";(:metric ${3|minimize,maximize|} (???))",
      ")",
      ""
    ],
    "description": "Creates a problem skeleton"
  }
}