Faster delivery
Less time is spent exploring unrelated code before useful work begins.
AI-native software architecture
AIFA turns every feature into a clear, enforceable agreement—so people set the intent, AI accelerates the work, and the architecture keeps both aligned.
AIFA CONTROLFEATURE DELIVERY PROTOCOL
INPUTCustomer need
POLICYExplicit rules
EXECUTIONHuman + AI
OUTPUTVerified result
The business question
What if a team could change one feature without first rediscovering the whole product?
AIFA turns hidden project knowledge into a visible, reviewable contract.
Why it is good
AIFA does not remove complexity. It makes complexity visible before implementation, so teams can plan, delegate, and review work with fewer surprises.
Less time is spent exploring unrelated code before useful work begins.
Permissions, failures, system access, and success criteria are explicit.
Separate feature boundaries reduce overlap and merge conflicts.
Reviewers compare a focused change against a visible contract.
Important rules live with the feature instead of only in people’s memory.
Technology can evolve behind stable capabilities without rewriting behavior.
Human + AI implementation
The contract is the handoff. It gives AI enough context to help while keeping human judgment in control of customer value, policy, and architectural decisions.
Human responsibility
AI contribution
A real product, not a toy example
People can manage tasks while AI proposes useful plans. Both use the same approved product operations, so speed does not come at the cost of control.
Todo 3
In progress 2
Completed 4
Technical details
One feature contract connects business intent, backend behavior, frontend UI, and verification.
The model
The definition states what a feature is allowed to know and do. Discovery connects it to the application. The runtime enforces the boundary.
Define business intent, schemas, failures, capabilities, security, and UI slots.
Load backend routes, MCP tools, and frontend contributions from local manifests.
Run feature logic with validated input and only its explicitly granted capabilities.
Enforce schemas, imports, dependency graphs, boundaries, and behavior in CI.
Feature anatomy
Backend behavior and frontend affordance stay close without collapsing their boundaries. Each file has one visible architectural job.
Open an implemented featureOne feature, two surfaces
Runtime boundary
HTTP routes and MCP tools invoke the same discovered feature, so browser users and AI clients follow identical product rules.
No database, HTTP, environment, or provider imports in features.
Composition boundary
The React shell owns typed slots and shared runtime services. Features contribute UI without reaching into each other or the shell.
No feature-to-feature component imports or refresh commands.
Short code examples
These shortened examples come from Focusly’s Create Task feature. The business need stays recognizable all the way from declaration to UI.
{
"name": "create-task",
"capabilities": [
"TaskCreate",
"ClockNow"
],
"slots": ["TaskComposer"]
}
States what the feature may do and where it appears.
async execute(context) {
const task = await
context.capabilities.TaskCreate({
task: {
title: context.input.title,
status: "Todo"
}
});
return context.ok({ task });
}
Uses only the system operations granted by the runtime.
export const contribution = {
slot: "TaskComposer",
name: "create-task-form",
render: () => <CreateTaskForm />
};
Adds feature-owned UI without editing a central screen.
Choose your path
Start with the overview, inspect the working app, then use the detailed contract when contributing.
What AIFA is, why it exists, and how to navigate the repository.
Read README → 02The feature, runtime, backend, frontend, and dependency model.
Understand AIFA → 03The authoritative security, data, composition, and quality rules.
Go deeper → 04How to specify a feature so it can be safely implemented and verified.
Write a feature →Run the example
Clone the repository, enter the demo, and start Focusly locally.
$ cd demo/ai-todo-assistant
$ npm install
$ cp .env.example .env
$ docker compose up -d
$ npm run dev