

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# Project AI Instructions23## Project Overview45OpenLeukemia is a patient-centered platform for organizing leukemia-related medical data, tracking changes over time, extracting structured information from documents, and explaining validated model outputs in plain language.67The product must help patients understand their information without replacing a physician. Treat privacy, explicit consent, and non-diagnostic language as core requirements, not optional polish.89## Tech Stack1011- Frontend: React 19, TypeScript, Vite, Vitest, ESLint12- Platform layer: Supabase Auth, Postgres, Storage, Row Level Security, Edge Functions13- AI service: Python 3.12, FastAPI, Pydantic, Uvicorn14- AI/ML: PyTorch, XGBoost, scikit-learn, Gemma or another LLM for extraction and explanation tasks15- Package manager: npm workspaces for the frontend; Python virtual environment for `ai-service`1617## Repository Layout1819- `frontend/`: React + TypeScript application20- `ai-service/`: Python FastAPI service for ML, extraction, parsing, and model-facing workloads21- `supabase/`: migrations, policies, storage-related platform logic, and Edge Functions22- `ml/`: machine learning workspace23- `docs/`: project documentation24- `PROJECT_CHARTER.md`: product principles and guardrails25- `ARCHITECTURE.md`: system design and data-flow guidance2627## Setup2829Install frontend dependencies from the repository root:3031```sh32npm install33```3435Create the AI-service virtual environment:3637```sh38cd ai-service39python -m venv .venv40python -m pip install -e ".[dev]"41```4243On Windows PowerShell, activate the environment with:4445```powershell46.\.venv\Scripts\Activate.ps147```4849## Development5051Run the frontend from the repository root:5253```sh54npm --workspace frontend run dev55```5657Default frontend URL:5859```text60http://127.0.0.1:517361```6263Run the AI service from `ai-service/`:6465```sh66python -m uvicorn app.main:app --reload67```6869Default AI-service URL:7071```text72http://127.0.0.1:800073```7475Health check:7677```text78http://127.0.0.1:8000/health79```8081## Tests And Checks8283Frontend checks:8485```sh86npm run lint:frontend87npm run typecheck:frontend88npm test --workspace frontend89npm --workspace frontend run build90```9192AI-service checks:9394```sh95cd ai-service96python -m ruff check .97python -m pytest98python -m mypy app99```100101Makefile shortcuts:102103```sh104make frontend-lint105make frontend-typecheck106make ai-service-lint107make ai-service-test108```109110Run the checks most relevant to the files you changed. If a check cannot be run, say why and name the command that should be run next.111112## Code Style113114- Follow the existing style in neighboring files before adding a new pattern.115- Prefer clear names over clever names.116- Keep functions small and responsibility-focused.117- Add comments only when they genuinely reduce reading effort.118- Use typed models and structured parsing instead of ad hoc string manipulation.119- Do not add dependencies unless the local implementation would be materially worse without them.120- Do not change public APIs, data contracts, routes, schemas, or consent behavior without an explicit reason.121- Keep patient-facing copy calm, careful, and non-diagnostic.122123## Architecture Rules124125- Use Supabase for routine product workflows: auth, CRUD, storage, consent records, and access-control paths.126- Keep Row Level Security and explicit consent central to data access.127- Use the Python AI service only when the task genuinely needs Python, ML, parsing, OCR, extraction, or heavier compute.128- Keep FastAPI route handlers thin. Put reusable Python logic in services and domain modules.129- Keep frontend code feature-oriented and reuse existing UI, layout, and testing patterns.130- Treat LLM output as explanation or candidate extraction, not as a medical decision.131- High-risk extracted medical values should be reviewable before becoming canonical records.132- Keep identity data and medical data conceptually separate.133134## Product And Safety Rules135136- Registration does not mean blanket consent.137- Patient data belongs to the patient.138- Every consent should be separate, explicit, auditable, and revocable.139- AI may summarize and explain, but must not diagnose, recommend treatment, or make urgent clinical judgments.140- Structured ML may support prediction and trend detection; LLMs may support extraction and explanation.141- Prefer minimal collection for privacy-sensitive workflows.142143## Frontend Rules144145- Build mobile-first responsive layouts.146- Maintain light and dark theme support.147- Preserve accessible interaction patterns for menus, forms, dialogs, and controls.148- Keep the public site lightweight; avoid unnecessary heavy animation, video, or large assets.149- Keep brand color usage centered on red without making every surface the same hue.150151## AI-Service Rules152153- Use explicit Pydantic schemas for request and response bodies.154- Keep domain behavior in `app/domains/`.155- Keep route modules focused on HTTP concerns.156- Maintain strict typing and pass `mypy` for `app`.157- Keep model outputs explainable and non-diagnostic.158159## AI Agent Behavior160161- Read nearby code, tests, and documentation before editing.162- Make minimal, focused changes that preserve existing architecture.163- Do not rewrite unrelated files or clean up unrelated churn.164- Respect uncommitted user changes.165- Add or update tests when behavior changes.166- After edits, run the most relevant checks when practical.167- When touching medical, consent, auth, or privacy-sensitive behavior, be extra conservative and call out any residual risk.168
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?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| Aledon8/OpenLeukemiasupabase/CLAUDE.md · 9 | CLAUDE.md | styledo-notagent-behaviour | 36/100 | 14 days ago | |
| Aledon8/OpenLeukemia.cursor/rules/ai-service.mdc · 9 | Cursor rules | testlint-formatdo-not | 46/100 | 14 days ago | |
| Aledon8/OpenLeukemia.cursor/rules/consents.mdc · 9 | Cursor rules | do-not | 23/100 | 14 days ago | |
| Aledon8/OpenLeukemia.cursor/rules/docs.mdc · 9 | Cursor rules | styledo-notdocs | 27/100 | 14 days ago | |
| Aledon8/OpenLeukemia.cursor/rules/ml.mdc · 9 | Cursor rules | do-not | 23/100 | 14 days ago | |
| Aledon8/OpenLeukemia.cursor/rules/project.mdc · 9 | Cursor rules | testlint-formatdo-notagent-behaviour | 74/100 | 14 days ago | |
| Aledon8/OpenLeukemia.cursor/rules/supabase.mdc · 9 | Cursor rules | do-not | 23/100 | 14 days ago | |
| Aledon8/OpenLeukemia.github/instructions/ai-service.instructions.md · 9 | Copilot instructions | testlint-formatapiagent-behaviour | 39/100 | 14 days ago | |
| Aledon8/OpenLeukemia.github/instructions/consents.instructions.md · 9 | Copilot instructions | agent-behaviour | 16/100 | 14 days ago | |
| Aledon8/OpenLeukemia.github/instructions/docs.instructions.md · 9 | Copilot instructions | styleagent-behaviourdocs | 20/100 | 14 days ago | |
| Aledon8/OpenLeukemia.github/instructions/frontend.instructions.md · 9 | Copilot instructions | testagent-behaviour | 20/100 | 14 days ago | |
| Aledon8/OpenLeukemia.github/instructions/ml.instructions.md · 9 | Copilot instructions | do-notagent-behaviour | 23/100 | 14 days ago | |
| Aledon8/OpenLeukemia.github/instructions/supabase.instructions.md · 9 | Copilot instructions | agent-behaviour | 16/100 | 14 days ago | |
| Aledon8/OpenLeukemiaCLAUDE.md · 9 | CLAUDE.md | setuptestlint-formatstyle+3 | 93/100 | 14 days ago | |
| Aledon8/OpenLeukemiaai-service/app/CLAUDE.md · 9 | CLAUDE.md | performance | 24/100 | 14 days ago | |
| Aledon8/OpenLeukemiaai-service/app/api/v1/CLAUDE.md · 9 | CLAUDE.md | apiperformance | 16/100 | 14 days ago | |
| Aledon8/OpenLeukemiaai-service/app/domains/consents/CLAUDE.md · 9 | CLAUDE.md | performance | 16/100 | 14 days ago | |
| Aledon8/OpenLeukemiafrontend/CLAUDE.md · 9 | CLAUDE.md | testdo-notagent-behaviour | 71/100 | 14 days ago | |
| Aledon8/OpenLeukemiafrontend/src/CLAUDE.md · 9 | CLAUDE.md | styleperformance | 20/100 | 14 days ago | |
| Aledon8/OpenLeukemiafrontend/src/app/CLAUDE.md · 9 | CLAUDE.md | performance | 16/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| mui/material-uiAGENTS.md · 99k | AGENTS.md | setupbuildtestlint-format+9 | 100/100 | 14 days ago | |
| unoplat/unoplat-code-confluenceunoplat-code-confluence-frontend/AGENTS.md · 95 | AGENTS.md | setupbuildtestlint-format+6 | 100/100 | 13 days ago | |
| vllm-project/vllmAGENTS.md · 89k | AGENTS.md | setuptestlint-formatstyle+5 | 100/100 | 14 days ago | |
| deepseek-ai/deepseek-harnessnative/landlock-run/AGENTS.md · 104k | AGENTS.md | setupteststylearch+3 | 100/100 | today | |
| code-yeongyu/oh-my-openagentpackages/web/AGENTS.md · 68k | AGENTS.md | setupbuildtestlint-format+6 | 100/100 | 13 days ago | |
| n8n-io/n8npackages/@n8n/agents/AGENTS.md · 201k | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| TryGhost/Ghoste2e/AGENTS.md · 55k | AGENTS.md | setupteststylearch+2 | 100/100 | today | |
| OnlyTerp/prompt-cache-skillsAGENTS.md · 113 | AGENTS.md | setupbuildtestlint-format+5 | 100/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/aledon8-openleukemia-agents)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.