
Manifest Generator
- 116 installs
- 33 repo stars
- Updated December 25, 2025
- daffy0208/ai-dev-standards
Generate PWA, browser extension, or mobile web manifests with icons, scopes, permissions, and install metadata aligned to platform requirements.
About
Automates creation of web and extension manifest files: validates required fields, icon sets, theme colors, shortcuts, and permission blocks so installable apps pass store and browser checks.
- PWA manifest completeness
- Icon size matrix generation
- Scope and start_url rules
- Extension permission manifests
- Platform-specific metadata checks
Manifest Generator by the numbers
- 116 all-time installs (skills.sh)
- Ranked #1,020 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Jul 30, 2026 (Skillselion catalog sync)
npx skills add https://github.com/daffy0208/ai-dev-standards --skill manifest-generatorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 116 |
|---|---|
| repo stars | ★ 33 |
| Last updated | December 25, 2025 |
| Repository | daffy0208/ai-dev-standards ↗ |
What it does
Generate PWA, browser extension, or mobile web manifests with icons, scopes, permissions, and install metadata aligned to platform requirements.
Files
Manifest Generator
Auto-generate capability manifests from skill/MCP descriptions using Codex
Purpose
Uses OpenAI Codex to analyze existing skills, MCPs, tools, and components to automatically generate their capability manifests. This bootstraps the entire orchestration system by inferring preconditions, effects, domains, and relationships from descriptions and implementations.
When to Use
- Bootstrapping: Generate manifests for all 59 skills + 50 MCPs at once
- New resources: Auto-generate manifest when creating new skills/MCPs
- Updates: Regenerate manifest when skill description changes
- Validation: Compare generated manifest with existing to detect drift
Key Capabilities
- Precondition Inference: Analyzes skill description to determine what must exist before use
- Effect Extraction: Identifies state changes the skill produces
- Domain Detection: Categorizes skill into technical domains
- Relationship Discovery: Infers which skills this enables/conflicts with/composes with
- Risk Assessment: Evaluates cost, latency, and risk level from description
Inputs
inputs:
skill_path: string # Path to skill directory (e.g., SKILLS/rag-implementer)
resource_type: string # "skill" | "mcp" | "tool" | "component" | "integration"
description_file: string # Usually SKILL.md or README.md
implementation_file: string # Optional: actual code file for validation
output_path: string # Where to write manifest.yaml (default: same directory)Process
Step 1: Read Source Materials
# Read skill description
DESCRIPTION=$(cat $skill_path/SKILL.md)
# Read implementation if available
if [ -f "$skill_path/index.js" ]; then
IMPLEMENTATION=$(head -100 $skill_path/index.js)
fi
# Read existing registry entry
REGISTRY_ENTRY=$(jq ".[] | select(.name==\"$skill_name\")" META/skill-registry.json)Step 2: Generate Manifest with Codex
codex exec "
Analyze this ${resource_type} and generate a capability manifest.
DESCRIPTION:
${DESCRIPTION}
IMPLEMENTATION (if available):
${IMPLEMENTATION}
REGISTRY ENTRY:
${REGISTRY_ENTRY}
Generate a YAML manifest matching this schema:
$(cat SCHEMAS/capability-manifest.schema.json)
Infer the following:
1. PRECONDITIONS: What files, dependencies, or state must exist?
Examples:
- file_exists('package.json')
- has_dependency('react')
- env_var_set('OPENAI_API_KEY')
- not file_exists('.vector-index')
2. EFFECTS: What does this create/modify/delete?
Examples:
- creates_vector_index
- adds_auth_middleware
- configures_database
- updates_tests
3. DOMAINS: What technical areas does it touch?
Examples: rag, auth, api, database, testing, nextjs, react
4. COMPATIBILITY:
- requires: What must exist first?
- conflicts_with: What can't coexist?
- composes_with: What works well together?
- enables: What does this unlock?
5. RISK ASSESSMENT:
- cost: free/low/medium/high (API calls, compute)
- latency: instant/fast/slow (execution time)
- risk_level: safe/low/medium/high (side effects)
6. SUCCESS SIGNAL: How do we know it worked?
Examples:
- 'tests pass'
- 'file exists: .vector-index'
- 'HTTP 200 from /api/search'
- 'can query vector database'
Output ONLY valid YAML. No explanatory text.
"Step 3: Validate and Write
# Validate generated YAML against schema
npx ajv validate \
-s SCHEMAS/capability-manifest.schema.json \
-d /tmp/generated-manifest.yaml
# Write to output location
cp /tmp/generated-manifest.yaml $output_pathCodex Prompt Template
Analyze this ${kind} and extract capability information:
NAME: ${name}
DESCRIPTION:
${description}
${implementation ? "IMPLEMENTATION:\n" + implementation : ""}
Generate a capability manifest with:
1. PRECONDITIONS (what must be true to use this?):
- File checks: file_exists('path'), not file_exists('path')
- Dependency checks: has_dependency('package-name')
- Env checks: env_var_set('VAR_NAME')
- State checks: describe project state requirements
2. EFFECTS (what changes does it make?):
- Use imperative verbs: creates_, adds_, configures_, updates_, removes_
- Be specific: "creates_vector_index", not "does vector stuff"
3. DOMAINS (what technical areas?):
- Choose from: rag, auth, api, database, testing, nextjs, react, security, performance, etc.
4. COMPATIBILITY:
- requires: [list of required capabilities]
- conflicts_with: [capabilities that can't coexist]
- composes_with: [capabilities that work well together]
- enables: [capabilities this unlocks]
5. COST/LATENCY/RISK:
- cost: free (no API calls), low (< $0.10), medium (< $1), high (> $1)
- latency: instant (< 1s), fast (< 10s), slow (> 10s)
- risk_level: safe (no side effects), low (idempotent), medium (modifies files), high (irreversible changes)
6. SUCCESS_SIGNAL: What confirms it worked?
Output as YAML matching capability-manifest schema.Example Output
# SKILLS/rag-implementer/manifest.yaml
name: rag-implementer
kind: skill
description: Implement retrieval-augmented generation systems with vector databases and embedding pipelines
preconditions:
- check: file_exists('package.json')
description: Node.js project with package.json
required: true
- check: not file_exists('.vector-index')
description: Vector database not already configured
required: false
- check: env_var_set('OPENAI_API_KEY') or env_var_set('ANTHROPIC_API_KEY')
description: LLM API key for embeddings
required: true
effects:
- creates_vector_index
- adds_embedding_pipeline
- configures_retrieval_api
- adds_rag_tests
domains:
- rag
- ai
- search
- embeddings
- api
cost: medium
latency: slow
risk_level: low
side_effects:
- modifies_files
- makes_api_calls
idempotent: false
success_signal: 'Vector index created and queryable with test embeddings'
failure_signals:
- 'API key invalid'
- 'Vector database connection failed'
- 'Embedding generation failed'
compatibility:
requires:
- openai-integration OR anthropic-integration
conflicts_with:
- existing-vector-database
composes_with:
- pinecone-mcp
- weaviate-mcp
- embedding-generator-mcp
enables:
- semantic-search
- document-qa
- knowledge-retrieval
observability:
logs:
- 'Embedding X documents'
- 'Vector index created with Y dimensions'
- 'Retrieval query: {query} returned {count} results'
metrics:
- embedding_count
- retrieval_latency_ms
- search_relevance_score
metadata:
version: '1.0.0'
created_at: '2025-10-28'
tags:
- rag
- vector-database
- embeddings
- semantic-search
examples:
- 'Implement RAG for Next.js documentation site'
- 'Add semantic search to existing API'
- 'Build document Q&A system'Bootstrap Script
Run this to generate manifests for ALL resources:
#!/bin/bash
# scripts/bootstrap-manifests.sh
echo "Generating manifests for all skills..."
for skill_dir in SKILLS/*/; do
skill_name=$(basename "$skill_dir")
echo " Processing $skill_name..."
# Use manifest-generator skill
bash scripts/skills/manifest-generator.sh \
--path "$skill_dir" \
--type "skill" \
--description "$skill_dir/SKILL.md" \
--output "$skill_dir/manifest.yaml"
done
echo "\nGenerating manifests for all MCPs..."
for mcp_dir in MCP-SERVERS/*/; do
mcp_name=$(basename "$mcp_dir")
echo " Processing $mcp_name..."
bash scripts/skills/manifest-generator.sh \
--path "$mcp_dir" \
--type "mcp" \
--description "$mcp_dir/README.md" \
--implementation "$mcp_dir/index.js" \
--output "$mcp_dir/manifest.yaml"
done
echo "\nDone! Generated $(find SKILLS MCP-SERVERS -name 'manifest.yaml' | wc -l) manifests"Benefits
1. Speed: Generate 109 manifests in minutes instead of weeks 2. Consistency: Uniform format and completeness 3. Discovery: Codex finds relationships humans miss 4. Validation: Compare to detect description/implementation drift 5. Evolution: Re-run to update as skills change
Integration
With capability-graph-builder
Manifests become nodes in the capability graph. Relationships inferred from compatibility fields.
With orchestration-planner
Planner queries manifests to find capabilities matching goal requirements.
With skill-validator
Validator compares generated manifest with actual implementation to find discrepancies.
Success Metrics
- ✅ 100% of skills/MCPs have manifests
- ✅ All manifests validate against schema
- ✅ Preconditions cover 90%+ of actual requirements
- ✅ Effects accurately describe state changes
- ✅ Relationship inferences 80%+ accurate
Related Skills
- capability-graph-builder: Consumes manifests to build graph
- skill-validator: Validates manifests match implementations
- orchestration-planner: Uses manifests for planning
#!/bin/bash
# Generate capability manifest using Codex
set -e
# Parse arguments
RESOURCE_PATH=""
RESOURCE_TYPE="skill"
OUTPUT_PATH=""
while [[ $# -gt 0 ]]; do
case $1 in
--path) RESOURCE_PATH="$2"; shift 2 ;;
--type) RESOURCE_TYPE="$2"; shift 2 ;;
--output) OUTPUT_PATH="$2"; shift 2 ;;
*) echo "Unknown option: $1"; exit 1 ;;
esac
done
if [ -z "$RESOURCE_PATH" ]; then
echo "Error: --path is required"
exit 1
fi
# Set default output path
if [ -z "$OUTPUT_PATH" ]; then
OUTPUT_PATH="$RESOURCE_PATH/manifest.yaml"
fi
# Determine description file
if [ "$RESOURCE_TYPE" = "skill" ]; then
DESC_FILE="$RESOURCE_PATH/SKILL.md"
elif [ "$RESOURCE_TYPE" = "mcp" ]; then
DESC_FILE="$RESOURCE_PATH/README.md"
else
DESC_FILE="$RESOURCE_PATH/README.md"
fi
if [ ! -f "$DESC_FILE" ]; then
echo "Error: Description file not found: $DESC_FILE"
exit 1
fi
# Read description
DESCRIPTION=$(cat "$DESC_FILE")
RESOURCE_NAME=$(basename "$RESOURCE_PATH")
# Check for implementation file
IMPLEMENTATION=""
if [ -f "$RESOURCE_PATH/index.js" ]; then
IMPLEMENTATION=$(head -100 "$RESOURCE_PATH/index.js")
elif [ -f "$RESOURCE_PATH/index.ts" ]; then
IMPLEMENTATION=$(head -100 "$RESOURCE_PATH/index.ts")
fi
# Read schema
SCHEMA=$(cat "$(dirname "$0")/../../SCHEMAS/capability-manifest.schema.json")
echo "Generating manifest for $RESOURCE_NAME..."
# Generate manifest with Codex
cd "$(dirname "$0")/../.."
codex exec "
Analyze this ${RESOURCE_TYPE} and generate a capability manifest YAML.
RESOURCE NAME: ${RESOURCE_NAME}
RESOURCE TYPE: ${RESOURCE_TYPE}
DESCRIPTION:
${DESCRIPTION}
${IMPLEMENTATION:+IMPLEMENTATION (first 100 lines):}
${IMPLEMENTATION}
SCHEMA REFERENCE:
${SCHEMA}
Task: Generate a complete capability manifest in YAML format that matches the schema.
Instructions:
1. PRECONDITIONS: Analyze description to infer what files, dependencies, or state must exist
- Use predicates like: file_exists('path'), has_dependency('pkg'), env_var_set('VAR')
- Mark whether each is required or optional
2. EFFECTS: Extract what this creates/modifies/deletes
- Use imperative verbs: creates_, adds_, configures_, updates_, removes_
- Be specific and actionable
3. DOMAINS: Categorize into technical domains
- Examples: rag, auth, api, database, testing, nextjs, react, security
4. COST/LATENCY/RISK: Assess resource requirements
- cost: free/low/medium/high (API usage, compute)
- latency: instant/fast/slow (execution time)
- risk_level: safe/low/medium/high (side effect severity)
5. SUCCESS_SIGNAL: Define how to verify it worked
- Be specific and testable
6. COMPATIBILITY: Infer relationships
- requires: What must exist first?
- conflicts_with: What can't coexist?
- composes_with: What works well together?
- enables: What does this unlock?
Output ONLY valid YAML matching the schema. No markdown fences, no explanatory text.
Start with 'name:' as the first line.
" > /tmp/manifest-$RESOURCE_NAME.yaml
# Validate the generated YAML
if [ -f /tmp/manifest-$RESOURCE_NAME.yaml ]; then
# Basic YAML syntax check
if python3 -c "import yaml; yaml.safe_load(open('/tmp/manifest-$RESOURCE_NAME.yaml'))" 2>/dev/null; then
cp /tmp/manifest-$RESOURCE_NAME.yaml "$OUTPUT_PATH"
echo "✅ Manifest generated: $OUTPUT_PATH"
rm /tmp/manifest-$RESOURCE_NAME.yaml
exit 0
else
echo "❌ Generated YAML is invalid"
cat /tmp/manifest-$RESOURCE_NAME.yaml
exit 1
fi
else
echo "❌ Failed to generate manifest"
exit 1
fi
name: manifest-generator
kind: skill
description: "Generates capability manifests for skills and MCP resources by analyzing descriptions and validating output against the capability manifest schema using Codex."
inputs_schema:
type: object
required:
- skill_path
- resource_type
- description_file
properties:
skill_path:
type: string
description: "Path to the resource directory (e.g., SKILLS/rag-implementer)."
resource_type:
type: string
enum:
- skill
- mcp
- tool
- component
- integration
description: "Kind of resource being analyzed."
description_file:
type: string
description: "Primary description document, typically SKILL.md or README.md."
implementation_file:
type: string
description: "Optional implementation file for additional context."
output_path:
type: string
description: "Destination for the generated manifest.yaml."
preconditions:
- check: "env_var_set('OPENAI_API_KEY')"
description: "Codex access requires a configured OpenAI API key."
required: true
- check: "command_exists('codex')"
description: "Codex CLI must be available to execute the generation prompt."
required: true
- check: "file_exists('SCHEMAS/capability-manifest.schema.json')"
description: "Capability manifest schema is needed to structure and validate output."
required: true
- check: "file_exists(description_file)"
description: "The provided resource description file must exist for analysis."
required: true
effects:
- generates_capability_manifest
- validates_manifest_against_schema
- writes_manifest_to_output_path
- updates_existing_manifest_if_present
domains:
- ai
- automation
- documentation
- orchestration
cost: medium
latency: fast
risk_level: low
side_effects:
- modifies_files
- makes_api_calls
- overwrites_manifest_files
idempotent: false
success_signal: "Generated manifest passes schema validation and is written to output_path."
failure_signals:
- "Codex generation failed."
- "Schema validation errors reported."
compatibility:
requires:
- openai-integration
- schema-registry
conflicts_with: []
composes_with:
- capability-graph-builder
- skill-validator
- orchestration-planner
enables:
- capability-graph-builder
- skill-validator
- orchestration-planner
observability:
logs:
- "Generating capability manifest for {resource_type}:{skill_path}"
- "Validating generated manifest against schema"
metrics:
- manifest_generation_duration_ms
- manifest_validation_failures
metadata:
tags:
- manifests
- codex
- automation
examples:
- "Bootstrap manifests for all skills and MCP servers"
- "Regenerate manifest after updating SKILL.md"
- "Validate manifests for drift detection workflows"