* fix(website): display skill dependencies by handling object format in skills.json (#15)
* feat(website): upgrade auth structure with keys array and display dependency API keys
* feat(website): display skill installation counts from skills.sh (#13)
- Add scripts/fetch-install-stats.py to scrape install counts
- Add GitHub Action to run daily and update install-stats.json
- Update worker.js to show install count badges on skill cards and detail pages
- Generate initial install-stats.json
Closes#12
* feat(blog): add FAQPage schema and dateModified for GEO optimization
- Add FAQ items to blog posts 2 & 3 (domain-hunting, what-is-opc)
- Add dateModified field to all blog posts for freshness signals
- Add additional citations to improve AI search visibility
- Analyze 100x engagement gap between traditional docs and skills
- Cover ecosystem tools: Skills.sh, Mintlify, awesome-claude-code
- Include docs-to-skills conversion guide
- Add SEO metadata to blog.json
- Fixed jq query to correctly extract dependency names from object format
Changed: keys[]? | .[] (which extracted version values)
To: select(.dependencies | type == "object") | .dependencies | keys[]
- Added explicit 'shell: bash' for test jobs on Windows
Windows runners default to PowerShell which can't execute Bash syntax
This ensures bash is used for all test steps regardless of OS
Changed validation script to handle new object-based dependency format
(from array to {dependency: version} format) while maintaining
backwards compatibility with legacy array format.
Previous format: "dependencies": ["twitter", "reddit"]
New format: "dependencies": {"twitter": ">=1.0.0", "reddit": ">=1.0.0"}
- AGENTS.md: Complete project configuration with skill development patterns, versioning strategy, git workflow, and commit conventions
- CHANGELOG.md: Version history starting from v1.0.0 with all 9 OPC Skills and their features
- Includes dependency tracking, release process, and best practices for skill management
- Change install command to include all dependencies directly
- Simplify note to just mention what's required
- Makes it clearer that dependencies are auto-included in the command
- Title: Claude Code Skills for Solopreneurs | AI Tools for One-Person Companies
- H1: Claude Code Skills for Solopreneurs (preserves brand uniqueness)
- Description: Claude Code skills FOR solopreneurs (target audience + SEO keyword)
- FAQ: 'What are Claude Code skills for solopreneurs?' (long-tail, low competition)
Strategy: Combine high-volume keyword 'Claude Code skills' (1,000/mo) with
unique positioning 'for solopreneurs' (near-zero competition) to capture both
search traffic AND brand differentiation.
Benefits:
- SEO: 'Claude Code skills' at front of title (Google priority)
- Brand: Solopreneur/indie hacker positioning maintained
- Conversion: Clear target audience (one-person companies)
- Competition: Unique angle vs generic 'developer tools'
- Change title: Claude Code Skills & Extensions | 10+ AI Agent Tools
- Update H1: Claude Code Skills & Extensions (from solopreneur focus)
- Update meta description with Claude Code focus (1,000/mo vs 30/mo search volume)
- Add 3 new FAQs targeting high-search queries:
* What are Claude Code skills?
* How do I install Claude Code extensions?
* Are these skills compatible with Cursor AI?
- Update og:tags and twitter cards with new messaging
- Optimize for developer audience vs solopreneur (33x search volume difference)
Based on DataForSEO keyword research showing 'Claude Code skills' has 1,000/mo
searches vs 'solopreneur tools' 30/mo.
On Windows Git Bash, jq outputs CRLF line endings which causes
dependency names to include trailing carriage returns. This breaks
skill resolution when looking for directories like 'nanobanana\r'.
Add strip_cr() helper function and pipe all jq output through it.
Fixes#2