Target Support Policy¶
Purpose¶
Define how agent-policy decides which tool compatibility targets to support, and in what order, without destabilizing the canonical policy schema.
Separation of Concerns¶
agent-policy uses three distinct concerns:
-
Canonical policy semantics (
agent-policy.yaml) -
Describes repository behavior: commands, paths, roles, constraints.
-
Must remain tool-agnostic and stable.
-
Output target selection (
outputsand future target controls) -
Describes which compatibility artifacts are emitted.
-
Must not leak tool-specific semantics into core policy rules.
-
CLI runtime overrides
-
Temporary command-time choices.
- Must never become hidden source-of-truth for CI.
Current v0.1 Contract¶
For v0.1.x, output targets are declared as an array of string IDs in the outputs field:
# outputs defaults to [agents-md] when omitted
outputs:
- agents-md
- claude-md # optional
- cursor-rules # optional
Supported target IDs in v0.1: agents-md, claude-md, cursor-rules. Unknown IDs are rejected at normalization time with an explicit error. No profile or --targets override system is introduced in v0.1.
Target Classes¶
New target proposals are classified into one of four classes:
-
Repo-scoped instruction files
-
Example:
AGENTS.md,CLAUDE.md,GEMINI.md. -
Repo-scoped rule/config directories
-
Example:
.cursor/rules/*.mdc,.github/instructions/*.instructions.md. -
Agent profile files
-
Example: tool-specific agent profile documents under repo paths.
-
Local or user-specific configuration
-
Example: home-directory memory/settings files.
- Never generated by default for team repositories.
Support Tiers¶
Every target is assigned a tier in compatibility-matrix.md:
-
Core
-
Implemented, tested, and included in normal CI drift checks.
-
Planned
-
Explicitly accepted direction, not yet implemented.
-
Experimental
-
Behind feature flag or unstable interface; not part of default commitments.
-
Reference-only
-
Tracked for ecosystem awareness but intentionally not generated.
Admission Criteria for New Targets¶
A new target should be promoted only when all are true:
- Stable, documented repository file convention exists.
- The artifact is team-safe and committable to source control.
- Rendering can be deterministic and diff-checkable.
- The target adds clear incremental utility beyond existing outputs.
- Maintenance cost is acceptable (tests, docs, drift behavior, schema impact).
Schema Evolution Guardrail¶
Decision already made: outputs uses an array of string target IDs (outputs: [agents-md, claude-md]). Adding a new target requires only a new enum value in the JSON Schema — no structural migration, ever.
The design principle that drove this decision:
- Add concrete targets with explicit tests first.
- Prefer the schema shape that makes new targets additive by default (array > boolean map).
- Defer profiles and registry-backed metadata until target surface is stable (Phase 5+).
This keeps the migration path clean while avoiding the one-key-per-target schema sprawl that a boolean map would require.