Appearance
Agent Development Guide
This repository is intended to be maintainable by both humans and coding agents. Agent-driven changes should be grounded in local evidence and verified with executable checks.
Default Workflow
- Inspect the current checkout before answering or editing.
- Preserve unrelated dirty state.
- Keep source changes in
src/and tests intest/. - Treat
dist/as generated artifacts unless the task explicitly asks to refresh package outputs. - Prefer existing repository scripts and local patterns over new tooling.
- Verify the narrowest relevant behavior before finishing.
OOXML Workflow
Before changing emitted OOXML, read OOXML agent context.
Use:
- the OOXML MCP server for ECMA-376 structure, schema children, attributes, enums, namespaces, and OPC metadata;
- the Microsoft Learn MCP server for Microsoft Open Specifications, PowerPoint-specific behavior, and Open XML SDK behavior;
- minimal generated fixtures in
test/schema.test.jsfor regression evidence.
Avoid copying large standards text into the repository. Keep notes small and reference section numbers or source pages when they matter.
Package Support Guardrails
Do not reintroduce the dropped upstream targets unless the project direction is explicitly changed:
- CommonJS support;
- IIFE/global browser bundle support;
- direct CDN script-tag support as a maintained package workflow.
The package smoke test should continue to prove that old artifacts are absent and that @shbernal/pptxgenjs, @shbernal/pptxgenjs/core, @shbernal/pptxgenjs/node, @shbernal/pptxgenjs/browser, and @shbernal/pptxgenjs/standalone resolve.
Upstream Signals
When reviewing upstream issues or pull requests for potential local work, use upstream signal workflow and record decisions in docs/upstream-signals.yml.
Treat upstream as a source of evidence for PPTX generation bugs and missing features, not as a source of package-target decisions. Signals about PowerPoint repair prompts, invalid OOXML, content types, relationships, chart/table/media serialization, and current TypeScript or ESM behavior can be target candidates. Signals that depend on CommonJS, IIFE/global bundles, direct CDN script tags, or legacy generated artifact names are non-target unless the documented project target changes first.
Communication Expectations
When proposing or making a change, distinguish:
- current supported behavior;
- legacy behavior still present in demos or old docs;
- desired future behavior;
- verification that was actually run.