{"id":"71f85b6a-3a4e-455d-83f2-7e912d2c4140","shortId":"rqVy2y","kind":"skill","title":"landscape-scan","tagline":"Scan the current market landscape and produce a ground-truth ecosystem snapshot. Chains /last30days for live research, validates with user, and writes brand/landscape.md with a Claims Blacklist that hard-gates all content generation. Use when: \"landscape\", \"ecosystem\", \"market sn","description":"# /landscape-scan -- Ground-Truth Ecosystem Snapshot\n\nEvery claim your marketing makes sits on top of an assumption about the market.\n\"We're the first to...\" \"Nobody else does...\" \"The market is moving toward...\"\nWhen these assumptions are wrong, your positioning collapses on contact with\nreality. Customers who Google your claims and find them false don't come back.\n\nThis skill builds a verified ecosystem snapshot that becomes the single source\nof truth for all downstream content. The Claims Blacklist it produces hard-gates\nevery content skill -- if a claim is blacklisted, no skill writes it. Period.\n\nNo SaaS tools needed. Live web research + user validation.\n\n---\n\n## On Activation\n\n1. Check if `brand/` directory exists in the project root.\n2. If it does, read available files in priority order:\n   - `competitors.md` -- existing competitive intel (primary input)\n   - `positioning.md` -- current positioning angles and claims\n   - `audience.md` -- target market and buyer personas\n   - `voice-profile.md` -- brand personality (for tone of output)\n   - `learnings.md` -- past marketing learnings and corrections\n3. Apply loaded brand context to focus the landscape scan -- existing competitor\n   data narrows the research query, positioning data identifies claims to verify.\n4. If `brand/` does not exist or is empty, proceed without it -- this skill\n   works standalone by asking the user foundational questions.\n\n---\n\n## Iteration Detection\n\nBefore starting, check whether `./brand/landscape.md` already exists.\n\n### If landscape.md EXISTS --> Refresh Mode\n\nDo not start from scratch. Instead:\n\n1. Read the existing landscape file.\n2. Present a summary of the current state:\n   ```\n   EXISTING LANDSCAPE SNAPSHOT\n   Last updated {date} by /landscape-scan\n\n   Ecosystem segments: {N}\n   Claims blacklisted: {N}\n   Market shifts tracked: {N}\n\n   Freshness: {days} days old (threshold: 14 days)\n\n   ------------------------------------------\n\n   What would you like to do?\n\n   1. Full refresh -- re-run /last30days, revalidate everything\n   2. Verify claims -- check if blacklisted claims are still invalid\n   3. Add new segment -- expand to cover a new market area\n   4. Rebuild from scratch -- discard and start over\n   ```\n\n3. Process the user's choice:\n   - Option 1 --> Re-research with fresh /last30days query, merge with existing data\n   - Option 2 --> Focused validation of Claims Blacklist items only\n   - Option 3 --> Targeted research on a new ecosystem segment, merge into existing file\n   - Option 4 --> Full process from scratch\n\n4. Before overwriting, show a diff of what changed and ask for confirmation.\n\n### If landscape.md DOES NOT EXIST --> Full Scan Mode\n\nProceed to the full process below.\n\n---\n\n## The Core Job\n\nMap current ecosystem reality so every downstream skill operates on verified\nground truth. The output has two critical components:\n\n1. **Ecosystem Snapshot** -- what is actually happening in the market right now\n   (players, trends, shifts, emerging categories, consolidation, funding rounds)\n2. **Claims Blacklist** -- specific claims your marketing MUST NOT make because\n   they are verifiably false, outdated, or easily disproven by a customer who\n   spends 30 seconds searching\n\nThe Claims Blacklist is not advisory. It is a hard gate. Every content-generating\nskill reads `brand/landscape.md` and refuses to write blacklisted claims.\n\n---\n\n## Orchestration Flow\n\n### Phase 1: Preflight\n\n1. Read brand/ context files (see On Activation above).\n2. Detect mode: create vs refresh (see Iteration Detection above).\n3. Determine context level:\n   - **L0** -- No brand/ files. Need to ask everything.\n   - **L1** -- Have product name/description only.\n   - **L2** -- Have competitors.md and/or positioning.md.\n   - **L3** -- Have L2 + will run /last30days for live data.\n   - **L4** -- Have L3 + existing landscape.md (refresh mode).\n4. If `--dry-run` is set, report what WOULD happen and exit. Do not make any\n   network calls or write any files.\n\n### Phase 2: Build Research Query\n\nExtract search parameters from available context:\n\n- **Product/Category**: from positioning.md `primary_gap` or user input\n- **Competitors**: from competitors.md competitor names, or user input\n- **Target market**: from audience.md `primary_persona`, or user input\n- **Time window**: last 30 days (default), or user-specified\n\nBuild the research query (see `references/query-templates.md` for industry-specific\ntemplates). The query should cover:\n\n1. Market movements -- funding, acquisitions, pivots, shutdowns\n2. Product launches -- new entrants, major version releases, feature parity shifts\n3. Pricing changes -- competitors adjusting pricing models or tiers\n4. Narrative shifts -- what the industry press and community are saying\n5. Regulatory/platform changes -- policy shifts that affect the ecosystem\n\nIf at L0-L1 (no competitors.md), ask the user:\n```\nI need to understand your market before scanning.\n\n1. What does your product do in one sentence?\n2. Who are your top 3 competitors? (names or URLs)\n3. What category would a customer search for?\n```\nCap at 3 questions. Use answers to build the query.\n\n### Phase 3: Run /last30days\n\nInvoke the Skill tool:\n```\nSkill: last30days\nArgs: \"{research query from Phase 2}\"\n```\n\nThe /last30days skill searches across Reddit, X/Twitter, YouTube, Hacker News,\nand web sources for the last 30 days of activity.\n\n**Fallback if /last30days is unavailable:**\n1. Use WebSearch tool directly with the research query.\n2. If WebSearch is unavailable, use Exa MCP for web research.\n3. If no web research is available at all, proceed with user knowledge only\n   and mark every finding as `source: user-reported` in the output.\n4. Note the limitation: \"Landscape based on provided information, not live\n   research. Verify before making strategic decisions.\"\n\n### Phase 4: Validate with User\n\nPresent 3-5 targeted questions using AskUserQuestion. Cap at 5 total -- do not\ninterrogate. Prioritize questions about contradictions and surprises.\n\n**Question priority order:**\n1. **Contradictions** -- where research contradicts existing brand/ files\n   \"Research shows {Competitor X} now offers free tier. Your competitors.md\n   says they're premium-only. Which is current?\"\n2. **Surprises** -- findings that might change strategy\n   \"Did you know {Competitor Y} raised $50M last month? Does this change\n   your positioning approach?\"\n3. **Gaps** -- things research couldn't determine\n   \"I couldn't verify whether {claim from positioning.md} is still unique\n   to you. Do any competitors now offer this?\"\n4. **Scope** -- if research surfaced new segments\n   \"Research surfaced {new player/category}. Should I include them in\n   the landscape?\"\n5. **Blacklist candidates** -- potential claims to block\n   \"Your positioning says 'only solution that does X.' Research found\n   2 competitors now do X. Should I blacklist this claim?\"\n\nIf there are no contradictions or surprises, reduce to 3 questions max.\nNever ask questions you can answer from the research.\n\n### Phase 5: Synthesize into landscape.md\n\nWrite `./brand/landscape.md` following the output format below. Every section\nmust be populated -- use \"No data available\" with a reason if a section cannot\nbe filled. See `references/landscape-schema.md` for the full schema with\nexamples of each section.\n\n### Phase 6: Cross-Reference\n\nAfter writing landscape.md, compare it against other brand/ files:\n\n1. **vs competitors.md** -- flag competitors that have changed positioning,\n   pricing, or status since competitors.md was written.\n2. **vs positioning.md** -- flag positioning claims that are now blacklisted\n   or weakened by market shifts.\n3. **vs audience.md** -- flag audience assumptions that market shifts may\n   have invalidated.\n\nPresent contradictions to the user:\n```\nCROSS-REFERENCE: BRAND FILE CONTRADICTIONS\n\n  competitors.md (updated 45 days ago)\n  ├── {Competitor X} pricing changed: was $29/mo, now free tier\n  └── New entrant {Y} not listed\n\n  positioning.md (updated 30 days ago)\n  ├── \"Only AI-powered solution\" -- now FALSE (2 competitors added AI)\n  └── Suggest: refresh with /positioning-angles\n\n  audience.md (updated 60 days ago)\n  └── No contradictions found\n\n  SUGGESTED REFRESHES\n  -> /competitive-intel    Update competitor teardowns (~15 min)\n  -> /positioning-angles   Rebuild angles with new landscape (~15 min)\n```\n\nDo NOT auto-update other brand files. Only flag and suggest.\n\n---\n\n## Output Format\n\nWrite `./brand/landscape.md` with this structure:\n\n```markdown\n---\ntitle: Market Landscape\ntype: landscape-scan\nskill: landscape-scan\ndate: [ISO date]\necosystem_segments: [number]\nclaims_blacklisted: [number]\nmarket_shifts_tracked: [number]\nfreshness_days: 0\nresearch_sources: [list of source types used]\n---\n\n# Market Landscape -- [Product/Project Name]\n\n## Ecosystem Map\n\n### Market Category\n[One-line definition of the market category this product operates in]\n\n### Ecosystem Segments\n\n#### Segment: [Name]\n- **Players:** [Company 1], [Company 2], [Company 3]\n- **Current state:** [What's happening in this segment right now]\n- **Trajectory:** [growing/stable/declining/consolidating]\n- **Signal:** [Specific evidence -- funding round, product launch, trend data]\n\n#### Segment: [Name]\n[Same structure]\n\n---\n\n## Market Shifts (Last 30 Days)\n\n### [Shift 1: Descriptive Title]\n- **What happened:** [Factual description]\n- **Source:** [URL or source type]\n- **Impact on us:** [How this affects our positioning/strategy]\n- **Urgency:** [high/medium/low]\n\n### [Shift 2: Descriptive Title]\n[Same structure]\n\n---\n\n## Claims Blacklist\n\n> These claims MUST NOT appear in any marketing content.\n> Every content-generating skill reads this section as a hard gate.\n\n### Blacklisted Claims\n\n| # | Claim | Reason | Evidence | Blacklisted Date |\n|---|-------|--------|----------|-----------------|\n| 1 | \"[Specific claim text]\" | [Why it's false/misleading] | [Source] | [ISO date] |\n| 2 | \"[Specific claim text]\" | [Why it's false/misleading] | [Source] | [ISO date] |\n\n### Verified Safe Claims\n- \"[Claim]\" -- verified [date], source: [source]\n- \"[Claim]\" -- verified [date], source: [source]\n\n---\n\n## Competitive Movement\n\n### New Entrants\n- **[Company]** -- [What they do, when they appeared, threat level]\n\n### Pricing Shifts\n- **[Company]** -- [Old pricing] -> [New pricing], [date]\n\n### Positioning Shifts\n- **[Company]** -- was \"[old positioning]\", now \"[new positioning]\"\n\n### Exits/Acquisitions\n- **[Company]** -- [What happened], [date]\n\n---\n\n## Ecosystem Opportunities\n\n1. **[Opportunity]** -- [Why this matters now, based on landscape data]\n2. **[Opportunity]** -- [Why this matters now]\n3. **[Opportunity]** -- [Why this matters now]\n\n---\n\n## Raw Research Notes\n\n[Condensed notes from /last30days or web research, with source URLs]\n```\n\n---\n\n## Progressive Enhancement Levels\n\n| Level | Context Available | Output Quality |\n|-------|------------------|---------------|\n| L0 | Product name only | Basic ecosystem map, user-reported claims only, no blacklist verification |\n| L1 | + product description, target market | Focused scan, category-specific segments, preliminary blacklist |\n| L2 | + competitors.md, positioning.md | Verified blacklist against known claims, competitor movement tracking |\n| L3 | + /last30days live research | Full ground-truth snapshot, evidence-backed blacklist, source URLs |\n| L4 | + existing landscape.md (refresh) | Delta analysis, trend tracking over time, blacklist evolution |\n\n---\n\n## Output Presentation\n\n### Header\n\n```\n================================================\n\n  MARKET LANDSCAPE SCAN\n  [Product/Project Name]\n  Generated [Month Day, Year]\n\n================================================\n```\n\n### Files Saved\n\n```\n  FILES SAVED\n\n  ./brand/landscape.md               ok\n```\n\n### What's Next\n\n```\n  WHAT'S NEXT\n\n  Your ecosystem snapshot is built with {N}\n  segments mapped, {N} market shifts tracked,\n  and {N} claims blacklisted. All content skills\n  will now respect the Claims Blacklist.\n\n  -> /competitive-intel     Update competitor\n                            teardowns with new\n                            landscape data (~15 min)\n  -> /positioning-angles    Rebuild angles against\n                            verified ground truth\n                            (~15 min)\n  -> /direct-response-copy  Write copy that avoids\n                            blacklisted claims\n                            (~15 min)\n\n  Or tell me what you're working on and\n  I'll route you.\n```\n\n---\n\n## Anti-Patterns\n\n### Don't auto-update other brand files\nWrite landscape.md only. Flag contradictions in other brand/ files and suggest\nrefreshes, but never overwrite competitors.md, positioning.md, or audience.md.\n\n**WHY:** Each brand file has an owning skill that understands the full context\nof that file. Auto-updating creates ownership conflicts -- if /landscape-scan\nsilently changes competitors.md, the next /competitive-intel run may produce\ninconsistent results because it doesn't know what changed or why.\n\n### Don't skip user validation\nAlways run Phase 4 (Validate with User) even when research data looks solid.\n\n**WHY:** Live research can surface false positives -- a competitor's pricing\npage may show a promotion, not a permanent change. A press release about a\nfeature may be vaporware. Only the user can verify whether a finding is real\nenough to blacklist. False positive blacklisting removes valid claims from your\nmarketing arsenal unnecessarily.\n\n### Don't run without checking brand context first\nAlways read available brand/ files before building the research query, even\nif the user provides a direct request.\n\n**WHY:** Without brand context, the research query is unfocused. Searching\n\"[product category] market trends\" returns generic industry noise. Searching\n\"[product category] + [specific competitors] + [specific claims to verify]\"\nreturns actionable intelligence. The difference between a useful scan and a\nuseless one is query specificity.\n\n### Don't blacklist claims without evidence\nEvery blacklisted claim must have a specific reason AND a source. \"Might be\noutdated\" is not sufficient for blacklisting.\n\n**WHY:** The Claims Blacklist is a hard gate. A wrongly blacklisted claim\nprevents every content skill from using a valid differentiator. The cost of\na false blacklist is as high as the cost of a false claim -- both waste\npositioning power.\n\n### Don't treat the landscape as permanent\nlandscape.md has a 14-day freshness window, the shortest of any brand file.\n\n**WHY:** Markets move fast. A landscape that's 30 days old may have missed\na competitor launch, a funding round, or a pricing change that invalidates\nyour Claims Blacklist. The short freshness window forces regular re-scans,\nwhich is the entire point -- ground truth must stay grounded.\n\n---\n\n## Web Search Fallback\n\nIf web search / /last30days is unavailable:\n\n1. Ask the user for recent market developments they're aware of.\n2. Build the landscape from user knowledge + existing brand/ files.\n3. Mark all findings as `source: user-reported` in the output.\n4. Note the limitation clearly: \"Landscape is based on user-reported\n   information, not live web research. Claims Blacklist may be incomplete.\n   Verify before making strategic decisions.\"\n5. Set `research_sources: [\"user-reported\"]` in frontmatter.\n6. Reduce Claims Blacklist confidence -- prefix entries with \"Unverified:\"\n   to signal that downstream skills should treat them as advisory, not hard gates.\n\n---\n\n## What This Skill Is NOT\n\n- **Not competitive intelligence** -- /competitive-intel does deep competitor\n  teardowns. This skill maps the broader ecosystem and produces a Claims\n  Blacklist. Use both: competitive-intel for depth, landscape-scan for breadth.\n- **Not a strategy document** -- The output is a fact-finding report, not a\n  plan. Use /positioning-angles or /launch-strategy to act on the landscape.\n- **Not a one-time setup** -- This is the most time-sensitive brand file.\n  14-day freshness means re-scanning before every major content campaign.\n- **Not market research** -- This doesn't estimate TAM, SAM, or market size.\n  For audience sizing, use /audience-research. This skill maps what IS happening,\n  not what COULD happen.\n\n---\n\n## Feedback Collection\n\nAfter delivering the landscape scan:\n\n```\n  How did this land?\n\n  a) Solid -- using this as-is for content planning\n  b) Good -- added some market intel I know\n  c) Incomplete -- missing key segments or shifts\n  d) Haven't used yet\n```\n\n**Processing feedback:**\n- **(a) Solid:** Log to `./brand/learnings.md` with key blacklisted claims.\n- **(b) Good:** Ask what they added. Offer to update landscape.md with their additions.\n- **(c) Incomplete:** Ask what's missing. Run a targeted /last30days for the gap. Update landscape.md.\n- **(d) Haven't used:** Note it. Remind next time.\n\n---\n\n## Safety Rules\n\n- Never fabricate ecosystem data -- the entire purpose of this skill is ground truth. If you invent a market shift or competitor movement, you corrupt every downstream decision. If you can't verify something, say \"unverified\" explicitly.\n- Never blacklist claims without evidence -- the Claims Blacklist is a hard gate that prevents content skills from writing specific claims. A false blacklist removes valid differentiators from your marketing. Every entry needs a reason AND a source.\n- Never make network calls in `--dry-run` mode -- dry-run reports what WOULD happen. No /last30days invocation, no WebSearch, no file writes.\n- Never write to brand files other than landscape.md -- this skill owns landscape.md only. Flag contradictions in other files but never modify them.\n- Always validate all inputs -- use `validatePathInput()` for file paths, `rejectControlChars()` for text content. Treat agent inputs as potentially adversarial.\n- Always check `--cwd` context if provided -- the working directory determines which brand/ to read and write.\n- If research surfaces sensitive competitive data (unreleased products, leaked pricing), note it but mark as \"unverified/sensitive\" -- do not present rumors as facts.","tags":["landscape","scan","marketing","cli","moizibnyousaf","agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills"],"capabilities":["skill","source-moizibnyousaf","skill-landscape-scan","topic-agent-skills","topic-ai-agents","topic-ai-marketing","topic-brand-memory","topic-brand-voice","topic-claude-code","topic-claude-code-skills","topic-cli","topic-cmo","topic-marketing-automation","topic-marketing-cli","topic-seo"],"categories":["marketing-cli"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/MoizIbnYousaf/marketing-cli/landscape-scan","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add MoizIbnYousaf/marketing-cli","source_repo":"https://github.com/MoizIbnYousaf/marketing-cli","install_from":"skills.sh"}},"qualityScore":"0.459","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 18 github stars · SKILL.md body (18,052 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:50.288Z","embedding":null,"createdAt":"2026-05-04T19:06:14.068Z","updatedAt":"2026-05-18T19:05:50.288Z","lastSeenAt":"2026-05-18T19:05:50.288Z","tsv":"'-5':878 '/audience-research':2210 '/brand/landscape.md':255,1046,1227,1583 '/brand/learnings.md':2268 '/competitive-intel':1198,1617,1717,2115 '/direct-response-copy':1636 '/landscape-scan':45,290,1711 '/last30days':18,320,365,570,770,784,805,1486,1541,2012,2295,2402 '/launch-strategy':2161 '/positioning-angles':1187,1204,1627,2159 '0':1258 '1':153,269,314,359,448,522,524,665,730,808,899,1095,1292,1328,1386,1458,2015 '14':306,1948,2182 '15':1202,1210,1625,1634,1643 '2':163,275,323,372,468,533,605,672,739,782,817,926,1009,1111,1180,1294,1351,1397,1468,2027 '29/mo':1159 '3':204,333,352,381,543,683,744,749,759,768,828,877,948,1028,1126,1296,1474,2037 '30':492,643,799,1170,1325,1966 '4':227,344,394,399,581,692,854,872,974,1740,2049 '45':1151 '5':703,885,992,1041,2076 '50m':939 '6':1082,2085 '60':1190 'acquisit':669 'across':787 'act':2163 'action':1857 'activ':152,531,802 'actual':453 'ad':1182,2244,2278 'add':334 'addit':2285 'adjust':687 'adversari':2449 'advisori':500,2103 'affect':709,1345 'agent':2445 'ago':1153,1172,1192 'ai':1175,1183 'ai-pow':1174 'alreadi':256 'alway':1737,1811,2431,2450 'analysi':1560 'and/or':563 'angl':182,1206,1629 'answer':762,1036 'anti':1659 'anti-pattern':1658 'appear':1362,1431 'appli':205 'approach':947 'area':343 'arg':777 'arsenal':1801 'as-i':2236 'ask':244,409,553,719,1032,2016,2275,2288 'askuserquest':882 'assumpt':61,80,1131 'audienc':1130,2207 'audience.md':185,634,1128,1188,1687 'auto':1215,1664,1705 'auto-upd':1214,1663,1704 'avail':168,613,834,1060,1498,1813 'avoid':1640 'awar':2025 'b':2242,2273 'back':102,1551 'base':859,1464,2056 'basic':1505 'becom':111 'blacklist':31,123,136,295,328,377,470,497,517,993,1016,1120,1250,1357,1379,1384,1514,1528,1533,1552,1565,1607,1616,1641,1791,1794,1874,1879,1896,1900,1907,1923,1986,2067,2088,2130,2271,2349,2355,2370 'block':998 'brand':156,192,207,229,526,549,905,1093,1146,1218,1667,1676,1690,1808,1814,1831,1956,2035,2180,2412,2461 'brand/landscape.md':27,512 'breadth':2142 'broader':2124 'build':105,606,650,764,1817,2028 'built':1595 'buyer':189 'c':2250,2286 'call':599,2388 'campaign':2193 'candid':994 'cannot':1067 'cap':757,883 'categori':464,751,1273,1281,1524,1840,1849 'category-specif':1523 'chain':17 'chang':407,685,705,931,944,1102,1157,1713,1729,1769,1981 'check':154,253,326,1807,2451 'choic':357 'claim':30,52,94,122,134,184,224,294,325,329,376,469,472,496,518,960,996,1018,1116,1249,1356,1359,1380,1381,1388,1399,1410,1411,1416,1511,1536,1606,1615,1642,1797,1853,1875,1880,1899,1908,1933,1985,2066,2087,2129,2272,2350,2354,2367 'clear':2053 'collaps':85 'collect':2222 'come':101 'communiti':700 'compani':1291,1293,1295,1425,1436,1444,1452 'compar':1089 'competit':175,1421,2113,2134,2470 'competitive-intel':2133 'competitor':215,623,626,686,745,909,936,970,1010,1099,1154,1181,1200,1537,1619,1758,1851,1973,2118,2332 'competitors.md':173,562,625,718,916,1097,1108,1149,1530,1684,1714 'compon':447 'condens':1483 'confid':2089 'confirm':411 'conflict':1709 'consolid':465 'contact':87 'content':37,120,130,508,1366,1369,1609,1911,2192,2240,2362,2443 'content-gener':507,1368 'context':208,527,545,614,1497,1700,1809,1832,2453 'contradict':893,900,903,1023,1139,1148,1194,1673,2423 'copi':1638 'core':427 'correct':203 'corrupt':2335 'cost':1919,1929 'could':2219 'couldn':952,956 'cover':339,664 'creat':536,1707 'critic':446 'cross':1084,1144 'cross-refer':1083,1143 'current':6,180,281,430,925,1297 'custom':90,489,754 'cwd':2452 'd':2257,2301 'data':216,222,370,573,1059,1317,1467,1624,1747,2315,2471 'date':288,1243,1245,1385,1396,1407,1413,1418,1441,1455 'day':302,303,307,644,800,1152,1171,1191,1257,1326,1577,1949,1967,2183 'decis':870,2075,2338 'deep':2117 'default':645 'definit':1277 'deliv':2224 'delta':1559 'depth':2137 'descript':1329,1334,1352,1518 'detect':250,534,541 'determin':544,954,2459 'develop':2022 'diff':404 'differ':1860 'differenti':1917,2373 'direct':812,1827 'directori':157,2458 'discard':348 'disproven':486 'document':2146 'doesn':1725,2198 'downstream':119,435,2097,2337 'dri':584,2391,2395 'dry-run':583,2390,2394 'easili':485 'ecosystem':15,42,49,108,291,387,431,449,711,1246,1270,1286,1456,1506,1592,2125,2314 'els':71 'emerg':463 'empti':235 'enhanc':1494 'enough':1789 'entir':1999,2317 'entrant':676,1164,1424 'entri':2091,2378 'estim':2200 'even':1744,1821 'everi':51,129,434,506,844,1052,1367,1878,1910,2190,2336,2377 'everyth':322,554 'evid':1311,1383,1550,1877,2352 'evidence-back':1549 'evolut':1566 'exa':823 'exampl':1077 'exist':158,174,214,232,257,260,272,283,369,391,416,577,904,1556,2034 'exit':593 'exits/acquisitions':1451 'expand':337 'explicit':2347 'extract':609 'fabric':2313 'fact':2152,2487 'fact-find':2151 'factual':1333 'fallback':803,2008 'fals':98,482,1179,1755,1792,1922,1932,2369 'false/misleading':1393,1404 'fast':1961 'featur':680,1775 'feedback':2221,2263 'file':169,274,392,528,550,603,906,1094,1147,1219,1579,1581,1668,1677,1691,1703,1815,1957,2036,2181,2407,2413,2426,2438 'fill':1069 'find':96,845,928,1786,2040,2153 'first':68,1810 'flag':1098,1114,1129,1221,1672,2422 'flow':520 'focus':210,373,1521 'follow':1047 'forc':1991 'format':1050,1225 'found':1008,1195 'foundat':247 'free':913,1161 'fresh':301,364,1256,1950,1989,2184 'frontmatt':2084 'full':315,395,417,423,1074,1544,1699 'fund':466,668,1312,1976 'gap':619,949,2298 'gate':35,128,505,1378,1904,2106,2359 'generat':38,509,1370,1575 'generic':1844 'good':2243,2274 'googl':92 'ground':13,47,440,1546,1632,2001,2005,2323 'ground-truth':12,46,1545 'growing/stable/declining/consolidating':1308 'hacker':791 'happen':454,591,1301,1332,1454,2216,2220,2400 'hard':34,127,504,1377,1903,2105,2358 'hard-gat':33,126 'haven':2258,2302 'header':1569 'high':1926 'high/medium/low':1349 'identifi':223 'impact':1340 'includ':987 'incomplet':2070,2251,2287 'inconsist':1721 'industri':658,697,1845 'industry-specif':657 'inform':862,2061 'input':178,622,630,639,2434,2446 'instead':268 'intel':176,2135,2247 'intellig':1858,2114 'interrog':889 'invalid':332,1137,1983 'invent':2327 'invoc':2403 'invok':771 'iso':1244,1395,1406 'item':378 'iter':249,540 'job':428 'key':2253,2270 'know':935,1727,2249 'knowledg':840,2033 'known':1535 'l0':547,715,1501 'l0-l1':714 'l1':555,716,1516 'l2':560,567,1529 'l3':565,576,1540 'l4':574,1555 'land':2231 'landscap':2,8,41,212,273,284,858,991,1209,1234,1237,1241,1267,1466,1571,1623,1942,1963,2030,2054,2139,2166,2226 'landscape-scan':1,1236,1240,2138 'landscape.md':259,413,578,1044,1088,1557,1670,1945,2282,2300,2416,2420 'last':286,642,798,940,1324 'last30days':776 'launch':674,1315,1974 'leak':2474 'learn':201 'learnings.md':198 'level':546,1433,1495,1496 'like':311 'limit':857,2052 'line':1276 'list':1167,1261 'live':20,146,572,864,1542,1751,2063 'll':1655 'load':206 'log':2266 'look':1748 'major':677,2191 'make':55,477,596,868,2073,2386 'map':429,1271,1507,1599,2122,2213 'mark':843,2038,2479 'markdown':1231 'market':7,43,54,64,74,187,200,297,342,457,474,632,666,727,1124,1133,1233,1252,1266,1272,1280,1322,1365,1520,1570,1601,1800,1841,1959,2021,2195,2204,2246,2329,2376 'matter':1462,1472,1478 'max':1030 'may':1135,1719,1762,1776,1969,2068 'mcp':824 'mean':2185 'merg':367,389 'might':930,1889 'min':1203,1211,1626,1635,1644 'miss':1971,2252,2291 'mode':262,419,535,580,2393 'model':689 'modifi':2429 'month':941,1576 'move':76,1960 'movement':667,1422,1538,2333 'must':475,1054,1360,1881,2003 'n':293,296,300,1597,1600,1605 'name':627,746,1269,1289,1319,1503,1574 'name/description':558 'narrat':693 'narrow':217 'need':145,551,723,2379 'network':598,2387 'never':1031,1682,2312,2348,2385,2409,2428 'new':335,341,386,675,979,983,1163,1208,1423,1439,1449,1622 'news':792 'next':1587,1590,1716,2308 'nobodi':70 'nois':1846 'note':855,1482,1484,2050,2305,2476 'number':1248,1251,1255 'offer':912,972,2279 'ok':1584 'old':304,1437,1446,1968 'one':737,1275,1868,2170 'one-lin':1274 'one-tim':2169 'oper':437,1284 'opportun':1457,1459,1469,1475 'option':358,371,380,393 'orchestr':519 'order':172,898 'outdat':483,1891 'output':197,443,853,1049,1224,1499,1567,2048,2148 'overwrit':401,1683 'own':1694,2419 'ownership':1708 'page':1761 'paramet':611 'pariti':681 'past':199 'path':2439 'pattern':1660 'period':141 'perman':1768,1944 'person':193 'persona':190,636 'phase':521,604,767,781,871,1040,1081,1739 'pivot':670 'plan':2157,2241 'player':460,1290 'player/category':984 'point':2000 'polici':706 'popul':1056 'posit':84,181,221,946,1000,1103,1115,1442,1447,1450,1756,1793,1936 'positioning.md':179,564,617,962,1113,1168,1531,1685 'positioning/strategy':1347 'potenti':995,2448 'power':1176,1937 'prefix':2090 'preflight':523 'preliminari':1527 'premium':921 'premium-on':920 'present':276,876,1138,1568,2484 'press':698,1771 'prevent':1909,2361 'price':684,688,1104,1156,1434,1438,1440,1760,1980,2475 'primari':177,618,635 'priorit':890 'prioriti':171,897 'proceed':236,420,837 'process':353,396,424,2262 'produc':10,125,1720,2127 'product':557,673,734,1283,1314,1502,1517,1839,1848,2473 'product/category':615 'product/project':1268,1573 'progress':1493 'project':161 'promot':1765 'provid':861,1825,2455 'purpos':2318 'qualiti':1500 'queri':220,366,608,653,662,766,779,816,1820,1835,1870 'question':248,760,880,891,896,1029,1033 'rais':938 'raw':1480 're':66,318,361,919,1650,1994,2024,2187 're-research':360 're-run':317 're-scan':1993,2186 'read':167,270,511,525,1372,1812,2463 'real':1788 'realiti':89,432 'reason':1063,1382,1885,2381 'rebuild':345,1205,1628 'recent':2020 'reddit':788 'reduc':1026,2086 'refer':1085,1145 'references/landscape-schema.md':1071 'references/query-templates.md':655 'refresh':261,316,538,579,1185,1197,1558,1680 'refus':514 'regular':1992 'regulatory/platform':704 'rejectcontrolchar':2440 'releas':679,1772 'remind':2307 'remov':1795,2371 'report':588,850,1510,2045,2060,2082,2154,2397 'request':1828 'research':21,148,219,362,383,607,652,778,815,827,832,865,902,907,951,977,981,1007,1039,1259,1481,1489,1543,1746,1752,1819,1834,2065,2078,2196,2467 'respect':1613 'result':1722 'return':1843,1856 'revalid':321 'right':458,1305 'root':162 'round':467,1313,1977 'rout':1656 'rule':2311 'rumor':2485 'run':319,569,585,769,1718,1738,1805,2292,2392,2396 'saa':143 'safe':1409 'safeti':2310 'sam':2202 'save':1580,1582 'say':702,917,1001,2345 'scan':3,4,213,418,729,1238,1242,1522,1572,1864,1995,2140,2188,2227 'schema':1075 'scope':975 'scratch':267,347,398 'search':494,610,755,786,1838,1847,2007,2011 'second':493 'section':1053,1066,1080,1374 'see':529,539,654,1070 'segment':292,336,388,980,1247,1287,1288,1304,1318,1526,1598,2254 'sensit':2179,2469 'sentenc':738 'set':587,2077 'setup':2172 'shift':298,462,682,694,707,1125,1134,1253,1323,1327,1350,1435,1443,1602,2256,2330 'short':1988 'shortest':1953 'show':402,908,1763 'shutdown':671 'signal':1309,2095 'silent':1712 'sinc':1107 'singl':113 'sit':56 'size':2205,2208 'skill':104,131,138,240,436,510,773,775,785,1239,1371,1610,1695,1912,2098,2109,2121,2212,2321,2363,2418 'skill-landscape-scan' 'skip':1734 'sn':44 'snapshot':16,50,109,285,450,1548,1593 'solid':1749,2233,2265 'solut':1003,1177 'someth':2344 'sourc':114,795,847,1260,1263,1335,1338,1394,1405,1414,1415,1419,1420,1491,1553,1888,2042,2079,2384 'source-moizibnyousaf' 'specif':471,659,1310,1387,1398,1525,1850,1852,1871,1884,2366 'specifi':649 'spend':491 'standalon':242 'start':252,265,350 'state':282,1298 'status':1106 'stay':2004 'still':331,964 'strateg':869,2074 'strategi':932,2145 'structur':1230,1321,1355 'suffici':1894 'suggest':1184,1196,1223,1679 'summari':278 'surfac':978,982,1754,2468 'surpris':895,927,1025 'synthes':1042 'tam':2201 'target':186,382,631,879,1519,2294 'teardown':1201,1620,2119 'tell':1646 'templat':660 'text':1389,1400,2442 'thing':950 'threat':1432 'threshold':305 'tier':691,914,1162 'time':640,1564,2171,2178,2309 'time-sensit':2177 'titl':1232,1330,1353 'tone':195 'tool':144,774,811 'top':58,743 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-marketing' 'topic-brand-memory' 'topic-brand-voice' 'topic-claude-code' 'topic-claude-code-skills' 'topic-cli' 'topic-cmo' 'topic-marketing-automation' 'topic-marketing-cli' 'topic-seo' 'total':886 'toward':77 'track':299,1254,1539,1562,1603 'trajectori':1307 'treat':1940,2100,2444 'trend':461,1316,1561,1842 'truth':14,48,116,441,1547,1633,2002,2324 'two':445 'type':1235,1264,1339 'unavail':807,821,2014 'understand':725,1697 'unfocus':1837 'uniqu':965 'unnecessarili':1802 'unreleas':2472 'unverifi':2093,2346 'unverified/sensitive':2481 'updat':287,1150,1169,1189,1199,1216,1618,1665,1706,2281,2299 'urgenc':1348 'url':748,1336,1492,1554 'us':1342 'use':39,761,809,822,881,1057,1265,1863,1914,2131,2158,2209,2234,2260,2304,2435 'useless':1867 'user':24,149,246,355,621,629,638,648,721,839,849,875,1142,1509,1735,1743,1781,1824,2018,2032,2044,2059,2081 'user-report':848,1508,2043,2058,2080 'user-specifi':647 'valid':22,150,374,873,1736,1741,1796,1916,2372,2432 'validatepathinput':2436 'vaporwar':1778 'verif':1515 'verifi':107,226,324,439,481,866,958,1408,1412,1417,1532,1631,1783,1855,2071,2343 'version':678 'voice-profile.md':191 'vs':537,1096,1112,1127 'wast':1935 'weaken':1122 'web':147,794,826,831,1488,2006,2010,2064 'websearch':810,819,2405 'whether':254,959,1784 'window':641,1951,1990 'without':237,1806,1830,1876,2351 'work':241,1651,2457 'would':309,590,752,2399 'write':26,139,516,601,1045,1087,1226,1637,1669,2365,2408,2410,2465 'written':1110 'wrong':82,1906 'x':910,1006,1013,1155 'x/twitter':789 'y':937,1165 'year':1578 'yet':2261 'youtub':790","prices":[{"id":"1a642c8b-0019-4e1a-9ba2-13f6623a71c4","listingId":"71f85b6a-3a4e-455d-83f2-7e912d2c4140","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"MoizIbnYousaf","category":"marketing-cli","install_from":"skills.sh"},"createdAt":"2026-05-04T19:06:14.068Z"}],"sources":[{"listingId":"71f85b6a-3a4e-455d-83f2-7e912d2c4140","source":"github","sourceId":"MoizIbnYousaf/marketing-cli/landscape-scan","sourceUrl":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/landscape-scan","isPrimary":false,"firstSeenAt":"2026-05-04T19:06:14.068Z","lastSeenAt":"2026-05-18T19:05:50.288Z"}],"details":{"listingId":"71f85b6a-3a4e-455d-83f2-7e912d2c4140","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"MoizIbnYousaf","slug":"landscape-scan","github":{"repo":"MoizIbnYousaf/marketing-cli","stars":18,"topics":["agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills","cli","cmo","marketing-automation","marketing-cli","seo","skills-sh","typescript"],"license":"mit","html_url":"https://github.com/MoizIbnYousaf/marketing-cli","pushed_at":"2026-05-13T21:06:05Z","description":"Agent-native marketing cli: 51 skills, 5 research agents, brand memory that compounds, plus a local Studio dashboard (beta). single agent-native cli, then /cmo in ur coding agent..","skill_md_sha":"b6ef6928593309206f429f3aeaa08d5e9235800e","skill_md_path":"skills/landscape-scan/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/landscape-scan"},"layout":"multi","source":"github","category":"marketing-cli","frontmatter":{"name":"landscape-scan","description":"Scan the current market landscape and produce a ground-truth ecosystem snapshot. Chains /last30days for live research, validates with user, and writes brand/landscape.md with a Claims Blacklist that hard-gates all content generation. Use when: \"landscape\", \"ecosystem\", \"market snapshot\", \"ground truth\", \"what's happening\", \"refresh landscape\", \"market trends\", or before any content campaign to verify claims."},"skills_sh_url":"https://skills.sh/MoizIbnYousaf/marketing-cli/landscape-scan"},"updatedAt":"2026-05-18T19:05:50.288Z"}}