[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71CGGCBVMWWNBXEWWQQF25G":3,"skill-same:01M71CGGCBVMWWNBXEWWQQF25G":62},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M71CGGCBVMWWNBXEWWQQF25G","app-relay",null,"Start a loopback web service and explain browser access in local cogbox or managed cogworx, including previews, notebooks and dev servers, and who can open it.","illustris\u002Fcogbox","illustris","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3948275?v=4","01M71CGEWJV83CKXRREGQKXXQH","01M71CGEXJJK2726RZ2EJDC1PM",3,"MIT","https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Fskills\u002Fapp-relay\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"relay","app relay","app","dev servers","can","it","explain","access","service","servers","dev","start","open","local","managed","web","browser","2026-11-10 10:12:30",false,"---\nname: app-relay\ndescription: Start a loopback web service and explain browser access in local cogbox or managed cogworx, including previews, notebooks and dev servers, and who can open it.\n---\n\nStart the application on guest `127.0.0.1`, using a free port other than 8080.\nPort 8080 belongs to the native relay. IPv6-only `::1` is not reachable through\nthe relay. If Python is installed, for example:\n`python3 -m http.server 3080 --bind 127.0.0.1`. Check that the chosen server tool\nis available; the base relay does not install application runtimes.\n\nVerify the application itself responds, then read\n`\u002Frun\u002Fcogbox\u002Fenvironment.json` as described by `cogbox-environment`.\n\n- `local`: tell the user to run `cogbox app open --port 3080 --name NAME` on their host,\n  substituting the recorded instance name. Omit `--name` for `default`. The command\n  prints the actual browser URL and stays in the foreground; Ctrl-C closes\n  that proxy. `--background` leaves it running; `cogbox app list` and\n  `cogbox app stop` manage host proxies. Do not invent a localhost URL or run\n  the host command inside this guest.\n- `cogworx`: tell the user to open port 3080 from this sandbox's page: the `app` row on its Overview tab, or the \"Open an app\" panel on its Apps tab, opens the app in a new browser tab at an address of its own. By default only people who can open the sandbox can open its apps. The owner or an admin can pin a port under \"Port access\" on the Apps tab (the port, a level, \"Pin port\"): `sandbox` (only who can open this sandbox), `teams` (plus the teams listed on the port), `all` (anyone signed in to cogworx) or `none` (anyone on the network, no sign-in), and the operator may withhold levels. Every level but `sandbox` reaches people the sandbox is not shared with, so leave widening to the user. To let a teammate open it, prefer pinning the port at `teams` with a team they are in over sharing the sandbox: sharing gives them a shell and suspends its git grants and Vault bindings (`cogbox-remote-access`). Port 8080 can be neither opened nor pinned. In network mode `none` the app proxy cannot open any port; on a container sandbox an `ssh -L` forward still works (`cogbox-remote-access`). If the page has no `app` row and no Apps tab, this deployment has no app proxy: load `cogbox-remote-access` for an `ssh -L` forward. Do not replace relay credentials, construct an app URL, or suggest local provisioning.\n- `unknown`, missing or malformed context: report the working guest port and\n  ask whether the user uses local cogbox or cogworx before choosing instructions.\n\n`curl -fsS http:\u002F\u002F127.0.0.1:8080\u002Fhealthz` checks relay liveness only. It does not\nprove a provisioned secret, working application, or browser authorization.\nIf an app does not load, verify its startup port and IPv4 loopback listener.\nAn application-generated error is not necessarily a relay failure. Never print\nor embed a relay secret in a URL. WebSockets, SSE and streaming are supported.\n","Start the application on guest `127.0.0.1`, using a free port other than 8080.\nPort 8080 belongs to the native relay. IPv6-only `::1` is not reachable through\nthe relay. If Python is installed, for example:\n`python3 -m http.server 3080 --bind 127.0.0.1`. Check that the chosen server tool\nis available; the base relay does not install application runtimes.\n\nVerify the application itself responds, then read\n`\u002Frun\u002Fcogbox\u002Fenvironment.json` as described by `cogbox-environment`.\n\n- `local`: tell the user to run `cogbox app open --port 3080 --name NAME` on their host,\n  substituting the recorded instance name. Omit `--name` for `default`. The command\n  prints the actual browser URL and stays in the foreground; Ctrl-C closes\n  that proxy. `--background` leaves it running; `cogbox app list` and\n  `cogbox app stop` manage host proxies. Do not invent a localhost URL or run\n  the host command inside this guest.\n- `cogworx`: tell the user to open port 3080 from this sandbox's page: the `app` row on its Overview tab, or the \"Open an app\" panel on its Apps tab, opens the app in a new browser tab at an address of its own. By default only people who can open the sandbox can open its apps. The owner or an admin can pin a port under \"Port access\" on the Apps tab (the port, a level, \"Pin port\"): `sandbox` (only who can open this sandbox), `teams` (plus the teams listed on the port), `all` (anyone signed in to cogworx) or `none` (anyone on the network, no sign-in), and the operator may withhold levels. Every level but `sandbox` reaches people the sandbox is not shared with, so leave widening to the user. To let a teammate open it, prefer pinning the port at `teams` with a team they are in over sharing the sandbox: sharing gives them a shell and suspends its git grants and Vault bindings (`cogbox-remote-access`). Port 8080 can be neither opened nor pinned. In network mode `none` the app proxy cannot open any port; on a container sandbox an `ssh -L` forward still works (`cogbox-remote-access`). If the page has no `app` row and no Apps tab, this deployment has no app proxy: load `cogbox-remote-access` for an `ssh -L` forward. Do not replace relay credentials, construct an app URL, or suggest local provisioning.\n- `unknown`, missing or malformed context: report the working guest port and\n  ask whether the user uses local cogbox or cogworx before choosing instructions.\n\n`curl -fsS http:\u002F\u002F127.0.0.1:8080\u002Fhealthz` checks relay liveness only. It does not\nprove a provisioned secret, working application, or browser authorization.\nIf an app does not load, verify its startup port and IPv4 loopback listener.\nAn application-generated error is not necessarily a relay failure. Never print\nor embed a relay secret in a URL. WebSockets, SSE and streaming are supported.\n",{"name":5,"description":7},"master","9054adffa53fa7af94439dff72b432e11499a008","skills\u002Fapp-relay",1,"https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox","https:\u002F\u002Fgithub.com\u002Fillustris","https:\u002F\u002Fillustris.tech","2026-11-10 00:38:16",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add illustris\u002Fcogbox --skill app-relay",{"tool":54,"command":55},"bunx","bunx skills add illustris\u002Fcogbox --skill app-relay",{"tool":57,"command":58},"pnpm","pnpm dlx skills add illustris\u002Fcogbox --skill app-relay","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Fskills\u002Fapp-relay\u002FSKILL.md",true,[],[63,75,87,101,114,122],{"skillNo":64,"name":5,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":35},"01M71CHP4B6XX9PAZ5JRQV8E58","Legacy plugin guidance for migration testing.","https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fnative-app\u002Flegacy-contents\u002Fskills\u002Fapp-relay\u002FSKILL.md",[],[20,19,18,69,70,71,72,73,74],"guidance","migration","plugin","Legacy","for","testing",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":35},"01M71CHM675ZZTJ9HRGHPWVVZS","demo-overview","Overview of the demo backend; start here before answering demo questions.","https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fbrain-plugin\u002Fcontents\u002Fskills\u002Fdemo-overview\u002FSKILL.md",[],[82,83,84,85,86,29],"overview","demo overview","demo","questions","backend",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":35},"01M71CHJNH0AX8E74WBGJH1JMR","demo-es","Query the demo Elasticsearch cluster: es-search, es-cat.","https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fbrain-plugin\u002Fcontents\u002Fskills\u002Fdemo-es\u002FSKILL.md",[],[84,94,95,96,97,98,99,100],"es","demo es","search","query","cat","cluster","elasticsearch",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":35},"01M71CHGPNHSBFJHCQRSMNHS3E","cogbox-plugins","Fixture skill squatting on the name cogbox reserves for its index.","https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fbrain-collide\u002Freserved\u002Fskills\u002Fcogbox-plugins\u002FSKILL.md",[],[108,109,110,111,73,112,113],"cogbox plugins","plugins","fixture","index","name","fixture skill",{"skillNo":115,"name":109,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":35},"01M71CHERNF4GWZ1C34MHKKN19","Fixture skill named `plugins`, shipped by a second, unrelated plugin.","https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fbrain-collide\u002Freserved-qual-b\u002Fskills\u002Fplugins\u002FSKILL.md",[],[109,113,110,71,120,121],"unrelated","second",{"skillNo":123,"name":109,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":35},"01M71CHDPMR9KDE5QP6H3W66CW","Fixture skill named `plugins`, shipped by a plugin installed as `cogbox`.","https:\u002F\u002Fgithub.com\u002Fillustris\u002Fcogbox\u002Fblob\u002Fmaster\u002Ftests\u002Ffixtures\u002Fbrain-collide\u002Freserved-qual-a\u002Fskills\u002Fplugins\u002FSKILL.md",[],[109,110,128,71,113],"as"]