mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-14 19:27:05 -04:00
M0.1–M0.7: workspace, time/geom/color/keyframe/project/raster/path/text/effects/render crates
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
9f19158a59
commit
808cd490cd
76 files changed
+12319
-3
No files matched your search
@@ -0,0 +1,76 @@
|
||||
# EffectCraft — rules for agents and contributors
|
||||
|
||||
These rules apply to every human and AI contributor. `CLAUDE.md` holds the working instructions; this
|
||||
file holds the rules that must never be broken. When the two disagree, this file wins.
|
||||
|
||||
## 1. Assets: no Adobe artwork, every asset licensed and attributed
|
||||
|
||||
This rule is absolute. Breaking it is the most serious mistake a contributor can make on this project.
|
||||
|
||||
**What counts as an asset:** any image, icon, cursor, logo, illustration, screenshot, font, colour LUT,
|
||||
preset, template, sound, music, video, 3D model, or other non-code media. This covers files in the
|
||||
repository, bytes embedded in code (`include_bytes!`, base64, data URIs), and data hard-coded to
|
||||
reproduce an image (for example, point lists traced from someone else's icon).
|
||||
|
||||
1. **Never use Adobe iconography, images or other Adobe assets**, in any form:
|
||||
- no icons, cursors, logos, splash screens, UI artwork or screenshots from any Adobe product;
|
||||
- no Adobe fonts, LUTs, presets, templates, sound effects, stock media or sample projects;
|
||||
- no traced, redrawn, recoloured or "inspired-by" copies of Adobe icons. Our icons may follow generic
|
||||
conventions (a play triangle, a razor blade, a stopwatch), but each must be drawn from scratch
|
||||
without reference to Adobe's artwork.
|
||||
2. **Every asset must be open**: open-source licensed (MIT, Apache-2.0, BSD, ISC, zlib, SIL OFL…),
|
||||
public domain / CC0, or Creative Commons (CC BY or CC BY-SA; no NC/ND licences), **or** created by a
|
||||
contributor who owns it and licenses it to the project under the project licence (MIT OR Apache-2.0).
|
||||
If the licence is unknown or unclear, the asset does not go in.
|
||||
3. **Every asset needs an attribution sidecar.** Next to each asset file `X`, add `X.attribution` with:
|
||||
```text
|
||||
asset: <file name>
|
||||
title: <what it is>
|
||||
author: <creator / copyright holder>
|
||||
source: <URL, or "original work" for contributor-made assets>
|
||||
license: <SPDX id or licence name>
|
||||
license-file: <path to the licence text, if the licence requires shipping it>
|
||||
added: <YYYY-MM-DD> by <contributor>
|
||||
notes: <how it was made or modified; for screenshots, what is shown>
|
||||
```
|
||||
Also add one line for the asset to [`ATTRIBUTION.md`](ATTRIBUTION.md). `cargo xtask assets` (part of
|
||||
`cargo xtask ci`) fails if any asset lacks a sidecar or index entry.
|
||||
4. **Screenshots** in the repo may show only EffectCraft (or other open projects), with media we generated
|
||||
or media that is itself openly licensed. Never commit screenshots of Adobe products.
|
||||
5. **Local reference material stays local.** After Effects reference screenshots and notes live only in
|
||||
`plan/aftereffects/` (gitignored). They must never be committed, bundled, embedded, traced or shipped.
|
||||
6. **Code-drawn assets** (icons in `crates/ui-egui/src/icons.rs`, procedural demo content in
|
||||
`crates/engine/src/demo.rs`, generators in `crates/effects`) are original work under the project licence
|
||||
and are listed in `ATTRIBUTION.md`.
|
||||
7. **When in doubt, leave it out** and draw or generate it yourself.
|
||||
|
||||
## 2. Clean-room code
|
||||
|
||||
- Never read, disassemble or copy anything inside Adobe application bundles; file names and listings only.
|
||||
Observe behaviour by using the app; never capture its Home screen, recent projects, account info or
|
||||
file browsers.
|
||||
- Never copy GPL/LGPL/AGPL code (FFmpeg, Natron, Blender, Glaxnimate, Synfig, Friction, Olive, MLT, frei0r, G'MIC…).
|
||||
- Never read or copy Adobe expression/scripting implementations, `.ffx` presets or effect plug-ins; the public Expression Language Reference and Scripting Guide describe *behaviour* only.
|
||||
- Implement codecs and formats from public specifications (ITU-T/ISO/IEC standards, IETF RFCs, the VP9
|
||||
and AV1 bitstream specs, SMPTE documents, published container specs). Do not read the source of
|
||||
reference or third-party decoders/encoders while implementing a format, even permissively licensed
|
||||
ones (libvpx, libopus, libaom, dav1d, openh264…); spec text and conformance vectors only. Record the
|
||||
spec edition used in the crate README.
|
||||
- ffmpeg/ffprobe may be used only as external test oracles and fixture generators. They are never
|
||||
linked, bundled or shipped.
|
||||
- Dependencies must use permissive licences: MIT/Apache-2.0/BSD/ISC/Zlib/Unicode/CC0/BSL-1.0, or
|
||||
MPL-2.0 used unmodified.
|
||||
|
||||
## 3. Engineering rules
|
||||
|
||||
See `CLAUDE.md`: pure Rust, dependency layering (`cargo xtask layers`), exact `Tick` time, everything is
|
||||
a command, everything is agent-drivable, and the quality gates (`cargo xtask ci`) before every commit.
|
||||
|
||||
## See also
|
||||
|
||||
- [CONTRIBUTING.md](CONTRIBUTING.md) and [docs/contributing.md](docs/contributing.md): setup, gates, commits, how to add things
|
||||
- [docs/architecture.md](docs/architecture.md): layers, data model, commands, pipeline
|
||||
- [docs/testing.md](docs/testing.md): oracle tests, criteria, benchmarks
|
||||
- [docs/agents.md](docs/agents.md): driving EffectCraft over MCP / the control channel, and the agent work loop
|
||||
- [docs/control-protocol.md](docs/control-protocol.md): control-channel method reference
|
||||
- [ATTRIBUTION.md](ATTRIBUTION.md): asset index
|
||||
Reference in new issue
Block a user