diff --git a/CodeSnippets/StyleShare - Node.codesnippet b/CodeSnippets/StyleShare - Node.codesnippet
new file mode 100644
index 0000000..887df66
--- /dev/null
+++ b/CodeSnippets/StyleShare - Node.codesnippet
@@ -0,0 +1,66 @@
+
+
+
+
+ IDECodeSnippetCompletionPrefix
+
+ IDECodeSnippetCompletionScopes
+
+ All
+
+ IDECodeSnippetContents
+ import StyleShareReactive
+import StyleShareUI
+
+final class <#name#>: ASDisplayNode {
+
+ // MARK: Module
+
+ struct Payload {
+ }
+
+
+ // MARK: Constants
+
+ private enum Typo {
+ }
+
+
+ // MARK: Properties
+
+ private let payload: Payload
+
+
+ // MARK: UI
+
+
+ // MARK: Initializing
+
+ init(payload: Payload) {
+ self.payload = payload
+ super.init()
+ self.automaticallyManagesSubnodes = true
+ }
+
+
+ // MARK: LayoutSpec
+
+ override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
+ return ASInsetLayoutSpec()
+ }
+
+}
+ IDECodeSnippetIdentifier
+ 5DC94BAC-BAF9-4300-8D39-9B6964D4E3D1
+ IDECodeSnippetLanguage
+ Xcode.SourceCodeLanguage.Swift
+ IDECodeSnippetSummary
+
+ IDECodeSnippetTitle
+ StyleShare - Node
+ IDECodeSnippetUserSnippet
+
+ IDECodeSnippetVersion
+ 2
+
+
diff --git a/CodeSnippets/StyleShare - Pure Module.codesnippet b/CodeSnippets/StyleShare - Pure Module.codesnippet
new file mode 100644
index 0000000..bc4040a
--- /dev/null
+++ b/CodeSnippets/StyleShare - Pure Module.codesnippet
@@ -0,0 +1,32 @@
+
+
+
+
+ IDECodeSnippetCompletionPrefix
+
+ IDECodeSnippetCompletionScopes
+
+ All
+
+ IDECodeSnippetContents
+ // MARK: Module
+
+ struct Dependency {
+ }
+
+ struct Payload {
+ }
+ IDECodeSnippetIdentifier
+ 109BC502-5C76-4FE2-85CF-FC329007A1EE
+ IDECodeSnippetLanguage
+ Xcode.SourceCodeLanguage.Swift
+ IDECodeSnippetSummary
+
+ IDECodeSnippetTitle
+ StyleShare - Pure Module
+ IDECodeSnippetUserSnippet
+
+ IDECodeSnippetVersion
+ 0
+
+
diff --git a/CodeSnippets/StyleShare - Reactor.codesnippet b/CodeSnippets/StyleShare - Reactor.codesnippet
new file mode 100644
index 0000000..0ebc285
--- /dev/null
+++ b/CodeSnippets/StyleShare - Reactor.codesnippet
@@ -0,0 +1,69 @@
+
+
+
+
+ IDECodeSnippetCompletionPrefix
+
+ IDECodeSnippetCompletionScopes
+
+ All
+
+ IDECodeSnippetContents
+ import StyleShareReactive
+
+final class <#name#>: Reactor, FactoryModule {
+
+ // MARK: Module
+
+ struct Dependency {
+ }
+
+ struct Payload {
+ }
+
+
+ enum Action {
+ }
+
+ enum Mutation {
+ }
+
+ struct State {
+ }
+
+
+ // MARK: Properties
+
+ let initialState: State
+
+
+ // MARK: Initializing
+
+ init(dependency: Dependency, payload: Payload) {
+ defer { _ = self.state }
+ self.initialState = State()
+ }
+
+ func mutate(action: Action) -> Observable<Mutation> {
+ return .empty()
+ }
+
+ func reduce(state: State, mutation: Mutation) -> State {
+ return state
+ }
+}
+
+ IDECodeSnippetIdentifier
+ 84D36537-6B60-4299-80E8-122607BF40D9
+ IDECodeSnippetLanguage
+ Xcode.SourceCodeLanguage.Swift
+ IDECodeSnippetSummary
+
+ IDECodeSnippetTitle
+ StyleShare - Reactor
+ IDECodeSnippetUserSnippet
+
+ IDECodeSnippetVersion
+ 0
+
+
diff --git a/CodeSnippets/StyleShare - Test.codesnippet b/CodeSnippets/StyleShare - Test.codesnippet
new file mode 100644
index 0000000..2395e0e
--- /dev/null
+++ b/CodeSnippets/StyleShare - Test.codesnippet
@@ -0,0 +1,38 @@
+
+
+
+
+ IDECodeSnippetCompletionPrefix
+
+ IDECodeSnippetCompletionScopes
+
+ All
+
+ IDECodeSnippetContents
+ @testable import <#name#>
+
+final class <#name#>: QuickSpec {
+ override func spec() {
+ }
+}
+
+extension Factory where Module == <#name#> {
+ static func dummy() -> Factory {
+ return .init(dependency: .init())
+ }
+}
+
+ IDECodeSnippetIdentifier
+ 2633990D-B131-4D0A-9BEC-2B2B7965921F
+ IDECodeSnippetLanguage
+ Xcode.SourceCodeLanguage.Swift
+ IDECodeSnippetSummary
+
+ IDECodeSnippetTitle
+ StyleShare - Test
+ IDECodeSnippetUserSnippet
+
+ IDECodeSnippetVersion
+ 0
+
+
diff --git a/CodeSnippets/StyleShare - UIViewController.codesnippet b/CodeSnippets/StyleShare - UIViewController.codesnippet
new file mode 100644
index 0000000..67efa14
--- /dev/null
+++ b/CodeSnippets/StyleShare - UIViewController.codesnippet
@@ -0,0 +1,78 @@
+
+
+
+
+ IDECodeSnippetCompletionPrefix
+
+ IDECodeSnippetCompletionScopes
+
+ All
+
+ IDECodeSnippetContents
+ import StyleShareUI
+
+final class <#name#>: BaseViewController, View, FactoryModule {
+
+ // MARK: Module
+
+ struct Dependency {
+ }
+
+ struct Payload {
+ }
+
+
+ // MARK: Constants
+
+ private enum Typo {
+ }
+
+
+ // MARK: Properties
+
+
+ // MARK: UI
+
+
+ // MARK: Initializing
+
+ init(dependency: Dependency, payload: Payload) {
+ defer { self.reactor = payload.reactor }
+ super.init()
+ }
+
+
+ // MARK: View Life Cycle
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ }
+
+
+ // MARK: Binding
+
+ func bind(reactor: <#name#>) {
+ }
+
+
+ // MARK: Layout
+
+ override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
+ return ASLayoutSpec()
+ }
+}
+
+ IDECodeSnippetIdentifier
+ 96005E4B-F7F1-493E-8858-2C6D6FB8C537
+ IDECodeSnippetLanguage
+ Xcode.SourceCodeLanguage.Swift
+ IDECodeSnippetSummary
+
+ IDECodeSnippetTitle
+ StyleShare - UIViewController
+ IDECodeSnippetUserSnippet
+
+ IDECodeSnippetVersion
+ 0
+
+
diff --git a/Makefile b/Makefile
index f97a519..1a7fdbb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
all:
- mkdir -p $HOME/Library/Developer/Xcode/UserData/CodeSnippets
+ mkdir -p $$HOME/Library/Developer/Xcode/UserData/CodeSnippets
rm $$HOME/Library/Developer/Xcode/UserData/CodeSnippets/ReactorKit*.codesnippet 2>/dev/null || true
cp ./CodeSnippets/* $$HOME/Library/Developer/Xcode/UserData/CodeSnippets