diff --git a/skills/display-catalog/SKILL.md b/skills/display-catalog/SKILL.md new file mode 100644 index 0000000..2571dfd --- /dev/null +++ b/skills/display-catalog/SKILL.md @@ -0,0 +1,245 @@ +--- +name: display-catalog +description: > + Manages the MPM Display Catalog for MP.TV digital signage products. Trigger on: any MPTV/MP.TV + model number (M24, M29sw, MR16vs, MR29sws, IX55, EX49, EXD, LM, LC, MLP); "decode this model", + "decode the model number"; "generate description", "generate descriptions", "display description", + "purchase description", "procurement description"; "write up the [model]", "write up this display", + "write up this product"; "KB article", "Odoo article", "Odoo knowledge base"; "part number", + "catalog content", "display specs", "create a catalog entry", "add a new display", + "add this to the catalog", "what's the description for", "create a model number", + "new model number"; any MPM display family name: Bus display, Rail display, Indoor Extreme, + Semi-Outdoor, Outdoor Extreme, Outdoor Designer, LED Modular, LED Cabinet, Mobile Low Power, + E-Paper display. Use this skill rather than guessing -- it contains MPM's exact naming system, + panel lookup tables, controller specs, and description assembly formulas. +--- + +# MPM Display Catalog Skill + +You are helping MPM (Message Point Media) manage their MP.TV display catalog. MPM **manufactures** their +own digital signage displays -- they are not third-party products. All product information is derived from: + +1. The **MPTV model number** (which encodes the display's key attributes) +2. The **family pattern rules** (which define Prefix1, Model Type, Family Display Text, and Warranty Text per family) +3. The **panel description lookup table** (keyed by Family + Resolution) +4. The **controller description lookup table** (keyed by controller code) +5. The **description assembly formulas** (which combine the above into standard outputs) + +Always read from the reference files before generating any output. + +--- + +## Reference Files + +Always read these files before generating any output: + +- `references/panel-descriptions.md` -- Panel text lookup by Family + Resolution (covers M, MR, MLP, IX, EX, I, E, EXD, LM, LC) +- `references/controller-descriptions.md` -- Controller full description text AND pre-parsed structured spec table for KB articles +- `references/description-formulas.md` -- Family Pattern Rules table, Part Number, Display Description, Purchase Description formulas, and KB Article HTML fill guide +- `assets/KB-Article-Template.html` -- The master HTML template to follow for every KB article + +Also consult the **MPTV Model Naming System** (provided in your context or uploaded as `MPTV Model Naming System.md`) for full model number decode rules. + +--- + +## Two Entry Points + +### A) Decode an Existing Model Number + +When the user provides a model number (e.g., "M24", "MR27vs", "M29sw-Dual", "IX55", "EX49"): + +1. **Parse the model number** using the naming system rules: + - Extract Family (M, MR, MLP, IX, EX, EXD, I, LM, LC) + - Extract Size (numeric, in inches for LCD; mm ratio for LM/LC) + - Extract Suffix flags (v = portrait, s = secondary/SDI, w = wide 16:6, sw = super-wide 32:9, uw = ultra-wide 48:9, k = kiosk, t = touch, etc.) + - Extract Modifiers (Dual, LB, CB) + - Extract Generation (from context or ask if needed) + +2. **Derive Resolution and Aspect** from the suffix flags: + - No suffix = 16:9 landscape + - `v` = 9:16 portrait (swap width/height of standard res) + - `sw` = 32:9 super-wide + - `uw` = 48:9 ultra-wide + - Use the Model Bible data or naming doc to confirm resolution for each size/family combo if uncertain + +3. **Determine Controller** from the suffix: + - No `s` suffix = Intelligent (MP-series controller; ask which one if not specified, or default to current-gen MP205 for new models) + - `s` suffix = Secondary (SDI controller for M/MR families, USB for MLP) + +4. **Look up Family Pattern** in `references/description-formulas.md` Section 0 for the matching Family Code + +5. **Look up Panel Text**: Read `references/panel-descriptions.md`, find the row matching [Family] + [Resolution] + +6. **Look up Controller Text**: Read `references/controller-descriptions.md`, find the row matching the controller code + +7. **Check for missing data** -- if step 4 or 5 returns no match, trigger the Missing Data Interview (see below) + +8. **Assemble all outputs** using the formulas in `references/description-formulas.md` + +--- + +### B) Create a New Model Number (Interview Mode) + +When the user wants to add a new display to the catalog, conduct a structured interview to gather: + +1. **Vehicle / Environment type**: Bus (M), Rail (MR), Low Power/E-Paper (MLP), Indoor Standard (I), Indoor Commercial (IX), Semi-Outdoor External (E), Outdoor Extreme (EX), Outdoor Designer (EXD), LED Modular (LM), LED Cabinet (LC)? +2. **Screen size**: Diagonal in inches (or module footprint in mm for LM/LC) +3. **Aspect ratio**: Standard 16:9, Portrait 9:16 (v), Super-Wide 32:9 (sw), Ultra-Wide 48:9 (uw)? +4. **Controller**: Will it have an MP-series intelligent controller (which one?) or be a secondary SDI/USB display (s)? +5. **Special features**: Touch (t)? Kiosk (k)? Dual-sided (Dual)? Pole mount (p)? Flag mount (f)? +6. **Generation**: Is this a new generation of an existing model, or a brand new model (G1)? +7. **Client code**: Is this a standard product or a custom client build? + +Once you have all attributes: +- **Generate the model number** following the pattern: `[Family][Size][AspectSuffix][FeatureFlags][-Modifier][-GenOrClientCode]` +- **Look up panel and controller descriptions** from the reference files +- **If panel data is missing**, trigger the Missing Data Interview (see below) +- **Assemble all outputs** as in Entry Point A + +Always show the user the decoded/constructed model attributes before generating content, so they can confirm or correct. + +--- + +## Missing Data Interview & Self-Update + +When a Family + Resolution combination is not found in `references/panel-descriptions.md`, or when a controller is not found in `references/controller-descriptions.md`: + +### Step 1: Notify the user +Tell the user: "I don't have panel specifications on file for [Family + Resolution]. I'll ask a few questions to capture the specs, then add them to the reference library for future use." + +### Step 2: Conduct the panel interview +Ask the following questions (one message, structured): + +- **Panel brightness**: What is the NIT rating? (e.g., 350, 500, 700, 1500, 2000) +- **Cover glass**: What is the cover glass spec? (e.g., "3mm Anti-Reflective", "3+3mm Laminated Anti-Reflective/Anti-Glare", "6mm AR/AG", or "none" for indoor standard) +- **Impact rating**: What is the impact protection rating? (e.g., IK7, IK8, IK9, IK10, or N/A) +- **Panel type**: Standard LCD, High-Temperature Non-Darkening LCD, E-Paper, LED? +- **Automatic brightness**: Does the display have an automatic brightness control sensor? (Yes/No) +- **Special notes**: Any other notable panel attributes (e.g., reflective technology, supplemental backlight, front light) + +### Step 3: Construct the new panel description text +Using the collected data, assemble the panel text following the pattern of the closest existing entry in the same family section. Key patterns: +- M family: "Vehicle Rated [ResolutionLabel] ([Resolution]) [Aspect] LCD Display Panel with [NIT] NIT High Brightness LED Backlight, Automatic Brightness Control Sensor, Integrated [Glass] for [IK] Rated Impact Protection" +- MR family: Same as M but "Rail Rated" prefix and "3+3mm Laminated" glass +- IX family: "Commercial Rated [ResolutionLabel] ([Resolution]) [Aspect] LCD Display Panel with [NIT] NIT High Brightness LED Backlight, Integrated [Glass] for [IK] Rated Impact Protection" +- EX family: "Fully Outdoor Rated [ResolutionLabel] ([Resolution]) [Aspect] High Temperature Non-Darkening LCD Display Panel, with [NIT]+ NIT Sunlight Readable LED Backlight, Automatic Brightness Control Sensor, Integrated [Glass] for [IK] Rated Impact Protection" +- E family: "Semi-Outdoor Rated [ResolutionLabel] ([Resolution]) [Aspect] High Brightness LCD Display Panel with [NIT] NIT LED Backlight, Automatic Brightness Control Sensor, Integrated [Glass] for [IK] Rated Impact Protection" +- I family: "Standard Indoor [ResolutionLabel] ([Resolution]) [Aspect] LCD Display Panel with [NIT] NIT LED Backlight" +- LM/LC: "MP.TV Modular LED Display [Dimensions], [PixelPitch]mm Pixel Pitch, [NIT] NIT, IP[Rating] Rated" + +Resolution label shortcuts: +- 1920x1080 = "FHD" +- 3840x2160 = "UHD" +- 1080x1920 = "FHD" +- 1920x540 = "Super-Wide 32:9" +- 3840x1080 = "Super-Wide 32:9" +- 1920x360 = "Low Profile Ultra-Wide 48:9" +- 3840x720 = "Low Profile Ultra-Wide 48:9" + +### Step 4: Show the user and confirm +Display the new panel text and purchase line for confirmation before writing it. + +### Step 5: Write the new entry to the reference file +After confirmation, **append the new row** to the appropriate section in `references/panel-descriptions.md`: +``` +| [Resolution] | [Full panel text] | [Purchase line] | +``` + +Confirm to the user: "I've added [Family + Resolution] to the panel reference library. It will be available for all future models using this panel." + +--- + +## Standard Outputs + +Generate all of the following for every product (unless the user specifies only some): + +### 1. Decoded Model Summary +A table showing each component of the model number and what it means. This helps the user confirm the decode is correct before content is generated. + +| Component | Code | Meaning | +|-----------|------|---------| +| Family | M | Mobile Bus | +| Size | 24 | 24-inch diagonal | +| ... | ... | ... | + +### 2. Part Number +Format: `MPTV-[ModelFix]-G[Generation]` +(ModelFix = model number with "-Dual" replaced by "d") + +### 3. Display Description +The full marketing/catalog description assembled from the formula. This is the primary product description used in Odoo and the catalog. + +### 4. Purchase Description +The short procurement line used on purchase orders and in the purchase database. + +### 5. Odoo KB Article Draft (HTML) +A complete Knowledge Base article as **clean HTML** suitable for pasting directly into Odoo's Knowledge WYSIWYG editor. Follow the template in `assets/KB-Article-Template.html` and the section-by-section fill guide in `references/description-formulas.md`. + +**HTML output rules:** +- Use `
` for all spec tables -- never markdown tables
+- Use `
|