AIM is an intent-first specification language for describing software applications in a form that both humans and AI coding agents can use.
Start simple with one intent file, then add precision only where needed.
- Keep product intent readable.
- Keep synthesis deterministic.
- Scale from lightweight specs to high-fidelity feature definitions.
Each feature has one canonical intent file:
<feature>.intent
Optional precision facets can be added:
<feature>.schema.intent<feature>.flow.intent<feature>.contract.intent<feature>.persona.intent<feature>.view.intent<feature>.event.intent
This enables progressive detail:
- intent-only for speed
- partial facets for medium fidelity
- full facets for maximum precision
Synthesize intent into reality.
AIM includes Sinth, a Python CLI tool for fetching, managing, and synthesizing packages:
pip install sinth
# Interactive menu (recommended for new users)
sinth
# Or use direct commands
sinth fetch weather
# Configure your stack
sinth config set stack.frontend "React"
sinth config set stack.backend "Node.js"
# Generate synthesis prompts
sinth synth weatherSinth automatically:
- Fetches packages from the registry
- Validates intent files
- Generates formatted prompts for AI assistants
- Copies prompts to clipboard for easy pasting
- Provides guided configuration wizards
See cli/CLI.md for full documentation.
The full protocol is documented in:
For custom domains and explicit .intent serving behavior, deploy with Docker + Nginx:
Dockerfilenginx.conf.do/app.yaml
Nginx serves *.intent as text/plain and enables CORS for fetch clients.
After deploy, verify:
/registry-files/index.json/registry-files/packages/weather/weather.intent/specification.md
AIM: game.snake#intent@1.5
INTENT SnakeGame {
SUMMARY: "A single-player snake game with top-10 scores."
REQUIREMENTS {
- "Movement is tick-based."
- "Wall and self collisions end the run."
}
SCHEMA GameSession {
ATTRIBUTES {
score: integer required min(0)
}
}
}
specification.md: canonical language specificationregistry/: feature package registryregistry/index.json: package catalog with intent entrypointsregistry/packages/: publishable feature packages (intent entry + optional facets)CONTRIBUTING.md: contribution and publishing workflowPROMPT.md: generic local AI synthesis prompt
This repo includes a game.snake demo feature showing:
- a mixed-source intent envelope
- inline
SCHEMA,FLOW, andPERSONA - linked external
CONTRACTandVIEWfacets
It is also published as a registry package:
For a minimal event-focused example, use:
It keeps the shape intentionally small:
- inline
SCHEMA - linked external
CONTRACT - linked external
EVENT - terminal-first behavior with no
VIEWorPERSONAlayer
Use this sequence:
- Fetch
specification.md. - Fetch
registry/index.json. - Select package by
name. - Fetch the package
entryintent file and related facet files. - Materialize fetched sources into local
/aim(and/aim/mappingswhen needed). - Synthesize from local
/aimso users can edit and rebuild without refetching.
Current spec version: AIM v1.5.