ffca-architecture

Installation
SKILL.md

FFCA Architecture

Orientation skill for Feature-First Clean Architecture (FFCA) monorepos. It tells you how to navigate the structure and which rules apply. It does not restate the conventions: those live in ${CLAUDE_PLUGIN_ROOT}/references/ffca/. Every step below names the file and section to read.

Confirm you are in an FFCA repo

The detection signal is a features/ folder whose packages follow the {feature}_domain, {feature}_data, or {feature}_presentation naming. If the repo uses the standard VGV layered structure (packages/ with _repository/_api_client), this is not an FFCA repo: defer to the layered-architecture skill instead.

Workflow: deciding where code lives

  1. Read references/ffca/overview.md, section The structure, to place the work in one of the three top-level folders: apps/, features/, shared/.
  2. To decide between a feature and a shared package, apply the two-question decision rule in references/ffca/overview.md, section Shared libraries (a business capability an app composes goes to features/; something you could publish to pub.dev and a stranger would use unchanged goes to shared/). Use its component table to settle edge cases.
  3. To decide which layers a feature needs, read references/ffca/overview.md, sections Headless features and Presentation-only features. A feature with no screens stays domain plus data and can grow a presentation package later with no structural change. A feature that only composes other features' domains into a screen has a presentation package and nothing else.
  4. Before naming any package, read references/ffca/project_structure.md, section Naming conventions. The names are mechanically validated by the hook, so they are not optional.
  5. To place a file inside a package, read references/ffca/project_structure.md, section Layer subfolders, for the per-layer folder map (models/, repositories/, use_cases/, data_sources/, dtos/, mappers/, and the per-screen bloc/, views/, module layout).

Vocabulary: Command and Query, not use case

The classes in use_cases/ are named Command (mutates, execute) and Query (reads, get or watch). Use those words when you talk about them and when you name them. The folder keeps the conventional use_cases/ name so the layout matches other clean architecture projects, but the term "use case" is not used for the classes. Read references/ffca/domain.md, section Business rules.

Installs
1
GitHub Stars
7
First Seen
4 days ago
Security Audits