[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C35783DX9S9WPTC5JZDTCF":3,"skill-same:01M6C35783DX9S9WPTC5JZDTCF":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":31,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6C35783DX9S9WPTC5JZDTCF","qa-protocol",null,"Run multi-stage quality assurance on marketing assets with channel-specific validation and approval-ready reports","jmagly\u002Faiwg","jmagly","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1159087?v=4","01M6C10AK8N2WCSQN11FYGTJWN","Joseph Magly","01M6C10AQ8A2RMED1Y1BSVY7NF",229,"MIT","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fmarketing\u002Fskills\u002Fqa-protocol\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000035","市场营销","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"protocol","qa","qa protocol","run","validation","marketing","quality","assets","channel","approval","quality assurance","ready","reports","stage","multi","with","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: qa-protocol\nplatforms: [all]\ndescription: Run multi-stage quality assurance on marketing assets with channel-specific validation and approval-ready reports\n---\n\n# qa-protocol\n\nMulti-stage quality assurance protocol for marketing assets with channel-specific validation.\n\n## Triggers\n\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"launch checklist\" \u002F \"pre-flight check\" → pre-launch validation\n- \"content QA\" → quality assurance shorthand\n\n## Purpose\n\nThis skill implements comprehensive quality assurance across marketing deliverables by:\n- Running channel-specific validation rules\n- Checking technical specifications\n- Validating content accuracy\n- Ensuring brand compliance\n- Generating approval-ready reports\n\n## Behavior\n\nWhen triggered, this skill:\n\n1. **Identifies asset type and channel**:\n   - Parse asset metadata\n   - Determine target channel(s)\n   - Load channel-specific QA rules\n\n2. **Runs technical validation**:\n   - File format and dimensions\n   - Resolution and color space\n   - File size limits\n   - Naming conventions\n\n3. **Validates content**:\n   - Copy accuracy and spelling\n   - Link verification\n   - CTA presence and clarity\n   - Legal requirements\n\n4. **Checks brand compliance**:\n   - Invoke brand-compliance skill\n   - Visual identity validation\n   - Tone consistency\n\n5. **Applies channel rules**:\n   - Platform-specific requirements\n   - Character limits\n   - Aspect ratios\n   - File type requirements\n\n6. **Generates QA report**:\n   - Pass\u002Ffail per criterion\n   - Blocking vs advisory issues\n   - Remediation guidance\n   - Approval recommendation\n\n## Channel Specifications\n\n### Social Media\n\n```yaml\nsocial_channels:\n  instagram:\n    feed_post:\n      aspect_ratios: [1:1, 4:5, 1.91:1]\n      max_video_duration: 60s\n      max_carousel: 10\n      caption_limit: 2200\n      hashtag_limit: 30\n    story:\n      aspect_ratio: 9:16\n      max_duration: 15s\n      dimensions: 1080x1920\n    reel:\n      aspect_ratio: 9:16\n      max_duration: 90s\n      dimensions: 1080x1920\n\n  linkedin:\n    post:\n      image_ratio: [1.91:1, 1:1, 4:5]\n      video_duration: [3s, 10min]\n      text_limit: 3000\n      hashtag_limit: 5\n    article:\n      header_image: 1200x627\n      min_words: 500\n\n  twitter:\n    tweet:\n      text_limit: 280\n      image_ratio: [16:9, 1:1]\n      max_images: 4\n      video_duration: [0.5s, 140s]\n    thread:\n      max_tweets: 25\n\n  facebook:\n    post:\n      text_limit: 63206\n      image_ratio: [1.91:1, 1:1, 4:5]\n      video_duration: [1s, 240min]\n    ad:\n      primary_text: 125\n      headline: 40\n      description: 30\n      image_ratio: 1.91:1\n```\n\n### Email\n\n```yaml\nemail_specs:\n  general:\n    max_width: 600px\n    max_file_size: 100KB per image\n    total_size: 1MB recommended\n    subject_line: 50 chars optimal\n    preheader: 85-100 chars\n\n  images:\n    formats: [jpg, png, gif]\n    max_dimensions: 600x1200\n    alt_text: required\n    background_colors: required (image blocking)\n\n  links:\n    tracking: required\n    utm_params: required\n    unsubscribe: required\n    physical_address: required\n\n  testing:\n    clients: [gmail, outlook, apple_mail, yahoo]\n    dark_mode: required\n    mobile_responsive: required\n```\n\n### Digital Ads\n\n```yaml\nad_specs:\n  google_display:\n    formats:\n      - {size: \"300x250\", name: \"medium_rectangle\"}\n      - {size: \"336x280\", name: \"large_rectangle\"}\n      - {size: \"728x90\", name: \"leaderboard\"}\n      - {size: \"300x600\", name: \"half_page\"}\n      - {size: \"320x50\", name: \"mobile_leaderboard\"}\n    max_file_size: 150KB\n    formats: [jpg, png, gif, html5]\n    animation_length: 30s max\n\n  meta_ads:\n    image:\n      ratio: 1.91:1\n      min_resolution: 1080x1080\n      text_overlay: \u003C20% recommended\n    video:\n      ratio: [1:1, 4:5, 9:16]\n      duration: [1s, 241min]\n      max_file_size: 4GB\n    carousel:\n      cards: [2, 10]\n      ratio: 1:1\n```\n\n### Print\n\n```yaml\nprint_specs:\n  general:\n    color_space: CMYK\n    resolution: 300dpi minimum\n    bleed: 0.125in (3mm)\n    safe_zone: 0.25in from trim\n\n  formats:\n    letter: 8.5x11in\n    a4: 210x297mm\n    business_card: 3.5x2in\n    brochure_trifold: 8.5x11in folded\n\n  preflight:\n    fonts_embedded: required\n    images_linked: check\n    overprint: verify\n    transparency: flatten for offset\n```\n\n## QA Checklist Categories\n\n### Content Validation\n\n```yaml\ncontent_checks:\n  copy:\n    - spelling_grammar: Run spell check\n    - brand_terminology: Use approved terms\n    - cta_present: Clear call-to-action\n    - value_proposition: Key message present\n    - tone_voice: Matches brand voice\n\n  accuracy:\n    - dates_times: Verify all dates\n    - prices_offers: Confirm pricing\n    - contact_info: Validate phone\u002Femail\n    - links_urls: Test all links\n    - legal_claims: Substantiation check\n\n  localization:\n    - translations: Accuracy check\n    - cultural_sensitivity: Review imagery\n    - regional_compliance: Local regulations\n```\n\n### Technical Validation\n\n```yaml\ntechnical_checks:\n  files:\n    - naming_convention: Follows standard\n    - file_format: Correct for channel\n    - file_size: Within limits\n    - resolution: Meets minimum\n\n  layout:\n    - safe_zones: Content within bounds\n    - bleed_setup: Correct for print\n    - aspect_ratio: Matches spec\n    - responsive: Mobile optimized\n\n  accessibility:\n    - alt_text: Present and descriptive\n    - contrast_ratio: WCAG compliant\n    - font_size: Minimum 14px\n    - color_independence: Not color-only\n```\n\n### Brand Validation\n\n```yaml\nbrand_checks:\n  visual:\n    - logo_usage: Correct version and placement\n    - color_palette: On-brand colors only\n    - typography: Approved fonts\n    - imagery_style: Matches guidelines\n\n  verbal:\n    - tone: Consistent with brand voice\n    - messaging: Key messages present\n    - tagline: Correct usage\n    - terminology: Approved glossary\n```\n\n## QA Report Format\n\n```markdown\n# Quality Assurance Report\n\n**Asset**: Holiday Email Campaign - Hero Banner\n**Channel**: Email\n**Date**: 2025-12-08\n**QA Specialist**: qa-protocol skill\n\n## Summary\n\n| Category | Checks | Passed | Failed | Warnings |\n|----------|--------|--------|--------|----------|\n| Content | 12 | 11 | 0 | 1 |\n| Technical | 8 | 8 | 0 | 0 |\n| Brand | 6 | 5 | 1 | 0 |\n| Channel | 10 | 9 | 1 | 0 |\n| **Total** | **36** | **33** | **2** | **1** |\n\n## Status: CONDITIONAL PASS\n\nAsset may proceed after addressing 2 blocking issues.\n\n## Blocking Issues\n\n### BLK-001: Missing Alt Text\n- **Category**: Channel (Email)\n- **Element**: Hero image\n- **Requirement**: Alt text required for email images\n- **Fix**: Add descriptive alt text: \"Holiday sale - 30% off all products\"\n\n### BLK-002: Off-Brand Color\n- **Category**: Brand\n- **Element**: CTA button\n- **Current**: #FF6B6B (coral)\n- **Required**: #0066CC (brand blue) or #00AA55 (brand green)\n- **Fix**: Update button color to brand palette\n\n## Warnings\n\n### WARN-001: Subject Line Length\n- **Category**: Content\n- **Current**: 62 characters\n- **Recommended**: 50 characters optimal\n- **Note**: May truncate on mobile devices\n- **Suggestion**: \"Holiday Sale: 30% Off Everything\" (35 chars)\n\n## Passed Checks\n\n### Content\n- [x] Spelling and grammar verified\n- [x] CTA present and clear (\"Shop Now\")\n- [x] Value proposition stated (30% off)\n- [x] Dates accurate (Dec 15-25)\n- [x] Links functional (3 tested)\n- [x] Unsubscribe link present\n- [x] Physical address included\n- [x] Price claims verified\n- [x] Terms link present\n- [x] Preheader text present\n- [x] Tone matches brand voice\n\n### Technical\n- [x] File size: 450KB (under 1MB limit)\n- [x] Image resolution: 600x400 (correct)\n- [x] Format: HTML with inline CSS\n- [x] Width: 600px (correct)\n- [x] Images have fallback colors\n- [x] Mobile responsive\n- [x] Dark mode compatible\n- [x] Client tested (Gmail, Outlook, Apple Mail)\n\n### Brand\n- [x] Logo: Correct horizontal version\n- [x] Typography: Inter font family\n- [x] Imagery: On-brand photography style\n- [x] Tone: Friendly professional\n- [x] Tagline: Correct usage\n\n### Channel (Email)\n- [x] Subject line present\n- [x] Preheader configured\n- [x] UTM parameters present\n- [x] Tracking pixels configured\n- [x] List-unsubscribe header\n- [x] SPF\u002FDKIM configured\n- [x] Preview text optimized\n- [x] Footer compliant\n- [x] Mobile preview checked\n\n## Approval Recommendation\n\n**Status**: CONDITIONAL\n\nAsset is ready for approval pending:\n1. Add alt text to hero image\n2. Update CTA button to brand color\n\nEstimated fix time: 15 minutes\n\n## Sign-off\n\n- [ ] Content Owner: _____________\n- [ ] Brand Manager: _____________\n- [ ] Legal (if applicable): _____________\n- [ ] Final Approver: _____________\n```\n\n## Usage Examples\n\n### Full QA Check\n\n```\nUser: \"QA this email campaign\"\n\nSkill executes:\n1. Detect asset type: Email campaign\n2. Load email QA rules\n3. Run content validation\n4. Run technical checks\n5. Run brand compliance\n6. Apply email-specific rules\n7. Generate report\n\nOutput:\n\"QA Complete: CONDITIONAL PASS\n\n36 checks run:\n- Passed: 33\n- Failed: 2\n- Warnings: 1\n\nBlocking Issues:\n1. Missing alt text on hero image\n2. CTA button uses off-brand color\n\nReport: .aiwg\u002Fmarketing\u002Fqa\u002Femail-holiday-qa-report.md\"\n```\n\n### Channel-Specific Check\n\n```\nUser: \"Validate for Instagram\"\n\nSkill focuses on:\n- Instagram feed\u002Fstory\u002Freel specs\n- Aspect ratio validation\n- Caption length check\n- Hashtag count\n\nOutput:\n\"Instagram Validation: PASS\n\nAll checks passed:\n- Aspect ratio: 1:1 (correct for feed)\n- Resolution: 1080x1080 (meets minimum)\n- Caption: 180 chars (under 2200 limit)\n- Hashtags: 12 (under 30 limit)\n\nReady for posting.\"\n```\n\n### Pre-Flight Check\n\n```\nUser: \"Pre-flight check for print\"\n\nSkill validates:\n- CMYK color space\n- 300dpi resolution\n- Bleed setup\n- Font embedding\n- Linked images\n\nOutput:\n\"Print Pre-flight: FAIL\n\nCritical issues:\n1. Color space: RGB (need CMYK)\n2. Resolution: 150dpi (need 300dpi)\n3. Bleed: Not set (need 0.125in)\n\nMust fix before sending to printer.\"\n```\n\n## Integration\n\nThis skill uses:\n- `brand-compliance`: For brand validation dimension\n- `project-awareness`: For detecting asset context\n- `artifact-metadata`: For tracking QA status\n\n## Agent Orchestration\n\n```yaml\nagents:\n  content_review:\n    agent: editor\n    focus: Copy accuracy, spelling, grammar\n\n  brand_review:\n    agent: brand-guardian\n    focus: Visual and verbal brand compliance\n\n  technical_review:\n    agent: quality-controller\n    focus: Specs, formats, technical requirements\n\n  legal_review:\n    agent: legal-reviewer\n    focus: Claims, disclosures, compliance\n    condition: has_claims == true\n```\n\n## Configuration\n\n### Channel Rules Location\n\n```yaml\nqa_config:\n  channel_specs: .aiwg\u002Fmarketing\u002Fconfig\u002Fchannel-specs.yaml\n  brand_rules: .aiwg\u002Fmarketing\u002Fbrand\u002F\n  qa_templates: templates\u002Fdesign-operations\u002Fdesign-qa-checklist-template.md\n```\n\n### Severity Levels\n\n```yaml\nseverity:\n  blocking:\n    - missing_legal_disclosure\n    - broken_link\n    - wrong_price\n    - missing_alt_text\n    - off_brand_logo\n\n  warning:\n    - suboptimal_length\n    - minor_typo\n    - style_preference\n\n  advisory:\n    - optimization_suggestion\n    - best_practice_note\n```\n\n## Output Locations\n\n- QA reports: `.aiwg\u002Fmarketing\u002Fqa\u002F{asset}-qa-report.md`\n- Checklists: `.aiwg\u002Fmarketing\u002Fqa\u002Fchecklists\u002F`\n- Approval records: `.aiwg\u002Fmarketing\u002Fapprovals\u002F`\n\n## References\n\n- Channel specifications: .aiwg\u002Fmarketing\u002Fconfig\u002Fchannel-specs.yaml\n- Brand guidelines: .aiwg\u002Fmarketing\u002Fbrand\u002F\n- QA templates: templates\u002Fdesign-operations\u002Fdesign-qa-checklist-template.md\n","# qa-protocol\n\nMulti-stage quality assurance protocol for marketing assets with channel-specific validation.\n\n## Triggers\n\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"launch checklist\" \u002F \"pre-flight check\" → pre-launch validation\n- \"content QA\" → quality assurance shorthand\n\n## Purpose\n\nThis skill implements comprehensive quality assurance across marketing deliverables by:\n- Running channel-specific validation rules\n- Checking technical specifications\n- Validating content accuracy\n- Ensuring brand compliance\n- Generating approval-ready reports\n\n## Behavior\n\nWhen triggered, this skill:\n\n1. **Identifies asset type and channel**:\n   - Parse asset metadata\n   - Determine target channel(s)\n   - Load channel-specific QA rules\n\n2. **Runs technical validation**:\n   - File format and dimensions\n   - Resolution and color space\n   - File size limits\n   - Naming conventions\n\n3. **Validates content**:\n   - Copy accuracy and spelling\n   - Link verification\n   - CTA presence and clarity\n   - Legal requirements\n\n4. **Checks brand compliance**:\n   - Invoke brand-compliance skill\n   - Visual identity validation\n   - Tone consistency\n\n5. **Applies channel rules**:\n   - Platform-specific requirements\n   - Character limits\n   - Aspect ratios\n   - File type requirements\n\n6. **Generates QA report**:\n   - Pass\u002Ffail per criterion\n   - Blocking vs advisory issues\n   - Remediation guidance\n   - Approval recommendation\n\n## Channel Specifications\n\n### Social Media\n\n```yaml\nsocial_channels:\n  instagram:\n    feed_post:\n      aspect_ratios: [1:1, 4:5, 1.91:1]\n      max_video_duration: 60s\n      max_carousel: 10\n      caption_limit: 2200\n      hashtag_limit: 30\n    story:\n      aspect_ratio: 9:16\n      max_duration: 15s\n      dimensions: 1080x1920\n    reel:\n      aspect_ratio: 9:16\n      max_duration: 90s\n      dimensions: 1080x1920\n\n  linkedin:\n    post:\n      image_ratio: [1.91:1, 1:1, 4:5]\n      video_duration: [3s, 10min]\n      text_limit: 3000\n      hashtag_limit: 5\n    article:\n      header_image: 1200x627\n      min_words: 500\n\n  twitter:\n    tweet:\n      text_limit: 280\n      image_ratio: [16:9, 1:1]\n      max_images: 4\n      video_duration: [0.5s, 140s]\n    thread:\n      max_tweets: 25\n\n  facebook:\n    post:\n      text_limit: 63206\n      image_ratio: [1.91:1, 1:1, 4:5]\n      video_duration: [1s, 240min]\n    ad:\n      primary_text: 125\n      headline: 40\n      description: 30\n      image_ratio: 1.91:1\n```\n\n### Email\n\n```yaml\nemail_specs:\n  general:\n    max_width: 600px\n    max_file_size: 100KB per image\n    total_size: 1MB recommended\n    subject_line: 50 chars optimal\n    preheader: 85-100 chars\n\n  images:\n    formats: [jpg, png, gif]\n    max_dimensions: 600x1200\n    alt_text: required\n    background_colors: required (image blocking)\n\n  links:\n    tracking: required\n    utm_params: required\n    unsubscribe: required\n    physical_address: required\n\n  testing:\n    clients: [gmail, outlook, apple_mail, yahoo]\n    dark_mode: required\n    mobile_responsive: required\n```\n\n### Digital Ads\n\n```yaml\nad_specs:\n  google_display:\n    formats:\n      - {size: \"300x250\", name: \"medium_rectangle\"}\n      - {size: \"336x280\", name: \"large_rectangle\"}\n      - {size: \"728x90\", name: \"leaderboard\"}\n      - {size: \"300x600\", name: \"half_page\"}\n      - {size: \"320x50\", name: \"mobile_leaderboard\"}\n    max_file_size: 150KB\n    formats: [jpg, png, gif, html5]\n    animation_length: 30s max\n\n  meta_ads:\n    image:\n      ratio: 1.91:1\n      min_resolution: 1080x1080\n      text_overlay: \u003C20% recommended\n    video:\n      ratio: [1:1, 4:5, 9:16]\n      duration: [1s, 241min]\n      max_file_size: 4GB\n    carousel:\n      cards: [2, 10]\n      ratio: 1:1\n```\n\n### Print\n\n```yaml\nprint_specs:\n  general:\n    color_space: CMYK\n    resolution: 300dpi minimum\n    bleed: 0.125in (3mm)\n    safe_zone: 0.25in from trim\n\n  formats:\n    letter: 8.5x11in\n    a4: 210x297mm\n    business_card: 3.5x2in\n    brochure_trifold: 8.5x11in folded\n\n  preflight:\n    fonts_embedded: required\n    images_linked: check\n    overprint: verify\n    transparency: flatten for offset\n```\n\n## QA Checklist Categories\n\n### Content Validation\n\n```yaml\ncontent_checks:\n  copy:\n    - spelling_grammar: Run spell check\n    - brand_terminology: Use approved terms\n    - cta_present: Clear call-to-action\n    - value_proposition: Key message present\n    - tone_voice: Matches brand voice\n\n  accuracy:\n    - dates_times: Verify all dates\n    - prices_offers: Confirm pricing\n    - contact_info: Validate phone\u002Femail\n    - links_urls: Test all links\n    - legal_claims: Substantiation check\n\n  localization:\n    - translations: Accuracy check\n    - cultural_sensitivity: Review imagery\n    - regional_compliance: Local regulations\n```\n\n### Technical Validation\n\n```yaml\ntechnical_checks:\n  files:\n    - naming_convention: Follows standard\n    - file_format: Correct for channel\n    - file_size: Within limits\n    - resolution: Meets minimum\n\n  layout:\n    - safe_zones: Content within bounds\n    - bleed_setup: Correct for print\n    - aspect_ratio: Matches spec\n    - responsive: Mobile optimized\n\n  accessibility:\n    - alt_text: Present and descriptive\n    - contrast_ratio: WCAG compliant\n    - font_size: Minimum 14px\n    - color_independence: Not color-only\n```\n\n### Brand Validation\n\n```yaml\nbrand_checks:\n  visual:\n    - logo_usage: Correct version and placement\n    - color_palette: On-brand colors only\n    - typography: Approved fonts\n    - imagery_style: Matches guidelines\n\n  verbal:\n    - tone: Consistent with brand voice\n    - messaging: Key messages present\n    - tagline: Correct usage\n    - terminology: Approved glossary\n```\n\n## QA Report Format\n\n```markdown\n# Quality Assurance Report\n\n**Asset**: Holiday Email Campaign - Hero Banner\n**Channel**: Email\n**Date**: 2025-12-08\n**QA Specialist**: qa-protocol skill\n\n## Summary\n\n| Category | Checks | Passed | Failed | Warnings |\n|----------|--------|--------|--------|----------|\n| Content | 12 | 11 | 0 | 1 |\n| Technical | 8 | 8 | 0 | 0 |\n| Brand | 6 | 5 | 1 | 0 |\n| Channel | 10 | 9 | 1 | 0 |\n| **Total** | **36** | **33** | **2** | **1** |\n\n## Status: CONDITIONAL PASS\n\nAsset may proceed after addressing 2 blocking issues.\n\n## Blocking Issues\n\n### BLK-001: Missing Alt Text\n- **Category**: Channel (Email)\n- **Element**: Hero image\n- **Requirement**: Alt text required for email images\n- **Fix**: Add descriptive alt text: \"Holiday sale - 30% off all products\"\n\n### BLK-002: Off-Brand Color\n- **Category**: Brand\n- **Element**: CTA button\n- **Current**: #FF6B6B (coral)\n- **Required**: #0066CC (brand blue) or #00AA55 (brand green)\n- **Fix**: Update button color to brand palette\n\n## Warnings\n\n### WARN-001: Subject Line Length\n- **Category**: Content\n- **Current**: 62 characters\n- **Recommended**: 50 characters optimal\n- **Note**: May truncate on mobile devices\n- **Suggestion**: \"Holiday Sale: 30% Off Everything\" (35 chars)\n\n## Passed Checks\n\n### Content\n- [x] Spelling and grammar verified\n- [x] CTA present and clear (\"Shop Now\")\n- [x] Value proposition stated (30% off)\n- [x] Dates accurate (Dec 15-25)\n- [x] Links functional (3 tested)\n- [x] Unsubscribe link present\n- [x] Physical address included\n- [x] Price claims verified\n- [x] Terms link present\n- [x] Preheader text present\n- [x] Tone matches brand voice\n\n### Technical\n- [x] File size: 450KB (under 1MB limit)\n- [x] Image resolution: 600x400 (correct)\n- [x] Format: HTML with inline CSS\n- [x] Width: 600px (correct)\n- [x] Images have fallback colors\n- [x] Mobile responsive\n- [x] Dark mode compatible\n- [x] Client tested (Gmail, Outlook, Apple Mail)\n\n### Brand\n- [x] Logo: Correct horizontal version\n- [x] Typography: Inter font family\n- [x] Imagery: On-brand photography style\n- [x] Tone: Friendly professional\n- [x] Tagline: Correct usage\n\n### Channel (Email)\n- [x] Subject line present\n- [x] Preheader configured\n- [x] UTM parameters present\n- [x] Tracking pixels configured\n- [x] List-unsubscribe header\n- [x] SPF\u002FDKIM configured\n- [x] Preview text optimized\n- [x] Footer compliant\n- [x] Mobile preview checked\n\n## Approval Recommendation\n\n**Status**: CONDITIONAL\n\nAsset is ready for approval pending:\n1. Add alt text to hero image\n2. Update CTA button to brand color\n\nEstimated fix time: 15 minutes\n\n## Sign-off\n\n- [ ] Content Owner: _____________\n- [ ] Brand Manager: _____________\n- [ ] Legal (if applicable): _____________\n- [ ] Final Approver: _____________\n```\n\n## Usage Examples\n\n### Full QA Check\n\n```\nUser: \"QA this email campaign\"\n\nSkill executes:\n1. Detect asset type: Email campaign\n2. Load email QA rules\n3. Run content validation\n4. Run technical checks\n5. Run brand compliance\n6. Apply email-specific rules\n7. Generate report\n\nOutput:\n\"QA Complete: CONDITIONAL PASS\n\n36 checks run:\n- Passed: 33\n- Failed: 2\n- Warnings: 1\n\nBlocking Issues:\n1. Missing alt text on hero image\n2. CTA button uses off-brand color\n\nReport: .aiwg\u002Fmarketing\u002Fqa\u002Femail-holiday-qa-report.md\"\n```\n\n### Channel-Specific Check\n\n```\nUser: \"Validate for Instagram\"\n\nSkill focuses on:\n- Instagram feed\u002Fstory\u002Freel specs\n- Aspect ratio validation\n- Caption length check\n- Hashtag count\n\nOutput:\n\"Instagram Validation: PASS\n\nAll checks passed:\n- Aspect ratio: 1:1 (correct for feed)\n- Resolution: 1080x1080 (meets minimum)\n- Caption: 180 chars (under 2200 limit)\n- Hashtags: 12 (under 30 limit)\n\nReady for posting.\"\n```\n\n### Pre-Flight Check\n\n```\nUser: \"Pre-flight check for print\"\n\nSkill validates:\n- CMYK color space\n- 300dpi resolution\n- Bleed setup\n- Font embedding\n- Linked images\n\nOutput:\n\"Print Pre-flight: FAIL\n\nCritical issues:\n1. Color space: RGB (need CMYK)\n2. Resolution: 150dpi (need 300dpi)\n3. Bleed: Not set (need 0.125in)\n\nMust fix before sending to printer.\"\n```\n\n## Integration\n\nThis skill uses:\n- `brand-compliance`: For brand validation dimension\n- `project-awareness`: For detecting asset context\n- `artifact-metadata`: For tracking QA status\n\n## Agent Orchestration\n\n```yaml\nagents:\n  content_review:\n    agent: editor\n    focus: Copy accuracy, spelling, grammar\n\n  brand_review:\n    agent: brand-guardian\n    focus: Visual and verbal brand compliance\n\n  technical_review:\n    agent: quality-controller\n    focus: Specs, formats, technical requirements\n\n  legal_review:\n    agent: legal-reviewer\n    focus: Claims, disclosures, compliance\n    condition: has_claims == true\n```\n\n## Configuration\n\n### Channel Rules Location\n\n```yaml\nqa_config:\n  channel_specs: .aiwg\u002Fmarketing\u002Fconfig\u002Fchannel-specs.yaml\n  brand_rules: .aiwg\u002Fmarketing\u002Fbrand\u002F\n  qa_templates: templates\u002Fdesign-operations\u002Fdesign-qa-checklist-template.md\n```\n\n### Severity Levels\n\n```yaml\nseverity:\n  blocking:\n    - missing_legal_disclosure\n    - broken_link\n    - wrong_price\n    - missing_alt_text\n    - off_brand_logo\n\n  warning:\n    - suboptimal_length\n    - minor_typo\n    - style_preference\n\n  advisory:\n    - optimization_suggestion\n    - best_practice_note\n```\n\n## Output Locations\n\n- QA reports: `.aiwg\u002Fmarketing\u002Fqa\u002F{asset}-qa-report.md`\n- Checklists: `.aiwg\u002Fmarketing\u002Fqa\u002Fchecklists\u002F`\n- Approval records: `.aiwg\u002Fmarketing\u002Fapprovals\u002F`\n\n## References\n\n- Channel specifications: .aiwg\u002Fmarketing\u002Fconfig\u002Fchannel-specs.yaml\n- Brand guidelines: .aiwg\u002Fmarketing\u002Fbrand\u002F\n- QA templates: templates\u002Fdesign-operations\u002Fdesign-qa-checklist-template.md\n",{"name":5,"namespace":53,"platforms":54,"description":7},"aiwg",[55],"all","main","a602706fc62ff1cfcb18001358ac39647b08acf5","agentic\u002Fcode\u002Fplugins\u002Fmarketing\u002Fskills\u002Fqa-protocol",36,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg","https:\u002F\u002Faiwg.io","https:\u002F\u002Fgithub.com\u002Fjmagly","https:\u002F\u002Fintegrolabs.io","ml\u002Fai, industrial automation, safety\u002Fsecurity, ssi\r\n\r\nmagly.net\r\nintegrolabs.io\r\naiwg.io\r\nfortemi.com\r\npagenary.com\r\nbytecask.com","2026-11-14 10:46:34",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add jmagly\u002Faiwg --skill qa-protocol",{"tool":72,"command":73},"bunx","bunx skills add jmagly\u002Faiwg --skill qa-protocol",{"tool":75,"command":76},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill qa-protocol","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fmarketing\u002Fskills\u002Fqa-protocol\u002FSKILL.md",true,[],[81,109,133,139,146,160],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":88,"publishedAt":48},"01M70QA0BSYJ49EES9V4RE8QH1","host-hardening","Read-only system hardening baseline and plan-first host hardening recommendations for SSH, Docker bind addresses, firewall persistence, datastores, exporters and audit retention.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[87],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":119,"publishedAt":48},"01M70PNT2Z4HMZPRBTAF6073NN","exposure-analysis","Read-only firewall analysis and effective host exposure reconstruction for Docker published ports, UFW bypass, stale rules, CDN scope, IPv6 asymmetry and external probe allowlists.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fforensics\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[115,118],{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[120,121,122,92,123,97,124,125,99,126,89,127,101,128,129,104,105,130,131,132],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":134,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":48},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[137],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[91,89,90,100,92,108,95,94,103,96,97,98,99,107,101,102,93,104,105,106],{"skillNo":140,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":145,"publishedAt":48},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[143,144],{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[121,120,104,123,97,124,99,122,89,127,101,128,129,92,105,126,125,130,131,132],{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":48},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[152],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[154,155,156,157,158,159],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":167,"publishedAt":48},"01M6CB4AVK1W76MFMPP0JP32CJ","pi-local","Pi-local duplicate-precedence fixture.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fproviders\u002Fpi\u002Fproject\u002F.pi\u002Fskills\u002Fpi-local\u002FSKILL.md",[166],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[168,169,128,170,155],"pi","pi local","duplicate"]