agentsclimarketplace

Project init

Skill gridi-ai/gridi-skills/skills/project-init

Project initialization and configuration skill. Auto-detects tech stack and conventions from existing projects, or collects preferences interactively for new projects to generate crew-config.json. Must be invoked before the workflow orchestrator's first run.From its SKILL.md

Install
npx -y skills add gridi-ai/gridi-skills --skill project-init

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

11.6 KB, as published. Nobody here has run it

Project Init

Analyzes project environment and generates crew-config.json before starting the workflow.

Language Detection

The output language for all Crew skills is determined by crew-config.json → preferences.language.

Auto-detection rule: If the user invokes a Crew skill with additional text in a specific language, that language is automatically set as the preference. No explicit question is needed.

User inputDetected language
/crew:workflow-orchestrator Build a shopping mallen
/crew:workflow-orchestrator 쇼핑몰 만들어줘ko
/crew:workflow-orchestrator ECサイトを作ってja
/crew:workflow-orchestrator Créer une boutique en lignefr

If no accompanying text is provided (bare /crew:workflow-orchestrator), ask the user:

What language would you like Crew to use for documents and communication?
- (1) English (default)
- (2) 한국어
- (3) 日本語
- (4) Other (specify)

The detected or selected language is saved to crew-config.json → preferences.language. All subsequent skills read this field and produce outputs in that language.

Operation Modes

Mode A: Existing Project Detection (Auto-analysis)

If source code exists at the project root, analyze automatically.

Project root scan
     │
     ├── package.json found? → Node.js ecosystem analysis
     ├── requirements.txt / pyproject.toml? → Python ecosystem analysis
     ├── go.mod? → Go ecosystem analysis
     ├── pom.xml / build.gradle? → Java ecosystem analysis
     └── None found → Mode B (Interactive setup)

Detection Targets

CategoryDetection TargetDetection Method
FrameworkNext.js, NestJS, Express, FastAPI, Django, Spring Boot, Gin, etc.package.json dependencies, import patterns
LanguageTypeScript, JavaScript, Python, Go, JavaFile extensions, tsconfig.json existence
Package Managernpm, yarn, pnpm, pip, poetryLock file existence
Test FrameworkJest, Vitest, Mocha, pytest, JUnitdevDependencies, test config files
Linter/FormatterESLint, Prettier, Ruff, BlackConfig file existence
DatabasePostgreSQL, MySQL, SQLite, MongoDBORM config, env vars, docker-compose
ORMPrisma, TypeORM, Sequelize, SQLAlchemy, GORMDependencies, config files
CSSTailwind, styled-components, CSS Modules, SCSSConfig files, dependencies
State ManagementRedux, Zustand, Recoil, PiniaDependencies
AuthenticationNextAuth, Passport, direct JWTDependencies, auth-related files
API StyleREST, GraphQLRoute patterns, dependencies
MonorepoTurborepo, Nx, LernaConfig files, workspaces
ContainerDocker, docker-composeDockerfile existence
CI/CDGitHub Actions, GitLab CI.github/workflows, .gitlab-ci.yml
ID StrategyUUID, Auto-increment, ULID, nanoidEntity/migration analysis
i18nnext-intl, react-i18next, vue-i18nDependencies, translation files
Commit ConventionConventional Commits, freeformcommitlint config, recent commit analysis

Analysis Process

# 1. Framework & language detection
cat package.json 2>/dev/null  # Analyze dependencies
ls tsconfig.json 2>/dev/null  # TypeScript check
cat requirements.txt 2>/dev/null || cat pyproject.toml 2>/dev/null

# 2. Project structure analysis
ls -la src/ app/ pages/ components/ 2>/dev/null  # Directory patterns
find . -name "*.test.*" -o -name "*.spec.*" | head -5  # Test patterns

# 3. Config file scan
ls .eslintrc* eslint.config* .prettierrc* tailwind.config* 2>/dev/null
ls docker-compose* Dockerfile 2>/dev/null
ls .github/workflows/*.yml 2>/dev/null

# 4. DB & ORM detection
cat prisma/schema.prisma 2>/dev/null  # Prisma
grep -r "TypeORM\|createConnection" src/ 2>/dev/null | head -3

# 5. ID strategy detection
grep -r "uuid\|UUID\|randomUUID\|SERIAL\|AUTO_INCREMENT\|autoIncrement" \
  --include="*.ts" --include="*.py" --include="*.java" -l 2>/dev/null | head -5

# 6. i18n detection
cat package.json 2>/dev/null | grep -o '"next-intl"\|"react-i18next"\|"vue-i18n"'
ls locales/ messages/ i18n/ 2>/dev/null

# 7. Commit convention detection
cat commitlint.config* 2>/dev/null
git log --oneline -20 2>/dev/null

Mode B: Interactive Setup (New Project)

If the project is empty or no source code is found, ask the user interactively.

Question Flow

## 🚀 Crew Project Initialization

No existing code detected in this project. Let's set things up with a few questions.

### 1. Project Type
What kind of project is this?
- (1) Full-stack web application
- (2) Backend API only
- (3) Frontend only
- (4) Monorepo (frontend + backend)

### 2. Backend Framework (if backend included)
- (1) NestJS (TypeScript) — recommended
- (2) Express (TypeScript)
- (3) FastAPI (Python)
- (4) Django (Python)
- (5) Spring Boot (Java)
- (6) Gin (Go)

### 3. Frontend Framework (if frontend included)
- (1) Next.js (React) — recommended
- (2) React + Vite
- (3) Vue 3 + Vite
- (4) Svelte
- (5) Angular

### 4. Database
- (1) PostgreSQL — recommended
- (2) MySQL
- (3) SQLite (dev/prototype)
- (4) MongoDB

### 5. CSS/Styling (if frontend included)
- (1) Tailwind CSS — recommended
- (2) styled-components
- (3) CSS Modules
- (4) SCSS

### 6. ID Strategy
- (1) UUID (application-level generation) — recommended
- (2) Auto-increment (DB-generated)
- (3) ULID
- (4) nanoid

### 7. Internationalization (i18n)
- (1) Enabled (next-intl / react-i18next)
- (2) Disabled

### 8. Package Manager
- (1) npm
- (2) yarn
- (3) pnpm — recommended

> Reply with numbers (e.g., "1, 1, 1, 1, 1, 1, 1, 3")
> Or answer each question individually.

Quick Presets

If the user types "default", "recommended", or similar, apply the recommended preset:

{
  "projectType": "fullstack",
  "backend": { "framework": "nestjs", "language": "typescript" },
  "frontend": { "framework": "nextjs", "language": "typescript" },
  "database": { "type": "postgresql" },
  "styling": "tailwindcss",
  "idStrategy": "uuid",
  "i18n": true,
  "packageManager": "pnpm"
}

Recommended Defaults

When the user doesn't specify preferences or selects "recommended", apply these defaults:

Stack

ComponentDefaultWhy
BackendNestJS (TypeScript)Mature DI, decorators, excellent TS support
FrontendNext.js (React)SSR/SSG, App Router, large ecosystem
DatabasePostgreSQLACID, JSON support, widely deployed
ORMPrismaType-safe, excellent DX, auto migrations
StylingTailwind CSSUtility-first, fast iteration, no CSS-in-JS runtime
StateZustandMinimal boilerplate, TS-native
Package ManagerpnpmFast, disk-efficient, strict
ID StrategyUUIDDistributed-safe, no DB dependency

Convention Defaults

ConventionDefaultWhy
Contract Driven DevelopmentEnabledType-safe API integration, catches contract mismatches at compile time
i18nEnabledReady for localization from day one
Commit ConventionConventional CommitsEnables auto-changelog and semantic versioning
Branch StrategyFeature BranchClean PR-based workflow

Output: crew-config.json

After analysis or interactive setup, generate crew-config.json at the project root.

{
  "$schema": "https://raw.githubusercontent.com/gridi-ai/gridi-skills/main/schemas/crew-config.schema.json",
  "version": "1.0.0",
  "preferences": {
    "language": "en"
  },
  "project": {
    "name": "my-project",
    "type": "fullstack",
    "monorepo": false
  },
  "backend": {
    "framework": "nestjs",
    "language": "typescript",
    "orm": "prisma",
    "testFramework": "jest",
    "apiStyle": "rest"
  },
  "frontend": {
    "framework": "nextjs",
    "language": "typescript",
    "styling": "tailwindcss",
    "stateManagement": "zustand",
    "testFramework": "vitest"
  },
  "database": {
    "type": "postgresql",
    "orm": "prisma"
  },
  "conventions": {
    "idStrategy": "uuid",
    "i18n": true,
    "commitConvention": "conventional",
    "contractDriven": true,
    "branchStrategy": "feature-branch",
    "cssNaming": "tailwind-utility"
  },
  "tools": {
    "packageManager": "pnpm",
    "linter": "eslint",
    "formatter": "prettier",
    "containerization": "docker-compose",
    "ci": "github-actions"
  },
  "integrations": {
    "figma": false,
    "playwright": true
  },
  "detectedAt": "2026-03-24T00:00:00Z",
  "detectionMode": "auto"
}

Contract Driven Development (Default)

When conventions.contractDriven is true (the default), all skills follow this pattern:

  1. be-spec writes the OpenAPI spec first
  2. be-main generates backend types from the spec and implements to satisfy the contract
  3. fe-main generates API client from the spec — no manual fetch/axios calls

This ensures type-safe integration between backend and frontend.

To disable: set conventions.contractDriven: false in crew-config.json.

See: be-spec/references/contract-driven-development.md for details.

How Skills Use crew-config.json

All skills read crew-config.json and adapt their behavior accordingly:

SkillReferenced SettingsImpact
All skillspreferences.languageOutput language for documents and communication
tech-leadidStrategy, backend, databaseID strategy for data modeling
be-mainbackend.framework, idStrategyFramework-specific code patterns
be-testbackend.testFrameworkJest vs pytest vs JUnit selection
be-specbackend.apiStyleREST vs GraphQL spec generation
fe-mainfrontend.framework, styling, i18nUI code generation patterns
qa-e2eintegrations.playwrightTest runner setup
citools.ci, conventions.commitConventionCI pipeline and commit rules
devopstools.containerizationDocker vs direct execution
product-designerintegrations.figmaFigma MCP availability
be-spec, be-main, fe-mainconventions.contractDrivenEnable/disable OpenAPI-based type and client generation

Reconfiguration

If crew-config.json already exists:

## Existing Configuration Detected

`crew-config.json` already exists.

- **Project**: {project.name}
- **Language**: {preferences.language}
- **Backend**: {backend.framework} ({backend.language})
- **Frontend**: {frontend.framework} ({frontend.language})
- **Database**: {database.type}
- **ID Strategy**: {conventions.idStrategy}

Would you like to:
- (1) Use as-is
- (2) Re-analyze (reflect project changes)
- (3) Manually modify specific settings

MCP Connection Detection

Also detect Figma and Playwright MCP connection status:

# Check MCP server list
# If TalkToFigma MCP is available → integrations.figma = true
# If Playwright MCP is available → integrations.playwright = true

Validation

Verify that the generated crew-config.json is valid:

  • Required fields exist (project.type, at least one of backend or frontend)
  • Framework-language combination is valid (e.g., nestjs + typescript ✅, nestjs + python ❌)
  • ID strategy is specified
  • Test framework is specified
  • preferences.language is set

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.