Contributing
How to contribute to Stygian: issues, code changes, the test suite and the design principles behind the theme.
Stygian is a community theme. Issues, bug reports, documentation fixes
and feature implementations are all welcome. The repository root has a
CONTRIBUTING.md with the full workflow; this page is the short
version.
Reporting issues
Use the issue templates:
- Bug report: include the Jekyll version, the theme version (the
?v=on the stylesheet or the commit SHA), a minimal reproduction and the expected versus actual behavior. - Feature request: describe the use case, not just the feature.
Features that close a gap against just-the-docs are prioritized
(see
GAP-ANALYSIS.md).
Development setup
git clone https://github.com/ksauraj/stygian
cd stygian
bundle install
bundle exec jekyll build # builds the demo site
bundle exec rake spec # runs the smoke suite
The spec suite builds the demo site and asserts output invariants: single H1 per page, parseable search index, JSON-LD presence, and now the navigation tree and compatibility config. Run it before opening a pull request.
Submitting changes
- Branch from
main:fix/...orfeat/.... - Make the change; keep it surgical. This theme is a docs engine: no portfolio UI, no demo personas, no emoji in site copy.
- Add or update a spec for the behavior.
- Bump the asset version in
_includes/head.htmland_includes/scripts.html(?v=N) so Pages never serves stale assets, and note the change inCHANGELOG.md. - Open a pull request against
mainwith the template filled in. - CI runs the spec suite on Ruby 3.2 and 3.3; it must pass.
Design principles
- Docs first. The theme is an engine for markdown collections: sidebar navigation, prev/next, search. Anything that is not documentation infrastructure needs a strong reason to exist.
- Zero plugins, zero frameworks. Everything ships as Liquid includes, one CSS file and one vanilla JS file. It must keep working on GitHub Pages without a whitelist.
- Compatibility over convention. Just-the-docs config keys, front
matter and class names keep working; the native
stygian:block wins when both are set. - Reduced motion is a first-class user. Every effect has a
prefers-reduced-motionfallback. - Accessible by default. Semantic landmarks, aria labels, keyboard search and visible focus states are part of the theme, not add-ons.
Code of conduct
Contributors are expected to follow the Contributor Covenant, published
in the repository as CODE_OF_CONDUCT.md.