Git-native CLI for versioning AI Skill packages: prompts, schemas, golden tests, and release artifacts.
Project description
sit
Git-native versioning for AI Skill packages.
sit adds a semantic layer on top of Git for AI Skills — prompts, schemas, golden tests, runners, and release artifacts. It classifies changes by risk, generates reviewer-ready diffs, and gates commits and releases.
Why sit?
| Pure Git | sit | |
|---|---|---|
| Prompt change | +13 -2 lines |
"Prompt changed (+13 -2); headings: Core Rule, Workflow" |
| Schema update | raw JSON diff | "breaking" vs "review-required" classification |
| Golden tests | manual or none | sit test . runs stored cases; --run calls your runner |
| Version bump | gut feeling | risk-based gate: patch/minor/major suggested by change type |
| PR review | read every file | sit pr-summary generates structured Markdown |
Install
pip install sit-toolkit
sit --version
Python 3.10+ required. Or install from source:
git clone https://github.com/OpenRaiser/SitHub.git
cd SitHub
pip install -e .
Quick Start
# Create a new Skill package
sit init my-skill
cd my-skill
# Or standardize an existing project
cd /path/to/existing-project
sit standardize .
# Validate and test
sit validate .
sit test .
# See what changed
sit diff HEAD~1..HEAD
# Generate a PR summary
sit pr-summary HEAD~1..HEAD
# Release with a version gate
sit release minor . --bundle
Commands
| Command | What it does |
|---|---|
sit init <name> |
Create a new Skill package |
sit standardize . |
Convert an existing project into a standard Skill package |
sit onboard . |
Conservatively add sit files to a SKILL.md project |
sit doctor . |
Check onboarding readiness |
sit validate . |
Validate manifest, schemas, and golden cases |
sit test . |
Run golden tests |
sit test . --run |
Run cases through your configured runner |
sit diff A..B |
Semantic diff for Git refs |
sit diff A..B --prompt |
Include prompt/reference text diff |
sit pr-summary A..B |
Generate PR-ready Markdown |
sit report . --compare A..B |
Generate Markdown/JSON/HTML report |
sit ci-summary . --compare A..B |
Generate GitHub Actions summary |
sit deps check . |
Check deps.yaml dependencies |
sit commit -m "..." |
Validate/test/version-gate before commit |
sit release minor . --bundle |
Bump version, tag, and write release bundle |
Git passthrough: sit add, sit push, sit pull, sit branch, sit checkout, sit log.
Package Layout
my-skill/
skill.yaml # manifest
prompts/system.md # prompt files
schemas/ # input/output JSON schemas
tests/golden.jsonl # golden test cases
scripts/run_case.py # optional runner
assets/ # scanned by semantic diff
references/ # scanned by semantic diff
CHANGELOG.md
Semantic Diff Example
Skill Diff
Baseline: paper-webpage-builder@0.3.0
Current: paper-webpage-builder@0.4.0
Risk: review-required
Suggested version bump: minor
[prompt]
- PROMPT changed skill: SKILL.md -> SKILL.md (+13 -2; headings: Paper Webpage Builder, Core Rule, Workflow)
[script]
- SCRIPT changed scripts/scan_paper.py (review required; cover with runner or targeted tests)
[reference]
- REFERENCE changed references/design_principles.md (+27 -3; headings: Design Principles, Fit the Paper)
CI Integration
sit init, sit standardize, and sit onboard create a GitHub Actions workflow:
sit validate "$SIT_PACKAGE_DIR"
sit test "$SIT_PACKAGE_DIR"
sit test "$SIT_PACKAGE_DIR" --run
sit ci-summary "$SIT_PACKAGE_DIR" --compare origin/main..HEAD >> "$GITHUB_STEP_SUMMARY"
Agent Integration
sit can be called by AI agents in three ways:
Python SDK
from sit.sdk import Sit
s = Sit("./my-skill-package")
info = s.info() # sit.info.v1 contract
test = s.test() # sit.test.v1 contract
diff = s.diff("./old") # sit.diff.v1 contract
pr = s.pr_summary("./old") # sit.pr_summary.v1 contract
report = s.report(compare="./old") # sit.report.v1 contract
MCP Server
Install with MCP support and run the stdio server:
pip install 'sit-toolkit[mcp]'
sit-mcp-server
Or configure in your MCP client (e.g., Claude Desktop):
{
"mcpServers": {
"sit": {
"command": "sit-mcp-server"
}
}
}
Exposes 7 tools: sit_info, sit_validate, sit_test, sit_diff, sit_pr_summary, sit_report, sit_doctor.
LLM Tool-Use Schema
from sit.tool_use import get_tools_openai, get_tools_anthropic
# For OpenAI
tools = get_tools_openai()
response = client.chat_completion(messages=..., tools=tools)
# For Anthropic Claude
tools = get_tools_anthropic()
response = client.messages.create(messages=..., tools=tools)
Research
sit has been validated through multi-agent experiments on AI Skill packaging workflows. See:
License
Apache-2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sit_toolkit-0.20.0.tar.gz.
File metadata
- Download URL: sit_toolkit-0.20.0.tar.gz
- Upload date:
- Size: 69.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85ce673f74cbaed0acc7e6b74392208ef87c83e448bc15fbc76664d939968438
|
|
| MD5 |
a2c30c54e3656aac4d8e6b69af1a5517
|
|
| BLAKE2b-256 |
81c9967a88a63567dbca194e2df3f45ba6c055fa14d05320e578dcf5066c260b
|
Provenance
The following attestation bundles were made for sit_toolkit-0.20.0.tar.gz:
Publisher:
release.yml on OpenRaiser/SitHub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sit_toolkit-0.20.0.tar.gz -
Subject digest:
85ce673f74cbaed0acc7e6b74392208ef87c83e448bc15fbc76664d939968438 - Sigstore transparency entry: 1606359388
- Sigstore integration time:
-
Permalink:
OpenRaiser/SitHub@8160bba4feacaeaf5aff94788e191971c45dcb54 -
Branch / Tag:
refs/tags/v0.20.0 - Owner: https://github.com/OpenRaiser
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8160bba4feacaeaf5aff94788e191971c45dcb54 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sit_toolkit-0.20.0-py3-none-any.whl.
File metadata
- Download URL: sit_toolkit-0.20.0-py3-none-any.whl
- Upload date:
- Size: 65.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39f5252924d703f7f431b946b7adc1f263282a67e51f762134d3a1905f671c4b
|
|
| MD5 |
cfbe913c8bc280d2c40c318c657470bf
|
|
| BLAKE2b-256 |
7549256b56bd6693df1fb74bc73ac291b3a3c06b51a1972ebdee016db144fb03
|
Provenance
The following attestation bundles were made for sit_toolkit-0.20.0-py3-none-any.whl:
Publisher:
release.yml on OpenRaiser/SitHub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sit_toolkit-0.20.0-py3-none-any.whl -
Subject digest:
39f5252924d703f7f431b946b7adc1f263282a67e51f762134d3a1905f671c4b - Sigstore transparency entry: 1606359530
- Sigstore integration time:
-
Permalink:
OpenRaiser/SitHub@8160bba4feacaeaf5aff94788e191971c45dcb54 -
Branch / Tag:
refs/tags/v0.20.0 - Owner: https://github.com/OpenRaiser
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8160bba4feacaeaf5aff94788e191971c45dcb54 -
Trigger Event:
push
-
Statement type: