Prompts. Context. Now: intent.
Each step made AI output more reliable. Intent is the next one — structured files that give agents explicit contracts to build against instead of ambiguity to guess through. Fewer hallucinations. Predictable output.
---
aim: weather
facet: intent
---
# Weather
## Summary
Current conditions widget.
## Requirements
- Show temperature and location.
- Refresh every 10 minutes.
## Contract: Fetch
### Ensures
- Returns current data.
- Fails gracefully when offline.
Every generation of AI tooling reduced the gap between what you mean and what the AI builds. Intent closes it.
## Contract: Reset
### Ensures
- Reset link is sent.
- Single-use is enforced.
When AI has no contract, it guesses what "correct" means. A .aim file defines it — so the agent can verify its own output.
AI decides what "correct" means. Every run interprets the spec differently. No way to verify alignment after the fact.
---
aim: auth.reset
facet: intent
---
# PasswordReset
## Summary
Email-based reset flow.
## Requirements
- Token expires after 24h.
- Single-use only.
- Log all resets.
## Contract: Reset
### Ensures
- Reset link is sent.
- Single-use is enforced.
"Correct" is defined. AI checks its output against the contract. Same spec → same behavior across every agent and session.
Each step uses one specialized agent. Paste the prompt into Claude, Cursor, Copilot, or any chat-based assistant and follow its guidance. No new tools required.
Tell the Architect agent what you want to build in plain English — the actors, rules, and edge cases. It asks clarifying questions, then generates one or more .aim files and saves them to your repo. These files are the contract everything else builds from.
The Developer reads the .aim files and generates production-ready code and tests. Working from an explicit contract — not a vague prompt — it knows what to build, what the edge cases are, and what "done" looks like. Also handles code fixes when drift is reported.
Run the Reviewer to compare your implementation against the intent. It produces a drift report and assigns each finding: code fix (back to the Developer) or intent revision (back to the Architect). Repair is explicit — never silently normalized.
Shortcut: Pull a ready-made package from the registry and skip straight to step 2. Great for seeing the full loop before authoring your own intent. Try a registry package →
Paste any of these into your AI coding assistant. Start with the Architect — it will ask you about your feature and create the .aim files.
Turns your plain-English description into structured .aim files. Use this first for any new feature or component.
Generates code and tests from your .aim files. Also handles code-side fixes when the Reviewer reports drift.
Checks that your code matches the intent and produces a drift report. Assigns each finding to the Developer (code fix) or Architect (intent revision).
AIM is a first-class extension for Gemini CLI. Instead of copying prompts into a chat window, invoke specialized personas directly from your terminal.
The extension bundles the Intent-Code Consistency skill, letting Gemini automatically suggest AIM when it detects hallucinations or logic drift in your project.
@aim-architect, @aim-developer, @aim-reviewer
gemini extensions link . for project-scoped use
# Install the AIM extension
gemini extensions install \
application-intent-model
# Invoke personas directly
gemini "@aim-architect I want to \
build a 2FA flow"
gemini "@aim-developer \
build weather in React"
gemini "@aim-reviewer \
review auth for drift"
Don't want to write a spec from scratch? Pull a pre-built package from the registry and have it built in your stack with one prompt.
The weather package has schema, flow, contract, and view all defined. Fetch it and build it in React, Vue, or plain JS — in a single prompt. No authoring needed to see the full loop in action.
# Paste into Claude, Cursor, or Copilot
Initialize as an AIM v3.1
Developer Agent by reading:
intentmodel.dev/brain.developer.md
intentmodel.dev/spec.md
Command: build weather in React.
Execute the full protocol:
1. Fetch the package into
./aim/ via sinth fetch.
2. Generate production-ready
code and tests.