Add algorithmic-art skill for generative p5.js art creation#164
Add algorithmic-art skill for generative p5.js art creation#164cseagraves wants to merge 9 commits intoZie619:mainfrom
Conversation
…trategy - Revised project overview and tool integration strategy for clarity. - Consolidated development commands and added essential API usage examples. - Improved structure for FastAPI Workflow Browser and n8n MCP sections. - Added key statistics and common usage examples for better user guidance.
…and structure - Deleted the CLAUDE_ZH.md file to streamline documentation. - Enhanced CLAUDE.md with updated tool integration strategies and essential commands. - Improved organization of sections for better user navigation and understanding.
- Updated sections for better readability and user navigation. - Added new examples and clarified existing tool integration strategies. - Enhanced overall structure to improve documentation flow.
…tion - Revised descriptions and globs for various workflow rules to reflect current practices. - Expanded sections on workflow development patterns, testing methodologies, deployment strategies, and security practices. - Improved structure and categorization for better navigation and understanding of multi-agent workflows and integration examples.
…ures and improved structure - Updated the Market Intelligence Agent to include new nodes for market news monitoring, sentiment analysis, and economic indicators. - Improved the integration of various data sources for comprehensive market insights. - Enhanced documentation for better clarity on the agent's purpose, functionality, and stakeholder applications. - Streamlined connections between nodes for more efficient data processing and analysis.
… and usability - Improved data processing efficiency by refining node connections and integration methods. - Added new features for real-time market news and sentiment analysis. - Updated documentation to reflect recent changes and provide clearer guidance for users.
Pulls in 63 new commits from the upstream repository including: - Interactive workflow canvas preview - CI/CD pipeline and Docker improvements - GitHub Pages deployment - Security fixes (parameterized SQL queries) - Repository structure cleanup - MIT license addition Conflict resolution: - .dockerignore, Dockerfile, docker-compose.yml: adopted upstream versions - CLAUDE.md: kept fork's customized version - CLAUDE_ZH.md: removed (previously deleted in fork) https://claude.ai/code/session_015mHpqLsY5KN4Rj5n8FpMDK
There was a problem hiding this comment.
Pull request overview
Adds several new skills and supporting assets: an MCP server builder guide, frontend and canvas design skills, brand styling helpers, a p5.js algorithmic-art template, and a substantial set of OOXML schemas and utilities for DOCX/PPTX validation and packaging.
Changes:
- Introduces multiple new skills (
mcp-builder,frontend-design,canvas-design,brand-guidelines,algorithmic-art) with detailed SKILL docs and appropriate licensing. - Adds DOCX/OOXML support assets including XML templates, XSD schemas, and Python scripts for unpacking, validating, and repacking Office documents.
- Provides a structured p5.js generative art template emphasizing seeded randomness, parameterization, and code organization.
Reviewed changes
Copilot reviewed 97 out of 615 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
.claude/skills/mcp-builder/SKILL.md |
Adds an MCP server development guide outlining research, implementation, testing, and evaluation phases. |
.claude/skills/mcp-builder/LICENSE.txt |
Adds Apache 2.0 license for the MCP builder skill content. |
.claude/skills/frontend-design/SKILL.md |
Defines a frontend design skill focusing on strong aesthetics, typography, color, and motion guidance. |
.claude/skills/frontend-design/LICENSE.txt |
Adds Apache 2.0 license for the frontend-design skill. |
.claude/skills/docx/scripts/templates/people.xml |
Adds a minimal w15:people OOXML template part. |
.claude/skills/docx/scripts/templates/commentsIds.xml |
Adds a w16cid:commentsIds OOXML template with full namespace declarations. |
.claude/skills/docx/scripts/templates/commentsExtensible.xml |
Adds a w16cex:commentsExtensible OOXML template. |
.claude/skills/docx/scripts/templates/commentsExtended.xml |
Adds a w15:commentsEx OOXML template. |
.claude/skills/docx/scripts/templates/comments.xml |
Adds a base w:comments OOXML template. |
.claude/skills/docx/scripts/__init__.py |
Makes the scripts directory a Python package to support relative imports in tests/tools. |
.claude/skills/docx/ooxml/scripts/validation/__init__.py |
Exposes validation classes (BaseSchemaValidator, DOCXSchemaValidator, PPTXSchemaValidator, RedliningValidator) via __all__ for easier importing. |
.claude/skills/docx/ooxml/scripts/validate.py |
Adds a CLI for validating unpacked Office documents using schema and redlining validators. |
.claude/skills/docx/ooxml/scripts/unpack.py |
Adds a script to unzip Office files and pretty-print all XML/RELs parts, including RSID suggestion for DOCX. |
.claude/skills/docx/ooxml/scripts/pack.py |
Adds a script to re-pack Office directories into .docx/.pptx/.xlsx with XML condensation and optional validation via soffice. |
.claude/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd |
Adds Microsoft Word 2015 symex schema. |
.claude/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd |
Adds Word 2020 sdtdatahash schema. |
.claude/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd |
Adds Word 2016 comments ID schema. |
.claude/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd |
Adds Word 2018 comments extensible schema. |
.claude/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd |
Adds Word 2018 extension list schema. |
.claude/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd |
Adds Word 2012 schema for comments, people, and SDTs. |
.claude/skills/docx/ooxml/schemas/mce/mc.xsd |
Adds markup-compatibility (MCE) schema used by OOXML. |
.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd |
Adds ECMA OPC relationships schema (4th edition). |
.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd |
Adds ECMA OPC digital signature schema. |
.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd |
Adds ECMA OPC core properties schema. |
.claude/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd |
Adds ECMA OPC content types schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd |
Adds XML namespace schema used by OOXML specs. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd |
Adds VML Wordprocessing Drawing schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd |
Adds VML Spreadsheet Drawing schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd |
Adds VML Presentation Drawing schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd |
Adds shared relationship reference schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd |
Adds extended document properties schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd |
Adds custom document properties schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd |
Adds custom XML schema library schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd |
Adds custom XML datastore properties schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd |
Adds shared simple types schema used across parts. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd |
Adds bibliography schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd |
Adds additional characteristics schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd |
Adds DrawingML picture schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd |
Adds DrawingML lockedCanvas schema. |
.claude/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd |
Adds DrawingML chartDrawing schema. |
.claude/skills/docx/LICENSE.txt |
Adds Anthropic internal license for the DOCX skill assets. |
.claude/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt |
Adds SIL OFL license notice for Young Serif font. |
.claude/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt |
Adds SIL OFL license notice for Work Sans font. |
.claude/skills/canvas-design/canvas-fonts/Tektur-OFL.txt |
Adds SIL OFL license notice for Tektur font. |
.claude/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt |
Adds SIL OFL license notice for Smooch Sans font. |
.claude/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt |
Adds SIL OFL license notice for Silkscreen font. |
.claude/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt |
Adds SIL OFL license notice for Red Hat Mono font. |
.claude/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt |
Adds SIL OFL license notice for Poiret One font. |
.claude/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt |
Adds SIL OFL license notice for Pixelify Sans font. |
.claude/skills/canvas-design/canvas-fonts/Outfit-OFL.txt |
Adds SIL OFL license notice for Outfit font. |
.claude/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt |
Adds SIL OFL license notice for Nothing You Could Do font. |
.claude/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt |
Adds SIL OFL license notice for National Park font. |
.claude/skills/canvas-design/canvas-fonts/Lora-OFL.txt |
Adds SIL OFL license notice for Lora font. |
.claude/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt |
Adds SIL OFL license notice for Libre Baskerville font. |
.claude/skills/canvas-design/canvas-fonts/Jura-OFL.txt |
Adds SIL OFL license notice for Jura font. |
.claude/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt |
Adds SIL OFL license notice for JetBrains Mono font. |
.claude/skills/canvas-design/canvas-fonts/Italiana-OFL.txt |
Adds SIL OFL license notice for Italiana font. |
.claude/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt |
Adds SIL OFL license notice for Instrument Sans font. |
.claude/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt |
Adds SIL OFL license notice for IBM Plex Mono font. |
.claude/skills/canvas-design/canvas-fonts/Gloock-OFL.txt |
Adds SIL OFL license notice for Gloock font. |
.claude/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt |
Adds SIL OFL license notice for Geist Mono font. |
.claude/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt |
Adds SIL OFL license notice for Erica One font. |
.claude/skills/canvas-design/canvas-fonts/DMMono-OFL.txt |
Adds SIL OFL license notice for DM Mono font. |
.claude/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt |
Adds SIL OFL license notice for Crimson Pro font. |
.claude/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt |
Adds SIL OFL license notice for Bricolage Grotesque font. |
.claude/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt |
Adds SIL OFL license notice for Boldonse font. |
.claude/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt |
Adds SIL OFL license notice for Big Shoulders font. |
.claude/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt |
Adds SIL OFL license notice for Arsenal SC font. |
.claude/skills/canvas-design/SKILL.md |
Defines the canvas-design skill and its design philosophy / execution process. |
.claude/skills/canvas-design/LICENSE.txt |
Adds Apache 2.0 license for canvas-design skill. |
.claude/skills/brand-guidelines/SKILL.md |
Provides Anthropic brand styling guidelines (colors, typography) for artifacts. |
.claude/skills/brand-guidelines/LICENSE.txt |
Adds Apache 2.0 license for brand-guidelines skill. |
.claude/skills/algorithmic-art/templates/generator_template.js |
Adds a structured p5.js generative art template emphasizing parameters, seeding, classes, and utilities. |
.claude/skills/algorithmic-art/LICENSE.txt |
Adds Apache 2.0 license for algorithmic-art skill. |
Comments suppressed due to low confidence (1)
.claude/skills/algorithmic-art/templates/generator_template.js:1
- The helper
colorFromPaletteassumesparams.colorPaletteis defined, but the template only mentions it in a comment rather than providing a default array, which can lead to runtime errors if users call the helper without first adding that property. Providing a simple defaultcolorPaletteentry inparams(which users can customize) will make the template immediately runnable and safer to extend.
/**
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| original_file = Path(args.original) | ||
| file_extension = original_file.suffix.lower() | ||
| assert unpacked_dir.is_dir(), f"Error: {unpacked_dir} is not a directory" | ||
| assert original_file.is_file(), f"Error: {original_file} is not a file" | ||
| assert file_extension in [".docx", ".pptx", ".xlsx"], ( | ||
| f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" | ||
| ) | ||
|
|
||
| # Run validations | ||
| match file_extension: | ||
| case ".docx": | ||
| validators = [DOCXSchemaValidator, RedliningValidator] | ||
| case ".pptx": | ||
| validators = [PPTXSchemaValidator] | ||
| case _: | ||
| print(f"Error: Validation not supported for file type {file_extension}") | ||
| sys.exit(1) |
There was a problem hiding this comment.
The CLI usage and assertion explicitly allow .xlsx files, but the match block treats any non-.docx/.pptx extension (including .xlsx) as unsupported and exits with an error. Either add a concrete case for .xlsx (with appropriate validators) or remove .xlsx from the allowed extensions and help text so that the accepted file types and behavior remain consistent.
| assert unpacked_dir.is_dir(), f"Error: {unpacked_dir} is not a directory" | ||
| assert original_file.is_file(), f"Error: {original_file} is not a file" | ||
| assert file_extension in [".docx", ".pptx", ".xlsx"], ( | ||
| f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" | ||
| ) |
There was a problem hiding this comment.
Using assert for user input validation in a CLI tool is brittle because assertions can be disabled with Python’s -O flag and will then silently skip these checks. It would be more robust to replace these assert statements with explicit conditionals that print a clear error message to stderr and exit with a non-zero status code.
| assert unpacked_dir.is_dir(), f"Error: {unpacked_dir} is not a directory" | |
| assert original_file.is_file(), f"Error: {original_file} is not a file" | |
| assert file_extension in [".docx", ".pptx", ".xlsx"], ( | |
| f"Error: {original_file} must be a .docx, .pptx, or .xlsx file" | |
| ) | |
| if not unpacked_dir.is_dir(): | |
| print(f"Error: {unpacked_dir} is not a directory", file=sys.stderr) | |
| sys.exit(1) | |
| if not original_file.is_file(): | |
| print(f"Error: {original_file} is not a file", file=sys.stderr) | |
| sys.exit(1) | |
| if file_extension not in [".docx", ".pptx", ".xlsx"]: | |
| print( | |
| f"Error: {original_file} must be a .docx, .pptx, or .xlsx file", | |
| file=sys.stderr, | |
| ) | |
| sys.exit(1) |
| from pathlib import Path | ||
|
|
||
| # Get command line arguments | ||
| assert len(sys.argv) == 3, "Usage: python unpack.py <office_file> <output_dir>" |
There was a problem hiding this comment.
Similar to validate.py, using an assert to enforce CLI usage is not ideal because it can be stripped in optimized runs and produces an unstructured traceback for users. Consider replacing this with argparse (to match the other scripts) or a manual argument count check that prints the usage string and exits cleanly if the arguments are incorrect.
| assert len(sys.argv) == 3, "Usage: python unpack.py <office_file> <output_dir>" | |
| if len(sys.argv) != 3: | |
| print("Usage: python unpack.py <office_file> <output_dir>", file=sys.stderr) | |
| sys.exit(1) |
| function colorFromPalette(index) { | ||
| return params.colorPalette[index % params.colorPalette.length]; | ||
| } |
There was a problem hiding this comment.
The helper colorFromPalette assumes params.colorPalette is defined, but the template only mentions it in a comment rather than providing a default array, which can lead to runtime errors if users call the helper without first adding that property. Providing a simple default colorPalette entry in params (which users can customize) will make the template immediately runnable and safer to extend.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ff052903ee
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Summary
Introduces a comprehensive skill for creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. This enables users to request generative art, flow fields, particle systems, and other computational aesthetics through a structured creative process.
Key Changes
Notable Implementation Details
templates/viewer.htmltemplate to maintain consistent Anthropic branding and UI patternsDesign Philosophy
The skill guides users away from copying existing artists' work toward creating original algorithmic aesthetics. It emphasizes that beauty emerges from the algorithm's execution rather than static composition, with each seed revealing different facets of the generative system's potential.
https://claude.ai/code/session_015mHpqLsY5KN4Rj5n8FpMDK