dotagents-qa

por sentry

Prueba cambios de comportamiento de dotagents en un sandbox de Docker. Úsalo cuando los cambios puedan afectar la instalación, sincronización, listado, doctor, colocación de skills, enlaces simbólicos de agentes, MCP o…

npx skills add https://github.com/getsentry/dotagents --skill dotagents-qa

dotagents QA

Prove the requested behavior in Docker without touching host agent homes, caches, plugin registries, or credentials. Treat Docker as the safety boundary and the changed or released behavior as the test plan.

1. Define the contract

Before commands, state:

  • the exact subject: local checkout, packed local build, or published version;
  • the commands and semantics at risk;
  • default-global scope, explicit-project scope, or both;
  • the harnesses involved;
  • the fixture and evidence that constitute a pass.

For a published release, verify its registry metadata and install that exact version. Never silently test the local checkout instead. If you fix a discovered defect, report the release failure and packed-local-build pass separately.

Read the relevant references before acting:

Planning is part of acting: read the relevant references before proposing a command sequence, not only before executing it.

2. Establish isolation

Use the repo QA image. Rebuild it when the Dockerfile, pnpm version, or required current harness versions changed.

Run package and runtime work as a non-root user. Keep these inside Docker or disposable directories:

export HOME=/sandbox/home
export DOTAGENTS_STATE_DIR=/sandbox/state
export DOTAGENTS_HOME=/sandbox/user-agents
export CODEX_HOME=/sandbox/codex-home
export CLAUDE_CONFIG_DIR=/sandbox/claude-home

Mount the host checkout read-only and copy it into the container without .git, node_modules, dist, coverage, or *.tsbuildinfo. Never point user-scope commands or client CLIs at the host's real home.

Do not forward auth for file, validation, marketplace, or resource-discovery checks. Copy credentials only for a separately authorized model-backed proof, scrub them afterward, and never retain them in /qa-out.

3. Run baseline validation

For a local plugin/runtime change, normally run:

pnpm install --frozen-lockfile
pnpm check
pnpm qa:example
pnpm qa:plugins

Add focused regression tests for every confirmed logic bug. A failing baseline is a finding; do not bypass it silently. If a check is irrelevant or unavailable, record why.

4. Exercise complete lifecycles

Use the CLI from a fresh fixture and inspect output plus files:

dotagents --project init --agents claude,codex,opencode,pi
dotagents --project add <source> [name]
dotagents --project list --json
dotagents --project doctor
dotagents --project install

Inspect agents.toml, agents.lock, canonical skills/plugins, ownership markers, marketplaces, manifests, harness projections, and warnings. Delete representative managed artifacts, run dotagents --project sync, and prove exact repair. Run dotagents --project remove <name> and prove canonical and generated cleanup.

Invoke every lifecycle command named by the contract with the intended scope. In particular, run install explicitly even though add also installs, and assert the config and lockfile paths directly rather than inferring them from list output.

For scope-selection changes, create both a project config and isolated global config, then prove unqualified commands mutate only global state from inside that configured repository. Prove --project mutates only project state, both --global and --user select the global paths, --global --user executes once, and either alias combined with --project fails before creating or changing files. Also cover --project init outside Git.

Test hook migration explicitly: create an executable, marker-delimited legacy post-merge hook containing unrelated lines around the bare install command; prove --project doctor diagnoses it and --project doctor --fix changes only the managed command to explicit project scope while preserving the unrelated content and executable mode.

Cover an unambiguous skill source as well as plugins so plugin-first discovery still falls back correctly. Use --all only with a controlled small catalog.

For global plugins, test the unqualified default plus both --global and legacy --user. Isolate HOME and DOTAGENTS_HOME; inspect global Claude, Codex, OpenCode, and Pi paths; repair with one spelling and remove with another.

5. Test representative plugins

When plugin compatibility is in scope, inspect current manifests and test:

  • getsentry/agent-plugin;
  • vercel/vercel-plugin;
  • one high-signal plugin selected from the current manifest in anthropics/claude-plugins-official.

In a proposed compatibility plan, name all three repositories but defer the Anthropic plugin selector until manifest inspection at execution time. Derive all selectors, versions, commits, and component counts from that inspection.

Use a fresh project per source. Record source commits. Do not guess repository names, selectors, versions, component counts, or layouts.

6. Prove harnesses independently

Keep per-harness fixtures isolated. In particular, do not enable Pi in the OpenCode proof: OpenCode can read Pi's shared .agents/skills links and create a false pass.

  • Claude: validate generated plugin and marketplace manifests, then marketplace add, install, list, and details.
  • Codex: add the project or user marketplace root, list available plugins, install, and list enabled plugins.
  • OpenCode: run opencode debug skill and opencode debug config; assert exact projected skill names and locations plus every portable plugin MCP entry under plugin.<plugin>.<server> with expanded paths and environment.
  • Pi: in a separate Pi-only fixture, verify expected skill links, resolved targets, and .dotagents-managed/<skill> ownership markers.

These no-auth checks prove validation, registration, installation, or resource discovery. They do not prove model-backed invocation. Never claim a plugin skill or subagent executed without a model interaction and visible evidence.

7. Report

Include:

  • exact dotagents and harness versions;
  • Docker image/setup and non-root user;
  • fixture shapes and source commits;
  • commands and inspected paths;
  • assertions that passed;
  • confirmed defects and their regression tests;
  • release results versus local-fix results;
  • skipped authenticated checks and residual risk;
  • retained /qa-out location, if any.

Reporting is lossless. Enumerate every supplied command, version, source commit, and inspected path, even when repetitive. A category summary such as “state and marketplaces” is insufficient; do not invent missing values.

Keep the report candid: filesystem proof, native management proof, resource-discovery proof, and model-backed execution are different confidence levels.

Más skills de sentry

generate-frontend-forms
sentry
Guía para crear formularios usando el nuevo sistema de formularios de Sentry. Úsalo al implementar formularios, campos de formulario, validación o funcionalidad de guardado automático.
official
sentry-snapshots-cocoa
sentry
Configuración completa de Sentry Snapshots para proyectos Apple/Cocoa. Úsalo cuando se te pida "configurar SnapshotPreviews", "configurar pruebas de snapshot en Apple", "subir snapshots de Apple a…
official
architecture-review
sentry
Revisión de salud del código a nivel de equipo. Encuentra módulos monolíticos, fallos silenciosos, brechas de seguridad de tipos, vacíos en la cobertura de pruebas y problemas de compatibilidad con LLM.
official
linear-type-labeler
sentry
Clasifica los issues de Linear y aplica una etiqueta de Tipo de la taxonomía de etiquetas del espacio de trabajo de Sentry basándose en el contenido del título y la descripción de cada issue.
official
vercel-react-best-practices
sentry
Directrices de optimización de rendimiento para React y Next.js de Vercel Engineering. Esta habilidad debe usarse al escribir, revisar o refactorizar React/Next.js…
official
bump-size-limit
sentry
Aumenta los límites de tamaño en .size-limit.js cuando la verificación de CI de size-limit falla. Úsalo cuando el usuario mencione fallos en los límites de tamaño, comprobaciones de tamaño de paquete fallidas, tamaño de CI…
official
generate-migration
sentry
Genera migraciones de base de datos de Django para Sentry. Úsalo al crear migraciones, agregar/eliminar columnas o tablas, agregar índices o resolver migraciones…
official
security-review
sentry
Encuentra vulnerabilidades de seguridad explotables en cambios de código. Úsalo para escaneos de seguridad de Warden, revisión de appsec, verificaciones estilo OWASP, autenticación o…
official