developing-reef

Solid

REQUIRED before any non-test code change in Reef. Load this skill before modifying Reef runtime architecture, `App` state, tabs/panels, rendering code, input dispatch (`crates/reef-tui/src/input.rs`, any picker overlay, the commit textarea, any new text-input field), background work, git/file-tree/diff/graph loading, performance-sensitive paths, or when the user asks about "how Reef is structured", "render blocking", "heavy tasks", "new tab", "new feature architecture", "input handling", "text input", "picker", "PickerCore", "input_edit", or "project conventions". Do NOT start editing Reef source without loading this skill first — the architecture has non-obvious invariants (render-pure, async generation tokens, three-layer text-input stack) whose violation has been re-introduced and re-fixed across multiple PRs. Pair with `testing-reef` whenever adding or changing tests.

Code & Development 81 stars 6 forks Updated today Apache-2.0

Install

View on GitHub

Quality Score: 84/100

Stars 20%
64
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Developing Reef Use this skill as the project onboarding guide for non-test Reef changes. The workspace contains a renderer-neutral Rust app engine plus the Reef TUI frontend. Every host must stay responsive, and expensive work must not run from a renderer. ## Core Architecture Rules - Keep `ui::*::render` on cached state only. Do not call git, filesystem walks, diff generation, syntax highlighting, external processes, or long formatting from render. Renderer-specific media geometry may be cached during render; decoder open/rebuild work starts from the host tick. - Treat input handlers as intent dispatchers. They decode terminal input and dispatch `reef_app::AppCommand`; they must not directly own business state or do blocking host work. - Route expensive work through `reef-app`'s task coordinator; merge worker results from `ReefApp::step`. - Put UI-independent logic in `crates/reef-core`; shared host filesystem services such as the unified preference store belong in `crates/reef-io`; keep ratatui/crossterm rendering and input orchestration in `crates/reef-tui`. - Put renderer-neutral app state, async scheduling, worker-result merge, settings state, nav/history, preview/search/git/graph orchestration in `crates/reef-app`. - Renderer hosts dispatch preview definition requests with a typed source cursor and viewport budget. For local backends, `reef-app` marks the initial workspace index stale and schedules its build from `step`; remote backends keep that unsupported wor...

Details

Author
Blushyes
Repository
Blushyes/reef
Created
4 months ago
Last Updated
today
Language
Rust
License
Apache-2.0

Similar Skills

Semantically similar based on skill content — not just same category