@kitschpatrol/snip
v0.0.16
Published
CLI tool for snippet management.
Maintainers
Readme
@kitschpatrol/snip
CLI tool for snippet management.
[!CAUTION] This tool is a work in progress, certain commands are not yet implemented and others might behave unpredictably. I don't recommend using it until a 1.0.0 release.
Overview
Snip helps you create, edit, manage, and synchronize code snippets from the command line. Synchronize to (and possibly eventually from) editors like VS Code.
Snip is a fork of Jared Hanstra's snipster. Snip includes both some additions and some regressions vs. the original.
Getting started
Dependencies
- Node.js 24.16.0 or newer (specifically
^24.16.0 || >=26.0.0)
Installation
Run it once without installing:
npx @kitschpatrol/snipOr install it globally with Homebrew:
brew install kitschpatrol/tap/snipOr install it globally with npm:
npm install --global @kitschpatrol/snipUsage
TK
CLI
Command: snip
CLI tool for snippet management.
This section lists top-level commands for snip.
Usage:
snip [options] [command]| Command | Argument | Description |
| ------------------- | -------------- | ------------------------------------------------ |
| add | [filename] | add a snippet |
| cd | | launch a shell in the snippets directory |
| list | | list all snippets |
| setup | | set up snip |
| sync-to-editors | [editors...] | sync snippets to editors |
| sync-from-editors | [editors...] | sync snippets from editors (not yet implemented) |
| Option | Argument | Description | Default |
| ------------------- | -------- | --------------------------------------------------- | ---------------------------- |
| --version-v | | output the version number | |
| --config-c | <path> | path to configuration file | ~/.config/snip/config.json |
| --library-l | <path> | path to library directory where snippets are stored | ~/.snip |
| --debug-d | | extra logging for troubleshooting | false |
| --help-h | | display help for command | |
See the sections below for more information on each subcommand.
Subcommand: snip add
add a snippet
Usage:
snip add [options] [filename]| Positional Argument | Description |
| ------------------- | --------------- |
| filename | name of snippet |
| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip cd
launch a shell in the snippets directory
Usage:
snip cd [options]| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip list
list all snippets
Usage:
snip list [options]| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip setup
set up snip
Usage:
snip setup [options]| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip sync-to-editors
sync snippets to editors
Usage:
snip sync-to-editors [options] [editors...]| Positional Argument | Description | Default |
| ------------------- | ------------------ | ------------ |
| editors | editors to sync to | ["vscode"] |
| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip sync-from-editors
sync snippets from editors (not yet implemented)
Usage:
snip sync-from-editors [options] [editors...]| Positional Argument | Description | Default |
| ------------------- | ------------------ | ------------ |
| editors | editors to sync to | ["vscode"] |
| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Examples
Set up snip for the first time:
snip setup
# Enter a pathname for your snippets library (~/.snip):Add a new snippet interactively — snip prompts for a prefix, description, and language, then opens your $EDITOR:
snip add
# Prefix (the trigger keyword for your snippet): cl
# A quick description of your snippet (optional): Print value to console
# Language (...): js+ts+jsx+tsx
# Opens your editor to write the snippet body...Or pass a filename directly:
snip add "cl--Print value to console.js+ts+jsx+tsx"List all snippets in your library:
snip list
# cl--Print value to console.js+ts+jsx+tsx
# html--HTML 5 boilerplate.html
# li--Lorem Ipsum.allSync your snippet library to VS Code:
snip sync-to-editors vscodeJump into your snippets directory to edit files directly:
snip cdBackground
Snip is a fork of Jared Hanstra's snipster.
Modifications include:
- A monosyllabic name 😅.
- Migration from JavaScript → TypeScript + Zod.
- Migration from CommonJS → ES Modules.
- Migration from Yarn → PNPM.
- Added
.ignorefile support. - Added
$EDITORsupport for creating new snippets. - Added support for
~in paths. - Implemented a new automated language ID aggregation approach based on scraping plugin manifests from the VS Code marketplace.
- Added support for snippet descriptions — stored in the snippet file name itself.
The future
- [ ] Explore Amazon Q (née Fig) auto-complete generation and integration
- [ ] Additional editor adapters
- [ ] Sync-from-editor migration fixes
- [ ] Cosmiconfig
Maintainers
Acknowledgments
Jared Hanstra is the author of the original snipster project on which Snip is based.
Contributing
Issues are welcome and appreciated.
Please open an issue to discuss changes before submitting a pull request. Unsolicited PRs (especially AI-generated ones) are unlikely to be merged.
This repository uses @kitschpatrol/shared-config (via its ksc CLI) for linting and formatting, plus MDAT for readme placeholder expansion.
