Semantic history for agent-driven development. Records what you did and why.
Project description
English | 简体中文
Intent
Git records code changes. Intent records why.
The Problem
Agent-driven development produces code fast, but reasoning disappears between sessions. Every new session starts from zero — the agent doesn't know what problem was being solved, what was tried, or why a path was chosen.
What's Missing
Git records what changed. Commit messages and comments add some context. But three things consistently fall through:
Goal continuity. Commits are isolated snapshots. There's no structure connecting five commits to one task, or saying "this is what we're trying to accomplish."
Decision rationale. Why JWT over cookies? Why 15-minute expiry? This rarely makes it into commit messages — and when it does, it's unstructured text that agents must parse and guess from.
Work state. git status can be clean while a task is half-done. The next session has no signal that work was interrupted or what comes next.
The Solution
Intent adds a .intent/ directory to your repository — structured, machine-readable metadata that captures semantic history alongside code history.
.git/ ← how code changed
.intent/ ← what you were doing and why
Two objects: intent (the goal) and snap (a step taken, with rationale). All JSON. Any agent platform can read it.
What changes
Without .intent/ — new agent session opens. It reads git log and source code. Understands what the code does now, but doesn't know the JWT migration was for compliance (might revert it), doesn't know the refresh token is intentionally incomplete, can't tell there's unfinished work. Asks: "What would you like me to do?"
With .intent/ — new agent session opens. Runs itt inspect. Sees an active intent ("Migrate auth to JWT"), last snap ("Add refresh token — incomplete"), and rationale ("token rotation not done, security priority"). Says: "I'll implement the token rotation next."
The difference: 10 seconds of reading structured metadata vs. minutes of re-explaining context.
Core Loop
start → snap → done
start— open an intent (what problem you're solving)snap— record a snap (what you did and why)done— close when complete
Example
pipx install git-intent
itt init # creates .intent/
itt start "Fix login timeout"
itt snap "Increase timeout to 30s" -m "5s too short for slow networks"
git add . && git commit -m "fix timeout"
itt done
Why Not Just…
| Approach | What it does well | What falls through |
|---|---|---|
| Git commit messages | Records what changed per commit | No goal structure across commits; rationale is afterthought; no work-in-progress state |
| CLAUDE.md / .cursorrules | Gives agents project-level instructions | Static — doesn't track active tasks, decisions, or progress; must be manually maintained |
| TODO comments | Marks incomplete work in-place | Scattered across files; no lifecycle; no rationale; agents must grep and guess priority |
| Notion / Linear / Jira | Rich project tracking for humans | External to the repo; agents can't read them without API integration; overhead is high for solo/agent workflows |
| Agent memory (e.g. Claude Code memory) | Persists user preferences across sessions | Tied to one platform; not versioned with code; not shareable across agents or teammates |
Ad-hoc context files (e.g. context.md) |
Quick, zero-tooling setup | No schema — every project invents its own format; no lifecycle management; grows stale silently |
Intent occupies a specific gap: structured, versioned, task-scoped context that lives in the repo and works across any agent platform.
- Structured — JSON objects with defined schema, not free text an agent must interpret
- Task-scoped — an intent has a lifecycle (
open → done); snaps are ordered steps, not a pile of notes - Versioned —
.intent/is committed alongside code;git blameworks on your decisions too - Platform-agnostic — any agent that reads JSON can use it; no vendor lock-in
- Minimal — two objects (intent, snap), one CLI, zero dependencies; adds seconds to a workflow, not minutes
The closest alternative is writing a context.md by hand. Intent trades that flexibility for consistency: a schema agents can rely on without per-project prompt engineering.
Where This Is Going
.intent/ is a protocol, not just a tool.
- Agent memory — agents read
.intent/on startup, recover last session's context in seconds - Context exchange —
.intent/becomes the standard way to hand off work between agent platforms - Network effects — when enough repos contain
.intent/, new tooling emerges: intent-aware review, decision archaeology, semantic dashboards
Install
Users:
pipx install git-intent
Configure your agent: Intent ships a ready-to-use skill file in skills/git-intent.md. Copy it into your agent's skill directory so it knows the Intent workflow:
# Claude Code
mkdir -p .claude/skills
curl -o .claude/skills/git-intent.md \
https://raw.githubusercontent.com/dozybot001/Intent/main/skills/git-intent.md
For other agents, adapt skills/git-intent.md to your platform's instruction format.
Contributors:
git clone https://github.com/dozybot001/Intent.git
cd Intent
python3 ./itt # dev entry point, no install needed
Commands
| Command | Purpose |
|---|---|
itt init |
Initialize .intent/ |
itt start <title> |
Open an intent |
itt snap <title> [-m why] |
Record a snap |
itt done |
Close the active intent |
itt inspect |
Machine-readable workspace snapshot |
itt list <intent|snap> |
List objects |
itt show <id> |
Show a single object |
itt suspend |
Suspend the active intent |
itt resume [id] |
Resume a suspended intent |
itt adopt [id] |
Adopt a candidate snap |
itt revert |
Revert the latest snap |
Documentation
- CLI spec — objects, commands, JSON output contract
- Dogfooding — how we built Intent with Intent
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file git_intent-0.5.0.tar.gz.
File metadata
- Download URL: git_intent-0.5.0.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d7df746aa012adaef3b3e6ad5a2e6d591b8f4f609a158ef0597cd0ed799515
|
|
| MD5 |
f69cf35661dbf0d149b17ee6be5d00c2
|
|
| BLAKE2b-256 |
59a60786005fc260bc2723a7ef40b3d5107fc1648a4818ec601fff3e4bb75947
|
File details
Details for the file git_intent-0.5.0-py3-none-any.whl.
File metadata
- Download URL: git_intent-0.5.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54c0048430cf37f5ba6533403946ddd7f039518a5d7a5f0b585b09041a8d3e5d
|
|
| MD5 |
e4346be550f55e6c604374b1aab8cd3f
|
|
| BLAKE2b-256 |
4cf9687da95b7ed0e2c68673dac844313626e52a0db3fcac4807fcad308b4b72
|