Initial commit
This commit is contained in:
313
commands/schema-validation/full-schema-validation.md
Normal file
313
commands/schema-validation/full-schema-validation.md
Normal file
@@ -0,0 +1,313 @@
|
||||
## Operation: Full Schema Validation
|
||||
|
||||
Execute complete schema validation workflow: JSON syntax → Required fields → Format compliance → Plugin entries (if marketplace).
|
||||
|
||||
### Parameters from $ARGUMENTS
|
||||
|
||||
- **path**: Path to plugin directory or marketplace (required)
|
||||
- **type**: Target type: `plugin` or `marketplace` (optional, auto-detect)
|
||||
- **strict**: Fail on warnings and missing recommended fields (optional, default: false)
|
||||
- **verbose**: Show detailed error information (optional, default: false)
|
||||
|
||||
### Workflow
|
||||
|
||||
1. **Detect Target Type**
|
||||
```
|
||||
IF type not specified:
|
||||
Auto-detect based on path structure:
|
||||
- Has plugin.json at root → plugin
|
||||
- Has marketplace.json → marketplace
|
||||
- Otherwise → error
|
||||
|
||||
Locate configuration file:
|
||||
Plugin: <path>/plugin.json
|
||||
Marketplace: <path>/marketplace.json or <path>/.claude-plugin/marketplace.json
|
||||
```
|
||||
|
||||
2. **Phase 1: JSON Syntax Validation**
|
||||
```
|
||||
Read validate-json.md instructions
|
||||
|
||||
Execute: .scripts/json-validator.py --file "$config" --verbose "$verbose"
|
||||
|
||||
On failure:
|
||||
- Report JSON syntax errors
|
||||
- Stop validation (cannot proceed with invalid JSON)
|
||||
- Exit with status 1
|
||||
|
||||
On success:
|
||||
- Continue to Phase 2
|
||||
```
|
||||
|
||||
3. **Phase 2: Required Fields Check**
|
||||
```
|
||||
Read check-required-fields.md instructions
|
||||
|
||||
Execute: .scripts/field-checker.sh "$config" "$type" "$strict"
|
||||
|
||||
Collect results:
|
||||
- Required fields: present/missing
|
||||
- Recommended fields: present/missing
|
||||
- Critical errors count
|
||||
- Warnings count
|
||||
|
||||
On failure:
|
||||
- Report missing required fields
|
||||
- Continue to Phase 3 (show all issues)
|
||||
|
||||
On success:
|
||||
- Continue to Phase 3
|
||||
```
|
||||
|
||||
4. **Phase 3: Format Validation**
|
||||
```
|
||||
Read validate-formats.md instructions
|
||||
|
||||
Execute: .scripts/format-validator.py --file "$config" --type "$type" --strict "$strict"
|
||||
|
||||
Validate:
|
||||
- Semantic versioning
|
||||
- Lowercase-hyphen naming
|
||||
- URL formats
|
||||
- Email addresses
|
||||
- License identifiers
|
||||
- Category names (if present)
|
||||
|
||||
Collect results:
|
||||
- Format violations count
|
||||
- Warnings count
|
||||
```
|
||||
|
||||
5. **Phase 4: Plugin Entries Validation (Marketplace Only)**
|
||||
```
|
||||
IF type == "marketplace":
|
||||
Read check-plugin-entries.md instructions
|
||||
|
||||
Execute: .scripts/schema-differ.sh "$config" "all"
|
||||
|
||||
Validate each plugin entry:
|
||||
- Required fields (name, source, description)
|
||||
- Recommended fields (version, author, license, keywords)
|
||||
- Format compliance
|
||||
|
||||
Collect results:
|
||||
- Total plugin entries
|
||||
- Passed entries
|
||||
- Failed entries
|
||||
- Total issues per entry
|
||||
```
|
||||
|
||||
6. **Aggregate Results**
|
||||
```
|
||||
Compile all validation phases:
|
||||
Phase 1: JSON Syntax [PASS/FAIL]
|
||||
Phase 2: Required Fields [PASS/FAIL]
|
||||
Phase 3: Format Compliance [PASS/FAIL]
|
||||
Phase 4: Plugin Entries [PASS/FAIL] (marketplace only)
|
||||
|
||||
Calculate overall status:
|
||||
IF any phase FAIL: Overall FAIL
|
||||
IF strict mode AND any warnings: Overall FAIL
|
||||
ELSE: Overall PASS
|
||||
|
||||
Generate summary report:
|
||||
- Total checks performed
|
||||
- Critical errors
|
||||
- Warnings
|
||||
- Overall status
|
||||
- Publication readiness
|
||||
```
|
||||
|
||||
### Exit Codes
|
||||
|
||||
- **0**: All validation passed (or warnings only in non-strict mode)
|
||||
- **1**: Validation failed (critical errors or strict mode with warnings)
|
||||
- **2**: Error (file not found, invalid arguments, etc.)
|
||||
|
||||
### Examples
|
||||
|
||||
```bash
|
||||
# Full validation with auto-detect
|
||||
/schema-validation full-schema path:.
|
||||
|
||||
# Full plugin validation with strict mode
|
||||
/schema-validation full-schema path:. type:plugin strict:true
|
||||
|
||||
# Full marketplace validation with verbose output
|
||||
/schema-validation full-schema path:./test-marketplace type:marketplace verbose:true
|
||||
|
||||
# Validate specific plugin in subdirectory
|
||||
/schema-validation full-schema path:./plugins/my-plugin type:plugin
|
||||
```
|
||||
|
||||
### Integration
|
||||
|
||||
This operation is the primary entry point for complete schema validation and is called by:
|
||||
- `validation-orchestrator` comprehensive validation
|
||||
- Marketplace submission workflows
|
||||
- CI/CD validation pipelines
|
||||
- Direct user invocation for thorough checking
|
||||
|
||||
### Output Format
|
||||
|
||||
**Success (all phases pass)**:
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
FULL SCHEMA VALIDATION
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Target: plugin.json
|
||||
Type: plugin
|
||||
Mode: Standard
|
||||
|
||||
Phase 1: JSON Syntax ✅
|
||||
Status: Valid JSON
|
||||
Backend: jq
|
||||
|
||||
Phase 2: Required Fields ✅
|
||||
Required: 5/5 present
|
||||
Recommended: 3/4 present
|
||||
Missing: category (non-critical)
|
||||
|
||||
Phase 3: Format Compliance ✅
|
||||
Checks: 7/7 passed
|
||||
Version: 1.0.0 (valid semver)
|
||||
Name: my-plugin (valid lowercase-hyphen)
|
||||
License: MIT (valid SPDX)
|
||||
URLs: All valid HTTPS
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
VALIDATION SUMMARY
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Overall Status: ✅ PASS
|
||||
|
||||
Checks Performed: 15
|
||||
Critical Errors: 0
|
||||
Warnings: 1
|
||||
Passed: 14
|
||||
|
||||
Publication Readiness: READY ✅
|
||||
Your plugin meets all required standards
|
||||
Consider adding: category field for better discoverability
|
||||
|
||||
Quality Score: 95/100 ⭐⭐⭐⭐⭐
|
||||
```
|
||||
|
||||
**Failure (multiple phases fail)**:
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
FULL SCHEMA VALIDATION
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Target: plugin.json
|
||||
Type: plugin
|
||||
Mode: Standard
|
||||
|
||||
Phase 1: JSON Syntax ✅
|
||||
Status: Valid JSON
|
||||
Backend: python3
|
||||
|
||||
Phase 2: Required Fields ❌
|
||||
Required: 3/5 present
|
||||
Missing:
|
||||
❌ version (REQUIRED - use semver X.Y.Z)
|
||||
❌ license (REQUIRED - use MIT, Apache-2.0, etc.)
|
||||
|
||||
Phase 3: Format Compliance ❌
|
||||
Checks: 4/6 passed
|
||||
Violations:
|
||||
❌ name: "My-Plugin" - must use lowercase-hyphen
|
||||
❌ homepage: "example.com" - must be valid URL
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
VALIDATION SUMMARY
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Overall Status: ❌ FAIL
|
||||
|
||||
Checks Performed: 11
|
||||
Critical Errors: 4
|
||||
Warnings: 0
|
||||
Passed: 7
|
||||
|
||||
Publication Readiness: NOT READY ❌
|
||||
Fix 4 critical issues before submission
|
||||
|
||||
Priority Actions:
|
||||
1. Add version field: "1.0.0"
|
||||
2. Add license field: "MIT"
|
||||
3. Fix name format: "my-plugin"
|
||||
4. Fix homepage URL: "https://example.com"
|
||||
|
||||
Quality Score: 45/100 ⭐⭐
|
||||
Rating: Needs Improvement
|
||||
|
||||
Next Steps:
|
||||
1. Fix all critical errors above
|
||||
2. Re-run validation: /schema-validation full-schema path:.
|
||||
3. Aim for quality score 90+ for publication
|
||||
```
|
||||
|
||||
**Marketplace Example (with plugin entries)**:
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
FULL SCHEMA VALIDATION
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Target: marketplace.json
|
||||
Type: marketplace
|
||||
Mode: Standard
|
||||
|
||||
Phase 1: JSON Syntax ✅
|
||||
Status: Valid JSON
|
||||
|
||||
Phase 2: Required Fields ✅
|
||||
Required: 5/5 present
|
||||
Recommended: 4/4 present
|
||||
|
||||
Phase 3: Format Compliance ✅
|
||||
Checks: 4/4 passed
|
||||
|
||||
Phase 4: Plugin Entries ✅
|
||||
Total Entries: 3
|
||||
Passed: 3 (100%)
|
||||
Failed: 0
|
||||
|
||||
Entry 0: code-review ✅
|
||||
Entry 1: deploy-tools ✅
|
||||
Entry 2: security-scan ✅
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
VALIDATION SUMMARY
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Overall Status: ✅ PASS
|
||||
|
||||
Checks Performed: 23
|
||||
Critical Errors: 0
|
||||
Warnings: 0
|
||||
Passed: 23
|
||||
|
||||
Publication Readiness: READY ✅
|
||||
Your marketplace meets all standards
|
||||
All 3 plugin entries are valid
|
||||
|
||||
Quality Score: 100/100 ⭐⭐⭐⭐⭐
|
||||
Rating: Excellent
|
||||
```
|
||||
|
||||
### Error Handling
|
||||
|
||||
- **File not found**: List searched paths, suggest creating configuration
|
||||
- **Invalid JSON**: Stop at Phase 1, show syntax errors
|
||||
- **Auto-detect failure**: Suggest specifying type explicitly
|
||||
- **Script execution error**: Show script path and error message
|
||||
|
||||
### Performance
|
||||
|
||||
- **Plugin**: 1-2 seconds (3 phases)
|
||||
- **Marketplace**: 2-5 seconds (4 phases, depends on plugin entry count)
|
||||
- **Large Marketplace**: 5-10 seconds (50+ plugin entries)
|
||||
|
||||
**Request**: $ARGUMENTS
|
||||
Reference in New Issue
Block a user