architecture

Enforce cli → flows → data layering with inner dependencies for fund-portfolio-bot modules.

Updated Nov 7, 2025
One-click install
npx skills add https://github.com/MMorit00/fund-portfolio-bot --skill architecture-mmorit00
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: architecture
Source: https://github.com/MMorit00/fund-portfolio-bot/tree/main/.claude/skills/architecture
Command: npx skills add https://github.com/MMorit00/fund-portfolio-bot --skill architecture-mmorit00

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill provides a clear, enforced blueprint for fund-portfolio-bot's architecture to ensure modules follow a strict cli → flows → data layering with inner dependencies only.

Core Features & Use Cases

  • Three-layer structure: cli, flows, and core/data with inward dependencies and clear boundaries.
  • Dependency injection guidance: promotes decoupling and testability through explicit injection points.
  • Practical rules: guidance on imports, naming, and module boundaries to avoid cycles and leakage.

Quick Start

Design or review a component using the provided layering rules and apply dependency injection as you scaffold new flows.

Frequently Asked Questions about architecture

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I enforce a strict layered architecture in my Python project?

Enforce a strict layered architecture by defining a 3-layer structure (cli → flows → data) with inner dependencies only. This blueprint guides module organization, naming conventions, and import changes to maintain clear boundaries and prevent cycles.

What is the correct dependency direction for a cli, flows, and data architecture?

The correct dependency direction for a cli, flows, and data architecture is strictly inward. The cli layer depends on flows, and flows depends on core or data layers, ensuring dependencies never point outward to prevent structural leakage and cyclic imports.

How do I use dependency injection to decouple modules in a layered architecture?

Use dependency injection to decouple modules in a layered architecture by establishing explicit injection points. This promotes testability and prevents leakage across cli, flows, and data boundaries by injecting dependencies rather than hardcoding imports.

Does this layered architecture approach work for existing code reviews and import changes?

Yes, this layered architecture approach applies to existing code reviews and import changes. It provides practical rules to check module boundaries, verify naming conventions, and ensure proper layering and dependency direction during ongoing development.

What's the best way to prevent cyclic imports in a 3-layer architecture?

The best way to prevent cyclic imports in a 3-layer architecture is to enforce inward-only dependencies and clear module boundaries. Specifying naming conventions and using dependency injection eliminates circular references between the cli, flows, and data layers.