Skip to content

Latest commit

 

History

History
101 lines (68 loc) · 4.02 KB

contributing.md

File metadata and controls

101 lines (68 loc) · 4.02 KB

Contributing to anyplot

Overview

anyplot is a specification-driven platform where AI generates all plot implementations. As a contributor, your main focus is on specifications (what to visualize) rather than code (how to implement).


Two ways to contribute

Action When to Use From anyplot.ai
Request New Plot Propose a new plot type Click "suggest spec" on specs page
Report Plot Issue Problem with a spec or implementation Click "report issue" on any page

All contributions go through GitHub Issues with AI-powered validation and processing.

By participating, you agree to our Code of Conduct.


Request a new plot

  1. Create a GitHub Issue with a descriptive title (e.g., "Radar Chart with Multiple Series")
    • Don't include the spec-id in the title
  2. Add the spec-request label
  3. Wait for automation:
    • spec-create.yml analyzes your request
    • Assigns a unique spec-id
    • Creates a PR with specification.md and specification.yaml
  4. Review the generated spec (PR comments)
    • The spec ends with a ## What a good version looks like section: 3-6 one-line bullets that name what a good render of this plot type shows. Each bullet starts with its kind — A good version shows: for a property a good render shows, or Expected, not a defect: for something that can look like a flaw but is inherent to the type — and the section has at least one of each.
    • The AI review scores every implementation against this section, so check it before you approve: it should describe this plot type rather than generic ideals such as "no overlap", contain no numeric thresholds, and not contradict Description, Data, or Notes. See the section's role in the pipeline.
  5. The repository owner adds the approved label to the Issue (not the PR); the merge job ignores the label from anyone else
  6. Spec merges to main with spec-ready label

Report a plot issue

Found a problem with a plot (specification or implementation)?

  1. From anyplot.ai: Click "report issue ↗" on a spec page, or "report" in the footer
  2. From GitHub: Use the Report Plot Issue template
  3. Select affected libraries (or leave empty if all/unsure)
  4. Choose a category (optional): Visual, Data, Functional, or Other
  5. Describe the issue

AI validates your report and adds structured analysis. Maintainers review and approve fixes.


Trigger implementation generation

After a spec has the spec-ready label:

Single Library:

  • Add generate:{library} label to the issue (e.g., generate:matplotlib)

All Libraries:

gh workflow run bulk-generate.yml -f specification_id=<spec-id> -f library=all

What not to do

Don't Why
Manually create plots/ directories Let spec-create.yml handle it
Write specification.md files directly Let AI generate from your Issue
Include [spec-id] in issue titles Spec-id is auto-assigned
Add approved label to PRs Add it to Issues instead
Run gh pr merge on implementation PRs Let impl-merge.yml handle it
Create metadata/*.yaml manually Created automatically on merge

Why this workflow?

Manual intervention causes:

  • Missing quality scores in metadata
  • Missing preview images in GCS
  • Issues staying open when complete
  • Broken database sync

Trust the automation. It handles: code generation, quality review, repair attempts, image promotion, and database sync.


Labels reference

See workflows/overview.md for the complete label system.


Questions?