-
Notifications
You must be signed in to change notification settings - Fork 155
apm compile should emit .github/copilot-instructions.md (dogfood gap) #792
Copy link
Copy link
Closed
Labels
area/cliCLI command surface, flags, help text (cross-cutting).CLI command surface, flags, help text (cross-cutting).area/docs-sitedocs/src/content (Starlight), README, doc generation.docs/src/content (Starlight), README, doc generation.good first issueGood for newcomersGood for newcomersstatus/acceptedDirection approved, safe to start work.Direction approved, safe to start work.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).Initial agentic triage complete; pending maintainer ratification (silence = approval).theme/portabilityOne manifest, every target. Multi-target deploy, marketplace, packaging, install.One manifest, every target. Multi-target deploy, marketplace, packaging, install.type/featureNew capability, new flag, new primitive.New capability, new flag, new primitive.
Milestone
Metadata
Metadata
Assignees
Labels
area/cliCLI command surface, flags, help text (cross-cutting).CLI command surface, flags, help text (cross-cutting).area/docs-sitedocs/src/content (Starlight), README, doc generation.docs/src/content (Starlight), README, doc generation.good first issueGood for newcomersGood for newcomersstatus/acceptedDirection approved, safe to start work.Direction approved, safe to start work.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).Initial agentic triage complete; pending maintainer ratification (silence = approval).theme/portabilityOne manifest, every target. Multi-target deploy, marketplace, packaging, install.One manifest, every target. Multi-target deploy, marketplace, packaging, install.type/featureNew capability, new flag, new primitive.New capability, new flag, new primitive.
Type
Projects
Status
Done
The dogfood opportunity
APM the package manager compiles
.apm/instructions/into multiple agent-tool formats:AGENTS.md(Codex / Cursor / Aider / Copilot fallback),CLAUDE.md(Claude Code), and.github/instructions/*.instructions.md(scoped per-pattern Copilot format withapplyTo:frontmatter). That's the core "write-once, run-anywhere" value prop.APM the OSS project does not yet eat its own dogfood. This repo currently:
.apm/instructions/python.md(one file, source of truth for Python conventions) — already compiled into.github/instructions/python.instructions.mdautomatically. Good..github/copilot-instructions.md(26 lines, top-level Copilot pointer with project philosophy, review-panel directive, dev-iteration commands, etc.) — NOT compiled, must be maintained by hand.AGENTS.md([FEATURE] Create root AGENTS.md documenting all CI-enforced rules for coding agents #695, PR docs: create AGENTS.md with CI-enforced rules for coding agents #754 in flight).CLAUDE.mddespite Claude Code being the highest-share agent tool today.This is exactly the format-fragmentation pain APM was built to solve, so the contradiction is becoming visible to anyone who reads our repo (see PR #754 conversation).
The proposed fix
Move all top-level contributing-guide content (currently in
.github/copilot-instructions.md) into a single source:.apm/instructions/contributing.md(or similar). Thenapm compileshould emit:AGENTS.mdCLAUDE.md.github/instructions/*.instructions.mdapplyTo:).github/copilot-instructions.mdOnce that compile target exists, this repo can:
.github/copilot-instructions.mdcontent into.apm/instructions/contributing.md(or split into focused files)..gitignoreentries for the generated outputs OR commit them with a CI staleness guard.apm compilein pre-commit + CI.Why this matters beyond this repo
The README claim becomes provable on our own repository. Every contributor sees the proof: one
.apm/instructions/contributing.mdedit lands in AGENTS.md, CLAUDE.md, and the Copilot files in the same commit. That's the demo we should be running on every PR.It also unblocks PR #754 (#695): instead of hand-authoring AGENTS.md, the PR becomes "convert top-level instructions to APM-compiled," which is a much stronger release-notes beat.
Out of scope (for now)
.cursor/rules/,.windsurf/rules/,.aider.conf.yml, etc. — these are already covered by other compile targets or out-of-scope..github/instructions/*.instructions.mdformat — keep as-is, it's the most powerful Copilot format.Acceptance criteria
apm compileemits.github/copilot-instructions.mdfrom one or more.apm/instructions/*.mdfiles (likely a designated "root" or "general" instruction file, or aggregating non-applyTo:-scoped content).targets.pyCopilot profile listscopilot-instructions.mdalongside its existing.github/outputs.apm compile --checkstyle staleness detection (or whatever the existing convention is).References
src/apm_cli/core/target_detection.py:216-221(existing AGENTS.md/CLAUDE.md emission)src/apm_cli/integration/instruction_integrator.py:28(existing.github/instructions/emission)good first issuecandidate — small surface, well-defined, and the contributor gets a high-visibility win (their code generates a file every contributor sees).