-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing
Rules are plain Markdown with frontmatter — there's no build step and no TypeScript. Editing a rule is just editing a file.
packages/
bluetemberg-rules-<domain>/
package.json # name, version, "files": ["llm/"]
llm/
rules/
<rule-name>.md
Each packages/* directory is published independently to npm but lives and releases from this monorepo (npm workspaces).
---
description: One-line summary of what this rule enforces.
scope: '**'
---
# Rule title
Concise, actionable guidance the AI sees as always-on context.| Frontmatter | Meaning |
|---|---|
description |
One-line summary. Shown in tooling and transformed into each platform's description field. |
scope |
Glob(s) the rule applies to. '**' = always on. A single glob or an array. |
Keep rules short and imperative. They are passive context the assistant reads on every interaction — not documentation. See the Bluetemberg Writing Rules guide for style guidance.
- Edit (or create)
packages/bluetemberg-rules-<domain>/llm/rules/<rule-name>.md. - Update the Catalog page in this wiki and the pack's row in the README if you added or removed a rule.
- Open a PR titled
feat: add <rule-name> to <domain> pack(orfix:/docs:as appropriate).
Adding or removing a rule is a feat; it changes what consumers get. Tweaking wording in an existing rule is usually a fix or docs.
You don't bump the pack's version yourself — release-please derives the bump from your commit type and maintains a Release PR. Merging that PR publishes the changed packs.
Skills and agents are authored with the meta-skills — create-skill, create-agent, and create-pack — which scaffold the correct frontmatter, body, and sync.
Skills follow the deep-skill standard: a step-by-step ## Protocol (numbered ### Step N), at least one decision tree where a branch matters, at least one BAD/GOOD example with concrete code or output, a ## Completion checklist, and a ## When NOT to use. Aim for ~60–120 lines of actionable content, and benchmark against figma-to-code and config-echo. A skill that only restates what a base model already knows (a generic MUST/SHOULD list) is too thin — deepen it or it adds nothing.
Every kind has a research-backed quality bar in Authoring Standards (rules, agents, skills, guardrails, and the description/triggering rules). Claims that go beyond convention should be traceable to a primary source — see Research & Sources.
After adding or editing any pack content, run npm run generate:catalog then npm run validate: the validator now fails if catalog.json or the wiki catalog has drifted from the pack frontmatter.
-
Create
packages/bluetemberg-rules-<domain>/with apackage.json:{ "name": "bluetemberg-rules-<domain>", "version": "0.1.0", "description": "<Domain> rules for Bluetemberg — <short summary>.", "keywords": ["bluetemberg-pack", "rules", "<domain>"], "author": "Prototyp Digital", "license": "MIT", "repository": { "type": "git", "url": "https://github.com/prototypdigital/bluetemberg-rules.git" }, "files": ["llm/"] }The
bluetemberg-packkeyword is what makes the package discoverable viabluetemberg search. -
Add your rules under
llm/rules/. -
Register the pack with release-please so it gets versioned and published: add
"packages/<name>": {}torelease-please-config.jsonand"packages/<name>": "0.1.0"to.release-please-manifest.json. See Releasing for the one-time npm bootstrap. -
If the pack should be offered by the
bluetemberg initwizard, add a matching entry toRULE_COLLECTION_PRESETSin the bluetemberg repo (src/init/presets.ts) — that's a separate PR in that repo.
You don't need to publish to try a pack. From a scratch project that has Bluetemberg installed:
{
"source": "llm",
"extends": ["../path/to/bluetemberg-rules/packages/bluetemberg-rules-typescript"]
}bluetemberg syncInspect the generated .cursor/, .claude/, .github/ output to confirm the rules transform correctly for each platform.
- Conventional Commits for PR titles.
- One rule per file; filename = rule name (kebab-case).
- Keep
descriptionto a single line.