[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C36R4CEB7EWVACW485EKP3":3,"skill-same:01M6C36R4CEB7EWVACW485EKP3":82},{"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":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6C36R4CEB7EWVACW485EKP3","find-sources",null,"Discover and rank media sources across platforms for an artist or specific content","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\u002Fmedia-curator\u002Fskills\u002Ffind-sources\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"find","sources","find sources","across","track","for","websearch","output","complete","scope","name","discover","efficiency","content","webfetch","write","read","haiku","Bash","Media","yaml","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: find-sources\nplatforms: [all]\ndescription: Discover and rank media sources across platforms for an artist or specific content\ncommandHint:\n  argumentHint: '\"\u003Cartist>\" [--scope complete|album:NAME|era:NAME|track:NAME] [--tier 1-4] [--output sources.yaml]'\n  allowedTools: 'Bash, Read, Write, WebSearch, WebFetch'\n  model: haiku\n  category: media-curator\n  modelRole: efficiency\n  modelTier: economy\n---\n\n# find-sources\n\nDiscover and rank media sources across YouTube, Internet Archive, Bandcamp, SoundCloud, and other platforms. Intelligently prioritizes official releases, lossless formats, and verified channels while filtering out low-quality duplicates.\n\n## Purpose\n\nAutomate the tedious process of hunting down the best available version of media content across fragmented platforms. Instead of manually checking Bandcamp, YouTube, archive.org, and streaming services, this command orchestrates a comprehensive search and returns a ranked, deduplicated list of sources with quality scoring.\n\n**Key Benefits**:\n- **Time Savings**: Search 5+ platforms in one command instead of manual browser searches\n- **Quality Assurance**: Automatically prioritizes lossless > high-bitrate > standard quality\n- **Official First**: Verified channels and artist-uploaded content ranked highest\n- **Deduplication**: Filters redundant sources, keeps only the best version\n- **Comprehensive Coverage**: Catches rare\u002Farchival content missed by streaming services\n\n## Parameters\n\n### Required\n\n**`\u003Cartist>`** - Artist or creator name to search for\n\nExamples:\n- `\"Tool\"`\n- `\"Pink Floyd\"`\n- `\"Grateful Dead\"`\n- `\"Tame Impala\"`\n\n### Optional Flags\n\n**`--scope \u003Cscope>`** - Limit search scope (default: `complete`)\n\n- `complete` - Full artist catalog (all albums, singles, live recordings)\n- `album:NAME` - Specific album only (e.g., `album:\"Dark Side of the Moon\"`)\n- `era:NAME` - Time period or tour (e.g., `era:\"1990-1995\"`, `era:\"Lateralus Tour\"`)\n- `track:NAME` - Single song across all versions (e.g., `track:\"Stairway to Heaven\"`)\n\n**`--tier \u003C1-4>`** - Minimum acceptable quality tier (default: `3`)\n\n- `1` - Official\u002FLossless only (FLAC, verified channels, Qobuz Hi-Res)\n- `2` - High Quality+ (256kbps AAC, 1080p video, official sources)\n- `3` - Standard+ (128kbps+, 720p+, most YouTube content)\n- `4` - Accept all (includes phone recordings, low-quality rips)\n\n**`--output \u003Cfile>`** - Save results to YAML file (default: print to stdout)\n\n- Absolute or relative path\n- Creates parent directories if needed\n- Overwrites existing file\n\n**`--platforms \u003Clist>`** - Comma-separated platform filter (default: all)\n\n- `youtube` - YouTube and YouTube Music\n- `bandcamp` - Bandcamp artist pages\n- `archive` - Internet Archive (all collections)\n- `soundcloud` - SoundCloud\n- `qobuz` - Qobuz Hi-Res\n- `vimeo` - Vimeo\n\nExample: `--platforms youtube,bandcamp,archive`\n\n**`--sort \u003Cfield>`** - Sort results by field (default: `quality_score`)\n\n- `quality_score` - Tier + format + verification score (0-100)\n- `tier` - Tier 1 first, then tier 2, etc.\n- `upload_date` - Newest first\n- `platform` - Alphabetical by platform name\n\n**`--limit \u003Cn>`** - Maximum results to return (default: unlimited)\n\n**`--verified-only`** - Only include verified\u002Fofficial sources (boolean flag)\n\n**`--include-unavailable`** - Include geo-blocked or restricted content (default: exclude)\n\n## Usage Examples\n\n### Example 1: Complete Artist Catalog (High Quality+)\n\n```bash\naiwg find-sources \"Tool\" --tier 2 --output tool-sources.yaml\n```\n\n**What it does**:\n1. Searches Bandcamp for official Tool releases (FLAC preferred)\n2. Checks YouTube for verified Tool channels and Topic channels\n3. Searches Internet Archive for live recordings and official uploads\n4. Filters results to Tier 2+ only (256kbps+ audio, 1080p+ video)\n5. Scores and ranks all sources\n6. Saves to `tool-sources.yaml`\n\n**Expected output**: 30-50 sources including studio albums (FLAC from Bandcamp), official music videos (1080p YouTube), live concerts (archive.org soundboard recordings).\n\n### Example 2: Specific Album (Lossless Only)\n\n```bash\naiwg find-sources \"Pink Floyd\" --scope 'album:\"The Dark Side of the Moon\"' --tier 1 --verified-only\n```\n\n**What it does**:\n1. Searches only for \"The Dark Side of the Moon\" album\n2. Prioritizes lossless sources (FLAC, WAV, Qobuz Hi-Res)\n3. Only includes verified\u002Fofficial channels\n4. Filters out audience recordings, re-uploads, unofficial versions\n\n**Expected output**: 3-8 sources including Qobuz 24\u002F96 FLAC, Bandcamp official FLAC (if available), YouTube Topic channel official audio.\n\n### Example 3: Live Era Search\n\n```bash\naiwg find-sources \"Grateful Dead\" --scope 'era:\"1977\"' --platforms archive --output gd1977.yaml\n```\n\n**What it does**:\n1. Searches only Internet Archive\n2. Filters to 1977 concerts\n3. Includes soundboard recordings (Tier 2) and audience recordings (Tier 3)\n4. Saves comprehensive list to `gd1977.yaml`\n\n**Expected output**: 50-100 sources (Grateful Dead has extensive archive.org presence with official taper policy).\n\n### Example 4: Single Track Across All Versions\n\n```bash\naiwg find-sources \"Led Zeppelin\" --scope 'track:\"Stairway to Heaven\"' --tier 2\n```\n\n**What it does**:\n1. Finds all high-quality versions of \"Stairway to Heaven\"\n2. Includes studio version, live recordings, remastered editions\n3. Ranks by quality score\n4. Prints to stdout (no --output specified)\n\n**Expected output**: 10-20 sources including studio album version, live at Madison Square Garden, BBC Sessions version, 2014 remaster, etc.\n\n### Example 5: Platform-Specific Search\n\n```bash\naiwg find-sources \"Tame Impala\" --platforms youtube,bandcamp --sort upload_date --limit 10\n```\n\n**What it does**:\n1. Searches only YouTube and Bandcamp\n2. Sorts by upload date (newest first)\n3. Limits to 10 most recent results\n\n**Expected output**: Recent releases, new music videos, latest Bandcamp uploads.\n\n## Workflow\n\n### Phase 1: Parse Request\n\n1. **Extract Artist Name** - Clean and normalize input\n2. **Parse Scope** - Determine search boundaries (complete\u002Falbum\u002Fera\u002Ftrack)\n3. **Set Quality Threshold** - Minimum acceptable tier\n4. **Platform Selection** - Which platforms to query (default: all)\n\n### Phase 2: Official Channels First\n\n**Priority Search** - Highest quality, verified sources\n\n1. **Bandcamp**\n   ```bash\n   # Search Bandcamp for artist\n   curl -s \"https:\u002F\u002Fbandcamp.com\u002Fsearch?q=$(echo \"$ARTIST\" | sed 's\u002F \u002F+\u002Fg')&item_type=b\"\n   ```\n   - Extract artist page URL\n   - Check for FLAC\u002FWAV availability\n   - Record album list with formats\n\n2. **Qobuz (if available)**\n   ```bash\n   # Check Qobuz for Hi-Res releases\n   # Requires API key or web scraping\n   ```\n   - Look for 24-bit\u002F96kHz+ releases\n   - Note sample rates and bit depths\n\n3. **YouTube Verified Channels**\n   ```bash\n   yt-dlp --dump-json \"https:\u002F\u002Fwww.youtube.com\u002F@${ARTIST_HANDLE}\u002Fvideos\"\n   ```\n   - Find verified channel (✓ badge)\n   - Get video list with quality metadata\n   - Filter to HD (1080p+)\n\n4. **YouTube Topic Channels**\n   ```bash\n   yt-dlp \"ytsearch:${ARTIST} - Topic\"\n   ```\n   - Auto-generated official audio channels\n   - Usually AAC 256kbps\n   - Reliable metadata\n\n### Phase 3: Archive Search\n\n**Historical and Live Content**\n\n1. **Internet Archive API**\n   ```bash\n   curl \"https:\u002F\u002Farchive.org\u002Fadvancedsearch.php?q=creator:(${ARTIST})&fl[]=identifier,title,date,format,avg_rating&rows=100&output=json\"\n   ```\n   - Filter by scope (year range for era, album title, etc.)\n   - Parse formats (FLAC, MP3, Ogg)\n   - Note taper\u002Fsource info\n\n2. **Etree Collection** (for jam bands)\n   ```bash\n   curl \"https:\u002F\u002Farchive.org\u002Fadvancedsearch.php?q=collection:etree+AND+creator:(${ARTIST})&output=json\"\n   ```\n   - Soundboard recordings\n   - Audience recordings with quality ratings\n\n3. **Live Music Archive**\n   ```bash\n   curl \"https:\u002F\u002Farchive.org\u002Fadvancedsearch.php?q=collection:etree+AND+subject:(${ARTIST})&output=json\"\n   ```\n\n### Phase 4: YouTube Comprehensive\n\n**Broad Search with Quality Filtering**\n\n1. **Search Query Construction**\n   ```bash\n   # For complete catalog\n   QUERY=\"${ARTIST} official HD\"\n\n   # For album\n   QUERY=\"${ARTIST} ${ALBUM_NAME} full album\"\n\n   # For track\n   QUERY=\"${ARTIST} ${TRACK_NAME} official\"\n   ```\n\n2. **Execute Search**\n   ```bash\n   yt-dlp --dump-json \"ytsearch50:${QUERY}\" | jq -r '.[]'\n   ```\n\n3. **Quality Filter**\n   - Extract resolution (height >= 720 for Tier 3, >= 1080 for Tier 2)\n   - Extract audio bitrate (abr field)\n   - Check for \"Official\" in title or verified uploader\n\n4. **Deduplication**\n   - Compare video IDs\n   - Compare durations (within 5 seconds = likely duplicate)\n   - Keep highest quality version\n\n### Phase 5: Alternative Platforms\n\n**Additional Sources**\n\n1. **SoundCloud**\n   ```bash\n   # SoundCloud search (requires API or web scraping)\n   curl -s \"https:\u002F\u002Fsoundcloud.com\u002Fsearch\u002Fsounds?q=${ARTIST}\"\n   ```\n   - Check for official artist account\n   - Note Go+ tracks (320kbps)\n\n2. **Vimeo**\n   ```bash\n   curl \"https:\u002F\u002Fapi.vimeo.com\u002Fvideos?query=${ARTIST}\"\n   ```\n   - Pro accounts often have high-quality uploads\n   - Music videos and live sessions\n\n3. **Dailymotion** (fallback)\n   - Only if content not found elsewhere\n   - Usually lower priority\n\n### Phase 6: Quality Scoring\n\n**Score Each Source** (0-100 scale)\n\n```\nQuality Score = Tier Points + Format Points + Verification Points + Completeness Points\n\nTier Points (40 max):\n  - Tier 1: 40\n  - Tier 2: 30\n  - Tier 3: 20\n  - Tier 4: 10\n\nFormat Points (30 max):\n  Audio:\n    - Lossless (FLAC, WAV): 30\n    - 320kbps: 25\n    - 256kbps: 20\n    - 192kbps: 15\n    - 128kbps: 10\n    - \u003C128kbps: 5\n  Video:\n    - 4K (2160p): 30\n    - 1080p: 25\n    - 720p: 20\n    - 480p: 10\n    - \u003C480p: 5\n\nVerification Points (15 max):\n  - Official channel (✓): 15\n  - Verified uploader: 10\n  - High-reputation uploader: 5\n  - Unknown: 0\n\nCompleteness Points (15 max):\n  - Complete album\u002Fconcert: 15\n  - Partial (>50% of content): 10\n  - Single track: 5\n```\n\n### Phase 7: Rank and Deduplicate\n\n1. **Sort by Quality Score** - Highest first\n2. **Group by Content** - Same album\u002Ftrack\u002Fconcert\n3. **Remove Duplicates** - Keep highest-scored version\n4. **Apply Tier Filter** - Exclude below minimum tier\n5. **Apply Limit** - If --limit specified\n\n### Phase 8: Output\n\n**YAML Format** (if --output specified):\n\n```yaml\nsearch_query:\n  artist: \"Artist Name\"\n  scope: \"complete\"\n  tier_minimum: 2\n  platforms: [\"youtube\", \"bandcamp\", \"archive\"]\n  search_date: \"2026-02-14T10:30:00Z\"\n\nsources_found:\n  - url: \"https:\u002F\u002Fbandcamp.com\u002Falbum\u002Fexample\"\n    platform: \"bandcamp\"\n    type: \"album\"\n    tier: 1\n    quality_score: 95\n    format: \"FLAC\"\n    bitrate: \"lossless\"\n    resolution: \"N\u002FA\"\n    size: \"450 MB\"\n    tracks: 12\n    notes: \"Official artist upload, includes booklet PDF\"\n    verified: true\n    upload_date: \"2023-05-15\"\n\n  - url: \"https:\u002F\u002Fyoutube.com\u002Fwatch?v=VIDEO_ID\"\n    platform: \"youtube\"\n    type: \"video\"\n    tier: 2\n    quality_score: 85\n    format: \"mp4\"\n    bitrate: \"256 kbps AAC\"\n    resolution: \"1080p\"\n    duration: \"3:45\"\n    views: 1250000\n    notes: \"Official music video\"\n    verified: true\n    upload_date: \"2023-05-20\"\n    channel: \"Artist Official\"\n    channel_verified: true\n\nquality_summary:\n  tier_1_sources: 5\n  tier_2_sources: 15\n  tier_3_sources: 8\n  tier_4_sources: 0\n  total_sources: 28\n  average_quality_score: 78.5\n  platforms_searched: [\"youtube\", \"bandcamp\", \"archive\", \"soundcloud\"]\n```\n\n**Stdout Format** (if no --output):\n\n```\nFound 28 sources for \"Artist Name\" (tier 2+)\n\nTier 1 Sources (5):\n  [95] Bandcamp FLAC - Album Name (450 MB, 12 tracks)\n       https:\u002F\u002Fbandcamp.com\u002Falbum\u002Fexample\n  [92] Qobuz 24\u002F96 - Album Name (1.2 GB)\n       https:\u002F\u002Fqobuz.com\u002Falbum\u002Fexample\n  ...\n\nTier 2 Sources (15):\n  [85] YouTube 1080p - Music Video ✓\n       https:\u002F\u002Fyoutube.com\u002Fwatch?v=VIDEO_ID\n  [82] Archive.org FLAC - Live 2023-06-10 (Soundboard)\n       https:\u002F\u002Farchive.org\u002Fdetails\u002FIDENTIFIER\n  ...\n\nTier 3 Sources (8):\n  [65] YouTube 720p - Live Performance\n       https:\u002F\u002Fyoutube.com\u002Fwatch?v=ANOTHER_ID\n  ...\n\nQuality Summary:\n  Average Score: 78.5\n  Total Sources: 28\n  Platforms: YouTube, Bandcamp, Archive.org, SoundCloud\n```\n\n## Output Format Details\n\n### Source Record Fields\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `url` | string | Direct link to source |\n| `platform` | string | Platform name (youtube, bandcamp, etc.) |\n| `type` | string | Content type (album, video, concert, track) |\n| `tier` | integer | Quality tier (1-4) |\n| `quality_score` | integer | Overall quality score (0-100) |\n| `format` | string | File format (FLAC, mp4, mp3, etc.) |\n| `bitrate` | string | Audio bitrate or \"lossless\" |\n| `resolution` | string | Video resolution or \"N\u002FA\" |\n| `size` | string | File\u002Fdownload size (if available) |\n| `duration` | string | Track\u002Fvideo duration (if available) |\n| `tracks` | integer | Number of tracks (for albums) |\n| `notes` | string | Additional context |\n| `verified` | boolean | Official\u002Fverified source |\n| `upload_date` | string | ISO 8601 date |\n| `channel` | string | Uploader\u002Fchannel name (if applicable) |\n| `taper` | string | Taper name (for archive.org concerts) |\n| `views` | integer | View count (if available) |\n\n## Error Handling\n\n### Platform Unreachable\n\nIf a platform is down or unreachable:\n1. Log warning: `Warning: Could not reach ${platform}`\n2. Continue with remaining platforms\n3. Note in output: `platforms_unavailable: [\"platform\"]`\n\n### Rate Limiting\n\nIf rate-limited by a platform:\n1. Implement exponential backoff (1s, 2s, 4s, 8s)\n2. Switch to alternative search method (web scraping if API limited)\n3. Log delay: `Rate limited by ${platform}, retrying in ${delay}s`\n\n### No Results Found\n\nIf no sources match criteria:\n1. Try relaxed search (fewer keywords, broader scope)\n2. Try alternative spelling\u002Fformatting\n3. Return empty `sources_found: []` with explanation\n4. Suggest: \"Try lowering --tier threshold or checking artist name spelling\"\n\n### Geo-Blocking\n\nIf content is geo-blocked:\n1. Note in `notes` field: \"Geo-blocked in current region\"\n2. Include if `--include-unavailable` flag set\n3. Otherwise exclude from results\n\n## Integration Points\n\n- **Queue Manager**: Receives source list for download queue prioritization\n- **Source Discoverer Agent**: Can invoke this command programmatically\n- **Metadata Enricher**: Uses source URLs for metadata extraction\n- **Quality Auditor**: Validates quality claims in source records\n\n## Best Practices\n\n### Search Strategy\n\n1. **Start Specific** - Use artist name + official keywords first\n2. **Expand Gradually** - Broaden search if initial results insufficient\n3. **Quality First** - Prefer fewer high-quality sources over many low-quality\n4. **Verify Metadata** - Cross-check with MusicBrainz\u002FDiscogs when possible\n\n### Performance Optimization\n\n1. **Parallel Searches** - Query platforms concurrently when possible\n2. **Cache Results** - Store search results temporarily to avoid re-querying\n3. **Limit Scope** - Use --scope to avoid searching entire catalogs unnecessarily\n4. **Smart Deduplication** - Compare content hashes, not just URLs\n\n### Quality Assurance\n\n1. **Verify Official Channels** - Check for verification badges\n2. **Cross-Reference Formats** - Ensure claimed quality matches actual files\n3. **Check Upload Dates** - Newer remasters may be higher quality\n4. **Read Comments** - User comments can indicate quality issues\n\n## Advanced Usage\n\n### Scripting Integration\n\n```bash\n# Find all Tier 1 sources and download them\naiwg find-sources \"Artist\" --tier 1 --output sources.yaml\nyq '.sources_found[].url' sources.yaml | while read url; do\n  yt-dlp \"$url\"\ndone\n```\n\n### Custom Quality Scoring\n\nUsers can override quality scoring by:\n1. Modifying the output YAML `quality_score` field\n2. Re-sorting with `yq` or `jq`\n3. Feeding modified YAML to downstream commands\n\n### Combining with Other Commands\n\n```bash\n# Find sources, filter to YouTube, download\naiwg find-sources \"Artist\" --platforms youtube --output yt.yaml\naiwg download-queue --input yt.yaml --format best\n```\n\n## Troubleshooting\n\n### Issue: Too many results\n\n**Solution**: Use `--limit`, increase `--tier` threshold, or narrow `--scope`\n\n### Issue: No Tier 1 sources found\n\n**Solution**: Lower to `--tier 2` or `--tier 3`, or check if artist has official Bandcamp\u002FQobuz\n\n### Issue: Incorrect artist found\n\n**Solution**: Use more specific artist name (e.g., \"Pink Floyd UK\" vs \"Pink Floyd tribute\")\n\n### Issue: Old\u002Foutdated results\n\n**Solution**: Sort by `--sort upload_date` to prioritize recent uploads\n\n## See Also\n\n- Source Discoverer Agent: `@$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fagents\u002Fsource-discoverer.md`\n- YouTube Acquisition Skill: `@$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Fyoutube-acquisition\u002FSKILL.md` — **read its Prerequisites section before triggering YouTube downloads** (EJS \u002F PO-token \u002F pip-vs-zipapp gotchas)\n- Queue Manager Agent: `@$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fagents\u002Fqueue-manager.md`\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fresearch-before-decision.md — Research sources thoroughly before deciding on acquisition strategy\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fhuman-authorization.md — Seek explicit authorization before irreversible acquisition actions\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Facquire\u002FSKILL.md — Acquisition skill that consumes source plans generated here\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Fquality-filtering\u002FSKILL.md — Quality scoring logic used to rank discovered sources\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Fanalyze-artist\u002FSKILL.md — Artist analysis skill that informs scope of source discovery\n","# find-sources\n\nDiscover and rank media sources across YouTube, Internet Archive, Bandcamp, SoundCloud, and other platforms. Intelligently prioritizes official releases, lossless formats, and verified channels while filtering out low-quality duplicates.\n\n## Purpose\n\nAutomate the tedious process of hunting down the best available version of media content across fragmented platforms. Instead of manually checking Bandcamp, YouTube, archive.org, and streaming services, this command orchestrates a comprehensive search and returns a ranked, deduplicated list of sources with quality scoring.\n\n**Key Benefits**:\n- **Time Savings**: Search 5+ platforms in one command instead of manual browser searches\n- **Quality Assurance**: Automatically prioritizes lossless > high-bitrate > standard quality\n- **Official First**: Verified channels and artist-uploaded content ranked highest\n- **Deduplication**: Filters redundant sources, keeps only the best version\n- **Comprehensive Coverage**: Catches rare\u002Farchival content missed by streaming services\n\n## Parameters\n\n### Required\n\n**`\u003Cartist>`** - Artist or creator name to search for\n\nExamples:\n- `\"Tool\"`\n- `\"Pink Floyd\"`\n- `\"Grateful Dead\"`\n- `\"Tame Impala\"`\n\n### Optional Flags\n\n**`--scope \u003Cscope>`** - Limit search scope (default: `complete`)\n\n- `complete` - Full artist catalog (all albums, singles, live recordings)\n- `album:NAME` - Specific album only (e.g., `album:\"Dark Side of the Moon\"`)\n- `era:NAME` - Time period or tour (e.g., `era:\"1990-1995\"`, `era:\"Lateralus Tour\"`)\n- `track:NAME` - Single song across all versions (e.g., `track:\"Stairway to Heaven\"`)\n\n**`--tier \u003C1-4>`** - Minimum acceptable quality tier (default: `3`)\n\n- `1` - Official\u002FLossless only (FLAC, verified channels, Qobuz Hi-Res)\n- `2` - High Quality+ (256kbps AAC, 1080p video, official sources)\n- `3` - Standard+ (128kbps+, 720p+, most YouTube content)\n- `4` - Accept all (includes phone recordings, low-quality rips)\n\n**`--output \u003Cfile>`** - Save results to YAML file (default: print to stdout)\n\n- Absolute or relative path\n- Creates parent directories if needed\n- Overwrites existing file\n\n**`--platforms \u003Clist>`** - Comma-separated platform filter (default: all)\n\n- `youtube` - YouTube and YouTube Music\n- `bandcamp` - Bandcamp artist pages\n- `archive` - Internet Archive (all collections)\n- `soundcloud` - SoundCloud\n- `qobuz` - Qobuz Hi-Res\n- `vimeo` - Vimeo\n\nExample: `--platforms youtube,bandcamp,archive`\n\n**`--sort \u003Cfield>`** - Sort results by field (default: `quality_score`)\n\n- `quality_score` - Tier + format + verification score (0-100)\n- `tier` - Tier 1 first, then tier 2, etc.\n- `upload_date` - Newest first\n- `platform` - Alphabetical by platform name\n\n**`--limit \u003Cn>`** - Maximum results to return (default: unlimited)\n\n**`--verified-only`** - Only include verified\u002Fofficial sources (boolean flag)\n\n**`--include-unavailable`** - Include geo-blocked or restricted content (default: exclude)\n\n## Usage Examples\n\n### Example 1: Complete Artist Catalog (High Quality+)\n\n```bash\naiwg find-sources \"Tool\" --tier 2 --output tool-sources.yaml\n```\n\n**What it does**:\n1. Searches Bandcamp for official Tool releases (FLAC preferred)\n2. Checks YouTube for verified Tool channels and Topic channels\n3. Searches Internet Archive for live recordings and official uploads\n4. Filters results to Tier 2+ only (256kbps+ audio, 1080p+ video)\n5. Scores and ranks all sources\n6. Saves to `tool-sources.yaml`\n\n**Expected output**: 30-50 sources including studio albums (FLAC from Bandcamp), official music videos (1080p YouTube), live concerts (archive.org soundboard recordings).\n\n### Example 2: Specific Album (Lossless Only)\n\n```bash\naiwg find-sources \"Pink Floyd\" --scope 'album:\"The Dark Side of the Moon\"' --tier 1 --verified-only\n```\n\n**What it does**:\n1. Searches only for \"The Dark Side of the Moon\" album\n2. Prioritizes lossless sources (FLAC, WAV, Qobuz Hi-Res)\n3. Only includes verified\u002Fofficial channels\n4. Filters out audience recordings, re-uploads, unofficial versions\n\n**Expected output**: 3-8 sources including Qobuz 24\u002F96 FLAC, Bandcamp official FLAC (if available), YouTube Topic channel official audio.\n\n### Example 3: Live Era Search\n\n```bash\naiwg find-sources \"Grateful Dead\" --scope 'era:\"1977\"' --platforms archive --output gd1977.yaml\n```\n\n**What it does**:\n1. Searches only Internet Archive\n2. Filters to 1977 concerts\n3. Includes soundboard recordings (Tier 2) and audience recordings (Tier 3)\n4. Saves comprehensive list to `gd1977.yaml`\n\n**Expected output**: 50-100 sources (Grateful Dead has extensive archive.org presence with official taper policy).\n\n### Example 4: Single Track Across All Versions\n\n```bash\naiwg find-sources \"Led Zeppelin\" --scope 'track:\"Stairway to Heaven\"' --tier 2\n```\n\n**What it does**:\n1. Finds all high-quality versions of \"Stairway to Heaven\"\n2. Includes studio version, live recordings, remastered editions\n3. Ranks by quality score\n4. Prints to stdout (no --output specified)\n\n**Expected output**: 10-20 sources including studio album version, live at Madison Square Garden, BBC Sessions version, 2014 remaster, etc.\n\n### Example 5: Platform-Specific Search\n\n```bash\naiwg find-sources \"Tame Impala\" --platforms youtube,bandcamp --sort upload_date --limit 10\n```\n\n**What it does**:\n1. Searches only YouTube and Bandcamp\n2. Sorts by upload date (newest first)\n3. Limits to 10 most recent results\n\n**Expected output**: Recent releases, new music videos, latest Bandcamp uploads.\n\n## Workflow\n\n### Phase 1: Parse Request\n\n1. **Extract Artist Name** - Clean and normalize input\n2. **Parse Scope** - Determine search boundaries (complete\u002Falbum\u002Fera\u002Ftrack)\n3. **Set Quality Threshold** - Minimum acceptable tier\n4. **Platform Selection** - Which platforms to query (default: all)\n\n### Phase 2: Official Channels First\n\n**Priority Search** - Highest quality, verified sources\n\n1. **Bandcamp**\n   ```bash\n   # Search Bandcamp for artist\n   curl -s \"https:\u002F\u002Fbandcamp.com\u002Fsearch?q=$(echo \"$ARTIST\" | sed 's\u002F \u002F+\u002Fg')&item_type=b\"\n   ```\n   - Extract artist page URL\n   - Check for FLAC\u002FWAV availability\n   - Record album list with formats\n\n2. **Qobuz (if available)**\n   ```bash\n   # Check Qobuz for Hi-Res releases\n   # Requires API key or web scraping\n   ```\n   - Look for 24-bit\u002F96kHz+ releases\n   - Note sample rates and bit depths\n\n3. **YouTube Verified Channels**\n   ```bash\n   yt-dlp --dump-json \"https:\u002F\u002Fwww.youtube.com\u002F@${ARTIST_HANDLE}\u002Fvideos\"\n   ```\n   - Find verified channel (✓ badge)\n   - Get video list with quality metadata\n   - Filter to HD (1080p+)\n\n4. **YouTube Topic Channels**\n   ```bash\n   yt-dlp \"ytsearch:${ARTIST} - Topic\"\n   ```\n   - Auto-generated official audio channels\n   - Usually AAC 256kbps\n   - Reliable metadata\n\n### Phase 3: Archive Search\n\n**Historical and Live Content**\n\n1. **Internet Archive API**\n   ```bash\n   curl \"https:\u002F\u002Farchive.org\u002Fadvancedsearch.php?q=creator:(${ARTIST})&fl[]=identifier,title,date,format,avg_rating&rows=100&output=json\"\n   ```\n   - Filter by scope (year range for era, album title, etc.)\n   - Parse formats (FLAC, MP3, Ogg)\n   - Note taper\u002Fsource info\n\n2. **Etree Collection** (for jam bands)\n   ```bash\n   curl \"https:\u002F\u002Farchive.org\u002Fadvancedsearch.php?q=collection:etree+AND+creator:(${ARTIST})&output=json\"\n   ```\n   - Soundboard recordings\n   - Audience recordings with quality ratings\n\n3. **Live Music Archive**\n   ```bash\n   curl \"https:\u002F\u002Farchive.org\u002Fadvancedsearch.php?q=collection:etree+AND+subject:(${ARTIST})&output=json\"\n   ```\n\n### Phase 4: YouTube Comprehensive\n\n**Broad Search with Quality Filtering**\n\n1. **Search Query Construction**\n   ```bash\n   # For complete catalog\n   QUERY=\"${ARTIST} official HD\"\n\n   # For album\n   QUERY=\"${ARTIST} ${ALBUM_NAME} full album\"\n\n   # For track\n   QUERY=\"${ARTIST} ${TRACK_NAME} official\"\n   ```\n\n2. **Execute Search**\n   ```bash\n   yt-dlp --dump-json \"ytsearch50:${QUERY}\" | jq -r '.[]'\n   ```\n\n3. **Quality Filter**\n   - Extract resolution (height >= 720 for Tier 3, >= 1080 for Tier 2)\n   - Extract audio bitrate (abr field)\n   - Check for \"Official\" in title or verified uploader\n\n4. **Deduplication**\n   - Compare video IDs\n   - Compare durations (within 5 seconds = likely duplicate)\n   - Keep highest quality version\n\n### Phase 5: Alternative Platforms\n\n**Additional Sources**\n\n1. **SoundCloud**\n   ```bash\n   # SoundCloud search (requires API or web scraping)\n   curl -s \"https:\u002F\u002Fsoundcloud.com\u002Fsearch\u002Fsounds?q=${ARTIST}\"\n   ```\n   - Check for official artist account\n   - Note Go+ tracks (320kbps)\n\n2. **Vimeo**\n   ```bash\n   curl \"https:\u002F\u002Fapi.vimeo.com\u002Fvideos?query=${ARTIST}\"\n   ```\n   - Pro accounts often have high-quality uploads\n   - Music videos and live sessions\n\n3. **Dailymotion** (fallback)\n   - Only if content not found elsewhere\n   - Usually lower priority\n\n### Phase 6: Quality Scoring\n\n**Score Each Source** (0-100 scale)\n\n```\nQuality Score = Tier Points + Format Points + Verification Points + Completeness Points\n\nTier Points (40 max):\n  - Tier 1: 40\n  - Tier 2: 30\n  - Tier 3: 20\n  - Tier 4: 10\n\nFormat Points (30 max):\n  Audio:\n    - Lossless (FLAC, WAV): 30\n    - 320kbps: 25\n    - 256kbps: 20\n    - 192kbps: 15\n    - 128kbps: 10\n    - \u003C128kbps: 5\n  Video:\n    - 4K (2160p): 30\n    - 1080p: 25\n    - 720p: 20\n    - 480p: 10\n    - \u003C480p: 5\n\nVerification Points (15 max):\n  - Official channel (✓): 15\n  - Verified uploader: 10\n  - High-reputation uploader: 5\n  - Unknown: 0\n\nCompleteness Points (15 max):\n  - Complete album\u002Fconcert: 15\n  - Partial (>50% of content): 10\n  - Single track: 5\n```\n\n### Phase 7: Rank and Deduplicate\n\n1. **Sort by Quality Score** - Highest first\n2. **Group by Content** - Same album\u002Ftrack\u002Fconcert\n3. **Remove Duplicates** - Keep highest-scored version\n4. **Apply Tier Filter** - Exclude below minimum tier\n5. **Apply Limit** - If --limit specified\n\n### Phase 8: Output\n\n**YAML Format** (if --output specified):\n\n```yaml\nsearch_query:\n  artist: \"Artist Name\"\n  scope: \"complete\"\n  tier_minimum: 2\n  platforms: [\"youtube\", \"bandcamp\", \"archive\"]\n  search_date: \"2026-02-14T10:30:00Z\"\n\nsources_found:\n  - url: \"https:\u002F\u002Fbandcamp.com\u002Falbum\u002Fexample\"\n    platform: \"bandcamp\"\n    type: \"album\"\n    tier: 1\n    quality_score: 95\n    format: \"FLAC\"\n    bitrate: \"lossless\"\n    resolution: \"N\u002FA\"\n    size: \"450 MB\"\n    tracks: 12\n    notes: \"Official artist upload, includes booklet PDF\"\n    verified: true\n    upload_date: \"2023-05-15\"\n\n  - url: \"https:\u002F\u002Fyoutube.com\u002Fwatch?v=VIDEO_ID\"\n    platform: \"youtube\"\n    type: \"video\"\n    tier: 2\n    quality_score: 85\n    format: \"mp4\"\n    bitrate: \"256 kbps AAC\"\n    resolution: \"1080p\"\n    duration: \"3:45\"\n    views: 1250000\n    notes: \"Official music video\"\n    verified: true\n    upload_date: \"2023-05-20\"\n    channel: \"Artist Official\"\n    channel_verified: true\n\nquality_summary:\n  tier_1_sources: 5\n  tier_2_sources: 15\n  tier_3_sources: 8\n  tier_4_sources: 0\n  total_sources: 28\n  average_quality_score: 78.5\n  platforms_searched: [\"youtube\", \"bandcamp\", \"archive\", \"soundcloud\"]\n```\n\n**Stdout Format** (if no --output):\n\n```\nFound 28 sources for \"Artist Name\" (tier 2+)\n\nTier 1 Sources (5):\n  [95] Bandcamp FLAC - Album Name (450 MB, 12 tracks)\n       https:\u002F\u002Fbandcamp.com\u002Falbum\u002Fexample\n  [92] Qobuz 24\u002F96 - Album Name (1.2 GB)\n       https:\u002F\u002Fqobuz.com\u002Falbum\u002Fexample\n  ...\n\nTier 2 Sources (15):\n  [85] YouTube 1080p - Music Video ✓\n       https:\u002F\u002Fyoutube.com\u002Fwatch?v=VIDEO_ID\n  [82] Archive.org FLAC - Live 2023-06-10 (Soundboard)\n       https:\u002F\u002Farchive.org\u002Fdetails\u002FIDENTIFIER\n  ...\n\nTier 3 Sources (8):\n  [65] YouTube 720p - Live Performance\n       https:\u002F\u002Fyoutube.com\u002Fwatch?v=ANOTHER_ID\n  ...\n\nQuality Summary:\n  Average Score: 78.5\n  Total Sources: 28\n  Platforms: YouTube, Bandcamp, Archive.org, SoundCloud\n```\n\n## Output Format Details\n\n### Source Record Fields\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `url` | string | Direct link to source |\n| `platform` | string | Platform name (youtube, bandcamp, etc.) |\n| `type` | string | Content type (album, video, concert, track) |\n| `tier` | integer | Quality tier (1-4) |\n| `quality_score` | integer | Overall quality score (0-100) |\n| `format` | string | File format (FLAC, mp4, mp3, etc.) |\n| `bitrate` | string | Audio bitrate or \"lossless\" |\n| `resolution` | string | Video resolution or \"N\u002FA\" |\n| `size` | string | File\u002Fdownload size (if available) |\n| `duration` | string | Track\u002Fvideo duration (if available) |\n| `tracks` | integer | Number of tracks (for albums) |\n| `notes` | string | Additional context |\n| `verified` | boolean | Official\u002Fverified source |\n| `upload_date` | string | ISO 8601 date |\n| `channel` | string | Uploader\u002Fchannel name (if applicable) |\n| `taper` | string | Taper name (for archive.org concerts) |\n| `views` | integer | View count (if available) |\n\n## Error Handling\n\n### Platform Unreachable\n\nIf a platform is down or unreachable:\n1. Log warning: `Warning: Could not reach ${platform}`\n2. Continue with remaining platforms\n3. Note in output: `platforms_unavailable: [\"platform\"]`\n\n### Rate Limiting\n\nIf rate-limited by a platform:\n1. Implement exponential backoff (1s, 2s, 4s, 8s)\n2. Switch to alternative search method (web scraping if API limited)\n3. Log delay: `Rate limited by ${platform}, retrying in ${delay}s`\n\n### No Results Found\n\nIf no sources match criteria:\n1. Try relaxed search (fewer keywords, broader scope)\n2. Try alternative spelling\u002Fformatting\n3. Return empty `sources_found: []` with explanation\n4. Suggest: \"Try lowering --tier threshold or checking artist name spelling\"\n\n### Geo-Blocking\n\nIf content is geo-blocked:\n1. Note in `notes` field: \"Geo-blocked in current region\"\n2. Include if `--include-unavailable` flag set\n3. Otherwise exclude from results\n\n## Integration Points\n\n- **Queue Manager**: Receives source list for download queue prioritization\n- **Source Discoverer Agent**: Can invoke this command programmatically\n- **Metadata Enricher**: Uses source URLs for metadata extraction\n- **Quality Auditor**: Validates quality claims in source records\n\n## Best Practices\n\n### Search Strategy\n\n1. **Start Specific** - Use artist name + official keywords first\n2. **Expand Gradually** - Broaden search if initial results insufficient\n3. **Quality First** - Prefer fewer high-quality sources over many low-quality\n4. **Verify Metadata** - Cross-check with MusicBrainz\u002FDiscogs when possible\n\n### Performance Optimization\n\n1. **Parallel Searches** - Query platforms concurrently when possible\n2. **Cache Results** - Store search results temporarily to avoid re-querying\n3. **Limit Scope** - Use --scope to avoid searching entire catalogs unnecessarily\n4. **Smart Deduplication** - Compare content hashes, not just URLs\n\n### Quality Assurance\n\n1. **Verify Official Channels** - Check for verification badges\n2. **Cross-Reference Formats** - Ensure claimed quality matches actual files\n3. **Check Upload Dates** - Newer remasters may be higher quality\n4. **Read Comments** - User comments can indicate quality issues\n\n## Advanced Usage\n\n### Scripting Integration\n\n```bash\n# Find all Tier 1 sources and download them\naiwg find-sources \"Artist\" --tier 1 --output sources.yaml\nyq '.sources_found[].url' sources.yaml | while read url; do\n  yt-dlp \"$url\"\ndone\n```\n\n### Custom Quality Scoring\n\nUsers can override quality scoring by:\n1. Modifying the output YAML `quality_score` field\n2. Re-sorting with `yq` or `jq`\n3. Feeding modified YAML to downstream commands\n\n### Combining with Other Commands\n\n```bash\n# Find sources, filter to YouTube, download\naiwg find-sources \"Artist\" --platforms youtube --output yt.yaml\naiwg download-queue --input yt.yaml --format best\n```\n\n## Troubleshooting\n\n### Issue: Too many results\n\n**Solution**: Use `--limit`, increase `--tier` threshold, or narrow `--scope`\n\n### Issue: No Tier 1 sources found\n\n**Solution**: Lower to `--tier 2` or `--tier 3`, or check if artist has official Bandcamp\u002FQobuz\n\n### Issue: Incorrect artist found\n\n**Solution**: Use more specific artist name (e.g., \"Pink Floyd UK\" vs \"Pink Floyd tribute\")\n\n### Issue: Old\u002Foutdated results\n\n**Solution**: Sort by `--sort upload_date` to prioritize recent uploads\n\n## See Also\n\n- Source Discoverer Agent: `@$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fagents\u002Fsource-discoverer.md`\n- YouTube Acquisition Skill: `@$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Fyoutube-acquisition\u002FSKILL.md` — **read its Prerequisites section before triggering YouTube downloads** (EJS \u002F PO-token \u002F pip-vs-zipapp gotchas)\n- Queue Manager Agent: `@$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fagents\u002Fqueue-manager.md`\n\n## References\n\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fresearch-before-decision.md — Research sources thoroughly before deciding on acquisition strategy\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Faddons\u002Faiwg-utils\u002Frules\u002Fhuman-authorization.md — Seek explicit authorization before irreversible acquisition actions\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Facquire\u002FSKILL.md — Acquisition skill that consumes source plans generated here\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Fquality-filtering\u002FSKILL.md — Quality scoring logic used to rank discovered sources\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fmedia-curator\u002Fskills\u002Fanalyze-artist\u002FSKILL.md — Artist analysis skill that informs scope of source discovery\n",{"name":5,"namespace":50,"platforms":51,"commandHint":53,"description":7},"aiwg",[52],"all",{"model":41,"category":54,"modelRole":36,"modelTier":55,"allowedTools":56,"argumentHint":57},"media-curator","economy","Bash, Read, Write, WebSearch, WebFetch","\"\u003Cartist>\" [--scope complete|album:NAME|era:NAME|track:NAME] [--tier 1-4] [--output sources.yaml]","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Fmedia-curator\u002Fskills\u002Ffind-sources",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 02:10:01",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add jmagly\u002Faiwg --skill find-sources",{"tool":74,"command":75},"bunx","bunx skills add jmagly\u002Faiwg --skill find-sources",{"tool":77,"command":78},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill find-sources","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fmedia-curator\u002Fskills\u002Ffind-sources\u002FSKILL.md",true,[],[83,109,131,137,144,158],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":90,"publishedAt":45},"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",[89],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[91,92,93,40,94,95,96,97,98,99,42,100,101,102,103,104,105,106,107,108],"host","host hardening","hardening","re","recommendations","remediation","plan","port","verification","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":45},"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":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[120,121,122,40,123,98,124,125,42,126,91,127,101,128,33,104,105,129,130,39],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","reconstruction","operator",{"skillNo":132,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":45},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[135],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[93,91,92,100,40,108,96,95,103,97,98,99,42,107,101,102,94,104,105,106],{"skillNo":138,"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":139,"categories":140,"keywords":143,"publishedAt":45},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[141,142],{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[121,120,104,123,98,124,42,122,91,127,101,128,33,40,105,126,125,129,130,39],{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":45},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[150],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[152,153,154,155,156,157],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":45},"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",[164],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[166,167,128,168,153],"pi","pi local","duplicate"]