원클릭으로
add-event-instance
Add a new instance of an existing (recurring) event — instance, spirit, tree, nodes, items, IAPs and shops.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Add a new instance of an existing (recurring) event — instance, spirit, tree, nodes, items, IAPs and shops.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Add or edit a cosmetic/item in the dataset — fields, types, groups, image links, ids and guids.
Add a new Season (tier-format spirit trees) — season entry, guide + season spirits, tier-based spirit trees, tiers, nodes, items, IAPs and shops.
Add a Special Visit (Returning Spirits) — visit entry, per-spirit join entries, spirit trees, nodes and items.
Add a Traveling Spirit
| name | add-event-instance |
| description | Add a new instance of an existing (recurring) event — instance, spirit, tree, nodes, items, IAPs and shops. |
| disable-model-invocation | true |
Task: Add a new event instance (e.g. "Days of Color 2026") to the data files, wiring up every related entity: event instance → event, event instance spirit + spirit tree + nodes, items, IAPs, and shops.
The user provides:
Days of Color).date, endDate as YYYY-MM-DD).src/assets/** only. Never touch generated files in /assets/**.guid with npx nanoid -s 10 (length 10). guids must be globally unique — the build aborts on duplicates.YYYY-MM-DD strings resolved on America/Los_Angeles. Don't convert to UTC.src/interfaces/*.interface.ts before writing each entity and match the actual field names. The shapes below are a guide, not a substitute for checking.// #region <Event> (<year>) grouping of the neighbouring entries in each file. Some files use one-line objects (see Days of Color 2025), some multi-line — follow the file's local style.A "top-level folder under src/assets/" → one output file; subfolders are organizational only. Each recurring event has a per-event file in several folders, but file names are not always the event slug. For example, Days of Color items live in items/events/days-of-rainbow.jsonc (legacy name), while its nodes/shops/iaps use days-of-color.jsonc, and all event spirit trees share one file.
For the target event, find the existing file in each folder (search by the event's region comment / existing guids, not by guessing the slug):
| Entity | Location |
|---|---|
| Event | src/assets/events/<file>.jsonc |
| Event instances | src/assets/event-instances/<file>.jsonc |
| Event instance spirits | src/assets/event-instance-spirits/<file>.jsonc |
| Spirit trees | src/assets/spirit-trees/events/events.jsonc (single shared file) |
| Nodes | src/assets/nodes/events/<file>.jsonc |
| Items | src/assets/items/events/<file>.jsonc (may be a legacy name) |
| IAPs | src/assets/iaps/events/<file>.jsonc |
| Shops | src/assets/shops/events/<file>.jsonc |
| Event/IAP-guide spirits | src/assets/spirits/events/events.jsonc (single shared file) |
If a brand-new event (no existing files), create <event-slug>.jsonc in each folder and add the event itself to src/assets/events/. Otherwise append to the existing files.
If the user gave the data directly, use it. Otherwise open the provided wiki link with Playwright MCP (browser_navigate then browser_snapshot) and read:
c, hearts h, event currency ec, etc.).Confirm anything ambiguous with the user before writing.
In-game-currency items not sold by the main guide: the main spirit tree (Step 3) covers items bought with in-game currency from the event's primary guide. If some in-game-currency items are sold elsewhere — a different vendor/box/mannequin, an item list, a separate tree, etc. — there is no single right way to model it, so ask the user how to represent them before writing (e.g. a type: "Object" shop backed by an item-lists/events/<file>.jsonc item list whose IItemListNodes carry the ICost, a second event instance spirit + tree, or something else). IAPs (real-money packs) always follow Steps 5–6 regardless.
Append the instance's new items to the items file (Step 0), following the add-item
skill for the item data model, ids, image links and conventions. Reuse existing guids for any
returning item — do not duplicate. Event-specific notes:
season on event items (season is only for season trees and IAPs).type: "Special" filler nodes — include them if the tree has them.Create the tree for this instance's spirit.
// #region <Event> (<year>) block to the nodes file. Each node is an INode: guid, optional item (item guid), cost fields from ICost (c/h/sc/ec/…), and links n/nw/ne to child node guids. The root node is the one no other node points to; build the layout from the wiki, applying the costs from Step 1 and item references from Step 2.spirit-trees/events/events.jsonc under the event's region: { "guid": "<new-tree-guid>", "node": "<root-node-guid>" }.Append to the event-instance-spirits file an IEventInstanceSpirit:
guid: new.tree: the new tree guid from Step 3.spirit: reuse the previous instance's spirit guid by default (recurring events keep the same guide spirit across years — verify by looking at the prior instance's spirit). If the user indicates a different/new spirit, ask which, and create it in spirits/events/events.jsonc (type: "Event") if it doesn't exist.Append IAPs to the iaps file under a new region. For each pack (IIAP): guid (new), name, price (USD), optional bundled currency c/sc/sp, and items (array of item guids).
returning flag."returning": true. Reuse the item guids from the original pack.Append shops to the shops file under a new region. Each IShop has type (Store | Spirit | Object), optional name, and iaps (array of IAP guids). Group IAPs into shops by these rules:
Store shop ({ "type": "Store", "iaps": [...] }).spirits/events/events.jsonc named like "<Event> IAP Guide", and/or the prior instance's recurring shop was type: "Spirit" with a spirit reference.
Spirit shop referencing that guide: { "type": "Spirit", "spirit": "<guide-guid>", "iaps": [...] }.Object shop named "IAP Prop Box": { "type": "Object", "name": "IAP Prop Box", "iaps": [...] }.Collect the new shop guids for Step 7.
IEventInstance to the end of the instances array in the event-instances file:
guid: new.date, endDate: from the user.spirits: ["<event-instance-spirit-guid from Step 4>"].shops: array of the shop guids from Step 6.name/shortName: only if this instance's name differs from earlier ones (older Color instances set "Days of Rainbow"; recent ones omit it). Omit when it matches the event._calendar: add if the user provides a calendar link (see existing instances for shape).calculatorData (ICalculatorData): ask the user, proposing this default — dailyCurrencyAmount: 5 plus one timedCurrency entry of amount: 15 (a new guid, description: "Bonus event currency") whose date/endDate match this instance's date/endDate. Apply the user's answer; only add the key if there is event currency to model. Shape:
"calculatorData": {
"dailyCurrencyAmount": 5,
"timedCurrency": [
{ "guid": "<new>", "date": "<instance date>", "endDate": "<instance endDate>", "amount": 15, "description": "Bonus event currency" }
]
}
number field — although IEventInstance.number is typed as required, the resolver already handles setting this value.instances array in src/assets/events/<file>.jsonc.npm run json-build — it must succeed (it enforces globally unique guids and array-shaped files). Fix any duplicate-guid or syntax errors.instances includes the new instance guid; instance spirits/shops point to the new entities.tree → the new tree; tree node → an existing root node; every node link (n/nw/ne) and item guid exists.items guid and every shop iaps guid exists; recurring IAPs have "returning": true.npm test (requires a build first) to parse and resolve the full dataset.