-
Notifications
You must be signed in to change notification settings - Fork 0
Developer & Contributor Guide
Everything you need to know to submit a theme, understand the project structure, and work with the tooling.
- Requirements
- Folder Structure
- Theme File Format
- Submitting a Theme
- Auto-Merge Rules
- themecmd Reference
- Common Issues
Before submitting, make sure you have:
- A GitHub account
- Basic knowledge of CSS
- Discord with BetterDiscord or Vencord installed for testing
- Git installed locally (recommended)
You must be an approved collaborator to have your theme auto-merged. If this is your first submission, open an issue introducing yourself and the repo owner will add you.
Each contributor owns one top-level folder. All your themes live inside it.
discord-themes/
├── Silver Themes/ ← Silverfox0338's themes
│ └── My Theme/
│ └── my-theme.css
├── 8Bit Themes/ ← 8Bit's themes
│ └── Dr. Stone/
│ └── dr.stone.css
└── Your Name Themes/ ← your folder (one per contributor)
└── Your Theme/
└── your-theme.css
Rules:
- Your folder name should follow the pattern
[Name] Themes - Each theme gets its own subfolder
- Only the folder owner may add, edit, or delete files inside it
- You cannot touch another contributor's folder
Every theme must be a .css file with a metadata header block at the top. This block is what populates the README automatically — so fill it out properly.
/**
* @name Theme Name
* @author Your Name
* @version 1.0.0
* @description A short description of your theme.
*/
/* your CSS below */| Field | Required | Description |
|---|---|---|
@name |
Yes | Display name shown in the README and Discord |
@author |
Yes | Your name (should match your folder's author entry) |
@version |
Yes | Semantic version — start at 1.0.0
|
@description |
Yes | One or two sentences describing the theme |
Missing any of these will cause the doctor check to warn and may affect how your theme appears in the README.
Users install themes via the raw GitHub URL rather than downloading the file. Once your theme is merged, the raw URL will be:
https://raw.githubusercontent.com/Silverfox0338/discord-themes/main/Your%20Name%20Themes/Your%20Theme/your-theme.css
You can get the exact URL for any file in the repo by opening it on GitHub and clicking the Raw button, or by running:
themecmd.cmd png-url "Your Name Themes\Your Theme\your-theme.css"To include a preview screenshot in the README, add a .png image inside your theme's subfolder:
Your Name Themes/
└── Cool Theme/
├── cool-theme.css
└── preview.png ← will be picked up automatically
- Fork the repository on GitHub
-
Create your folder under the root if it doesn't exist yet — e.g.
Your Name Themes/ -
Add your theme inside a subfolder with its
.cssfile and optional preview image -
Do not edit
README.md,theme-authors.json, or any files inscripts/or.github/— these are managed automatically -
Open a Pull Request against
main
Once your PR is open, the automated system takes over:
- Your changes are validated against the rules below
- If everything passes and you are a collaborator, the PR is auto-merged within seconds
- The README updates itself automatically after merge
The repo uses an automated validation system on every pull request. Here is exactly what is and isn't allowed.
| Scenario | Result |
|---|---|
| Collaborator adds/edits/deletes files in their own folder | Auto-merged |
| Collaborator adds files to a new, unregistered folder | Auto-merged, folder registered automatically |
| Scenario | Reason |
|---|---|
Any change to README.md
|
Auto-generated — edits are overwritten on merge |
Any change to theme-authors.json
|
Managed by the repo owner only |
Any change to scripts/, .github/, themecmd.cmd, THEMECMD.md
|
Protected tooling files |
| Editing or deleting files in another contributor's folder | Ownership violation |
| Modifying/deleting files in an unregistered folder | Can't verify ownership |
| Not a collaborator | Requires manual review by the repo owner |
When a PR is blocked, a comment is posted explaining exactly what went wrong and how to fix it.
If you aren't an approved collaborator yet, your PR will be flagged for manual review — it won't be auto-merged or auto-rejected. The repo owner is notified and will review it. Once approved, future PRs from you will auto-merge.
themecmd.cmd is a Windows command-line tool that wraps the README generation script. Run it from the repo root.
themecmd.cmdGenerates README.md from all theme metadata. Prompts for author info if any is missing.
themecmd.cmd -NoAuthorPromptGenerates README without prompting — uses existing metadata only.
themecmd.cmd doctorRuns a health check across all theme folders. Reports PASS, WARN, or FAIL for each theme.
themecmd.cmd png-url "Silver Themes\Legoshi\legoshi.png"Returns the raw.githubusercontent.com URL for an image in the repo. Useful for linking previews.
themecmd.cmd helpPrints all available commands and options.
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Failure or invalid command |
- Requires PowerShell (
pwshpreferred, falls back topowershell) - Always run from the repo root, not from inside a subfolder
- The generated
README.mdshould not be committed manually — the CI handles it on merge
Error: Path must be inside the repo root
You passed an absolute or escaped path to png-url. Use a repo-relative path:
themecmd.cmd png-url "Silver Themes\Legoshi\legoshi.png"Doctor reports WARN on my theme
Your CSS header is missing one or more required fields (@name, @author, @version, @description). Add them and re-run.
My PR was blocked for editing README.md
Remove README.md from your PR entirely. It regenerates automatically after merge — any changes you make to it will be overwritten.
My PR was blocked for touching another folder Each contributor owns exactly one folder. Changes to files you did not create are not allowed. If you need to suggest a fix to another theme, open an issue and tag the owner.
I'm not a collaborator and my PR is sitting there This is expected — the repo owner has been notified and will review manually. No action needed on your end.