PR-Description Skill
MCP server that generates structured pull request descriptions from Jira tickets and git diffs, with secret scanning, clarification questions, and optional publishing via GitHub CLI.
README
PR-Description MCP Skill
An MCP server that generates structured PR descriptions from Jira tickets and git diffs.
Prerequisites
- Node.js ≥ 18 — nodejs.org
- Git
- GitHub CLI (
gh) — cli.github.com (required forpublish_pr) - AI Tool — at least one of: Augment, Cursor, Claude Desktop, VS Code (Copilot), or Windsurf
Quick Install
curl -fsSL https://raw.githubusercontent.com/edmoura/pr-description-skill/main/scripts/install.sh | bash
This will clone the repo, install dependencies, build, run the setup wizard, and auto-register the MCP server with every detected AI tool — all idempotently.
Supported AI tools (auto-detected)
| Tool | Config location | Merge behavior |
|---|---|---|
| Augment | ~/.augment/mcp/pr-description.json + ~/.augment/skills/ |
Standalone file (overwritten) |
| Cursor | ~/.cursor/mcp.json |
Merged into mcpServers |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
Merged into mcpServers |
| VS Code | ~/Library/Application Support/Code/User/mcp.json |
Merged into servers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
Merged into mcpServers |
The installer checks whether each tool is installed (config dir exists or
command is on PATH). Detected tools get the config entry; others are skipped.
Existing servers in the same config file are preserved — only the
pr-description entry is added or updated.
Manual Install
git clone https://github.com/edmoura/pr-description-skill.git ~/.pr-description-skill
cd ~/.pr-description-skill
npm install # installs deps + builds (via postinstall)
npm run setup # interactive credential wizard
Then run the installer to register MCP with all detected tools:
bash scripts/install.sh
Or register manually with Augment by creating ~/.augment/mcp/pr-description.json:
{
"name": "pr-description",
"command": "node",
"args": ["<path-to-repo>/dist/src/index.js"],
"env": {}
}
And copy the skill prompt:
mkdir -p ~/.augment/skills/pr-description
cp .augment/skills/pr-description/SKILL.md ~/.augment/skills/pr-description/SKILL.md
Configuration
All configuration is stored in a global ~/.pr-description-skill/.env (owner-read-only), so credentials configured once apply in every project you open. Run npm run setup from anywhere to reconfigure at any time. A project-local ./.env (if present) is layered on top and can override the global values for that repo.
| Variable | Required | Description |
|---|---|---|
JIRA_BASE_URL |
Yes | Jira instance URL (e.g. https://yourcompany.atlassian.net) |
JIRA_EMAIL |
Yes | Your Atlassian login email |
JIRA_API_TOKEN |
Yes | API token from Atlassian |
JIRA_AC_FIELD_ID |
No | Custom field ID for Acceptance Criteria (default: customfield_10222) |
JIRA_INTEGRATION_DISABLED |
No | Set to true to skip Jira (paste ACs manually) |
See .env.example for a documented template.
Usage
In your IDE or Auggie CLI, type /pr-description on any feature branch. The skill will:
- Security scan — check the diff for accidentally committed secrets
- Ask for Jira ticket — fetch title, description, and acceptance criteria
- Ask clarifying questions — breaking changes, dates, feature flags, etc.
- Generate the PR description — structured Markdown following the team template
- Publish — create or update the PR via
gh(with your approval)
Updating / Self-Update
Re-run the installer — it detects the existing clone and does a git pull + rebuild:
bash ~/.pr-description-skill/scripts/install.sh
Or with the explicit --update flag:
bash ~/.pr-description-skill/scripts/install.sh --update
Troubleshooting
General
| Issue | Fix |
|---|---|
fetch_jira_ticket returns 401 |
Verify JIRA_EMAIL and JIRA_API_TOKEN in ~/.pr-description-skill/.env, or re-run npm run setup |
| Acceptance Criteria always empty | Your Jira instance may use a different custom field. Find the ID (see below) and set JIRA_AC_FIELD_ID via npm run setup |
publish_pr fails |
Ensure gh is installed and authenticated (gh auth login) |
| MCP server not found | Check ~/.augment/mcp/pr-description.json points to the correct dist/src/index.js path |
postinstall loop |
Run npm install --ignore-scripts then npm run build separately |
Permission denied writing .env |
Run chmod u+w ~/.pr-description-skill/.env and retry |
MCP Host-Specific Issues
| Host | Symptom | Fix |
|---|---|---|
| Augment | "Tool not found" after install | Restart Augment or reload the window. Verify ~/.augment/mcp/pr-description.json exists. |
| Cursor | Server fails to connect | Check ~/.cursor/mcp.json has a valid mcpServers.pr-description entry. Restart Cursor. |
| VS Code | Tools not appearing | VS Code uses servers (not mcpServers). Check ~/Library/Application Support/Code/User/mcp.json. Reload window (Cmd+Shift+P → "Reload Window"). |
| Claude Desktop | Server not listed | Fully quit and relaunch Claude Desktop. Check ~/Library/Application Support/Claude/claude_desktop_config.json. |
| Windsurf | Connection timeout | Verify ~/.codeium/windsurf/mcp_config.json has the correct node path. Restart Windsurf. |
| All hosts | Server crashes on startup | Check the debug log: cat ~/.pr-description-skill/debug.log. Ensure Node.js ≥ 18 is on PATH. |
| All hosts | "ENOENT" or "spawn node" errors | The node binary might not be on the host's PATH. Use the full path in the config: replace "command": "node" with "command": "/usr/local/bin/node" (or wherever which node points). |
Debug Log
All tool invocations are logged to ~/.pr-description-skill/debug.log. Share this file with the support team when reporting issues. The log auto-rotates at 5 MB.
Finding your Acceptance Criteria field ID
Acceptance Criteria is a Jira custom field, and its ID varies per instance. To find yours, open a ticket that has AC filled in and query the API:
curl -s -u "you@example.com:$JIRA_API_TOKEN" \
"$JIRA_BASE_URL/rest/api/3/issue/PROJ-123?expand=names" \
| node -e 'const d=JSON.parse(require("fs").readFileSync(0));for(const[k,v]of Object.entries(d.names)){if(/accept|criteria|expected result/i.test(v))console.log(k,"=>",v)}'
Set the resulting customfield_XXXXX via npm run setup. If none is
configured, the tool tries a fallback chain (Acceptance Criteria → Expected
Results → Definition of Done); see src/config.ts.
Notes on formatting
- Jira descriptions and AC are stored in ADF (Atlassian Document Format) and converted to plain text/Markdown. Rich elements (tables, links, inline emphasis) may be simplified or dropped.
get_sanitized_diffperforms best-effort secret redaction (AWS/GitHub/ Slack/Stripe tokens, private keys,password=/token=assignments) before returning the diff. This is defense-in-depth — always review diffs manually before publishing.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。