@arii/boomtick-mcp 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +6 -0
- package/.mcp/schemas/agent.search_ddgs.json +1 -0
- package/.mcp/schemas/boomtick.health.json +1 -0
- package/.mcp/schemas/github.checkout_branch.json +1 -0
- package/.mcp/schemas/github.comment_triage_summary.json +1 -0
- package/.mcp/schemas/github.create_issue.json +1 -0
- package/.mcp/schemas/github.create_pull_request.json +1 -0
- package/.mcp/schemas/github.get_merge_conflict_files.json +1 -0
- package/.mcp/schemas/github.get_pr.json +1 -0
- package/.mcp/schemas/github.get_pr_diff.json +1 -0
- package/.mcp/schemas/github.issue_comment.json +1 -0
- package/.mcp/schemas/github.issue_update.json +1 -0
- package/.mcp/schemas/github.issue_view.json +1 -0
- package/.mcp/schemas/github.open_replacement_pr.json +1 -0
- package/.mcp/schemas/github.search_open_prs.json +1 -0
- package/.mcp/schemas/jules.cancel_session.json +1 -0
- package/.mcp/schemas/jules.create_session.json +1 -0
- package/.mcp/schemas/jules.get_messages.json +1 -0
- package/.mcp/schemas/jules.get_pr.json +1 -0
- package/.mcp/schemas/jules.get_session.json +1 -0
- package/.mcp/schemas/jules.list_sessions.json +1 -0
- package/.mcp/schemas/jules.send_message.json +1 -0
- package/.mcp/schemas/jules.trigger_feedback.json +1 -0
- package/.mcp/schemas/repo.commit_patch.json +1 -0
- package/.mcp/schemas/repo.create_branch.json +1 -0
- package/.mcp/schemas/repo.create_repair_branch.json +1 -0
- package/.mcp/schemas/repo.get_changed_files.json +1 -0
- package/.mcp/schemas/repo.get_command_schema.json +1 -0
- package/.mcp/schemas/repo.get_package_scripts.json +1 -0
- package/.mcp/schemas/repo.get_route_map.json +1 -0
- package/.mcp/schemas/repo.logs.json +1 -0
- package/.mcp/schemas/repo.read_agent_context.json +1 -0
- package/.mcp/schemas/repo.read_ci_logs.json +1 -0
- package/.mcp/schemas/repo.run_lighthouse.json +1 -0
- package/.mcp/schemas/repo.run_playwright.json +1 -0
- package/.mcp/schemas/repo.run_tests.json +1 -0
- package/CHANGELOG.md +50 -0
- package/README.md +108 -0
- package/actions/ai-review/action.yml +15 -0
- package/actions/audit/action.yml +37 -0
- package/actions/ci-validate/action.yml +9 -0
- package/actions/impact-analysis/action.yml +385 -0
- package/actions/lint-typecheck/action.yml +19 -0
- package/actions/run-project-gate/action.yml +163 -0
- package/actions/setup/action.yml +15 -0
- package/actions/setup-workspace/action.yml +179 -0
- package/actions/test-build/action.yml +71 -0
- package/actions/update-pr-comment/action.yml +101 -0
- package/dist/config.js +110 -0
- package/dist/evals/run-evals.js +38 -0
- package/dist/index.js +10 -0
- package/dist/lib/error_utils.js +8 -0
- package/dist/lib/git.js +33 -0
- package/dist/lib/result.js +21 -0
- package/dist/lib/shell.js +91 -0
- package/dist/lib/shell.test.js +10 -0
- package/dist/lib/td-cli.js +27 -0
- package/dist/lib/test-utils.js +20 -0
- package/dist/mcp/definitions.js +242 -0
- package/dist/mcp/server.js +317 -0
- package/dist/mcp/tools.js +18 -0
- package/dist/tools/contract.js +2069 -0
- package/dist/tools/ddgs.search.js +50 -0
- package/dist/tools/ddgs.search.test.js +67 -0
- package/dist/tools/ddgs_search.py +23 -0
- package/dist/tools/github.checkout_branch.js +20 -0
- package/dist/tools/github.comment_triage_summary.js +25 -0
- package/dist/tools/github.create_issue.js +28 -0
- package/dist/tools/github.create_issue.test.js +54 -0
- package/dist/tools/github.create_pull_request.js +44 -0
- package/dist/tools/github.get_merge_conflict_files.js +26 -0
- package/dist/tools/github.get_pr.js +18 -0
- package/dist/tools/github.get_pr_diff.js +24 -0
- package/dist/tools/github.issue_comment.js +24 -0
- package/dist/tools/github.issue_update.js +29 -0
- package/dist/tools/github.issue_view.js +28 -0
- package/dist/tools/github.open_replacement_pr.js +41 -0
- package/dist/tools/github.search_open_prs.js +31 -0
- package/dist/tools/github.search_open_prs.test.js +51 -0
- package/dist/tools/jules/cancel-session.js +20 -0
- package/dist/tools/jules/create-session.js +20 -0
- package/dist/tools/jules/create-session.test.js +99 -0
- package/dist/tools/jules/get-messages.js +19 -0
- package/dist/tools/jules/get-messages.test.js +45 -0
- package/dist/tools/jules/get-pr.js +14 -0
- package/dist/tools/jules/get-pr.test.js +37 -0
- package/dist/tools/jules/get-session.js +10 -0
- package/dist/tools/jules/list-sessions.js +43 -0
- package/dist/tools/jules/send-message.js +22 -0
- package/dist/tools/jules/send-message.test.js +56 -0
- package/dist/tools/jules/shared.js +26 -0
- package/dist/tools/jules/trigger-feedback.js +16 -0
- package/dist/tools/jules/trigger-feedback.test.js +42 -0
- package/dist/tools/repo.commit_patch.js +33 -0
- package/dist/tools/repo.create_branch.js +21 -0
- package/dist/tools/repo.create_branch.test.js +42 -0
- package/dist/tools/repo.create_repair_branch.js +38 -0
- package/dist/tools/repo.get_changed_files.js +21 -0
- package/dist/tools/repo.get_command_schema.js +27 -0
- package/dist/tools/repo.get_package_scripts.js +35 -0
- package/dist/tools/repo.get_package_scripts.test.js +39 -0
- package/dist/tools/repo.get_route_map.js +37 -0
- package/dist/tools/repo.logs.js +16 -0
- package/dist/tools/repo.read_agent_context.js +20 -0
- package/dist/tools/repo.read_ci_logs.js +18 -0
- package/dist/tools/repo.run_lighthouse.js +37 -0
- package/dist/tools/repo.run_playwright.js +29 -0
- package/dist/tools/repo.run_tests.js +43 -0
- package/dist/tools/types.js +1 -0
- package/docs/testing.md +73 -0
- package/package.json +45 -0
- package/scripts/create_instructions.sh +42 -0
- package/scripts/export-mcp-schema.ts +7 -0
- package/scripts/sync-contracts.ts +74 -0
- package/scripts/sync-mcp-schemas.ts +97 -0
- package/src/agents/conflict-scout.prompt.md +20 -0
- package/src/agents/pr-consolidation.prompt.md +32 -0
- package/src/agents/pr-writer.prompt.md +13 -0
- package/src/agents/repair-agent.prompt.md +18 -0
- package/src/agents/repo-context.prompt.md +20 -0
- package/src/agents/verifier-agent.prompt.md +22 -0
- package/src/config.ts +113 -0
- package/src/evals/fixtures/merge-conflict-simple/README.md +0 -0
- package/src/evals/run-evals.ts +40 -0
- package/src/index.ts +12 -0
- package/src/lib/error_utils.ts +8 -0
- package/src/lib/git.ts +41 -0
- package/src/lib/result.ts +28 -0
- package/src/lib/shell.test.ts +11 -0
- package/src/lib/shell.ts +118 -0
- package/src/lib/td-cli.ts +38 -0
- package/src/lib/test-utils.ts +23 -0
- package/src/mcp/definitions.ts +278 -0
- package/src/mcp/server.ts +359 -0
- package/src/mcp/tools.ts +20 -0
- package/src/tools/contract.ts +2245 -0
- package/src/tools/ddgs.search.test.ts +92 -0
- package/src/tools/ddgs.search.ts +58 -0
- package/src/tools/ddgs_search.py +23 -0
- package/src/tools/github.checkout_branch.ts +25 -0
- package/src/tools/github.comment_triage_summary.ts +30 -0
- package/src/tools/github.create_issue.test.ts +63 -0
- package/src/tools/github.create_issue.ts +34 -0
- package/src/tools/github.create_pull_request.ts +50 -0
- package/src/tools/github.get_merge_conflict_files.ts +31 -0
- package/src/tools/github.get_pr.ts +24 -0
- package/src/tools/github.get_pr_diff.ts +29 -0
- package/src/tools/github.issue_comment.ts +31 -0
- package/src/tools/github.issue_update.ts +31 -0
- package/src/tools/github.issue_view.ts +35 -0
- package/src/tools/github.open_replacement_pr.ts +48 -0
- package/src/tools/github.search_open_prs.test.ts +60 -0
- package/src/tools/github.search_open_prs.ts +40 -0
- package/src/tools/jules/cancel-session.ts +26 -0
- package/src/tools/jules/create-session.test.ts +114 -0
- package/src/tools/jules/create-session.ts +24 -0
- package/src/tools/jules/get-messages.test.ts +52 -0
- package/src/tools/jules/get-messages.ts +24 -0
- package/src/tools/jules/get-pr.test.ts +43 -0
- package/src/tools/jules/get-pr.ts +17 -0
- package/src/tools/jules/get-session.ts +12 -0
- package/src/tools/jules/list-sessions.ts +50 -0
- package/src/tools/jules/send-message.test.ts +66 -0
- package/src/tools/jules/send-message.ts +27 -0
- package/src/tools/jules/shared.ts +28 -0
- package/src/tools/jules/trigger-feedback.test.ts +50 -0
- package/src/tools/jules/trigger-feedback.ts +21 -0
- package/src/tools/repo.commit_patch.ts +41 -0
- package/src/tools/repo.create_branch.test.ts +55 -0
- package/src/tools/repo.create_branch.ts +29 -0
- package/src/tools/repo.create_repair_branch.ts +47 -0
- package/src/tools/repo.get_changed_files.ts +26 -0
- package/src/tools/repo.get_command_schema.ts +30 -0
- package/src/tools/repo.get_package_scripts.test.ts +51 -0
- package/src/tools/repo.get_package_scripts.ts +36 -0
- package/src/tools/repo.get_route_map.ts +41 -0
- package/src/tools/repo.logs.ts +21 -0
- package/src/tools/repo.read_agent_context.ts +22 -0
- package/src/tools/repo.read_ci_logs.ts +21 -0
- package/src/tools/repo.run_lighthouse.ts +40 -0
- package/src/tools/repo.run_playwright.ts +35 -0
- package/src/tools/repo.run_tests.ts +47 -0
- package/src/tools/types.ts +8 -0
- package/start_browsermcp.sh +14 -0
- package/start_github_mcp.sh +6 -0
- package/tsconfig.json +15 -0
- package/vitest.config.ts +9 -0
package/.env.example
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"agent.search_ddgs","description":"Search the web using DuckDuckGo (via ddgs python library).","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"boomtick.health","description":"Check the health and configuration of the MCP server.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.checkout_branch","description":"Checkout a specific branch in the repository or worktree.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.comment_triage_summary","description":"Comment on the original PR with a diagnosis and replacement link.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.create_issue","description":"Create a new GitHub issue.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.create_pull_request","description":"Creates a pull request on GitHub using the MCP server's integrated credentials. Bypasses terminal CLI constraints.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.get_merge_conflict_files","description":"Detect files that conflict when a PR is merged with the base branch.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.get_pr","description":"Get details of a GitHub PR including title, state, and URLs.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.get_pr_diff","description":"Get the diff and changed files for a pull request.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.issue_comment","description":"Add a new comment to a GitHub issue.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.issue_update","description":"Update a GitHub issue's body, labels, and/or state.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.issue_view","description":"View details of a GitHub issue including title, body, and state.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.open_replacement_pr","description":"Open a new PR that replaces or repairs the original PR.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"github.search_open_prs","description":"Search for open pull requests in the repository.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.cancel_session","description":"Cancel an ongoing Jules session.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.create_session","description":"Create a Jules session that performs work externally and may generate a GitHub pull request.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.get_messages","description":"Get the message history of a Jules session.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.get_pr","description":"Get the generated pull request url associated with an active Jules agent session.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.get_session","description":"Get the status and details of a Jules session.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.list_sessions","description":"List all Jules sessions.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.send_message","description":"Send a message to an active Jules session.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"jules.trigger_feedback","description":"Automatically collect CI status/logs for the PR associated with a Jules session and send them back as feedback.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.commit_patch","description":"Commit verified repair changes in a worktree.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.create_branch","description":"Creates a new clean git branch from a target base branch.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.create_repair_branch","description":"Creates a fresh worktree and a new repair branch for an existing PR. This isolates the repair work from the main codebase.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.get_changed_files","description":"Get the list of changed files between two refs.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.get_command_schema","description":"Retrieve a lightweight, targeted schema for a specific td-cli subcommand. Use this instead of reading the entire cli-schema.json to save tokens.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.get_package_scripts","description":"Get the scripts defined in package.json.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.get_route_map","description":"Get the mapping of routes to content files.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.logs","description":"Stream or grep combined CI logs for all jobs in a pull request.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.read_agent_context","description":"Read the full repository index including file tree, CLI schema, and MCP tools.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.read_ci_logs","description":"Read CI logs for a given pull request.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.run_lighthouse","description":"Run Lighthouse CI audits.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.run_playwright","description":"Run Playwright E2E tests.","parameters":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"repo.run_tests","description":"Run repository tests and checks.","parameters":null}
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.3.3](https://github.com/arii/boomtick/compare/mcp-v0.3.2...mcp-v0.3.3) (2026-07-20)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* resolve ERR_MODULE_NOT_FOUND when running check-visual-changes.ts ([#259](https://github.com/arii/boomtick/issues/259)) ([54f4a2f](https://github.com/arii/boomtick/commit/54f4a2f842517d4de31cf201efbeb6fdf5a57c94))
|
|
9
|
+
|
|
10
|
+
## [0.3.2](https://github.com/arii/boomtick/compare/mcp-v0.3.1...mcp-v0.3.2) (2026-07-17)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* pass jules_api_key env to impact analysis steps ([#151](https://github.com/arii/boomtick/issues/151)) ([a4744ee](https://github.com/arii/boomtick/commit/a4744eeed2d665eb87053f828551a1136259b0fc))
|
|
16
|
+
|
|
17
|
+
## [0.3.1](https://github.com/arii/boomtick/compare/mcp-v0.3.0...mcp-v0.3.1) (2026-07-17)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* resolve workflow audit failures and consolidate automation ([#110](https://github.com/arii/boomtick/issues/110)) ([aa3682b](https://github.com/arii/boomtick/commit/aa3682b966cc3de6639f0a895bfafffb89106fcb))
|
|
23
|
+
|
|
24
|
+
## [0.3.0](https://github.com/arii/boomtick/compare/mcp-v0.2.1...mcp-v0.3.0) (2026-07-15)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
* **cli:** Add tool to fetch PR and review comments natively ([#3355](https://github.com/arii/boomtick/issues/3355)) ([7c98b80](https://github.com/arii/boomtick/commit/7c98b8097b51066abc2c97ab16582a451565b626))
|
|
30
|
+
* Consolidate CI setup logic into composite action ([#3073](https://github.com/arii/boomtick/issues/3073)) ([ac9012f](https://github.com/arii/boomtick/commit/ac9012f4ec377c29fada9f71d1091854394d96c0))
|
|
31
|
+
* consolidated package extraction for boomtick-pkg ([#3491](https://github.com/arii/boomtick/issues/3491)) ([8e33e34](https://github.com/arii/boomtick/commit/8e33e34e4ca2711d1468944c0f8294386bf26445))
|
|
32
|
+
* Handle missing node_modules gracefully in verify:schemas script ([#3438](https://github.com/arii/boomtick/issues/3438)) ([b9645a8](https://github.com/arii/boomtick/commit/b9645a8d9846dbafab2ca5a1c6951005ad862af1))
|
|
33
|
+
* **mcp:** add dedicated github.get_pr tool ([#3277](https://github.com/arii/boomtick/issues/3277)) ([a74dc79](https://github.com/arii/boomtick/commit/a74dc79e1d7d1a4ade89852c28a16ec5b834ea30))
|
|
34
|
+
* migrate release workflows to boomtick-pkg and setup symlinks wi… ([#3614](https://github.com/arii/boomtick/issues/3614)) ([0b31b7c](https://github.com/arii/boomtick/commit/0b31b7c7869beea22d47d5b0834eb3f99243a464))
|
|
35
|
+
* Unified Python Core Engine Consolidation ([#3166](https://github.com/arii/boomtick/issues/3166)) ([0dad8bb](https://github.com/arii/boomtick/commit/0dad8bbdf3e331e25a5b106c35d95ee38bf0c012))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Bug Fixes
|
|
39
|
+
|
|
40
|
+
* add state parameter to github.issue_update MCP schema ([#3205](https://github.com/arii/boomtick/issues/3205)) ([5642e83](https://github.com/arii/boomtick/commit/5642e833dcf66cdd309a489a4935f247fe9a5f1e))
|
|
41
|
+
* **ci:** handle missing AI logs gracefully in verify-metrics ([#3554](https://github.com/arii/boomtick/issues/3554)) ([5e0c346](https://github.com/arii/boomtick/commit/5e0c34659d6344ff7a79a86dc88d06bee8b96998))
|
|
42
|
+
* **ci:** handle missing AI logs gracefully in verify-metrics ([#3580](https://github.com/arii/boomtick/issues/3580)) ([b126289](https://github.com/arii/boomtick/commit/b126289e565c403a1a84ba5160b40223ea8ccce7))
|
|
43
|
+
* **ci:** pass --ignore-scripts to impact build main ([#53](https://github.com/arii/boomtick/issues/53)) ([7160e49](https://github.com/arii/boomtick/commit/7160e494992764d9d95f0dadd0c5c5d23f199428))
|
|
44
|
+
* **ci:** pass --ignore-scripts to impact build main ([#55](https://github.com/arii/boomtick/issues/55)) ([4a5d1d9](https://github.com/arii/boomtick/commit/4a5d1d989f21fd62627e28027624b1bb4982127b))
|
|
45
|
+
* detect-antipatterns.mjs path resolution and impact-analysis-utils eslint errors ([#52](https://github.com/arii/boomtick/issues/52)) ([797475e](https://github.com/arii/boomtick/commit/797475ef8b93c5d74627d329e7bf842852a374c8))
|
|
46
|
+
* **mcp:** use sessionId for jules tools to avoid PR ID confusion ([#3286](https://github.com/arii/boomtick/issues/3286)) ([0c4147b](https://github.com/arii/boomtick/commit/0c4147b8cdd98160f0422dcf73ec8b35164176bf))
|
|
47
|
+
* **mcp:** use z.input instead of z.infer for CreateBranchInputSchema ([#3094](https://github.com/arii/boomtick/issues/3094)) ([baeaf41](https://github.com/arii/boomtick/commit/baeaf41a0333b73dc597a72c876e87c4dd4a1ae3))
|
|
48
|
+
* path resolution and linting issues in impact analysis ([#49](https://github.com/arii/boomtick/issues/49)) ([2b23a39](https://github.com/arii/boomtick/commit/2b23a39848e4c012d7c94b633c0627cad85619f6))
|
|
49
|
+
* resolve ModuleNotFoundError in Jules session creation and isolate python env ([#3442](https://github.com/arii/boomtick/issues/3442)) ([6870392](https://github.com/arii/boomtick/commit/6870392b6a1f5784110d9a75a1e6b972cf297775))
|
|
50
|
+
* Resolve tester findings and update progress documentation ([#3191](https://github.com/arii/boomtick/issues/3191)) ([1cfea38](https://github.com/arii/boomtick/commit/1cfea3813129f9289122a12f80c543103a541f6a))
|
package/README.md
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Boomtick MCP: PR Rescue + Merge Conflict Agent
|
|
2
|
+
|
|
3
|
+
A Model Context Protocol (MCP) server designed to empower AI agents with structured access to GitHub Pull Requests, repository state, CI logs, and validation tools.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### 🛠 Tools
|
|
8
|
+
- **GitHub Ops**: Search PRs, get diffs, detect merge conflicts, open replacement PRs, and triage comments.
|
|
9
|
+
- **Repo Ops**: Inspect changed files, extract package scripts, map application routes, and read CI logs.
|
|
10
|
+
- **Validation**: Isolated repair branch creation, and running verification suites (Tests, Lighthouse, Playwright).
|
|
11
|
+
- **Jules Operations**: Create, monitor, and interact with macro-agent Jules sessions.
|
|
12
|
+
|
|
13
|
+
### 📄 Resources
|
|
14
|
+
- `repo://package-json`: Access root package manifest.
|
|
15
|
+
- `repo://routes`: Access application route-to-content mapping.
|
|
16
|
+
- `repo://design-tokens`: Access UI design tokens.
|
|
17
|
+
- `repo://diff/{prNumber}`: Access full PR diff text.
|
|
18
|
+
- `repo://ci/{prNumber}`: Access detailed CI check results and logs.
|
|
19
|
+
|
|
20
|
+
### 🧠 Prompts
|
|
21
|
+
- `prompt://conflict-scout`: Scout for PRs needing rescue.
|
|
22
|
+
- `prompt://pr-consolidation`: Guidelines for analyzing and proposing consolidation of overlapping PRs.
|
|
23
|
+
- `prompt://repo-context`: Gather context before repair.
|
|
24
|
+
- `prompt://repair-agent`: Apply minimal safe fixes.
|
|
25
|
+
- `prompt://verifier-agent`: Prove the repair works.
|
|
26
|
+
- `prompt://pr-writer`: Write professional replacement PR summaries.
|
|
27
|
+
|
|
28
|
+
### 📝 Scripts
|
|
29
|
+
- `scripts/create_instructions.sh`: Generates the `pr-consolidation.prompt.md` instructions file based on PR overlaps.
|
|
30
|
+
|
|
31
|
+
## Safety First
|
|
32
|
+
- **Isolated Worktrees**: All repair and merge operations happen in temporary git worktrees to prevent mutating your local working directory.
|
|
33
|
+
- **Safe Shell**: All commands are restricted via an allowlist with automatic token redaction and timeouts.
|
|
34
|
+
- **Write Guards**: Mutating operations (commits, branch creation, PR opening) require explicit `writeMode: true` or `pushMode: true` flags.
|
|
35
|
+
|
|
36
|
+
## Setup
|
|
37
|
+
|
|
38
|
+
### Prerequisites
|
|
39
|
+
- Node.js >= 22
|
|
40
|
+
- pnpm >= 10
|
|
41
|
+
- GitHub CLI (`gh`) authenticated and in your PATH.
|
|
42
|
+
|
|
43
|
+
### Installation
|
|
44
|
+
```bash
|
|
45
|
+
cd boomtick-mcp
|
|
46
|
+
pnpm install
|
|
47
|
+
pnpm build
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Installation via MCP Client (e.g. Claude Desktop)
|
|
51
|
+
Add the following to your MCP client configuration (e.g. `claude_desktop_config.json`):
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"mcpServers": {
|
|
55
|
+
"boomtick": {
|
|
56
|
+
"command": "node",
|
|
57
|
+
"args": ["/absolute/path/to/boomtick-mcp/dist/index.js"],
|
|
58
|
+
"env": {
|
|
59
|
+
"GITHUB_TOKEN": "your_pat",
|
|
60
|
+
"GITHUB_OWNER": "your_org",
|
|
61
|
+
"GITHUB_REPO": "your_repo",
|
|
62
|
+
"BOOMTICK_REPO_PATH": "/absolute/path/to/repo"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Configuration
|
|
70
|
+
Create a `.env` file in the `boomtick-mcp` directory:
|
|
71
|
+
```env
|
|
72
|
+
GITHUB_TOKEN=your_pat
|
|
73
|
+
GITHUB_OWNER=your_org
|
|
74
|
+
GITHUB_REPO=your_repo
|
|
75
|
+
BOOMTICK_REPO_PATH=/path/to/repo
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Usage
|
|
79
|
+
Run the server via stdio:
|
|
80
|
+
```bash
|
|
81
|
+
node dist/index.js
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Release Process
|
|
85
|
+
1. Run tests: `pnpm test`
|
|
86
|
+
2. Run evals: `pnpm run run-evals`
|
|
87
|
+
3. Update version: `pnpm run release:patch` (or `minor`/`major`)
|
|
88
|
+
4. Build: `pnpm run build`
|
|
89
|
+
5. Push changes and tags.
|
|
90
|
+
|
|
91
|
+
## Future Roadmap
|
|
92
|
+
|
|
93
|
+
### ContentOps + Merch Compliance
|
|
94
|
+
- `content.validate_affiliate_disclosure`: Ensure Amazon mandatory wording is present.
|
|
95
|
+
- `content.check_trademark_risk`: Flag potential trademark issues in blog posts.
|
|
96
|
+
- `amazon.validate_affiliate_card`: Verify affiliate links and product names match media.
|
|
97
|
+
|
|
98
|
+
### UX Regression + Spec-Driven Redesign
|
|
99
|
+
- `ux.capture_screenshot`: Capture multi-viewport screenshots.
|
|
100
|
+
- `ux.compare_screenshots`: Detect visual regressions using Playwright.
|
|
101
|
+
- `ux.run_accessibility_check`: Automated Axe-core audits.
|
|
102
|
+
|
|
103
|
+
## Development
|
|
104
|
+
- **Build**: `pnpm run build`
|
|
105
|
+
- **Test**: `pnpm test`
|
|
106
|
+
- **Verify**: `pnpm run run-evals`
|
|
107
|
+
|
|
108
|
+
For detailed verification steps, see [docs/testing.md](./docs/testing.md).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: BoomTick AI Review
|
|
2
|
+
description: Runs AI code review via python3 -m dev_tools.cli CLI
|
|
3
|
+
inputs:
|
|
4
|
+
pr_number:
|
|
5
|
+
description: PR number to review
|
|
6
|
+
required: true
|
|
7
|
+
runs:
|
|
8
|
+
using: composite
|
|
9
|
+
steps:
|
|
10
|
+
- uses: ./mcp/actions/setup
|
|
11
|
+
- name: AI review
|
|
12
|
+
env:
|
|
13
|
+
PR_NUMBER: ${{ inputs.pr_number }}
|
|
14
|
+
run: python3 -m dev_tools.cli gh audit-pr "$PR_NUMBER" --fetch --audit
|
|
15
|
+
shell: bash
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: BoomTick Anti-Pattern Audit
|
|
2
|
+
description: Runs UI anti-pattern and design token compliance audits
|
|
3
|
+
inputs:
|
|
4
|
+
github_token:
|
|
5
|
+
description: 'GitHub token'
|
|
6
|
+
required: true
|
|
7
|
+
runs:
|
|
8
|
+
using: composite
|
|
9
|
+
steps:
|
|
10
|
+
- uses: ./mcp/actions/setup
|
|
11
|
+
|
|
12
|
+
- name: Install dependencies
|
|
13
|
+
run: pnpm install --frozen-lockfile --prefer-offline
|
|
14
|
+
shell: bash
|
|
15
|
+
|
|
16
|
+
- name: UI Anti-Pattern Audit - Gate
|
|
17
|
+
env:
|
|
18
|
+
GITHUB_TOKEN: ${{ inputs.github_token }}
|
|
19
|
+
run: |
|
|
20
|
+
echo "::group::Audit"
|
|
21
|
+
trap 'echo "::endgroup::"' EXIT
|
|
22
|
+
export PATH="$HOME/.local/bin:/github/home/.local/bin:$PATH"
|
|
23
|
+
if ! node scripts/detect-antipatterns.mjs; then echo "Audit failed"; exit 1; fi
|
|
24
|
+
python3 -m dev_tools.cli gh audit-gate
|
|
25
|
+
shell: bash
|
|
26
|
+
|
|
27
|
+
- name: Design Token Compliance
|
|
28
|
+
run: |
|
|
29
|
+
VIOLATIONS=$(find . -name "*.tsx" -not -path "*/node_modules/*" -type f | xargs grep -h '#[0-9a-fA-F]\{3,6\}' \
|
|
30
|
+
| grep -vc "design-tokens\|tokens.css\|// impeccable-ignore" || echo 0)
|
|
31
|
+
if [ "$VIOLATIONS" -gt 0 ]; then
|
|
32
|
+
echo "⚠️ Found $VIOLATIONS raw hex color(s) in tsx files. Use CSS variables instead."
|
|
33
|
+
find . -name "*.tsx" -not -path "*/node_modules/*" -type f | xargs grep -rn '#[0-9a-fA-F]\{3,6\}' | grep -v "design-tokens\|tokens.css"
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
echo "✅ Design token compliance passed."
|
|
37
|
+
shell: bash
|