The Complete Production SOP: How to Deploy and Run Google Release Please Automated Release PRs in Autonomous AI Agents
Step-by-step SOP to install and run Google Release Please Automated Release PRs in Codex, Claude Code, and Cursor. Includes verified prompts and troubleshooting.
Technical Overview & Architectural Context
Autonomous coding agents frequently stumble when provisioning semantic release infrastructure. When asked to configure changelog generation and automated release branching, agents typically hallucinate custom shell scripts, invent unsupported keys in `release-please-config.json`, or overwrite `.release-please-manifest.json` versions incorrectly. These misconfigurations result in stalled GitHub Action runs, broken Conventional Commit parses, and detached tag states in multi-package monorepos. The `release-please-automated-changelog` skill constrains agent execution within Google's formal Release Please specification. By explicitly enforcing manifest version mapping, exact schema formatting, and pinned Action declarations (`googleapis/release-please-action@v4`), the agent acts deterministically without invoking unnecessary shell scripts or needing network access during the local workspace configuration phase.
Prerequisites & Environment Requirements
Verified Search Intents & Long-Tail Queries Solved
This operational tutorial is engineered to provide deterministic solutions for these developer search queries:
Step-by-Step Execution Playbook
Local Environment Setup & SKILL.md Mounting
Mount the release-please-automated-changelog skill into the agent's active configuration path.
Autonomous runtimes read agent capabilities via the `.agents/skills` standard. Mounting the verified `SKILL.md` establishes workspace write constraints (`fs_write: workspace`) while preventing the model from hallucinating dangerous shell commands (`shell_exec: false`).
mkdir -p ~/.agents/skills/release-please-automated-changelog && cat << 'EOF' > ~/.agents/skills/release-please-automated-changelog/SKILL.md
---
name: "release-please-automated-changelog"
description: "Automate changelog generation and release pull requests using Google's Release Please."
metadata:
author: "Google"
version: "1.0.0"
runtime_compatibility:
- "codex"
- "claude-code"
- "cursor"
- "windsurf"
triggers:
- "configure release please action"
- "automated release pr google"
- "release-please manifest"
permissions:
fs_read: true
fs_write: "workspace"
shell_exec: false
net_access: false
---
EOF---
name: "release-please-automated-changelog"
description: "Automate changelog generation and release pull requests using Google's Release Please."
metadata:
author: "Google"
version: "1.0.0"
runtime_compatibility:
- "codex"
- "claude-code"
- "cursor"
- "windsurf"
triggers:
- "configure release please action"
- "automated release pr google"
- "release-please manifest"
permissions:
fs_read: true
fs_write: "workspace"
shell_exec: false
net_access: false
---Setting `shell_exec: false` preserves tokens by forcing the agent to author `.json` and `.yml` files directly via file-system writes instead of invoking verbose subshells.
In Cursor and Windsurf, ensure the skill path is placed in your project root at `.cursor/skills` or `.windsurf/skills` if user-global skill loading is disabled in IDE settings.
Config & Manifest Initialization
Instruct the agent to generate standard Release Please configuration and manifest files.
Release Please requires `release-please-config.json` defining package structure and `.release-please-manifest.json` tracking current release versions. The agent must pair these files accurately based on project type (e.g., node, python, or simple).
test -f release-please-config.json || echo '{}' > release-please-config.json{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"packages": {
".": {
"release-type": "node",
"package-name": "my-app",
"changelog-path": "CHANGELOG.md"
}
}
}Always provide the `$schema` URL in JSON configs; modern LLM context parsers validate syntax against the schema automatically, eliminating invalid key hallucinations.
Do not leave `.release-please-manifest.json` missing package paths declared in `release-please-config.json`, or the GitHub Action will throw an unmatched package error.
GitHub Actions Workflow Provisioning
Inject the official Release Please Action workflow into `.github/workflows/release.yml`.
Release Please requires a workflow triggered on commits to the target branch. The agent generates the workflow with necessary permissions (`contents: write`, `pull-requests: write`) so the action can create branches and PRs automatically.
name: Release Please
on:
push:
branches:
- main
permissions:
contents: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
with:
config-file: release-please-config.json
manifest-file: .release-please-manifest.jsonPin to `@v4` explicitly. Older `@v3` actions fail when parsing modern manifest configurations and require legacy input params.
The default repository `GITHUB_TOKEN` must have 'Read and write permissions' enabled under Repository Settings > Actions > General > Workflow permissions.
Verification, Linting & Output Quality Gate
Verify JSON syntax and manifest key alignment before committing changes.
Before completing the session, the skill executes a validation checklist: checking that `.release-please-manifest.json` versions match `package.json` (or language equivalent) and validating YAML syntax.
node -e 'JSON.parse(require("fs").readFileSync("release-please-config.json")); JSON.parse(require("fs").readFileSync(".release-please-manifest.json")); console.log("Manifests valid!")'Run `git diff --staged` before prompting the agent to mark the task complete to ensure no extra root configs were altered.
If the repository uses tag prefixes (e.g., `v1.0.0`), ensure `release-type` or `include-component-in-tag` matches existing repository tag patterns.
Real-World Scenario: Automating Monorepo SemVer Releases with Google Release Please
“Set up automated release PRs using Google Release Please for our Node.js workspace. We need release-please manifest configuration tracking the root package at version 1.2.0 and the GitHub Action workflow on the main branch.”
Runtime Troubleshooting & Failure Modes
Root Cause: The default GitHub GITHUB_TOKEN has read-only permissions by default, preventing Release Please from opening the automated release pull request.
# Add permissions block explicitly inside .github/workflows/release.yml:
permissions:
contents: write
pull-requests: writeRoot Cause: A key disparity between packages declared in the config and entries recorded in the manifest file.
# Ensure .release-please-manifest.json includes every path defined in config:
{
".": "1.0.0"
}Frequently Asked Questions (Google Release Please Automated Release PRs SOP)
Q:Can I use Google Release Please Automated Release PRs across Codex, Claude Code, and Cursor simultaneously?
Yes. The skill conforms to the universal SKILL.md specification supported across Codex, Claude Code, Cursor, and Windsurf, operating on shared JSON/YAML configurations.
Q:How does Google Release Please Automated Release PRs prevent context window overflow during long agent sessions?
By constraining instructions to declarative file creation (`release-please-config.json`, `.release-please-manifest.json`, and workflow YAML), preventing unnecessary tool invocation and context bloat.
Q:Does this skill require escalated root or container permissions?
No. The skill possesses a security score of 98/100, requires zero network calls during local setup, and enforces `fs_write: workspace` strictly within your project directory.
Ready to equip your autonomous agent with Google Release Please Automated Release PRs?
Copy the complete audited SKILL.md specification or download the 1-click zip bundle directly from our verified registry.