Skip to main content
AEP ships four JSON templates — one for each pack scope and one for the index. Use them as a starting point rather than writing packs from scratch.
TemplateScopePurpose
task.generic.aep.jsontaskStarting point for any recurring task pattern
project.aep.jsonprojectProject-wide defaults and constraints
user.aep.jsonuserUser collaboration style across repos
index.jsonManifest that tracks all packs in the repo

Templates

{
  "version": "1.0-exp",
  "id": "generic-task-pattern-exp",
  "scope": "task",
  "title": "Generic task pattern (experimental)",
  "status": "draft",
  "source": {
    "type": "successful_collaboration",
    "created_at": "2026-03-31T00:00:00Z",
    "confidence": 0.5
  },
  "match": {
    "keywords": [],
    "patterns": [],
    "tags": []
  },
  "applies_to": {
    "languages": [],
    "frameworks": [],
    "paths": [],
    "domains": []
  },
  "strength": 0.5,
  "intent": [
    "Capture a reusable pattern for a recurring task so future runs start aligned, with experimental metadata for better ranking and evolution"
  ],
  "constraints": [],
  "preferences": [],
  "workflow": [],
  "failure_traps": [],
  "success_checks": [],
  "metrics": {
    "times_applied": 0,
    "first_used_at": "2026-03-31T00:00:00Z",
    "last_used_at": "2026-03-31T00:00:00Z",
    "avg_turns_saved": 0
  },
  "history": [
    {
      "at": "2026-03-31T00:00:00Z",
      "event": "created",
      "reason": "Initial experimental generic task AEP template"
    }
  ],
  "merge_suggestions": [],
  "artifacts": {
    "examples": [],
    "notes": "Use this as a starting point for any task type. Fill in match fields, applies_to, signals, and checks after a specific successful collaboration."
  }
}

How to use each template

task.generic.aep.json — task packs

Use this template when you want to capture a pattern for a specific recurring task (a migration, a code review style, a particular kind of refactor).
  1. Copy the file to .agent/aep/tasks/<your-id>.aep.json.
  2. Replace "id" with a kebab-case slug that describes the task.
  3. Fill in match.keywords, match.patterns, and match.tags with terms that describe when this pack should activate.
  4. Populate applies_to with the languages, frameworks, paths, and domains involved.
  5. Add your constraints, preferences, workflow, failure_traps, and success_checks.
  6. Update metrics.first_used_at, metrics.last_used_at, and history[0].at to the current timestamp.
  7. Add an entry for this pack to index.json.

project.aep.json — project packs

Use this template for conventions and constraints that apply across many tasks in a single repository — coding style, commit message format, branching rules, and so on.
  1. Copy the file to .agent/aep/project.aep.json (one per repo).
  2. Replace "id" with something like "<repo-name>-project-defaults".
  3. Populate constraints with hard project rules and preferences with soft conventions.
  4. Leave applies_to broad (or empty) if the rules apply everywhere in the repo.
  5. Add an entry to index.json with scope: "project".

user.aep.json — user packs

Use this template to capture your personal collaboration style: how you like explanations structured, how much detail you want before the agent proceeds, your preferred decision-making flow.
  1. Copy the file to .agent/aep/user.aep.json.
  2. Replace "id" with "<your-handle>-collaboration-style" or similar.
  3. Populate preferences with your communication and workflow preferences.
  4. Because user packs apply broadly, applies_to is often left empty or minimal.
  5. Add an entry to index.json with scope: "user".

index.json — the manifest

index.json lives at .agent/aep/index.json and is the first file the agent reads. It tells the agent which packs exist and their key attributes, so the agent can rank candidates before opening individual files. Update index.json every time you add, rename, or remove a pack. If you use aep save, the agent updates the index for you.

Set up a new repo

Run these commands to initialize the AEP directory structure and copy the templates:
# Create the directory structure
mkdir -p .agent/aep/tasks

# Copy templates (adjust source path to wherever you cloned AEP)
cp path/to/aep/assets/templates/project.aep.json .agent/aep/project.aep.json
cp path/to/aep/assets/templates/user.aep.json    .agent/aep/user.aep.json
cp path/to/aep/assets/templates/index.json       .agent/aep/index.json

# Copy the generic task template as a starting point
cp path/to/aep/assets/templates/task.generic.aep.json \
   .agent/aep/tasks/my-first-task.aep.json
Then edit each file with your project’s specifics. For field details, see the pack schema reference and the index schema reference.

Pack schema reference

Every field in a pack file, with types and examples.

Index schema reference

Every field in index.json, with types and examples.

Build docs developers (and LLMs) love