* refactor: slim down claude instructions for lean context and fast iteration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add private and license feature flags to enterprise validation docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add /refine skill for end-of-session doc evolution Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: remove architecture.md overview doc per research findings General codebase overviews distract agents and trigger unnecessary exploration. Keep only operational docs (validation, enterprise). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add autonomous mode doc for bypass permission workflows Covers: plan-first requirement, tmux pane usage for checking backend/frontend logs, manual testing via Playwright MCP, Playwright gotchas, and end-of-task summary expectations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add mermaid, playwright, and asciinema tools to autonomous mode doc Claude should use mmdc for diagrams during planning, playwright CLI for screenshots of frontend changes, and asciinema for terminal recordings of CLI changes. All attached to the PR. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use pastebin for screenshot/recording uploads Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address PR review findings - Remove stale docs/architecture.md reference from /refine skill - Fix script name: ./update-sqlx -> ./update_sqlx.sh - Remove .claude/settings.local.json mention from enterprise doc Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1.2 KiB
1.2 KiB
Frontend (Svelte 5)
- Coding patterns: MUST use the
svelte-frontendskill when writing Svelte code - Validation:
docs/validation.md—npm run check:fast(2s) for iteration,npm run check(50s) for final PR - UI components: use Windmill's design-system components (Button, TextInput, Select) — never raw HTML elements
- Brand/design:
frontend/brand-guidelines.md - Backend API: routes in
../backend/windmill-api/openapi.yaml, generated types insrc/lib/gen/ - Regenerate client:
npm run generate-backend-clientafter backend API changes
Key Frontend Patterns
Prefer Composable State Over Two-Way Binding
// Use resource() from runed for async data
import { resource } from 'runed'
let items = resource(() => args, (args) => SomeService.list(args))
// items.loading, items.current
// Use composables for shared reactive state
function useLoader(argsGetter: () => Args) {
let items = $state([])
let loading = $state(false)
$effect(() => { /* react to argsGetter() */ })
return { get loading() { return loading }, get items() { return items } }
}
Two-way binding is fine for simple form inputs. Avoid it for component-to-component state.