minozzzi/dotfiles/imowiz-web-filter-dataflow-diagnosis
Trust tier 3
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
Diagnose filter and data-flow bugs in the Imowiz web portal (apps/web) — nuqs defaults, buildSearchParams mapping, DTO/mapper casing fragility, and PascalCase API contract
Install
npx vskill@latest install minozzzi/dotfiles/imowiz-web-filter-dataflow-diagnosisSKILL.md
Diagnosing Filter & Data-Flow Bugs in apps/web (Imowiz Portal)
Use when investigating bugs in /properties or / (home) involving filters, card clicks, detail navigation, or stale/incorrect listings in the apps/web app of the imowiz-frontend monorepo.
Data flow (the golden path — trace bugs along this chain)
Key files and their roles
| File | Role | |
|---|---|---|
apps/web/src/modules/properties/hooks/use-property-filters.ts | nuqs parsers + defaults. Check withDefault() — shadow defaults fabricate active filters silently. | |
apps/web/src/modules/properties/components/filter-sidebar.tsx | UI labels (e.g. ${num}+) vs values sent. Check if label promises range but value is exact. | |
apps/web/src/modules/properties/http/get-properties.ts | buildSearchParams() maps frontend → PascalCase API params. Check for exact-vs-range semantics here. | |
apps/web/src/modules/properties/mappers/property-mapper.ts | Normalizes casing: has fallbacks (price ?? sellPrice, bedrooms ?? bedRooms, images ?? photos) — check id which historically has none. | |
apps/web/src/core/router/routes.ts | ROUTES.PROPERTIES.update = { path: "/properties/:id", params: { id: true } }. | |
packages/utils/src/create-generate-route-path/create-generate-route-path.ts | generateRoutePath() — does path.replace(":id", params.id). If params.id is the string "undefined" → /properties/undefined (bad). If "" → /properties/ (falls to index). |
Known bug patterns in this codebase
Pattern 1: nuqs withDefault() fabricates implicit filters
parseAsInteger.withDefault(1)makespurpose=1always present →buildSearchParamssendsPurpose=Saleeven when user didn't select it.- Check: any parser with
withDefault(N)where N is truthy AND consumed bybuildSearchParamswith a truthy guard (if (params.X)) → implicit filter. - Fix: drop the
withDefault, allownullas neutral state, add a "Qualquer"/"Any" button for null.
Pattern 2: UI label semantics ≠ value semantics
- Buttons labeled
1+,2+,3+(promising "1 or more") send exact valuesNumberOfBedrooms=1, not>=1. - Fix: change param name to
MinNumberOfBedrooms(confirm with Swagger first) or adjust labels to exact. - Applies identically to
bathsandparking.
Pattern 3: Mapper casing fragility
- C# API likely returns PascalCase (
Id,Price,Bedrooms). mapRawPropertyToSummaryhas casing fallbacks for most fields exceptid(justitem.id).- If
idcomes back asId(PascalCase), cards generatehref="/properties/undefined"orhref="/properties/"→ 404 or redirects to list. - Fix: add
item.id ?? item.Id ?? item.IDfallback pattern, plus.filter((p) => p.id)as safety net where mapped.
Pattern 4: featured param silently dropped
getPropertiesAction({ featured: true })passesfeaturedbutbuildSearchParamsignores it → home "Destaques" section actually gets first 12 arbitrary properties, not backend-flagged featured ones.
Verification approach
- No automated tests in this repo (copilot-instructions.md confirms). Verification is manual smoke.
- Must use tenant subdomain in dev (e.g.
imowiz.imowiz.com.br:PORT, notlocalhost) — host-based tenant resolution. evaltool is effective for reproducingbuildSearchParamsandgenerateRoutePathbehavior with synthetic inputs before committing to a fix.
API contract reminders (C# backend)
- Query params: PascalCase (
Purpose,ListingTypeId,City,NumberOfBedrooms,MinPrice,CurrentPage,PageSize). Purposevalues: string enums"Sale","Rent","SaleAndRent"— confirm exact strings with Swagger.- Range filter param names (e.g.
MinNumberOfBedroomsvsNumberOfBedrooms) must be confirmed with Swagger before changingbuildSearchParams. - Response also PascalCase but mapper handles most casing; the exception is
id.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingconfig/skills/imowiz-web-filter-dataflow-diagnosis/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/minozzzi/dotfiles/imowiz-web-filter-dataflow-diagnosis)