Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Does It Age Verify

ASecurity

> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. **DoesItAgeVerify** is a community-maintained reference list tracking whether open source operating systems (Linux distros, BSDs, etc.) have implemented, are planning to implement, or have refused to implement age verification — as required by laws passed in Brazil and California, and proposed in Colorado, Illinois, and New York. ---

81 stars
0 votes
0 copies
0 views
Added 9/19/2026
documentationpythongobashawsgitdocumentation

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add reason-machines/trending-skills --skill does-it-age-verify --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Does It Age Verify?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Does It Age Verify
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/reason-machines-does-it-age-verify/badge)](https://www.skillsdirectory.com/skills/reason-machines-does-it-age-verify)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
```markdown
---
name: does-it-age-verify
description: Track and contribute to the age verification compliance status list for open source operating systems
triggers:
  - "check age verification status of linux distros"
  - "update does it age verify list"
  - "add OS to age verification tracking"
  - "what distros support age verification"
  - "contribute to age verification compliance list"
  - "track OS age verification laws"
  - "which operating systems implement age verification"
  - "age verification status open source OS"
---

# DoesItAgeVerify

> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.

**DoesItAgeVerify** is a community-maintained reference list tracking whether open source operating systems (Linux distros, BSDs, etc.) have implemented, are planning to implement, or have refused to implement age verification — as required by laws passed in Brazil and California, and proposed in Colorado, Illinois, and New York.

---

## What This Project Does

This is a **documentation/data repository** (not a code library). It maintains a structured Markdown table in `README.md` categorizing open source OSes into three groups:

1. **Not Implementing** — Refused or blocking access in affected regions
2. **Planning to Implement** — Publicly committed but not yet done
3. **Already Implemented** — Fully compliant (currently empty as of last update)

---

## Repository Structure

```
DoesItAgeVerify/
├── README.md        # The main tracking list (primary artifact)
└── LICENSE          # BSD-2-Clause
```

---

## Contributing: Adding or Updating an OS Entry

All contributions are edits to `README.md`. Follow the existing table format precisely.

### Status Emoji Key

| Emoji | Meaning |
|---|---|
| `:no_entry:` | Not implementing / blocking access |
| `:building_construction:` | Planning to implement |
| `:white_check_mark:` | Fully implemented |

### Table Row Format

```markdown
| :no_entry: | **OS Name** | [Source description](https://link-to-statement) |
```

---

## Example Contributions

### Adding a new "Not Implementing" OS

```markdown
| :no_entry: | **Alpine Linux** | [Developer statement](https://example.com/statement) |
```

### Adding a new "Planning to Implement" OS

```markdown
| :building_construction: | **Fedora** | [Red Hat statement planning compliance](https://example.com/fedora-av) |
```

### Adding a fully compliant OS (first ever!)

Add a new section if needed:

```markdown
### Operating Systems Which Have Already Implemented Age Verification

|   | Operating System | Notes |
| - | - | - |
| :white_check_mark: | **ExampleOS** | [Compliance announcement](https://example.com/compliant) |
```

---

## Editing README.md Programmatically

Since this is a Markdown data file, you can parse and update it with standard tooling.

### Python: Parse current status entries

```python
import re

def parse_av_table(readme_path: str) -> list[dict]:
    """Parse OS entries from DoesItAgeVerify README tables."""
    with open(readme_path, "r", encoding="utf-8") as f:
        content = f.read()

    # Match table rows: | emoji | **OS Name** | notes |
    pattern = r"\|\s*(:[a-z_]+:)\s*\|\s*\*\*(.+?)\*\*\s*\|\s*(.+?)\s*\|"
    entries = []

    status_map = {
        ":no_entry:": "not_implementing",
        ":building_construction:": "planning",
        ":white_check_mark:": "implemented",
    }

    for match in re.finditer(pattern, content):
        emoji, os_name, notes = match.groups()
        entries.append({
            "os": os_name.strip(),
            "status": status_map.get(emoji.strip(), "unknown"),
            "notes": notes.strip(),
        })

    return entries


if __name__ == "__main__":
    entries = parse_av_table("README.md")
    for e in entries:
        print(f"[{e['status']:20s}] {e['os']}")
```

### Python: Add a new OS entry to the correct section

```python
def add_os_entry(
    readme_path: str,
    os_name: str,
    status: str,  # "not_implementing" | "planning" | "implemented"
    notes_markdown: str,
) -> None:
    """
    Insert a new OS row into the correct section of README.md.
    
    Args:
        readme_path: Path to README.md
        os_name: Name of the OS (e.g. "Fedora Linux")
        status: One of 'not_implementing', 'planning', 'implemented'
        notes_markdown: Markdown string for the Notes column
    """
    emoji_map = {
        "not_implementing": ":no_entry:",
        "planning": ":building_construction:",
        "implemented": ":white_check_mark:",
    }
    section_map = {
        "not_implementing": "### Operating Systems Not Implementing Age Verification",
        "planning": "### Operating Systems Planning to Implement Age Verification",
        "implemented": "### Operating Systems Which Have Already Implemented Age Verification",
    }

    emoji = emoji_map[status]
    section_header = section_map[status]
    new_row = f"| {emoji} | **{os_name}** | {notes_markdown} |"

    with open(readme_path, "r", encoding="utf-8") as f:
        content = f.read()

    if os_name in content:
        print(f"WARNING: '{os_name}' may already exist in the list.")

    # Find the section and insert before the closing blank line after the table
    section_idx = content.find(section_header)
    if section_idx == -1:
        raise ValueError(f"Section not found: {section_header}")

    # Find the last table row in this section
    section_content = content[section_idx:]
    table_end = section_content.rfind("| :") 
    if table_end == -1:
        table_end = section_content.rfind("| :building_construction:")
    
    # Find end of that last row
    insert_after = section_idx + table_end
    line_end = content.find("\n", insert_after)

    updated = content[: line_end + 1] + new_row + "\n" + content[line_end + 1 :]

    with open(readme_path, "w", encoding="utf-8") as f:
        f.write(updated)

    print(f"Added: {new_row}")


# Usage
add_os_entry(
    "README.md",
    "Fedora Linux",
    "planning",
    "[Red Hat statement](https://example.com/fedora-av-statement)",
)
```

### Bash: Quick count of each status

```bash
#!/bin/bash
# Count OS entries by status in DoesItAgeVerify README

README="README.md"

echo "=== Age Verification Status Count ==="
echo "Not Implementing : $(grep -c ':no_entry:' "$README")"
echo "Planning         : $(grep -c ':building_construction:' "$README")"
echo "Implemented      : $(grep -c ':white_check_mark:' "$README")"
echo ""
echo "=== All Tracked OSes ==="
grep -oP '\*\*[^*]+\*\*' "$README" | tr -d '*' | sort -u
```

---

## Cloning and Local Setup

```bash
# Clone the repository
git clone https://github.com/BryanLunduke/DoesItAgeVerify.git
cd DoesItAgeVerify

# No build steps required — this is a documentation project
# Edit README.md directly
```

---

## Submitting a Pull Request

```bash
# Fork on GitHub first, then:
git clone https://github.com/YOUR_USERNAME/DoesItAgeVerify.git
cd DoesItAgeVerify

git checkout -b add-fedora-linux

# Edit README.md to add your entry
# Follow the table format exactly

git add README.md
git commit -m "Add Fedora Linux (planning to implement)"
git push origin add-fedora-linux

# Open PR at: https://github.com/BryanLunduke/DoesItAgeVerify/pulls
```

### PR checklist
- [ ] Entry is in the correct section
- [ ] OS name is bolded: `**OS Name**`
- [ ] Emoji matches status
- [ ] Notes column links to a **primary source** (official statement, blog post, GitHub issue, mailing list)
- [ ] Link is a real, publicly accessible URL

---

## Relevant Laws Being Tracked

| Jurisdiction | Status | Reference |
|---|---|---|
| Brazil | **Passed** | OS-level age verification required |
| California | **Passed** | OS-level age verification required |
| Colorado | Proposed | Pending |
| Illinois | Proposed | Pending |
| New York | Proposed | Pending |

---

## Common Issues

### "My OS doesn't fit any category"
If an OS has not made any statement, do not add it. Only add entries with a **citable source** (developer statement, official blog, mailing list, etc.).

### Table formatting is off
GitHub Markdown tables require `|` on every cell. Use exactly this pattern:
```markdown
| :no_entry: | **OS Name** | [Link text](https://url) |
```

### Link is to a social media post that may disappear
Prefer linking to official project pages, mailing lists, or GitHub issues when possible. Social media links (x.com, mastodon) are acceptable if that's the only source.

---

## License

BSD-2-Clause — See [LICENSE](https://github.com/BryanLunduke/DoesItAgeVerify/blob/main/LICENSE)
```

Attribution

reason-machinesreason-machines
View sourceMore from reason-machines →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Context Fundamentals

Understand the components, mechanics, and constraints of context in agent systems. Use when designing agent architectures, debugging context-related failures, or optimizing context usage.

179001 votes

release-notes

Draft release notes and changelog entries from git history or merged PRs between two refs (tags/SHAs/branches), including breaking changes, migrations, and upgrade steps. Use when the user asks for release notes, changelog updates, or a GitHub Release draft.

1301 votes

docs-style-guide

Documentation style guide enforcer by @planetabhi. Applies and reviews the writing style guide when authoring or editing product documentation and tutorials. Use to check prose for voice, tense, word choice, inclusive language, formatting, code block, UI, Markdown, and number/date conventions.

11 votes

Caveman Help

Quick-reference card for all caveman modes, skills, and commands. One-shot display, not a persistent mode. Trigger: /caveman-help, "caveman help", "what caveman commands", "how do I use caveman".

1023330 votes

How It Works

Explain how claude-mem captures observations, when memory injection kicks in, and where data lives. Use when the user asks "how does claude-mem work?" or "what is this thing doing?".

929660 votes
View all in documentation →