dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证GitHub Action that scans agent-readable files (READMEs, docs, prompts, MCP configs, editor rules) for prompt injection and tool poisoning on every PR.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
😎 Sunglasses — Agent File Scan (GitHub Action)
Scan your repository's agent-readable files — READMEs, docs, prompts, MCP configs, .cursor / .windsurf / .claude rules — for prompt injection and tool poisoning on every pull request, before an AI agent (Claude Code, Cursor, Copilot, etc.) ever reads them.
Powered by Sunglasses, the open-source, 100% local trust boundary for AI agents.
Your agent trusts what it reads. A poisoned README or MCP description can quietly hand it instructions you never wrote. This Action catches that in CI.查看完整 README ↗Scan your repository's agent-readable files — READMEs, docs, prompts, MCP configs, .cursor / .windsurf / .claude rules — for prompt injection and tool poisoning on every pull request, before an AI agent (Claude Code, Cursor, Copilot, etc.) ever reads them.
Powered by Sunglasses, the open-source, 100% local trust boundary for AI agents.
Your agent trusts what it reads. A poisoned README or MCP description can quietly hand it instructions you never wrote. This Action catches that in CI.
Create .github/workflows/sunglasses.yml:
name: Sunglasses — agent file scan
on: [pull_request]
permissions:
contents: read
security-events: write # lets findings appear in the PR's "Code scanning" tab
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: sunglasses-dev/sunglasses-action@v1
That's it. On every PR, Sunglasses scans the sensible default set of agent-readable files and fails the check if it finds an injection — or if it could not actually read a file it was asked to scan.
README*, AGENTS.md, CLAUDE.md, GEMINI.md, every *.md, and docs/, prompts/, .cursor/, .windsurf/, .claude/, plus mcp.json / *.mcp.json. Override with the paths input.
| Input | Default | Description |
|---|---|---|
paths | (default set) | Space-separated files, directories or globs to scan instead of the defaults. Directories are walked. |
fail-on-threat | true | Fail the check when a finding is reported. Set false to report-only. |
fail-on-incomplete | true | Fail the check when a file could not be fully inspected (archive, oversized file, unsupported binary, missing path). Set false to report-only. Either way, a file that was not inspected is never counted as clean. |
upload-sarif | true | Upload merged SARIF to GitHub code scanning (needs security-events: write). |
python-version | 3.x | Python used to install the sunglasses package. |
version | (latest) | Pin a sunglasses version, e.g. ==0.5.6. Empty installs the latest published release, so a new release reaches your workflow the hour it lands. |
The Action reports four separate outcomes, and never folds them together:
| Outcome | Annotation | Fails the job? |
|---|---|---|
| Inspected, nothing found | none | no |
| Finding | ::error … detected an agent-targeted injection | yes, unless fail-on-threat: false |
| Not inspected (archive, file over the scanner's 1 MB limit, unsupported binary, path not found) | ::warning … not inspected: <reason> | yes, unless fail-on-incomplete: false |
| Scan failed (the scanner errored or crashed) | ::error … could not scan … It was NOT inspected | always |
A green check means "every file we were asked to read, we read, and nothing fired". It does not mean "this repository is safe" — no scanner can promise that, and this one does not.
The injection wording is reserved for actual findings. A file we could not open, or one the scanner failed on, is never described as an attack. Before v1.1 it was: the Action treated any non-zero exit as a threat, so a 1.2 MB CHANGELOG or a permissions error produced Sunglasses detected an agent-targeted injection in <file> on the pull request.
- uses: sunglasses-dev/sunglasses-action@v1
with:
fail-on-threat: false
fail-on-incomplete: false
paths: "README.md docs/ prompts/"
Directories in paths are walked recursively. (In v1 they were silently dropped — paths: "README.md docs/ prompts/" scanned only README.md and still reported a green result, which is the kind of quiet under-coverage v1.1 exists to remove.)
Direct & indirect prompt injection · README / repo poisoning · MCP tool-metadata poisoning · credential-exfiltration prompts · encoded / obfuscated / multilingual evasions.
paths, or run in fail-on-threat: false mode on docs-heavy repos.sunglasses package from PyPI. With version empty it installs the latest release at run time, so package changes reach your workflow without you upgrading anything — pin version if you need lockstep.tests/fixtures/ contains deliberate injection samples, so a scan of this repository will flag them. Scope paths to exclude tests/fixtures when running the Action against itself.@v1 is a moving tag that tracks the latest v1.x. Pin a commit SHA if you need immutability; a pinned SHA does not move when we publish v1.1.MIT — see LICENSE.