What this means for your project
Check whether the right people can reach private images through each path you declare.
Test the file behind the preview.
Your gallery blurs unpaid photos. Test an original-image link as an anonymous visitor, a paying client, an unrelated client, and someone whose access was revoked. Use synthetic images so the test does not need a customer photo.
How would I use this with AI?
A skill is a set of instructions and examples for your AI coding assistant. You bring your idea and your project. The skill gives the assistant a process to follow.
- Tell your AI what you want to do and share the complete package.
- Work through the setup together. You may need accounts or tools listed below.
- Review and test the result before using it in your project.
You receive instructions and working examples to use with your own tools. Setup and review remain part of the work.
Try this as your first task
- You bring
- An authorized test app, synthetic images, known file hashes, and scoped test sessions.
- Work toward
- An access matrix and a report for the declared image paths and roles.
Check the result: Allowed paths return the known synthetic file, denied paths refuse access, and errors or redirects never count as a passing denial.
Use this after installing the package. Your AI tool and any external services are separate.
Not sure where to start? Ask about a project like yours.
Try a small example
Made-up example- List readers
- Choose role
- Check response
- Inspect findings
Starting point
The page blurs an image; its original route is untested
What changes
Each declared role and path has an explicit expected result
Compare a denied request, a returned file, a server error, and a redirect. A broken server is not proof of protected access.
Invented teaching fixture. No files are uploaded, no payment is made, and no external app is contacted.
See how it works
The preview is hidden. The original may not be
Your page shows a blurred image before purchase, but an export route, thumbnail, or original URL may have a different access check.
- A visual blur is not an authorization boundary.
- List every route that can read or deliver the asset.
Make access expectations explicit
For each path, decide which test roles should receive the known file and which should be denied.
- Include anonymous, paid, unrelated, and revoked sessions.
- Use synthetic images so the test never needs a customer photo.
Probe one authorized origin
Adapt the access matrix to your test app, provide scoped session credentials through environment variables, and compare bounded GET responses with expected results.
- Inventory asset readers
- Define expected access
- Probe synthetic assets
- Review failures and repeat
- Redirects are not followed. Requests have time and size limits.
- An allowed response must match the known synthetic file hash.
A server error is not a passing access test
Try an anonymous request returning 403, 200, or 500. Only an expected denial supports the denial check.
- A 200 response may expose the file; investigate it.
- A 500 or redirect leaves the check unresolved, not safely denied.
Review the readers and test the paths
The package pairs source review with a declared access matrix and a small probe you can inspect.
SKILL.md- Source-review and access-testing workflow
scripts/probe.mjs- Bounded one-origin GET probe
examples/plan.json- Access-plan template to adapt to your test app
docs/- Input contract and setup guidance
tests/- Six tests including a local HTTP server
- One-origin validation happens before requests begin.
- Reports omit raw bodies and test-session secrets.
For a gallery you control
Run against an authorized test environment with synthetic assets and scoped accounts. Fix a finding, then repeat the affected cases.
- Node.js 20 or later and a coding assistant
- An app you are authorized to test, preferably an isolated test environment
- Synthetic assets with known SHA-256 hashes and scoped test sessions
- An explicit origin and access matrix; the supplied example URL is intentionally nonfunctional
- It checks only the paths and roles you declared.
- It does not certify the whole app or judge image quality.
What you receive
- A source-review workflow for original images, previews, thumbnails, exports, and caches
- An access matrix with expected allow and deny results
- A bounded GET probe for one authorized origin, with redirects blocked and positive file-hash checks
- Synthetic examples and six tests, including a local HTTP fixture
See the files in the package
SKILL.md- Source-review and access-testing workflow
scripts/probe.mjs- Bounded one-origin GET probe
examples/plan.json- Access-plan template to adapt to your test app
docs/- Input contract and setup guidance
tests/- Six tests including a local HTTP server
What you need to get started
- Node.js 20 or later and a coding assistant
- An app you are authorized to test, preferably an isolated test environment
- Synthetic assets with known SHA-256 hashes and scoped test sessions
- An explicit origin and access matrix; the supplied example URL is intentionally nonfunctional
What you can check here
Checks performed on the package
Six tests passed on Node 24.20.0, macOS arm64, including local HTTP allow/deny cases, leaked-file detection, 500 and redirect failures, origin validation, and positive file-hash checks. No live customer image or external gallery was used.
Will it work with your tools?
- Node 24.20.0 / macOS arm64
- Core checks ran after extracting the release archive into a fresh directory. Node 20 or later is required; other runtime versions and external integrations need checking in your setup.
Before you choose
Read the paid skill terms for permitted use, what your purchase includes, help, and refunds.
- One purchase covers unlimited own and client projects for one purchaser. You may modify the package and use it with your coding AI. Do not resell or publicly redistribute the standalone package. Later versions may be sold separately. See the paid skill terms for help and refunds.
- Use an app you are authorized to test, synthetic assets, and scoped test sessions. The example URL is deliberately nonfunctional.
- This checks declared paths and roles. It is not a universal security scanner, an image-quality test, or proof that every private asset is protected.
Can I point it at any gallery?
No. Use only an app you are authorized to test. Supply synthetic assets and narrowly scoped test sessions.
Does a clean report mean the app is secure?
No. It checks the declared routes and roles. Undeclared paths, other vulnerabilities, and wider security review remain outside its scope.