agent/skills/sem/SKILL.md
Semantic version control analysis. Use sem to understand actual code changes vs cosmetic/stylistic modifications, identify impacted entities, and review diffs at the semantic level.
npx skillsauth add knoopx/pi semInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyzes code changes at the semantic level — distinguishes meaningful behavioral modifications from cosmetic or stylistic changes.
sem diff HEAD~1 # Show semantic diff of last commit
sem diff --commit <hash> # Show changes in a specific git commit
sem impact parseDate # See what depends on a changed function
sem impact parseDate --tests # See tests affected by entity changes
Changes are marked with symbols:
~ cosmetic — formatting, whitespace, style updates → style: or format: commit type∆ modified — actual behavioral change → feat:, fix:, refactor:+ added — new function, class, or type → feat:- removed — deleted entity → refactor:, chore:When working with jj, convert change IDs to git commit hashes first:
# Step 1: Get the git commit hash for a jj change ID
jj log -r <change-id> -T 'commit_id' --no-graph
# Example: jj log -r nlukrrtnmlnz -T 'commit_id' --no-graph
# Output: 45a1bf3ef4cb1c68828a08558583281f9c539751
# Step 2: Use that hash with sem
sem diff --commit 45a1bf3ef4cb1c68828a08558583281f9c539751
# Step 3: Verify you have the right commit
jj show <change-id>
jj diff --name-only -r <change-id>
# Step 4: Write accurate commit description based on semantic changes
jj desc -r <change-id> -m "<type>(<scope>): <description>"
Before describing commits: Run sem diff HEAD~1 to see the true scope of changes. If all changes are ~ (cosmetic), use style: or format:. If ∆ exists, describe the actual behavior change.
Large diffs with few semantic changes: A diff may touch 80 files but sem might show only 3 functions modified — most changes are stylistic. Focus your commit description on that.
sem before writing commit messages — it reveals the true scopejj log -r <change-id> -T 'commit_id' --no-graphsem impact to understand downstream effects before making changestools
Inform the user what is happening — skip passive lookups
development
Renders markdown to self-contained HTML with a custom dark stylesheet and opens in browser. Use when previewing markdown documents, generating styled HTML from README or report files.
testing
Programmatic hunk selection for Jujutsu — split, commit, or squash specific hunks without interactive prompts. Use when making partial commits or selective squashes.
content-media
Manage version control with Jujutsu (jj) — no staging area, immediate changes, smart rebasing. Use when navigating history, squashing, or pushing to Git remotes.