Skip to content
Back to skills

Review Collection

ASecurity

Review an existing Ansible collection and produce a structured severity report grouped by CRITICAL, WARNING, and INFO. Triggered by /review-collection. Checks galaxy.yml completeness, directory structure, required files, meta/runtime.yml, and role quality. NEVER modifies files.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 26, 2026
devopspythontestingdocumentation

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add 3A2DEV/ansible-designer --skill review-collection --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Collection?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review Collection
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/3a2dev-review-collection/badge)](https://www.skillsdirectory.com/skills/3a2dev-review-collection)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review-collection
description: Review an existing Ansible collection and produce a structured severity report grouped by CRITICAL, WARNING, and INFO. Triggered by /review-collection. Checks galaxy.yml completeness, directory structure, required files, meta/runtime.yml, and role quality. NEVER modifies files.
---

# review-collection

Review an Ansible collection and produce a structured severity report. This command never modifies files.

---

## Required Inputs

1. **collection identification** — `namespace.name` or path to collection root (resolved from discovery if not provided)

---

## Behavior

### Step 1 — Discovery
Run discovery per `references/discovery.md`. Locate the collection:
- By `namespace.name` in `collections_path` directories
- By path if provided directly

### Step 2 — Load Collection
Read `galaxy.yml`, `meta/runtime.yml`, `README.md`, `CHANGELOG.md`, `LICENSE`.
Scan `plugins/`, `roles/`, `playbooks/`, `tests/` directories.

### Step 3 — Generate Severity Report

```
## Collection Review: <namespace>.<name>
Path: <collection_path>
Version: <version>
Reviewed: <timestamp>

---

### CRITICAL
[Critical issues]

### WARNING
[Warnings]

### INFO
[Informational notes]

---
Summary: <X> critical, <Y> warnings, <Z> info
```

---

## Checks to Perform

### CRITICAL

| Check | Condition | Message |
|-------|-----------|---------|
| galaxy.yml missing | File does not exist | `CRITICAL: galaxy.yml is missing — collection is not valid without it` |
| galaxy.yml: namespace missing | `namespace` field absent or empty | `[galaxy.yml] Required field 'namespace' is missing` |
| galaxy.yml: name missing | `name` field absent or empty | `[galaxy.yml] Required field 'name' is missing` |
| galaxy.yml: version missing | `version` field absent or empty | `[galaxy.yml] Required field 'version' is missing` |
| galaxy.yml: invalid version | Version is not semver (MAJOR.MINOR.PATCH) | `[galaxy.yml] Version '<ver>' is not valid semantic versioning (expected MAJOR.MINOR.PATCH)` |
| galaxy.yml: authors missing | `authors` list is empty or absent | `[galaxy.yml] Required field 'authors' is missing or empty` |
| Module syntax error | A plugin file has a Python syntax error | `[plugins/modules/<file>] Python syntax error: <error>` |

### WARNING

| Check | Condition | Message |
|-------|-----------|---------|
| README.md missing | File does not exist | `README.md is missing — add a collection overview with installation and usage instructions` |
| CHANGELOG.md missing | File does not exist | `CHANGELOG.md is missing — document version history for users` |
| LICENSE missing | File does not exist | `LICENSE file is missing — add a license (Apache 2.0 recommended)` |
| meta/runtime.yml missing | File does not exist | `meta/runtime.yml is missing — add 'requires_ansible' constraint` |
| meta/runtime.yml: no requires_ansible | `requires_ansible` absent | `[meta/runtime.yml] 'requires_ansible' not set — recommend adding ">=2.15.0"` |
| galaxy.yml: no dependencies listed | Dependencies field absent or empty when community collections are likely needed | `[galaxy.yml] No dependencies declared — if this collection uses community.general or similar, add them` |
| galaxy.yml: no tags | `tags` field absent or empty | `[galaxy.yml] No tags set — add relevant tags to improve Galaxy discoverability` |
| Role quality issues | Any role fails review-role checks | For each failing role, add a WARNING with the role name and check that failed |
| Module missing DOCUMENTATION | A plugin module lacks the DOCUMENTATION constant | `[plugins/modules/<file>] Module is missing DOCUMENTATION block — required for ansible-doc` |
| Module missing EXAMPLES | A plugin module lacks the EXAMPLES constant | `[plugins/modules/<file>] Module is missing EXAMPLES block` |
| Module missing RETURN | A plugin module lacks the RETURN constant | `[plugins/modules/<file>] Module is missing RETURN block` |
| Missing test guidance for plugins | Collection contains plugins but no `ansible-test` or usage guidance | `[tests/] Collection contains plugins but has no clear validation path aligned with references/testing.md` |

### INFO

| Check | Condition | Message |
|-------|-----------|---------|
| No roles defined | roles/ directory is empty | `No roles found in roles/ — use /ansible-designer:new-role to add a role` |
| No tests defined | tests/ directory is empty | `No tests found — consider adding integration tests for CI validation` |
| No playbooks | playbooks/ directory is empty | `No example playbooks found — consider adding a usage example in playbooks/` |
| galaxy.yml: no repository | `repository` field absent | `[galaxy.yml] No repository URL set` |
| galaxy.yml: description too long | description > 255 characters | `[galaxy.yml] Description is <N> characters — Galaxy recommends under 255` |

---

## Role Quality Checks

For each role found in `roles/`:
- Run the review-role checks (FQCN, tags, no_log, meta/main.yml validity, handler correctness)
- Prefix each finding with `[roles/<role_name>]`
- Include role issues in the appropriate severity sections

---

## Constraints

- **Never modify files.** This command is read-only.
- Do not generate fixed versions of any file.
- Conclude with: "Use `/ansible-designer:update-collection` to apply fixes."

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.