Files
Seth Hobson 608c3840ca feat: native plugin-install for Codex/Cursor/Gemini + CLAUDE.md→AGENTS.md symlink
Add lean, native plugin-install entry points so each harness's own plugin
manager can install this marketplace (mirroring obra/superpowers) — committing
only small JSON registries, not duplicated skill/agent content trees.

- Codex: committed marketplace registry (.agents/plugins/marketplace.json) +
  per-plugin manifests (plugins/*/.codex-plugin/plugin.json). Entries point at
  source ./plugins/<name>; Codex reads SKILL.md directly. Transformed
  .codex/skills|agents stay gitignored.
- Cursor: commit the existing .cursor-plugin/ marketplace + .cursor/rules/
  (these already point at source plugins/).
- Gemini: gemini-extension.json already committed (contextFileName: AGENTS.md);
  transformed trees stay gitignored (install via clone + make generate).
- OpenCode: unchanged — install via `make install-opencode` (transformed tree
  stays gitignored).
- CLAUDE.md is now a symlink to AGENTS.md; Claude-Code addenda moved to
  docs/harnesses.md.
- CI: new step fails if `make generate-all` drifts from the committed registries.

Net new committed: ~720 KB of manifests (no skill/agent duplication). Adds
round-trip tests for the new registries + the symlink. Docs updated across
README, docs/harnesses.md, ARCHITECTURE.md, CONTRIBUTING.md, GEMINI.md,
docs/authoring.md, and the PR template.
2026-05-29 13:02:40 -04:00

17 lines
675 B
Plaintext

---
description: Python tooling and dependency conventions for plugin-eval and tools/
globs: ["**/*.py", "**/pyproject.toml", "**/uv.lock"]
---
# Python tooling
This project uses the Astral Rust toolchain:
- **uv** for package management. Run `uv run <cmd>` to execute inside the venv, `uv add <pkg>` to install.
- **ruff** for linting and formatting. `uv run ruff check .` / `uv run ruff format .`.
- **ty** for type checking. `uv run ty check .`.
Do not use `pip`, `mypy`, or `black`. Do not edit `requirements.txt` for Python deps — those belong in `pyproject.toml`.
Python ≥ 3.12 is required. Use modern syntax (`X | Y`, `list[T]`, structural pattern matching).