Skip to content

Add AGENTS.md and remove maintenance-mode notice#1993

Merged
tyrielv merged 1 commit into
microsoft:masterfrom
tyrielv:tyrielv/agents-md
Jun 1, 2026
Merged

Add AGENTS.md and remove maintenance-mode notice#1993
tyrielv merged 1 commit into
microsoft:masterfrom
tyrielv:tyrielv/agents-md

Conversation

@tyrielv
Copy link
Copy Markdown
Contributor

@tyrielv tyrielv commented Jun 1, 2026

Summary

Three related changes to make the repo more approachable for AI coding assistants and to correct outdated content in the Readme:

  1. Add AGENTS.md at the repo root, following the 2025-2026 cross-tool convention (Linux Foundation Agentic AI Foundation). It's natively read by GitHub Copilot, Claude Code, OpenAI Codex, Cursor, Gemini CLI, Windsurf, Aider, Devin, and Zed; agents with their own native file (e.g. CLAUDE.md) fall back to AGENTS.md.

  2. Remove the maintenance mode notice from Readme.md -- VFS for Git has resumed active development; the line about only required updates as a reaction to critical security vulnerabilities will prompt a release is no longer accurate. The Scalar recommendation paragraph (for new deployments) is intentionally unchanged.

  3. Refresh the Building VFS for Git section of Readme.md to match the current build system: .NET 10 SDK (not .NET Core 8), vcpkg requirement, Build.bat (not BuildGVFSForWindows.bat), corrected installer output path. Added a pointer to AGENTS.md at the end for AI coding assistants.

What's in AGENTS.md

Just the project-specific knowledge that isn't obvious from a fresh git clone and which routinely trips up agents:

  • The wrapped-output layout -- build outputs land one level up from the working tree, src\ convention documented for clones. All commands assume CWD at the enlistment root.
  • Three explicit build paths scoped to scenario, with timings:
    • Path A -- unit-test inner loop (~10-15 s): dotnet build of GVFS.UnitTests.csproj
    • Path B -- functional-test inner loop (~30-60 s): dotnet publish of FunctionalTests + Payload with PublishAot=false and SkipCreateInstaller=true, then RunFunctionalTests-Dev.ps1. Explicitly notes the native C++ vcxproj prerequisite.
    • Path C -- installer build (~5 min): Build.bat, only when you actually need an installer
  • NUnit filter footgun -- this codebase uses NUnitLite, which silently ignores --where. Use --test. For unit tests --where is just slow; for functional tests it's hours of wasted runtime against fresh enlistments.
  • Fully-qualified-name requirement for --test (short names silently match nothing).
  • vcpkg caching behavior in Build.bat -- don't manually re-run unless overlay ports changed.

Coding standards are not duplicated -- agents are pointed at CONTRIBUTING.md, which already covers StyleCop, error handling, TryXxx patterns, logging conventions, and the mock:\\ / mock:// test URL convention.

What's intentionally NOT in this PR

  • No precompiled binaries
  • No helper scripts
  • No opinionated workflow recommendations (e.g. bare-repo + worktree model -- that's a personal preference, not project knowledge)
  • No .github/copilot-instructions.md or CLAUDE.md stubs -- Copilot, Claude Code, and the other major agents all fall back to AGENTS.md, so stubs add maintenance for no real benefit
  • No coding-standards duplication -- links to CONTRIBUTING.md instead

The goal is the minimum project-specific knowledge needed to keep an agent productive, in a single ~175-line file that's reviewable in one screen.

Validation

Content was derived from extensive empirical use of the build/test workflows over the past several months. The build-path timings were measured directly: a 6-fork comparison (three scenarios x two brain-arms) showed the Path A guidance produces a 51x speedup over the default Build.bat-based instructions (1833 s -> 36 s for a unit-test inner loop), and 9x speedup for the functional-test loop (362 s -> 40 s). The installer path is unchanged.

The --test/--where distinction comes from repeated real-world bites of accidentally kicking off the full functional suite while iterating on a single test.

The Readme updates were verified against the current Build.bat (vcpkg is required, BuildGVFSForWindows.bat no longer exists), Directory.Build.props (.NET 10 TFM), and an actual produced installer on disk (out\GVFS.Installers\bin\Debug\win-x64\SetupGVFS.0.2.173.2.exe).

@tyrielv tyrielv force-pushed the tyrielv/agents-md branch 2 times, most recently from 06a3a14 to 5c83d6a Compare June 1, 2026 19:12
This commit does four related things:

1. Add an AGENTS.md at the repo root, following the 2025-2026 cross-tool
   convention (Linux Foundation Agentic AI Foundation). It is natively read
   by GitHub Copilot, Claude Code, OpenAI Codex, Cursor, Gemini CLI,
   Windsurf, Aider, Devin, Zed, and others; agents that have their own
   native file (e.g. CLAUDE.md) fall back to AGENTS.md when no native file
   is present.

   The file captures project-specific knowledge that isn't obvious from a
   fresh `git clone` and which routinely trips up AI coding assistants:

   - The wrapped-output layout (build outputs land one level up from the
     working tree -- catches agents reaching for ./out or similar). Notes
     the documented `src\` convention and that all commands assume CWD at
     the enlistment root.
   - Three explicit build paths scoped to scenario, so agents stop reaching
     for the full installer build (~5 min, NativeAOT publish + Inno Setup,
     no incremental support) when they just want to rerun a unit test:
       Path A -- unit-test inner loop:  ~10-15 s  (dotnet build .csproj)
       Path B -- functional-test loop:  ~30-60 s  (dotnet publish w/
                                                   PublishAot=false +
                                                   SkipCreateInstaller=true)
       Path C -- installer build:       ~5 min   (Build.bat, only when you
                                                   actually need an installer)
     Path B explicitly calls out the native C++ vcxproj prerequisite, since
     dotnet publish won't build those.
   - The NUnit filter footgun: this codebase uses NUnitLite, which supports
     only --test (not --where). --where is silently ignored and runs every
     test. For unit tests that's just slow; for functional tests it's hours
     of wasted runtime against fresh enlistments.
   - Fully-qualified-name requirement for --test (short names silently match
     nothing).
   - The vcpkg caching behavior in Build.bat (don't manually re-run vcpkg
     unless overlay ports changed).

   Coding standards are NOT duplicated here -- agents are pointed at
   CONTRIBUTING.md, which already covers StyleCop, error handling,
   TryXxx patterns, logging conventions, etc.

   No new precompiled binaries, no helper scripts, no opinionated workflow
   recommendations (worktree model etc.) -- just the minimum project-specific
   knowledge needed to keep an agent productive in this repo.

2. Remove the "maintenance mode" notice from Readme.md. VFS for Git has
   resumed active development; the line about "only required updates as a
   reaction to critical security vulnerabilities will prompt a release" is
   no longer accurate. The Scalar recommendation paragraph (for new
   deployments) is unchanged.

3. Remove the build-badge table from Readme.md. The four pipelines it
   referenced are a mix of still-running (gvfs/ci CI - Windows and
   CI - Windows - Full Functional Tests, both currently green) and
   never-configured for master (mseng/AzureDevOps GVFS/GitHub VFSForGit
   Large Repo Perf Tests and Large Repo Build both render the "set up
   now" placeholder). Active CI signal lives in the GitHub Actions
   checks on each commit/PR; keeping a separately-maintained badge
   table just creates a "is this still accurate?" question that no one
   answers.

4. Update the "Building VFS for Git" section of Readme.md to reflect the
   current build system:
   - The .NET 10 SDK has replaced the .NET Core 8 SDK requirement.
   - The "Install nuget.exe" prerequisite is gone (modern dotnet SDK
     handles restore).
   - vcpkg is now required (for native libgit2 et al.); call it out and
     point at the official getting-started doc.
   - The .NET Core cross-platform development workload and runtime
     bullets are obsolete; dropped.
   - The build script is `Build.bat`, not the historical
     `BuildGVFSForWindows.bat`.
   - The installer output path is `out\GVFS.Installers\bin\<Config>\win-x64\`,
     not the historical `BuildOutput\GVFS.Installer.Windows\bin\x64\<Config>\`.
   - Added a pointer at the end of the section to AGENTS.md for AI
     coding assistants.

Assisted-by: Claude Opus 4.7
Signed-off-by: Tyrie Vella <tyrielv@gmail.com>
@tyrielv tyrielv force-pushed the tyrielv/agents-md branch from 5c83d6a to a3f95d4 Compare June 1, 2026 20:19
@tyrielv tyrielv marked this pull request as ready for review June 1, 2026 21:04
@tyrielv tyrielv enabled auto-merge June 1, 2026 21:04
Copy link
Copy Markdown
Contributor

@derrickstolee derrickstolee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great foundation. We should consider updating this or adding repo-specific skills as you continue to work agentically in this codebase.

@tyrielv tyrielv merged commit 70832a7 into microsoft:master Jun 1, 2026
51 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants