AI Tools for Generating iOS Apps: The Free CFA Toolkit
AI can now produce an iOS screen, a network call or a whole feature in the time it takes to make a cup of tea. What it cannot do on its own is decide where that code should live, who owns the work it starts, or how to change it safely six months later.
That is the problem we are working on at 3DaysOfSwiftConcurrency.com. Alongside our Swift Concurrency training, which is still being built, we are helping build AI tools for generating and maintaining iOS apps. The first of those tools is free and open source: the CFA Toolkit, published on GitHub as iOS App Development with CFA.
This article explains what is in the toolkit today, how it works with an AI coding assistant, and what it deliberately does not claim to do.
Why AI Needs an Architecture to Follow
Ask an AI assistant for a feature twice and you may get two different shapes of code: the network call in the view, a new service layer, a Task nobody cancels. A human team avoids that with shared rules. An assistant benefits from exactly the same thing, if it can read the rules before it writes code.
That is what an AI skill is. In the toolkit's own words, a skill is a small folder of instructions for an AI coding tool. When the assistant receives a matching request, it reads those instructions and follows them.
What Is Cooperative Feature Architecture?
The rules the toolkit teaches are called Cooperative Feature Architecture, or CFA. CFA gives SwiftUI views, ViewModels, Feature Managers, repositories and Swift Concurrency clear responsibilities.
The most visible idea is that each feature has one named folder. Its Feature Manager, feature-owned values and supporting workers live together inside that folder, rather than being scattered across the project. An AppModel acts as the composition root that wires features together. Each SwiftUI view has its own adjacent ViewModel, so the view stays declarative and forwards user intent instead of making business decisions.
For Swift Concurrency, this matters a great deal. When you can see which Feature Manager owns a piece of state, you can also see which part of the app should start, await and cancel the work that changes it. Task ownership stops being a guess.
CFA is presented in the repository as a candidate for a lasting default architecture for mainstream iOS development. It is one option, not the only one, and you do not need it to learn Swift Concurrency with us.
What Is in the Toolkit Today
The repository's README describes the toolkit as eight AI skills and one tool. Here is what each skill folder actually covers, based on its own description:
CFA App Creation creates a new SwiftUI Xcode project using CFA, starting with the smallest complete working feature.
CFA Feature Work adds, changes or removes a feature in an existing CFA app, as a small vertical change with tests.
CFA Architecture Adoption restructures an existing app around CFA while preserving its observable behaviour.
Legacy GCD Migration (the swift-concurrency-migration skill) moves GCD, OperationQueue and callback-based apps to CFA and Swift Concurrency in deliberate passes.
CFA Architecture Review reviews feature ownership and CFA conformance without changing app code, and can produce an Xcode project dashboard.
CFA Codebase Tidy iteratively tidies an existing CFA codebase for readability, explicit task ownership and tested actor reentrancy.
CFA Unit Tests writes, organises and audits meaningful unit tests for CFA apps.
Swift Code Quality guides the assistant when creating, editing or reviewing Swift where naming, testing and maintainability matter.
The "one tool" is the Xcode Project Dashboard, found in tools/architecture-dashboard. It runs locally on Node.js 20 or newer, needs no network access and never changes the app it analyses.
The repository also includes a native Xcode project template, installed with Install Xcode Template.command, which adds a CFA App option to File, New, Project. According to the README, the generated project already includes the CFA folders, a feature manager, network refresh, a JSON file cache, retry state and colour-theme settings.
Everything is released under the MIT licence, so you can use, change and share it, including in commercial work.
How It Works With Your AI Coding Tool
Installing the skills does not change Xcode or your existing apps. It copies the skill folders to the place your coding tool looks for them.
The README documents two routes. For Codex, you run Install.command from the plugin release. For Claude Code and other tools that read plain skill folders, you copy the eight folders from the skills directory, or run the bundled installer with a skills directory such as ~/.claude/skills.
After that, the idea is that ordinary requests are enough. Ask your assistant to "create a new iOS app" and the App Creation skill tells it to use CFA, unless you explicitly ask for something else. Ask it to migrate an old feature and the migration skill tells it to establish a baseline first.
If you want CFA reinforced in one particular repository, the installed cfa enable-project command appends marked guidance to that project's AGENTS.md without overwriting what is already there. cfa doctor checks the installation.
Built Around Swift Concurrency Ownership
Several skills share one theme: they treat Swift Concurrency as a question of ownership, not syntax.
The migration skill is the clearest example. It explicitly tells the assistant not to replace DispatchQueue.async with Task { } as a mechanical operation, because doing that leaves ownership, ordering and lifetime ambiguous. Instead it asks for a baseline: an inventory of every queue, barrier, group, semaphore, operation and callback, together with the state each one protects, its ordering, its cancellation policy and how errors are delivered. Features then move one at a time.
The feature work skill asks for the smallest complete vertical change, wires dependencies through AppModel, forbids new global singletons and finishes by building the target and running the affected tests.
The tidy skill names explicit task ownership and tested actor reentrancy as goals. Those are two of the most common sources of subtle concurrency bugs: work that outlives the screen that started it, and actor state that changes across an await.
None of this replaces understanding. It means the assistant is pointed at the same questions an experienced reviewer would ask.
Seeing What Is Really in a Project
The dashboard and the cfa inspect command help you look at a project rather than trust a description of it.
cfa inspect maps each screen to its ViewModel, the visible AppModel.shared manager routes and named tests, and flags missing links for review. The dashboard can show where tasks are created, whether a root task is tracked, possible suspension points, architecture observations and imported test results, with links back to the source.
The README is careful about limits, and so are we. The inspector is a lexical source check, not a compiler, a test run or an automatic CFA certification. The dashboard cannot prove that an app has no race conditions. Its findings are evidence to investigate. You still need builds, tests and manual checks, and an AI reviewer still has to read the relevant code.
Real Apps Built With It
The toolkit's Apps Made with CFA page lists five open-source iOS projects, from Trend, where CFA was originally extracted, to Metro Mate, an existing app migrated into CFA and Swift Concurrency. Reading them is the quickest way to see the same rules in working code.
What the Toolkit Is Not
It is worth being plain about this:
It is not finished. The current release is a beta, and the skills are still being refined as we use them on our own apps.
It does not make AI output correct. It makes the output more consistent and easier to review. You still build, test and run the app.
It is not a substitute for learning Swift Concurrency. If you cannot explain why a task starts and when it should stop, a skill cannot explain it for you.
It does not lock you in. It is MIT licensed, the rules are plain Markdown, and you can read every instruction the assistant receives.
How to Try It in Five Steps
Read the README and the CFA specification in the architecture folder.
Install the skills for your AI coding tool, then ask it to confirm it can see them.
Install the Xcode template and create a throwaway CFA App.
Ask your assistant to add one small feature, then build it and inspect where the state and tasks ended up.
Run cfa inspect or the dashboard on the result, and check each finding in the source.
About Us

3 Days of Swift Concurrency is created by Matthew Thomas, an iOS developer who has been building in public since 2022. He publishes the free, MIT-licensed CFA Toolkit and a set of public reference apps on GitHub. The paid training programme is still being built: a soft launch is targeted for 1 December 2026, but that date depends on deadlines being met and isn't guaranteed.




Comments