$npx -y skills add Affitor/affiliate-skills --skill skill-finderFind the right Affitor skill for your goal. Triggers on: "which skill should I use", "find me a skill", "what skills are available", "help me choose a skill", "skill for SEO", "skill for email", "explore skills", "I'm new to Affitor", "what can Affitor do", "search skills", "skil
| 1 | # Skill Finder |
| 2 | |
| 3 | Search and discover Affitor skills by task, stage, keyword, or natural language goal. Returns a ranked list of matching skills with descriptions, input requirements, and recommended next steps. Output is a concise Markdown guide. |
| 4 | |
| 5 | ## Stage |
| 6 | |
| 7 | S8: Meta — The entry point to the entire Affitor ecosystem. New users don't know what's available. Experienced users forget skill names. Skill Finder bridges the gap — it reads the registry, matches intent to capability, and recommends the fastest path to the user's goal. |
| 8 | |
| 9 | ## When to Use |
| 10 | |
| 11 | - User is new to Affitor and asks "what can I do?" or "where do I start?" |
| 12 | - User describes a goal but doesn't name a specific skill |
| 13 | - User wants to find skills by stage (e.g., "what analytics skills exist?") |
| 14 | - User asks "which skill helps with [topic]?" |
| 15 | - User says anything like "find skill", "search skill", "explore skills" |
| 16 | - Chaining: recommended as the first skill for new users before S1-S7 |
| 17 | |
| 18 | ## Input Schema |
| 19 | |
| 20 | ```yaml |
| 21 | query: string # REQUIRED — natural language: "I want to write a blog review" |
| 22 | # or "what skills help with SEO?" or "analytics skills" |
| 23 | stage_filter: string # OPTIONAL — filter by stage: research | content | blog | landing |
| 24 | # | distribution | analytics | automation | meta |
| 25 | goal: string # OPTIONAL — broader goal: "first commission" | "scale to 1k" |
| 26 | # | "optimize conversions" | "automate my workflow" |
| 27 | ``` |
| 28 | |
| 29 | ## Workflow |
| 30 | |
| 31 | ### Step 1: Load Skill Catalog |
| 32 | |
| 33 | Read `registry.json` from the repository root (or from conversation context if already loaded). Parse all skills with their stage, name, slug, and description. |
| 34 | |
| 35 | ### Step 2: Match Query to Skills |
| 36 | |
| 37 | Match the user's `query` against: |
| 38 | 1. Skill names and slugs (exact match → top priority) |
| 39 | 2. Skill descriptions (keyword overlap) |
| 40 | 3. Stage labels and descriptions (if user is browsing by stage) |
| 41 | 4. Inferred intent (e.g., "SEO" → `seo-audit`, `affiliate-blog-builder`) |
| 42 | |
| 43 | If `stage_filter` is provided, restrict results to that stage. |
| 44 | |
| 45 | ### Step 3: Rank Results |
| 46 | |
| 47 | Rank matches by relevance: |
| 48 | 1. Direct name/slug match |
| 49 | 2. Description keyword match count |
| 50 | 3. Stage alignment with user's apparent funnel position |
| 51 | |
| 52 | ### Step 4: Recommend a Path |
| 53 | |
| 54 | If the user's goal spans multiple stages, suggest a skill sequence: |
| 55 | - "You want to go from zero to first commission → S1 → S2 → S3 → S5" |
| 56 | - "You want to optimize existing content → S6 (seo-audit, ab-test-generator)" |
| 57 | |
| 58 | ### Step 5: Output Results |
| 59 | |
| 60 | Present top 3-5 matching skills with: |
| 61 | - Skill name and stage |
| 62 | - What it does (one sentence) |
| 63 | - What input it needs |
| 64 | - Example invocation prompt |
| 65 | |
| 66 | ### Step 6: Self-Validation |
| 67 | |
| 68 | Before presenting output, verify: |
| 69 | |
| 70 | - [ ] All matched skills exist in the current registry |
| 71 | - [ ] Example prompts are copy-paste ready and grammatically correct |
| 72 | - [ ] Recommended path follows logical funnel sequence |
| 73 | - [ ] Relevance ranking: exact match > partial match > related |
| 74 | - [ ] Input needed descriptions match actual skill Input Schemas |
| 75 | |
| 76 | If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes. |
| 77 | |
| 78 | ## Output Schema |
| 79 | |
| 80 | ```yaml |
| 81 | output_schema_version: "1.0.0" # Semver — bump major on breaking changes |
| 82 | matches: |
| 83 | - skill: string # skill slug |
| 84 | stage: string # e.g., "S6: Analytics" |
| 85 | description: string # one-sentence summary |
| 86 | input_needed: string # what the user needs to provide |
| 87 | example_prompt: string # copy-paste prompt to invoke the skill |
| 88 | relevance: string # "exact" | "high" | "related" |
| 89 | |
| 90 | recommended_path: |
| 91 | description: string # why this path |
| 92 | steps: |
| 93 | - order: number |
| 94 | skill: string |
| 95 | action: string # what this step accomplishes |
| 96 | ``` |
| 97 | |
| 98 | ## Output Format |
| 99 | |
| 100 | 1. **Matching Skills** — table with skill name, stage, description, and relevance |
| 101 | 2. **How to Use** — for each top match, show the exact prompt to invoke it |
| 102 | 3. **Recommended Path** — if the goal spans multiple stages, a numbered sequence |
| 103 | |
| 104 | ## Error Handling |
| 105 | |
| 106 | - **Empty query**: "What are you trying to accomplish? For example: 'write a blog review', 'track conversions', or 'plan a full funnel'." |
| 107 | - **No matches found**: "No skills match '[query]'. Here are all available stages: [list stages]. Tr |