
Skill Manifest Generator
Generate Spec-aligned MANIFEST.json files with SHA256 file hashes and structure metadata when packaging skills for registries.
Install
npx skills add https://github.com/skillscatalog/registry --skill skill-manifest-generatorWhat is this skill?
- Emits MANIFEST.json per agentskills manifest schema v1
- SHA256 integrity hash over skill file set
- Python generator script with SKILL.md frontmatter parsing via PyYAML
- Reports structure: maxDepth, totalFiles, totalBytes, and folder layout
- Optional PyYAML dependency with fallback parsing behavior noted
Adoption & trust: 1 installs on skills.sh; 1 GitHub stars; 3/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Find Skillsvercel-labs/skills
Skill Creatoranthropics/skills
Lark Skill Makerlarksuite/cli
Skills Clixixu-me/skills
Write A Skillmattpocock/skills
Using Superpowersobra/superpowers
Journey fit
Primary fit
Build agent-tooling is where you produce reproducible skill bundles and integrity manifests before publish or catalog ingest. Agent-tooling matches manifest generation, SKILL.md hashing, and registry-ready packaging scripts.
Common Questions / FAQ
Is Skill Manifest Generator safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Skill Manifest Generator
{ "$schema": "https://agentskills.io/schemas/manifest.v1.json", "manifestVersion": "1.0", "generatedAt": "2026-01-03T01:58:33.092546Z", "generator": "skill-manifest-generator/1.0.0", "skill": { "name": "skill-manifest-generator", "version": "1.0.0" }, "integrity": { "algorithm": "sha256", "hash": "f46664d607f7dfafbbbd3b9b7658cb1a31126b93c5b260a44f7eded3184abfc5" }, "files": [ { "path": "SKILL.md", "size": 2718, "sha256": "393d26785ba7b3ca169b4379ef0cd8f20de6f444be66d23b7aeead13b405fb02", "type": "manifest" }, { "path": "requirements.txt", "size": 221, "sha256": "430f9d277dbe2b692393f61c5dff6d80ec4641b71b7872b02ce6d59e9edfa68b", "type": "reference" }, { "path": "scripts/generate_manifest.py", "size": 18697, "sha256": "ebc67e80a0896d8ea70c28bbbf38821be2315870a97a65a2aa9025907be549b5", "type": "script" } ], "externalReferences": [], "structure": { "maxDepth": 1, "totalFiles": 3, "totalBytes": 21636, "folders": [ "scripts" ] }, "license": { "spdxId": "MIT" } } # Optional dependencies for skill-manifest-generator # The script works without these but provides better functionality with them # YAML parsing for SKILL.md frontmatter (falls back to basic parsing without) PyYAML>=6.0 #!/usr/bin/env python3 """ Skill Manifest Generator Generates MANIFEST.json files for Agent Skills according to Spec 20. Provides content integrity verification, file inventory, and external reference tracking. Usage: python generate_manifest.py /path/to/skill python generate_manifest.py /path/to/skill --verify python generate_manifest.py /path/to/skill --output /path/to/output.json """ import argparse import hashlib import json import os import re import sys from datetime import datetime, timezone from pathlib import Path from typing import Optional # Try to import yaml, fall back to basic parsing if not available try: import yaml HAS_YAML = True except ImportError: HAS_YAML = False # Version of this generator GENERATOR_VERSION = "1.0.0" MANIFEST_VERSION = "1.0" SCHEMA_URL = "https://agentskills.io/schemas/manifest.v1.json" # Default exclusions (always ignored) DEFAULT_EXCLUSIONS = { ".git", ".gitignore", ".DS_Store", "Thumbs.db", "__pycache__", "node_modules", ".env", "MANIFEST.json", ".skillignore", } # File extensions to scan for URLs URL_SCAN_EXTENSIONS = { ".py", ".js", ".ts", ".mjs", ".jsx", ".tsx", ".sh", ".bash", ".zsh", ".md", ".txt", ".json", ".yaml", ".yml", ".html", ".htm", } # URL pattern for detection URL_PATTERN = re.compile(r'https?://[^\s"\'`<>)\]]+') # URLs to exclude from detection EXCLUDED_URL_PATTERNS = [ "localhost", "127.0.0.1", "0.0.0.0", "example.com", "example.org", "placeholder.com", "schema.org", "json-schema.org", "agentskills.io/schemas", # Our own schema URLs ] # File type classification by extension FILE_TYPE_MAP = { # Manifest "SKILL.md": "manifest", # Scripts ".py": "script", ".js": "script", ".ts": "script", ".mjs": "script", ".jsx": "script", ".tsx": "script", ".sh": "script", ".bash": "script", # Config ".json": "config", ".yaml": "config", ".yml": "config", ".toml": "config", ".ini": "config", # Reference/docs ".md": "reference", ".txt": "reference", ".rst": "reference", # Assets ".png": "asset", ".jpg": "asset", ".jpeg": "asset", ".gif": "asset", ".svg": "asset", ".pdf": "asset", ".docx": "asset", ".xlsx": "asset", ".csv": "asset", } # Size limits MAX_FILE_SIZE = 10 * 1024 * 1024 # 10 MB MAX_TOTAL_SIZE = 50 * 1024 * 1024 # 50 MB MAX_FILE_COUNT = 1000 MAX_DEPTH = 6 WARN_DEPTH = 4 def sha256_file(filepath: Path) -> str: """Compute SHA256 hash of a file.""" hasher = hashlib.sha256() wit