Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new “documentation updater” CLI utility to generate a documentation update plan (and optionally Codex-ready prompt snippets) from a canonical change message, while aligning MCP setup docs to always pull the latest Docker image.
Changes:
- Add
documentation-updater/documentation_updater.pyto generate a markdown report of local + external documentation update targets, with optional OpenAI/Codex prompt generation. - Add documentation for the tool under
documentation-updater/README.md. - Update MCP client configuration docs to include
docker run --pull=alwaysand refresh install instructions formatting.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| documentation-updater/documentation_updater.py | New CLI script that writes a documentation update plan and optionally generates prompt snippets via OpenAI. |
| documentation-updater/README.md | Usage + requirements for the new documentation updater tool. |
| agent-integrations/agent-install-instructions.md | Refresh Docker command/config examples (including --pull=always) and clarify optional SSH mounts. |
| README.md | Add --pull=always to multiple MCP client configuration examples. |
| .gitignore | Ignore documentation updater output directories (reports/workdir). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| lines.append("## Canonical Input") | ||
| lines.append("") | ||
| lines.append("- Source: `-m/--message` argument") | ||
| lines.append(f"- Change message: {change_message}") | ||
| lines.append("") |
There was a problem hiding this comment.
change_message is interpolated directly into a single markdown list item (- Change message: ...). If the message contains newlines or markdown fence characters, it will break the report structure (and could accidentally inject additional sections). Consider rendering the message as a fenced code block or blockquote and normalizing/escaping newlines before writing it.
| def detect_base_url() -> Optional[str]: | ||
| for env_name in ( | ||
| "OPENAI_API_PROXY_URL", | ||
| "OPENAI_API_PROXY", | ||
| "DOC_UPDATER_OPENAI_BASE_URL", | ||
| "OPENAI_BASE_URL", | ||
| "OPENAI_API_BASE", | ||
| ): | ||
| value = __import__("os").getenv(env_name) | ||
| if value: | ||
| value = value.rstrip("/") | ||
| if value.endswith("/models"): | ||
| value = value[: -len("/models")] | ||
| return value |
There was a problem hiding this comment.
detect_base_url() uses __import__("os").getenv(...) even though os is already imported elsewhere. This is harder to read and makes static analysis/linting more difficult; prefer a normal import os at module scope (or inside the function) and call os.getenv(...).
| Optional Codex prompt generation requires: | ||
|
|
||
| - `OPENAI_API_KEY` | ||
| - OpenAI base URL env `OPENAI_API_PROXY_URL` |
There was a problem hiding this comment.
The README lists only OPENAI_API_PROXY_URL as the base URL env var, but detect_base_url() also accepts OPENAI_API_PROXY, DOC_UPDATER_OPENAI_BASE_URL, OPENAI_BASE_URL, and OPENAI_API_BASE. Please update the documented requirements so users know all supported configuration options (or narrow the code to the single documented variable).
| - OpenAI base URL env `OPENAI_API_PROXY_URL` | |
| - an OpenAI base URL environment variable, using any supported name: | |
| - `OPENAI_API_PROXY_URL` | |
| - `OPENAI_API_PROXY` | |
| - `DOC_UPDATER_OPENAI_BASE_URL` | |
| - `OPENAI_BASE_URL` | |
| - `OPENAI_API_BASE` |
| "-v", | ||
| "/path/to/your/workspace:/workspace", | ||
| "-v", | ||
| "/path/to/your/ssh/private_key:/run/keys/ssh-key.pem:ro", | ||
| "-v", |
There was a problem hiding this comment.
The text says the SSH-related -v mounts are optional and only needed for Arm Performix, but the default JSON/TOML snippets include those mounts. This makes copy/paste setups for non-Performix users noisier and increases the chance of path errors. Consider providing a minimal default snippet (workspace mount only) and a clearly-labeled optional block for the Performix SSH mounts.
No description provided.