* Improve CLAUDE.md instructions and compact DB schema summary - Add code validation instructions (cargo check, npm run check) to all CLAUDE.md files with guidance to use only relevant feature flags - Reference backend/CLAUDE.md and frontend/CLAUDE.md paths from root - Add database querying guidance (psql commands for exact table info) - Compact summarize_schema.py output: inline columns, shorten types, one-line enums, drop indexes (use psql \d for exact info) - Fix FK parsing for multi-line ALTER TABLE statements - Result: schema summary reduced from 1514 lines/40KB to 194 lines/23KB * cleaning * fix: use prefix-based type abbreviations and filter CONSTRAINT pseudo-columns - Change TYPE_ABBREVIATIONS matching from exact to prefix-based so parametrized types (character(64) -> char(64)) and array types (integer[] -> int[], real[] -> float[]) are properly abbreviated - Skip CONSTRAINT lines inside CREATE TABLE blocks that were being incorrectly matched as columns by the column regex - Update summarized_schema.txt to reflect both changes Co-authored-by: centdix <centdix@users.noreply.github.com> --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: centdix <centdix@users.noreply.github.com>
49 lines
2.8 KiB
Markdown
49 lines
2.8 KiB
Markdown
# Windmill Development Guide
|
|
|
|
## Overview
|
|
|
|
Windmill is an open-source developer platform for building internal tools, workflows, API integrations, background jobs, workflows, and user interfaces. See @windmill-overview.mdc for full platform details.
|
|
|
|
## New Feature Implementation Guidelines
|
|
|
|
When implementing new features in Windmill, follow these best practices:
|
|
|
|
- **Clean Code First**: Write clean, readable, and maintainable code. Prioritize clarity over cleverness.
|
|
- **Avoid Duplication at All Costs**: Before writing new code, thoroughly search for existing implementations that can be reused or extended.
|
|
- **Adapt Existing Code**: Refactor and generalize existing code when necessary to avoid logic duplication. Extract common patterns into reusable utilities.
|
|
- **Follow Established Patterns**: Study existing code patterns in the codebase and maintain consistency with established conventions.
|
|
- **Single Responsibility**: Each function, component, and module should have a single, well-defined responsibility.
|
|
- **Incremental Implementation**: Break large features into smaller, reviewable chunks that can be implemented and tested incrementally.
|
|
|
|
## Language-Specific Guides
|
|
|
|
- Backend (Rust): see `backend/CLAUDE.md` and the `rust-backend` skill: `.claude/skills/rust-backend/SKILL.md`
|
|
- Frontend (Svelte 5): see `frontend/CLAUDE.md` and the `svelte-frontend` skill: `.claude/skills/svelte-frontend/SKILL.md`
|
|
|
|
## Code Validation (MUST DO)
|
|
|
|
After making code changes, you MUST run the appropriate checks and fix all errors before considering the work done:
|
|
|
|
- **Backend**: Run `cargo check` from the `backend/` directory. Only enable the feature flags needed for the code you changed — check `backend/Cargo.toml` `[features]` section to identify which flags gate the crates/modules you modified. For example: `cargo check --features enterprise,parquet` if you only touched enterprise and parquet code.
|
|
- **Frontend**: Run `npm run check` from the `frontend/` directory.
|
|
|
|
## Querying the Database
|
|
|
|
`backend/summarized_schema.txt` provides a compact overview of all tables, columns, types, ENUMs, and foreign keys. Use it to quickly understand the data model and relationships. Note: this file is a simplified summary — it omits indexes, constraints details, and other metadata.
|
|
|
|
For exact table definitions (indexes, constraints, column defaults, etc.), query the database directly:
|
|
|
|
```bash
|
|
psql postgres://postgres:changeme@localhost:5432/windmill
|
|
```
|
|
|
|
Useful psql commands:
|
|
- `\d <table_name>` — full table definition with indexes and constraints
|
|
- `\di <table_name>*` — list indexes for a table
|
|
- `\d+ <table_name>` — extended table info including storage and descriptions
|
|
|
|
This is also helpful for:
|
|
- Inspecting database state during development
|
|
- Testing queries before implementing them in Rust
|
|
- Debugging data-related issues
|