Skip to content

Add algorithmic-art skill for generative p5.js art creation#164

Open
cseagraves wants to merge 9 commits intoZie619:mainfrom
Agentic-Assets:claude/sync-fork-upstream-TLXWZ
Open

Add algorithmic-art skill for generative p5.js art creation#164
cseagraves wants to merge 9 commits intoZie619:mainfrom
Agentic-Assets:claude/sync-fork-upstream-TLXWZ

Conversation

@cseagraves
Copy link
Copy Markdown

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

  • LICENSE.txt: Added Apache 2.0 license for the skill
  • SKILL.md: Complete documentation covering:
    • Algorithmic philosophy creation framework (4-6 paragraph manifestos for generative art movements)
    • P5.js implementation guidelines with emphasis on craftsmanship and reproducibility
    • Interactive artifact creation using a standardized template structure
    • Seeded randomness patterns for Art Blocks-style reproducible output
    • Parameter design and UI control integration
    • Best practices for expressing computational aesthetics through code
  • templates/generator_template.js: Reference implementation showing:
    • Parameter organization and management
    • Seeded randomness initialization
    • P5.js lifecycle patterns (static vs animated)
    • Class structure for entity-based systems
    • Performance considerations and utility functions
    • Export and parameter update mechanisms

Notable Implementation Details

  • Two-phase creative process: First creates an algorithmic philosophy (conceptual foundation), then implements it as interactive p5.js code
  • Template-first approach: All HTML artifacts build from a standardized templates/viewer.html template to maintain consistent Anthropic branding and UI patterns
  • Emphasis on craftsmanship: Documentation repeatedly stresses that final algorithms should appear meticulously refined and master-level
  • Reproducibility: All generative art uses seeded randomness for deterministic output—same seed always produces identical results
  • Parametric exploration: Interactive controls allow real-time parameter adjustment and seed navigation (prev/next/random/jump)
  • Self-contained artifacts: Single HTML file containing p5.js algorithm, UI controls, and styling—no external dependencies except p5.js CDN

Design 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

agenticassets and others added 9 commits September 13, 2025 01:40
…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
Copilot AI review requested due to automatic review settings February 1, 2026 03:24
@agenticassets agenticassets deleted the claude/sync-fork-upstream-TLXWZ branch February 1, 2026 03:26
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 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.
/**

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +37 to +53
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)
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
Comment on lines +39 to +43
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"
)
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
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)

Copilot uses AI. Check for mistakes.
from pathlib import Path

# Get command line arguments
assert len(sys.argv) == 3, "Usage: python unpack.py <office_file> <output_dir>"
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

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.

Suggested change
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)

Copilot uses AI. Check for mistakes.
Comment on lines +141 to +143
function colorFromPalette(index) {
return params.colorPalette[index % params.colorPalette.length];
}
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

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.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 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".

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.

4 participants