AGENTS.md · git:20261104.0533865 · 2026-11-04 · sha256 5505bed4546a2686

AGENTS.md git:20261104.0533865A

Immutable. This exact content never changes and is served at /api/v1/blob/5505bed4546a2686.

# Agent instructions

## Architecture and contribution guardrails

Before implementation changes, read [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)
for the applicable package boundaries and [CONTRIBUTING.md](CONTRIBUTING.md)
for actual lint and test commands. Check current `main` and overlapping PRs
before touching a package. Preserve all owner decisions below.

- **Domain:** business rules and invariants, no external I/O. Reuse the
  existing Go domain types instead of creating another source of truth.
- **Ports/use cases:** depend on narrow contracts, not concrete adapters;
  keep client-specific protocol and filesystem effects behind existing seams.
- **Clients:** implement capabilities in `clients/<id>` and register them
  through `clients/all` at a composition root. Do not introduce client-ID
  branches into generic planners, providers, or use cases.
- **Composition:** executable entrypoints assemble concrete client registries;
  libraries receive their dependencies explicitly.
- **Safety:** preserve source/path containment, foreign-file ownership,
  immutable package identity, locking, receipts, rollback and recovery, public
  JSON and exit statuses. Never weaken a refusal just to make tests pass.
- **Simplicity:** reuse existing parsers, validation and adapters. Introduce an
  interface only for a real dependency boundary or testable requirement; do
  not add a second installer, resolver, state engine, or feature flag.
- **Scope:** do not modify frozen VS Code behavior, hand-edit generated files,
  widen legacy lint exemptions, or silently change public/release contracts.
- **Verification:** new Go files are limited to 500 effective lines by `revive`;
  complexity, duplication and import rules are enforced by `golangci-lint`.
  Run `make lint` and `make test-core` for relevant Go changes. For lifecycle
  changes also run the affected native, rollback and cross-platform E2E.
  Verify actual cases on the final commit: queued, cancelled, skipped or
  evidence-only workflows are not proof that the product passed.

## VS Code is frozen (owner decision, 2026-10-16)

Do not change VS Code implementation, adapters, protocols, configuration,
or dedicated fixtures/tests. Preserve existing behavior and source. New dependency-managed
installation and release work targets Claude, Codex, OpenCode, Cursor and Gemini;
VS Code remains excluded. Reopening VS Code work requires a new explicit owner
instruction.

## Standard-first authoring: preserve legacy capabilities

For this authoring program, read docs/AUTHORING_CAPABILITY_PRESERVATION.md and
the owner clarification at the top of the implementation plan. Do not delete
useful plugin.yaml implementation, dependencies, tests or design documentation
because plugin.json is narrower or a standard-first command no longer calls it.
Retiring command exposure is distinct from removing source. Preserve unresolved
capabilities outside the standard dependency graph. Any deletion requires an
inventory item and explicit owner acceptance. Do not add implicit YAML fallback
or a second supported engine. All hosted Codex workers for this program use
gpt-6.1-sol with reasoning effort low for ordinary tasks and service tier default;
raise effort only when the task requires it. Astra and fast mode are not authorized.

## Public wording and release boundaries

Read the early-public-checkpoint owner decision in the implementation plan.
D5 qualifies executable release; it does not block truthful public wording.
Preserve PR190 availability labels and historical links. Never use
DOCS_PREPARATION_PREVIEW in production or equate installer release proof with
standard authoring release qualification. Use gpt-6.1-sol / low / default
for ordinary hosted Codex tasks; raise effort only when needed. No Astra or fast.
This owner instruction of 2026-10-26 supersedes older Astra assignments in plans
and handoffs.

## Owner release authorization (2026-10-08)

An explicit owner request to make or publish a release authorizes choosing and
publishing the next suitable unused version within the same product and channels.
Respect explicit constraints and report the chosen version; do not ask again
solely for version selection or skipping a cancelled, never-public candidate.
Preparation, review, and draft-only requests do not authorize public publication.
All CI, independent review, environment, artifact, draft/promotion, and immutable
tag requirements remain mandatory.

## Where things live (repositories and sites)

- `777genius/universal-agent-plugins` (this repo): CLI (`cli/`, `install/`),
  landing (`landing/`, https://universal-agent-plugins.com/), public docs source
  (`website/`, https://universal-agent-plugins.com/docs/en/).
- `777genius/universal-agent-plugins-registry`: signed directory feeds
  (`catalog/`, `registry/`). Its old site (`site/`) is retired:
  https://777genius.github.io/universal-agent-plugins-registry/ shows a
  "has moved" notice.
- The Directory (plugin list and install buttons) is `landing/pages/plugins/`
  in this repo, published at https://777genius.github.io/universal-agent-plugins/plugins/.
- The landing build verifies the registry's signed feeds with
  `cmd/agentplugins-registry-mirror`, so Directory data follows the registry.
- Install buttons in the Directory and the landing catalog must match the
  source kinds the released CLI accepts. Check `agentplugins skills add --help`
  (or the release notes) before changing them.
- Public docs are published only for `index`, `use/*`, `build/*`, `sdk/*`,
  `guide/quickstart`, `reference/client-compatibility` and the authoring API.
  Other `website/source/en` pages are archived and not published.
- Pages under `use/` and `build/` are journey pages. They need released status
  and routes in all nine maintained locales (`en`, `ru`, `uk`, `zh`, `es`, `hi`, `ar`, `pt`, `fr`).