Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# AGENTS.md - Copilot Developer Camp

This file helps AI coding assistants understand the repository structure, conventions, and workflows for [Copilot Developer Camp](https://aka.ms/copilotdevcamp) - a self-paced lab resource for extending Microsoft 365 Copilot and building custom engine agents.

---

## Repository Overview

| Path | Purpose |
|---|---|
| `docs/` | All MkDocs site content (lab markdown, assets, JS, CSS) |
| `docs/pages/` | Lab content organized by learning path |
| `docs/assets/` | Images, badge artwork, logos |
| `docs/includes/` | Shared markdown snippets (used via `pymdownx.snippets`) |
| `docs/ja/` | Japanese translations (mirrors English structure) |
| `docs/javascripts/` | Custom JS for award tracking, lab navigation, adaptive cards |
| `docs/stylesheets/` | Custom CSS overrides for the Material theme |
| `src/` | Sample source code referenced by labs |
| `mkdocs.yml` | MkDocs configuration - nav structure, plugins, theme settings |
| `README.md` | Repo overview and quick sample index |

---

## Lab Structure and Naming Conventions

Labs are organized under `docs/pages/` by learning path. Each path has its own prefix:

| Prefix | Learning Path | Folder |
|---|---|---|
| `E` | Declarative Agents | `docs/pages/extend-m365-copilot/` |
| `BMA` | Custom Engine - M365 Agents SDK + Microsoft Foundry | `docs/pages/custom-engine/agents-sdk/` |
| `BAF` | Custom Engine - Agent Framework | `docs/pages/custom-engine/agent-framework/` |
| `MCS` | No-code/low-code - Microsoft Copilot Studio | `docs/pages/make/copilot-studio/` |
| `MAB` | No-code/low-code - Agent Builder | `docs/pages/make/agent-builder/` |
| `MSA` | No-code/low-code - Custom SharePoint Agents | `docs/pages/make/sharepoint-agents/` |

**File naming:** `NN-short-description.md` where `NN` is zero-padded (e.g., `00-prerequisites.md`, `01-first-agent.md`, `08-mcp-server.md`).

**Every learning path has:**
- An `index.md` (welcome/overview page)
- A `00-prerequisites.md` (setup and environment)
- Numbered lab files for each step

---

## Running the Docs Site Locally

```bash
# Install dependencies (Python 3.8+ required)
pip install mkdocs-material
pip install mkdocs-static-i18n

# Serve with live reload
mkdocs serve
```

Site is available at `http://127.0.0.1:8000`. The `site/` output folder is git-ignored.

Alternatively with Docker:

```bash
docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material serve --dev-addr=0.0.0.0:8000
```

---

## Adding or Editing Lab Content

1. Create or edit the markdown file in the appropriate `docs/pages/<path>/` folder.
2. Add the new file to the `nav:` section of `mkdocs.yml` (under both `en` and `ja` locales if translating).
3. For shared content (repeated across labs), add a snippet to `docs/includes/` and reference it with:
```markdown
--8<-- "snippet-name.md"
```
4. Images go in `docs/assets/images/`. Use relative paths in markdown.
5. For lab step navigation buttons, use the custom `cc-next.js` class (see existing labs for the pattern).

**Admonition blocks** (used heavily throughout the labs):
```markdown
!!! note
Text here

!!! tip "Custom title"
Text here

??? warning "Collapsible"
Text here
```

---

## JavaScript and Award Logic

| File | Purpose |
|---|---|
| `docs/javascripts/cc-award.js` | Badge award tracking and Credly integration |
| `docs/javascripts/cc-next.js` | Lab step navigation (Next/Previous buttons) |
| `docs/javascripts/cc-lab-step.js` | In-page lab step rendering |
| `docs/javascripts/cc-card.js` | Card layout rendering |

---

## Source Code Samples

Sample code for labs lives in `src/`. Each subfolder corresponds to a lab path. Labs reference the source via GitHub links in the markdown rather than embedding code inline.

---

## i18n (Translations)

English is the default locale. Japanese (`ja`) translations mirror the English folder structure under `docs/ja/`. When adding English content, add a corresponding entry in the `ja:` locale nav in `mkdocs.yml` even if the translation is not yet available (use the file path without a label to inherit the English version).

---

## Contribution Checklist

- [ ] Lab markdown follows the existing heading and admonition style
- [ ] New lab file is added to the `nav:` in `mkdocs.yml` (English locale at minimum)
- [ ] `mkdocs serve` runs without errors or warnings
- [ ] Images are in `docs/assets/images/` and referenced with relative paths
- [ ] No hardcoded tenant IDs, client IDs, or secrets in any file
- [ ] CLA bot check passes (required for all external contributors)

---

## Key Contacts and Resources

- Issues: https://github.com/microsoft/copilot-camp/issues
- Discussions: https://github.com/microsoft/copilot-camp/discussions
- Awards: https://microsoft.github.io/copilot-camp/awards/
- Community Recognition Program: https://aka.ms/community/recognition-register
- Sample Solution Gallery: https://aka.ms/community/samples