SkillAgentSearch skills...

architecture-fsd

Feature-Sliced Design — layers, import rules, and slice structure for src/renderer

Install / Use

npx skills add AK2083/DojoSphere

Installs into whichever agent you are using.

About this skill
🔧

.clinerules

Cline rules

Quality Score

64/100

Supported Platforms

Cline

Our assessment of architecture-fsd

architecture-fsd scores 64/100 on our quality scale, 3961st of 4,610 Development & Engineering skills we index.

Its .clinerules is 6.7 KB long, well organised into 9 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.

It has no GitHub stars yet, so there is no community track record; judge it on its content.

Substance
29/30
Structure
18/20
Description
12/15
Adoption
0/20
Freshness
5/15

Maintenance, license and trust

  • We could not determine when the repository was last updated.
  • Our last check on 2026-10-18 found the source still online.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

architecture-fsd compared with similar skills

All 4 of these similar skills score higher than architecture-fsd; compare them before choosing.

SkillScoreStarsUpdatedFormat
architecture-fsd (this skill)by AK2083640—.clinerules
taste-skillby Leonxlnx10099.7ktodayCLAUDE.md
ai-job-searchby MadsLorentzen10059.2ktodayCLAUDE.md
claude-howtoby luongnv8910042.0ktodayCLAUDE.md
algorithmic-artby anthropics100177.9k28d agoSKILL.md

Frequently asked questions

How do I install architecture-fsd?
Run npx skills add AK2083/DojoSphere. The install tabs above show the steps for each supported agent.
Which AI agents does architecture-fsd work with?
It is written for Cline, as a .clinerules file. Other agents that read the same format can often use it too.
Is architecture-fsd safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is architecture-fsd still maintained?
We could not determine when the repository was last updated.

description: Feature-Sliced Design — layers, import rules, and slice structure for src/renderer globs: src/renderer/**/* alwaysApply: false

Feature-Sliced Design (FSD)

Renderer code lives under src/renderer/ in five layers. Imports may only point downward — never from shared toward features, pages, widgets, or app.

app → pages, widgets, features, shared
pages → features, widgets, shared
widgets → features, shared
features → shared (+ slices of the same feature among themselves)
shared → internal only

app vs. shared — decision guide

Classify new dependencies by role, not technology:

| Question | → app | → shared | | ----------------------------------------------------------------------- | ------- | ---------- | | Part of the composition root (start app, register plugins)? | Yes | No | | Swappable/mockable without rewriting features? | No | Yes | | Features should not import SDKs directly? | — | Yes | | Switching mainly requires wiring changes in main.ts/providers/? | Yes | No |

Rules of thumb:

  • Render framework and global providers (app shell) → app/providers/ — configure directly, do not abstract.
  • Vendor/infrastructure clients (backend, storage bridge, …) → shared/ — wrap behind a public API (e.g. logError via @shared/lib, main-process logging in @main/shared/logging/).
  • Thin helpers built on the framework that features use everywhere → shared/lib/ (setup stays in app).

Split pattern: A dependency can be both — instance/wiring in app/providers/, usage API in shared/lib/ (e.g. plugin in app, composable in shared).

app

Composition root — app initialization, global providers, and framework wiring under providers/ and main.ts.

  • Contains everything that composes the renderer application; not further abstracted.
  • Examples (project-specific): Vue Router, Pinia instance, UI framework, i18n plugin.
  • Router imports only page components from @pages/*.
  • Router guards may use features/shared for app-wide orchestration (e.g. auth check).
  • Do not register feature or widget UI directly in the router.

pages

Route components — one page per route. The router knows only @pages/*.

  • Pages compose features and optionally widgets; they contain no business logic.
  • Structure per page: ui/, index.ts (public API).
  • Each file in ui/ is a page component: ship <Name>.vue, <Name>.stories.ts, and <Name>.e2e.spec.ts together (see vue-frontend.md).
  • Example: Login.vue binds @features/authentication/signin-user.

widgets

Standalone UI building blocks without feature affiliation (e.g. Navigation). Not a use-case slice.

  • May use features and shared, but should not be imported by pages when mounted globally.
  • Structure: ui/, optional i18n/, index.ts.
  • Each component in ui/ requires colocated <Name>.stories.ts and <Name>.e2e.spec.ts.

features

Business functionality divided into slices (use cases). One slice = one cohesive use case.

Ideal slice structure per use case:

features/<feature>/<slice>/
  ui/          # Vue components for the use case
               # Per component: <Name>.vue + <Name>.stories.ts + <Name>.e2e.spec.ts (all required)
  model/       # composables, state, form logic
  i18n/        # keys.ts, de.ts, en.ts, index.ts (one de/en file each — no language subfolders)
  api/         # use-case API: wraps shared/api for this slice
  service/     # (optional) orchestration within the slice
  index.ts     # public API — export only here

API layering: Generic client access lives in shared/api/ (e.g. Supabase client, generic auth functions). Each slice that needs such access gets its own api/ folder with use-case-specific functions that call shared/api and handle errors/monitoring at slice level.

  • model/ and service/ import only from the slice api/, never directly from @shared/api.

  • Example: register-user/api/sign-up-with-mail-and-password.ts calls signUpByEmailPassword from @shared/api; model/use-register.ts uses the slice function.

  • Cross-slice logic within a feature belongs in features/<feature>/service/ or model/.

  • Slices import shared; they may use other slices of the same feature, but not other features, pages, or widgets.

  • Add new functionality as a new slice; do not mix into existing slices.

shared

Abstraction of swappable dependencies. No feature or page logic. Features/widgets import only the public API — never the SDK directly.

| Segment | Level | Content | | ------------------------------------------------------------ | ---------- | ------------------------------------------------------- | | api/ | Low-level | Client implementations (e.g. Supabase) | | lib/browser/, lib/validation/, lib/pinia/, lib/i18n/ | Low-level | Technical helpers, validation, store utilities | | lib/logging/ | High-level | Error logging via logError (@shared/lib public API) | | ui/ | — | Reusable Vue components without feature affiliation | | model/, store/, types/, errors/ | — | Shared domain types, stores, error classes |

  • Low-level: direct technology abstractions (storage, HTTP client, validators).
  • High-level: domain-near abstractions (logging). Features use @shared/lib logError in api/ layers instead of direct file or IPC access.
  • Vue components without feature affiliation → shared/ui/, not in features.
  • Each component in shared/ui/ requires colocated <Name>.stories.ts and <Name>.e2e.spec.ts.
  • shared imports no features, pages, widgets, or app.

Import aliases

@app/*, @pages/*, @features/*, @widgets/*, @shared/* — always import via aliases, never relative paths across layer boundaries.

Checklist for new files

  1. Correct layer and slice chosen?
  2. app vs. shared: wiring or swappable abstraction?
  3. Import direction respected (downward only)?
  4. Public API exported via index.ts?
  5. i18n keys in slice under i18n/, not in shared?
  6. Reusable UI without feature affiliation → shared/ui/?
  7. API access to shared/api → slice api/ as intermediary, not directly in model/?
  8. New or changed file in ui/ → colocated <Name>.stories.ts and <Name>.e2e.spec.ts added in the same change (not follow-up)?

Related Skills

View on GitHub
GitHub Stars0
CategoryDevelopment
UpdatedNaNy ago
Forks0

Trust signals

68/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

2 medium1 low