project-guidelines-example/SKILL.md
Example project-specific skill template based on a real production application — use as a starting point for your own project skills.
npx skillsauth add lidge-jun/cli-jaw-skills project-guidelines-exampleInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Template for creating project-specific skills. Adapt the sections below to your own project.
Based on a real production application: Zenith — AI-powered customer discovery platform.
Reference a project skill when working on its specific project. A project skill typically contains:
Tech Stack:
Services:
Frontend (Next.js 15 + TypeScript + TailwindCSS)
│
▼
Backend (FastAPI + Python 3.11 + Pydantic)
│
├── Supabase (Database)
├── Claude API
└── Redis (Cache)
project/
├── frontend/src/
│ ├── app/ # Next.js app router pages
│ ├── components/ # React components (ui/, forms/, layouts/)
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utilities
│ ├── types/ # TypeScript definitions
│ └── config/ # Configuration
│
├── backend/
│ ├── routers/ # FastAPI route handlers
│ ├── models.py # Pydantic models
│ ├── main.py # FastAPI app entry
│ ├── services/ # Business logic
│ └── tests/ # pytest tests
│
├── deploy/ # Deployment configs
└── scripts/ # Utility scripts
class ApiResponse(BaseModel, Generic[T]):
success: bool
data: Optional[T] = None
error: Optional[str] = None
@classmethod
def ok(cls, data: T) -> "ApiResponse[T]":
return cls(success=True, data=data)
@classmethod
def fail(cls, error: str) -> "ApiResponse[T]":
return cls(success=False, error=error)
async function fetchApi<T>(
endpoint: string,
options?: RequestInit
): Promise<ApiResponse<T>> {
const response = await fetch(`/api${endpoint}`, {
...options,
headers: { 'Content-Type': 'application/json', ...options?.headers },
})
if (!response.ok) return { success: false, error: `HTTP ${response.status}` }
return await response.json()
}
pytest tests/ # all tests
pytest tests/ --cov=. --cov-report=html # with coverage
pytest tests/test_auth.py -v # specific file
npm run test # unit tests
npm run test -- --coverage # with coverage
npm run test:e2e # Playwright E2E
cd frontend && npm run build && gcloud run deploy frontend --source .
cd backend && gcloud run deploy backend --source .
tools
Use only on the Codex CLI for native image generation or image editing without an API key. Save final PNG files under ~/.cli-jaw/uploads, report web-ready absolute-path markdown, and send to Telegram or Discord only when explicitly requested.
tools
Ranked repository structure map via `cli-jaw map`. Use for codebase overview, structure map, symbol overview, unfamiliar codebase exploration, architecture orientation. Triggers: repo map, structure map, codebase overview, 와꾸, project structure, unfamiliar code.
tools
cli-jaw Design workspace: create, preview, run, and export design pages from the right sidebar. Covers panel UX, direct-write workflow, artifact lifecycle, wireframe generation, design system, and Open Design adapter.
development
MUST USE for infrastructure and delivery work — container builds, deploy pipelines, Kubernetes, Infrastructure as Code, SRE foundations, edge/serverless, ML infrastructure. Triggers: Dockerfile, K8s manifests, CI/CD pipeline, Terraform/IaC, release/deploy, devops/infra/deploy or release_cd task_tags.