The Problem

Solopreneurs and indie hackers need to automate repetitive business tasks—SEO research, demand validation, logo creation, content publishing—but each task requires different tools, APIs, and workflows. Without a structured way to package these automations, every task becomes a one-off script that's hard to reuse or hand to an AI agent.

What This Does

opc-skills is a portfolio of self-contained "Agent Skills"—folders with a SKILL.md instruction file, Python scripts, and references that AI agents (Claude Code, Cursor, Codex) load dynamically. The repo contains 213 files across four independent projects: skills/ (131 files, the main skill library), .agents/ (18 files, an SEO/GEO skill variant), scripts/ (4 files, blog and install-stats tooling), and website/ (32 files, a React-based marketing site).

The substantial skills are seo-geo (SEO optimization for AI search engines via DataForSEO API), producthunt (Product Hunt API wrapper), reddit (Reddit API client), nanobanana (Gemini image generation), and logo-creator/banner-creator (image processing pipelines). The .agents/skills/seo-geo folder duplicates the skills/seo-geo content—likely a stale copy.

How It Is Wired

Each skill is a standalone script collection. There is no central application flow; the import graph shows 76 modules with zero import edges between them, confirming these are independent tools. The most substantial entry point is main in .agents/skills/seo-geo/scripts/autocomplete_ideas.py:12, which reaches 48 functions and drives the DataForSEO API through api_get (network call via urllib.request.Request). The shared workhorse is format_count, called from 11 places—changing it breaks most output formatting across the skills.

The seo-geo skills route through dataforseo_api.py (6 functions, called from 4 files, makes outbound network calls) and seo_audit.py (fetches URLs, checks robots/sitemaps). The producthunt skill's producthunt_api.py defines 14 functions including graphql, clean_user, and clean_post. The nanobanana skill's generate.py reads files and calls a model for inference—the only skill that touches an ML model. The website/worker.js (2,622 lines) is a Cloudflare Worker serving the site's API.

For a typical run: autocomplete_ideas.py calls dataforseo_api.py's api_post, which makes a network call to DataForSEO—two hops from entry to the external API.

How To Use It

Setup: Clone with git clone https://github.com/moses-y/opc-skills. No root-level dependency file exists; the only package.json is in website/ (npm). Python scripts appear to use only the standard library plus requests-style HTTP via urllib.

Configuration: Each skill reads credentials at runtime—dataforseo_api.py and producthunt_api.py expect API keys, likely via environment variables (the credential.py script in seo-geo handles this). The README documents installation via Claude Code's marketplace plugin (.claude-plugin/marketplace.json).

Running it: Invoke individual scripts directly, e.g., python .agents/skills/seo-geo/scripts/keyword_research.py. No unified CLI exists; the README's quick-install instructions are the intended onboarding path.

Real-World Use

A solopreneur building a niche product could use requesthunt to scan Reddit and X for demand, then seo-geo's keyword_research.py to find target keywords, then logo-creator to produce branding assets. Each skill handles one step; the agent orchestrates them.

Code Health & Issues

Static analysis found 24 issues (2 high, 22 medium). High severity: duplicated code blocks—491 repeated 6-line blocks across 36 files in the seo-geo scripts (the .agents/ and skills/ copies are near-identical); and website/worker.js at 2,622 lines is an oversized file. Medium issues include file handles opened without context managers (crop_banner.py, crop_logo.py), empty catch blocks and broad exception handling in worker.js and remove_bg.py/vectorize.py, and deep nesting (depth 6) across the seo-geo scripts.

The SDLC audit flags 4 high findings: unpinned GitHub Actions tags (use commit SHAs), no test suite despite 76 source files, a wildcard CORS origin in worker.js, and a workflow pushing directly to the default branch. Medium: no least-privilege GITHUB_TOKEN permissions, no Dependabot, and no dependency vulnerability scan. No secrets were committed.

The Bottom Line

A useful collection of practical automation scripts for AI agents, strongest in the SEO and image-generation skills. The duplication between .agents/ and skills/ and the absence of tests are the main maintenance risks. Worth adopting if you want ready-made agent skills for the covered domains; expect to consolidate and test before relying on it in production.