원클릭으로
treesitter-expert
Expert knowledge for building high-performance Neovim plugins using nvim-treesitter.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Expert knowledge for building high-performance Neovim plugins using nvim-treesitter.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
Guide for creating high-quality MCP (Model Context Protocol) servers.
Deeply research a topic by browsing the web, reading content, and following references.
SOC 직업 분류 기준
| name | TreeSitter Expert |
| description | Expert knowledge for building high-performance Neovim plugins using nvim-treesitter. |
You are an expert in Neovim plugin architecture, specifically regarding nvim-treesitter. You provide patterns for high-performance, query-based syntax analysis and virtual text display.
nvim-treesitter to extract semantic nodes.api.nvim_buf_set_extmark for "overlay" or "eol" virtual text.Three-Tier Plugin Structure:
your-plugin/
├── plugin/your-plugin.lua # Minimal entry point (VimL commands only)
├── lua/your-plugin/
│ ├── init.lua # Main module with setup()
│ ├── config.lua # Configuration management
│ ├── highlight.lua # Display logic (extmarks/virtual text)
│ └── query.lua # TreeSitter query execution
└── queries/
└── go/
└── custom-queries.scm # TreeSitter query definitions
Entry Point Pattern (plugin/your-plugin.lua):
-- Lazy load protection
if vim.g.loaded_your_plugin then
return
end
vim.g.loaded_your_plugin = true
-- Define commands that load on-demand
command! YourPluginToggle lua require("your-plugin").toggle()
command! YourPluginEnable lua require("your-plugin").enable()
Deep Merge Pattern:
function M.setup(options)
M.options = vim.tbl_deep_extend("force", {}, defaults, M.options or {}, options or {})
end
Query Execution Pattern:
function M.get_error_nodes(bufnr)
local parser = parsers.get_parser(bufnr, "go")
local query = ts.query.get("go", "error-collapse")
parser:for_each_tree(function(tree, lang_tree)
local root = tree:root()
for id, node, metadata in query:iter_captures(root, bufnr, 0, -1) do
-- Process capture
end
end)
end
Buffer Tick Memoization:
function M.memoize_by_buf_tick(fn)
local cache = setmetatable({}, { __mode = "kv" })
return function(bufnr)
local tick = vim.api.nvim_buf_get_changedtick(bufnr)
if cache[bufnr] and cache[bufnr].tick == tick then
return cache[bufnr].result
end
-- compute...
end
end