Repository navigation
Conversation
Move .github/copilot-instructions.md, unchanged, to AGENTS.md at the repository root. Copilot code review, the Copilot cloud agent and CLI, Copilot in VS Code, Claude Code, Codex and Cursor all read a root AGENTS.md, while only Copilot reads the old path. The move is a commit of its own, so the branch shows it as a rename. Jekyll would publish a root Markdown file as it is, so _config.yml excludes AGENTS.md. The built site is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rewrite the guide for any agent or contributor, in the shape of reports-activity's AGENTS.md: overview, layout, commands, CI, content, gotchas, and pull request and commit conventions. It points to README's "News and Activity", the generator's header comment and the scripts rather than restating them, and it says that the code wins where the two disagree, in place of "always reference these instructions first". Out of date in the old text, and corrected: - CI's build job also runs the limit on the reporter's PRs and test-check-activity-data.rb, and the data check takes --base. The guide gives the local form, with the merge base as the base: with --base origin/main, Activity files that main gained after the branch was cut are reported as deleted. - A workshop is one file in _workshops/, not an edit to pages/workshops.md and the home layout. - minima is gone, feed.xml is a hand-written template that jekyll-feed skips, and there is no news collection. - The navigation is in _layouts/default.html; _includes/ is unused. - Bundler comes with Ruby, so the gem install and PATH steps are gone, and jekyll serve keeps its default host: 0.0.0.0 exposes the server and rewrites site.url. - Pages are Markdown or HTML, and the CDN list matches the layouts (no AOS or Swiper). New: what Jekyll publishes, the url, timezone and front-matter default traps, where each kind of content goes, the Activity view's escaping, date and anchor rules, the LoadError that another Ruby's GEM_HOME causes, and the repository's pull request and commit conventions, with the rules for writing to GitHub. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot code review has read a root AGENTS.md since June 2026, as do the Copilot cloud agent, the Copilot CLI and Copilot in VS Code. So the old path keeps only a short pointer, as in reports-activity, for the Copilot features that read nothing else: Copilot Chat on github.com and code review run inside an IDE. There is one copy of the guide to keep current. PLAN-IMPROVEMENTS.md's note on the guide now names AGENTS.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each was checked in a scratch copy of the branch: - jekyll serve rebuilds on changes to content, layouts and assets, but reads _config.yml and loads _plugins/ only when it starts, so restart it after editing either. - A Sass partial loaded with @use can't see main.scss's variables (the build fails with "Undefined variable"), so partials use the --qe-* custom properties, as _about.scss does. - The build skips a post dated in the future and still passes, so an announcement of something still to come takes the day it is published. - index.md sets only the home page's URL and layout: home.html has no {{ content }}, so the home page is edited in that layout. - /code/ ignores order and lists code libraries in reverse file-name order; order places lectures and books. - A translator with no other role has role "Translator", which matches no section, and appears only under Translators. - The gitignored Gemfile.lock that a first bundle install writes keeps local gem versions until bundle update, while CI, the deploy and Netlify resolve fresh ones on every run. The CI section now says to change it along with the workflow and its test. The Copilot pointer says which Copilot features read AGENTS.md directly: code review on GitHub.com does, code review in an IDE doesn't. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅ Deploy Preview for grand-swan-ca5201 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
It is a documentation-only migration whose factual claims and the one-line _config.yml exclude were verified accurate against the codebase, with no code-behavior impact.
Review effort: Balanced
Findings: None
What changed in this PR
This PR migrates the agent/contributor guide from .github/copilot-instructions.md to a tool-agnostic AGENTS.md at the repository root, brings the content up to date with main, and leaves the old path as a short pointer. It supports standardizing on the AGENTS.md convention read by multiple AI coding tools, while keeping the site build unaffected. It is part of QuantEcon/meta#293.
Changes:
- Add
AGENTS.mdat the repo root as the single canonical guide (overview, layout, commands, CI, content, gotchas, PR/commit conventions), updated to reflect current CI, plugins, theming, and collections. - Reduce
.github/copilot-instructions.mdto a pointer toAGENTS.mdfor Copilot surfaces that only read that path. - Exclude
AGENTS.mdfrom the Jekyll build in_config.ymland update the stale reference inPLAN-IMPROVEMENTS.md.
| File | Description |
|---|---|
AGENTS.md |
New canonical guide; content verified accurate against build.yml, README, layouts, Gemfile, plugins, and scripts. |
.github/copilot-instructions.md |
Trimmed to a pointer to ../AGENTS.md; relative link resolves correctly. |
_config.yml |
Adds AGENTS.md to exclude: so Jekyll does not publish it at /AGENTS.md. |
PLAN-IMPROVEMENTS.md |
Updates the note to name AGENTS.md as the current guide. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Moves the agent guide from
.github/copilot-instructions.mdto a tool-agnosticAGENTS.mdat the repository root, brings it up to date withmainat f3f9ae6, and leaves a short pointer at the old path. Part of QuantEcon/meta#293.What changes and why
AGENTS.mdis now the one guide, for any agent and for people. Copilot code review on github.com, the Copilot cloud agent and CLI, Copilot in VS Code, Claude Code, Codex and Cursor all read a rootAGENTS.md(table below), while Claude Code and Codex never read the old path. The first commit moves the file unchanged (plus theexclude:entry), so it shows as a rename, and the second commit shows the rewrite against the old text.AGENTS.md: overview, layout, commands, CI, content, gotchas, and pull request and commit conventions. It points to README's "News and Activity", the header comment of_plugins/activity_generator.rband the scripts rather than restating them. In place of "always reference these instructions first", it says to trust the code where the two disagree and to correct the guide in the same pull request..github/copilot-instructions.mdis a short pointer toAGENTS.md, as in reports-activity, for the Copilot features that read only that path._config.ymlexcludesAGENTS.md. Otherwise Jekyll would publish it at quantecon.org/AGENTS.md, as it publishesREADME.md.PLAN-IMPROVEMENTS.mdnames the new file. It held the only other mention of the old path.What the old guide said at f3f9ae6, and what
AGENTS.mdsays instead:AGENTS.mdbuildhas seven steps: checkout, the limit on the reporter's PRs, setup-ruby, the data check with--base HEAD^1,test-check-activity-data.rb,test-activity.rb, then the production build. The guide lists them and gives the local command for each checkpages/workshops.mdand the hard-coded list in_layouts/home.html_workshops/(deb9649), which both pages loop overfeed.xmlis a hand-written template, which jekyll-feed skips because the file existsnews), none with pages of its own_includes/holdsquantecon-menubar.html_layouts/default.htmlgem install bundler --user-install, then a Ruby 3.4PATHlinejekyll serve --host 0.0.0.00.0.0.0exposes the server to the network and setssite.urltohttp://0.0.0.0:4000/team/, and the guide says to check the change on the deploy previewNew in the guide: what Jekyll publishes; the
url, timezone and front-matter default traps; where each kind of content goes, including why a post dated in the future doesn't appear and how a Sass partial reaches the brand colours; whatjekyll servedoesn't reload; the Activity view's escaping, date and anchor rules; theLoadErrorthat another Ruby'sGEM_HOMEcauses; and the repository's pull request and commit conventions. Those include the three rules for writing to GitHub from the "Writing to GitHub" section of QuantEcon/skills'AGENTS.md, copied in because Copilot review doesn't follow links.Which tools read which file
From research on 2026-09-29 in each tool's documentation and changelog. Nothing was tested in a live Copilot session.
AGENTS.md.github/copilot-instructions.mdCLAUDE.mdCLAUDE.md,.claude/CLAUDE.mdorCLAUDE.local.mdis in the working directory or above itcontext.fileNameCopilot code review has read these files from the pull request's head branch since 2026-07-17, so this pull request's own review runs with the new layout. Review also needs the repository setting "Use custom instructions when reviewing pull requests", which is on by default; I didn't check its value here.
How it was verified
mainat f3f9ae6 after normalising the build timestamps: 0 differing files of 329. With theexclude:entry removed, the only difference is a published/AGENTS.md.bundle config set --local path vendor/bundleandbundle install: 10.5 s, andgit statusstays clean.JEKYLL_ENV=production bundle exec jekyll build: 329 files in about a second, with noAGENTS.md.bundle exec jekyll serve: 200 on/; the feed's link andog:urlreadhttp://localhost:4000;/AGENTS.mdis a 404 and/README.mda 200.bundle exec jekyll clean: removes_site/and.jekyll-cache/.git fetch origin, thenruby .github/scripts/check-activity-data.rb --base "$(git merge-base HEAD origin/main)": the 40 entries in 23 files are unchanged.ruby .github/scripts/test-check-activity-data.rb: 38 runs, 688 assertions, 0 failures, in 11.6 s.ruby .github/scripts/test-activity.rb: 51 runs, 27,519 assertions, 0 failures.mainsimulated one Activity day file ahead of the branch,--baseat thatmainfails with "deleted, but it exists at the base", and--baseat the merge base passes. So the guide doesn't use--base origin/main, which would fail that way as soon as the reporter's daily files land onmain.LoadErrorline. With chruby'sGEM_HOMEandGEM_PATHin the environment,ruby .github/scripts/test-activity.rbstops loadingmutex_mfrom chruby's minitest 5.18.1. With the three variables unset, it passes.servesetssite.urlfrom the host.@usethat uses$qe-bluefails the build with "Undefined variable". Withvar(--qe-blue)it builds./code/lists two added code libraries in reverse file-name order, whatever theirorder.jekyll serveregenerates after an edit to_plugins/activity/rows.rbbut keeps serving the old plugin's output, and doesn't notice an edit to_config.yml.Gemfile.lockin place,bundle installasks for the locked sass-embedded 1.101.0, andbundle updatemoves to 1.105.0.index.md, and/team/shows the three members withrole: "Translator"once each, under Translators.Choices for review
CLAUDE.md. From v2.1.277, Claude Code reads a rootAGENTS.mdby itself when there is noCLAUDE.md,.claude/CLAUDE.mdorCLAUDE.local.mdin the working directory or above it, and this repository has none. Claude Code here runs 2.1.284 in VS Code and 2.1.281 in the desktop app; only theclaudeCLI onPATHis older, at 2.1.280. In local sessions on 2.1.281 and later, in repositories that have anAGENTS.mdand noCLAUDE.md, main sessions and workflow-harness subagents alike were givenAGENTS.mdas project instructions, although the Agent SDK's docs mention onlyCLAUDE.md. The research still suggested aCLAUDE.mdholding only@AGENTS.md, to cover the remaining gaps: versions before 2.1.277, sometimes the first session after upgrading from one, sessions on Bedrock, Vertex or a gateway or with telemetry off on versions before 2.1.281 (both apps here are past it), and anyone who adds a personalCLAUDE.local.mdor.claude/CLAUDE.md(.claude/is gitignored here), which switches native reading off. No Claude session loses anything here, since none read the old path. For that cover, add aCLAUDE.mdcontaining only@AGENTS.md, and add it toexclude:. From v2.1.280,/memorylistsAGENTS.mdwhen Claude has read it.AGENTS.mditself, so the pointer costs it nothing, and there is one copy to keep current. Copilot Chat on github.com and code review run inside an IDE now see only the pointer. A full copy (the QuantEcon.manual pattern) would load twice in every other Copilot surface and drift, and a symlink (the lecture-julia.myst pattern) is undocumented for Copilot on GitHub and loads twice too.AGENTS.mdas a new file: after a scratch squash,git log --follow AGENTS.mdstarted at the squash commit. The old history stays undergit log -- .github/copilot-instructions.md. Rebase-merging this one pull request, if that method is enabled, would keep the rename onmain.README.mdandnetlify.tomlare copied to quantecon.org as they are. Excluding them would change the site, so this pull request leaves them.Notes
test-activity.rb.AGENTS.mdnow lists every step ofbuild, includingtest-check-activity-data.rband the limit on the reporter's PRs.mainafter this merges, or else editAGENTS.mdrather than the old file.qe gh agents sync(QuantEcon/cli#50) will add it as a managed block, through its own pull request._team-members/natasha.mdhasrole: "QuantEcon Early Career Researchers", which matches no section of_layouts/team.html, so she appears nowhere on/team/.archive/is published, and three of its pages are in the sitemap, though nothing links to them.pages/2024-11-20-rba-workshop.mdhas nopermalink:, so it publishes at/pages/2024-11-20-rba-workshop.html._includes/quantecon-menubar.htmlis unused._layouts/code.htmldoesn't sort byorder:/code/lists code libraries in reverse file-name order, which matches theirordervalues only because of how the three files are named.index.mdis never rendered, since_layouts/home.htmlhas no{{ content }}.🤖 Generated with Claude Code