testing@1.12.0
CAUTION· install onlyPublisher claims: "End-to-end testing for FrontMCP servers: Jest fixtures with a connected MCP client, MCP matchers, JWT and OAuth mocks, and HTTP mocking" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Install scripts ran; no agent task scenario for this bundle.- Tested
- install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; install scripts ran; no agent task scenario for this bundle) on 2026-11-13 and scored it 75/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Auto-update or dynamic fetch configuration; Auto-update or dynamic fetch configuration; Auto-update or dynamic fetch configuration. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
…t:50390,size:10},"esm-package-server":{start:50400,size:10},"esm-package-server-hot-reload":{start:50410,size:10},"esm-package-server-cli":{start:50420,size:10},"demo-e2e-unix-socket":{start:50430,size:10},"demo-e2e-distributed":{start:504…Fix: Pin versions and sources; vendor anything fetched at install time.…this.requestAnonymousToken()}await this.openStream();this.state="connected";this.log(`Connected; messages go to ${this.messageEndpoint}`)}catch(error){this.state="error";this.stream?.abort();this.stream=void 0;throw error}}async request(me…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…enerateReport(measurements,baseline,gitInfo);const jsonPath=`${outputDir}/report.json`;const markdownPath=`${outputDir}/report.md`;await writeFile2(jsonPath,generator.generateJsonReport(report));…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…t:50390,size:10},"esm-package-server":{start:50400,size:10},"esm-package-server-hot-reload":{start:50410,size:10},"esm-package-server-cli":{start:50420,size:10},"demo-e2e-unix-socket":{start:50430,size:10},"demo-e2e-distributed":{start:504…Fix: Pin versions and sources; vendor anything fetched at install time.…ER="<!-- PERF_BASELINE_END -->";var DEFAULT_BASELINE_PATH="perf-results/baseline.json";var BaselineStore=class{baseline=null;baselinePath;constructor(baselinePath=DEFAULT_BASELINE_PATH){this.baselinePath=baselinePath}async load(){try{if(!a…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ingNodePath?existingNodePath.split(path.delimiter):[]].filter(Boolean);return{...env,NODE_PATH:[...new Set(nodePathEntries)].join(path.delimiter)}}function findUp(s…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…onment variable for verbose output`)}log(message){if(this.options.debug){console.log(`[TestServer] ${message}`)}}};function sleep2(ms){return new Promise(resolve=>setTimeout(resolve,ms))}function signalIfRunning(pid,signal){try{process.kil…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…t:50390,size:10},"esm-package-server":{start:50400,size:10},"esm-package-server-hot-reload":{start:50410,size:10},"esm-package-server-cli":{start:50420,size:10},"demo-e2e-unix-socket":{start:50430,size:10},"demo-e2e-distributed":{start:504…Fix: Pin versions and sources; vendor anything fetched at install time.…ingNodePath?existingNodePath.split(path.delimiter):[]].filter(Boolean);return{...env,NODE_PATH:[...new Set(nodePathEntries)].join(path.delimiter)}}function findUp(s…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ingNodePath?existingNodePath.split(path.delimiter):[]].filter(Boolean);return{...env,NODE_PATH:[...new Set(nodePathEntries)].join(path.delimiter)}}function findUp(s…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.… Promise(resolve=>setTimeout(resolve,ms))}var interceptors={logger(logFn=console.log){return ctx=>{logFn(`[MCP Request] ${ctx.request.method}`,ctx.request.params);return{action:"passthrough"}}},delay(ms){return async()=>{await sleep(ms);re…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ort(project,options.port);const serverOptions={...options,port,project,command:`npx nx serve ${project} --port ${port}`,cwd:options.cwd??process.cwd()};const server=n…Fix: Pin versions and sources; vendor anything fetched at install time.…ER="<!-- PERF_BASELINE_END -->";var DEFAULT_BASELINE_PATH="perf-results/baseline.json";var BaselineStore=class{baseline=null;baselinePath;constructor(baselinePath=DEFAULT_BASELINE_PATH){this.baselinePath=baselinePath}async load(){try{if(!a…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ort(project,options.port);const serverOptions={...options,port,project,command:`npx nx serve ${project} --port ${port}`,cwd:options.cwd??process.cwd()};const server=n…Fix: Pin versions and sources; vendor anything fetched at install time.…this.requestAnonymousToken()}await this.openStream();this.state="connected";this.log(`Connected; messages go to ${this.messageEndpoint}`)}catch(error){this.state="error";this.stream?.abort();this.stream=void 0;throw error}}async request(me…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…enerateReport(measurements,baseline,gitInfo);const jsonPath=`${outputDir}/report.json`;const markdownPath=`${outputDir}/report.md`;await(0,import_utils7.writeFile)(jsonPath,generator.generateJson…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…t:50390,size:10},"esm-package-server":{start:50400,size:10},"esm-package-server-hot-reload":{start:50410,size:10},"esm-package-server-cli":{start:50420,size:10},"demo-e2e-unix-socket":{start:50430,size:10},"demo-e2e-distributed":{start:504…Fix: Pin versions and sources; vendor anything fetched at install time.…this.requestAnonymousToken()}await this.openStream();this.state="connected";this.log(`Connected; messages go to ${this.messageEndpoint}`)}catch(error){this.state="error";this.stream?.abort();this.stream=void 0;throw error}}async request(me…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…)(this.handleRequest.bind(this));this.server=server;server.on("error",err=>{this.log(`Server error: ${err.message}`);reject(err)});server.listen(port,()=>{const address=server.address();if(!address||typeof address==="string"){reject(new Er…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…t:50390,size:10},"esm-package-server":{start:50400,size:10},"esm-package-server-hot-reload":{start:50410,size:10},"esm-package-server-cli":{start:50420,size:10},"demo-e2e-unix-socket":{start:50430,size:10},"demo-e2e-distributed":{start:504…Fix: Pin versions and sources; vendor anything fetched at install time.…ort(project,options.port);const serverOptions={...options,port,project,command:`npx nx serve ${project} --port ${port}`,cwd:options.cwd??process.cwd()};const server=n…Fix: Pin versions and sources; vendor anything fetched at install time.…ER="<!-- PERF_BASELINE_END -->";var DEFAULT_BASELINE_PATH="perf-results/baseline.json";var BaselineStore=class{baseline=null;baselinePath;constructor(baselinePath=DEFAULT_BASELINE_PATH){this.baselinePath=baselinePath}async load(){try{if(!a…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…2(this.handleRequest.bind(this));this.server=server;server.on("error",err=>{this.log(`Server error: ${err.message}`);reject(err)});server.listen(port,()=>{const address=server.address();if(!address||typeof address==="string"){reject(new Er…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ingNodePath?existingNodePath.split(path.delimiter):[]].filter(Boolean);return{...env,NODE_PATH:[...new Set(nodePathEntries)].join(path.delimiter)}}function findUp(s…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…onment variable for verbose output`)}log(message){if(this.options.debug){console.log(`[TestServer] ${message}`)}}};function sleep2(ms){return new Promise(resolve=>setTimeout(resolve,ms))}function signalIfRunning(pid,signal){try{process.kil…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…Head(200,{"Content-Type":"application/json"});res.end(JSON.stringify(jwks));this.log("Served JWKS")}async handleOidcConfig(_req,res){const issuer=this._info?.issuer??"http://localhost";const config={issuer,authorization_endpoint:`${issuer}…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ort(project,options.port);const serverOptions={...options,port,project,command:`npx nx serve ${project} --port ${port}`,cwd:options.cwd??process.cwd()};const server=n…Fix: Pin versions and sources; vendor anything fetched at install time.…ingNodePath?existingNodePath.split(path.delimiter):[]].filter(Boolean);return{...env,NODE_PATH:[...new Set(nodePathEntries)].join(path.delimiter)}}function findUp(s…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…t:50390,size:10},"esm-package-server":{start:50400,size:10},"esm-package-server-hot-reload":{start:50410,size:10},"esm-package-server-cli":{start:50420,size:10},"demo-e2e-unix-socket":{start:50430,size:10},"demo-e2e-distributed":{start:504…Fix: Pin versions and sources; vendor anything fetched at install time.…Head(200,{"Content-Type":"application/json"});res.end(JSON.stringify(jwks));this.log("Served JWKS")}async handleOidcConfig(_req,res){const issuer=this._info?.issuer??"http://localhost";const config={issuer,authorization_endpoint:`${issuer}…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.---Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.… Promise(resolve=>setTimeout(resolve,ms))}var interceptors={logger(logFn=console.log){return ctx=>{logFn(`[MCP Request] ${ctx.request.method}`,ctx.request.params);return{action:"passthrough"}}},delay(ms){return async()=>{await sleep(ms);re…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ort(project,options.port);const serverOptions={...options,port,project,command:`npx nx serve ${project} --port ${port}`,cwd:options.cwd??process.cwd()};const server=n…Fix: Pin versions and sources; vendor anything fetched at install time.…ER="<!-- PERF_BASELINE_END -->";var DEFAULT_BASELINE_PATH="perf-results/baseline.json";var BaselineStore=class{baseline=null;baselinePath;constructor(baselinePath=DEFAULT_BASELINE_PATH){this.baselinePath=baselinePath}async load(){try{if(!a…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…this.requestAnonymousToken()}await this.openStream();this.state="connected";this.log(`Connected; messages go to ${this.messageEndpoint}`)}catch(error){this.state="error";this.stream?.abort();this.stream=void 0;throw error}}async request(me…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.…ingNodePath?existingNodePath.split(path.delimiter):[]].filter(Boolean);return{...env,NODE_PATH:[...new Set(nodePathEntries)].join(path.delimiter)}}function findUp(s…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…ort(project,options.port);const serverOptions={...options,port,project,command:`npx nx serve ${project} --port ${port}`,cwd:options.cwd??process.cwd()};const server=n…Fix: Pin versions and sources; vendor anything fetched at install time.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
No advisories in OSV for @frontmcp/testing@1.12.0 as of 27 h ago. This is the package itself, not its dependencies.
What would make this Verified
5 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim frontmcp: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Auto-update or dynamic fetch configuration≈ +4 on the totalPin versions and sources; vendor anything fetched at install time.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
- Access to sensitive file paths≈ +2 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.