Keep aid small, local-first, and boring.
The repo should optimise for:
- a clear CLI surface
- strict separation between rendering and business logic
- SQLite-backed local storage
- Git-aware retrieval and indexing
- a package layout that can grow without becoming framework-shaped
cmd/aid: process entrypoint onlyinternal/cli: command routing, argument handling, help renderinginternal/app: bootstrapping, repo resolution, app-data paths, environment wiringinternal/config: global config and.aid/config.tomlloadinginternal/store: storage interfaces and repository-facing persistence contractsinternal/store/sqlite: schema management and SQLite-backed persistenceinternal/git: Git repo inspection, branch lookup, and commit enumerationinternal/history: commit indexing workflow orchestrationinternal/search: ranking and retrieval across memory objectsinternal/resume: assembly of the compact resume bundleinternal/handoff: handoff generation and persistenceinternal/output: human, brief, and JSON renderers
The dependency rule is simple:
cmd/aidimportsinternal/cliinternal/clicoordinates application packages- storage and Git packages return plain data, not formatted terminal strings
internal/outputrenders plain data and output-specific DTOs into terminal or JSON output
Avoid turning aid into a library-first design. This is an application, not a reusable SDK, so internal/ should be the default.
There is no external API to stabilise yet.
Adding pkg/ now would suggest a reusable library boundary that the project does not actually need. If a genuine public package emerges later, it can be carved out deliberately.
- Define domain models and the initial SQLite schema.
- Implement
init,note,task, anddecide. - Add shared output renderers for default, brief, and JSON modes.
- Implement
resumeandhandoff generate. - Add commit indexing and history search.
- Tune ranking, help text, and skill-package guidance.
Use README.md as the contributor-facing homepage.
Put longer, decision-heavy product material in docs/spec/ so the entrypoint stays easy to scan.