| name | data-placement |
| description | Code-generation skill. Use only when creating, moving, or extending repo-backed data modules, slug helpers, or static-route data in this repo. |
| metadata | {"family":"code","owner":"engineering","last_reviewed":"2026-04-30T00:00:00.000Z","version":"1.0.0"} |
Data Placement
This is a code-generation skill. Use it only when the task ends in repo data/code changes.
Use When
- adding a new dataset
- deciding where data should live
- moving old data to current locations
- adding typed helpers for static routes
Core Rule
Feature-owned data belongs in:
src/features/<feature>/data/...
Active Homes
- roles:
src/features/roles/data/*
- cities:
src/features/cities/data/*
- guides:
src/features/guides/data/*
- how-to-become:
src/features/how-to-become/data/*
- certifications:
src/features/certifications/data/*
- tools registry:
src/features/tools/shared/data/tool-registry/*
- wage report:
src/features/wage-report/data/*
- financial tips:
src/features/financial-tips/data/*
- industries:
src/features/industries/data/*
- interview questions:
src/features/interview-questions/data/*
Required Patterns
- colocate
data.ts and types.ts when practical
- keep selectors near the feature dataset
- keep slugs stable, lowercase, and route-safe
- make detail helpers return
undefined cleanly for notFound()
Approved Pattern
export interface ExampleItem {
slug: string;
title: string;
description: string;
}
export const exampleItems: ExampleItem[] = [];
export function getExampleBySlug(slug: string) {
return exampleItems.find((item) => item.slug === slug);
}
Infrastructure Helpers, Not Data Ownership
These are helpers, not the default home for feature data:
src/lib/faq-generator.ts
src/lib/calculators/*
src/lib/server/search-index.ts
Forbidden Patterns
- new feature datasets in
src/lib/data/*
- content datasets in
src/app
- generic dumping into top-level shared folders when a feature owns the data