About sem-integration
A reference skill for night-market skills that consume git diff output, describing how to detect sem, use semantic diffs, and fall back to git-based output. It also covers impact analysis and normalizing fallback results to the same entity schema.
Key features
- 01Session-cached sem availability check
- 02Semantic diff using sem
- 03Git diff fallback when sem is absent
- 04Impact analysis with sem or grep
- 05Normalize fallback output to sem schema
Use cases
- 01Add diff consumption to a night-market skill
- 02Keep diff processing working without sem
- 03Trace impact of changes across callers
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ athola/ claude-night-market --skill sem-integrationAfter installing, type/sem-integrationin Claude Code to confirm it loaded.
Bundled filesmodules/detection.mdmodules/fallback.md
Details
From the project READMEsem Integration
Foundation patterns for using sem semantic diffs in night-market skills.
When To Use
Consult this skill when building or modifying skills that consume git diff output. It provides the detection, installation, and fallback patterns.
When NOT To Use
- Direct sem CLI usage (just run
sem diffyourself) - Skills that don't consume diff output
Detection Pattern
Check sem availability once per session:
# Detection (cache per session)
_sem_check() {
local cache="${CLAUDE_CODE_TMPDIR:-/tmp}/sem-available"
if [ -f "$cache" ]; then
cat "$cache"
return
fi
if command -v sem &>/dev/null; then
echo "1" | tee "$cache"
else
echo "0" | tee "$cache"
fi
}
When _sem_check returns 0, offer installation.
See modules/detection.md for install-on-first-use
logic and platform-specific commands.
Semantic Diff Pattern
Primary path (sem available):
sem diff --format json <baseline>
Fallback path (sem unavailable):
git diff --name-only --diff-filter=A <baseline>
git diff --name-only --diff-filter=M <baseline>
git diff --name-only --diff-filter=D <baseline>
git diff --name-only --diff-filter=R <baseline>
See modules/fallback.md for output normalization
that produces the same entity schema from both paths.
Impact Analysis Pattern
Primary path (sem available):
sem impact --json <file-or-entity>
Fallback path (sem unavailable): use rg/grep to trace
callers by filename. See modules/fallback.md.
Exit Criteria
-
_sem_checkresult cached per session at${CLAUDE_CODE_TMPDIR:-/tmp}/sem-available; detection command runs at most once per session regardless of how many skills invoke it - When sem is unavailable, install offer presented and fallback
path used automatically (
git diff --name-only --diff-filter=variants); no silent failure - Fallback output normalized to the same entity schema as sem
JSON output per
modules/fallback.md; consumers downstream see the same structure from both paths - Skills consuming this integration declare
dependencies: [leyline:sem-integration]in frontmatter rather than reimplementing the detection pattern