with one click
frappe-git-publish
// After Frappe codegen, commit locally with frappe_tool then publish to GitHub using GitHub MCP or git remote.
// After Frappe codegen, commit locally with frappe_tool then publish to GitHub using GitHub MCP or git remote.
| name | frappe-git-publish |
| description | After Frappe codegen, commit locally with frappe_tool then publish to GitHub using GitHub MCP or git remote. |
frappe_tool with git_commit_all has produced a successful commit (or nothing_to_commit if the tree was already clean).frappe_tool with action=git_commit_all, correct app_name (snake_case bench app id), and a meaningful commit_message (e.g. feat: add leave application DocType).nothing_to_commit: true, you may skip push only if there truly were no file changes since the last commit; otherwise fix files and commit again.frappe_tool with action=git_status to confirm the working tree is clean.Local git identity for non-interactive commits uses FRAPPEFORGE_GIT_AUTHOR_NAME and FRAPPEFORGE_GIT_AUTHOR_EMAIL when set; otherwise sensible defaults are applied per repository via git config (not global).
Do not implement a custom GitHub MCP server. Use the hosted GitHub MCP over HTTP (same surface as GitHub Copilot’s MCP gateway):
https://api.githubcopilot.com/mcp/hermes/config.yaml.example under mcp_servers.github (url + Authorization: Bearer … using GITHUB_TOKEN).HERMES_MCP_github=https://api.githubcopilot.com/mcp/ and GITHUB_TOKEN; FrappeForge configure_model.py merges the URL and injects the Authorization header for the github server name.If your editor or platform uses a JSON wrapper with servers.github.type: http and the same URL, that is equivalent to Hermes’ mcp_servers.github.url HTTP transport.
Typical patterns:
terminal in the app root (poc_sandbox/apps/<app>/) with git remote add, git push using an HTTPS remote URL that embeds the PAT only inside the container session — prefer MCP file APIs when the server supports them.terminal), git push -u origin <branch>, then GitHub MCP to open a pull request against the default branch.If GitHub MCP is not enabled, tell the user to add the github HTTP block to ~/.hermes/config.yaml (or set HERMES_MCP_github + GITHUB_TOKEN), restart Hermes, and re-run publish steps.
Optional fallback: local stdio @modelcontextprotocol/server-github remains documented in hermes/config.yaml.example as a commented block when HTTP is unsuitable.
poc_sandbox/apps/<app_name>/ (outer bench app directory containing setup.py and the inner Python package).GITHUB_TOKEN or embed it in skills, commits, or logs.repo, pull_requests as needed).[HINT] Download the complete skill directory including SKILL.md and all related files