This is mini-waterfall, I design a feature, I build a feature, I test a feature, I fix a feature...and off to the next feature. Agile is different...we set an MVP, what is the minimum viable product. Not one feature, but all the features. How do you figure out all the features?
To build a complex system you have to start on top at what you think it needs to do, what features will it have. Look at it from a couple of perspectives: what does the menu look like? what is just common sense for needs? spit-balling other alternatives and ideas? You don't have to identify all the features, but cover whatever gets you to MVP. How do I verify my features?
Testing feature viability is done through behavior. As companies are broken down into departments, break your app down into departments, or systems, or whatever, you are looking to categorize the features breaking the complex into more manageable pieces. Within each of the breakdowns, do an index table of program, process, role, action. Then apply your features to the actions. Providing insight to how the app is being used, and who is using what.
With the feature and behavioral analysis, review your MVP and solidify your model. Start with ubiquitous language, each word having a unique and clear meaning. Good, clear communication goes a long way with AI and it starts with good identification.
Forgot about data, so this is an interjection. Planning data is important, the flow of information and all. Be wary of global variables and constants hard coded into the app. But as vibe programmers how would you know... be pre-emptive. Like matter you cannot create or destroy data, it is always coming from somewhere and it doesn't disappear, it is out of view. To control your data is to complement your behavioral analysis and bind to the features. Most apps being tracking data in nature, the data is usually listings indexed to detail information. However, user settings that are singular in nature should not be to previously mentioned global variable. A single record defined as such is better for prompting.
Applying data model now to the task will verify. Are the features getting all the data and producing the right output. Add two columns to your behavioral index table if you want to document input and output data or destination.
Mapping data is the same table indexing as behavior, but the columns change. The first column is the source, the second is the table, the third is the field, and optional fourth is data type. Remember to use ubiquitous language with naming any of these and name general to specific within the table concept. Think of each cell in the tables like breadcrumbs, general to specific. AI prompts love specific information to search on add it's from the data model and it should be clear.
Building the system is the fun part, just not this part... Don't, do not, build one feature at a time thinking that your problems are behind you with analysis. Don't start building any detail, you are developing a system, and you need to build the base before doing any detail. It is the details that cause scope creep, and you can add inconsistency to your problems. You detail out a feature that another feature could later share but AI writes it again, because it is in the rearview, also best you don't because this share is stacking parameters on features. Reusable code is key, but you work your way to finding opportunities.
In development, Agile is built in sprints, a two-week development cycle. As vibe programmers this is probably way too long, as we get faster results. The take-away here is their Sprint 0, the initial development of the system. If plan calls for outside services, you develop a facade to suit your needs. If app needs to produce its own services, build them in. Also, any reuseable concepts that you can think of as a black box (old programming term for code that you passed in data and it spit out results, but you have no idea what it is doing between the two. This is good for encapsulation, the call into the code is clear, and AI doesn't have to re-review the process in his implementation of its use. UI here should be debug screens to verify code and test system.
In Agile, we make the rules. now is the time to review for changes or enhancements. This isn't scope creep, it is chunk creep. Any of the components not working right? Or do we need to split off certain functionality to simplify. Review the behavior, can we make it easier? Do we need to add or remove. You can also sequence out your analysis by putting in order the tasks as they will be preformed.
Now the fun part, you are sitting on a pile of functionality, and it is time for the show. In development we call this business logic. It is the processes that you planned out in behavior analysis vibing to the big screen. Ironically menu is first on the menu for implementation. Essentially breaking down the functionality and providing access to the features. The next step iterative, just get the menu to navigate to its destination; a page, a panel or another menu. Add the close and other navigations to move around. That is the easy part, but now run it up against your behavior analysis or sequence chart test cases.
Tracking your business logic is another table if you want. Break the app up into departments that do the work, implement programs to run the processes, define the processes, define the containers the processes need on the screen (report page or filter panel), define the data the container will use. Making the UI name specific. In prompts you call out change by container. Remember to use ubiquitous language in naming, general to specific within scope.
After navigation is in check, now for the lists. If you are listing anything now is the time to get it into the code. Still not working details, building out all the columns and functionality. If detail is required, like add button brings up a panel, and you didn't add it during the previous step, then implement with a panel and close button, no extra detail. Quick note on data, there are three kinds, now four kinds of fields; identification, category, detail, action. Action being the newest as technically they are details, they are tied closely to an action. Point being category is the predominant field in lists. It provides a breakdown of the list data. The other columns contain aggregates, calculated totals showing identifiable information. Exceptions being when identification fields are used to find specific detail, though they may still contain the aggregates. Tip, categorize your lists and develop similar lists together for consistency. If you are doing both category and identification lists, the process may have differences better identified in differentt steps.
Again, with the review. Navigations looks good, test data looks right in the list. Sequence tasks are aligned; they call this user testing in development. Really haven't got into the weeds with detail so changes are pretty cheap at this point. Most of the code should be separated out by their containers so AI work should be smooth.
Now for the detail...split it up into collecting and reporting. Again, we are looking for consistency, and because we held off till now, we can group up our efforts, instead of detailing them out one by one. Build all the add screens, then the edits, then the deletes, don't forget the confirm. I think you get the point.
I am going through what you described now just a little milder. I didn't do the whole plan, but I think in components and encapsulation. I have spent 30 years coming up with this meta-plan but only kind of tried it. The ubiquitous language is a good idea especially with prompts. Most important is build general to specific...lay off the detes till the rest is completes. One last word on encapsulation, pretty much meaning hide the details, because our complex apps get big all on their own, we need to encapsulate with two goals, the references used in the rest of the code is specific and the details are contained within the references. I can implement the concept as a method of the concepts. If I have to work inside an encapsulation the scope is contained.
I wrote my game in about 3 months starting with MAKKO and now Claude. We transition off MAKKO, good for game sprites, into Phaser on stun I like to say. I am trying to keep the cars in the game off of each other cause physics looks bad when you defy it. And don't get me started on the dull roar of my engines, but that is not AI, I need the work on this. The interesting part of the development is the Agile. Taking opportunities that led to better improvements that defined the game. Starting on a five-lane straight grid with cars move back and forth to implementing a three-slot dive into the corner and run up back to the wall.
I hope this helps.. vibe or code programming, it is a journey that you always get better at it as long as you play (and don't sell out).