소스 정보
- 저장소
- Feel-ix-343/markdown-oxide
- 최근 소스 활동
- 2026년 3월 10일 00:09
- 감지된 SKILL.md 언어
- 영어
- 스타
- 2,268
- 포크
- 121
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/Feel-ix-343/markdown-oxide --skill testing-neovim명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | testing-neovim |
| description | Test markdown-oxide LSP features in Neovim |
markdown-oxide is an LSP server for markdown/Obsidian vaults. It cannot be tested via browser or direct CLI invocation -- it requires an editor with LSP support. Neovim v0.11+ is the recommended testing environment.
Verify that markdown-oxide LSP features work correctly in Neovim, including wiki link completions, block linking (with block ID insertion via :wall), go-to-definition, hover with backlinks, and tag completions against the TestFiles/ directory. Testing is done in two recorded phases: first reproduce/demonstrate the current behavior, then validate the fix or expected behavior.
cd ~/repos/markdown-oxide && cargo build
sudo cp target/debug/markdown-oxide /usr/local/bin/markdown-oxide
Verify it's on PATH: which markdown-oxide
For release builds (slower but optimized): cargo build --release then copy from target/release/.
curl -fsSL -o /tmp/nvim.appimage https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage
chmod +x /tmp/nvim.appimage
cd /tmp && /tmp/nvim.appimage --appimage-extract
sudo mv /tmp/squashfs-root /opt/nvim
sudo ln -sf /opt/nvim/usr/bin/nvim /usr/local/bin/nvim
Verify: nvim --version | head -1 (should be v0.11+)
On headless/VM environments, the AppImage may fail with FUSE errors. Use --appimage-extract to extract without FUSE.
Create ~/.config/nvim/init.lua:
-- Minimal Neovim config for testing markdown-oxide LSP
vim.opt.number = true
vim.opt.signcolumn = "yes"
vim.opt.completeopt = { "menu", "menuone", "noselect" }
vim.lsp.config('markdown_oxide', {
cmd = { 'markdown-oxide' },
filetypes = { 'markdown' },
root_markers = { '.obsidian', '.moxide.toml', '.git' },
capabilities = {
workspace = {
didChangeWatchedFiles = {
dynamicRegistration = true,
},
},
},
})
vim.lsp.enable('markdown_oxide')
vim.api.nvim_create_autocmd('LspAttach', {
callback = function(args)
local opts = { buffer = args.buf }
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, opts)
vim.keymap.set('i', '<C-Space>', function()
vim.lsp.completion.trigger()
end, opts)
vim.lsp.completion.enable(true, args.data.client_id, args.buf, { autotrigger = true })
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client and client.name ==
vim.api.nvim_create_user_command(,
vim.lsp.buf.execute_command({ command = , arguments = { cmd_args.args } })
, { desc = , nargs = })
,
})
This uses Neovim 0.11+ built-in LSP support (vim.lsp.config / vim.lsp.enable). The dynamicRegistration = true setting is critical for block linking to work.
Open a terminal emulator (e.g., konsole) and launch Neovim on TestFiles:
konsole --workdir ~/repos/markdown-oxide/TestFiles -e bash -c "nvim Test.md" &
Wait for Neovim to open and the LSP to attach. Verify with: pgrep -a markdown-oxide
Testing is split into two recorded phases:
Start a screen recording (recording_start). Demonstrate the current state of each feature before any fix. This establishes a baseline and captures any issues:
recording_stop) when doneAfter applying the fix (rebuild markdown-oxide, copy to PATH, quit and relaunch Neovim to restart the LSP):
recording_start)recording_stop) when doneTest each feature:
G to go to end of file, then o to open a new line[[ -- a completion menu should appear with files, headings, and blocks[[Reso should show "Resolved File")Escape and u to undo when doneo to open a new line in insert mode[[ (two brackets then a space) -- this triggers the unindexed block completertest file with some)Ctrl+n/Ctrl+p to navigate, Ctrl+y to accept[[Another Test 2#^f311g|text]] is inserted with a generated block ID:wall to write all buffers -- the block ID is inserted into the target file as an unsaved buffer edit^blockid suffix[[This is another link]] (around line 31)fT to find the T)gd -- should navigate to This is another link.mdCtrl+o to go back[[This is another link]]K (Shift+k) -- a hover popup should show:
Escape or any key to dismisso to open a new line, type #tatag, tag/subtag, tag/othersubtag, mapofcontent/tag, etc.Escape and u to undo when done# Heading 1gr to find all references/backlinks[[File#My-Heading]]) should resolve correctly[[File#My Heading]]) should also resolve (lenient matching)heading_slug config is trueTestFiles/Test.md: # Heading 1, ## Here is a nested, ### Here is a nested thirdTestFiles/Resolved File.md which has # Resolved HeadingAfter both recording phases are complete, post the recordings as comments on the PR:
Use git_comment_on_pr to post the Phase 1 recording with a comment like:
Phase 1: Reproducing current behavior in Neovim
Use git_comment_on_pr to post the Phase 2 recording with a comment like:
Phase 2: Validating fix in Neovim
This provides reviewers with visual evidence of the issue and its resolution.
Undo any test edits: Escape, then u repeatedly until "Already at oldest change".
Quit without saving: :qa!
TestFiles/Test.md -- Main test file with headings, wiki links, block refs, tagsTestFiles/Resolved File.md -- Has # Resolved Heading and heading linksTestFiles/Another Test.md -- Has # This is a test heading and ## This is a nested test headingTestFiles/This is another link.md -- Target for wiki link navigation tests^blockid into the target file after :wallmarkdown-oxide) must be running (verify with pgrep)vim.lsp.config / vim.lsp.enable. Older versions need nvim-lspconfig plugin.dynamicRegistration = true capability is essential for block linking and the "Create Unresolved File" code action to work.--appimage-extract to extract without FUSE.[[ (with a space after [[). Without the space, you get regular file/heading completions.:wall to persist it.nvim-cmp with cmp-nvim-lsp. The built-in vim.lsp.completion works but nvim-cmp provides better UX.:LspLog to inspect LSP communication for debugging.Ctrl+Space to force trigger.cargo build (debug) is much faster than cargo build --release -- use debug for testing iterations.