GhostNotes
Version: 1.0.2 | Last Updated: April 23, 2026
A Git tool that strips tagged comments before committing.
Installation
pip install ghostnotes
Then initialize in any git repo:
cd your-project
ghostnotes init
What it does
GhostNotes lets you leave personal notes in your code using a tag (default: GN:). Before every commit, it automatically strips them out so they never reach your repository.
x = some_function() # GN: this is how you assign the output from a function in Python (embarrassing to not know)
This comment line gets stripped before the commit so it looks like:
x = some_function()
Your local file stays untouched.
Commands
| Command | Description |
|---|---|
ghostnotes init |
Initialize GhostNotes in the current project |
ghostnotes status |
Show all GhostNotes in the current project |
ghostnotes set-tag --tag <tag> |
Change the default comment tag |
ghostnotes add-lang --ext <.ext> --symb <symbol> |
Add support for a new language |
ghostnotes pull |
Git pull that safely strips and re-applies your ghostnotes |
Configuration
Edit .ghostnotes to tune how notes are detected. Under [settings], space_mode controls the spacing between the comment symbol and the tag:
| Mode | Matches |
|---|---|
space (default) |
# GN: only |
nospace |
#GN: only |
both |
# GN: and #GN: |
Supported Languages
| Language | Extension | Comment Symbol |
|---|---|---|
| Python | .py |
# |
| Java | .java |
// |
| JavaScript | .js |
// |
| TypeScript | .ts |
// |
| C | .c |
// |
| C++ | .cpp |
// |
| C# | .cs |
// |
| Go | .go |
// |
| Rust | .rs |
// |
| Swift | .swift |
// |
| Kotlin | .kt |
// |
| Ruby | .rb |
# |
| Shell | .sh |
# |
| YAML | .yaml / .yml |
# |
| R | .r |
# |
| PHP | .php |
// |
| Lua | .lua |
-- |
| SQL | .sql |
-- |
| Scala | .scala |
// |
| Dart | .dart |
// |
| Zig | .zig |
// |
| Perl | .pl |
# |
| Elixir | .ex |
# |
| Haskell | .hs |
-- |
Need a language not listed? Add it with ghostnotes add-lang --ext <.ext> --symb <symbol>.
Metadata
Release files for ghostnotes 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ghostnotes-1.0.2.tar.gz | 9.7 kB | Without provenance | Details for ghostnotes-1.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ghostnotes-1.0.2-py3-none-any.whl | Python 3 | none | any | Details for ghostnotes-1.0.2-py3-none-any.whl |
Total release size: 18.2 kB
Release files / ghostnotes-1.0.2.tar.gz
| Download URL | ghostnotes-1.0.2.tar.gz |
|---|---|
| Size | 9.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ff5a996431bcb72d8fe6d5f644f96b19a7814a5ab9fe4b75dcca005b7614ef52
|
|
BLAKE2b-256 checksum How to use checksums |
049a007851153265ccf322fc749a7c6a4626d257269dbaffd09c9cfd7628e16e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / ghostnotes-1.0.2-py3-none-any.whl
| Download URL | ghostnotes-1.0.2-py3-none-any.whl |
|---|---|
| Size | 8.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e7de67db3977afc94c59325c6117bd2bad242170e6dbd305fbf3657be70dcb0
|
|
BLAKE2b-256 checksum How to use checksums |
9c61ba59c6ea5d188724035b0c678ea1b41f673f5a1997c5c3add9e75775ad72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for ghostnotes 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.