Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f67b303
Update dependencies
f-PLT Apr 2, 2026
1e45b45
Remove function as not working since numpy update.
f-PLT Apr 2, 2026
d2cfea9
More cleanup of unused functions
f-PLT Apr 2, 2026
eae8d6a
Minor refactor of vector.py
f-PLT Apr 2, 2026
9d3bb35
Update docstrings
f-PLT Apr 2, 2026
eb6da56
Merge Main
f-PLT Apr 15, 2026
14de74d
Create baseline for abstract Sentinel2 and basic Search class for pla…
f-PLT Apr 15, 2026
3dd3a7a
Fix type error in vector.py
f-PLT Apr 15, 2026
29504f1
Update and fix scripts
f-PLT Apr 15, 2026
1583e04
Restructure repository structure for Stac modules
f-PLT Apr 20, 2026
c76b9ac
Add new notebook test
f-PLT Apr 20, 2026
9086f1b
Add plan and tasks for planetary computer constants
f-PLT Apr 20, 2026
b65020c
Update git ignore
f-PLT Apr 20, 2026
1369f14
feat: task 1 - create planetary computer constants
f-PLT Apr 20, 2026
34c4501
refactor: task 2 - apply pc constants to sentinel_2.py
f-PLT Apr 20, 2026
1e10e02
feat: add CopernicusS2Property enum with sortby_field support
f-PLT Apr 20, 2026
5960a5d
Update copernicus_sentinel2_exploration.ipynb
f-PLT Apr 20, 2026
835f27c
Add plan, spec and tasks for s1
f-PLT Apr 20, 2026
123697a
docs(stac-pc): rewrite S1 spec with SAR query semantics and arch deci…
f-PLT Apr 20, 2026
5e00294
docs(stac-pc): rewrite S1 plan with rationale and arch decision — clo…
f-PLT Apr 20, 2026
8b5ab29
docs(stac-pc): rewrite task-01 constants with missing value enums — c…
f-PLT Apr 20, 2026
1b09583
docs(stac-pc): rewrite task-02 abstract class with @abstractmethod an…
f-PLT Apr 20, 2026
b0116d3
docs(stac-pc): rewrite task-03 Sentinel1Search with arch decision and…
f-PLT Apr 20, 2026
fb486c6
docs(knowledge): add S1 SAR domain invariants — closes TASK-006
f-PLT Apr 20, 2026
dc27cce
Update planning docs
f-PLT Apr 20, 2026
319a057
feat(stac-pc): add S1 constants
f-PLT Apr 20, 2026
f193d62
Update planning documents
f-PLT Apr 21, 2026
78ca7ff
Update planning docs
f-PLT Apr 21, 2026
d2bcb5b
Add validated AbstractSentinel1
f-PLT Apr 21, 2026
1d93bc9
Update knowledge.md
f-PLT Apr 21, 2026
0878516
Update planning docs
f-PLT Apr 21, 2026
ac2cd34
Add concrete Sentinel1Search class
f-PLT Apr 21, 2026
e98c4e7
Update agent planning and instruction docs
f-PLT Apr 23, 2026
b58373a
Update sentinel refactor docs
f-PLT Apr 23, 2026
a311a83
Fix typo
f-PLT Apr 23, 2026
76685ed
Fix typo
f-PLT Apr 23, 2026
8550a14
Update agent_instructions.md
f-PLT Apr 23, 2026
1d5856a
Update agent files with full paths
f-PLT Apr 24, 2026
856cc15
Cleanup planning documents
f-PLT Apr 27, 2026
f730df1
Cleanup planning documents
f-PLT Apr 27, 2026
cf4d13d
refactor: task 01 - isolate BestProductsForFeatures from AbstractSent…
f-PLT Apr 27, 2026
9fd6ed9
docs: mark task 01 as complete
f-PLT Apr 27, 2026
40e852b
feat: task 02 - implement Abstract Builders with Facade proxy pattern
f-PLT Apr 27, 2026
019a476
docs: mark task 02 as complete
f-PLT Apr 27, 2026
4ad0f92
feat: task 03 - implement S1 and S2 executable wrappers
f-PLT Apr 27, 2026
35ccded
docs: mark task 03 as complete
f-PLT Apr 27, 2026
e7d1ff7
test: task 04 - end-to-end integration and QA validation
f-PLT Apr 27, 2026
f676aee
docs: mark task 04 as complete
f-PLT Apr 27, 2026
595206b
Refactor abstract classes for planetary computer -> Unified Stac Wrap…
f-PLT Apr 27, 2026
d7387a3
Commit planning documents
f-PLT Apr 27, 2026
c2685ca
feat: add sentinel-3 stac constants
f-PLT Apr 27, 2026
50542a2
feat: implement Sentinel3Search wrapper
f-PLT Apr 27, 2026
91e438f
refactor: extract Sentinel-3 specific orbit state enum
f-PLT Apr 27, 2026
cd1896f
test: add integration test for Sentinel-3 search
f-PLT Apr 27, 2026
4b36e36
Move planning documents
f-PLT Apr 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gemini/GEMINI.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
You must strictly adhere to the project rules defined in `docs/agents/agent_instructions.md`. Read this file before making any significant architectural, geospatial data processing changes, or general code modifications. Use `read_file` to load `docs/agents/agent_istructions.md`.
You must strictly adhere to the project rules defined in [docs/agents/agent_instructions.md](../docs/agents/agent_instructions.md). Read this file before making any significant architectural, geospatial data processing changes, or general code modifications. Use `read_file` to load [docs/agents/agent_instructions.md](../docs/agents/agent_instructions.md).
2 changes: 1 addition & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
You must strictly adhere to the project rules defined in `docs/agents/agent_instructions.md`. Read this file before making any significant architectural, geospatial data processing changes, or general code modifications.
You must strictly adhere to the project rules defined in [docs/agents/agent_instructions.md](../docs/agents/agent_instructions.md). Read this file before making any significant architectural, geospatial data processing changes, or general code modifications.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,4 @@ data/*
scripts/config.sh
Makefile.private
configs/geospatial_tools_ini.yaml
**/settings.local.json
18 changes: 3 additions & 15 deletions .markdown-link-check.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,6 @@
{
"pattern": "http://localhost"
},
{
"pattern": "tps://github.com/RolnickLab/best-practices-documentation/tree"
},
{
"pattern": "tps://github.com/RolnickLab/best-practices-documentation/issues"
},
{
"pattern": "tps://github.com/RolnickLab/best-practices-documentation/pulls"
},
{
"pattern": "https://github.com/RolnickLab/best-practices-documentation/wiki"
},
{
"pattern": "https://github.com/RolnickLab/best-practices-documentation/wiki/DRAC-%E2%80%90-Compute-Canada"
},
{
"pattern": "https://github.com/RolnickLab/lab-advanced-template"
},
Expand All @@ -35,6 +20,9 @@
},
{
"pattern": "https://www.earthdata.nasa.gov/"
},
{
"pattern": "https://earthexplorer.usgs.gov"
}
]
}
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
You must strictly adhere to the project rules defined in `docs/agents/agent_instructions.md`. Read this file before making any significant architectural, geospatial data processing changes, or general code modifications.
You must strictly adhere to the project rules defined in [docs/agents/agent_instructions.md](docs/agents/agent_instructions.md). Read this file before making any significant architectural, geospatial data processing changes, or general code modifications.
59 changes: 36 additions & 23 deletions docs/agents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,13 @@ Yes, these instructions are more prescriptive than *current* best practices, but

The `instructions/` folder contains specific skill files that guide the agent's behavior for particular tasks. Here is a summary of each skill, its purpose, and when to use it:

| Skill | Description | When to Use & Why |
| ------------------------ | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `analytics.md` | Extracts truth from experimental data with statistical rigor. | Use for Exploratory Data Analysis (EDA) and visualization to ensure reproducibility and prevent misleading claims. |
| `formal_planning.md` | Enforces a structured planning protocol via a Formal Design Document. | Use when explicitly asked for a plan, architecture, or proposal to map out scope, trade-offs, and steps before coding. |
| `infrastructure.md` | Manages reproducible and resilient environments/pipelines as code. | Use for containerization (Docker), HPC/SLURM cluster setup, or CI/CD tasks to ensure fault tolerance and exact dependency pinning. |
| `KNOWLEDGE.md` | A centralized repository for project-specific tribal knowledge. | Use to document or consult specific findings, library quirks, or architectural decisions to avoid repeating past mistakes. |
| `ml.md` | Builds state-of-the-art, reproducible, and reliable machine learning pipelines. | Use for ML model training, evaluation, and experiment management to guarantee strict data isolation and deterministic execution. |
| `orchestrator.md` | Focuses on horizontal integration and strategic decomposition of goals. | Use for multi-component tasks to define explicit contracts between modules and ensure end-to-end flows work correctly. |
| `plan_to_tasks.md` | Decomposes high-level plans into modular, atomic, and verifiable tasks. | Use when transitioning from planning to execution to ensure each step has clear context, acceptance criteria, and testing protocols. |
| `python.md` | Elevates Python scripts into robust, maintainable, and type-safe software. | Use for all Python development and QA to enforce strict typing, SOLID principles, vectorization, and automated workflows. |
| `root_cause_analysis.md` | Systematically diagnoses and permanently fixes software failures. | Use when presented with a bug, traceback, or unexpected result to isolate the failure (MRE) and target the actual root cause. |
| `security.md` | Identifies vulnerabilities, enforces defense-in-depth, and ensures data privacy. | Use for tasks involving authentication, untrusted input, or infrastructure to prevent injection attacks and hardcoded secrets. |
| `specdrivendev.md` | Implements lightweight Spec-Driven Development to define contracts first. | Use when starting a new feature to define data structures, signatures, and docstrings before writing logic, preventing LLM hallucinations. |
| `systemdesign.md` | Designs systems that are maintainable, evolvable, and robust. | Use for architectural decisions to enforce separation of concerns, configuration-first design, and proper dependency injection. |
| Skill | Description | When to Use & Why |
| ------------------------ | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| `planning.md` | Combined Planning, Specification (SDD), and Task Decomposition Protocol. | Use for any multi-step implementation to map out scope, define technical contracts (SDD), and break down work into atomic tasks. |
| `software-dev.md` | Unified Software Development, ML, Analytics & Infrastructure Protocol. | Use for Python development, system design, ML/geospatial processing, data analysis, and infrastructure/environment management. |
| `review.md` | Harsh Security & Architecture Review Protocol. | Use to identify vulnerabilities (tokens, paths, SSL) and tear apart implementations for performance bottlenecks and architectural rot. |
| `root_cause_analysis.md` | Systematically diagnoses and permanently fixes software failures. | Use when presented with a bug, traceback, or unexpected result to isolate the failure (MRE) and target the actual root cause. |
| `KNOWLEDGE.md` | A centralized repository for project-specific tribal knowledge. | Use to document or consult specific findings, library quirks, or architectural decisions to avoid repeating past mistakes. |

## How to use them

Expand All @@ -36,16 +29,36 @@ This template comes with CLAUDE.md and GEMINI.md files that essentially point to
In practice... it's not always the case. It is probably better to manually feed the instructions directly to the agent/tool as context in your prompt just to make sure:

```text
Using @docs/agents/agent_instructions.md, @docs/agents/instructions/python.md, and @docs/agents/instructions/systemdesign.md and @docs/agents/instructions/formal_planning.md, create a plan for a new class that will ...
Using @docs/agents/agent_instructions.md, @docs/agents/instructions/software-dev.md, and @docs/agents/instructions/planning.md, create a plan for a new class that will ...
```

When using models with smaller context windows, it will also be important to clear the context once in a while to ensure better results.
It's usually a good thing to clear/compress the context once in a while to ensure better results.

For example:
### Workflow example

- Create plan
- Manually revise plan document
- Clear context
- Ask agent to implement first step of the plan
- Clear context
- Repeat
First, define **what** you want to do, **how** and **why**. Go in as much detail as you can. Let's call this your *preliminary design document*.

You can also do this step through a chat interface with an LLM so you can brainstorm, ask questions, investigate starting points, development directions and library/tool selections.

Once you have your *preliminary design document*, you are ready to start using your agent.

- Activate `@docs/agents/instructions/planning.md`
- **Create PLAN**
- Ask agent to create a plan based on your *preliminary design document*
- Manually revise plan document
- **Create SPEC**
- Ask agent to create a specification based on the plan
- Manually revise the specification document
- **Create TASKS**
- Ask agent to create tasks based on the plan and specification created
- Manually revise the tasks
- **_CLEAR CONTEXT_**
- Activate `@docs/agents/instructions/code_review.md`
- Ask the agent to review your planning documents
- **_CLEAR CONTEXT_**
- Activate `@docs/agents/instructions/software_dev.md`
- Ask agent to implement first task of the plan
- Manual review
- Commit work to git
- **_COMPRESS CONTEXT_**
- Repeat for subsequent tasks
Loading