agentsclimarketplace

Cleanslice

Skill CleanSlice/skills/cleanslice

CleanSlice architecture for NestJS + Nuxt full-stack apps. Use for vertical slice features, gateway pattern, Provider.vue, Pinia stores, DTOs, or any CleanSlice project work.From its SKILL.md

Install
npx -y skills add CleanSlice/skills --skill cleanslice

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

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 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

6.4 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

CleanSlice


Quick Start

CleanSlice organizes code into vertical slices — self-contained feature modules following Clean Architecture.

Fixed stack: NestJS + Prisma (API) · Nuxt 3 + Vue 3 + Pinia (App) · Tailwind + shadcn-vue (UI)


Quick Reference

NeedAnswer
Slice folder nameSINGULAR: user/ not users/
Route/page filesPLURAL: /users, users.vue
DTO file namecamelCase: createUser.dto.ts
Data access layerGateway (NOT Repository)
State managementPinia stores/ (NOT composables)
Component entryProvider.vue required in every folder
DI tokensAbstract class with I prefix: IUserGateway
Backend orderschema → types → gateway → service → mapper → dtos → controller → module
Frontend ordernuxt.config → stores → components → pages
Implementation orderAPI first, then App

Bundled Resources

References (references/):

  • workflow.md — Four-phase workflow, fix-bug workflow, git commits, system prompt
  • backend.md — NestJS slice structure, module, controller, service, gateway, mapper, DTOs, types
  • frontend.md — Nuxt slice structure, auto-imports, Provider.vue, stores, composables
  • gateway.md — Gateway pattern with full code examples (abstract class, DI wiring)
  • typescript.md — TypeScript standards (no-any, I prefix, Types suffix, import aliases)
  • errors.md — Error pattern (BaseError, domain errors, interceptor, no try/catch in controllers)

When to Load References

  1. Load references/workflow.md when:

    • Starting any new feature, project, or bug fix
    • User asks how to plan or structure work
    • Need the four-phase workflow or system prompt
    • Trigger phrases: "new feature", "add", "create", "build", "implement", "plan", "start"
  2. Load references/backend.md when:

    • Implementing any API slice (NestJS)
    • Writing controllers, gateways, mappers, DTOs, modules
    • Questions about backend file structure or standards
    • Trigger phrases: "controller", "DTO", "module", "NestJS", "API", "endpoint", "Prisma"
  3. Load references/frontend.md when:

    • Implementing any App slice (Nuxt)
    • Writing stores, components, pages, composables
    • Questions about auto-imports, Provider.vue, or Pinia
    • Trigger phrases: "store", "page", "component", "Nuxt", "Vue", "Provider", "frontend"
  4. Load references/gateway.md when:

    • Implementing data access layer
    • Questions about Gateway vs Repository
    • DI injection tokens and abstract class pattern
    • Trigger phrases: "gateway", "repository", "data layer", "inject", "DI"
  5. Load references/typescript.md when:

    • Questions about naming conventions or TypeScript rules
    • Writing interfaces, enums, types, or imports
    • Any code review or standards check
    • Trigger phrases: "interface", "enum", "type", "naming", "any", "import alias", "standards"
  6. Load references/errors.md when:

    • Implementing error handling in any slice
    • Creating domain error classes
    • Questions about where errors belong or how they flow
    • Trigger phrases: "error", "exception", "throw", "not found", "catch", "BaseError"

Critical Rules

Mandatory Four-Phase Workflow

Every task follows these phases — stop and wait for user approval between each:

PhaseWhat You DoEnd With
Phase 1High-level plan: slices, pages, endpoints (NO file paths)"Do you approve?" → STOP
Phase 2Detailed plan: file paths, schemas, components, DTOs"Do you approve?" → STOP
Phase 3Implementation: API first, then App
Phase 4Review: validate against patterns, plan next iteration"STOP or continue?" → STOP

Technology Stack (FIXED — Never Ask)

api/    → NestJS + Prisma
app/    → Nuxt 3 + Vue 3 + Pinia
styling → Tailwind + shadcn-vue
db      → PostgreSQL (SQLite for dev)

Slice Structure

API slice                           App slice
api/src/slices/{slice}/             app/slices/{slice}/
├── {slice}.module.ts               ├── nuxt.config.ts
├── {slice}.controller.ts           ├── pages/
├── domain/                         │   ├── {slices}.vue        ← plural
│   ├── {slice}.types.ts            │   └── {slices}/[id].vue
│   ├── {slice}.service.ts          ← optional, for business logic
│   └── {slice}.gateway.ts          ├── components/
├── data/                           │   └── {slice}/
│   ├── {slice}.gateway.ts          │       ├── Provider.vue    ← REQUIRED
│   └── {slice}.mapper.ts           │       └── Layout.vue
└── dtos/                           ├── stores/
    ├── {slice}.dto.ts              │   └── {slice}.ts
    └── create{Slice}.dto.ts        └── composables/

Forbidden Patterns

WrongCorrect
.repository.ts.gateway.ts
AiService, ChatService (data access)AiGateway, ChatGateway — external integrations are gateways
UserRepositoryUserGateway (Prisma IS the repository)
composables/useChat.ts for statestores/chat.ts
create-message.dto.tscreateMessage.dto.ts
ChatWindow.vuechat/Provider.vue
features/slices/
hooks/stores/
React / Next.js / ViteNuxt
ExpressNestJS
TypeORMPrisma
Vanilla CSSTailwind + shadcn-vue
File paths in Phase 1Save for Phase 2

Git Commit Format

<type>: <description>
TypeDescription
featNew feature
fixBug fix
docsDocumentation only
refactorCode change, no feature/fix
testAdding/updating tests
choreMaintenance tasks

Add ! for breaking changes: feat!: change response format

Rules: lowercase · no period · imperative mood · under 72 chars


Official Documentation

What ships with it: 6 files

56.2 KB alongside SKILL.md

references/

Keep looking

Skills are one crate of 325,949. 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.