Narrowing has_reference to bool(import_lines) meant a UTF-8 BOM hid the import line, since the BOM is not \s: a CLAUDE.md whose first line is @AGENTS.md failed with 'no reference to AGENTS.md' and was told to add the line already in front of it. Decoding is now strict too, so a non-UTF-8 adapter gets an encoding diagnostic instead of being mangled and then graded on the mangling. Usage errors move to exit 2. They shared exit 1 with real findings, while the skill tells the agent to fix any non-zero exit by editing the provider file. The whole-line import rule is kept deliberately -- accepting an inline @AGENTS.md would also accept one inside backticks, which is the silent-drop failure the validator exists to catch -- and the message now says so. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EJJrm5YmacbwMdzZpXcoti
2.3 KiB
provider-adapter-author
Convert a target repo's provider-specific instruction file (CLAUDE.md, .cursor/rules, copilot-instructions.md, etc.) into a thin adapter over AGENTS.md.
What it does
Detects a provider-specific AI instruction file in a target repo, diffs it against the repo's AGENTS.md, and rewrites it down to a minimal reference — an @AGENTS.md-style import for providers that support one, or a text pointer for those that don't — plus only genuinely provider-specific additions. Self-validates its own output with a bundled deterministic script (no LLM judgment, no separate audit skill) before finishing.
Before you start
The target repo must already have an AGENTS.md. If it doesn't, run agentsmd-author first — this skill never creates or edits AGENTS.md itself.
Usage
/provider-adapter-author
Provide the path to the provider-specific file to convert (and the target repo root, if not inferable). Can be invoked directly, or composed into by agentsmd-author when it detects an existing provider file with content overlapping AGENTS.md.
Files
| File | Purpose |
|---|---|
SKILL.md |
Skill instructions for agents |
references/provider-matrix.md |
Loaded at Step 1 before searching, unless the target is already a known root CLAUDE.md: known files per provider, which ones resolve a cross-file import, the validator flag each needs, and the rule that a standalone run and a run composed into by agentsmd-author behave identically |
references/sources.md |
Provenance record — the in-repo ADR precedent this skill's design is modeled on |
scripts/validate-adapter.sh |
Self-check gate: reference to AGENTS.md present, no excessive duplication, adapter stays thin |
scripts/README.md |
Directory documentation for scripts/ |
tests/README.md |
(source-only) Bats test dependency and run instructions |
tests/validate-adapter.bats |
(source-only) Bats test suite for scripts/validate-adapter.sh |
Rows marked (source-only) exist in the authoring source (.apm/skills/provider-adapter-author/)
but are not present in an installed plugin: the repo's scripts/sync-plugin-content.sh strips
<category>/<name>/tests when it generates the flat mirror, because these are dev-time fixtures no
plugin host needs to discover (ADR-0017). Run them from a repo checkout, not from an install.