Agent::Context

Agent::Context

Provides tools for installing and managing context files from Ruby gems for AI agents, and generating agent.md files following the https://agent.md specification.

Development Status

Overview

This gem allows you to install and manage context files from other gems. Gems can provide context files in a context/ directory in their root, which can contain documentation, configuration examples, migration guides, and other contextual information for AI agents.

When you install context from gems, they are placed in the .context/ directory and an agent.md file is generated or updated to provide a comprehensive overview for AI agents.

Quick Start

Add the gem to your project and install context from all available gems:

$ bundle add agent-context
$ bake agent:context:install

This workflow:

Context

This gem provides its own context files in the context/ directory, including:

When you install context from other gems, they will be placed in the .context/ directory and referenced in agent.md.

Usage

Please browse the source code index or refer to the guides below.

Installation

Add the agent-context gem to your project:

$ bundle add agent-context

Commands

Install Context (Primary Command)

Install context from all available gems and update agent.md:

$ bake agent:context:install

Install context from a specific gem:

$ bake agent:context:install --gem async

List available context

List all gems that have context available:

$ bake agent:context:list

List context files for a specific gem:

$ bake agent:context:list --gem async

Show context content

Show the content of a specific context file:

$ bake agent:context:show --gem async --file thread-safety

Version Control

Both .context/ and agent.md should be committed to git:

Providing Context in Your Gem

To provide context files in your gem, create a context/ directory in your gem's root:

your-gem/
├── context/
│   ├── getting-started.md
│   ├── usage.md
│   ├── configuration.md
│   └── index.yaml (optional)
├── lib/
└── your-gem.gemspec

Optional: Custom Index File

You can provide a custom index.yaml file to control ordering and metadata:

description: "Your gem description from gemspec"
version: "1.0.0"
files:
  - path: getting-started.md
    title: "Getting Started"
    description: "Quick start guide"
  - path: usage.md
    title: "Usage Guide"
    description: "Detailed usage instructions"

If no index.yaml is provided, one will be generated automatically from your gemspec and markdown files.

AI Tool Integration

The generated agent.md file can be integrated with various AI coding tools by creating symbolic links to their expected locations:

Cline

ln -s agent.md .clinerules

Claude Code

ln -s agent.md CLAUDE.md

Cursor

First, create the .cursor/rules directory:

mkdir -p .cursor/rules

Then create .cursor/rules/agent.mdc with:

---
alwaysApply: true
---
Read the `agent.md` file in the project root directory for detailed context relating to this project and external dependencies.

This approach uses Cursor's proper front-matter format and directs the AI to consult the main agent.md file.

Gemini CLI, OpenAI Codex, OpenCode

ln -s agent.md AGENTS.md

GitHub Copilot

ln -s ../../agent.md .github/copilot-instructions.md

Replit

ln -s agent.md .replit.md

Windsurf

ln -s agent.md .windsurfrules

See Also

Gems With Context Files

Contributing

We welcome contributions to this project.

  1. Fork it.
  2. Create your feature branch (git checkout -b my-new-feature).
  3. Commit your changes (git commit -am 'Add some feature').
  4. Push to the branch (git push origin my-new-feature).
  5. Create new Pull Request.

Developer Certificate of Origin

In order to protect users of this project, we require all contributors to comply with the Developer Certificate of Origin. This ensures that all contributions are properly licensed and attributed.

Community Guidelines

This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.