VS Code Snippets
VS Code snippets allow you to quickly scaffold services, controllers, and other common Knit patterns. No extensions or plugins are required.

Setup
- In VS Code, navigate to File > Preferences > User Snippets.
- Type and select
lua.json. - Add any of the snippets below inside the
{}braces. - Save the file.
- In your source files, type a prefix (e.g.,
knit) and select the autocomplete suggestion.
Snippets
Knit Require
Inserts a require statement for Knit.
Snippet
"Knit": {
"prefix": ["knit"],
"body": ["local Knit = require(ReplicatedStorage.Packages.Knit)"],
"description": "Require the Knit module"
}
Output
local Knit = require(ReplicatedStorage.Packages.Knit)
Roblox Service
References a Roblox engine service.
Snippet
"Service": {
"prefix": ["service"],
"body": ["local ${0:Name}Service = game:GetService(\"${0:Name}Service\")"],
"description": "Roblox Service"
}
Output
local HttpService = game:GetService("HttpService")
Knit Service
Creates a complete service template.
Snippet
"Knit Service": {
"prefix": ["knitservice"],
"body": [
"local Knit = require(ReplicatedStorage.Packages.Knit)",
"",
"local ${0:$TM_FILENAME_BASE} = {",
"\tName = \"${0:$TM_FILENAME_BASE}\",",
"\tClient = {},",
"}",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitStart()",
"\t",
"end",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitInit()",
"\t",
"end",
"",
"",
"return ${0:$TM_FILENAME_BASE}",
""
],
"description": "Knit Service template"
}
Output
local Knit = require(ReplicatedStorage.Packages.Knit)
local MyService = {
Name = "MyService",
Client = {},
}
function MyService:KnitStart()
end
function MyService:KnitInit()
end
return MyService
Knit Controller
Creates a complete controller template.
Snippet
"Knit Controller": {
"prefix": ["knitcontroller"],
"body": [
"local Knit = require(ReplicatedStorage.Packages.Knit)",
"",
"local ${0:$TM_FILENAME_BASE} = { Name = \"${0:$TM_FILENAME_BASE}\" }",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitStart()",
"\t",
"end",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitInit()",
"\t",
"end",
"",
"",
"return ${0:$TM_FILENAME_BASE}",
""
],
"description": "Knit Controller template"
}
Output
local Knit = require(ReplicatedStorage.Packages.Knit)
local MyController = {
Name = "MyController",
}
function MyController:KnitStart()
end
function MyController:KnitInit()
end
return MyController
Knit Module Require
Requires a module from within Knit's utility folder.
Snippet
"Knit Require": {
"prefix": ["knitrequire"],
"body": ["local ${1:Name} = require(Knit.${2:Util}.${1:Name})"],
"description": "Knit Require template"
}
Output
local Signal = require(Knit.Util.Signal)
Lua Class
A standard Lua class template (not Knit-specific).
Snippet
"Class": {
"prefix": ["class"],
"body": [
"local ${0:$TM_FILENAME_BASE} = {}",
"${0:$TM_FILENAME_BASE}.__index = ${0:$TM_FILENAME_BASE}",
"",
"",
"function ${0:$TM_FILENAME_BASE}.new()",
"\tlocal self = setmetatable({}, ${0:$TM_FILENAME_BASE})",
"\treturn self",
"end",
"",
"",
"function ${0:$TM_FILENAME_BASE}:Destroy()",
"\t",
"end",
"",
"",
"return ${0:$TM_FILENAME_BASE}",
""
],
"description": "Lua Class"
}
Output
local MyClass = {}
MyClass.__index = MyClass
function MyClass.new()
local self = setmetatable({}, MyClass)
return self
end
function MyClass:Destroy()
end
return MyClass
All Snippets Combined
Complete lua.json
{
"Service": {
"prefix": ["service"],
"body": ["local ${0:Name}Service = game:GetService(\"${0:Name}Service\")"],
"description": "Roblox Service"
},
"Class": {
"prefix": ["class"],
"body": [
"local ${0:$TM_FILENAME_BASE} = {}",
"${0:$TM_FILENAME_BASE}.__index = ${0:$TM_FILENAME_BASE}",
"",
"",
"function ${0:$TM_FILENAME_BASE}.new()",
"\tlocal self = setmetatable({}, ${0:$TM_FILENAME_BASE})",
"\treturn self",
"end",
"",
"",
"function ${0:$TM_FILENAME_BASE}:Destroy()",
"\t",
"end",
"",
"",
"return ${0:$TM_FILENAME_BASE}",
""
],
"description": "Lua Class"
},
"Knit": {
"prefix": ["knit"],
"body": ["local Knit = require(ReplicatedStorage.Packages.Knit)"],
"description": "Require the Knit module"
},
"Knit Service": {
"prefix": ["knitservice"],
"body": [
"local Knit = require(ReplicatedStorage.Packages.Knit)",
"",
"local ${0:$TM_FILENAME_BASE} = {",
"\tName = \"${0:$TM_FILENAME_BASE}\",",
"\tClient = {},",
"}",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitStart()",
"\t",
"end",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitInit()",
"\t",
"end",
"",
"",
"return ${0:$TM_FILENAME_BASE}",
""
],
"description": "Knit Service template"
},
"Knit Controller": {
"prefix": ["knitcontroller"],
"body": [
"local Knit = require(ReplicatedStorage.Packages.Knit)",
"",
"local ${0:$TM_FILENAME_BASE} = { Name = \"${0:$TM_FILENAME_BASE}\" }",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitStart()",
"\t",
"end",
"",
"",
"function ${0:$TM_FILENAME_BASE}:KnitInit()",
"\t",
"end",
"",
"",
"return ${0:$TM_FILENAME_BASE}",
""
],
"description": "Knit Controller template"
},
"Knit Require": {
"prefix": ["knitrequire"],
"body": ["local ${1:Name} = require(Knit.${2:Util}.${1:Name})"],
"description": "Knit Require template"
}
}