Skip to content

update examples#3

Merged
IceyLiu merged 1 commit into
mainfrom
docs
Mar 21, 2026
Merged

update examples#3
IceyLiu merged 1 commit into
mainfrom
docs

Conversation

@IceyLiu

@IceyLiu IceyLiu commented Mar 21, 2026

Copy link
Copy Markdown
Contributor

updated to a new batch of styles
deleted the redundant documents

@IceyLiu IceyLiu merged commit f52f4bc into main Mar 21, 2026
goworm pushed a commit that referenced this pull request Mar 27, 2026
… subprocess

Python can call OfficeCli via subprocess with JSON output parsed by json.loads(),
making integration cost much lower than initially assessed. Updated rankings:
OfficeCli moves from #4 to #3 in traditional Python development scenario.

https://claude.ai/code/session_012F47kVKAP63YQe6hdWhc1b
goworm pushed a commit that referenced this pull request Mar 27, 2026
goworm pushed a commit that referenced this pull request Apr 2, 2026
… subprocess

Python can call OfficeCli via subprocess with JSON output parsed by json.loads(),
making integration cost much lower than initially assessed. Updated rankings:
OfficeCli moves from #4 to #3 in traditional Python development scenario.

https://claude.ai/code/session_012F47kVKAP63YQe6hdWhc1b
goworm pushed a commit that referenced this pull request Apr 2, 2026
goworm added a commit that referenced this pull request Apr 17, 2026
…dHeaders)

Before: the header was emitted only on page 1 and always used whichever
HeaderPart happened to be first in the document. The footer likewise
ignored the first/even/default variants. This breaks virtually every
formal Chinese technical report (GB/T style), theses, and legal docs,
all of which rely on:
  - <w:titlePg/> on the section → first-page header is distinct (封面).
  - <w:evenAndOddHeaders/> in document settings → even/odd pages swap.

Changes:
- BuildSectionHfBundles resolves each section's HeaderReference /
  FooterReference elements, buckets them by type (first / default /
  even), and pre-renders each to an HTML string keyed by section idx.
- PickHeaderFooter applies the selection rules per page:
    * first-page-of-section + titlePg → First
    * evenAndOddHeaders on + even page  → Even
    * otherwise                         → Default (legacy fallback when
                                          the section defines no variants).
- Page-emit loop now tracks activeSectionIdx (via existing SECT
  markers) and whether the current page is the first of that section.
  Header now lands on every page, not just page 1.
- Footer PAGE / NUMPAGES substitution runs against the picked footer
  variant, not the global one, so even-footer page numbers render too.

Fixes KNOWN_ISSUES.md #3.
goworm added a commit that referenced this pull request Apr 17, 2026
…er bugs

- tester #2 (JS): tblHeader continuation iterated table.querySelectorAll('tr')
  which pulled nested subtable rows into the split, mangling nested structures.
  Filter to top-level rows via tr.closest('table')===table.
- tester #3 (JS): restart='newSection' compared only prev/current restart value,
  so two adjacent sections both declaring newSection never triggered reset.
  Page-wrapper now carries data-section-idx; JS resets the running counter on
  section boundary, not on restart-value change.
- tester #4: altChunk ContentType equality failed on 'text/html; charset=utf-8'
  and other '+xml' variants — HTML payload fell through to the RTF stripper.
  Split media-type from params and accept xhtml+xml variants.
- fuzzer A: pgSz w/h parsed via UInt32Value.Value crashed on negative raw
  attrs. Wrap Width/Height access in a swallow-to-fallback helper.
- fuzzer B/C: lnNumType CountBy/Start/Distance typed as Int16Value; malformed
  raw values (non-numeric, overflow) threw on .Value. Parse InnerText manually
  via short.TryParse / int.TryParse.
- fuzzer D/E: huge w:ilvl (10000, Int32.MaxValue) either popped an empty
  open-tag stack (crash) or inflated the HTML by 50× per paragraph (DoS).
  Clamp ilvl to OOXML-legal [0,8].
goworm added a commit that referenced this pull request May 2, 2026
…light, drop static contrast Gate 4

Min cycle and Delivery Gate were two passes at the same checks: Min
cycle #2 (view html) overlapped Gate 5, #3 (token query) overlapped
Gate 2's grep, #4 (close+validate) overlapped Gate 1, #5 (target
viewer) was a 4-line restatement of the view-html-vs-runtime rule
already in Common Workflow #6. The intro itself called Min cycle
"warmup" while Delivery Gate did the real work.

Replace the 6-step Min cycle with a single-line Pre-flight using
view annotated (the one Min-cycle item Gates don't cover — font/size
violations and overflow surfaced before the gate run). Move target
viewer + fix-and-rerun guidance into a tight "After all gates pass"
subsection at the end of QA.

Drop the static-contrast Gate 4 (query+jq dark-fill scan): its
hardcoded list of five hex values misses any deck using a custom
dark fill, while Gate 5's visual review catches dark-on-dark across
all fills. Renumber: Gate 5 → Gate 4. Update cross-references
(intro line, status banner, "Gates 1-4 cannot see rendered slides"
→ "Gates 1-3", "Gates 2-5 are how you catch" → "Gates 2-4").
goworm added a commit that referenced this pull request May 2, 2026
Gate 1 was a 4-line wrapper around officecli validate that captured
output, ran a redundant grep on it, and re-printed it on failure —
validate already exits non-zero on schema error and prints its own
output. Reduce to a single line with the canonical pattern.

Drop Gate 2 (token-leak grep) entirely. Most of its branches
($VAR$, {{name}}, lorem, xxxx, <TODO>) catch failure modes from
template-substitution workflows that this skill does not teach;
agents that build from real user content never produce them. The
remaining branches (\$\t\n shell-escape literals and empty
parens/brackets from shell-stripped chart titles) are visible in
Gate 3's per-slide HTML walk and are also prevented at write time
by the Shell & Execution Discipline section.

Renumber: Gate 3 (slide order) → Gate 2, Gate 4 (visual audit) → Gate 3.
Update all cross-references — Common Workflow #3, recipe (d) reference,
intro line ("Three checks"), banner messages, and the closing line.
Drop the Common Pitfalls row about "[ ] empty-bracket checkboxes
false-positive in Gate 2" since the check it warned about is gone.
goworm added a commit that referenced this pull request May 2, 2026
The previous Gate 2 dumped slide titles via query+jq and asked the
agent to manually compare against the build plan — same subjective
mental check that Gate 3's order-sanity item already covers. Worse,
the first query (shape[@name=Title]) silently fell through every
time because no recipe in this skill names title shapes "Title", so
the gate landed on a fallback that printed all shapes truncated at
40 entries.

Replace with a deterministic view-issues pass: run officecli view
issues, filter the expected layout=blank "Slide has no title" noise,
REJECT on any remaining [X#] issue. This catches real problems
(text overflow, structure issues) automatically instead of asking
the agent to spot them.

Slide-order audit moves entirely to Gate 3's order-sanity question.
Update Common Workflow #3 and recipe (d') cross-references to point
at Gate 3 instead of Gate 2. Update the intro line and the closing
"Gates 2-3 are how you catch X, Y, Z" sentence.
NextDoorLaoHuang-HF pushed a commit to NextDoorLaoHuang-HF/OfficeCLI that referenced this pull request Jun 10, 2026
NextDoorLaoHuang-HF pushed a commit to NextDoorLaoHuang-HF/OfficeCLI that referenced this pull request Jun 10, 2026
…dHeaders)

Before: the header was emitted only on page 1 and always used whichever
HeaderPart happened to be first in the document. The footer likewise
ignored the first/even/default variants. This breaks virtually every
formal Chinese technical report (GB/T style), theses, and legal docs,
all of which rely on:
  - <w:titlePg/> on the section → first-page header is distinct (封面).
  - <w:evenAndOddHeaders/> in document settings → even/odd pages swap.

Changes:
- BuildSectionHfBundles resolves each section's HeaderReference /
  FooterReference elements, buckets them by type (first / default /
  even), and pre-renders each to an HTML string keyed by section idx.
- PickHeaderFooter applies the selection rules per page:
    * first-page-of-section + titlePg → First
    * evenAndOddHeaders on + even page  → Even
    * otherwise                         → Default (legacy fallback when
                                          the section defines no variants).
- Page-emit loop now tracks activeSectionIdx (via existing SECT
  markers) and whether the current page is the first of that section.
  Header now lands on every page, not just page 1.
- Footer PAGE / NUMPAGES substitution runs against the picked footer
  variant, not the global one, so even-footer page numbers render too.

Fixes KNOWN_ISSUES.md iOfficeAI#3.
NextDoorLaoHuang-HF pushed a commit to NextDoorLaoHuang-HF/OfficeCLI that referenced this pull request Jun 10, 2026
…er bugs

- tester iOfficeAI#2 (JS): tblHeader continuation iterated table.querySelectorAll('tr')
  which pulled nested subtable rows into the split, mangling nested structures.
  Filter to top-level rows via tr.closest('table')===table.
- tester iOfficeAI#3 (JS): restart='newSection' compared only prev/current restart value,
  so two adjacent sections both declaring newSection never triggered reset.
  Page-wrapper now carries data-section-idx; JS resets the running counter on
  section boundary, not on restart-value change.
- tester iOfficeAI#4: altChunk ContentType equality failed on 'text/html; charset=utf-8'
  and other '+xml' variants — HTML payload fell through to the RTF stripper.
  Split media-type from params and accept xhtml+xml variants.
- fuzzer A: pgSz w/h parsed via UInt32Value.Value crashed on negative raw
  attrs. Wrap Width/Height access in a swallow-to-fallback helper.
- fuzzer B/C: lnNumType CountBy/Start/Distance typed as Int16Value; malformed
  raw values (non-numeric, overflow) threw on .Value. Parse InnerText manually
  via short.TryParse / int.TryParse.
- fuzzer D/E: huge w:ilvl (10000, Int32.MaxValue) either popped an empty
  open-tag stack (crash) or inflated the HTML by 50× per paragraph (DoS).
  Clamp ilvl to OOXML-legal [0,8].
NextDoorLaoHuang-HF pushed a commit to NextDoorLaoHuang-HF/OfficeCLI that referenced this pull request Jun 10, 2026
…light, drop static contrast Gate 4

Min cycle and Delivery Gate were two passes at the same checks: Min
cycle iOfficeAI#2 (view html) overlapped Gate 5, iOfficeAI#3 (token query) overlapped
Gate 2's grep, iOfficeAI#4 (close+validate) overlapped Gate 1, iOfficeAI#5 (target
viewer) was a 4-line restatement of the view-html-vs-runtime rule
already in Common Workflow iOfficeAI#6. The intro itself called Min cycle
"warmup" while Delivery Gate did the real work.

Replace the 6-step Min cycle with a single-line Pre-flight using
view annotated (the one Min-cycle item Gates don't cover — font/size
violations and overflow surfaced before the gate run). Move target
viewer + fix-and-rerun guidance into a tight "After all gates pass"
subsection at the end of QA.

Drop the static-contrast Gate 4 (query+jq dark-fill scan): its
hardcoded list of five hex values misses any deck using a custom
dark fill, while Gate 5's visual review catches dark-on-dark across
all fills. Renumber: Gate 5 → Gate 4. Update cross-references
(intro line, status banner, "Gates 1-4 cannot see rendered slides"
→ "Gates 1-3", "Gates 2-5 are how you catch" → "Gates 2-4").
NextDoorLaoHuang-HF pushed a commit to NextDoorLaoHuang-HF/OfficeCLI that referenced this pull request Jun 10, 2026
Gate 1 was a 4-line wrapper around officecli validate that captured
output, ran a redundant grep on it, and re-printed it on failure —
validate already exits non-zero on schema error and prints its own
output. Reduce to a single line with the canonical pattern.

Drop Gate 2 (token-leak grep) entirely. Most of its branches
($VAR$, {{name}}, lorem, xxxx, <TODO>) catch failure modes from
template-substitution workflows that this skill does not teach;
agents that build from real user content never produce them. The
remaining branches (\$\t\n shell-escape literals and empty
parens/brackets from shell-stripped chart titles) are visible in
Gate 3's per-slide HTML walk and are also prevented at write time
by the Shell & Execution Discipline section.

Renumber: Gate 3 (slide order) → Gate 2, Gate 4 (visual audit) → Gate 3.
Update all cross-references — Common Workflow iOfficeAI#3, recipe (d) reference,
intro line ("Three checks"), banner messages, and the closing line.
Drop the Common Pitfalls row about "[ ] empty-bracket checkboxes
false-positive in Gate 2" since the check it warned about is gone.
NextDoorLaoHuang-HF pushed a commit to NextDoorLaoHuang-HF/OfficeCLI that referenced this pull request Jun 10, 2026
The previous Gate 2 dumped slide titles via query+jq and asked the
agent to manually compare against the build plan — same subjective
mental check that Gate 3's order-sanity item already covers. Worse,
the first query (shape[@name=Title]) silently fell through every
time because no recipe in this skill names title shapes "Title", so
the gate landed on a fallback that printed all shapes truncated at
40 entries.

Replace with a deterministic view-issues pass: run officecli view
issues, filter the expected layout=blank "Slide has no title" noise,
REJECT on any remaining [X#] issue. This catches real problems
(text overflow, structure issues) automatically instead of asking
the agent to spot them.

Slide-order audit moves entirely to Gate 3's order-sanity question.
Update Common Workflow iOfficeAI#3 and recipe (d') cross-references to point
at Gate 3 instead of Gate 2. Update the intro line and the closing
"Gates 2-3 are how you catch X, Y, Z" sentence.
goworm added a commit that referenced this pull request Jun 16, 2026
…dHeaders)

Before: the header was emitted only on page 1 and always used whichever
HeaderPart happened to be first in the document. The footer likewise
ignored the first/even/default variants. This breaks virtually every
formal Chinese technical report (GB/T style), theses, and legal docs,
all of which rely on:
  - <w:titlePg/> on the section → first-page header is distinct (封面).
  - <w:evenAndOddHeaders/> in document settings → even/odd pages swap.

Changes:
- BuildSectionHfBundles resolves each section's HeaderReference /
  FooterReference elements, buckets them by type (first / default /
  even), and pre-renders each to an HTML string keyed by section idx.
- PickHeaderFooter applies the selection rules per page:
    * first-page-of-section + titlePg → First
    * evenAndOddHeaders on + even page  → Even
    * otherwise                         → Default (legacy fallback when
                                          the section defines no variants).
- Page-emit loop now tracks activeSectionIdx (via existing SECT
  markers) and whether the current page is the first of that section.
  Header now lands on every page, not just page 1.
- Footer PAGE / NUMPAGES substitution runs against the picked footer
  variant, not the global one, so even-footer page numbers render too.

Fixes KNOWN_ISSUES.md #3.
goworm added a commit that referenced this pull request Jun 16, 2026
…er bugs

- tester #2 (JS): tblHeader continuation iterated table.querySelectorAll('tr')
  which pulled nested subtable rows into the split, mangling nested structures.
  Filter to top-level rows via tr.closest('table')===table.
- tester #3 (JS): restart='newSection' compared only prev/current restart value,
  so two adjacent sections both declaring newSection never triggered reset.
  Page-wrapper now carries data-section-idx; JS resets the running counter on
  section boundary, not on restart-value change.
- tester #4: altChunk ContentType equality failed on 'text/html; charset=utf-8'
  and other '+xml' variants — HTML payload fell through to the RTF stripper.
  Split media-type from params and accept xhtml+xml variants.
- fuzzer A: pgSz w/h parsed via UInt32Value.Value crashed on negative raw
  attrs. Wrap Width/Height access in a swallow-to-fallback helper.
- fuzzer B/C: lnNumType CountBy/Start/Distance typed as Int16Value; malformed
  raw values (non-numeric, overflow) threw on .Value. Parse InnerText manually
  via short.TryParse / int.TryParse.
- fuzzer D/E: huge w:ilvl (10000, Int32.MaxValue) either popped an empty
  open-tag stack (crash) or inflated the HTML by 50× per paragraph (DoS).
  Clamp ilvl to OOXML-legal [0,8].
goworm added a commit that referenced this pull request Jun 16, 2026
…light, drop static contrast Gate 4

Min cycle and Delivery Gate were two passes at the same checks: Min
cycle #2 (view html) overlapped Gate 5, #3 (token query) overlapped
Gate 2's grep, #4 (close+validate) overlapped Gate 1, #5 (target
viewer) was a 4-line restatement of the view-html-vs-runtime rule
already in Common Workflow #6. The intro itself called Min cycle
"warmup" while Delivery Gate did the real work.

Replace the 6-step Min cycle with a single-line Pre-flight using
view annotated (the one Min-cycle item Gates don't cover — font/size
violations and overflow surfaced before the gate run). Move target
viewer + fix-and-rerun guidance into a tight "After all gates pass"
subsection at the end of QA.

Drop the static-contrast Gate 4 (query+jq dark-fill scan): its
hardcoded list of five hex values misses any deck using a custom
dark fill, while Gate 5's visual review catches dark-on-dark across
all fills. Renumber: Gate 5 → Gate 4. Update cross-references
(intro line, status banner, "Gates 1-4 cannot see rendered slides"
→ "Gates 1-3", "Gates 2-5 are how you catch" → "Gates 2-4").
goworm added a commit that referenced this pull request Jun 16, 2026
Gate 1 was a 4-line wrapper around officecli validate that captured
output, ran a redundant grep on it, and re-printed it on failure —
validate already exits non-zero on schema error and prints its own
output. Reduce to a single line with the canonical pattern.

Drop Gate 2 (token-leak grep) entirely. Most of its branches
($VAR$, {{name}}, lorem, xxxx, <TODO>) catch failure modes from
template-substitution workflows that this skill does not teach;
agents that build from real user content never produce them. The
remaining branches (\$\t\n shell-escape literals and empty
parens/brackets from shell-stripped chart titles) are visible in
Gate 3's per-slide HTML walk and are also prevented at write time
by the Shell & Execution Discipline section.

Renumber: Gate 3 (slide order) → Gate 2, Gate 4 (visual audit) → Gate 3.
Update all cross-references — Common Workflow #3, recipe (d) reference,
intro line ("Three checks"), banner messages, and the closing line.
Drop the Common Pitfalls row about "[ ] empty-bracket checkboxes
false-positive in Gate 2" since the check it warned about is gone.
goworm added a commit that referenced this pull request Jun 16, 2026
The previous Gate 2 dumped slide titles via query+jq and asked the
agent to manually compare against the build plan — same subjective
mental check that Gate 3's order-sanity item already covers. Worse,
the first query (shape[@name=Title]) silently fell through every
time because no recipe in this skill names title shapes "Title", so
the gate landed on a fallback that printed all shapes truncated at
40 entries.

Replace with a deterministic view-issues pass: run officecli view
issues, filter the expected layout=blank "Slide has no title" noise,
REJECT on any remaining [X#] issue. This catches real problems
(text overflow, structure issues) automatically instead of asking
the agent to spot them.

Slide-order audit moves entirely to Gate 3's order-sanity question.
Update Common Workflow #3 and recipe (d') cross-references to point
at Gate 3 instead of Gate 2. Update the intro line and the closing
"Gates 2-3 are how you catch X, Y, Z" sentence.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant