What user packs capture
User packs encode the personal layer of your working style:- Collaboration style — how you like to interact during a task (e.g. prefer step-by-step confirmation before large changes, or prefer autonomous execution with a summary at the end)
- Explanation preferences — how much context you want the agent to provide (e.g. explain reasoning for non-obvious choices, skip boilerplate commentary)
- Decision-making patterns — how you like decisions framed when there are trade-offs (e.g. present options with pros and cons, or just proceed with the best choice)
- Output format preferences — how you want results structured and presented
- Communication preferences — tone, verbosity, and format of agent responses
File location
There is one user pack per agent installation, stored at:user.aep.json to the same relative path in the new repo’s agent directory. Because it lives in the repo, you control how it travels.
How user packs travel between repos
User packs are repo-local files, which means you manage portability yourself. The recommended pattern:Maintain a personal copy
Keep a canonical version of your
user.aep.json in a personal dotfiles repo or a notes directory that you sync between machines.Copy when setting up a new repo
When you initialize AEP in a new project, copy your user pack alongside the project and index templates:
Fields: what to populate
The same fields exist in all pack types, but for user packs the meaning shifts toward personal style rather than task mechanics:| Field | What to put here for a user pack |
|---|---|
intent | Describe your general collaboration philosophy (e.g. “Prefer iterative refinement over large upfront designs”) |
constraints | Rules that always apply regardless of task (e.g. “Always ask before deleting files”) |
preferences | Style preferences like verbosity, tone, and explanation depth |
workflow | Your preferred task rhythm (e.g. confirm plan before executing, summarize at end) |
failure_traps | Patterns you’ve found disruptive across many sessions |
success_checks | What a good collaboration looks like to you |
Template
This is the complete user pack template from the AEP source:The
applies_to fields are less critical for user packs than for task packs. A user pack applies universally, so leaving applies_to empty or setting broad values is appropriate. The agent will load it regardless of language or framework context.When to update the user pack
Update the user pack when you notice a preference or workflow pattern holding up consistently across multiple projects and task types.Notice a cross-project pattern
After several successful sessions, look for preferences that you keep finding yourself wishing were loaded by default — things you’ve added to multiple project packs that are really about you, not the project.
Promote from a project pack
Tell the agent:
"Use the AEP skill and promote the preferences from the project pack to my user pack." The agent extracts user-level signals and adds them to user.aep.json, recording the event in both packs’ history.Edit directly
You can also update the user pack directly by editing
user.aep.json. Add a history entry:Override behavior
The user pack has the lowest override priority. Both task packs and project packs override user pack signals.Related pages
Pack types overview
Understand all three scopes and how they work together.
Project packs
Repo-wide constraints that override the user pack.
Promote guide
Step-by-step guide to promoting preferences across scopes.
Schema reference
Full field reference for user pack fields.