ワンクリックで
shannon
// Interact with Neovim via RPC to annotate code, navigate files, and do walkthroughs
// Interact with Neovim via RPC to annotate code, navigate files, and do walkthroughs
Create a commit (or draft a commit message) in a Git repository
Create a commit (or draft a commit message) in a Jujutsu repository
How to use `jj`, the Jujutsu version control system
Create a GitHub pull request as a draft, auto-generating title and body from commits
Review a GitHub pull request, examining the summary, linked resources, and diff
This skill should be used when the user mentions Jira issues (e.g., "PROJ-123"), asks about tickets, wants to create/view/update issues, check sprint status, or manage their Jira workflow. Triggers on keywords like "jira", "issue", "ticket", "sprint", "backlog", or issue key patterns.
| name | shannon |
| description | Interact with Neovim via RPC to annotate code, navigate files, and do walkthroughs |
| allowed-tools | ["Bash","Read","Glob","Grep"] |
When a prompt arrives from Shannon (indicated by a footer like
(Shannon prompt via Neovim server <addr>)), you have the ability to interact
with the user's Neovim session via RPC.
There are two ways to obtain the Neovim server address:
From a Shannon prompt — Shannon prompts include a footer of the form:
(Shannon prompt via Neovim server /path/to/socket)
Extract the server address from this footer.
Auto-discovery — if no Shannon prompt has been received yet, run the
discovery script. Below, $SKILL_DIR is the absolute path to the directory
containing this SKILL.md file; expand it to its absolute value before
running, since the current working directory is not guaranteed to be the
skill directory.
$SKILL_DIR/scripts/shannon-find-nvim.sh
This finds the Neovim instance running in a sibling tmux pane and prints its server socket path. It exits non-zero if no Neovim is found.
Use nvim --server <addr> --remote-expr '<expr>' to execute Vimscript or Lua in
the user's Neovim. For Lua, wrap with luaeval("...").
The Shannon plugin exposes private helper functions as individual modules for use by this skill. Each returns a single function. Prefer these over raw Neovim API calls.
Open a file (with optional 1-indexed line number):
nvim --server 'luaeval("require(\"wincent.shannon.private.open\")(\"path/to/file\")")' <addr >--remote-expr
nvim --server 'luaeval("require(\"wincent.shannon.private.open\")(\"path/to/file\", 42)")' <addr >--remote-expr
Jump to a line (1-indexed) in the current buffer:
nvim --server 'luaeval("require(\"wincent.shannon.private.jump\")(42)")' <addr >--remote-expr
Add virtual text annotation below a line (1-indexed):
nvim --server 'luaeval("require(\"wincent.shannon.private.annotate\")(42, \"text here\", \"DiagnosticInfo\")")' <addr >--remote-expr
The third argument is a highlight group. Use these to convey meaning:
DiagnosticInfo — informational annotations (blue)DiagnosticWarn — warnings (yellow)DiagnosticError — errors/issues (red)DiagnosticHint — hints/suggestions (green)If omitted, defaults to DiagnosticInfo.
Clear all Shannon annotations in current buffer:
nvim --server 'luaeval("vim.cmd.ShannonClearMarks()")' <addr >--remote-expr
Show a message in Neovim's command area:
nvim --server 'luaeval("vim.api.nvim_echo({{\"message\", \"WarningMsg\"}}, true, {})")' <addr >--remote-expr
Use RPC when:
The Shannon plugin provides the following commands, which can be invoked via RPC:
:ShannonNextMark — jump to the next Shannon extmark in the current buffer
(wraps around).:ShannonPreviousMark — jump to the previous Shannon extmark (wraps around).:ShannonClearMarks — clear all Shannon extmarks in the current buffer.After adding annotations, tell the user they can navigate between marks with
:ShannonNextMark / :ShannonPreviousMark (or their configured mappings). When
you are done with an annotation session and the user has finished reviewing,
clear the marks via RPC:
nvim --server 'luaeval("vim.cmd.ShannonClearMarks()")' <addr >--remote-expr
private.open first.--remote-expr call is synchronous and blocks until Neovim processes it.