Repository
- URL: https://github.com/shader-slang/slangpy
- Clone:
git clone --recursive --tags https://github.com/shader-slang/slangpy.git - Docs: https://slangpy.shader-slang.org/en/latest/
- Discussions: https://github.com/shader-slang/slang/discussions
- Discord: https://khr.io/slangdiscord
PR process
- Fork -> clone -> branch (
feature/description) - Implement, test, format (
pre-commit run --all-files) - Push to fork, create PR against
shader-slang/slangpy:main - PR requires review approval + CI pass
- Squash merge -- rewrite final commit message to be descriptive
Autonomous PR creation: Create PRs without asking for confirmation. If tests pass and changes are minimal, open the PR immediately via gh pr create. Include: what changed, why, and test results in the PR body. Only stop and notify the user if CI fails after 2 rerun attempts.
gh pr createvs REST — decided by the PR's base repo. Normal PRs (base =shader-slang/slangpy, including a head branch on theslang-coworkers/slangpyfork) → usegh pr create; it routes via GraphQL/App token, which has write on shader-slang. Only a cross-fork PR whose base is a contributor's fork must use REST —gh api -X POST repos/<owner>/slangpy/pulls -f head="slang-coworkers:<branch>" -f base="<their-branch>" …— becausegh pr create(GraphQL) gets the App token there and 403s; REST/repos/*gets thenv-slang-botuser PAT that can open it.
During review, push follow-up commits (don't rebase after PR creation). Sync with upstream via merge, not rebase:
git fetch upstream main
git merge upstream/main
git submodule update --recursive
CI
CI workflows in .github/workflows/:
| Workflow | Purpose |
|---|---|
ci.yml |
Main CI: configure, build, test on multiple platforms |
ci-latest-slang.yml |
Test against latest Slang compiler build |
ci-benchmark.yml |
Performance benchmarks |
wheels.yml / wheels-dev.yml |
Python wheel builds |
slangpy_torch.yml |
PyTorch integration tests |
claude.yml |
Claude-driven CI tasks |
Key CI commands:
gh run list --repo shader-slang/slangpy --workflow=ci.yml --limit 5
gh run view <id> --log-failed
gh run rerun <id> --failed
Issues
gh issue list --repo shader-slang/slangpy
gh issue view <number> --repo shader-slang/slangpy
gh issue create --repo shader-slang/slangpy --title "..." --body "..."
Conflict handling
On merge conflict:
- Identify conflicting files:
git diff --name-only --diff-filter=U - For conflicts in generated files: take
ourswhere the file is regenerated by a build step - For conflicts in source files: apply the change that is additive (preserves both sides) where possible
- If the correct resolution is ambiguous, stop and notify the user with the specific conflict
Related repositories
- Slang compiler: https://github.com/shader-slang/slang -- the Slang shading language compiler that SlangPy depends on
- slang-rhi: GPU abstraction layer wrapped by the SGL core layer
From project
CONTRIBUTING.md-- fork/clone/branch process, PR requirements, squash merge policy, sync instructionsAGENTS.md-- repository structure, CI system description.github/workflows/-- CI workflow definitions