# Config Project Rs

> Inicializar workspace Rust (Cargo) com Axum, sqlx, shared-kernel e layout modular por Bounded Context. Usar quando o pedido envolver bootstrap backend Rust, setup Cargo workspace ou estrutura Clean Architecture em Rust.

- Skill: `eskcti/config-project-rs` (Agent Skill, multi-file: 21 files)
- Install (CLI): `npx skillmds@latest add eskcti/config-project-rs`
- Raw SKILL.md: https://api.skillmd.com/api/skills/eskcti/config-project-rs/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: EskCti (https://skillmd.com/u/eskcti)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/eskcti/config-project-rs

---


# Config Project (Rust)

## Overview

Bootstrap determinístico e idempotente: workspace Cargo com crate `shared-kernel` e binary `api` (Axum), Postgres via docker-compose dev, layout **modular por camada** sem namespaces redundantes.

## Estrutura alvo

```
project-root/
├── Cargo.toml                 # [workspace]
├── crates/
│   ├── shared-kernel/         # Entity, ValueObject, Result, UseCase
│   └── api/
│       └── src/
│           ├── main.rs
│           ├── lib.rs
│           ├── config.rs
│           └── modules/       # um subdir por Bounded Context
│               ├── health/
│               └── <bc>/      # config-new-module-rs
├── migrations/                # sqlx (config-sqlx-rs)
├── tests/integration/         # test-e2e-rs
├── docker-compose.yml
└── .env.example
```

## Namespaces (obrigatório)

Consultar `../config-shared-core-rs/references/rust-namespace-layout.md`:

- ✅ `modules::customers::domain::Customer`
- ❌ `modules::customers::domain::customer::Customer`
- ❌ `domain::cliente::Cliente`

## Workflow

1. Detectar `Cargo.toml` workspace na raiz; se ausente, copiar template.
2. Validar crates `shared-kernel` e `api`.
3. Configurar `.env`, `docker-compose.yml`, `migrations/`.
4. `cargo build` e `cargo test -p shared-kernel`.
5. Ao **fechar cada épico**: testes + CI + `config-cicd-rs/scripts/check-memory-rs.sh` (ver `skills-standards.md` Epic Definition of Done).

## Commands

```bash
node config-project-rs/scripts/project-init-rs.mjs --project-name=MyApp
cp .env.example .env && docker compose up -d
cargo run -p api
```

> **Nomes de crates são fixos**: `api` e `shared-kernel` (referenciados por `-p api`, imports `use api::{...}` e CI). `--project-name` só afeta logs/display do script — não renombra crates.

## Resources

- `agents/openai.yaml`
- `scripts/project-init-rs.mjs`
- `assets/project-template-rs/`
- `references/bootstrap-contract-rs.md`
- `../config-shared-core-rs/references/rust-namespace-layout.md`

## Global Standards

- Consultar `../skills-standards.md` seção **Rust Stack Standards**.

