Engineering March 15, 2026 8 min read

How Project-Specific Skills Supercharge Your Development Workflow

Why generic AI prompts fall short — and how teaching your AI assistant the rules of your codebase unlocks a new level of productivity.

Manish Chahar Senior Software Engineer at Reltio

Every codebase has unwritten rules — naming conventions, folder structures, state management patterns, testing philosophies. When you onboard a new developer, it takes weeks before they stop asking "where does this go?" Now imagine your AI coding assistant never has to ask that question at all.

The Problem with Generic AI Assistance

Modern AI coding assistants are remarkably capable out of the box. They can write React components, generate SQL queries, and scaffold entire API endpoints. But here's the disconnect: they don't know your project.

When you ask a generic AI to "add a new API endpoint," it might scaffold something perfectly valid — but using Express conventions when your project uses FastAPI, or placing files in src/routes/ when your team uses app/api/. Every generated snippet becomes a mini code review, and you spend more time correcting the AI than you saved by using it.

The core insight: AI productivity isn't about how smart the model is — it's about how much context it has about your specific project.

What Are Project-Specific Skills?

Project-specific skills are structured knowledge files that teach your AI assistant the rules, patterns, and conventions of your codebase. Think of them as an always-available senior engineer who knows every design decision your team has ever made.

A skill typically includes:

  • File conventions — where different types of code live, naming patterns, export styles
  • Architecture patterns — state management approach, data fetching strategy, component composition
  • Coding standards — TypeScript strictness, error handling patterns, logging conventions
  • Testing philosophy — unit vs. integration boundaries, mocking strategy, coverage expectations
  • Domain knowledge — business entities, API contracts, feature flags

Real-World Impact: Building an Agentic AI Platform

At my current role, I work on an Agentic AI platform built with Next.js, TypeScript, and Python/FastAPI. The project has strong opinions about everything: RSC boundaries, SWR caching patterns, MCP app integration, MDX content rendering, and SSE streaming for real-time AI responses.

Before we introduced project-specific skills, a typical AI-assisted workflow looked like this:

Before: Generic AI Output
// AI generates a client component for data fetching
"use client";
import { useState, useEffect } from "react";

export default function UserList() {
  const [users, setUsers] = useState([]);
  useEffect(() => {
    fetch("/api/users").then(r => r.json()).then(setUsers);
  }, []);
  // ... renders list
}

This is valid React — but it violates three of our project's conventions: we use SWR for data fetching, server components by default, and our API calls go through a typed client layer. The "correct" version:

After: Skill-Informed Output
// AI generates using project conventions
import { getUsers } from "@/lib/api/users";

export default async function UserList() {
  const users = await getUsers();
  return <UserTable data={users} />;
}

// Client wrapper only where interactivity is needed
// "use client" in a separate UserTable component

With a project skill that encodes our RSC-first approach and SWR patterns, the AI produces the second version every time — zero corrections needed.

The Five Dimensions of Effective Skills

After months of iterating on skills for our platform, I've identified five dimensions that make the difference between a skill that gathers dust and one that genuinely accelerates your team:

01

Specificity Over Generality

Don't write "use TypeScript." Write "all component props must use interface declarations (not type aliases), exported from the same file, suffixed with Props." The more specific the rule, the more consistently the AI follows it.

02

Examples Beat Instructions

Show a complete, real code example from your codebase for every pattern. AI models learn better from concrete examples than abstract descriptions. One good example is worth ten paragraphs of explanation.

03

Anti-Patterns Are Essential

Explicitly list what NOT to do. "Never use any type. Never use barrel exports. Never put business logic in components." These negative constraints are often more impactful than positive ones.

04

Living Documentation

Skills should evolve with your codebase. When your team adopts a new pattern or deprecates an old one, the skill should be updated in the same PR. Treat skills as code, not as documentation.

05

Layered Architecture

Organize skills hierarchically: a master skill for global conventions, and page/feature-specific skills that override the master for specialized areas. This prevents contradictions and keeps each skill focused.

Measurable Gains

Since adopting project-specific skills on our project, the results have been concrete and measurable:

~70%
Reduction in AI-generated code corrections
2x
Faster onboarding for new team members
40%
Fewer architecture-related PR comments

The most surprising benefit wasn't the speed — it was consistency. When every developer's AI assistant follows the same conventions, the entire codebase starts to feel like it was written by one person. Code reviews shift from "this should be a server component" to actual logic discussions.

Getting Started: A Practical Template

If you want to start building skills for your own project, here's a minimal structure that covers the essentials:

SKILL.md — Starter Template
# [Project Name] Development Skill

## Stack
- Framework: Next.js 14 (App Router)
- Language: TypeScript (strict mode)
- Styling: CSS Modules + design tokens
- State: SWR for server, Zustand for client
- Testing: Vitest + Playwright

## File Conventions
- Components: `src/components/[Feature]/[Component].tsx`
- API routes: `src/app/api/[resource]/route.ts`
- Hooks: `src/hooks/use[Name].ts`

## Patterns
- Default to Server Components
- "use client" only for interactivity
- All data fetching through typed API client
- Error boundaries at layout level

## Anti-Patterns
- Never use `any` type
- Never fetch in useEffect (use SWR)
- Never put API keys in client code
- Never use default exports for components

Beyond Individual Productivity

The most powerful aspect of project-specific skills isn't what they do for a single developer — it's what they do for the team. Skills become a shared source of truth about how your codebase should evolve.

When a new pattern is adopted, updating the skill automatically propagates that knowledge to every developer's AI assistant. When a library is deprecated, the skill prevents the AI from suggesting it. It's like having architectural guardrails that are enforced at generation time, not just at review time.

"The best code review is the one that never needs to happen — because the code was generated correctly in the first place."

We're entering an era where the quality of your AI-assisted development isn't determined by which model you use, but by how well you've taught it to understand your world. Project-specific skills are the bridge between generic intelligence and domain expertise.

Start small. Pick the three conventions your team corrects most often in code reviews. Write them down as a skill. Watch the corrections disappear.

Want to see my portfolio and the projects I've built?

Check out my work, skills, and career journey.

View Portfolio