Project intake & repo map (eo-processor)
Use this skill to (1) clarify what you’re building, (2) map the repository, and (3) choose the smallest safe change set.
Goals
- Produce a repo map: key directories, entrypoints, and “where to change what”.
- Translate the user request into concrete acceptance criteria.
- Identify risk areas (performance, numerical stability, API surface, safety) and a verification plan.
Non-goals:
- Don’t start coding until you can point to the exact files you’ll touch and why.
- Don’t broaden scope. If the request implies refactors, propose them separately.
1) Clarify the task (requirements triage)
Write down:
- User intent: What outcome do they want? (feature, bug fix, perf, docs)
- Inputs/outputs: data shapes (1D/2D), dtypes, expected ranges, NaN handling.
- API surface: new public function? change existing behavior? CLI change?
- Constraints: performance target, memory limits, backwards compatibility.
- Examples: at least one concrete example call and expected result properties.
Minimal clarifying questions (ask only if blocked)
Ask at most 3 questions, only when needed to proceed safely:
- “Is this intended to be a new public API or internal refactor?”
- “What shapes/dtypes should be supported (1D/2D, float32/float64)?”
- “Any expected behavior for nodata/NaNs or divide-by-zero?”
If you can infer defaults from existing patterns in the repo, proceed without asking.
2) Repository map (what’s where)
Build a short map like this (fill with repo-specific paths):
Core implementation
src/ — Rust crate implementing fast EO ops via PyO3 (native extension).
Cargo.toml — Rust crate config and dependencies.
python/eo_processor/ — Python package wrapper: exports, docstrings, typing stubs.
pyproject.toml / uv.lock — Python packaging + dependency lock.
Tests & quality
tests/ — Python tests (pytest).
tox.ini / pytest.ini — test environments and config.
- Lint/type tooling likely defined in
pyproject.toml (ruff/mypy) and Rust (clippy, fmt).
Docs & user guides
README.md — primary API & examples.
QUICKSTART.md — onboarding quickstart.
WORKFLOWS.md — complex usage examples / pipelines.
docs/ — longer-form docs (if present; check for Sphinx/MD pipeline).
Scripts / maintenance
scripts/ — maintenance scripts (e.g., coverage badge generation).
3) Change classification (choose the correct workflow)
Pick exactly one dominant category and follow it:
A) New function (most common)
- Implement in Rust, expose through PyO3, export in Python, add typing stub, add tests, update docs.
B) Bug fix
- Reproduce -> minimal fix -> regression test -> confirm no API break.
C) Performance improvement
- Benchmark before/after, verify correctness, avoid unsafe, document speedup context.
D) Docs-only / packaging
- Keep changes isolated; ensure examples remain runnable.
4) Safety/performance checklist (pre-implementation)
Before you change code, write:
- Numerical stability plan: EPS usage, division-by-zero behavior, NaNs, clipping rules.
- Shape validation: ensure consistent behavior for mismatched shapes.
- Threading / parallelism: confirm any parallel approach matches project conventions.
- No side effects: core ops should not do file I/O or network I/O.
Common pitfalls in EO numeric code:
- silent
NaN propagation vs deliberate masking
- dtype promotion surprises (float32 vs float64)
- divide-by-zero in normalized differences
- avoid unnecessary allocations for large rasters
5) Verification plan (what you will run)
Define a verification plan proportional to risk:
Always
- Rust formatting and linting
- Python linting and typing (when Python layer touched)
- Unit tests relevant to changed behavior
When touching Rust core
cargo fmt
cargo clippy (treat warnings as errors)
cargo test or at least cargo check
When touching Python API/tests
- run targeted
pytest for affected test module(s)
- run
tox env used by the project (pick the most current default)
When coverage impacted
- run coverage job and regenerate badge if this repo mandates it
6) Output format: the “Intake Summary” you should produce
When this skill is used, produce a short “Intake Summary” before coding:
- Problem statement
- Proposed approach
- Files likely to change (list exact paths)
- Acceptance criteria (bullet list)
- Test/verification plan
- Risks & mitigations
Example template:
- Problem: …
- Approach: …
- Files:
src/...
python/eo_processor/...
tests/...
README.md
- Acceptance criteria:
- Verification:
- Risks:
7) Heuristics for good agent behavior in this repo
- Prefer small, reviewable commits.
- Preserve public API stability.
- Keep Rust+Python exports/stubs/docs synchronized.
- Don’t claim performance improvements without benchmarks.
- Don’t introduce new dependencies unless clearly justified.
References (local)
- Repo operations guide:
AGENTS.md
- User-facing docs:
README.md, QUICKSTART.md
- Workflows:
WORKFLOWS.md
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: project-intake3description: Build a fast, accurate mental model of the eo-processor repo and the user’s task. Use when starting work, when requirements are unclear, or before making multi-file changes (Rust+PyO3+Python packaging/tests/docs). Use when this capability is needed.4---56# Project intake & repo map (eo-processor)78Use this skill to (1) clarify what you’re building, (2) map the repository, and (3) choose the smallest safe change set.910## Goals11121. Produce a **repo map**: key directories, entrypoints, and “where to change what”.132. Translate the user request into **concrete acceptance criteria**.143. Identify **risk areas** (performance, numerical stability, API surface, safety) and a **verification plan**.1516Non-goals:17- Don’t start coding until you can point to the exact files you’ll touch and why.18- Don’t broaden scope. If the request implies refactors, propose them separately.1920---2122## 1) Clarify the task (requirements triage)2324Write down:25- **User intent**: What outcome do they want? (feature, bug fix, perf, docs)26- **Inputs/outputs**: data shapes (1D/2D), dtypes, expected ranges, NaN handling.27- **API surface**: new public function? change existing behavior? CLI change?28- **Constraints**: performance target, memory limits, backwards compatibility.29- **Examples**: at least one concrete example call and expected result properties.3031### Minimal clarifying questions (ask only if blocked)32Ask *at most 3* questions, only when needed to proceed safely:331. “Is this intended to be a new public API or internal refactor?”342. “What shapes/dtypes should be supported (1D/2D, float32/float64)?”353. “Any expected behavior for nodata/NaNs or divide-by-zero?”3637If you can infer defaults from existing patterns in the repo, proceed without asking.3839---4041## 2) Repository map (what’s where)4243Build a short map like this (fill with repo-specific paths):4445### Core implementation46- `src/` — Rust crate implementing fast EO ops via PyO3 (native extension).47- `Cargo.toml` — Rust crate config and dependencies.48- `python/eo_processor/` — Python package wrapper: exports, docstrings, typing stubs.49- `pyproject.toml` / `uv.lock` — Python packaging + dependency lock.5051### Tests & quality52- `tests/` — Python tests (pytest).53- `tox.ini` / `pytest.ini` — test environments and config.54- Lint/type tooling likely defined in `pyproject.toml` (ruff/mypy) and Rust (`clippy`, `fmt`).5556### Docs & user guides57- `README.md` — primary API & examples.58- `QUICKSTART.md` — onboarding quickstart.59- `WORKFLOWS.md` — complex usage examples / pipelines.60- `docs/` — longer-form docs (if present; check for Sphinx/MD pipeline).6162### Scripts / maintenance63- `scripts/` — maintenance scripts (e.g., coverage badge generation).6465---6667## 3) Change classification (choose the correct workflow)6869Pick exactly one dominant category and follow it:7071### A) New function (most common)72- Implement in Rust, expose through PyO3, export in Python, add typing stub, add tests, update docs.7374### B) Bug fix75- Reproduce -> minimal fix -> regression test -> confirm no API break.7677### C) Performance improvement78- Benchmark before/after, verify correctness, avoid unsafe, document speedup context.7980### D) Docs-only / packaging81- Keep changes isolated; ensure examples remain runnable.8283---8485## 4) Safety/performance checklist (pre-implementation)8687Before you change code, write:88- **Numerical stability plan**: EPS usage, division-by-zero behavior, NaNs, clipping rules.89- **Shape validation**: ensure consistent behavior for mismatched shapes.90- **Threading / parallelism**: confirm any parallel approach matches project conventions.91- **No side effects**: core ops should not do file I/O or network I/O.9293Common pitfalls in EO numeric code:94- silent `NaN` propagation vs deliberate masking95- dtype promotion surprises (float32 vs float64)96- divide-by-zero in normalized differences97- avoid unnecessary allocations for large rasters9899---100101## 5) Verification plan (what you will run)102103Define a verification plan proportional to risk:104105### Always106- Rust formatting and linting107- Python linting and typing (when Python layer touched)108- Unit tests relevant to changed behavior109110### When touching Rust core111- `cargo fmt`112- `cargo clippy` (treat warnings as errors)113- `cargo test` or at least `cargo check`114115### When touching Python API/tests116- run targeted `pytest` for affected test module(s)117- run `tox` env used by the project (pick the most current default)118119### When coverage impacted120- run coverage job and regenerate badge if this repo mandates it121122---123124## 6) Output format: the “Intake Summary” you should produce125126When this skill is used, produce a short “Intake Summary” before coding:1271281. **Problem statement**1292. **Proposed approach**1303. **Files likely to change** (list exact paths)1314. **Acceptance criteria** (bullet list)1325. **Test/verification plan**1336. **Risks & mitigations**134135Example template:136137- Problem: …138- Approach: …139- Files:140 - `src/...`141 - `python/eo_processor/...`142 - `tests/...`143 - `README.md`144- Acceptance criteria:145 - …146- Verification:147 - …148- Risks:149 - …150151---152153## 7) Heuristics for good agent behavior in this repo154155- Prefer small, reviewable commits.156- Preserve public API stability.157- Keep Rust+Python exports/stubs/docs synchronized.158- Don’t claim performance improvements without benchmarks.159- Don’t introduce new dependencies unless clearly justified.160161---162163## References (local)164165- Repo operations guide: `AGENTS.md`166- User-facing docs: `README.md`, `QUICKSTART.md`167- Workflows: `WORKFLOWS.md`168169---170> Converted and distributed by [TomeVault](https://tomevault.io/claim/bnjam) — claim your Tome and manage your conversions.171<!-- tomevault:4.0:skill_md:2026-04-15 -->