Skip to content

feat(slides):slides template#684

Open
ethan-zhx wants to merge 1 commit intomainfrom
feat/slides-template-pr-b8d79bb
Open

feat(slides):slides template#684
ethan-zhx wants to merge 1 commit intomainfrom
feat/slides-template-pr-b8d79bb

Conversation

@ethan-zhx
Copy link
Copy Markdown
Collaborator

@ethan-zhx ethan-zhx commented Apr 27, 2026

Summary

Add template-based PPT generation support for the lark-slides skill, including template catalog metadata and helper scripts that reduce template selection and layout risks.

Changes

  • Add slide template catalog, template index, and reusable XML template assets.
  • Add template search/summarize/extract helper script.
  • Add layout lint helper script for overlap, bounds, footer, and text-height checks.
  • Update lark-slides skill instructions for template-first workflows and validation.

Test Plan

  • Unit tests pass
  • Manual local verification confirms template search and Python syntax checks work as expected

Related Issues

  • None

Summary by CodeRabbit

  • Documentation

    • Enhanced workflow guidance for template-first presentation creation and image handling
    • Created comprehensive template selection catalog with scenario-based routing
  • New Features

    • Added 14 pre-designed slide templates spanning administration, HR, and marketing scenarios (company introductions, employee onboarding, brand strategy, business plans, etc.)

chore:add scripts

feat(slides): add template-first guidance to lark-slides skill

docs: restructure slide templates to flat layout with catalog routing

- Move 42 template XMLs from 8 category subdirs into single templates/ dir
- Encode category in filename: {category}--{name}.xml
- Add template-catalog.md as lightweight routing index (scene/tone/formality)
- Update SKILL.md workflow to include template matching step (Step 2)
- Update style guide to reference templates instead of hardcoded colors

docs: add categorized slides template XML references

Add 42 slide templates extracted from API responses, organized by category:
office(8), product(6), operations(4), marketing(8), hr(3), administration(4), personal(6), misc(3)

Change-Id: Ib3d85ffd7563a1693d4ed603fe9435fd716890ca
@github-actions github-actions Bot added the size/XL Architecture-level or global-impact change label Apr 27, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 27, 2026

📝 Walkthrough

Walkthrough

This PR expands the lark-slides skill documentation and template library, introducing mandatory template-selection workflows, enhanced XML validation procedures, a comprehensive template catalog with metadata and routing indices, and 14 new presentation templates across administration, HR, and marketing domains.

Changes

Cohort / File(s) Summary
Documentation & Process Flow
skills/lark-slides/SKILL.md, skills/lark-slides/references/slide-templates.md
Enforces template-first routing with template-tool.py search, mandates post-generation XML risk checks via layout-lint.py, expands creation workflows with branching logic, strengthens validation for escaping/quoting/structure constraints, and adds image-handling guidance for uploads via +create --slides with src="@./local.png" or slides +media-upload.
Template Catalog & Reference
skills/lark-slides/references/template-catalog.md
New comprehensive catalog specifying script-first selection workflow, dialog output rules for 2–3 candidate presentation, matching dimensions (scene/tone/formality), template families (office/product/marketing/operations/HR/administration/personal/misc), metadata (page count/tone/palette/outline/page-type indices), and "快速匹配索引" routing tables.
Administration Templates
skills/lark-slides/references/templates/administration--annual_gala.xml, ...--company_intro.xml, ...--corporate_culture.xml
Three new themed Lark SML XML presentation templates covering annual gala event branding/schedules, company introduction with organizational structure and bar charts, and corporate culture with vision/values/timeline layouts.
HR Templates
skills/lark-slides/references/templates/hr--employee_training.xml, ...--employee_training_workshop.xml, ...--onboarding.xml
Three new HR-focused Lark SML presentation templates for employee training with risk/ethics/IP topics, training workshop with step-numbering and checklist slides, and onboarding with process flows and policy sections.
Marketing Templates
skills/lark-slides/references/templates/marketing--brand_communication.xml, ...--brand_logo_design.xml, ...--brand_operations_plan.xml, ...--business_plan.xml, ...--marketing_plan.xml, ...--marketing_strategy.xml, ...--product_whitepaper.xml, ...--roadshow_business_plan.xml
Eight new marketing-domain Lark SML presentation templates covering brand strategy, logo/design proposals, operations planning, business plans, marketing strategies, product whitepapers, and roadshow pitches, each with structured layouts, color schemes, market analysis sections, and closing slides.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

size/XL, domain/ccm

Suggested reviewers

  • fangshuyu-768
  • liangshuo-1

Poem

🐰 Templates bloom in rabbits' care,
Slides arranged with markup flair!
From admin galas to market dreams,
Workflows flow in XML streams. ✨📊

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title is vague and generic. It uses 'slides template' without describing what was specifically added or the main change. Use a more descriptive title such as 'feat(slides): add template catalog and helper scripts for template-first workflows' to clearly convey the main changes.
✅ Passed checks (4 passed)
Check name Status Explanation
Description check ✅ Passed The description follows the template structure with all required sections present: Summary (1-2 sentences describing motivation), Changes (bulleted list of main additions), Test Plan (with checkboxes), and Related Issues.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/slides-template-pr-b8d79bb

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 63.04%. Comparing base (8ec95a4) to head (b8d79bb).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #684      +/-   ##
==========================================
+ Coverage   62.96%   63.04%   +0.08%     
==========================================
  Files         436      437       +1     
  Lines       38605    38847     +242     
==========================================
+ Hits        24307    24491     +184     
- Misses      12150    12184      +34     
- Partials     2148     2172      +24     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Copy Markdown

🚀 PR Preview Install Guide

🧰 CLI update

npm i -g https://pkg.pr.new/larksuite/cli/@larksuite/cli@b8d79bbe1b7ab22cf3a4a3327fde37ca8c766297

🧩 Skill update

npx skills add larksuite/cli#feat/slides-template-pr-b8d79bb -y -g

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (20)
skills/lark-slides/references/templates/marketing--marketing_plan.xml-1-2 (1)

1-2: ⚠️ Potential issue | 🟡 Minor

Drop the draft suffix from the presentation title.

裂图重新上传 reads like an internal editing note and will leak into the generated deck title.

✏️ Suggested fix
-  <title>营销策划方案-裂图重新上传</title>
+  <title>营销策划方案</title>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--marketing_plan.xml` around
lines 1 - 2, The presentation title currently includes an internal draft suffix;
update the <presentation> metadata by editing the <title> element value so it no
longer contains "裂图重新上传" (i.e., change the <title> text from "营销策划方案-裂图重新上传" to
a clean title like "营销策划方案"), ensuring only the visible deck title is published
and no internal editing notes remain.
skills/lark-slides/references/templates/hr--onboarding.xml-56-60 (1)

56-60: ⚠️ Potential issue | 🟡 Minor

Avoid hard-coding May 4, 2026 in the template.

A reusable onboarding deck will start shipping the wrong default date as soon as May 4, 2026 passes. This should be a placeholder or generic date field instead.

✏️ Suggested fix
-            <span color="rgba(44, 40, 64, 1)" fontSize="16">2026.05.04</span>
+            <span color="rgba(44, 40, 64, 1)" fontSize="16">YYYY.MM.DD</span>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/hr--onboarding.xml` around lines 56 -
60, Replace the hard‑coded "2026.05.04" string inside the <span> element in the
onboarding template with a reusable placeholder (for example
{{ONBOARDING_DATE}}) or a generic label (e.g., "DATE") so the template doesn't
ship a fixed date; update the <content>/<p>/<span> where the date currently
appears and ensure the rendering code that processes this template (the consumer
of the <span> value) can substitute either a provided date or a runtime default
(like today) instead of relying on the literal "2026.05.04".
skills/lark-slides/references/templates/marketing--marketing_plan.xml-572-578 (1)

572-578: ⚠️ Potential issue | 🟡 Minor

Keep the quarter label consistent with the rest of the deck.

This sidebar says European Market Q3 Planning, while the cover and surrounding slides use Q1. Looks like a typo.

✏️ Suggested fix
-              <span color="rgba(147, 150, 156, 1)" fontSize="12"> European Market Q3 Planning</span>
+              <span color="rgba(147, 150, 156, 1)" fontSize="12"> European Market Q1 Planning</span>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--marketing_plan.xml` around
lines 572 - 578, The sidebar text "European Market Q3 Planning" in the <shape
... type="text"> element (the node containing the <content> with "European
Market Q3 Planning") is inconsistent with the rest of the deck; update that text
to "European Market Q1 Planning" so the quarter label matches the cover and
surrounding slides, preserving existing formatting attributes (fontSize, color,
bold, padding, rotation).
skills/lark-slides/references/templates/marketing--business_plan.xml-1515-1518 (1)

1515-1518: ⚠️ Potential issue | 🟡 Minor

Align this finance header with the section divider.

The section intro just above is 05 财务计划, but this slide header says 04 财务计划. That breaks the deck’s internal numbering.

✏️ Suggested fix
-          <p>04 财务计划</p>
+          <p>05 财务计划</p>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--business_plan.xml` around
lines 1515 - 1518, The slide header text inside the <shape width="202"
height="41" topLeftX="731" topLeftY="16" type="text"> element (content with
textType="caption" and the <p> node currently reading "04 财务计划") is numbered
incorrectly and misaligned; update the <p> content to "05 财务计划" to match the
section divider and adjust its positioning/textAlign to match the section
divider’s alignment (use the same padding, fontSize, bold, and textAlign values
as the section divider) so the header number and alignment are consistent.
skills/lark-slides/references/templates/hr--onboarding.xml-648-680 (1)

648-680: ⚠️ Potential issue | 🟡 Minor

Remove the duplicated CTA icon pair.

The ellipse and arrow at (822,244) / (831,252) are declared twice. That doubles the overlay and makes the slide harder to edit cleanly.

✏️ Suggested fix
-      <icon width="25" height="25" topLeftX="831" topLeftY="252" alpha="0.2" iconType="iconpark/Arrows/arrow-right.svg">
-        <border color="rgba(44, 40, 64, 1)" width="1" lineJoin="miter" miterLimit="10"/>
-      </icon>
-      <shape width="42" height="42" topLeftX="822" topLeftY="244" alpha="0.2" type="ellipse">
-        <border color="rgba(44, 40, 64, 1)" width="1" lineJoin="miter" miterLimit="10"/>
-      </shape>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/hr--onboarding.xml` around lines 648
- 680, The XML contains a duplicated CTA pair: two shape elements
(type="ellipse" topLeftX="822" topLeftY="244" width="42" height="42") and two
icon elements (iconType="iconpark/Arrows/arrow-right.svg" topLeftX="831"
topLeftY="252" width="25" height="25"); remove the redundant pair (either the
first or the second occurrence) so only one ellipse shape and one arrow icon
remain, preserving the remaining element's border and alpha attributes to keep
styling.
skills/lark-slides/references/templates/administration--annual_gala.xml-34-45 (1)

34-45: ⚠️ Potential issue | 🟡 Minor

Avoid hard-coding the event year in a reusable template.

2026 年会盛典 will be wrong for any deck created after 2026. Use a placeholder year or generic title so the template stays reusable.

✏️ Suggested fix
-              <span color="rgba(255, 255, 255, 1)" fontSize="64">202</span>
+              <span color="rgba(255, 255, 255, 1)" fontSize="64">20X</span>
...
-              <span color="rgba(255, 255, 255, 1)" fontSize="64">6</span>
+              <span color="rgba(255, 255, 255, 1)" fontSize="64">X</span>

Or replace the whole line with a neutral placeholder like 年度年会盛典.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/administration--annual_gala.xml`
around lines 34 - 45, The template currently hard-codes the event year across
the title spans (see the <shape ... type="text"> block and the <content
textType="title"> with the <span> nodes containing "202" and "6"); replace those
hard-coded year spans with a reusable placeholder or neutral text (e.g., a
single span containing "年度年会盛典" or a placeholder like "{{year}} 年会盛典") so the
title remains correct for decks created after 2026.
skills/lark-slides/references/templates/marketing--business_plan.xml-361-366 (1)

361-366: ⚠️ Potential issue | 🟡 Minor

Fix the duplicated member number on the third team card.

The third slot is labeled 团队成员 #2 again, so the template ships with two `#2` entries instead of `#1 / `#2` / `#3.

✏️ Suggested fix
-              <span fontSize="16">团队成员 `#2`</span>
+              <span fontSize="16">团队成员 `#3`</span>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--business_plan.xml` around
lines 361 - 366, The third team-card's text node currently reads "团队成员 `#2`"
causing duplicate numbering; locate the <shape> element whose attributes include
topLeftX="188" and topLeftY="375" (the text content block with fontSize="16" and
bold="true") and change the inner text from "团队成员 `#2`" to "团队成员 `#3`" so the cards
read `#1` / `#2` / `#3`.
skills/lark-slides/references/templates/marketing--brand_operations_plan.xml-2-2 (1)

2-2: ⚠️ Potential issue | 🟡 Minor

Remove the internal upload note from the template title.

裂图重新上传 reads like an authoring note, not deck metadata. Leaving it in <title> can leak into search/index output and makes this template look unfinished.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--brand_operations_plan.xml`
at line 2, The template title currently contains an internal authoring note
"裂图重新上传" inside the <title> element; remove that note so the <title> reads only
"品牌运营计划" (or otherwise only the public-facing deck metadata), and if the
internal note must be preserved move it out of <title> into an internal comment
or metadata field instead; update the <title> element in the template
accordingly.
skills/lark-slides/references/templates/marketing--brand_logo_design.xml-527-552 (1)

527-552: ⚠️ Potential issue | 🟡 Minor

Remove the stacked duplicate caption shapes.

Each of these slides has multiple caption boxes at the same coordinates. It looks fine until someone edits one of them, then stale duplicates remain underneath and the slide becomes hard to maintain.

Also applies to: 960-985

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--brand_logo_design.xml`
around lines 527 - 552, There are stacked duplicate text shapes at the same
coordinates (text shapes with topLeftX="263" topLeftY="459" and the nearby
duplicate at topLeftX="262" topLeftY="459") causing maintenance issues; remove
the redundant duplicate text <shape> elements and keep a single authoritative
caption element (retain the one with the intended attributes such as
padding/fontSize/color) and ensure the background rect (shape type="rect" at
topLeftX="239" topLeftY="435") remains intact; apply the same de-duplication
cleanup for the other occurrences referenced around lines 960-985 so each
caption position has only one text <shape>.
skills/lark-slides/references/templates/marketing--brand_communication.xml-139-148 (1)

139-148: ⚠️ Potential issue | 🟡 Minor

Keep the section 02 name consistent.

Line 145 uses 品牌传播分析, while the divider and running captions later switch to 品牌分析传播. That makes the TOC and slide chrome disagree.

Also applies to: 469-472, 539-547, 646-653

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--brand_communication.xml`
around lines 139 - 148, Section 02's title text is inconsistent: some <shape>
content <span> values read "品牌传播分析" while divider/running-caption occurrences
read "品牌分析传播"; pick a single canonical string (e.g., "品牌传播分析") and update all
instances so they match, editing the <content>/<p>/<span> text inside the
relevant <shape> elements and any divider or running-caption elements that
currently contain "品牌分析传播" to the chosen canonical text.
skills/lark-slides/references/template-catalog.md-3-9 (1)

3-9: ⚠️ Potential issue | 🟡 Minor

Fix the broken blockquote formatting at the top.

The blank lines inside this note trigger markdownlint MD028 and can render as separate blockquotes. Keep it as one continuous blockquote or switch these paragraphs to normal text.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/template-catalog.md` around lines 3 - 9, The
top note is broken into multiple blockquote paragraphs causing MD028; fix it by
removing the blank lines between the lines that start with ">" so the entire
instructional note becomes a single continuous blockquote, or alternatively
convert the separate blockquote paragraphs into normal paragraphs (remove
leading ">" on subsequent lines) so the content about template-index.json,
../scripts/template-tool.py, and light_general.xml / dark_general.xml renders as
one coherent block of text rather than multiple blockquotes.
skills/lark-slides/references/templates/hr--employee_training_workshop.xml-2-2 (1)

2-2: ⚠️ Potential issue | 🟡 Minor

Align the deck title with the template identity.

Line 2 exports the presentation as 员工培训训练, while the cover copy at Lines 128-137 says 员工培训 / 训练模版 and the file itself is the employee_training_workshop template. Shipping those three names out of sync will make this template look inconsistent to end users.

Also applies to: 124-141

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/hr--employee_training_workshop.xml`
at line 2, The deck title in the <title> element is inconsistent with the cover
copy and the template identity (employee_training_workshop); update the <title>
element value to exactly match the cover slide copy ("员工培训 / 训练模版") and confirm
the cover text and any other occurrences in the file use the same phrase so the
<title> element, cover slide text, and template identity
(employee_training_workshop) are consistent.
skills/lark-slides/references/templates/administration--company_intro.xml-283-290 (1)

283-290: ⚠️ Potential issue | 🟡 Minor

Replace the truncated card title.

Line 287 currently renders only 企业, so this slide ships with an obviously incomplete visible heading.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/administration--company_intro.xml`
around lines 283 - 290, The card title is truncated to just "企业" in the text
shape element; update the <shape> / <content> text node (the <p><strong><span
...> value) used for the slide title so it contains the full intended heading
(e.g., a complete phrase like "企业简介" or the agreed full title) and preserve
existing attributes (fontSize, color, bold, textAlign, padding) so only the
inner text/span content changes; locate the shape element with width="278"
height="44" topLeftX="533" topLeftY="316" and modify its <span> text
accordingly.
skills/lark-slides/references/templates/administration--company_intro.xml-482-487 (1)

482-487: ⚠️ Potential issue | 🟡 Minor

Several section headers still use copied or mistyped text.

Line 485 misspells INTRODUCTION, Lines 566 and 647 still say TEAM INTRODUCTION, and Lines 820-827 still render the 企业介绍 section title inside the 产品服务 block. These labels will make the generated deck look inconsistent.

Also applies to: 563-569, 644-649, 818-830

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/administration--company_intro.xml`
around lines 482 - 487, Fix the mistyped and misplaced section headers: update
the <span> text values in the relevant <shape type="text"> elements so
"ENTERPRISE INTRODUTION" becomes "ENTERPRISE INTRODUCTION", change any incorrect
"TEAM INTRODUCTION" occurrences to the intended header (e.g., "TEAM
INTRODUCTION" or the correct localized label), and move or correct the Chinese
title "企业介绍" so it appears under the proper 企业介绍 section instead of inside the
产品服务 block; locate these shapes by their span text and surrounding <shape
type="text"> elements and edit the span content accordingly.
skills/lark-slides/references/templates/marketing--product_whitepaper.xml-79-106 (1)

79-106: ⚠️ Potential issue | 🟡 Minor

Keep the TOC and section dividers in sync.

The TOC routes users to 产品功能 and 来自用户的声音, but the section dividers later render 产品介绍 and 来自客户的声音. Those visible mismatches make the deck feel inconsistent once generated.

Also applies to: 163-170, 826-833

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--product_whitepaper.xml`
around lines 79 - 106, TOC entries and section divider labels are inconsistent:
the TOC shapes currently use the strings "产品功能" and "来自用户的声音" while later
section divider shapes render "产品介绍" and "来自客户的声音"; update the labels so they
match across the deck by making the section divider text identical to the TOC
text (or vice‑versa) — locate the shape content elements containing the strong
text nodes ("产品功能", "来自用户的声音", "产品介绍", "来自客户的声音") and unify the strings, and
apply the same fix to the other similar shape blocks flagged in the review.
skills/lark-slides/references/templates/marketing--product_whitepaper.xml-2-2 (1)

2-2: ⚠️ Potential issue | 🟡 Minor

The cover title does not match the template metadata.

Line 2 names this deck 产品白皮书, but Lines 33-34 render 互联网产品展示 on the cover. If this file is meant to be the whitepaper template, the metadata and opening slide should tell the same story.

Also applies to: 29-37

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--product_whitepaper.xml` at
line 2, The file's <title> element currently reads "产品白皮书" but the cover slide
text (the element that renders "互联网产品展示" on the opening slide and the same
content around lines 29-37) is inconsistent; update either the <title> value or
the cover slide text so both match (e.g., change the <title> to "互联网产品展示" or
replace the cover slide's displayed string with "产品白皮书"), and ensure you update
both the title tag and the cover slide/text element(s) so metadata and the
rendered first slide are identical.
skills/lark-slides/references/templates/hr--employee_training_workshop.xml-19-123 (1)

19-123: ⚠️ Potential issue | 🟡 Minor

Remove the duplicated cover elements.

Lines 74-123 repeat the decorative objects from Lines 19-68, and the page number is also duplicated at Lines 160-173. Because several of these repeated shapes use alpha values below 1, the cover will render darker/heavier than intended and be harder to edit.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/hr--employee_training_workshop.xml`
around lines 19 - 123, The file contains a duplicated block of decorative
<shape> elements (the sequence starting with shape width="100" topLeftX="20"
rotation="54" type="ellipse" and repeating the slides-full-round-rect/ellipse
shapes) — remove the second occurrence of that entire repeated block (the copy
that duplicates the shapes with topLeftX values 20, -61, 621, 54, 378, 343, 822,
925, 345, 435) so only one set remains; also remove the duplicated page-number
element (the repeated page number block that appears later) so there is a single
page number entry. Ensure you keep the first occurrence of each element and
delete the subsequent duplicates to restore correct cover appearance and alpha
handling.
skills/lark-slides/references/templates/marketing--roadshow_business_plan.xml-784-792 (1)

784-792: ⚠️ Potential issue | 🟡 Minor

Fix the copied section headers before adding this to the catalog.

Lines 784-792 still show 市场分析 / 用户需求, Lines 1042-1050 still show 产品服务 / 用户需求, and Lines 1216-1224 still show 运营计划 / Plan even though the surrounding slides are for later sections. These mismatches will confuse users when they navigate the generated deck.

Also applies to: 1042-1050, 1216-1224

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@skills/lark-slides/references/templates/marketing--roadshow_business_plan.xml`
around lines 784 - 792, Several slide text blocks were copied with wrong section
headers (e.g., shapes containing "市场分析" paired with a sub-headline "用户需求",
shapes "产品服务" paired with "用户需求", and shapes with "运营计划" paired with "Plan");
update each mismatched shape so the sub-headline matches the surrounding slide
section. Locate the shape elements whose content currently reads "用户需求" (the
sub-headline under "市场分析" and under "产品服务") and the shape where the sub-headline
reads "Plan" under "运营计划" and replace those text nodes so each sub-headline
matches its parent section heading (or the intended local heading for that
slide) and maintain existing styling attributes (textType, fontSize, bold,
color, padding).
skills/lark-slides/references/templates/marketing--marketing_strategy.xml-1281-1285 (1)

1281-1285: ⚠️ Potential issue | 🟡 Minor

Typo: SOE should be SEO.

The budget table row label reads SOE 优化 but the corresponding action-plan badge on Line 1111 (same file) is SEO优化 #3``. Align both to SEO 优化 so the budget allocation row matches the action plan it's funding.

✏️ Proposed fix
-                <span color="rgba(255, 255, 255, 1)" fontSize="14">SOE 优化</span>
+                <span color="rgba(255, 255, 255, 1)" fontSize="14">SEO 优化</span>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--marketing_strategy.xml`
around lines 1281 - 1285, The label text in the content/span element currently
reads "SOE 优化" and should be corrected to "SEO 优化" to match the action-plan
badge "SEO优化 `#3`"; locate the <content> element containing the <span> with
fontSize="14" and color="rgba(255, 255, 255, 1)" (the snippet showing "SOE 优化")
and update its inner text to "SEO 优化" so the budget allocation row matches the
action plan.
skills/lark-slides/references/templates/marketing--marketing_strategy.xml-847-866 (1)

847-866: ⚠️ Potential issue | 🟡 Minor

Duplicate "你的团队" / "2025.09.12" shapes overlap on the same slide.

Lines 847–851 and 862–866 both place a 2025.09.12 caption at topLeftX="845" topLeftY="425" rotation="90", and Lines 852–856 and 857–861 both place a 你的团队 caption at topLeftX="845" topLeftY="80" rotation="90". The earlier copies are missing color="rgba(255, 255, 255, 1)", so they fall back to the theme caption color (#808080FF) and stack underneath the white copies, producing visible text overlap/halo on render.

Looks like a copy-paste artifact — drop the duplicate (uncolored) pair.

🛠️ Suggested cleanup
-      <shape width="176" height="38" topLeftX="845" topLeftY="425" rotation="90" type="text">
-        <content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="12">
-          <p>2025.09.12</p>
-        </content>
-      </shape>
-      <shape width="176" height="38" topLeftX="845" topLeftY="80" rotation="90" type="text">
-        <content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="12">
-          <p>你的团队</p>
-        </content>
-      </shape>
       <shape width="176" height="38" topLeftX="845" topLeftY="80" rotation="90" type="text">
         <content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="12" color="rgba(255, 255, 255, 1)">
           <p>你的团队</p>
         </content>
       </shape>
       <shape width="176" height="38" topLeftX="845" topLeftY="425" rotation="90" type="text">
         <content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="12" color="rgba(255, 255, 255, 1)" textAlign="right">
           <p>2025.09.12</p>
         </content>
       </shape>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--marketing_strategy.xml`
around lines 847 - 866, There are duplicated text <shape> elements causing
overlapping captions: remove the uncolored pair (the two <shape> elements that
have topLeftX="845" topLeftY="425" rotation="90" type="text" and topLeftX="845"
topLeftY="80" rotation="90" which lack color="rgba(255, 255, 255, 1)"), leaving
only the colored versions that include color="rgba(255, 255, 255, 1)" so "你的团队"
and "2025.09.12" appear once each without the underlying gray copies.
🧹 Nitpick comments (1)
skills/lark-slides/references/templates/administration--corporate_culture.xml (1)

390-417: Slide "发展历程" lacks meaningful body content.

This slide only contains a title and orange accent bar; the actual timeline is represented by <undefined type="fallback"/> on Line 412. Users picking this template will get a near-empty slide for a development-history page. Consider replacing the fallback with a real timeline skeleton (year markers + value cards), similar to what the "市场前景" slide (Lines 1234–1464) provides, so the template is usable out of the box.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@skills/lark-slides/references/templates/administration--corporate_culture.xml`
around lines 390 - 417, The "发展历程" slide currently only has a title shape and an
<undefined type="fallback"/> placeholder, leaving the slide empty; replace that
fallback with a concrete timeline skeleton: add sequential year marker shapes
and corresponding value-card text shapes (e.g., small rect markers and text
blocks) positioned horizontally or vertically to form a timeline, include at
least 3–5 year markers with sample placeholder text, and mirror the
structure/style used by the "市场前景" slide (use similar shape types, content
blocks, and font/color attributes) so the slide titled "发展历程" becomes a usable
development-history template.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@skills/lark-slides/references/template-catalog.md`:
- Around line 190-196: The page-type index for brand_communication.xml is wrong
because divider slides exist at 3, 7, 10, 14 in
marketing--brand_communication.xml; update the "页型索引" line so it lists the
divider pages as sections and adjusts the content ranges accordingly (keep 封面
`1` | 目录 `2`, change `分节 无` to `分节 3, 7, 10, 14` and change `内容 3-10, 12-16` to
`内容 4-6, 8-9, 11-13, 15-16`), leaving the 结尾 `17` unchanged so readers won't
treat divider slides as regular content.
- Around line 222-228: The section-divider index in brand_operations_plan.xml is
off: the fourth divider is actually at page 13 (not 12), so update the “分节页”
list to 3, 6, 9, 13, 15 and adjust the page-range map accordingly so content
ranges read 4-5, 7-8, 10-12, 14, 16-17 (keeping cover=1, toc=2 and ending=18).

In `@skills/lark-slides/references/templates/hr--employee_training.xml`:
- Around line 7-12: The shared theme's default textStyles (title, headline,
sub-headline, body) are set to black, causing unreadable text on a dark deck;
update the theme's <textStyles> entries for title, headline, sub-headline, and
body to use a light/white color (e.g., set fontColor to a white opaque value) so
any shapes that inherit these styles remain legible—leave caption as-is. Locate
the textStyles block containing the title, headline, sub-headline, and body tags
and change their fontColor attributes accordingly.
- Around line 49-78: There are two overlapping bottom-left company placeholder
text shapes (the shape with width="202" height="41" topLeftX="51" topLeftY="462"
type="text" and the other with width="202" height="39" topLeftX="58"
topLeftY="462" type="text"); remove or consolidate them into a single text shape
to avoid rendering overlap, choose the desired content and styling (e.g., keep
the more fully-specified element with fontSize, color, padding, and text
"输入互联网公司" or "输入你的互联网公司"), delete the duplicate element, and ensure the
remaining shape has the correct topLeftX/topLeftY, padding and font attributes
so the cover displays a single editable company placeholder.

In `@skills/lark-slides/references/templates/marketing--brand_logo_design.xml`:
- Around line 577-579: Remove the stray <shape> element that sits outside the
slide canvas (the element with width="192" height="44" topLeftX="852"
topLeftY="717" type="text") from the template so it no longer appears in the
file; locate the shape block in marketing--brand_logo_design.xml and delete that
entire <shape>...</shape> node to prevent out-of-bounds lint failures and remove
the leftover artifact.
- Around line 1212-1273: The hex labels under the color circles are incorrect;
update the three text <span> values to match their corresponding <fillColor>
values: for the ellipse with fillColor="rgba(41, 185, 246, 1)" (ellipse at
topLeftX="717" topLeftY="103") change the caption <span> from "#86DBFF" to
"#29B9F6"; for the ellipse with fillColor="rgba(225, 234, 255, 1)" (ellipse at
topLeftX="717" topLeftY="314") change the caption <span> from "#C6E7FF" to
"#E1EAFF"; and for the ellipse with fillColor="rgba(0, 145, 227, 1)" (ellipse at
topLeftX="509" topLeftY="103") change the caption <span> from "#1C66F6" to
"#0091E3".

In
`@skills/lark-slides/references/templates/marketing--brand_operations_plan.xml`:
- Around line 1040-1063: Rename the two content/title shapes that still say
"Activity Ideas" and the headline "活动思路" to use the section name "营销推广" so they
match the `05 / 营销推广` divider; specifically update the shape containing the text
node with "<p> Activity Ideas</p>" and the shape with the headline "<p>活动思路</p>"
to "<p>营销推广</p>" (and apply the same change to the duplicate slides referenced
at lines 1170-1192).

In `@skills/lark-slides/references/templates/marketing--marketing_strategy.xml`:
- Around line 7-13: The theme sets a dark background via background.fillColor
but leaves textStyles.title, headline, sub-headline and body fontColor as black
(`#000000FF`), which will render unreadable default text; update the theme so
defaults match the dark background by either removing explicit fontColor entries
from textStyles (letting per-slide <span>/<content> colors take precedence) or
change those textStyles fontColor values to white (`#FFFFFFFF`) while keeping
caption as-is, ensuring you edit the textStyles block (title, headline,
sub-headline, body) to prevent black-on-dark defaults.

---

Minor comments:
In `@skills/lark-slides/references/template-catalog.md`:
- Around line 3-9: The top note is broken into multiple blockquote paragraphs
causing MD028; fix it by removing the blank lines between the lines that start
with ">" so the entire instructional note becomes a single continuous
blockquote, or alternatively convert the separate blockquote paragraphs into
normal paragraphs (remove leading ">" on subsequent lines) so the content about
template-index.json, ../scripts/template-tool.py, and light_general.xml /
dark_general.xml renders as one coherent block of text rather than multiple
blockquotes.

In `@skills/lark-slides/references/templates/administration--annual_gala.xml`:
- Around line 34-45: The template currently hard-codes the event year across the
title spans (see the <shape ... type="text"> block and the <content
textType="title"> with the <span> nodes containing "202" and "6"); replace those
hard-coded year spans with a reusable placeholder or neutral text (e.g., a
single span containing "年度年会盛典" or a placeholder like "{{year}} 年会盛典") so the
title remains correct for decks created after 2026.

In `@skills/lark-slides/references/templates/administration--company_intro.xml`:
- Around line 283-290: The card title is truncated to just "企业" in the text
shape element; update the <shape> / <content> text node (the <p><strong><span
...> value) used for the slide title so it contains the full intended heading
(e.g., a complete phrase like "企业简介" or the agreed full title) and preserve
existing attributes (fontSize, color, bold, textAlign, padding) so only the
inner text/span content changes; locate the shape element with width="278"
height="44" topLeftX="533" topLeftY="316" and modify its <span> text
accordingly.
- Around line 482-487: Fix the mistyped and misplaced section headers: update
the <span> text values in the relevant <shape type="text"> elements so
"ENTERPRISE INTRODUTION" becomes "ENTERPRISE INTRODUCTION", change any incorrect
"TEAM INTRODUCTION" occurrences to the intended header (e.g., "TEAM
INTRODUCTION" or the correct localized label), and move or correct the Chinese
title "企业介绍" so it appears under the proper 企业介绍 section instead of inside the
产品服务 block; locate these shapes by their span text and surrounding <shape
type="text"> elements and edit the span content accordingly.

In `@skills/lark-slides/references/templates/hr--employee_training_workshop.xml`:
- Line 2: The deck title in the <title> element is inconsistent with the cover
copy and the template identity (employee_training_workshop); update the <title>
element value to exactly match the cover slide copy ("员工培训 / 训练模版") and confirm
the cover text and any other occurrences in the file use the same phrase so the
<title> element, cover slide text, and template identity
(employee_training_workshop) are consistent.
- Around line 19-123: The file contains a duplicated block of decorative <shape>
elements (the sequence starting with shape width="100" topLeftX="20"
rotation="54" type="ellipse" and repeating the slides-full-round-rect/ellipse
shapes) — remove the second occurrence of that entire repeated block (the copy
that duplicates the shapes with topLeftX values 20, -61, 621, 54, 378, 343, 822,
925, 345, 435) so only one set remains; also remove the duplicated page-number
element (the repeated page number block that appears later) so there is a single
page number entry. Ensure you keep the first occurrence of each element and
delete the subsequent duplicates to restore correct cover appearance and alpha
handling.

In `@skills/lark-slides/references/templates/hr--onboarding.xml`:
- Around line 56-60: Replace the hard‑coded "2026.05.04" string inside the
<span> element in the onboarding template with a reusable placeholder (for
example {{ONBOARDING_DATE}}) or a generic label (e.g., "DATE") so the template
doesn't ship a fixed date; update the <content>/<p>/<span> where the date
currently appears and ensure the rendering code that processes this template
(the consumer of the <span> value) can substitute either a provided date or a
runtime default (like today) instead of relying on the literal "2026.05.04".
- Around line 648-680: The XML contains a duplicated CTA pair: two shape
elements (type="ellipse" topLeftX="822" topLeftY="244" width="42" height="42")
and two icon elements (iconType="iconpark/Arrows/arrow-right.svg" topLeftX="831"
topLeftY="252" width="25" height="25"); remove the redundant pair (either the
first or the second occurrence) so only one ellipse shape and one arrow icon
remain, preserving the remaining element's border and alpha attributes to keep
styling.

In `@skills/lark-slides/references/templates/marketing--brand_communication.xml`:
- Around line 139-148: Section 02's title text is inconsistent: some <shape>
content <span> values read "品牌传播分析" while divider/running-caption occurrences
read "品牌分析传播"; pick a single canonical string (e.g., "品牌传播分析") and update all
instances so they match, editing the <content>/<p>/<span> text inside the
relevant <shape> elements and any divider or running-caption elements that
currently contain "品牌分析传播" to the chosen canonical text.

In `@skills/lark-slides/references/templates/marketing--brand_logo_design.xml`:
- Around line 527-552: There are stacked duplicate text shapes at the same
coordinates (text shapes with topLeftX="263" topLeftY="459" and the nearby
duplicate at topLeftX="262" topLeftY="459") causing maintenance issues; remove
the redundant duplicate text <shape> elements and keep a single authoritative
caption element (retain the one with the intended attributes such as
padding/fontSize/color) and ensure the background rect (shape type="rect" at
topLeftX="239" topLeftY="435") remains intact; apply the same de-duplication
cleanup for the other occurrences referenced around lines 960-985 so each
caption position has only one text <shape>.

In
`@skills/lark-slides/references/templates/marketing--brand_operations_plan.xml`:
- Line 2: The template title currently contains an internal authoring note
"裂图重新上传" inside the <title> element; remove that note so the <title> reads only
"品牌运营计划" (or otherwise only the public-facing deck metadata), and if the
internal note must be preserved move it out of <title> into an internal comment
or metadata field instead; update the <title> element in the template
accordingly.

In `@skills/lark-slides/references/templates/marketing--business_plan.xml`:
- Around line 1515-1518: The slide header text inside the <shape width="202"
height="41" topLeftX="731" topLeftY="16" type="text"> element (content with
textType="caption" and the <p> node currently reading "04 财务计划") is numbered
incorrectly and misaligned; update the <p> content to "05 财务计划" to match the
section divider and adjust its positioning/textAlign to match the section
divider’s alignment (use the same padding, fontSize, bold, and textAlign values
as the section divider) so the header number and alignment are consistent.
- Around line 361-366: The third team-card's text node currently reads "团队成员 `#2`"
causing duplicate numbering; locate the <shape> element whose attributes include
topLeftX="188" and topLeftY="375" (the text content block with fontSize="16" and
bold="true") and change the inner text from "团队成员 `#2`" to "团队成员 `#3`" so the cards
read `#1` / `#2` / `#3`.

In `@skills/lark-slides/references/templates/marketing--marketing_plan.xml`:
- Around line 1-2: The presentation title currently includes an internal draft
suffix; update the <presentation> metadata by editing the <title> element value
so it no longer contains "裂图重新上传" (i.e., change the <title> text from
"营销策划方案-裂图重新上传" to a clean title like "营销策划方案"), ensuring only the visible deck
title is published and no internal editing notes remain.
- Around line 572-578: The sidebar text "European Market Q3 Planning" in the
<shape ... type="text"> element (the node containing the <content> with
"European Market Q3 Planning") is inconsistent with the rest of the deck; update
that text to "European Market Q1 Planning" so the quarter label matches the
cover and surrounding slides, preserving existing formatting attributes
(fontSize, color, bold, padding, rotation).

In `@skills/lark-slides/references/templates/marketing--marketing_strategy.xml`:
- Around line 1281-1285: The label text in the content/span element currently
reads "SOE 优化" and should be corrected to "SEO 优化" to match the action-plan
badge "SEO优化 `#3`"; locate the <content> element containing the <span> with
fontSize="14" and color="rgba(255, 255, 255, 1)" (the snippet showing "SOE 优化")
and update its inner text to "SEO 优化" so the budget allocation row matches the
action plan.
- Around line 847-866: There are duplicated text <shape> elements causing
overlapping captions: remove the uncolored pair (the two <shape> elements that
have topLeftX="845" topLeftY="425" rotation="90" type="text" and topLeftX="845"
topLeftY="80" rotation="90" which lack color="rgba(255, 255, 255, 1)"), leaving
only the colored versions that include color="rgba(255, 255, 255, 1)" so "你的团队"
and "2025.09.12" appear once each without the underlying gray copies.

In `@skills/lark-slides/references/templates/marketing--product_whitepaper.xml`:
- Around line 79-106: TOC entries and section divider labels are inconsistent:
the TOC shapes currently use the strings "产品功能" and "来自用户的声音" while later
section divider shapes render "产品介绍" and "来自客户的声音"; update the labels so they
match across the deck by making the section divider text identical to the TOC
text (or vice‑versa) — locate the shape content elements containing the strong
text nodes ("产品功能", "来自用户的声音", "产品介绍", "来自客户的声音") and unify the strings, and
apply the same fix to the other similar shape blocks flagged in the review.
- Line 2: The file's <title> element currently reads "产品白皮书" but the cover slide
text (the element that renders "互联网产品展示" on the opening slide and the same
content around lines 29-37) is inconsistent; update either the <title> value or
the cover slide text so both match (e.g., change the <title> to "互联网产品展示" or
replace the cover slide's displayed string with "产品白皮书"), and ensure you update
both the title tag and the cover slide/text element(s) so metadata and the
rendered first slide are identical.

In
`@skills/lark-slides/references/templates/marketing--roadshow_business_plan.xml`:
- Around line 784-792: Several slide text blocks were copied with wrong section
headers (e.g., shapes containing "市场分析" paired with a sub-headline "用户需求",
shapes "产品服务" paired with "用户需求", and shapes with "运营计划" paired with "Plan");
update each mismatched shape so the sub-headline matches the surrounding slide
section. Locate the shape elements whose content currently reads "用户需求" (the
sub-headline under "市场分析" and under "产品服务") and the shape where the sub-headline
reads "Plan" under "运营计划" and replace those text nodes so each sub-headline
matches its parent section heading (or the intended local heading for that
slide) and maintain existing styling attributes (textType, fontSize, bold,
color, padding).

---

Nitpick comments:
In
`@skills/lark-slides/references/templates/administration--corporate_culture.xml`:
- Around line 390-417: The "发展历程" slide currently only has a title shape and an
<undefined type="fallback"/> placeholder, leaving the slide empty; replace that
fallback with a concrete timeline skeleton: add sequential year marker shapes
and corresponding value-card text shapes (e.g., small rect markers and text
blocks) positioned horizontally or vertically to form a timeline, include at
least 3–5 year markers with sample placeholder text, and mirror the
structure/style used by the "市场前景" slide (use similar shape types, content
blocks, and font/color attributes) so the slide titled "发展历程" becomes a usable
development-history template.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 97cf0a9c-76b0-4ac3-8af2-867620ed2b81

📥 Commits

Reviewing files that changed from the base of the PR and between a16eb24 and b8d79bb.

📒 Files selected for processing (50)
  • skills/lark-slides/SKILL.md
  • skills/lark-slides/references/slide-templates.md
  • skills/lark-slides/references/template-catalog.md
  • skills/lark-slides/references/template-index.json
  • skills/lark-slides/references/templates/administration--all_hands_meeting.xml
  • skills/lark-slides/references/templates/administration--annual_gala.xml
  • skills/lark-slides/references/templates/administration--company_intro.xml
  • skills/lark-slides/references/templates/administration--corporate_culture.xml
  • skills/lark-slides/references/templates/hr--employee_training.xml
  • skills/lark-slides/references/templates/hr--employee_training_workshop.xml
  • skills/lark-slides/references/templates/hr--onboarding.xml
  • skills/lark-slides/references/templates/marketing--brand_communication.xml
  • skills/lark-slides/references/templates/marketing--brand_logo_design.xml
  • skills/lark-slides/references/templates/marketing--brand_operations_plan.xml
  • skills/lark-slides/references/templates/marketing--business_plan.xml
  • skills/lark-slides/references/templates/marketing--marketing_plan.xml
  • skills/lark-slides/references/templates/marketing--marketing_strategy.xml
  • skills/lark-slides/references/templates/marketing--product_whitepaper.xml
  • skills/lark-slides/references/templates/marketing--roadshow_business_plan.xml
  • skills/lark-slides/references/templates/misc--book_sharing.xml
  • skills/lark-slides/references/templates/misc--club_event_plan.xml
  • skills/lark-slides/references/templates/misc--student_career_plan.xml
  • skills/lark-slides/references/templates/office--dark_general.xml
  • skills/lark-slides/references/templates/office--dept_annual_report.xml
  • skills/lark-slides/references/templates/office--light_general.xml
  • skills/lark-slides/references/templates/office--project_kickoff.xml
  • skills/lark-slides/references/templates/office--quarterly_review.xml
  • skills/lark-slides/references/templates/office--work_report.xml
  • skills/lark-slides/references/templates/office--work_summary.xml
  • skills/lark-slides/references/templates/office--work_summary_report.xml
  • skills/lark-slides/references/templates/operations--brand_logo_design.xml
  • skills/lark-slides/references/templates/operations--brand_operations_plan.xml
  • skills/lark-slides/references/templates/operations--marketing_plan.xml
  • skills/lark-slides/references/templates/operations--product_promotion.xml
  • skills/lark-slides/references/templates/personal--experience_sharing.xml
  • skills/lark-slides/references/templates/personal--personal_resume.xml
  • skills/lark-slides/references/templates/personal--promotion_defense.xml
  • skills/lark-slides/references/templates/personal--promotion_report.xml
  • skills/lark-slides/references/templates/personal--self_intro.xml
  • skills/lark-slides/references/templates/personal--teaching_sharing.xml
  • skills/lark-slides/references/templates/product--business_case_analysis.xml
  • skills/lark-slides/references/templates/product--market_analysis.xml
  • skills/lark-slides/references/templates/product--product_analysis.xml
  • skills/lark-slides/references/templates/product--product_intro.xml
  • skills/lark-slides/references/templates/product--product_promotion.xml
  • skills/lark-slides/references/templates/product--product_promotion_2.xml
  • skills/lark-slides/scripts/layout-lint.py
  • skills/lark-slides/scripts/layout_lint_test.py
  • skills/lark-slides/scripts/template-tool.py
  • skills/lark-slides/scripts/template_tool_test.py

Comment on lines +190 to +196
### brand_communication.xml — 品牌传播方案

- 17 页 | 色调:dark | 正式度:formal
- 配色:黑色图片底图,青绿渐变 `#59c2ff → #a1ffc8` 点缀,半透明白色卡片
- 结构:封面 → 目录 → 内容×8 → 数据 → 内容×5 → 结尾
- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `无` | 内容 `3-10, 12-16` | 结尾 `17`
- **适用**:品牌传播、公关方案。青绿科技感 + 暗色背景
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

The brand_communication page-type index does not match the template.

marketing--brand_communication.xml has divider slides at 3, 7, 10, and 14. With the current 分节 无 / 内容 3-10, 12-16 guidance, readers will extract divider pages as content and miss the real section boundaries.

Suggested correction
-- 结构:封面 → 目录 → 内容×8 → 数据 → 内容×5 → 结尾
-- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `无` | 内容 `3-10, 12-16` | 结尾 `17`
+- 结构:封面 → 目录 → [分节页 → 内容]×4 → 结尾
+- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `3, 7, 10, 14` | 内容 `4-6, 8-9, 11-13, 15-16` | 结尾 `17`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/template-catalog.md` around lines 190 - 196,
The page-type index for brand_communication.xml is wrong because divider slides
exist at 3, 7, 10, 14 in marketing--brand_communication.xml; update the "页型索引"
line so it lists the divider pages as sections and adjusts the content ranges
accordingly (keep 封面 `1` | 目录 `2`, change `分节 无` to `分节 3, 7, 10, 14` and change
`内容 3-10, 12-16` to `内容 4-6, 8-9, 11-13, 15-16`), leaving the 结尾 `17` unchanged
so readers won't treat divider slides as regular content.

Comment on lines +222 to +228
### brand_operations_plan.xml — 品牌运营计划

- 18 页 | 色调:light | 正式度:formal
- 配色:浅灰底 `#eff2f6`,中蓝 `#3c6fe5` 点缀
- 结构:封面 → 目录 → [分节页 → 内容]×5 → 结尾(5 个分节,结构最清晰)
- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `3, 6, 9, 12, 15` | 内容 `4-5, 7-8, 10-11, 13-14, 16-17` | 结尾 `18`
- **适用**:品牌运营、年度运营计划。蓝灰企业风,分节最规范
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

The brand_operations_plan index is off by one section.

marketing--brand_operations_plan.xml puts the last two divider slides at 13 and 15, not 12 and 15. The current ranges point “分节” readers at a content slide and skip the actual divider at 13.

Suggested correction
-- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `3, 6, 9, 12, 15` | 内容 `4-5, 7-8, 10-11, 13-14, 16-17` | 结尾 `18`
+- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `3, 6, 9, 13, 15` | 内容 `4-5, 7-8, 10-12, 14, 16-17` | 结尾 `18`
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### brand_operations_plan.xml — 品牌运营计划
- 18 页 | 色调:light | 正式度:formal
- 配色:浅灰底 `#eff2f6`,中蓝 `#3c6fe5` 点缀
- 结构:封面 → 目录 → [分节页 → 内容]×5 → 结尾(5 个分节,结构最清晰)
- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `3, 6, 9, 12, 15` | 内容 `4-5, 7-8, 10-11, 13-14, 16-17` | 结尾 `18`
- **适用**:品牌运营、年度运营计划。蓝灰企业风,分节最规范
### brand_operations_plan.xml — 品牌运营计划
- 18 页 | 色调:light | 正式度:formal
- 配色:浅灰底 `#eff2f6`,中蓝 `#3c6fe5` 点缀
- 结构:封面 → 目录 → [分节页 → 内容]×5 → 结尾(5 个分节,结构最清晰)
- 页型索引(建议先读):封面 `1` | 目录 `2` | 分节 `3, 6, 9, 13, 15` | 内容 `4-5, 7-8, 10-12, 14, 16-17` | 结尾 `18`
- **适用**:品牌运营、年度运营计划。蓝灰企业风,分节最规范
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/template-catalog.md` around lines 222 - 228,
The section-divider index in brand_operations_plan.xml is off: the fourth
divider is actually at page 13 (not 12), so update the “分节页” list to 3, 6, 9,
13, 15 and adjust the page-range map accordingly so content ranges read 4-5,
7-8, 10-12, 14, 16-17 (keeping cover=1, toc=2 and ending=18).

Comment on lines +7 to +12
<textStyles>
<title fontColor="#000000FF" fontSize="48"/>
<headline fontColor="#000000FF" fontSize="36"/>
<sub-headline fontColor="#000000FF"/>
<body fontColor="#000000FF"/>
<caption fontColor="#808080FF" fontSize="14"/>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Use light text defaults in the shared theme.

This deck is dark, but the shared <theme> still defaults title, headline, sub-headline, and body to black. Any new text that relies on theme styles instead of explicit per-shape colors will render unreadably.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/hr--employee_training.xml` around
lines 7 - 12, The shared theme's default textStyles (title, headline,
sub-headline, body) are set to black, causing unreadable text on a dark deck;
update the theme's <textStyles> entries for title, headline, sub-headline, and
body to use a light/white color (e.g., set fontColor to a white opaque value) so
any shapes that inherit these styles remain legible—leave caption as-is. Locate
the textStyles block containing the title, headline, sub-headline, and body tags
and change their fontColor attributes accordingly.

Comment on lines +49 to +78
<shape width="202" height="41" topLeftX="51" topLeftY="462" type="text">
<content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="14" autoFit="shape-auto-fit">
<p>输入你的互联网公司</p>
</content>
</shape>
<shape width="16" height="15" topLeftX="78" topLeftY="60" flipX="true" type="round2diag-rect">
<fill>
<fillColor color="rgba(255, 255, 255, 1)"/>
</fill>
</shape>
<shape width="36" height="16" topLeftX="48" topLeftY="50" rotation="90" flipX="true" type="round2diag-rect">
<fill>
<fillColor color="rgba(255, 255, 255, 1)"/>
</fill>
</shape>
<shape width="16" height="15" topLeftX="78" topLeftY="39" type="ellipse">
<fill>
<fillColor color="rgba(255, 255, 255, 1)"/>
</fill>
</shape>
<shape width="202" height="41" topLeftX="712" topLeftY="28" type="text">
<content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="14" fontFamily="undefined" color="rgba(255, 255, 255, 1)" backgroundColor="rgba(0, 0, 0, 0)" bold="false" italic="false" underline="false" strikethrough="false" list="none" listStyle="circle-hollow-square" textAlign="right" autoFit="shape-auto-fit">
<p list="none" textAlign="right">公司名字</p>
</content>
</shape>
<shape width="202" height="39" topLeftX="58" topLeftY="462" type="text">
<content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="12" fontFamily="undefined" color="rgba(255, 255, 255, 1)" backgroundColor="rgba(0, 0, 0, 0)" bold="false" italic="false" underline="false" strikethrough="false" list="none" listStyle="circle-hollow-square" textAlign="left" autoFit="shape-auto-fit">
<p>输入互联网公司</p>
</content>
</shape>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Consolidate the duplicate company placeholders on the cover.

Lines 49-53 and 74-78 place two nearly identical text boxes in the same bottom-left area. They will render on top of each other and make the cover harder to edit cleanly.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/hr--employee_training.xml` around
lines 49 - 78, There are two overlapping bottom-left company placeholder text
shapes (the shape with width="202" height="41" topLeftX="51" topLeftY="462"
type="text" and the other with width="202" height="39" topLeftX="58"
topLeftY="462" type="text"); remove or consolidate them into a single text shape
to avoid rendering overlap, choose the desired content and styling (e.g., keep
the more fully-specified element with fontSize, color, padding, and text
"输入互联网公司" or "输入你的互联网公司"), delete the duplicate element, and ensure the
remaining shape has the correct topLeftX/topLeftY, padding and font attributes
so the cover displays a single editable company placeholder.

Comment on lines +577 to +579
<shape width="192" height="44" topLeftX="852" topLeftY="717" type="text">
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="16"/>
</shape>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Delete the stray text box outside the slide canvas.

This shape sits completely outside the 960×540 page, so it never renders and is likely to fail the new bounds lint. It looks like a leftover artifact.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--brand_logo_design.xml`
around lines 577 - 579, Remove the stray <shape> element that sits outside the
slide canvas (the element with width="192" height="44" topLeftX="852"
topLeftY="717" type="text") from the template so it no longer appears in the
file; locate the shape block in marketing--brand_logo_design.xml and delete that
entire <shape>...</shape> node to prevent out-of-bounds lint failures and remove
the leftover artifact.

Comment on lines +1212 to +1273
<shape width="146" height="146" topLeftX="717" topLeftY="103" type="ellipse">
<fill>
<fillColor color="rgba(41, 185, 246, 1)"/>
</fill>
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="28" color="rgba(255, 255, 255, 0.949)" bold="true">
<p>
<strong>
<span color="rgba(255, 255, 255, 0.949)" fontSize="28">25%</span>
</strong>
</p>
</content>
</shape>
<shape width="146" height="44" topLeftX="717" topLeftY="249" type="text">
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="16" color="rgba(31, 35, 41, 1)" bold="true" textAlign="center">
<p>
<strong>
<span color="rgba(31, 35, 41, 1)" fontSize="16">#86DBFF</span>
</strong>
</p>
</content>
</shape>
<shape width="146" height="146" topLeftX="717" topLeftY="314" type="ellipse">
<fill>
<fillColor color="rgba(225, 234, 255, 1)"/>
</fill>
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="28" color="rgba(31, 35, 41, 1)" bold="true">
<p>
<strong>
<span fontSize="28">5%</span>
</strong>
</p>
</content>
</shape>
<shape width="146" height="44" topLeftX="717" topLeftY="460" type="text">
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="16" color="rgba(31, 35, 41, 1)" bold="true" textAlign="center">
<p>
<strong>
<span color="rgba(31, 35, 41, 1)" fontSize="16">#C6E7FF</span>
</strong>
</p>
</content>
</shape>
<shape width="146" height="146" topLeftX="509" topLeftY="103" type="ellipse">
<fill>
<fillColor color="rgba(0, 145, 227, 1)"/>
</fill>
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="30" color="rgba(251, 251, 251, 1)" bold="true">
<p>
<strong>
<span color="rgba(251, 251, 251, 1)" fontSize="30">60%</span>
</strong>
</p>
</content>
</shape>
<shape width="146" height="44" topLeftX="509" topLeftY="249" type="text">
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="16" color="rgba(31, 35, 41, 1)" bold="true" textAlign="center">
<p>
<strong>
<span color="rgba(31, 35, 41, 1)" fontSize="16">#1C66F6</span>
</strong>
</p>
</content>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

The displayed hex labels no longer match the actual fills.

On this palette slide, the circles are #29B9F6, #E1EAFF, and #0091E3, but the captions still say #86DBFF, #C6E7FF, and #1C66F6. That makes the template self-contradictory for anyone reusing the color spec.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--brand_logo_design.xml`
around lines 1212 - 1273, The hex labels under the color circles are incorrect;
update the three text <span> values to match their corresponding <fillColor>
values: for the ellipse with fillColor="rgba(41, 185, 246, 1)" (ellipse at
topLeftX="717" topLeftY="103") change the caption <span> from "#86DBFF" to
"#29B9F6"; for the ellipse with fillColor="rgba(225, 234, 255, 1)" (ellipse at
topLeftX="717" topLeftY="314") change the caption <span> from "#C6E7FF" to
"#E1EAFF"; and for the ellipse with fillColor="rgba(0, 145, 227, 1)" (ellipse at
topLeftX="509" topLeftY="103") change the caption <span> from "#1C66F6" to
"#0091E3".

Comment on lines +1040 to +1063
<shape width="225" height="41" topLeftX="32" topLeftY="167" type="text">
<content paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="14" color="rgba(43, 47, 54, 1)" bold="false">
<p> Activity Ideas</p>
</content>
</shape>
<shape width="207" height="74" topLeftX="32" topLeftY="239" type="text">
<content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="12" color="rgba(124, 125, 126, 1)">
<p>
<span color="rgba(124, 125, 126, 1)">描述相关的信息以解释你的标题。现在就开始打字吧。写任何你想表达的内容</span>
</p>
</content>
</shape>
<shape width="207" height="74" topLeftX="32" topLeftY="317" type="text">
<content textType="caption" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="12" color="rgba(124, 125, 126, 1)">
<p>
<span color="rgba(124, 125, 126, 1)">描述相关的信息以解释你的标题。现在就开始打字吧。写任何你想表达的内容</span>
</p>
</content>
</shape>
<shape width="270" height="92" topLeftX="27" topLeftY="93" type="text">
<content textType="headline" paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10" fontSize="48" color="rgba(60, 111, 229, 1)" bold="true">
<p>活动思路</p>
</content>
</shape>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Rename the section 05 content slides to match 营销推广.

After the 05 / 营销推广 divider, these two slides still use Activity Ideas / 活动思路. That breaks the section narrative and makes the page-type index harder to trust.

Suggested fix
-          <p> Activity Ideas</p>
+          <p>Marketing Promotion</p>
...
-          <p>活动思路</p>
+          <p>营销推广</p>

Also applies to: 1170-1192

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--brand_operations_plan.xml`
around lines 1040 - 1063, Rename the two content/title shapes that still say
"Activity Ideas" and the headline "活动思路" to use the section name "营销推广" so they
match the `05 / 营销推广` divider; specifically update the shape containing the text
node with "<p> Activity Ideas</p>" and the shape with the headline "<p>活动思路</p>"
to "<p>营销推广</p>" (and apply the same change to the duplicate slides referenced
at lines 1170-1192).

Comment on lines +7 to +13
<textStyles>
<title fontColor="#000000FF" fontSize="48"/>
<headline fontColor="#000000FF" fontSize="28"/>
<sub-headline fontColor="#000000FF"/>
<body fontColor="#000000FF"/>
<caption fontColor="#808080FF"/>
</textStyles>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Theme default text colors clash with dark background.

The theme declares background.fillColor as rgba(11, 11, 11, 1) (Line 5), but the default title/headline/sub-headline/body fontColor are all #000000FF (black). On the slides that don't override the per-element color, this would render black text on a near-black background. Most slides in this template do override the color in <span>/<content> to white, but the theme defaults are misleading and risky for any downstream slide that omits an explicit color.

Consider either dropping the explicit fontColor from these textStyles so per-slide colors win cleanly, or aligning the defaults with the dark background (e.g., #FFFFFFFF).

🛠️ Suggested theme fix
     <textStyles>
-      <title fontColor="#000000FF" fontSize="48"/>
-      <headline fontColor="#000000FF" fontSize="28"/>
-      <sub-headline fontColor="#000000FF"/>
-      <body fontColor="#000000FF"/>
-      <caption fontColor="#808080FF"/>
+      <title fontColor="#FFFFFFFF" fontSize="48"/>
+      <headline fontColor="#FFFFFFFF" fontSize="28"/>
+      <sub-headline fontColor="#FFFFFFFF"/>
+      <body fontColor="#FFFFFFFF"/>
+      <caption fontColor="#808080FF"/>
     </textStyles>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@skills/lark-slides/references/templates/marketing--marketing_strategy.xml`
around lines 7 - 13, The theme sets a dark background via background.fillColor
but leaves textStyles.title, headline, sub-headline and body fontColor as black
(`#000000FF`), which will render unreadable default text; update the theme so
defaults match the dark background by either removing explicit fontColor entries
from textStyles (letting per-slide <span>/<content> colors take precedence) or
change those textStyles fontColor values to white (`#FFFFFFFF`) while keeping
caption as-is, ensuring you edit the textStyles block (title, headline,
sub-headline, body) to prevent black-on-dark defaults.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XL Architecture-level or global-impact change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants