Skip to content
Back to skills

Apod Api

ASecurity

"Use NASA's apod-api Flask service and standalone APOD parser for

  • 247 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
devopspythongobashflaskdockerapi

Works with

  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 20 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill apod-api --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Apod Api?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Apod Api
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-apod-api/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-apod-api)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: apod-api
description: "Use NASA's apod-api Flask service and standalone APOD parser for
  date, count, range, media, deployment, Docker, and troubleshooting workflows."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# apod-api

Use this repo skill when a task involves NASA's Astronomy Picture of the Day
(APOD) service, its `/v1/apod/` Flask endpoint, the standalone
`apod_object_parser` helper, APOD HTML/media extraction, or running the service
locally or in Docker. This is an operating guide for the public `apod-api`
repository, not a replacement NASA API credential store.

## Route by task

- **Flask endpoint, query construction, response/error semantics, or service
  import:** read [api-service](sub-skills/api-service/SKILL.md).
- **NASA APOD JSON accessors, optional fields, asset download, or Pillow image
  conversion:** read [parser-and-media](sub-skills/parser-and-media/SKILL.md).
- **uv/dependency setup, Gunicorn, Docker/Compose, startup checks, or a bounded
  Locust profile:** read
  [deployment-and-operations](sub-skills/deployment-and-operations/SKILL.md).
- **Cross-cutting setup, upstream, packaging, credential, or asset failures:**
  read [root troubleshooting](references/troubleshooting.md), then follow the
  nearest sub-skill's more specific guide.

Keep the routes distinct: the Flask service scrapes APOD website HTML, while
`apod_object_parser.get_data(api_key)` calls NASA's separate JSON API. Do not
pass NASA JSON API parameters such as `api_key` to the Flask endpoint; the
implemented Flask handler rejects unknown fields.

## Public runtime facts

- Distribution metadata: `apod-api` version `1.1.0`, Python `>=3.12`.
- Runtime dependencies: Flask, Flask-CORS, Gunicorn, Jinja2, Pillow, Requests,
  urllib3, BeautifulSoup4, and Werkzeug.
- Primary endpoint: `GET /v1/apod/` with a trailing slash. It supports one
  date, a random `count` from 1–100, or an inclusive `start_date`/`end_date`
  range, plus `concept_tags`, `thumbs`, and legacy `hd` flags.
- The application has root and static routes, CORS configuration, a volatile
  process-local cache, and JSON error envelopes containing `service_version`,
  `msg`, and `code`.
- Live APOD results depend on outbound access to `https://apod.nasa.gov/apod/`.
  Concept tagging additionally depends on a protected `alchemy_api.key`; its
  absence is an expected degraded mode, not a reason to publish a secret.

## Minimal inspection

For a real repository checkout, install the declared runtime dependencies and
then run the bundled route inspector from this skill:

```bash
python sub-skills/api-service/scripts/run_service.py --help
python sub-skills/api-service/scripts/run_service.py --inspect-routes
```

The inspector imports the application and prints its routes without scraping
APOD. Keep the application working directory able to resolve its templates and
static assets. If the project metadata attempts an editable build and reports
multiple top-level packages, follow the dependency-only workaround in
[installation](sub-skills/deployment-and-operations/references/installation.md)
rather than claiming that `pip install -e .` succeeded.

## Freshness and provenance

Before applying this guide to a changed checkout, read
[repo provenance](references/repo-provenance.md). If the commit, package
version, dirty paths, or public entry points differ, use a refresh workflow
instead of assuming these facts remain current.

## Boundaries and safety

Do not put NASA keys, Alchemy credentials, or private deployment values in
commands, fixtures, Docker layers, or generated reports. Treat live endpoint
requests, image downloads, HTML scraping, and Locust as external-network
operations with explicit timeouts and bounded scope. Do not run a load test as
an ordinary startup check. The review/test artifacts for this skill live
outside this runtime tree and are not needed by a future Researcher.

Files in this skill

  • SKILL.md3.9 KB
  • references/repo-provenance.md1.8 KB
  • references/repo-routing-metadata.json328 B
  • references/troubleshooting.md4 KB
  • sub-skills/api-service/SKILL.md2.6 KB
  • sub-skills/api-service/references/api-reference.md6.7 KB
  • sub-skills/api-service/references/troubleshooting.md6.5 KB
  • sub-skills/api-service/references/workflows.md4.8 KB
  • sub-skills/api-service/scripts/run_service.py4.1 KB
  • sub-skills/deployment-and-operations/SKILL.md3 KB
  • sub-skills/deployment-and-operations/references/container-deployment.md3.1 KB
  • sub-skills/deployment-and-operations/references/installation.md3.4 KB
  • sub-skills/deployment-and-operations/references/operations.md3.7 KB
  • sub-skills/deployment-and-operations/references/troubleshooting.md4.7 KB
  • sub-skills/deployment-and-operations/scripts/docker-compose.apod-api.yml439 B
  • sub-skills/deployment-and-operations/scripts/locustfile.py716 B
  • sub-skills/parser-and-media/SKILL.md2.3 KB
  • sub-skills/parser-and-media/references/api-reference.md3.6 KB
  • sub-skills/parser-and-media/references/data-formats.md3.2 KB
  • sub-skills/parser-and-media/references/troubleshooting.md3.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…