notes by NeoLabHQ
Use when adding metadata to commits without changing history, tracking review status, test results, code quality annotations, or supplementing commit messages post-hoc - provides git notes commands and patterns for attaching non-invasive metadata to Git objects.
Content & Writing
279 Stars
26 Forks
Updated Jan 16, 2026, 09:38 PM
Why Use This
This skill provides specialized capabilities for NeoLabHQ's codebase.
Use Cases
- Developing new features in the NeoLabHQ repository
- Refactoring existing code to follow NeoLabHQ standards
- Understanding and working with NeoLabHQ's codebase structure
Install Guide
2 steps- 1
Skip this step if Ananke is already installed.
- 2
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Repository context-engineering-kit
Skill Version
master
Community
279 26
Updated At Jan 16, 2026, 09:38 PM
Skill Stats
SKILL.md 438 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
--- name: git:notes description: Use when adding metadata to commits without changing history, tracking review status, test results, code quality annotations, or supplementing commit messages post-hoc - provides git notes commands and patterns for attaching non-invasive metadata to Git objects. --- # Git Notes ## Overview Git notes attach metadata to commits (or any Git object) without modifying the objects themselves. Notes are stored separately and displayed alongside commit messages. **Core principle:** Add information to commits after creation without rewriting history. ## Core Concepts | Concept | Description | |---------|-------------| | **Notes ref** | Storage location, default `refs/notes/commits` | | **Non-invasive** | Notes never modify SHA of original object | | **Namespaces** | Use `--ref` for different note categories | | **Display** | Notes appear in `git log` and `git show` output | ## Quick Reference | Task | Command | |------|---------| | Add note | `git notes add -m "message" <sha>` | | View note | `git notes show <sha>` | | Append | `git notes append -m "message" <sha>` | | Edit | `git notes edit <sha>` | | Remove | `git notes remove <sha>` | | Use namespace | `git notes --ref=<name> <command>` | | Push notes | `git push origin refs/notes/<name>` | | Fetch notes | `git fetch origin refs/notes/<name>:refs/notes/<name>` | | Show in log | `git log --notes=<name>` | For complete command reference, see `references/commands.md`. ## Essential Patterns ### Code Review Tracking ```bash # Mark reviewed git notes --ref=reviews add -m "Reviewed-by: Alice <[email protected]>" abc1234 # View review status git log --notes=reviews --oneline ``` ### Sharing Notes ```bash # Push to remote git push origin refs/notes/reviews # Fetch from remote git fetch origin refs/notes/reviews:refs/notes/reviews ``` ### Preserving Through Rebase ```bash git config notes.rewrite.rebase true git config notes.rewriteMode concatenate ``` ## Common Mistakes | Mistake | Fix | |---------|-----| | Notes not showing in log | Specify ref: `git log --notes=reviews` or configure `notes.displayRef` | | Notes lost after rebase | Enable: `git config notes.rewrite.rebase true` | | Notes not on remote | Push explicitly: `git push origin refs/notes/commits` | | "Note already exists" error | Use `-f` to overwrite or `append` to add | ## Best Practices | Practice | Rationale | |----------|-----------| | Use namespaces | Separate notes by purpose (reviews, testing, audit) | | Be explicit about refs | Always specify `--ref` for non-default notes | | Push notes explicitly | Document sharing procedures in team guidelines | | Use append over add -f | Preserve note history when accumulating | | Configure rewrite preservation | Run `git config notes.rewrite.rebase true` before rebasing | # Git Notes Command Reference Complete reference for all git notes commands and options. ## Basic Operations ### Add a Note ```bash # Add note to current HEAD git notes add -m "Reviewed by Alice" # Add note to specific commit git notes add -m "Tested on Linux" abc1234 # Add note from file git notes add -F review-comments.txt abc1234 # Add note interactively (opens editor) git notes add abc1234 # Overwrite existing note git notes add -f -m "Updated review status" abc1234 # Add empty note git notes add --allow-empty abc1234 ``` ### View Notes ```bash # Show note for HEAD git notes show # Show note for specific commit git notes show abc1234 # View commit with notes in log git log --show-notes git show abc1234 # List all notes git notes list # List note for specific object git notes list abc1234 ``` **Example output with notes:** ``` commit abc1234def567890 Author: Developer <[email protected]> Date: Mon Jan 15 10:00:00 2024 +0000 feat: implement user authentication Notes: Reviewed by Alice Tested-by: CI Bot <[email protected]> ``` ### Append to Notes ```bash # Append to existing note (creates if doesn't exist) git notes append -m "Additional review comment" abc1234 # Append from file git notes append -F more-comments.txt abc1234 # Append multiple messages git notes append -m "Comment 1" -m "Comment 2" abc1234 ``` ### Edit Notes ```bash # Edit note interactively (opens editor) git notes edit abc1234 # Edit note for HEAD git notes edit ``` ### Remove Notes ```bash # Remove note from HEAD git notes remove # Remove note from specific commit git notes remove abc1234 # Remove notes from multiple commits git notes remove abc1234 def5678 ghi9012 # Ignore missing notes (no error if note doesn't exist) git notes remove --ignore-missing abc1234 # Remove notes via stdin (bulk removal) echo "abc1234" | git notes remove --stdin ``` ### Copy Notes ```bash # Copy note from one commit to another git notes copy abc1234 def5678 # Copy note to HEAD git notes copy abc1234 # Force overwrite destination note git notes copy -f abc1234 def5678 # Bulk copy via stdin (useful with rebase/cherry-pick) echo "abc1234 def5678" | git notes copy --stdin ``` ### Prune Notes ```bash # Remove notes for objects that no longer exist git notes prune # Dry-run to see what would be pruned git notes prune -n # Verbose output git notes prune -v ``` ### Get Notes Reference ```bash # Show current notes ref being used git notes get-ref ``` ## Using Multiple Namespaces Notes can be organized into separate namespaces (refs) for different purposes. ### Specify Notes Ref ```bash # Add note to specific namespace git notes --ref=refs/notes/reviews add -m "Approved" abc1234 # Shorthand (refs/notes/ prefix is assumed) git notes --ref=reviews add -m "Approved" abc1234 # View notes from specific namespace git notes --ref=reviews show abc1234 # List notes in namespace git notes --ref=reviews list ``` ### Environment Variable ```bash # Set default notes ref for session export GIT_NOTES_REF=refs/notes/reviews git notes add -m "Approved" # View notes from environment ref git notes show abc1234 ``` ### Display Multiple Namespaces ```bash # Show specific notes namespace in log git log --notes=reviews # Show multiple namespaces git log --notes=reviews --notes=testing # Show all notes git log --notes='*' # Disable notes display git log --no-notes ``` ## Merging Notes When notes exist in multiple refs or from different sources, they can be merged. ### Merge Notes Refs ```bash # Merge notes from another ref into current git notes merge refs/notes/other # Merge with strategy git notes merge -s union refs/notes/other git notes merge -s ours refs/notes/other git notes merge -s theirs refs/notes/other git notes merge -s cat_sort_uniq refs/notes/other # Quiet merge git notes merge -q refs/notes/other # Verbose merge git notes merge -v refs/notes/other ``` ### Merge Strategies | Strategy | Behavior | |----------|----------| | `manual` | Interactive conflict resolution (default) | | `ours` | Keep local note on conflict | | `theirs` | Keep remote note on conflict | | `union` | Concatenate both notes | | `cat_sort_uniq` | Concatenate, sort lines, remove duplicates | ### Resolve Merge Conflicts ```bash # After merge conflict with manual strategy # Resolve conflicts in .git/NOTES_MERGE_WORKTREE/ # Commit resolved merge git notes merge --commit # Abort merge git notes merge --abort ``` ## Configuration Options ### Git Config ```bash # Set default notes ref git config notes.displayRef refs/notes/reviews # Display multiple notes refs git config --add notes.displayRef refs/notes/testing # Set merge strategy for notes git config notes.mergeStrategy union # Set merge strategy for specific namespace git config notes.reviews.mergeStrategy theirs # Preserve notes during rebase git config notes.rewrite.rebase true # Preserve notes during amend git config notes.rewrite.amend true # Set rewrite mode git config notes.rewriteMode concatenate ``` ### Sample .gitconfig ```gitconfig [notes] displayRef = refs/notes/reviews displayRef = refs/notes/testing mergeStrategy = union [notes "reviews"] mergeStrategy = theirs [notes.rewrite] rebase = true amend = true ``` ## Workflow Examples ### Code Review Tracking ```bash # Mark commit as reviewed git notes --ref=reviews add -m "Reviewed-by: Alice <[email protected]>" abc1234 # Add review comments git notes --ref=reviews append -m "Consider extracting helper function" abc1234 # View review status git log --notes=reviews --oneline # Mark as approved git notes --ref=reviews add -f -m "APPROVED by Alice" abc1234 ``` ### Test Results Annotation ```bash # Record test pass git notes --ref=testing add -m "Tests passed: 2024-01-15 Platform: Linux x64 Coverage: 85%" abc1234 # Record test failure git notes --ref=testing add -m "FAILED: Integration tests See: https://ci.example.com/build/123" def5678 # View test status across commits git log --notes=testing --oneline ``` ### Audit Trail ```bash # Add audit note git notes --ref=audit add -m "Security review: PASSED Reviewer: Security Team Date: 2024-01-15 Ticket: SEC-456" abc1234 # Query audit status git log --notes=audit --grep="Security review" ``` ### Sharing Notes ```bash # Push notes to remote git push origin refs/notes/reviews # Fetch notes from remote git fetch origin refs/notes/reviews:refs/notes/reviews # Push all notes refs git push origin 'refs/notes/*' # Fetch all notes refs git fetch origin 'refs/notes/*:refs/notes/*' ``` ### Bulk Operations ```bash # Add notes to all commits by author in date range git log --format="%H" --author="Alice" --since="2024-01-01" | \ while read sha; do git notes add -m "Author verified" "$sha" done # Remove notes from range of commits git log --format="%H" HEAD~10..HEAD | xargs git notes remove --ignore-missing ```
Name Size