Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Set up project infrastructure including TypeScript, database, state management, navigation, and testing. Use when initializing new features or configuring development environment.
.claude/skills/aiskillstore-project-setup-architecture/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 65% | 0% |
Guide for setting up React Native/Expo project infrastructure.
bash# Install TypeScript npm install --save-dev typescript @types/react @types/react-native # Create tsconfig.json npx tsc --init
json{ "extends": "expo/tsconfig.base", "compilerOptions": { "strict": true, "skipLibCheck": true, "jsx": "react-native" } }
bash# Create feature-sliced architecture mkdir -p src/{app,features,shared,db,theme} mkdir -p src/shared/{components,hooks,utils,types}
bash# Install dependencies npx expo install expo-sqlite npm install drizzle-orm npm install --save-dev drizzle-kit # Create structure mkdir -p src/db/{schema,migrations}
typescript// src/db/client.ts import * as SQLite from 'expo-sqlite'; import { drizzle } from 'drizzle-orm/expo-sqlite'; const db = SQLite.openDatabaseSync('app.db'); export const drizzle = drizzle(db);
bashnpm install zustand
typescript// src/shared/stores/useAppStore.ts import { create } from 'zustand'; interface AppState { count: number; increment: () => void; } export const useAppStore = create<AppState>((set) => ({ count: 0, increment: () => set((state) => ({ count: state.count + 1 })), }));
bashnpm install --save-dev jest @testing-library/react-native
json// package.json { "scripts": { "test": "jest" } }
bashnpm install --save-dev eslint prettier npx eslint --init
json{ "expo": { "name": "MyApp", "slug": "my-app", "version": "1.0.0", "platforms": ["ios", "android"], "ios": { "bundleIdentifier": "com.company.myapp" }, "android": { "package": "com.company.myapp" } } }
json{ "scripts": { "start": "expo start", "android": "expo start --android", "ios": "expo start --ios", "test": "jest", "lint": "eslint src/", "type-check": "tsc --noEmit" } }
npx expo installbash# Check if it's an Expo SDK package npx expo install package-name # Otherwise use npm npm install package-name
bashmkdir -p src/features/my-feature/{components,hooks,services,types} touch src/features/my-feature/index.ts
bashnpx drizzle-kit generate:sqlite npx drizzle-kit push:sqlite
After setup, verify:
npx tsc --noEmit)npm test)npm run lint)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-22 | pass→pass | 15,757 | 14,732 | -7% | 1 | 1 | 0% | 3,078 | 4,086 | +33% | 0 | 0 | — |
case-01 | fail→pass | 19,857 | 16,146 | -19% | 1 | 1 | 0% | 3,937 | 3,287 | -17% | 0 | 0 | — |
case-02 | fail→fail | 16,416 | 12,489 | -24% | 1 | 1 | 0% | 2,437 | 2,610 | +7% | 0 | 0 | — |
case-03 | fail→pass | 12,502 | 4,060 | -68% | 1 | 1 | 0% | 2,183 | 1,698 | -22% | 0 | 0 | — |
case-04 | fail→fail | 9,887 | 13,291 | +34% | 1 | 1 | 0% | 1,815 | 2,419 | +33% | 0 | 0 | — |
case-05 | pass→pass | 16,235 | 12,223 | -25% | 1 | 1 | 0% | 2,708 | 2,829 | +4% | 0 | 0 | — |
case-06 | pass→pass | 16,526 | 7,693 | -53% | 1 | 1 | 0% | 1,910 | 2,515 | +32% | 0 | 0 | — |
case-07 | pass→pass | 12,499 | 14,113 | +13% | 1 | 1 | 0% | 2,301 | 2,663 | +16% | 0 | 0 | — |
case-08 | fail→pass | 18,355 | 13,998 | -24% | 1 | 1 | 0% | 2,172 | 2,774 | +28% | 0 | 0 | — |
case-09 | pass→pass | 33,510 | 13,739 | -59% | 1 | 1 | 0% | 2,042 | 2,309 | +13% | 0 | 0 | — |
case-10 | fail→fail | 10,508 | 9,326 | -11% | 1 | 1 | 0% | 1,968 | 2,760 | +40% | 0 | 0 | — |
case-11 | pass→pass | 7,327 | 9,273 | +27% | 1 | 1 | 0% | 1,377 | 1,826 | +33% | 0 | 0 | — |
case-12 | pass→pass | 16,649 | 11,115 | -33% | 1 | 1 | 0% | 2,116 | 2,049 | -3% | 0 | 0 | — |
case-13 | pass→pass | 9,308 | 5,497 | -41% | 1 | 1 | 0% | 1,557 | 2,030 | +30% | 0 | 0 | — |
case-14 | fail→pass | 25,764 | 8,057 | -69% | 1 | 1 | 0% | 1,812 | 2,278 | +26% | 0 | 0 | — |
case-15 | fail→pass | 12,222 | 11,538 | -6% | 1 | 1 | 0% | 1,367 | 2,260 | +65% | 0 | 0 | — |
case-16 | fail→pass | 7,889 | 2,778 | -65% | 1 | 1 | 0% | 1,465 | 1,452 | -1% | 0 | 0 | — |
case-17 | pass→pass | 15,034 | 7,789 | -48% | 1 | 1 | 0% | 2,516 | 2,496 | -1% | 0 | 0 | — |
case-18 | fail→pass | 20,399 | 11,746 | -42% | 1 | 1 | 0% | 2,645 | 2,331 | -12% | 0 | 0 | — |
case-19 | fail→pass | 16,738 | 3,818 | -77% | 1 | 1 | 0% | 1,452 | 1,618 | +11% | 0 | 0 | — |
case-20 | pass→pass | 17,453 | 16,264 | -7% | 1 | 1 | 0% | 2,396 | 2,876 | +20% | 0 | 0 | — |
case-21 | pass→pass | 15,484 | 13,706 | -11% | 1 | 1 | 0% | 2,155 | 3,003 | +39% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.