Repository navigation
Add AI Agent Skills for LLM-Powered Infrastructure Development #2121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
30 commits
Select commit
Hold shift + click to select a range
5eed274
atmos skills
aknysh c7ff02c
Add Atmos agent skills for AI-powered development tools
aknysh 6a3bfa1
atmos skills
aknysh 316d07b
Add 7 new agent skills: helmfile, packer, ansible, auth, stores, sche…
aknysh 38ff655
Move agent skills from .claude/skills/ to agent-skills/ for tool-agno…
aknysh 5f1f4e3
Add website docs, blog post, and roadmap update for AI agent skills
aknysh 3bc4cd4
atmos skills
aknysh 07e1817
atmos skills
aknysh 2ac09fb
atmos skills
aknysh 81cc5bf
address comments
aknysh c084114
address comments
aknysh 4b5555a
address comments
aknysh 252c988
address comments
aknysh 82eedeb
Add CI workflow to validate agent skills structure and size
aknysh 1c19258
Restructure agent-skills for Claude Code plugin marketplace distribution
aknysh d20269c
Fix AI tool integration instructions and AGENTS.md path resolution
aknysh f215bd4
Fix CI: remove dead link and update redirecting URLs in PRD
aknysh 8b52db5
Merge branch 'main' into aknysh/atmos-skills
aknysh bbddd13
Merge branch 'main' into aknysh/atmos-skills
aknysh 0dd1f52
Move AI tool setup instructions to /projects/setup-editor/ai-assistants
aknysh 72678ea
update docs
aknysh 5a92a28
refactor skills
aknysh 043a886
refactor skills
aknysh b30dab0
refactor skills
aknysh 31c1f5c
refactor skills
aknysh daa29ca
refactor skills
aknysh f67d798
refactor skills
aknysh 06083cf
Merge branch 'main' into aknysh/atmos-skills
aknysh 010a2f6
Merge branch 'main' into aknysh/atmos-skills
aknysh ecb3164
Merge branch 'main' into aknysh/atmos-skills
aknysh File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| { | ||
| "name": "cloudposse", | ||
| "owner": { | ||
| "name": "Cloud Posse", | ||
| "email": "opensource@cloudposse.com" | ||
| }, | ||
| "metadata": { | ||
| "description": "Official Atmos plugins and skills for Claude Code", | ||
| "version": "1.0.0", | ||
| "pluginRoot": "./agent-skills" | ||
| }, | ||
| "plugins": [ | ||
| { | ||
| "name": "atmos", | ||
| "source": ".", | ||
| "description": "Atmos skills for AI coding assistants: Terraform/Helmfile/Packer/Ansible orchestration, stack configuration, components, vendoring, validation, YAML functions, Go templates, authentication, stores, workflows, and design patterns.", | ||
| "version": "1.0.0", | ||
| "author": { | ||
| "name": "Cloud Posse" | ||
| }, | ||
| "homepage": "https://atmos.tools/integrations/ai/agent-skills", | ||
| "repository": "https://github.com/cloudposse/atmos", | ||
| "license": "Apache-2.0", | ||
| "keywords": ["atmos", "terraform", "infrastructure", "iac", "devops", "cloud"], | ||
| "category": "integration", | ||
| "strict": false | ||
| } | ||
| ] | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-ansible |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-auth |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-components |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-config |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-custom-commands |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-design-patterns |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-devcontainer |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-gitops |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-helmfile |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-introspection |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-packer |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-schemas |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-stacks |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-stores |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-templates |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-terraform |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-toolchain |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-validation |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-vendoring |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-workflows |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| ../../agent-skills/skills/atmos-yaml-functions |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,212 @@ | ||
| name: Validate Agent Skills | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| paths: | ||
| - "agent-skills/**" | ||
| - ".claude-plugin/**" | ||
| pull_request: | ||
| branches: [main] | ||
| paths: | ||
| - "agent-skills/**" | ||
| - ".claude-plugin/**" | ||
|
|
||
| jobs: | ||
| validate-skills: | ||
| name: Validate agent skills structure and size | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Validate AGENTS.md exists | ||
| run: | | ||
| if [ ! -f "agent-skills/AGENTS.md" ]; then | ||
| echo "::error::Missing agent-skills/AGENTS.md" | ||
| exit 1 | ||
| fi | ||
| echo "AGENTS.md exists" | ||
|
|
||
| - name: Validate plugin directory structure | ||
| run: | | ||
| ERRORS=0 | ||
| if [ ! -f "agent-skills/.claude-plugin/plugin.json" ]; then | ||
| echo "::error::Missing agent-skills/.claude-plugin/plugin.json" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| if [ ! -d "agent-skills/skills" ]; then | ||
| echo "::error::Missing agent-skills/skills/ directory" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| if [ $ERRORS -gt 0 ]; then | ||
| echo "Found $ERRORS plugin structure error(s)" | ||
| exit 1 | ||
| fi | ||
| echo "Plugin directory has correct structure" | ||
|
|
||
| - name: Validate marketplace.json exists | ||
| run: | | ||
| if [ ! -f ".claude-plugin/marketplace.json" ]; then | ||
| echo "::error::Missing .claude-plugin/marketplace.json" | ||
| exit 1 | ||
| fi | ||
| echo "marketplace.json exists" | ||
|
|
||
| - name: Validate SKILL.md frontmatter | ||
| run: | | ||
| ERRORS=0 | ||
| while IFS= read -r -d '' f; do | ||
| FIRST_LINE=$(head -1 "$f") | ||
| if [ "$FIRST_LINE" != "---" ]; then | ||
| echo "::error file=$f::Missing frontmatter delimiter (first line must be ---)" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| if ! grep -q "^name:" "$f"; then | ||
| echo "::error file=$f::Missing required 'name:' field in frontmatter" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| if ! grep -q "^description:" "$f"; then | ||
| echo "::error file=$f::Missing required 'description:' field in frontmatter" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| done < <(find agent-skills -name "SKILL.md" -print0) | ||
| if [ $ERRORS -gt 0 ]; then | ||
| echo "Found $ERRORS SKILL.md validation error(s)" | ||
| exit 1 | ||
| fi | ||
| echo "All SKILL.md files have valid frontmatter" | ||
|
|
||
| - name: Validate skill directories contain SKILL.md | ||
| run: | | ||
| ERRORS=0 | ||
| while IFS= read -r -d '' dir; do | ||
| SKILL_NAME=$(basename "$dir") | ||
| if [[ "$SKILL_NAME" == atmos-* ]] && [ ! -f "$dir/SKILL.md" ]; then | ||
| echo "::error::Missing SKILL.md in $dir" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| done < <(find agent-skills/skills -mindepth 1 -maxdepth 1 -type d -print0) | ||
| if [ $ERRORS -gt 0 ]; then | ||
| echo "Found $ERRORS missing SKILL.md file(s)" | ||
| exit 1 | ||
| fi | ||
| echo "All skill directories contain SKILL.md" | ||
|
|
||
| - name: Check SKILL.md line count (max 500 lines per spec) | ||
| run: | | ||
| # Agent Skills spec recommends SKILL.md under 500 lines | ||
| # https://agentskills.io/specification#progressive-disclosure | ||
| MAX_LINES=500 | ||
| ERRORS=0 | ||
| while IFS= read -r -d '' f; do | ||
| LINES=$(wc -l < "$f") | ||
| if [ "$LINES" -gt "$MAX_LINES" ]; then | ||
| echo "::error file=$f::$LINES lines exceeds ${MAX_LINES}-line limit. Move detailed content to references/" | ||
| ERRORS=$((ERRORS + 1)) | ||
| elif [ "$LINES" -gt 450 ]; then | ||
| echo "::warning file=$f::$LINES lines, approaching ${MAX_LINES}-line limit" | ||
| fi | ||
| done < <(find agent-skills -name "SKILL.md" -print0) | ||
| if [ $ERRORS -gt 0 ]; then | ||
| echo "Found $ERRORS SKILL.md file(s) exceeding the ${MAX_LINES}-line limit" | ||
| exit 1 | ||
| fi | ||
| echo "All SKILL.md files are within the ${MAX_LINES}-line limit" | ||
|
|
||
| - name: Check file sizes (max 20KB for SKILL.md, max 25KB for references) | ||
| run: | | ||
| # Agent Skills spec recommends < 5000 tokens for SKILL.md body (~20KB) | ||
| # Reference files are loaded on demand so get a slightly higher limit | ||
| SKILL_MAX=20480 # 20KB for SKILL.md | ||
| REF_MAX=25600 # 25KB for reference files | ||
| SKILL_WARN=18432 # 18KB warning threshold | ||
| REF_WARN=23552 # 23KB warning threshold | ||
| ERRORS=0 | ||
|
|
||
| # Check SKILL.md files | ||
| while IFS= read -r -d '' f; do | ||
| SIZE=$(wc -c < "$f") | ||
| if [ "$SIZE" -gt "$SKILL_MAX" ]; then | ||
| echo "::error file=$f::${SIZE} bytes exceeds ${SKILL_MAX}-byte limit. Move detailed content to references/" | ||
| ERRORS=$((ERRORS + 1)) | ||
| elif [ "$SIZE" -gt "$SKILL_WARN" ]; then | ||
| echo "::warning file=$f::${SIZE} bytes, approaching ${SKILL_MAX}-byte limit" | ||
| fi | ||
| done < <(find agent-skills -name "SKILL.md" -print0) | ||
|
|
||
| # Check reference files | ||
| while IFS= read -r -d '' f; do | ||
| SIZE=$(wc -c < "$f") | ||
| if [ "$SIZE" -gt "$REF_MAX" ]; then | ||
| echo "::error file=$f::${SIZE} bytes exceeds ${REF_MAX}-byte limit. Split into smaller reference files" | ||
| ERRORS=$((ERRORS + 1)) | ||
| elif [ "$SIZE" -gt "$REF_WARN" ]; then | ||
| echo "::warning file=$f::${SIZE} bytes, approaching ${REF_MAX}-byte limit" | ||
| fi | ||
| done < <(find agent-skills/skills/*/references -name "*.md" -print0 2>/dev/null) | ||
|
|
||
| # Check AGENTS.md (same limit as reference files) | ||
| if [ -f "agent-skills/AGENTS.md" ]; then | ||
| SIZE=$(wc -c < "agent-skills/AGENTS.md") | ||
| if [ "$SIZE" -gt "$REF_MAX" ]; then | ||
| echo "::error file=agent-skills/AGENTS.md::${SIZE} bytes exceeds ${REF_MAX}-byte limit" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| fi | ||
|
|
||
| if [ $ERRORS -gt 0 ]; then | ||
| echo "Found $ERRORS file(s) exceeding size limits" | ||
| exit 1 | ||
| fi | ||
| echo "All skill files are within size limits" | ||
|
|
||
| - name: Validate code fence language tags | ||
| run: | | ||
| ERRORS=0 | ||
| while IFS= read -r -d '' f; do | ||
| # Find opening code fences without language tags | ||
| # Track open/close state to skip closing fences | ||
| UNLABELED=$(awk ' | ||
| /^```$/ { | ||
| if (!in_block) { print NR": "$0 } | ||
| in_block = !in_block | ||
| next | ||
| } | ||
| /^```[a-zA-Z]/ { in_block = 1; next } | ||
| /^```[^a-zA-Z]/ { print NR": "$0; next } | ||
| /^``` / { print NR": "$0; next } | ||
| ' "$f") | ||
| if [ -n "$UNLABELED" ]; then | ||
| echo "::error file=$f::Unlabeled code fences found (add language tags like yaml, bash, text, json)" | ||
| echo "$UNLABELED" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| done < <(find agent-skills -name "*.md" -print0) | ||
| if [ $ERRORS -gt 0 ]; then | ||
| echo "Found $ERRORS file(s) with unlabeled code fences" | ||
| exit 1 | ||
| fi | ||
| echo "All code fences have language tags" | ||
|
|
||
| - name: Validate plugin.json files | ||
| run: | | ||
| ERRORS=0 | ||
| while IFS= read -r -d '' f; do | ||
| if ! python3 -c "import json; json.load(open('$f'))" 2>/dev/null; then | ||
| echo "::error file=$f::Invalid JSON syntax" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| done < <(find agent-skills -name "plugin.json" -print0) | ||
| # Also validate marketplace.json | ||
| if [ -f ".claude-plugin/marketplace.json" ]; then | ||
| if ! python3 -c "import json; json.load(open('.claude-plugin/marketplace.json'))" 2>/dev/null; then | ||
| echo "::error file=.claude-plugin/marketplace.json::Invalid JSON syntax" | ||
| ERRORS=$((ERRORS + 1)) | ||
| fi | ||
| fi | ||
| if [ $ERRORS -gt 0 ]; then | ||
| echo "Found $ERRORS invalid JSON file(s)" | ||
| exit 1 | ||
| fi | ||
| echo "All JSON manifests are valid" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| { | ||
| "name": "atmos", | ||
| "version": "1.0.0", | ||
| "description": "Atmos skills for AI coding assistants: Terraform/Helmfile/Packer/Ansible orchestration, stack configuration, components, vendoring, validation, YAML functions, Go templates, authentication, stores, workflows, and design patterns.", | ||
| "author": { | ||
| "name": "Cloud Posse", | ||
| "url": "https://github.com/cloudposse" | ||
| }, | ||
| "homepage": "https://atmos.tools/integrations/ai/agent-skills", | ||
| "repository": "https://github.com/cloudposse/atmos", | ||
| "license": "Apache-2.0", | ||
| "keywords": ["atmos", "terraform", "infrastructure", "iac", "devops", "cloud"] | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.