Imported skill cli from agentskills
Scanned 9/11/2026
Install to Claude Code
npx -y skills add bitwikiorg/skills.md --skill cli --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Cli?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/bitwikiorg-cli)More formats (shields.io, HTML) on the badges page.
---
description: Imported skill cli from agentskills
name: cli
signature: cdcc2cc418cac2e47340455b406e39a73c0906d6184e0920d12e8c341ce5b139
source: /a0/tmp/skills_research/agentskills/skills-ref/src/skills_ref/cli.py
---
"""CLI for skills-ref library."""
import json
import sys
from pathlib import Path
import click
from .errors import SkillError
from .parser import read_properties
from .prompt import to_prompt
from .validator import validate
def _is_skill_md_file(path: Path) -> bool:
"""Check if path points directly to a SKILL.md or skill.md file."""
return path.is_file() and path.name.lower() == "skill.md"
@click.group()
@click.version_option()
def main():
"""Reference library for Agent Skills."""
pass
@main.command("validate")
@click.argument("skill_path", type=click.Path(exists=True, path_type=Path))
def validate_cmd(skill_path: Path):
"""Validate a skill directory.
Checks that the skill has a valid SKILL.md with proper frontmatter,
correct naming conventions, and required fields.
Exit codes:
0: Valid skill
1: Validation errors found
"""
if _is_skill_md_file(skill_path):
skill_path = skill_path.parent
errors = validate(skill_path)
if errors:
click.echo(f"Validation failed for {skill_path}:", err=True)
for error in errors:
click.echo(f" - {error}", err=True)
sys.exit(1)
else:
click.echo(f"Valid skill: {skill_path}")
@main.command("read-properties")
@click.argument("skill_path", type=click.Path(exists=True, path_type=Path))
def read_properties_cmd(skill_path: Path):
"""Read and print skill properties as JSON.
Parses the YAML frontmatter from SKILL.md and outputs the
properties as JSON.
Exit codes:
0: Success
1: Parse error
"""
try:
if _is_skill_md_file(skill_path):
skill_path = skill_path.parent
props = read_properties(skill_path)
click.echo(json.dumps(props.to_dict(), indent=2))
except SkillError as e:
click.echo(f"Error: {e}", err=True)
sys.exit(1)
@main.command("to-prompt")
@click.argument(
"skill_paths", type=click.Path(exists=True, path_type=Path), nargs=-1, required=True
)
def to_prompt_cmd(skill_paths: tuple[Path, ...]):
"""Generate <available_skills> XML for agent prompts.
Accepts one or more skill directories.
Exit codes:
0: Success
1: Error
"""
try:
resolved_paths = []
for skill_path in skill_paths:
if _is_skill_md_file(skill_path):
resolved_paths.append(skill_path.parent)
else:
resolved_paths.append(skill_path)
output = to_prompt(resolved_paths)
click.echo(output)
except SkillError as e:
click.echo(f"Error: {e}", err=True)
sys.exit(1)
if __name__ == "__main__":
main()
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!