원클릭으로
ose-homebrew-maintainer
Sync homebrew class abilities with OSE house rules source documents.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Sync homebrew class abilities with OSE house rules source documents.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | ose-homebrew-maintainer |
| description | Sync homebrew class abilities with OSE house rules source documents. |
| applyTo | homebrew+ose+rules+sync |
| allowed-tools | [] |
This skill teaches an AI to maintain the homebrew/homebrew.json data file in the OSE Statblock Importer for Foundry VTT v14 module. The data file contains Apostol's personal OSE house rules codified as class abilities — both new abilities added to classes and modifications to existing compendium abilities. When the source house rules documents are updated, this skill guides the AI through identifying what changed and applying those changes to the data file.
The canonical source of truth lives at:
C:\git\lifestyle\rpg_projects\houserules\old-school-essentials\
OSE_HOUSE_RULES.md — full rules text
CHANGELOG.md — version history with dates and change summaries
The target data file is:
modules/ose-statblock-importer/homebrew/homebrew.json
The homebrew.json file tracks the source version it was last synced against:
{
"sourceVersion": "1.3.5",
"sourceDate": "2026-06-08",
"sourceFile": "OSE_HOUSE_RULES.md",
"sourceChangelog": "CHANGELOG.md"
}
sourceVersion — the SemVer version from CHANGELOG.md that the data reflectssourceDate — the date of the last changelog entry that was appliedOpen CHANGELOG.md and read the most recent version header. Example:
## 2026-01-18 (v1.3.5)
Extract:
version: 1.3.5date: 2026-01-18Read sourceVersion from homebrew.json. If it matches, no sync is needed. If the source is newer, identify which changelog entries have been added since the last sync.
For each changelog entry newer than the last sync, read the change description. Changelog entries use these prefixes:
| Prefix | Meaning | Action |
|---|---|---|
MAJOR: | Breaking mechanical changes to rules or class features | Full rewrite of affected abilities |
MINOR: | Backward-compatible additions or new options | Add new abilities or modify existing ones |
PATCH: | Wording/formatting only | Update text verbatim without mechanical changes |
For each changelog entry, search OSE_HOUSE_RULES.md for the relevant section (e.g., "### Cleric", "### Fighter"). Read the full, unabridged ability text from the source document.
CRITICAL — Full Text Rule: The ability text MUST include the complete text from the source document. This is not a summary or a quick-reference — it is the authoritative rule text that players and DMs will read in Foundry. Every sentence, every mechanical detail, every condition, every edge case must be present.
What you MUST preserve:
What you MUST remove or adjust:
### Cleric, etc.) — the ability name field already identifies it> 👉🏼 or > 🎲 (editorial notes for the GM, not rules text)Timeless wording: Every ability must read as a definitive, standalone rule. Never write "this was changed from..." or "unlike the standard rule..." or "instead of the normal...". Just state the rule as it exists. The reader should not need to know the original rule to understand the homebrew.
Bad (summarized):
When you reduce a foe to 0 HP with a melee attack, make one additional melee attack against another engaged opponent. Gain Cleave 2× at 5th level, 3× at 9th level, 4× at 13th level. At 9th level, may spend one Cleave to move up to 10 ft. and engage a new enemy.
Good (full text):
When you reduce a foe to 0 HP with a melee attack, you may immediately make one additional melee attack against another opponent you are engaged with. This additional attack uses the same weapon and modifiers as the original attack. The number of Cleave attacks you can make per round increases as you gain levels: 2 at 5th level, 3 at 9th level, and 4 at 13th level. At 9th level and above, you may expend one Cleave attempt to move up to 10 feet and engage a new enemy before making the Cleave attack. You cannot Cleave off a Cleave attack.
For each ability found in the source section, determine its type:
An ability that does not exist in the OSE Advanced Fantasy compendium. Add to newAbilities array:
{
"name": "Cleave",
"text": "Verbatim text from source...",
"icon": "systems/ose/assets/melee.png",
"minimumLevel": 1
}
The minimumLevel field indicates the character level at which this ability becomes available. Default is 1 for abilities available from character creation. Set to the level specified in the source rules (e.g., Paladin's Smite Evil at level 5). Currently all abilities are applied regardless of level, but the field is required for future level-gating.
An ability that replaces or changes an existing compendium ability. Add to modifications array:
{
"compendiumName": "Original compendium ability name",
"newName": "New name (same or different)",
"newText": "Full replacement text — see timeless wording rule below",
"icon": "systems/ose/assets/...",
"minimumLevel": 1
}
The compendiumName must match the exact name of the ability in the ose-advancedfantasytome.abilities compendium. Reference the CLASS ABILITY CATALOG in the ose-statblock-writer skill for valid names.
Timeless wording for modifications: Never mention what the original rule was or what changed. The newText must read as a definitive, self-contained rule. Do NOT write:
Just state the rule as it is. The fact that it's in the modifications array (with a compendiumName matching an existing ability) is how the system knows it replaces something. The text itself should need no context from the original.
An ability that was in the previous homebrew data but has been removed from the source. Delete its entry from the appropriate array.
sourceVersion and sourceDate to match the latest changelog entrygeneratedAt to the current datenewAbilities and modifications arraysIcons for homebrew abilities can use two sources:
systems/ose/assets/...)These are the built-in OSE system icons. Use them as defaults when no better Foundry core icon fits:
| Category | Icon Path | Use For |
|---|---|---|
combat | systems/ose/assets/melee.png | Attack modifiers, weapon techniques, damage bonuses |
defense | systems/ose/assets/shield.png | AC bonuses, resistances, immunities, saves, parry |
magic | systems/ose/assets/default/spell.png | Spellcasting modifications, arcane abilities, illusions |
divine | systems/ose/assets/splash.png | Holy/divine powers, turning, sanctified abilities |
health | systems/ose/assets/heart_full.png | Healing, HP modifications, disease immunity, death saves |
rest | systems/ose/assets/heart_empty.png | Recovery, exhaustion, rest-related |
movement | systems/ose/assets/charge.png | Speed, charging, dodging, mobility |
stealth | systems/ose/assets/back.png | Hiding, backstab, camouflage, unnoticed |
ranged | systems/ose/assets/missile.png | Ranged attacks, projectiles, thrown weapons |
crafting | systems/ose/assets/default/bag.png | Item creation, crafting, equipment, poisoncraft |
social | systems/ose/assets/gold.png | Diplomacy, nobility, wealth, social influence |
luck | systems/ose/assets/treasure.png | Luck, fortune, rerolls, treasure, gems |
dragon | systems/ose/assets/dragon.png | Dragon-related abilities |
weapon | systems/ose/assets/default/weapon.png | Weapon-specific abilities, finesse |
armor | systems/ose/assets/default/armor.png | Armor-related |
equipment | systems/ose/assets/default/item.png | Equipment, generic items |
heavy_weapon | systems/ose/assets/twohanded.png | Two-handed weapons |
blunt | systems/ose/assets/blunt.png | Blunt weapons, crushing |
slow | systems/ose/assets/slow.png | Slow effects, hindrance |
reload | systems/ose/assets/reload.png | Reloading, ammunition |
brace | systems/ose/assets/brace.png | Bracing, stability, sure-footed |
perception | systems/ose/assets/default/ability.png | Senses, detection, awareness, knowledge |
nature | systems/ose/assets/default/ability.png | Nature, wilderness, animals, terrain |
generic | systems/ose/assets/default/ability.png | Fallback — anything not covered above |
icons/...)Foundry VTT ships with thousands of specific, high-quality icons organized by category. These are what the OSE compendium abilities actually use.
We've mined the OSE Advanced Fantasy compendiums and cataloged every icons/ path the OSE developers chose for each ability theme. This catalog lives in two places:
data/ose-compendium-core-icons.json — complete list of ~100 unique icons with usage counts and example abilitieshomebrew.json → iconMap._foundryCoreIcons — organized by theme category with proven pairingsIcon selection priority:
_foundryCoreIcons (combat, defense, perception, magic, divine, stealth, nature, environment, movement, social, equipment, ranged, mounted)systems/ose/assets/...) if no Foundry core icon fits{
"generatedAt": "2026-07-02",
"sourceVersion": "1.3.5",
"sourceDate": "2026-06-08",
"sourceFile": "OSE_HOUSE_RULES.md",
"sourceChangelog": "CHANGELOG.md",
"description": "...",
"iconMap": { ... },
"classes": {
"featureClassKey": {
"display": "Display Name",
"icon": "systems/ose/assets/...",
"newAbilities": [
{ "name": "...", "text": "...", "icon": "..." }
],
"modifications": [
{ "compendiumName": "...", "newName": "...", "newText": "...", "icon": "..." }
]
}
}
}
The featureClassKey must match the key used by OSEStatblockParser.FEATURE_CLASS_MAP:
| Class | featureClassKey |
|---|---|
| Cleric | cleric |
| Fighter | fighter |
| Magic-User | magic-user |
| Thief | thief |
| Drow | drow |
| Dwarf | dwarf |
| Duergar | duergar |
| Elf | elf |
| Gnome | gnome |
| Half-Elf | half-elf |
| Half-Orc | half-orc |
| Halfling | halfling |
| Svirfneblin | svirfneblin |
| Acrobat | acrobat |
| Assassin | assassin |
| Barbarian | barbarian |
| Bard | bard |
| Druid | druid |
| Illusionist | illusionist |
| Knight | knight |
| Paladin | paladin |
| Ranger | ranger |
When writing a modifications entry, the compendiumName must exactly match an ability name in the ose-advancedfantasytome.abilities compendium. To verify names:
data/ose-advanced-tome-ability-class-map.json — this maps feature classes to their compendium ability namesbyClass[featureClassKey] has an itemName fielditemName as the compendiumNameExample: For the Drow "Immunity to Ghoul Paralysis" modification:
byClass["drow"] in the class map{ itemName: "Immunity to Ghoul Paralysis", ... }"compendiumName": "Immunity to Ghoul Paralysis"When extracting ability text verbatim from OSE_HOUSE_RULES.md:
4-in-6, 1d3, +2, 30 ft., etc.> 👉🏼, > 🎲, > 👁️ blockquotes### Cleric, #### Subsection(see Low-Light Vision)compendiumName means the modification silently fails## 2026-02-15 (v1.4.0)
- MINOR: Cleric — Added Turn Constructs ability at 5th level.
- MINOR: Fighter — Cleave now allows movement between cleaves at 7th level (was 9th).
- PATCH: Dwarf — Hardy Growth wording clarified.
sourceVersion: 1.3.5 → needs update to 1.4.0### Cleric section, find "Turn Constructs" text → add as newAbilities### Fighter section, find updated Cleave text → update modifications entry for "Cleave"### Dwarf section, find updated Hardy Growth text → update modifications or newAbilities entrysourceVersion to "1.4.0", sourceDate to "2026-02-15", generatedAt to todayThe module setting "Apply Apostol's OSE Homebrew to Player Characters" controls whether applyHomebrewToActor() runs during statblock import:
characterSV in the statblockhomebrew.json is fetched and cached on first useability items with system iconsHomebrew re-applies when the import runs class-feature application:
SV → class features + homebrew (if setting on)Mode: Level-up → HD/SV + class features + homebrew; does not wipe inventoryMode: Partial; Fields: … → homebrew/features only if fields include features/hd/sv/class-related keysFor advancing a PC without redoing gear, prefer:
Name: Mode: Level-up; HD F3; SV F3
(with the character sheet open, or Apply To: Name). See ose-statblock-writer for the full import format.