infra
SkillDev toolsHelps your agent work with packages, dependencies, monorepo structure, and build configuration.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the infra skill
About this capability
Use when working with packages, dependencies, monorepo structure, or build configuration
What this skill tells your AI
The instructions your AI receives, as published by trycompai/comp in .agents/skills/infra/SKILL.md and read by ahel’s review.
Source Cursor rule: .cursor/rules/infra.mdc.
Original Cursor alwaysApply: false.
Infrastructure
Package Manager
Use bun, never npm/yarn/pnpm.
bun install # Install deps
bun add <pkg> # Add package
bun add -D <pkg> # Add dev dependency
bun run <script> # Run script
bunx <cmd> # Execute binary
Monorepo Structure
comp/
├── apps/
│ ├── api/ # NestJS backend
│ ├── app/ # Next.js main app
│ └── portal/ # Next.js portal
├── packages/
│ ├── db/ # Prisma (@trycompai/db)
│ ├── ui/ # Legacy UI (@trycompai/ui); prefer @trycompai/design-system
│ └── ...
├── turbo.json
└── package.json
Running Commands
# Multi-package (via turbo)
bun run build # Build all
bun run lint # Lint all
bun run typecheck # Type check all
bun run dev # Dev all
# Single package
bun run -F apps/app dev
bun run -F @trycompai/db prisma:generate
turbo build --filter=@trycompai/ui
Importing Between Packages
// ✅ Import from package name
import { Button } from '@trycompai/design-system';
import { prisma } from '@trycompai/db';
// ❌ Never relative paths across packages
import { Button } from '../../../packages/ui/src/button';
Adding Dependencies
# To specific package
bun add axios -F apps/app
bun add -D vitest -F @trycompai/ui
# To root (dev tools only)
bun add -D -w prettier typescript
After Code Changes
Always run checks:
bun run typecheck
bun run lint
Fix all errors before committing.
Common TypeScript Fixes
- Property does not exist: Check interface definitions
- Type mismatch: Verify expected vs actual type
- Empty interface extends: Use
type X = SomeTypeinstead
Common ESLint Fixes
- Unused variables: Remove or prefix with
_ - Any type: Add proper typing
- Empty object type: Use
typeinstead ofinterface
Creating a New Package
mkdir packages/my-package
// packages/my-package/package.json
{
"name": "@trycompai/my-package",
"version": "0.0.0",
"private": true,
"main": "./src/index.ts",
"scripts": {
"build": "tsup src/index.ts --format cjs,esm --dts",
"typecheck": "tsc --noEmit"
}
}
// packages/my-package/tsconfig.json
{
"extends": "@trycompai/tsconfig/base.json",
"include": ["src"]
}
Package Boundaries
✅ Create packages for:
- Code used by 2+ apps
- Self-contained, focused functionality
❌ Don't create packages for:
- Code only used in one app (colocate instead)
- App-specific business logic
Signals
- GitHub stars
- 2k
- Forks
- 412
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
infra- Source
- github.com/trycompai/comp