cleanapp
This is a **skill package** that lets an agent submit **any problem signal** into CleanApp (bugs, incidents, scams.
Setup & Installation
Install command
clawhub install borisolver/cleanappIf the CLI is not installed:
Install command
npx clawhub@latest install borisolver/cleanappOr install with OpenClaw CLI:
Install command
openclaw skills install borisolver/cleanappor paste the repo link into your assistant's chat
Install command
https://github.com/openclaw/skills/tree/main/skills/borisolver/cleanappWhat This Skill Does
Submits reports to CleanApp via the Fetcher Key System. New submissions land in a quarantine lane, stored and analyzed but not publicly published or routed until promoted. Supports bulk ingest from JSON with optional coordinate approximation and idempotency via stable source IDs.
The quarantine-first model and revocable API key contain the blast radius of any agent misbehavior to quarantined-only submissions, unlike direct publishing integrations.
When to Use It
- Batch-uploading litter reports collected during a neighborhood cleanup
- Ingesting 311-style civic complaints from a spreadsheet export
- Testing a new data feed safely before requesting out-of-quarantine promotion
- Submitting infrastructure damage reports with approximate GPS coordinates
- Automating nightly report uploads from a field data collection app
View original SKILL.md file
# SKILL: CleanApp Ingest v1 (OpenClaw/ClawHub) This is a **skill package** that lets an agent submit **any problem signal** into CleanApp (bugs, incidents, scams, UX friction, policy violations, safety hazards, improvement proposals) using the **Fetcher Key System**: - `POST /v1/fetchers/register` (one-time key issuance) - `POST /v1/reports:bulkIngest` (bulk ingest, quarantine-first) - `GET /v1/fetchers/me` (introspection) This is **not** a long-lived agent running inside the CleanApp backend. It’s a client-side integration that talks to CleanApp over HTTPS. ## Why This Is Safe (Compartmentalized) 1. The only secret in the agent is a **revocable CleanApp API key** (`CLEANAPP_API_TOKEN`). 2. New keys default to a **quarantine lane** on the backend: - Stored + analyzed - Not publicly published - Not automatically routed to third parties - Not rewarded 3. The backend enforces: - rate limits / quotas - idempotency (`source_id`) - kill switches (revoke/suspend) So even if an agent is prompt-injected, the blast radius is limited to “submitting more quarantined reports” until the key is revoked. ## Required Secret - `CLEANAPP_API_TOKEN` (Bearer token). Get it once via: - `POST /v1/fetchers/register` (see `references/API_REFERENCE.md`) - Store it as a ClawHub/OpenClaw secret; never paste into chat logs. Optional env: - `CLEANAPP_BASE_URL` (default `https://live.cleanapp.io`) ## Data Handling (Minimal by Default) This skill submits: - `title`, `description` (text) - optional `lat`/`lng` (location) - optional `media[]` metadata (URL/SHA/content-type) Recommended low-risk defaults: - `--approx-location` (round coordinates to reduce precision) - `--no-media` (drop media metadata unless needed) ## Idempotency (Important) Every item must include a stable `source_id`. The backend enforces: - `UNIQUE(fetcher_id, source_id)` - retries won’t duplicate rows if you reuse the same `source_id` ## Usage ### Bulk ingest from JSON (recommended) ```bash export CLEANAPP_API_TOKEN="cleanapp_fk_live_..." python3 ingest.py \\ --base-url https://live.cleanapp.io \\ --input examples/sample_items.json \\ --approx-location \\ --no-media ``` ### Dry run (no network) ```bash python3 ingest.py --input examples/sample_items.json --dry-run ``` ### Single-item helper (shell) This is useful for quick manual submissions while debugging. ```bash export CLEANAPP_API_TOKEN="cleanapp_fk_live_..." ./scripts/submit_report.sh --title "Broken elevator" --description "Stuck on floor 3" --lat 34.0702 --lng -118.4441 --approx-location ``` ## Promotion (Out of Quarantine) Promotion is a **reviewed** process. As you build reputation, CleanApp can: - raise caps - allow public publishing/routing/rewards See: - `POST /v1/fetchers/promotion-request` - `GET /v1/fetchers/promotion-status` ## References - Swagger UI: `https://live.cleanapp.io/v1/docs` - OpenAPI YAML: `https://live.cleanapp.io/v1/openapi.yaml` - `references/API_REFERENCE.md` in this package
Example Workflow
Here's how your AI assistant might use this skill in practice.
User asks: Batch-uploading litter reports collected during a neighborhood cleanup
- 1Batch-uploading litter reports collected during a neighborhood cleanup
- 2Ingesting 311-style civic complaints from a spreadsheet export
- 3Testing a new data feed safely before requesting out-of-quarantine promotion
- 4Submitting infrastructure damage reports with approximate GPS coordinates
- 5Automating nightly report uploads from a field data collection app
This is a **skill package** that lets an agent submit **any problem signal** into CleanApp (bugs, incidents, scams.
Security Audits
These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.