Extension Publishing Guide¶
[AIR-3][AIS-3][AIT-3][RES-3] Complete guide for publishing Anya Core extensions to official, community, and enterprise registries.
Last updated: June 7, 2025
Table of Contents¶
- Publishing Overview
- Registry Types
- Pre-Publishing Checklist
- Extension Packaging
- Publishing Process
- Review and Approval
- Post-Publishing Management
- Best Practices
- Troubleshooting
Publishing Overview¶
Publishing Anya Core extensions involves several steps to ensure quality, security, and compatibility:
Publishing Lifecycle¶
- Development: Build and test your extension
- Packaging: Create distributable package
- Validation: Automated and manual validation
- Submission: Submit to appropriate registry
- Review: Security and quality review process
- Publication: Extension becomes available
- Maintenance: Ongoing updates and support
Extension Types¶
- Core Extensions: Official extensions maintained by Anya Core team
- Community Extensions: Open-source community contributions
- Enterprise Extensions: Commercial extensions with premium features
- Private Extensions: Internal organizational extensions
Registry Types¶
Official Registry¶
URL: https://extensions.anya.org
Characteristics:
- ✅ Curated and thoroughly tested
- ✅ Security audited by Anya Core team
- ✅ Long-term support guarantee
- ✅ Highest quality standards
- ✅ Production-ready stability
Requirements:
- Exceptional code quality and documentation
- Comprehensive test coverage (>95%)
- Security audit compliance
- Maintenance commitment (minimum 2 years)
- Community adoption evidence
Publishing Process:
# Submit proposal first
anya ext propose --registry official --proposal proposal.md
# After approval, submit extension
anya ext publish --registry official --license official
Community Registry¶
URL: https://community.anya.org/extensions
Characteristics:
- 🌍 Open to all developers
- 🌍 Community-driven quality assurance
- 🌍 Rapid innovation and experimentation
- 🌍 Peer review process
- 🌍 Collaborative development
Requirements:
- Open source license (MIT, Apache 2.0, GPL)
- Basic documentation and examples
- Test coverage (minimum 80%)
- Community contribution guidelines
- Issue tracking and support
Publishing Process:
# Standard community publishing
anya ext publish --registry community
# With peer review request
anya ext publish --registry community --request-review
Enterprise Registry¶
URL: https://enterprise.anya.org/extensions
Characteristics:
- 🏢 Commercial and premium extensions
- 🏢 Professional support and SLA
- 🏢 Enterprise-grade security and compliance
- 🏢 Advanced features and integrations
- 🏢 Dedicated customer success
Requirements:
- Valid enterprise license
- Commercial support agreement
- Security and compliance certification
- Professional documentation
- Customer success metrics
Publishing Process:
# Requires enterprise license
anya ext publish --registry enterprise --license enterprise.license
# With support tier specification
anya ext publish --registry enterprise --support-tier premium
Private Registry¶
Self-hosted or organizational registries
Characteristics:
- 🔒 Internal organizational use
- 🔒 Custom security requirements
- 🔒 Proprietary features and data
- 🔒 Full control over distribution
- 🔒 Custom approval workflows
Setup:
# Configure private registry
anya registry add private https://registry.company.com --auth-token $TOKEN
# Publish to private registry
anya ext publish --registry private
Pre-Publishing Checklist¶
Code Quality¶
- [ ] Code Coverage: Minimum 80% test coverage (95% for official registry)
- [ ] Documentation: Complete API documentation and usage examples
- [ ] Linting: Passes all linting rules (
cargo clippy
) - [ ] Formatting: Consistent code formatting (
cargo fmt
) - [ ] Dependencies: Up-to-date and secure dependencies
- [ ] Security: No known vulnerabilities (
cargo audit
)
Extension Metadata¶
- [ ] Extension.toml: Complete and accurate metadata
- [ ] Version: Semantic versioning compliance
- [ ] License: Clear and appropriate license
- [ ] Authors: Contact information provided
- [ ] Description: Clear and informative description
- [ ] Keywords: Relevant search keywords
Compatibility¶
- [ ] Anya Version: Compatible with current Anya Core version
- [ ] Platform Support: Tested on supported platforms
- [ ] Dependencies: Compatible dependency versions
- [ ] Features: Optional features clearly documented
- [ ] Configuration: Schema validation and defaults
Testing¶
- [ ] Unit Tests: Comprehensive unit test suite
- [ ] Integration Tests: End-to-end integration testing
- [ ] Performance Tests: Performance benchmarks included
- [ ] Platform Tests: Multi-platform testing
- [ ] Compatibility Tests: Version compatibility testing
Documentation¶
- [ ] README: Comprehensive README with examples
- [ ] API Docs: Complete API documentation
- [ ] Changelog: Version history and changes
- [ ] Contributing: Contribution guidelines
- [ ] License: License file included
- [ ] Examples: Working usage examples
Security¶
- [ ] Audit: Security audit completed
- [ ] Vulnerabilities: No known security issues
- [ ] Permissions: Minimal required permissions
- [ ] Secrets: No hardcoded secrets or credentials
- [ ] Cryptography: Proper cryptographic practices
Extension Packaging¶
Package Structure¶
my-extension-1.0.0/
├── extension.toml # Extension metadata
├── Cargo.toml # Rust dependencies
├── README.md # Main documentation
├── LICENSE # License file
├── CHANGELOG.md # Version history
├── src/ # Source code
├── tests/ # Test suite
├── docs/ # Documentation
├── examples/ # Usage examples
├── benches/ # Benchmarks
└── assets/ # Static assets
Extension Metadata (extension.toml)¶
[extension]
name = "my-awesome-extension"
version = "1.0.0"
description = "An awesome extension for Anya Core"
authors = ["John Doe <john@example.com>"]
license = "MIT"
repository = "https://github.com/user/my-awesome-extension"
homepage = "https://my-awesome-extension.com"
documentation = "https://docs.my-awesome-extension.com"
keywords = ["bitcoin", "web5", "ml", "awesome"]
categories = ["cryptocurrency", "web-technologies", "science"]
[extension.compatibility]
min_anya_version = "2.5.0"
max_anya_version = "3.0.0"
platforms = ["linux", "macos", "windows"]
architectures = ["x86_64", "aarch64"]
[extension.dependencies]
anya-core = "2.5.0"
bitcoin = { version = "0.30", optional = true }
web5 = { version = "0.8", optional = true }
tokio = "1.0"
serde = { version = "1.0", features = ["derive"] }
[extension.features]
default = ["bitcoin"]
bitcoin = ["dep:bitcoin"]
web5 = ["dep:web5"]
ml = ["dep:candle-core"]
enterprise = ["bitcoin", "web5", "ml"]
[extension.configuration]
schema = "config-schema.json"
default_config = "default-config.toml"
required_config = ["api_key"]
[extension.permissions]
required = ["network.http", "storage.read", "storage.write"]
optional = ["hardware.gpu", "network.bitcoin"]
[extension.resources]
min_memory = "512MB"
min_disk = "100MB"
cpu_intensive = false
gpu_accelerated = true
[extension.support]
documentation = "https://docs.my-awesome-extension.com"
issues = "https://github.com/user/my-awesome-extension/issues"
discussions = "https://github.com/user/my-awesome-extension/discussions"
security = "security@my-awesome-extension.com"
[extension.publishing]
registry = "community"
category = "tools"
maturity = "stable" # experimental, beta, stable, mature
maintenance = "active" # active, maintenance, deprecated
Configuration Schema¶
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "My Awesome Extension Configuration",
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "API key for external service",
"minLength": 32
},
"endpoint": {
"type": "string",
"format": "uri",
"default": "https://api.example.com",
"description": "API endpoint URL"
},
"timeout": {
"type": "integer",
"minimum": 1,
"maximum": 300,
"default": 30,
"description": "Request timeout in seconds"
},
"features": {
"type": "object",
"properties": {
"bitcoin_integration": {
"type": "boolean",
"default": true
},
"web5_integration": {
"type": "boolean",
"default": false
}
}
}
},
"required": ["api_key"],
"additionalProperties": false
}
Package Creation¶
# Create package
anya ext package
# Package with specific features
anya ext package --features bitcoin,web5
# Package for specific platform
anya ext package --target x86_64-unknown-linux-gnu
# Package with assets
anya ext package --include-assets
# Validate package
anya ext validate my-extension-1.0.0.tar.gz
Package Validation¶
# Comprehensive validation
anya ext validate my-extension-1.0.0.tar.gz --comprehensive
# Security scan
anya ext validate my-extension-1.0.0.tar.gz --security-scan
# Compatibility check
anya ext validate my-extension-1.0.0.tar.gz --compatibility-check
# Performance analysis
anya ext validate my-extension-1.0.0.tar.gz --performance-analysis
Publishing Process¶
Step 1: Pre-Publication Testing¶
# Local testing
cargo test --all-features
cargo bench
cargo clippy -- -D warnings
cargo audit
# Integration testing
anya test extension ./my-extension
# Performance testing
anya benchmark extension ./my-extension
# Security testing
anya security-scan ./my-extension
Step 2: Package Creation¶
# Create final package
anya ext package --release
# Sign package (for official/enterprise)
anya ext sign my-extension-1.0.0.tar.gz --key signing.key
# Verify signature
anya ext verify my-extension-1.0.0.tar.gz.sig
Step 3: Registry Submission¶
# Community registry submission
anya ext publish --registry community
# With additional metadata
anya ext publish \
--registry community \
--category tools \
--maturity stable \
--description "Enhanced description for registry"
# Enterprise registry submission
anya ext publish \
--registry enterprise \
--license enterprise.license \
--support-tier premium \
--sla support-sla.pdf
Step 4: Publication Verification¶
# Check publication status
anya ext status my-extension --registry community
# Verify published extension
anya ext info my-extension --registry community
# Test installation from registry
anya ext install my-extension --registry community --dry-run
Review and Approval¶
Community Review Process¶
- Automated Checks: Security, compatibility, and quality metrics
- Peer Review: Community member code review
- Testing: Automated testing on multiple platforms
- Documentation Review: Documentation quality assessment
- Final Approval: Community maintainer approval
Official Registry Review¶
- Initial Screening: Automated quality and security checks
- Security Audit: Professional security assessment
- Code Review: Anya Core team code review
- Documentation Review: Technical writing team review
- Testing: Comprehensive testing across environments
- Legal Review: License and legal compliance check
- Final Approval: Core team approval
Enterprise Registry Review¶
- Commercial Review: Business model and pricing assessment
- Security Certification: Enterprise security requirements
- Compliance Check: Regulatory compliance verification
- Support Assessment: Support capabilities evaluation
- SLA Review: Service level agreement validation
- Customer References: Customer adoption verification
- Final Approval: Enterprise team approval
Review Criteria¶
Code Quality (Weight: 25%)¶
- Code structure and organization
- Error handling and edge cases
- Performance optimization
- Memory safety and security
Documentation (Weight: 20%)¶
- Completeness and accuracy
- Code examples and tutorials
- API reference quality
- User experience
Testing (Weight: 20%)¶
- Test coverage and quality
- Integration test completeness
- Performance benchmarks
- Platform compatibility
Security (Weight: 20%)¶
- Vulnerability assessment
- Cryptographic practices
- Permission model
- Data handling
Community Value (Weight: 15%)¶
- Innovation and uniqueness
- Community demand
- Ecosystem integration
- Long-term viability
Post-Publishing Management¶
Version Management¶
# Publish new version
anya ext publish --version 1.1.0
# Deprecate old version
anya ext deprecate my-extension@1.0.0 --reason "Security vulnerability"
# Yanking broken version
anya ext yank my-extension@1.0.5 --reason "Critical bug"
# Update metadata
anya ext update-metadata my-extension --description "Updated description"
Analytics and Metrics¶
# Download statistics
anya ext stats my-extension --downloads
# Usage analytics
anya ext stats my-extension --usage
# User feedback
anya ext feedback my-extension
# Performance metrics
anya ext metrics my-extension
Support and Maintenance¶
# Monitor issues
anya ext issues my-extension
# Security alerts
anya ext security-alerts my-extension
# Update dependencies
anya ext update-deps my-extension
# Compatibility monitoring
anya ext compatibility my-extension
Best Practices¶
Development Best Practices¶
- Follow Rust Best Practices: Use idiomatic Rust code
- Comprehensive Testing: High test coverage and quality
- Clear Documentation: Write for your future self
- Semantic Versioning: Follow SemVer strictly
- Security First: Security by design principles
Publishing Best Practices¶
- Start with Community: Build reputation in community registry
- Gradual Feature Addition: Evolve features based on feedback
- Responsive Maintenance: Address issues promptly
- Community Engagement: Participate in discussions
- Quality Over Quantity: Focus on doing one thing well
Marketing and Adoption¶
- Clear Value Proposition: Explain benefits clearly
- Good Documentation: Excellent docs drive adoption
- Active Community: Engage with users and contributors
- Regular Updates: Show active maintenance
- Use Cases: Provide real-world examples
Support and Maintenance¶
- Issue Tracking: Use GitHub issues effectively
- Release Notes: Detailed changelog for each release
- Security Updates: Prompt security patch releases
- Community Guidelines: Clear contribution guidelines
- Backward Compatibility: Maintain compatibility when possible
Troubleshooting¶
Common Publishing Issues¶
Package Validation Failures¶
# Check package contents
tar -tzf my-extension-1.0.0.tar.gz
# Validate metadata
anya ext validate-metadata extension.toml
# Check dependencies
cargo tree
Registry Authentication Issues¶
# Check authentication
anya auth status --registry community
# Re-authenticate
anya auth login --registry community
# Update token
anya auth token --registry community --update
Publication Failures¶
# Check network connectivity
anya registry ping community
# Verify package integrity
anya ext verify my-extension-1.0.0.tar.gz
# Check registry status
anya registry status community
Review Process Issues¶
# Check review status
anya ext review-status my-extension
# Request review expedite
anya ext request-review my-extension --expedite
# Contact reviewers
anya ext contact-reviewers my-extension
Error Resolution¶
"Extension Already Exists"¶
# Check existing versions
anya ext versions my-extension --registry community
# Use different name or increment version
anya ext rename my-extension my-extension-v2
"Incompatible Anya Version"¶
# Update compatibility in extension.toml
[extension.compatibility]
min_anya_version = "2.5.0"
# Test with multiple Anya versions
anya test-compatibility my-extension
"Security Scan Failed"¶
# Run local security scan
anya security-scan ./my-extension --detailed
# Fix identified issues
cargo audit fix
# Update dependencies
cargo update
"Insufficient Documentation"¶
# Generate documentation template
anya ext doc-template my-extension
# Check documentation coverage
anya ext doc-coverage my-extension
# Validate examples
anya ext validate-examples my-extension
Performance Optimization¶
Package Size Optimization¶
# Minimize package size
cargo clean
anya ext package --optimize-size
# Exclude unnecessary files
echo "target/" >> .packageignore
echo "*.tmp" >> .packageignore
Build Time Optimization¶
# Parallel builds
cargo build --release -j8
# Cache dependencies
anya ext cache-deps my-extension
# Incremental builds
cargo build --release --incremental
Related Documentation¶
- Review Process: Detailed review process documentation
- Publishing Guidelines: Extension publishing guidelines
- Distribution: Extension distribution mechanisms
- Extension Development: Extension development guide
- Security Guidelines: Security best practices
For additional support with publishing, visit the Anya Core Documentation or join the Community Discord.