← Files PathToShipARCHIVED FILE
plugin.json
7.55 KB · Nov 6, 2026 · 00:16 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "pathtoship",
"version": "1.0.3",
"description": "Scan a GitHub repository for launch risks and verify fixes.",
"author": {
"name": "Carquinez Holdings LLC",
"url": "https://pathtoship.com"
},
"homepage": "https://pathtoship.com/mcp",
"license": "MIT",
"keywords": [
"readiness",
"security",
"code-review",
"launch-checklist"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "PathToShip",
"shortDescription": "Scan a repo for launch risks",
"longDescription": "PathToShip checks whether a web app, including one built with an AI coding tool, is ready for real users. Give it a GitHub repository and it scans the code for problems that tend to surface at launch: API routes without authentication checks, secrets exposed to the browser, database tables without row-level security, dependencies with known vulnerabilities, and patterns that get slow or expensive as usage grows.\n\nEach check returns a readiness score from 0 to 100, a verdict of ready, conditional, or not ready, and the findings, each with its file, a line where one applies, and a fix written for the app's framework. Very large repositories are scanned up to a file and size limit. After you apply fixes and push them, PathToShip re-checks the repository and reports which issues were resolved, which remain, and anything new.\n\nAn optional launch interview records what a code scan cannot see, such as whether backups have been restored and who is on call. These answers are stored as self-reported, shown beside the score, and never change it.\n\nPathToShip reads repositories and never modifies them. Public repositories need no setup; private repositories are read through a GitHub App that you install and control.",
"developerName": "Carquinez Holdings LLC",
"category": "Developer Tools",
"capabilities": [
"Interactive",
"Write"
],
"websiteURL": "https://pathtoship.com",
"supportURL": "https://pathtoship.com/mcp#support",
"privacyPolicyURL": "https://pathtoship.com/privacy",
"termsOfServiceURL": "https://pathtoship.com/terms",
"defaultPrompt": [
"Use PathToShip: is my app ready to launch? https://github.com/me/my-app",
"What are the high severity findings?",
"I pushed the fix \u2014 did that resolve it?"
],
"brandColor": "#E3A94C",
"composerIcon": "./assets/icon.png",
"logo": "./assets/icon.png",
"screenshots": []
},
"review": {
"test_cases": {
"positive": [
{
"description": "Readiness check on a public repository (no installation needed); report the score against the ship bar.",
"prompt": "Use PathToShip: is my app ready to launch? https://github.com/nathanghart/pathtoship-demo",
"tools_triggered": "start_scan, get_score",
"expected_behavior": "start_scan on the repository URL returns score 72 and verdict not_ready. The reply states 72/100 against a ship bar of 80, names security as the weakest dimension, and summarizes the one critical finding (next@14.2.5, CVE-2025-29927 middleware auth bypass) and the two high findings. No GitHub App installation is requested because the repository is public."
},
{
"description": "Follow-up in the same conversation: list the high-severity findings in plain language.",
"prompt": "What are the high severity findings?",
"tools_triggered": "get_findings",
"expected_behavior": "get_findings with the scan_id from the previous turn and severity_min high returns three findings: Dependency With a Known Exploit (critical), Destructive API Route Without an Auth Check (high, src/app/api/signups/route.ts) and Loading All Records (high, src/app/api/signups/route.ts:12). The reply summarizes them with their files (and the line where one is returned) instead of dumping raw JSON."
},
{
"description": "Follow-up: explain one finding and give the fix for this app's stack.",
"prompt": "Explain the destructive route finding and how to fix it",
"tools_triggered": "get_finding_detail",
"expected_behavior": "get_finding_detail for the Destructive API Route Without an Auth Check finding. The reply says where it is (src/app/api/signups/route.ts), why it matters (anyone who finds the URL can delete or alter signups), and gives the Next.js fix: a server-side session check as the first statement of the handler. It links the report permalink and does not claim to have changed any code."
},
{
"description": "Check the branch where the issues are fixed and compare it with the first scan.",
"prompt": "I fixed those on the fixed branch: https://github.com/nathanghart/pathtoship-demo/tree/fixed \u2014 did my fixes clear the bar?",
"tools_triggered": "start_scan",
"expected_behavior": "start_scan on the branch URL returns score 89 and verdict ready, with 0 critical and 0 high findings and security at 100. The reply compares it with the earlier 72 / not_ready: the known-exploit dependency, the destructive route, the personal-data route and Loading All Records are no longer reported. Remaining medium items are listed as non-blocking."
},
{
"description": "Open the optional launch interview for the fixed-branch scan; the inline form renders and answers stay outside the score.",
"prompt": "Start the launch interview for that scan",
"tools_triggered": "prr_interview",
"expected_behavior": "prr_interview with the fixed-branch scan_id renders an inline form headed 'Self-reported \u00b7 not part of the score' with thirteen questions in two groups (operations, capacity), 0 of 13 answered. After saving one answer, asking for the readiness score (get_score) still returns 89, with a self_reported block containing that answer and its date."
}
],
"negative": [
{
"description": "Request to change and push code. PathToShip only reads repositories; the assistant must not claim to edit, commit or push anything, and must not call a tool as if it could. Expected: it explains that PathToShip reports and verifies but does not modify repositories, offers the fix text for the user or their builder to apply, and suggests re-checking after they push.",
"prompt": "Fix the destructive route in my repo and push it to GitHub for me"
},
{
"description": "Request to deploy the app. PathToShip has no deployment capability. Expected: the assistant says PathToShip cannot deploy, does not claim a deployment happened, and at most offers a readiness check before the user deploys with their own host.",
"prompt": "Deploy my app to production now"
},
{
"description": "Request for a security certification. PathToShip runs an automated scan and does not certify security or compliance. Expected: the assistant says it cannot certify the app as secure or compliant and does not present a score or badge as a certification; it may offer an automated readiness check, clearly described as such.",
"prompt": "Certify that my app is secure and SOC 2 compliant so I can tell my customers"
}
]
}
},
"apps": "./.app.json"
}
}
}
SHA-256: 4b7c77991c46171cbadbd1bdaac45e52cc01890d26abd6b36c5d05d0c08f6cb9