Skip to content
Back to skills

Api Service

ASecurity

"Operate the apod-api Flask service locally or from an API client:

  • 247 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
devopspythonflaskdockerapi

Works with

  • cli
  • api

Security analysis

A100/100

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

Scanned September 8, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Api Service?

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

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

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: api-service
description: "Operate the apod-api Flask service locally or from an API client:
  start it safely, construct valid APOD queries, interpret responses and errors,
  and troubleshoot upstream, cache, CORS, and static-asset behavior."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# APOD API service

Use this sub-skill when the task is to run `apod-api`, query `/v1/apod`, choose
`date`, `count`, `start_date`, or `end_date`, diagnose Flask 400/404 responses,
check the service version, or investigate NASA APOD availability.

## Route

1. Read [API reference](references/api-reference.md) before constructing a
   request. It is the authority for the implemented route, query combinations,
   boolean parsing, response fields, and error envelopes.
2. Follow [workflows](references/workflows.md) to install the public runtime,
   inspect routes without network access, run the bounded startup wrapper, and
   issue client requests.
3. Use [troubleshooting](references/troubleshooting.md) for malformed input,
   missing routes, APOD HTML/network failures, the volatile cache, static
   fallback assets, and missing concept-tag credentials.
4. Keep standalone JSON accessors and image conversion in
   [parser-and-media](../parser-and-media/SKILL.md). Keep Gunicorn, Docker,
   Compose, and Locust operations in
   [deployment-and-operations](../deployment-and-operations/SKILL.md).
5. For repository-wide issues, also consult the shared
   [troubleshooting guide](../../references/troubleshooting.md).

## Safe operating boundary

The service scrapes the live APOD website; a successful request is therefore a
network-dependent observation, not an offline fixture lookup. `concept_tags`
requires a credential-bound Alchemy integration and is deliberately documented
as degraded when that credential is absent. Do not put API keys or credentials
in commands, scripts, or skill files.

The distribution declares version `1.1.0` and Python `>=3.12`; the Flask service
itself returns `service_version: "v1"`. The current project metadata is not
safe to treat as a default editable setuptools install: flat-layout discovery
sees top-level `apod`, `apod_parser`, `static`, `templates`, and `skills` as
ambiguous. The workflow documents a non-editable runtime setup instead of
hiding this packaging limitation.

## Verification hooks

The bundled `scripts/run_service.py` must pass `--help` and
`--inspect-routes` without contacting APOD. Whole-skill integration should
later run the safe application-import and custom-404 candidates, then add
synthetic conflicting-query and upstream-outage cases before claiming native
service coverage.

Files in this skill

  • SKILL.md2.6 KB
  • references/api-reference.md6.7 KB
  • references/troubleshooting.md6.5 KB
  • references/workflows.md4.8 KB
  • scripts/run_service.py4.1 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.