AI-Assisted Feature Development for iOS

Oct 15 2026 · Swift 6, iOS 27, Xcode 27

Lesson 03: Challenge & Refine the Plan

Demo

Episode complete

Play next episode

Next

Written by the author, AI-editedAI-assisted, author-verified How this module was made

Transcript

Welcome back. In the last lesson, we created a draft development plan for AI usage insights. It has a proposed Swift surface, data flow, rules, edge cases, accessibility requirements, and acceptance criteria, and that’s a solid start. But before we treat it as ready, we are going to do something very healthy.

We’re going to ask for another review by the AI itself so it can criticize our plan and find gaps in it. The point of an adversarial review is not to be negative just for fun or for the sake of it, although, let’s be honest, sometimes the bugs deserve it. The point in this is to find weak assumptions before the implementation process starts. In this lesson, we will run an independent review, capture the findings, decide what to accept or reject, and produce a reviewed feature plan.

Now, for this review, independence matters. If possible, and what we’re going to do here is use a fresh chat or a session. We’re also going to give the reviewer the artifacts that we have, our brief and our plan, but not the entire conversation or the context from our planning session. That means that we’re going to provide the feature brief, the draft development plan, and a short description of the existing app and the prompt that we want to give it. We do not provide every discussion or everything that led to the creation of those files. Why? Because we want the reviewer to judge the plan as a plan. If the plan only makes sense because of hidden context from the previous chat, then the plan is not clear enough and we need to work on it further.

In ChatGPT, in our project, let’s go ahead and switch to a new chat. Now, you may be using a different tool. Don’t worry. Just do the same. We’re then going to switch to our prompts file and copy Prompt 1: Adversarial Plan Review. One thing to notice is that this prompt has the feature brief and the draft development plan that we need to provide it. So when I write that I want it to continue with the next prompt, I’m going to ask it to use the feature-brief markdown file and the draft-development-plan markdown files in my projects folder. I’m going to rename this chat to Adversarial Review.

Now, this is going to give us the critique. This is the part where once we have our results, it may be tempting to either accept everything because the AI sounds confident and secure of itself, or to reject everything because it was super harsh with its criticism of our beautiful plan, which may not be nice and could actually be very rude and make us feel like we’ve wasted a ton of time. But we’re not going to be doing either one here. We are going to triage our findings. The question is not, did the AI say it? The question is: Is the finding from the AI tool useful, accurate, and worth changing for version one based on this adversarial review? So let’s take a look.

Here, it’s giving us some must-fix elements, maybe some things that we should consider, acceptable trade-offs, and questions for human review. So I will go ahead and say something like, “Give me some recommendations and sensible defaults for the items that you have questions for me, and to maybe go ahead and update the review based on the fixes.” One other thing that I’m mentioning is to not make any code changes, and I’m being specific about asking ChatGPT to just update the results of the adversarial review it did for me.

Superb. Now, let’s go ahead and take a look at the second prompt: Prompt 2: Create the Adversarial Review Notes . And this one is going to ask ChatGPT to create the adversarial review notes. I will go ahead and paste this. Perfect. Here we have our adversarial review notes for the AI usage insights feature. We have the context, some things like must fixes or things like suggested fixes, for example. Fantastic. Now the AI has turned the review and our decisions into this adversarial-review-notes.md file. But before moving on, be sure to check that every decision matches what you actually said. Again, we want the AI to record our judgment and to help us find gaps, not to replace our judgment or decision-making skills.

Now, we can use this completed set of review notes to update the draft plan, and we can ask the AI to help with the rewrite, but we want to and need to constraint things carefully. It should apply the accepted decisions, but it should not sneak in new scope. For that, go ahead and copy the final prompt: Prompt 3: Create the Reviewed Feature Plan and paste it. Fantastic. Let’s take a look at this reviewed-feature-plan.md file. And here we have, again, for AI usage insights, the summary, the audience, the goals, the non-goals, the UI plan, proposed Swift surface, some things that it will modify, and the data flow, as well as final version one insight rules, things that have been deferred from version one, some edge cases, accessibility requirements, acceptance criteria, and open questions.

Again, we started this lesson with a draft plan, and the adversarial review helped us challenge some things and find gaps in other areas of our plan. We may have accepted some of those, we may have asked it to provide a sensible default or recommendations for others, and we may plainly reject some of the things that it finds or suggests. This is what a successful planning pass looks like, not because our plan is perfect, it inherently will never be. It’s successful because the risks are visible, the scope is clear, and the remaining questions are marked.

In this lesson, you used an independent adversarial review to challenge your draft development plan. Then you made human decisions about what to accept, reject, and investigate later. That is the big takeaway from this module. AI can help you think through a feature, pressure test a plan, catch things you may have missed, but it should not quietly make the final decisions for you. You now have a reviewed feature plan that is ready for implementation by a developer, teammate, or AI coding agent, and we got there without writing the feature code yet. Look at us being all disciplined and professional, as well as methodical. I want to thank you for following along this module, and see you in the next module. Bye for now.

See forum comments
Cinema mode Download course materials from Github
Previous: Prepare an Independent Plan Review Next: Challenge & Refine the Plan Quiz