spaps-feedback
SPAPS Feedback Triage
Fetch issues from the SPAPS issue_reports table and hand each one off to the sibling skill most likely to own it. Reads production data read-only, never writes.
Default Marker
Start with a stable first progress update such as:
Using spaps-feedback to resolve the client overlay, read issues, then match them to sibling skills.
Use This For
- Listing recent SPAPS-reported issues for a given app, user, or time window
- Matching an issue (or a batch) to the sibling skill that should handle it
- Previewing the fix workflow by handing off to the matched skill for user confirmation
Do Not Use This For
- Writing replies to issues (that is a SPAPS API write path — not in scope here)
- Closing, assigning, or otherwise mutating issue state
- Building the
spaps-issue-reporting-reactpackage or backend router (useissue-reporting-setupand sweet-potato repo work) - Generic SPAPS backend debugging (use
ssh-infoordeploy)
Fetch Method
Issues are pulled by read-only SQL against the production SPAPS database via the same SSH + container pattern that ssh-info uses. No HTTP, no JWT, no SPAPS SDK — this is an operator lookup skill.
The fetch flow:
- Resolve the client overlay for the current cwd
- Read
spaps_feedback.dbfrom the overlay (host container, db user, db name) with defaults inherited from the overlay'sdeploysection if present - SSH to
deploy.droplet_sshand rundocker exec ... psql ... -c "SELECT ..."through the bundled helper - Parse rows into JSON for the matcher
Skill Routing Registry
Each client overlay declares a spaps_feedback.skill_registry — a list of candidate sibling skills with the tags and path globs that identify them. The registry is what makes this skill portable across clients: the base script does not know about cfo/quay-plan-update or any specific sibling, it only reads the registry.
Registry entry shape (see references/overlay-schema.md for the full spec):
spaps_feedback:
db:
droplet_ssh: ops@example-host # overrides deploy.droplet_ssh if set
container: spaps-db # docker container running postgres
user: spaps
database: spaps
table: issue_reports # default; override if renamed
skill_registry:
- id: cfo/quay-plan-update
path: ~/repos/cfo/.agents/skills/quay-plan-update
tags: [quay, condo, five-year-plan, assessment, solar]
match_fields: [note, component_label, page_url]
applications: [cca-website] # optional: only match for these application ids
Matching is deterministic: score = count of registry tags that appear (case-insensitive, word-boundary) in the concatenation of the issue's match_fields. Ties break by registry order. Operators confirm matches before any handoff.
Execution Policy
Run only what the user asked for.
- Resolve the client overlay first. If no overlay matches the cwd, create one via
skill-issueand re-resolve — do not guess a host, DB, or registry. - Respect requested scope: a single issue id, a window (
--since 24h), or "top N pending". - Read-only:
SELECTstatements only. NoUPDATE,INSERT,DELETE, orALTER. - Before handing off to a sibling skill, show the user the top match (and 1-2 runners-up) and ask for confirmation. Never silently invoke another skill.
Common Requests
List Recent Issues
scripts/fetch_issues.py --since 7d --limit 20
Prints a JSON array of issues with id, component_label, page_url, note preview, and created_at.
Match One Issue to a Skill
scripts/fetch_issues.py --id <issue-uuid> --json \
| scripts/match_skills.py --json
Prints ranked skill candidates from the overlay registry.
Triage Batch
scripts/fetch_issues.py --since 7d --json \
| scripts/match_skills.py --top 3 --json
Review the top candidates with the user. Only hand off to a sibling skill after explicit confirmation.
Safety
- Production-first caution: default to read-only inspection
- No destructive SQL — fetch script refuses non-
SELECTstatements - No writes to SPAPS or to sibling skill repos
- No automatic handoff — always confirm the matched skill first
- No guesses when overlay or registry is missing
Validation
Before shipping changes to this skill:
SKILLS_ROOT="$HOME/repos/opensource/skills"
python3 "$SKILLS_ROOT/skill-issue/scripts/quick_validate.py" "$SKILLS_ROOT/spaps-feedback"
# Scripts should print usage cleanly when run with no args
python3 "$SKILLS_ROOT/spaps-feedback/scripts/fetch_issues.py" 2>&1 | head -5
python3 "$SKILLS_ROOT/spaps-feedback/scripts/match_skills.py" 2>&1 | head -5
See Also
ssh-info— for the underlying SSH + container conventionsissue-reporting-setup— for wiring SPAPS issue reporting into a frontendskill-issueoverlay mode — for creating or repairing the client overlay that this skill depends onreferences/overlay-schema.md— the fullspaps_feedbackoverlay config shape
More from build000r/skills
openclaw-client-bootstrap
Build a production-ready OpenClaw client setup for DigitalOcean, Tailscale, Telegram, and SPAPS using a reusable hardened template with read-only defaults and human approval. Use for "set up OpenClaw on a droplet", "create a first claw kit", "bootstrap client box", or approval-gated OpenClaw deployment work.
20unclawg-internet
Run self-service OpenClaw onboarding with browser device auth, agent machine-key provisioning, a soul interview, and discovery-mode setup. Use for "/unclawg-internet", "set me up", "connect to openclaw", "onboard me", "sign up for openclaw", or approval-gated setup.
15domain-scaffolder-backend
|
7unclawg-discover
Run multi-platform customer discovery across Reddit, Hacker News, Twitter/X, and LinkedIn, then output a ranked engagement feed for downstream workflows. Use for "/unclawg-discover", "find customers", "find leads", "find posts to reply to", "build engagement queue", or agent-builder prospecting.
3remotion-best-practices
Best practices for Remotion - Video creation in React. Use when working with Remotion compositions, animations, sequences, or video rendering. Covers project setup for a shared Remotion hub, animation patterns, timing/interpolation, audio, captions, and media handling.
3divide-and-conquer
Decompose complex work into independent parallel sub-agents with no write overlap, synthesize or consume a `WORKGRAPH.md` execution artifact, and launch describe-style worker briefs before review. Use before spawning multiple agents for multi-file, multi-domain, or naturally parallel tasks.
3