Reusable Data Machine documentation-agent package for GitHub repositories.
This repo ships multiple portable agent bundles. Consumers choose the bundle that matches the documentation audience instead of running one shared agent with different lanes.
bundles/technical-docs-agent: developer, site-owner, operator, contributor, and integrator documentation.bundles/user-docs-agent: non-technical product documentation for frontend users.
Both bundles run in the same Homeboy/Data Machine runner stack. Each imports a distinct agent identity, memory, pipeline, flow set, and documentation standard.
Target GitHub repo
|
| read context, write allowed docs paths, open PR
v
Data Machine Code GitHub/workspace tools
|
| tools exposed to selected bundle agent
v
Data Machine flow + pipeline
|
| agent loop and job execution
v
Agents API + model provider
|
| reusable runtime primitives + LLM call
v
Selected Docs Agent bundle
The consumer repo does not need to contain these bundles. It only needs a Homeboy runner configuration that says which bundle, flow, target repo, credentials, and writable paths to use.
- Docs Agent bundles: https://github.com/Automattic/docs-agent
- Agents API runtime primitives: https://github.com/Automattic/agents-api
- Data Machine agent, bundle, flow, and pipeline runtime: https://github.com/Extra-Chill/data-machine
- Data Machine Code GitHub tools and PR-writing abilities: https://github.com/Extra-Chill/data-machine-code
- OpenAI provider for the WordPress AI Client: https://github.com/WordPress/ai-provider-for-openai
- Homeboy command runner and artifact framework: https://github.com/Extra-Chill/homeboy
- Homeboy WordPress/Playground extension layer: https://github.com/Extra-Chill/homeboy-extensions
- Bundle path:
bundles/technical-docs-agent - Agent slug:
technical-docs-agent - Pipeline slug:
technical-docs-pipeline - Bootstrap flow slug:
technical-docs-bootstrap-flow - Maintenance flow slug:
technical-docs-maintenance-flow - Maintenance alias:
technical-docs-flow
Use this bundle for developer-facing docs: architecture, APIs, hooks, filters, abilities, commands, extension points, lifecycle, data contracts, local development, tests, release workflows, operations, and contributor guidance.
The technical bundle can write in the repository's existing developer-docs namespace, commonly README.md and docs/**.
- Bundle path:
bundles/user-docs-agent - Agent slug:
user-docs-agent - Pipeline slug:
user-docs-pipeline - Bootstrap flow slug:
user-docs-bootstrap-flow - Maintenance flow slug:
user-docs-maintenance-flow - Maintenance alias:
user-docs-flow
Use this bundle for non-technical product docs: what the product does, onboarding, product-surface setup, visible settings, common tasks, expected outcomes, permissions, compatibility, troubleshooting, and FAQ-worthy behavior.
The user bundle should write to its own product-docs namespace, commonly docs/user/**, with its own index such as docs/user/README.md. It writes for frontend consumers and keeps implementation evidence internal to the run.
Docs Agent is not Automattic-only. Anyone can use it if they can run the Homeboy/Data Machine runner stack and provide the required GitHub and model-provider credentials.
Choose exactly one bundle per run:
- Technical docs:
bundles/technical-docs-agent - User docs:
bundles/user-docs-agent
Run separate PRs for separate audiences. Avoid letting both bundles edit the same docs index in one pass.
Keep the writable scope narrow:
- Technical docs often use
README.mdanddocs/**. - User docs should use a dedicated namespace such as
docs/user/**.
The writable scope is the main safety boundary. Keep it explicit.
The runner needs:
- A GitHub credential that can read the target repo, create branches, write configured docs files, and open pull requests.
OPENAI_API_KEYor the equivalent model-provider credential.
Use repository or organization secrets in CI. Do not commit credentials into runner config.
Start from examples/homeboy-runner-config.example.json and change these fields:
bundle_path_in_repo: selected bundle path.agent_slug: selected bundle agent slug.pipeline_slugandflow_slug: selected bundle pipeline and flow.target_repo: GitHubOWNER/REPOfor the repository being documented.allowed_repos: usually the same singleOWNER/REPO.tool_recorders[].forced_parameters.allowed_file_paths: exact docs path scope the agent may write.bench_env: maps CI secrets into the runner environment.
For an initial technical docs pass, use:
{
"bundle_path_in_repo": "bundles/technical-docs-agent",
"agent_slug": "technical-docs-agent",
"pipeline_slug": "technical-docs-pipeline",
"flow_slug": "technical-docs-bootstrap-flow"
}For ongoing technical docs maintenance, use:
{
"bundle_path_in_repo": "bundles/technical-docs-agent",
"agent_slug": "technical-docs-agent",
"pipeline_slug": "technical-docs-pipeline",
"flow_slug": "technical-docs-maintenance-flow"
}For an initial user docs pass, use:
{
"bundle_path_in_repo": "bundles/user-docs-agent",
"agent_slug": "user-docs-agent",
"pipeline_slug": "user-docs-pipeline",
"flow_slug": "user-docs-bootstrap-flow"
}For ongoing user docs maintenance, use:
{
"bundle_path_in_repo": "bundles/user-docs-agent",
"agent_slug": "user-docs-agent",
"pipeline_slug": "user-docs-pipeline",
"flow_slug": "user-docs-maintenance-flow"
}Consumers should pass the generic runner a config equivalent to examples/homeboy-runner-config.example.json.
Important fields:
bundle_repo:https://github.com/Automattic/docs-agent.gitbundle_ref: a branch, tag, or SHA from this repobundle_path_in_repo: selected bundle pathagent_slug: selected bundle agent slugpipeline_slugandflow_slug: selected by the consuming repotarget_repoandallowed_repos: GitHub repository scopesuccess_requires_pr:falsefor maintenance, usuallytruefor bootstrap when the consumer expects a first draft PRtool_recorders[].forced_parameters.allowed_file_paths: hard writable path scope
The runner should treat both outcomes as successful when bootstrap PRs are not required:
pr_opened: docs changes were needed and a pull request was opened.no_changes: docs are already aligned and no pull request was needed.
Docs Agent opens a documentation PR only when it changes files. Review it like any other generated change:
- Check that the docs match current behavior.
- Confirm the agent stayed inside the intended writable paths.
- Confirm the PR scope is one coherent docs update.
- Confirm the chosen audience is correct for every page.
- Edit, close, or merge based on normal repository review standards.
php tests/validate-docs-agent-bundle.php
php tests/repair-docs-links-smoke.phpCI validates both bundles with tests/docs-agent.validate-bundle-spec.json.