Shared domain vocabulary for this project — entities, named processes, and status concepts with project-specific meaning. Seeded with core domain vocabulary, then accretes as ce-compound and ce-compound-refresh process learnings; direct edits are fine. Glossary only, not a spec or catch-all.
An ADE contains harnesses. A harness loads skills, commands, and a model. A provider serves models. HIL is the person, not a feature of the harness.
Agentic Development Environment. The whole working setup: harnesses, the skills and commands they load, the models they call, and the person in the loop. It is not one harness. Avoid: AI/Agent Development Environment
The app you work in, the way a text editor is the app. It loads skills, commands, and a model. It is not the model, and it is not the provider.
A packaged capability a harness can load, the way a plugin extends a text editor. A skill that is not installed does not exist. A skill is not a command.
A short saved invocation in a harness, the way a snippet is a saved edit. A slash command is a command. It is not a skill.
The mind that proposes the next action inside a harness. Changing the model does not change the harness. The model is not the provider.
Who serves a model, and who holds the account, quota, and auth for that call. One provider can serve many models. The provider is not the harness.
Global Agent Policies: the shared agent policy for coding agents. A nearer project policy wins on that project's local contracts. GAP is edited in one place and published outward. It is not a Stow package, and it is not a second full copy pasted into the home directory.
A longer explanation linked from the GAP policy. It is not the policy contract.
The step that copies the current GAP policy into the files each harness already reads. A harness that already reads another harness's copy does not get its own. Avoid: sync
gap sync runs this step and manages skills. Publish names only the policy-copying step.
A skill selected by a component, through its gap-utility.toml or its names in gap.toml. See Manage skills for installation and drift handling.
A repo that ships skills, commands, or its own tooling and describes them in a manifest, the way a lazy.nvim plugin describes itself. The distro's components are utilities too. User utilities have their own lifecycle. Avoid: package, plugin
The gap-utility.toml at a utility's repo root that declares what it installs. Fields and lifecycle: Publish a utility.
A shell command a utility's manifest runs at install, update, uninstall, or doctor time. See Publish a utility for timing and checkout selection. A hook is not a skill and not a command.
~/.config/gap/gap.lock: the pins for utilities added with gap add. It is the user's own, like lazy-lock.json. It is not the distro's gap.lock.
Permission for a user utility to run hooks or register MCP servers without approval for each operation. See Hooks and trust for configuration and approval rules.
Human in the loop. A person takes part before an automated step does something consequential. Silence is not agreement. A run with nobody to answer does not proceed as if they had agreed.
GAP's foreign-file confirmation is one such step. Avoid: human-in-the-loop
The distro is this repo's gap.toml and gap.lock. It names components; overrides and profiles change what one machine or project takes from it.
A pinned repo supplying skills, commands, or tooling, selected by the distro or added as a user utility. See Components for declarations.
The exact commit a component installs, recorded in the distro's gap.lock or the user lock. A ref is a branch, tag, or commit used to resolve the pin. Pin-changing commands are listed in Commands.
~/.gap/store/<id>/<commit>: a verified checkout of one pin. Skills are copied from the store, and a store whose files no longer match the pin is not used.
An installed skill that differs from its pinned source. gap status reports drift, gap restore repairs it, and gap sync asks before replacing drifted skills.
How one component skill installs: listed or always in the home folders, project only in a matching project, command or off not at all.
A later gap.toml, in ~/.config/gap/ or a project's .gap/, that can disable a component or change its ref or a skill's load level. It never writes gap.lock.
A named override shipped in profiles/. crew writes project files only, for cloud agents.
- "ADE" has also been expanded as AI/Agent Development Environment. This file uses Agentic Development Environment.
- A product name is not a harness, a model, and a provider at once. Say which one you mean.
- "Command" here means a harness slash command. A
gapsubcommand such asgap syncis a CLI command; name it in code.