diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/ASK/Skill.hs b/gen/Stratosphere/ASK/Skill.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ASK/Skill.hs
@@ -0,0 +1,50 @@
+module Stratosphere.ASK.Skill (
+        module Exports, Skill(..), mkSkill
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ASK.Skill.AuthenticationConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.ASK.Skill.SkillPackageProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Skill
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html>
+    Skill {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html#cfn-ask-skill-authenticationconfiguration>
+           authenticationConfiguration :: AuthenticationConfigurationProperty,
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html#cfn-ask-skill-skillpackage>
+           skillPackage :: SkillPackageProperty,
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ask-skill.html#cfn-ask-skill-vendorid>
+           vendorId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSkill ::
+  AuthenticationConfigurationProperty
+  -> SkillPackageProperty -> Value Prelude.Text -> Skill
+mkSkill authenticationConfiguration skillPackage vendorId
+  = Skill
+      {haddock_workaround_ = (),
+       authenticationConfiguration = authenticationConfiguration,
+       skillPackage = skillPackage, vendorId = vendorId}
+instance ToResourceProperties Skill where
+  toResourceProperties Skill {..}
+    = ResourceProperties
+        {awsType = "Alexa::ASK::Skill", supportsTags = Prelude.False,
+         properties = ["AuthenticationConfiguration"
+                         JSON..= authenticationConfiguration,
+                       "SkillPackage" JSON..= skillPackage, "VendorId" JSON..= vendorId]}
+instance JSON.ToJSON Skill where
+  toJSON Skill {..}
+    = JSON.object
+        ["AuthenticationConfiguration" JSON..= authenticationConfiguration,
+         "SkillPackage" JSON..= skillPackage, "VendorId" JSON..= vendorId]
+instance Property "AuthenticationConfiguration" Skill where
+  type PropertyType "AuthenticationConfiguration" Skill = AuthenticationConfigurationProperty
+  set newValue Skill {..}
+    = Skill {authenticationConfiguration = newValue, ..}
+instance Property "SkillPackage" Skill where
+  type PropertyType "SkillPackage" Skill = SkillPackageProperty
+  set newValue Skill {..} = Skill {skillPackage = newValue, ..}
+instance Property "VendorId" Skill where
+  type PropertyType "VendorId" Skill = Value Prelude.Text
+  set newValue Skill {..} = Skill {vendorId = newValue, ..}
diff --git a/gen/Stratosphere/ASK/Skill/AuthenticationConfigurationProperty.hs b/gen/Stratosphere/ASK/Skill/AuthenticationConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ASK/Skill/AuthenticationConfigurationProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.ASK.Skill.AuthenticationConfigurationProperty (
+        AuthenticationConfigurationProperty(..),
+        mkAuthenticationConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data AuthenticationConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html>
+    AuthenticationConfigurationProperty {haddock_workaround_ :: (),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html#cfn-ask-skill-authenticationconfiguration-clientid>
+                                         clientId :: (Value Prelude.Text),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html#cfn-ask-skill-authenticationconfiguration-clientsecret>
+                                         clientSecret :: (Value Prelude.Text),
+                                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-authenticationconfiguration.html#cfn-ask-skill-authenticationconfiguration-refreshtoken>
+                                         refreshToken :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAuthenticationConfigurationProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> AuthenticationConfigurationProperty
+mkAuthenticationConfigurationProperty
+  clientId
+  clientSecret
+  refreshToken
+  = AuthenticationConfigurationProperty
+      {haddock_workaround_ = (), clientId = clientId,
+       clientSecret = clientSecret, refreshToken = refreshToken}
+instance ToResourceProperties AuthenticationConfigurationProperty where
+  toResourceProperties AuthenticationConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "Alexa::ASK::Skill.AuthenticationConfiguration",
+         supportsTags = Prelude.False,
+         properties = ["ClientId" JSON..= clientId,
+                       "ClientSecret" JSON..= clientSecret,
+                       "RefreshToken" JSON..= refreshToken]}
+instance JSON.ToJSON AuthenticationConfigurationProperty where
+  toJSON AuthenticationConfigurationProperty {..}
+    = JSON.object
+        ["ClientId" JSON..= clientId, "ClientSecret" JSON..= clientSecret,
+         "RefreshToken" JSON..= refreshToken]
+instance Property "ClientId" AuthenticationConfigurationProperty where
+  type PropertyType "ClientId" AuthenticationConfigurationProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationProperty {..}
+    = AuthenticationConfigurationProperty {clientId = newValue, ..}
+instance Property "ClientSecret" AuthenticationConfigurationProperty where
+  type PropertyType "ClientSecret" AuthenticationConfigurationProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationProperty {..}
+    = AuthenticationConfigurationProperty {clientSecret = newValue, ..}
+instance Property "RefreshToken" AuthenticationConfigurationProperty where
+  type PropertyType "RefreshToken" AuthenticationConfigurationProperty = Value Prelude.Text
+  set newValue AuthenticationConfigurationProperty {..}
+    = AuthenticationConfigurationProperty {refreshToken = newValue, ..}
diff --git a/gen/Stratosphere/ASK/Skill/AuthenticationConfigurationProperty.hs-boot b/gen/Stratosphere/ASK/Skill/AuthenticationConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ASK/Skill/AuthenticationConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ASK.Skill.AuthenticationConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AuthenticationConfigurationProperty :: Prelude.Type
+instance ToResourceProperties AuthenticationConfigurationProperty
+instance Prelude.Eq AuthenticationConfigurationProperty
+instance Prelude.Show AuthenticationConfigurationProperty
+instance JSON.ToJSON AuthenticationConfigurationProperty
diff --git a/gen/Stratosphere/ASK/Skill/OverridesProperty.hs b/gen/Stratosphere/ASK/Skill/OverridesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ASK/Skill/OverridesProperty.hs
@@ -0,0 +1,33 @@
+module Stratosphere.ASK.Skill.OverridesProperty (
+        OverridesProperty(..), mkOverridesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+data OverridesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-overrides.html>
+    OverridesProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-overrides.html#cfn-ask-skill-overrides-manifest>
+                       manifest :: (Prelude.Maybe JSON.Object)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOverridesProperty :: OverridesProperty
+mkOverridesProperty
+  = OverridesProperty
+      {haddock_workaround_ = (), manifest = Prelude.Nothing}
+instance ToResourceProperties OverridesProperty where
+  toResourceProperties OverridesProperty {..}
+    = ResourceProperties
+        {awsType = "Alexa::ASK::Skill.Overrides",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Manifest" Prelude.<$> manifest])}
+instance JSON.ToJSON OverridesProperty where
+  toJSON OverridesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Manifest" Prelude.<$> manifest]))
+instance Property "Manifest" OverridesProperty where
+  type PropertyType "Manifest" OverridesProperty = JSON.Object
+  set newValue OverridesProperty {..}
+    = OverridesProperty {manifest = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ASK/Skill/OverridesProperty.hs-boot b/gen/Stratosphere/ASK/Skill/OverridesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ASK/Skill/OverridesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ASK.Skill.OverridesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OverridesProperty :: Prelude.Type
+instance ToResourceProperties OverridesProperty
+instance Prelude.Eq OverridesProperty
+instance Prelude.Show OverridesProperty
+instance JSON.ToJSON OverridesProperty
diff --git a/gen/Stratosphere/ASK/Skill/SkillPackageProperty.hs b/gen/Stratosphere/ASK/Skill/SkillPackageProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ASK/Skill/SkillPackageProperty.hs
@@ -0,0 +1,73 @@
+module Stratosphere.ASK.Skill.SkillPackageProperty (
+        module Exports, SkillPackageProperty(..), mkSkillPackageProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.ASK.Skill.OverridesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SkillPackageProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html>
+    SkillPackageProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-overrides>
+                          overrides :: (Prelude.Maybe OverridesProperty),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3bucket>
+                          s3Bucket :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3bucketrole>
+                          s3BucketRole :: (Prelude.Maybe (Value Prelude.Text)),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3key>
+                          s3Key :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ask-skill-skillpackage.html#cfn-ask-skill-skillpackage-s3objectversion>
+                          s3ObjectVersion :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSkillPackageProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> SkillPackageProperty
+mkSkillPackageProperty s3Bucket s3Key
+  = SkillPackageProperty
+      {haddock_workaround_ = (), s3Bucket = s3Bucket, s3Key = s3Key,
+       overrides = Prelude.Nothing, s3BucketRole = Prelude.Nothing,
+       s3ObjectVersion = Prelude.Nothing}
+instance ToResourceProperties SkillPackageProperty where
+  toResourceProperties SkillPackageProperty {..}
+    = ResourceProperties
+        {awsType = "Alexa::ASK::Skill.SkillPackage",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["S3Bucket" JSON..= s3Bucket, "S3Key" JSON..= s3Key]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Overrides" Prelude.<$> overrides,
+                               (JSON..=) "S3BucketRole" Prelude.<$> s3BucketRole,
+                               (JSON..=) "S3ObjectVersion" Prelude.<$> s3ObjectVersion]))}
+instance JSON.ToJSON SkillPackageProperty where
+  toJSON SkillPackageProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["S3Bucket" JSON..= s3Bucket, "S3Key" JSON..= s3Key]
+              (Prelude.catMaybes
+                 [(JSON..=) "Overrides" Prelude.<$> overrides,
+                  (JSON..=) "S3BucketRole" Prelude.<$> s3BucketRole,
+                  (JSON..=) "S3ObjectVersion" Prelude.<$> s3ObjectVersion])))
+instance Property "Overrides" SkillPackageProperty where
+  type PropertyType "Overrides" SkillPackageProperty = OverridesProperty
+  set newValue SkillPackageProperty {..}
+    = SkillPackageProperty {overrides = Prelude.pure newValue, ..}
+instance Property "S3Bucket" SkillPackageProperty where
+  type PropertyType "S3Bucket" SkillPackageProperty = Value Prelude.Text
+  set newValue SkillPackageProperty {..}
+    = SkillPackageProperty {s3Bucket = newValue, ..}
+instance Property "S3BucketRole" SkillPackageProperty where
+  type PropertyType "S3BucketRole" SkillPackageProperty = Value Prelude.Text
+  set newValue SkillPackageProperty {..}
+    = SkillPackageProperty {s3BucketRole = Prelude.pure newValue, ..}
+instance Property "S3Key" SkillPackageProperty where
+  type PropertyType "S3Key" SkillPackageProperty = Value Prelude.Text
+  set newValue SkillPackageProperty {..}
+    = SkillPackageProperty {s3Key = newValue, ..}
+instance Property "S3ObjectVersion" SkillPackageProperty where
+  type PropertyType "S3ObjectVersion" SkillPackageProperty = Value Prelude.Text
+  set newValue SkillPackageProperty {..}
+    = SkillPackageProperty
+        {s3ObjectVersion = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/ASK/Skill/SkillPackageProperty.hs-boot b/gen/Stratosphere/ASK/Skill/SkillPackageProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/ASK/Skill/SkillPackageProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.ASK.Skill.SkillPackageProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SkillPackageProperty :: Prelude.Type
+instance ToResourceProperties SkillPackageProperty
+instance Prelude.Eq SkillPackageProperty
+instance Prelude.Show SkillPackageProperty
+instance JSON.ToJSON SkillPackageProperty
diff --git a/stratosphere-ask.cabal b/stratosphere-ask.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-ask.cabal
@@ -0,0 +1,76 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-ask
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS ASK.
+description:    Integration into stratosphere to generate resources and properties for AWS ASK
+category:       AWS, Cloud, ASK
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.ASK.Skill
+      Stratosphere.ASK.Skill.AuthenticationConfigurationProperty
+      Stratosphere.ASK.Skill.OverridesProperty
+      Stratosphere.ASK.Skill.SkillPackageProperty
+  other-modules:
+      Paths_stratosphere_ask
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
