Agent skill
ansible-fix
ALWAYS use this skill immediately after running 'ansible-galaxy init' to create a new Ansible role. Also use when the user asks to fix ansible-lint errors or when ansible-lint output shows fixable issues like yaml[comments], schema[meta], meta-incorrect, name[play], or role-name[path] violations.
Install this agent skill to your Project
npx add-skill https://github.com/jphetphoumy/skillstack/tree/main/skills/ansible-fix
SKILL.md
Ansible Lint Auto-Fixer
This skill automatically fixes common ansible-lint errors that can be easily automated, saving time when creating new Ansible roles.
When to Use This Skill
ALWAYS invoke this skill proactively:
- Immediately after running
ansible-galaxy init roles/<name> - Do NOT wait for the user to ask - fix lint issues automatically
- This provides a better user experience by delivering clean, lint-free roles
Also use when:
- User explicitly asks to fix ansible-lint errors
- ansible-lint output shows any of these fixable errors:
yaml[comments]- Missing space after # in commentsschema[meta]- Unquoted version stringsmeta-incorrect- Placeholder metadata valuesname[play]- Unnamed playsrole-name[path]- Incorrect role import paths
What It Fixes
The skill runs a Python script that automatically corrects:
-
yaml[comments]: Adds space after
#in comments#comment→# comment
-
schema[meta]: Quotes numeric version strings
min_ansible_version: 2.1→min_ansible_version: "2.1"
-
meta-incorrect: Replaces placeholder values with sensible defaults
author: your name→author: Ansible Usercompany: your company (optional)→company: Communitylicense: license (GPL-2.0-or-later, MIT, etc)→license: MIT
-
name[play]: Adds descriptive names to unnamed plays
- Adds
name: Test playbook for <hosts>to plays
- Adds
-
role-name[path]: Fixes role import paths
roles/nginx→nginx
Instructions
IMPORTANT: This skill should be invoked automatically whenever you create a new role with ansible-galaxy init. Do not wait for the user to ask - proactively fix lint issues to provide a clean role.
When invoked, follow these steps:
-
Identify the role path from context (e.g., if you just ran
ansible-galaxy init roles/nginx, the path isroles/nginx). Do not ask the user - proceed automatically. -
Run the fixer script:
bashuv run .claude/skills/ansible-fix/ansible-lint-fix.py <role_path>Example:
bashuv run .claude/skills/ansible-fix/ansible-lint-fix.py roles/nginx -
Review the output to see what was fixed:
- Number of files modified
- Types of fixes applied
- Count of each fix type
-
Verify the fixes by running ansible-lint:
bashansible-lint <role_path> 2>&1 -
Report results to the user:
- Show summary of fixes applied
- Confirm if all issues are resolved (0 failures, 0 warnings)
- If issues remain, explain what still needs manual fixing
Supporting Files
The skill uses the ansible-lint-fix.py script. This script:
- Scans all YAML files in the role directory
- Applies regex-based fixes for common patterns
- Reports detailed statistics on what was changed
Examples
Example 1: After creating a new role
User: I just created a new nginx role with ansible-galaxy init roles/nginx
Assistant: [Invokes ansible-fix skill]
- Runs: uv run .claude/skills/ansible-fix/ansible-lint-fix.py roles/nginx
- Reports: Fixed 12 issues across 6 files
- Verifies: ansible-lint shows 0 failures, 0 warnings
Example 2: Fixing existing linting issues
User: Can you fix the ansible-lint errors in my web-server role?
Assistant: [Invokes ansible-fix skill]
- Runs: uv run .claude/skills/ansible-fix/ansible-lint-fix.py roles/web-server
- Reports: Fixed 8 issues across 4 files
- Verifies: ansible-lint results
Best Practices
- Always run ansible-lint after using this skill to verify fixes
- The script is idempotent - safe to run multiple times
- Some issues may require manual intervention (explained in output)
- Review changes before committing to ensure they match project standards
Limitations
This skill only fixes syntactic and formatting issues. It does not:
- Write role tasks or handlers
- Configure role variables
- Implement role logic
- Fix complex YAML structural problems beyond the patterns it recognizes
- Fix role naming issues (role names must match
^[a-z][a-z0-9_]*$- lowercase, numbers, underscores only, no hyphens)
For complex linting issues or role development, manual intervention is needed.
Note: If ansible-lint reports role-name errors about the role name not matching the required pattern, the role directory itself needs to be renamed (e.g., test-role → test_role).
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
skill-builder
This skill exists to create new skills via the bundled CLI workflow.
ansible-testinfra
Bootstrap minimal testinfra pytest suite for an Ansible role and remind to run via uv
molecule-init
Initialize Molecule testing framework for Ansible roles with Docker-based TDD setup. Use when creating new Ansible roles, setting up molecule scenarios, or when user asks to initialize molecule testing.
hello-world
Simple prompt that greets the user and confirms Skillstack wiring.
ansible-role-init
Scaffold a new Ansible role via ansible-galaxy init
edit-article
Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.
Didn't find tool you were looking for?