RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Configs/Cursor rules/quinnjr/skia-rs

Cursor rule

.cursor/rules/ffi.mdc

FFI (Foreign Function Interface) guidelines for skia-rs-ffi

Cursor rules

Quality

45/100

Scores the file, not the repository.

Length

248 words

4 headings · 1 code blocks

Repository

28

— · pushed 21 days ago

Last changed

3 days ago

First indexed 3 days ago.
quinnjr/skia-rs/.cursor/rules/ffi.mdcRawGitHub
1---
2description: FFI (Foreign Function Interface) guidelines for skia-rs-ffi
3globs: ["crates/skia-rs-ffi/**"]
4alwaysApply: false
5---
6 
7# FFI Guidelines
8 
9## C API Design
10 
11- All FFI functions in `skia-rs-ffi`
12- Use opaque pointers for complex types
13- Follow Skia's C API naming: `sk_{type}_{method}`
14- Always check for null pointers
15 
16```rust
17// skia-rs-ffi/src/lib.rs
18 
19/// Create a new paint object.
20///
21/// # Safety
22/// Returns a valid pointer that must be freed with `sk_paint_delete`.
23#[no_mangle]
24pub unsafe extern "C" fn sk_paint_new() -> *mut Paint {
25 Box::into_raw(Box::new(Paint::new()))
26}
27 
28/// Delete a paint object.
29///
30/// # Safety
31/// `paint` must be a valid pointer returned by `sk_paint_new`.
32#[no_mangle]
33pub unsafe extern "C" fn sk_paint_delete(paint: *mut Paint) {
34 if !paint.is_null() {
35 drop(Box::from_raw(paint));
36 }
37}
38 
39/// Set the paint color.
40///
41/// # Safety
42/// `paint` must be a valid pointer.
43#[no_mangle]
44pub unsafe extern "C" fn sk_paint_set_color(paint: *mut Paint, color: u32) {
45 if let Some(p) = paint.as_mut() {
46 p.set_color32(Color(color));
47 }
48}
49```
50 
51## Type Mappings
52 
53| Skia C++ | Rust | C FFI |
54|----------|------|-------|
55| `SkScalar` | `Scalar` (f32) | `float` |
56| `SkPoint` | `Point` | `sk_point_t` |
57| `SkRect` | `Rect` | `sk_rect_t` |
58| `SkColor` | `Color` | `uint32_t` |
59| `SkMatrix` | `Matrix` | `sk_matrix_t` |
60| `SkPath*` | `*mut Path` | `sk_path_t*` |
61| `SkPaint*` | `*mut Paint` | `sk_paint_t*` |
62| `SkCanvas*` | `*mut Canvas` | `sk_canvas_t*` |
63 
64## Safety Requirements
65 
66- All FFI functions must be marked `unsafe`
67- Document safety requirements in doc comments
68- Check for null pointers before dereferencing
69- Use `#[repr(C)]` for all FFI-visible structs
70 

Sections

  • FFI Guidelines
  • C API Design
  • Type Mappings
  • Safety Requirements

What it covers

typesapi

Stack — with the evidence

rust

(1.00)

typescript

(0.60)

github-actions

(0.60)

Glob targeting

  • crates/skia-rs-ffi/**

Format

Cursor rules

The most expressive format here. Many small .mdc files, each with frontmatter declaring when it should load, so a rule about migrations only enters context when a migration is open. Costs the most to maintain and only one editor reads it.

What the corpus says about it

Repository

Owner
quinnjr
Language
—
License
—
Archived
no

All configs in this repo

Also in quinnjr/skia-rs

Diff this repo’s formats

One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?

The other instruction files in this repository
RepositoryFormatStackCoversScoreChanged
quinnjr/skia-rs.cursor/rules/api-design.mdc · 28Cursor rulesrusttypescript+1buildstyleapi58/1003 days ago
quinnjr/skia-rs.cursor/rules/architecture.mdc · 28Cursor rulesrusttypescript+1archdependenciesmonorepo62/1003 days ago
quinnjr/skia-rs.cursor/rules/benchmarking.mdc · 28Cursor rulesrusttypescript+1styleperformance69/1003 days ago
quinnjr/skia-rs.cursor/rules/code-style.mdc · 28Cursor rulesrusttypescript+1styletypesperformancedeployment+162/1003 days ago
quinnjr/skia-rs.cursor/rules/commands.mdc · 28Cursor rulesrusttypescript+1buildtestlint-formatgit+482/1003 days ago
quinnjr/skia-rs.cursor/rules/fuzzing.mdc · 28Cursor rulesrusttypescript+1setupstyle69/1003 days ago
quinnjr/skia-rs.cursor/rules/gpu.mdc · 28Cursor rulesrusttypescript+1no sections36/1003 days ago
quinnjr/skia-rs.cursor/rules/testing.mdc · 28Cursor rulesrusttypescript+1test69/1003 days ago
Diff against .cursor/rules/api-design.mdc Diff against .cursor/rules/architecture.mdc Diff against .cursor/rules/benchmarking.mdc Diff against .cursor/rules/code-style.mdc Diff against .cursor/rules/commands.mdc Diff against .cursor/rules/fuzzing.mdc Diff against .cursor/rules/gpu.mdc Diff against .cursor/rules/testing.mdc

Similar configs

Same format, overlapping stack, ranked by quality.

Same format, overlapping stack, ranked by quality
RepositoryFormatStackCoversScoreChanged
TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45Cursor rulestypescriptpytest+15testlint-formatstylearch+5100/1003 days ago
hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126Cursor rulesgobun+5setupbuildtestlint-format+6100/1003 days ago
dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+15setuptestlint-formatstyle+799/1003 days ago
Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+13setuptestlint-formatstyle+799/1003 days ago
markstev/mark-starter.cursor/rules/frontend.mdc · 0Cursor rulestypescriptturborepo+14setuptestlint-formatstyle+699/1003 days ago
deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1Cursor rulestypescriptnextjs+5setuptestlint-formatstyle+799/1003 days ago
langflow-ai/langflow.cursor/rules/docs_development.mdc · 153kCursor rulespythonnode+16setupbuildtestlint-format+797/1003 days ago
TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45Cursor rulestypescriptpytest+15teststyletesting-strategysecurity+397/1003 days ago
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack