Claude-skill-registry 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.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ansible-fix" ~/.claude/skills/majiayu000-claude-skill-registry-ansible-fix && rm -rf "$T"
skills/data/ansible-fix/SKILL.mdAnsible 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:
- Missing space after # in commentsyaml[comments]
- Unquoted version stringsschema[meta]
- Placeholder metadata valuesmeta-incorrect
- Unnamed playsname[play]
- Incorrect role import pathsrole-name[path]
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.1min_ansible_version: "2.1"
-
meta-incorrect: Replaces placeholder values with sensible defaults
→author: your nameauthor: Ansible User
→company: your company (optional)company: Community
→license: license (GPL-2.0-or-later, MIT, etc)license: MIT
-
name[play]: Adds descriptive names to unnamed plays
- Adds
to playsname: Test playbook for <hosts>
- Adds
-
role-name[path]: Fixes role import paths
→roles/nginxnginx
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
, the path isansible-galaxy init roles/nginx
). Do not ask the user - proceed automatically.roles/nginx -
Run the fixer script:
uv run .claude/skills/ansible-fix/ansible-lint-fix.py <role_path>Example:
uv 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:
ansible-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
- lowercase, numbers, underscores only, no hyphens)^[a-z][a-z0-9_]*$
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).