This skill should be used when the user wants to generate requirements.md for a slice. Trigger when the user invokes /feature-requirements, says "formalize the requirements", or asks for the F/N traceability after plan.md exists. Reads prd.md and plan.md. Produces requirements.md only — formal functional (F) and non-functional (N) requirements with IDs that the validation and tests phases trace back to.
This skill should be used when the user wants to generate tests.md for a slice. Trigger when the user invokes /feature-tests, says "write outside-in test spec", or asks to describe the slice-level integration test in markdown form before any code is written. Use only after prd.md, plan.md, requirements.md, validation.md exist. Produces markdown specification only; does not write C# code.
This skill should be used when the user wants to generate validation.md for a slice. Trigger when the user invokes /feature-validation, says "write the validation checklist", or asks for manual scenarios after requirements.md exists. Reads prd.md, plan.md, requirements.md. Produces validation.md with manual scenarios and code review checklist.
This skill should be used when the user wants to generate the executable C# outside-in test for a slice from its tests.md specification. Trigger when the user invokes /slice-test-red, says "generate the red test", "write the outside-in C# test", or asks to translate tests.md into a runnable xUnit test class. Use only after tests.md exists. Reads tests.md plus architectural context, writes <Slice>OutsideInTests.cs, runs dotnet test, and verifies the test is RED.
This skill should be used when the user references slice spec work, mentions a slice folder (specs/features/...), asks "what's next" on a slice, or invokes the spec chain. It auto-loads the architectural context, inspects the current slice folder, determines which stage the slice is in, and advises which command to run next. This skill advises only; it does not write spec files itself.
Structure Flutter apps using layered architecture (UI / Logic / Data) with feature-first file organization. Use when creating new features, designing the project folder structure, adding repositories, services, view models (or cubits/providers/notifiers), wiring dependency injection, or deciding which layer owns a piece of logic. State management agnostic.
Implement Flutter state management using the bloc and flutter_bloc libraries. Use when creating a new Cubit or Bloc, modeling state with sealed classes or status enums, wiring BlocBuilder/BlocListener/BlocProvider in widgets, writing bloc unit tests, refactoring state management, or deciding between Cubit and Bloc.
This skill should be used whenever the user works with state management in this Flutter project — creating or modifying a Cubit, a Bloc, a state class, or a use-case that a Cubit orchestrates. Trigger on mentions of Cubit, Bloc, "state for the screen", `flutter_bloc`, sealed state, freezed state, "loading state", "error state", "emit state", `bloc_test`, or any phrase implying that the application layer of a slice is being touched. Also trigger when the user asks how a screen should react to a server response, how to surface loading/error in the UI, or how to wire a button press to an async operation. Do not trigger for pure UI/widget work that does not change state shape.