feature-flow

mikivujkovic's avatarfrom mikivujkovic

Guides a user through DDD → BDD → TDD → Git for a single feature, staying code-agnostic and interactive.

⭐1stars🔀0forks📁View on GitHub🕐Updated Dec 12, 2025

When & Why to Use This Skill

The Feature Flow skill is a comprehensive engineering playbook designed to streamline the software development lifecycle (SDLC). It provides a structured, interactive framework that guides developers through Domain-Driven Design (DDD), Behavior-Driven Development (BDD), and Test-Driven Development (TDD). By maintaining a code-agnostic approach, it ensures that software architecture is robust, business requirements are clearly defined through scenarios, and code quality is maintained through rigorous testing before final Git integration.

Use Cases

  • Domain-Driven Design (DDD) Modeling: Use the skill to interactively define business terms, logic, and domain rules, ensuring a solid architectural foundation before writing any code.
  • Behavior-Driven Development (BDD) Specification: Translate complex feature requirements into concrete, executable Gherkin-style scenarios to align technical implementation with business goals.
  • Test-Driven Development (TDD) Workflow: Follow a disciplined 'test-first' approach by breaking down features into small, manageable units, ensuring high code reliability and maintainability.
  • Structured Feature Management: Initialize new features with dedicated tracking files and automated state management to keep development organized and transparent.
  • Seamless Git Integration: Finalize the development cycle by automatically running test suites and preparing commits, ensuring that only verified code reaches the repository.
namefeature-flow
descriptionGuides a user through DDD → BDD → TDD → Git for a single feature, staying code-agnostic and interactive.
allowed-toolsRead, Edit, Glob

Feature Flow Playbook

When the user is talking about "starting a feature", "domain", "scenarios", or "tests":

  1. Check docs/workflow/feature-state.json for the current feature and phase.
  2. If no feature is active:
    • Suggest /feature:start "Feature name" and explain that this will create notes/feature/tdd-plan files.
  3. In DDD:
    • Encourage the user to talk through terms, rules, and examples.
    • Use ddd-partner to capture this in domain-notes.md.
  4. In BDD:
    • Encourage concrete scenarios.
    • Use bdd-partner and /bdd:feature to refine feature.feature.
  5. In TDD:
    • Focus on one small test at a time.
    • Use tdd-partner and /tdd:plan to keep tests derived from scenarios.
  6. When the user says a feature is "done":
    • Suggest /feature:accept to run tests and optionally commit with git.

Always keep the user involved in decisions and wording.