{"id":39397013,"url":"https://github.com/obeone/claude-skills","last_synced_at":"2026-05-17T02:22:23.771Z","repository":{"id":331167194,"uuid":"1125548319","full_name":"obeone/claude-skills","owner":"obeone","description":"🧠 Modular skills for autonomous AI agents. Production-ready Docker \u0026 Kubernetes tooling with built-in validators. Install once, use everywhere.","archived":false,"fork":false,"pushed_at":"2026-04-25T01:09:07.000Z","size":600,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-25T02:40:57.038Z","etag":null,"topics":["claude","claude-code","claude-skills","llm-skills","skill","skills"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/obeone.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-30T23:38:24.000Z","updated_at":"2026-04-25T01:07:15.000Z","dependencies_parsed_at":"2026-03-04T14:00:34.394Z","dependency_job_id":null,"html_url":"https://github.com/obeone/claude-skills","commit_stats":null,"previous_names":["obeone/claude-skills"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/obeone/claude-skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obeone%2Fclaude-skills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obeone%2Fclaude-skills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obeone%2Fclaude-skills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obeone%2Fclaude-skills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/obeone","download_url":"https://codeload.github.com/obeone/claude-skills/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obeone%2Fclaude-skills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32250601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T04:23:17.126Z","status":"ssl_error","status_checked_at":"2026-04-25T04:21:53.360Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","claude-code","claude-skills","llm-skills","skill","skills"],"created_at":"2026-01-18T03:17:13.287Z","updated_at":"2026-05-17T02:22:23.763Z","avatar_url":"https://github.com/obeone.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Claude Skills](https://img.shields.io/badge/Claude-Skills-5A67D8?style=for-the-badge\u0026logo=anthropic\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/Docker-Best_Practices-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![Helm](https://img.shields.io/badge/Helm-Charts-0F1689?style=for-the-badge\u0026logo=helm\u0026logoColor=white)\n\n# 🤖 Claude Agent Skills Stack\n\n**Self-contained skills for autonomous AI agents**\n*Production-ready tools, templates, and validators for Docker and Kubernetes*\n\n[Installation](#-installation) • [Skills](#-available-skills) • [Quick Start](#-quick-start) • [Architecture](#-architecture) • [Development](#-development)\n\n---\n\n## 🔄 Breaking Change — `helm-chart-generator` renamed to `helm-bjw-s-chart` (v3.0.0)\n\nStarting with release **v3.0.0**, the skill formerly known as **`helm-chart-generator`** is now called **`helm-bjw-s-chart`** to make its scope explicit (it targets the `bjw-s` common library, not generic Helm charts).\n\n**What changes for you:**\n\n| Before (\u003c= v2.x) | After (\u003e= v3.0.0) |\n|---|---|\n| Skill directory: `skills/helm-chart-generator/` | `skills/helm-bjw-s-chart/` |\n| Release asset: `helm-chart-generator.skill` | `helm-bjw-s-chart.skill` |\n| Install path: `~/.claude/skills/helm-chart-generator/` | `~/.claude/skills/helm-bjw-s-chart/` |\n| Agent/skill reference: `helm-chart-generator` | `helm-bjw-s-chart` |\n\n**Migration:**\n\n```bash\n# 1. Remove the old skill\nrm -rf ~/.claude/skills/helm-chart-generator\n\n# 2. Install the new one (see Installation section below)\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/helm-bjw-s-chart.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d ~/.claude/skills/\n```\n\nAny automation, doc, or agent still pointing to the old URL or name will break at the first install/refresh after v3.0.0 ships.\n\n---\n\n## 🔄 Breaking Change — `gemini-tts-script` renamed to `tts-duet` (v2.0.0)\n\nStarting with release **v2.0.0**, the skill formerly known as **`gemini-tts-script`** is now called **`tts-duet`** to better reflect its dual-voice and MCP-based architecture.\n\n**What changes for you:**\n\n| Before (\u003c= v1.x) | After (\u003e= v2.0.0) |\n|---|---|\n| Skill directory: `skills/gemini-tts-script/` | `skills/tts-duet/` |\n| Release asset: `gemini-tts-script.skill` | `tts-duet.skill` |\n| Install path: `~/.claude/skills/gemini-tts-script/` | `~/.claude/skills/tts-duet/` |\n| Agent/skill reference: `gemini-tts-script` | `tts-duet` |\n\n**Migration:**\n\n```bash\n# 1. Remove the old skill\nrm -rf ~/.claude/skills/gemini-tts-script\n\n# 2. Install the new one (see Installation section below)\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/tts-duet.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d ~/.claude/skills/\n```\n\nAny automation, doc, or agent still pointing to the old name will break at the first install/refresh after v2.0.0 ships.\n\n## 🔄 Breaking Change — `tts-duet` is command-first (skill v3.0.0)\n\nStarting with skill **v3.0.0**, `tts-duet` is no longer keyword\nauto-triggered. The `SKILL.md` is now a thin manifest; the authoritative\nworkflow lives in **`commands/tts-duet.md`** and is invoked explicitly\nas **`/tts-duet`** (with **`/tts-duet-setup`** for configuration). The\n`.skill` package, scripts, references, and assets are unchanged.\n\n**What changes for you:**\n\n| Before (\u003c= v2.x) | After (\u003e= v3.0.0) |\n|---|---|\n| Auto-triggered on \"TTS\"/\"podcast\"/\"voiceover\" | Explicit `/tts-duet` invocation only |\n| Workflow in `SKILL.md` | Workflow in `commands/tts-duet.md` |\n| Self-detaching `--background` nohup lane | Removed — long jobs run synchronously |\n| API key from ad-hoc env | `GEMINI_API_KEY` export (recommended) or user-level `~/.claude/settings.json` `env` block |\n\nAny automation relying on implicit triggering must call `/tts-duet`\n(or the `scripts/*.py` entry points directly) instead.\n\n**Also in v3.0.0:** the self-detaching `--background` nohup lane has\nbeen **removed** — `generate_tts.py` no longer forks a detached child;\nlong jobs run synchronously and the calling agent backgrounds the run\nvia its own mechanism if it wants detachment. The recommended Gemini\nAPI-key channel is a `GEMINI_API_KEY` **shell export** in the session\nthat launches Claude Code (it can be sourced from a password manager,\nso the key need not sit in plaintext on disk); the simpler fallback is\nthe user-level `~/.claude/settings.json` `\"env\"` block (restart Claude\nCode after editing). A new `generate_tts.py --check-key` flag (and a\nStep 0 preflight in `/tts-duet`) fails fast when the MCP cannot see a\nhealthy key.\n\n---\n\n## 📦 Installation\n\n### Claude Code (CLI)\n\n```bash\n# Personal skills (available in all projects)\nmkdir -p ~/.claude/skills\n\n# Install dockerfile-best-practices\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/dockerfile-best-practices.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d ~/.claude/skills/\n\n# Install helm-bjw-s-chart\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/helm-bjw-s-chart.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d ~/.claude/skills/\n\n# Install automode-config\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/automode-config.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d ~/.claude/skills/\n```\n\nFor project-specific skills, use `.claude/skills` instead of `~/.claude/skills`:\n\n```bash\nmkdir -p .claude/skills\n\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/dockerfile-best-practices.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d .claude/skills/\n\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/helm-bjw-s-chart.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d .claude/skills/\n\ncurl -L https://github.com/obeone/claude-skills/releases/latest/download/automode-config.skill \\\n  -o /tmp/skill.zip \u0026\u0026 unzip -o /tmp/skill.zip -d .claude/skills/\n```\n\n### Claude.ai (Web)\n\n1. Download the `.skill` bundles from [Releases](../../releases)\n2. Go to **Settings** → **Skills**\n3. Click **Upload skill** and select each `.skill` file\n\n### From Source\n\nClone the repository to use skills directly:\n\n```bash\ngit clone https://github.com/obeone/claude-skills.git\n\n# Copy all skills to your skills directory\ncp -r claude-skills/skills/dockerfile-best-practices ~/.claude/skills/\ncp -r claude-skills/skills/helm-bjw-s-chart ~/.claude/skills/\ncp -r claude-skills/skills/automode-config ~/.claude/skills/\n```\n\n### Other Platforms\n\n| Platform | Installation |\n|----------|--------------|\n| [Roo Code](https://roo.ai) | Add to `.roo/skills/` directory |\n| [Cline](https://github.com/cline/cline) | Add to `.cline/skills/` directory |\n| Generic | Extract `.skill` to your agent's skills directory |\n\n\u003e **How it works**: Skills are packaged using [Skill Pack](https://github.com/marketplace/actions/skill-pack) on every release. The action creates `.skill` bundles (ZIP archives) and uploads them to GitHub releases.\n\n---\n\n## 📖 Overview\n\nThis repository provides **modular skills** for Claude and other AI agents. Each skill is a self-contained bundle that includes:\n\n- 📋 **SKILL.md** — Main entry point with decision trees and workflows\n- 🔧 **Scripts** — Python validators and analyzers\n- 📚 **References** — Deep-dive documentation and best practices\n- 📦 **Assets** — Templates and boilerplate code\n\nSkills are designed to be **installed once, used everywhere** — whether you're optimizing a Dockerfile, generating Helm charts, or setting up CI/CD pipelines.\n\n## ⚡ Quick Start\n\n### Using with Claude Code\n\nSkills are automatically discovered when you run Claude Code in this repository. Simply ask:\n\n```text\n\"Create a Dockerfile for my Python FastAPI application\"\n\"Generate a Helm chart for this container image\"\n\"Analyze my Dockerfile for best practices\"\n\"Set up Claude Code autoMode for this project\"\n```\n\n### Manual Usage\n\n```bash\n# Analyze a Dockerfile (uv reads PEP 723 metadata in the script header)\nuv run skills/dockerfile-best-practices/scripts/analyze_dockerfile.py ./Dockerfile\n\n# Analyze a Docker Compose file\nuv run skills/dockerfile-best-practices/scripts/analyze_compose.py ./compose.yaml\n\n# Validate a Helm chart\nuv run skills/helm-bjw-s-chart/scripts/validate_chart.py ./my-chart/\n\n# Inspect Claude Code autoMode state for the current project\nuv run skills/automode-config/scripts/inspect_automode.py\n\n# Scan the project for autoMode adoption candidates\nuv run skills/automode-config/scripts/scan_project.py\n```\n\n## 🎯 Available Skills\n\n| Skill | Description | Key Features |\n|-------|-------------|--------------|\n| [**dockerfile-best-practices**](./skills/dockerfile-best-practices/) | Create and optimize Dockerfiles with BuildKit, multi-stage builds, and security hardening | BuildKit syntax, cache mounts, non-root users, Python/uv integration |\n| [**helm-bjw-s-chart**](./skills/helm-bjw-s-chart/) | Generate production-ready Helm charts using bjw-s common library | app-template v4+, sidecars, init containers, ingress patterns |\n| [**tts-duet**](./skills/tts-duet/) | Author mono or dual-voice audio scripts and generate them with Gemini TTS — command-first, invoked via `/tts-duet` | Adaptation pre-pass (agent or MCP), shape/language defaults, director enrichment, offline cost estimate, voice audition, synchronous generation |\n| [**automode-config**](./skills/automode-config/) | Author, validate, and migrate project-level Claude Code `autoMode` blocks (4-bucket model) | `claude auto-mode critique` gate, atomic flock-protected writes, hash-gated commits, `hard_deny` round-trip, automatic swap-file when `--settings` is missing, `--repair` for stranded state |\n\n## 🧩 Architecture\n\n```\nskills/\u003cskill-name\u003e/\n├── SKILL.md              # Entry point with YAML front-matter\n│                         # Contains: name, description\n│\n├── scripts/              # Python validation tools\n│   ├── analyze_*.py      # Static analyzers — PEP 723 inline deps\n│   └── validate_*.py     # Structure validators — PEP 723 inline deps\n│\n├── assets/               # Templates and static files\n│   └── templates/        # Boilerplate code\n│\n└── references/           # Documentation and guides\n    ├── best-practices.md # Comprehensive checklists\n    ├── patterns.md       # Common patterns and examples\n    └── *.md              # Topic-specific guides\n```\n\n### Design Principles\n\n| Principle | Description |\n|-----------|-------------|\n| **Self-contained** | Each skill bundles everything needed — no external dependencies on other skills |\n| **Progressive disclosure** | SKILL.md for quick start, references for deep dives |\n| **Validation-first** | Every skill includes scripts to verify output quality |\n| **Modern tooling** | BuildKit, Compose V2, Helm v3, bjw-s v4+, Python via `uv` |\n\n## 📘 Usage\n\n### Skill Installation\n\nSkills can be packaged and distributed using the [Skill Pack](https://github.com/NimbleBrainInc/skill-pack) action:\n\n```bash\n# Skills are automatically packed on release\ngit tag v1.0.0\ngit push origin v1.0.0\n```\n\n### CI/CD Integration\n\nThis repository includes GitHub Actions workflows:\n\n| Workflow | Trigger | Purpose |\n|----------|---------|---------|\n| `validate-skills.yml` | PRs, push to main | Validate SKILL.md frontmatter and structure |\n| `publish-skills.yml` | Tag push (`v*`) | Pack skills, create release, upload to registry |\n\n### Python Scripts\n\nEvery entry-point script declares its dependencies inline as a [PEP 723](https://peps.python.org/pep-0723/) header. `uv run path/to/script.py` resolves and caches them automatically — no `pip install` step.\n\n```bash\n# Install uv if needed\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Run a script (uv reads the script's PEP 723 header and prepares the env)\nuv run skills/dockerfile-best-practices/scripts/analyze_dockerfile.py ./Dockerfile\n```\n\n## 🔍 Key Features by Skill\n\n### dockerfile-best-practices\n\n- **Language templates**: Python/uv, Node.js, Go, PHP, Debian\n- **Security patterns**: Non-root users (UID/GID \u003e10000), secret mounts, version pinning\n- **Performance optimization**: Cache mounts, multi-stage builds, layer ordering\n- **Static analyzer**: Detects 15+ anti-patterns automatically\n- **Compose support**: Modern V2 practices (no `version:`, no `container_name:`)\n\n### helm-bjw-s-chart\n\n- **bjw-s common library**: app-template v4+ patterns\n- **Complete chart structure**: Chart.yaml, values.yaml, common.yaml, NOTES.txt\n- **Deployment patterns**: Single container, sidecars, init containers, multi-controller\n- **Best practices**: Resource limits, security contexts, health probes\n- **Chart validator**: Verifies structure and bjw-s compatibility\n\n### automode-config\n\n- **Four-bucket model**: `allow` / `ask` / `deny` / `hard_deny` with `hard_deny` round-trip\n- **Critique-gated writes**: `claude auto-mode critique` exit code is the contract; raw output archived per run\n- **Atomic + reversible**: per-file flock, `O_EXCL` write, five rolling backups, sha256 commit predicate\n- **Capability auto-detection**: silently swaps `~/.claude/settings.json` when the CLI lacks `--settings`\n- **Recovery**: `--repair` reclaims stale flocks and restores `.preview-orig` orphans\n- **Requires** Claude Code 2.1.136+\n\n## 🔨 Development\n\n### Repository Structure\n\n```\n.\n├── README.md             # This file\n├── CLAUDE.md             # Claude Code configuration\n├── AGENTS.md             # Agent guidelines\n├── .github/\n│   └── workflows/        # CI/CD automation\n└── skills/\n    ├── dockerfile-best-practices/\n    ├── helm-bjw-s-chart/\n    ├── tts-duet/\n    └── automode-config/\n```\n\n### Mandatory Requirements\n\n1. **SKILL.md YAML front-matter**: Every skill must have `name`, `description`, and `metadata.version`:\n   ```yaml\n   ---\n   name: my-skill\n   description: \"Skill description\"\n   metadata:\n     version: \"1.0.0\"\n   ---\n   ```\n2. **POSIX compliance**: All files must end with newline (`\\n`) and use LF line endings\n3. **Python via uv**: Use `uv` for dependency management\n\n### Adding a New Skill\n\n1. Create `skills/\u003cskill-name\u003e/SKILL.md` with required front-matter (see format above)\n2. Add `scripts/` with validators and analyzers\n3. Add `references/` with deep-dive documentation\n4. Add `assets/` with templates if needed\n5. Submit a PR — the `validate-skills` workflow will verify structure\n\n## 📄 License\n\nMIT License — see [LICENSE](LICENSE) for details.\n\n## 🙏 Credits\n\n- [bjw-s common library](https://github.com/bjw-s/helm-charts) for Helm chart patterns\n- [astral-sh/uv](https://github.com/astral-sh/uv) for Python package management\n- [Docker BuildKit](https://docs.docker.com/build/buildkit/) for modern build features\n\n---\n\n*Built with 🤖 by autonomous agents, for autonomous agents*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobeone%2Fclaude-skills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobeone%2Fclaude-skills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobeone%2Fclaude-skills/lists"}