diff --git a/docs/src/content/docs/agent-factory-status.mdx b/docs/src/content/docs/agent-factory-status.mdx
index 2337b43950..91698118d5 100644
--- a/docs/src/content/docs/agent-factory-status.mdx
+++ b/docs/src/content/docs/agent-factory-status.mdx
@@ -133,7 +133,7 @@ These are experimental agentic workflows used by the GitHub Next team to learn,
| [Smoke Codex](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/smoke-codex.md) | codex | [](https://github.com/githubnext/gh-aw/actions/workflows/smoke-codex.lock.yml) | - | - |
| [Smoke Copilot](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/smoke-copilot.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/smoke-copilot.lock.yml) | - | - |
| [Smoke OpenCode](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/smoke-opencode.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/smoke-opencode.lock.yml) | - | - |
-| [Smoke Project](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/smoke-project.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/smoke-project.lock.yml) | - | - |
+| [Smoke Project](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/smoke-project.md) | codex | [](https://github.com/githubnext/gh-aw/actions/workflows/smoke-project.lock.yml) | - | - |
| [Stale Repository Identifier](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/stale-repo-identifier.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/stale-repo-identifier.lock.yml) | - | - |
| [Static Analysis Report](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/static-analysis-report.md) | claude | [](https://github.com/githubnext/gh-aw/actions/workflows/static-analysis-report.lock.yml) | - | - |
| [Step Name Alignment](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/step-name-alignment.md) | claude | [](https://github.com/githubnext/gh-aw/actions/workflows/step-name-alignment.lock.yml) | `daily` | - |
@@ -143,6 +143,7 @@ These are experimental agentic workflows used by the GitHub Next team to learn,
| [Test Create PR Error Handling](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/test-create-pr-error-handling.md) | claude | [](https://github.com/githubnext/gh-aw/actions/workflows/test-create-pr-error-handling.lock.yml) | - | - |
| [Test Dispatcher Workflow](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/test-dispatcher.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/test-dispatcher.lock.yml) | - | - |
| [Test Project URL Explicit Requirement](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/test-project-url-default.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/test-project-url-default.lock.yml) | - | - |
+| [Test Workflow](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/test-workflow.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/test-workflow.lock.yml) | - | - |
| [Test YAML Import](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/test-yaml-import.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/test-yaml-import.lock.yml) | - | - |
| [The Daily Repository Chronicle](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/daily-repo-chronicle.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/daily-repo-chronicle.lock.yml) | `0 16 * * 1-5` | - |
| [The Great Escapi](https://github.com/githubnext/gh-aw/blob/main/.github/workflows/firewall-escape.md) | copilot | [](https://github.com/githubnext/gh-aw/actions/workflows/firewall-escape.lock.yml) | - | - |
diff --git a/docs/src/content/docs/guides/campaigns/getting-started.mdx b/docs/src/content/docs/guides/campaigns/getting-started.mdx
index 20dc0865fa..a0cca23527 100644
--- a/docs/src/content/docs/guides/campaigns/getting-started.mdx
+++ b/docs/src/content/docs/guides/campaigns/getting-started.mdx
@@ -4,7 +4,7 @@ description: Quick start guide and examples for creating your first agentic camp
sidebar:
label: Getting Started
banner:
- content: '⚠️ Experimental: This feature is under active development and may change or behave unpredictably.'
+ content: 'Experimental: This feature is under active development and may change or behave unpredictably.'
---
## Quick Start
diff --git a/docs/src/content/docs/guides/campaigns/index.mdx b/docs/src/content/docs/guides/campaigns/index.mdx
index 11cc52640f..3ea61c0a9c 100644
--- a/docs/src/content/docs/guides/campaigns/index.mdx
+++ b/docs/src/content/docs/guides/campaigns/index.mdx
@@ -4,20 +4,30 @@ description: Agent workflows that orchestrate work and track progress.
sidebar:
label: Campaigns
banner:
- content: '⚠️ Experimental: This feature is under active development and may change or behave unpredictably.'
+ content: 'Experimental: This feature is still in development and may change or behave unpredictably.'
---
## What are Agentic Campaigns?
-Agentic Campaigns are workflows that coordinate work across one or more repositories to drive progress toward a shared goal and make that progress easy to track.
+Agentic campaigns are scheduled workflows for work that spans multiple steps and is easier to manage with shared coordination and progress tracking.
-They run on a schedule and include:
-- **Natural language coordination** with defaults being imported from `shared/campaign.md`
-- **Progress tracking** with optional automatic [GitHub Projects](/gh-aw/reference/glossary/#github-projects-projects-v2)
+Campaigns can be large (like migrations) or small (like a one-week cleanup) initiatives.
-## When should this just be a workflow?
+Each campaign includes:
+- **Markdown** to document the goal, work breakdown, and reporting
+- **Worker agents** that autonomously execute the work
+- **Progress tracking** to show status and next steps
-**Rule of thumb:** If you're not tracking work items in a GitHub Project or coordinating multiple agents, you probably just need a regular workflow.
+## When should I use an agentic campaign?
+
+Use a campaign when you want a clear plan and ongoing progress updates, for example:
+- Large-scale migrations (e.g., framework upgrades, API deprecations)
+- Cross-cutting refactors (e.g., module splits, dependency cleanup)
+- Smaller initiatives (e.g., reliability cleanup week, docs refresh)
+
+Don't use a campaign for simple tasks that don't need coordination, such as:
+- Single tasks (e.g., triaging issues, writing a blog post)
+- One-off processes (e.g., code reviews, generating documentation)
## How it works