This section provides guidelines for creating and contributing SVGs to the AI vector Forge project. The goal is to maintain a high-quality, consistent, and accessible collection of “remixable seeds.”
<title>
and <desc>
tags for accessibility.The project is organized into “namespaces,” which are top-level directories. Each namespace is a collection of “workshops,” and each workshop is dedicated to a single SVG.
/
├── logos/
│ ├── README.md (Describes the 'logos' namespace)
│ └── my-cool-logo/
│ ├── README.md (Describes this specific logo, with a preview)
│ ├── my-cool-logo.svg (The SVG file, name must match directory)
│ ├── AGENTS.md (Optional, for AI instructions for this logo)
│ └── source.png (Optional, source material for the SVG)
│
└── gallery/
└── ... (similar structure for gallery workshops)
logo
, a gallery
piece, or a ui-component
./logos/my-new-logo/
).my-new-logo.svg
).README.md
inside the workshop directory with a preview of your SVG and some information about it.This section provides a more detailed technical guide to working with SVG XML.
<defs>
and <use>
: For repeated shapes, define them once in the <defs>
section and reuse them with the <use>
element. This can significantly reduce file size.<g>
element to group related shapes. This makes the SVG easier to read and allows you to apply transformations or styles to the whole group.<style>
tag to make your SVGs more themeable and easier to modify.
:root {
--primary-color: #3498db;
}
.shape {
fill: var(--primary-color);
}
@keyframes
to create complex, multi-step animations. Animate properties like transform
, opacity
, and fill
.<filter>
) to apply effects like blurs, drop shadows, and color transformations directly in the XML.role
attribute: Add role="img"
to the main <svg>
tag to explicitly identify it as an image to assistive technologies.aria-labelledby
: To create a more robust connection between the SVG and its title and description, use aria-labelledby
.
<svg role="img" aria-labelledby="title desc">
<title id="title">My SVG Title</title>
<desc id="desc">A detailed description.</desc>
...
</svg>