{"id":"129d2bad-7ac7-4560-889a-7f26cd12af6a","shortId":"qCKmuV","kind":"skill","title":"blog-flow","tagline":"FLOW framework integration for bloggers. Evidence-led content workflow using the Find, Optimize, Win loop with stage-specific AI prompts from the FLOW knowledge base (30 blog-applicable prompts, CC BY 4.0). Use when user says \"FLOW\", \"FLOW framework\", \"blog flow\", \"evidence-led b","description":"# FLOW Framework for Bloggers (Find, Optimize, Win)\n\n> Framework and prompts (c) Daniel Agrici, CC BY 4.0. Source: github.com/AgriciDaniel/flow\n\nFLOW is an evidence-led operating model built for the AI-search era. Claude Blog\nintegrates the FLOW prompt library so writers can drive their workflow with\nstructured, source-backed AI prompts instead of improvised queries.\n\nThis skill exposes the three blog-relevant stages (Find, Optimize, Win) and keeps\nthe single Leverage prompt available through the prompts index. The local-SEO\nprompts (GBP, citations, local audits) are intentionally excluded because they\ntarget brick-and-mortar work, not blogs.\n\n**Runtime context.** Load `references/flow-framework.md` on every `/blog flow`\nactivation. Load prompt files on demand only, scoped to the stage the user\nrequests.\n\n---\n\n## Commands\n\n| Command | What it does |\n|---------|-------------|\n| `/blog flow` | Show FLOW overview and stage menu |\n| `/blog flow find [topic\\|url]` | Find-stage: keyword discovery, intent mapping, gap analysis (5 prompts) |\n| `/blog flow optimize [url]` | Optimize-stage: select 2 to 3 most relevant prompts of 21 based on context |\n| `/blog flow win [url]` | Win-stage: BOFU, conversion, dual-surface scorecard (3 prompts) |\n| `/blog flow prompts` | Full index of all 30 blog-applicable prompts (Find, Leverage, Optimize, Win) |\n| `/blog flow sync` | Pull latest prompt files from github.com/AgriciDaniel/flow |\n\nThe single Leverage prompt (off-site authority) is reachable through\n`/blog flow prompts` and is not promoted to a top-level command, since most\nblog workflows route off-site work elsewhere.\n\n---\n\n## Orchestration Logic\n\n### On `/blog flow` (no sub-command)\n1. Read `references/flow-framework.md`.\n2. Show the FLOW stage overview with a one-line description of each stage.\n3. Ask the user which stage matches their current situation.\n\n### On `/blog flow find [topic|url]`\n1. Read all files in `references/prompts/find/`.\n2. Apply each prompt to the topic or URL, capturing demand and intent signals.\n3. Cross-reference: \"For deeper briefs and outlines, see `/blog brief <topic>`,\n   `/blog outline <topic>`, and `/blog cannibalization` to detect overlap with\n   existing posts.\"\n\n### On `/blog flow optimize [url]`\n1. Read the file names in `references/prompts/optimize/`.\n2. Read prior context (target URL, niche, any prior skill output in this\n   conversation, scoring deltas from `/blog analyze`).\n3. Select 2 to 3 most relevant prompts, then load only those files.\n4. Apply the selected prompts; note that the rest are accessible via\n   `/blog flow prompts`.\n5. Cross-reference: \"For deeper rewrites and validation, see `/blog rewrite\n   <file>`, `/blog seo-check <file>`, `/blog geo <file>`, `/blog schema <file>`,\n   and `/blog factcheck <file>`.\"\n\n### On `/blog flow win [url]`\n1. Read all files in `references/prompts/win/`.\n2. Apply each prompt to the URL's conversion and BOFU context.\n3. Cross-reference: \"For repurposing, full-site health, and quality scoring,\n   see `/blog repurpose <file>`, `/blog audit`, and `/blog analyze <file>`.\"\n\n### On `/blog flow prompts`\n1. Read `references/prompts/README.md`.\n2. Display the full index: 30 prompts grouped by stage (Find, Leverage,\n   Optimize, Win) with name and trigger conditions.\n3. State that local-SEO prompts are excluded by design; point users to\n   `claude-seo` (`/seo flow local`) if they need them.\n\n### On `/blog flow sync`\n1. Run: `python3 scripts/sync_flow.py`.\n2. Display the JSON summary (files added, updated, unchanged).\n3. Show the attribution notice after the sync completes.\n\n---\n\n## Context Matching (Optimize stage)\n\nThe optimize stage has 21 prompts. Dumping all 21 is noise. Select by priority:\n\n1. **Niche** (SaaS or B2B blog leans on-page plus technical; lifestyle leans\n   freshness plus E-E-A-T; publisher leans authority plus citations).\n2. **Prior skill output** (`/blog analyze` E-E-A-T gap routes to authority\n   prompts; `/blog seo-check` failures route to on-page prompts; `/blog geo`\n   gaps route to extraction-format prompts).\n3. **URL signals** (commercial pages need conversion prompts; informational\n   posts need freshness plus answer-first prompts).\n\nAlways surface exactly 2 to 3 prompts. State which prompts you chose and why.\n\n---\n\n## Reference Files\n\nLoad on demand. Do NOT load all at startup.\n\n- `references/flow-framework.md`. FLOW operating model. Load on every `/blog\n  flow` activation.\n- `references/bibliography.md`. Evidence sources. Load when citing studies or\n  statistics.\n- `references/prompts/README.md`. Prompt index. Load for `/blog flow prompts`.\n- `references/prompts/find/`. 5 prompts. Load for `/blog flow find`.\n- `references/prompts/leverage/`. 1 prompt. Load only when surfaced through\n  `/blog flow prompts`.\n- `references/prompts/optimize/`. 21 prompts. Load selectively for `/blog flow\n  optimize`.\n- `references/prompts/win/`. 3 prompts. Load for `/blog flow win`.\n\nIf `references/` is missing, instruct the user to run `/blog flow sync` first.\n\n---\n\n## Sync Script\n\n`scripts/sync_flow.py` pulls prompt files from github.com/AgriciDaniel/flow and\nwrites them under `skills/blog-flow/references/`. Stdlib only, HTTPS only,\nhost-allowlisted to `api.github.com`, 5 MB response cap, atomic writes,\npath-traversal guarded.\n\nModes:\n\n- `python3 scripts/sync_flow.py`. Sync the latest version of every blog-relevant\n  stage to disk and refresh the lockfile.\n- `python3 scripts/sync_flow.py --dry-run`. Report planned changes without\n  writing.\n- `python3 scripts/sync_flow.py --ref <sha>`. Pin fetches to a specific FLOW\n  commit SHA for reproducible installs.\n\nThe lockfile lives at\n`skills/blog-flow/references/flow-prompts.lock` and uses sha256sum-compatible\nformat. Drift between the on-disk content and the lockfile is reported on every\nsync run.\n\nThe script syncs only blog-applicable stages (`find`, `leverage`, `optimize`,\n`win`). The `local` stage is intentionally skipped to keep the references\ndirectory aligned with the skill's surface area.\n\nGitHub API calls are anonymous by default. If `GITHUB_TOKEN` is set in the\nenvironment, or `gh auth token` returns a token after a 403 response, the\nscript retries the request with that token. No tokens are written to disk.\n\n---\n\n## Attribution\n\nEvery `/blog flow` activation (any sub-command) outputs before analysis:\n\n```\nFramework and prompts (c) Daniel Agrici, CC BY 4.0. Source: github.com/AgriciDaniel/flow\n```\n\nDo not omit or modify the attribution. Synced files also carry an HTML comment\nlicense header injected by the sync script.\n\n---\n\n## Error Handling\n\n| Scenario | Action |\n|----------|--------|\n| `references/flow-framework.md` missing | \"FLOW reference files not synced. Run: `/blog flow sync`.\" |\n| Prompt file missing | \"Run `/blog flow sync` to pull the latest prompts from the FLOW repo.\" |\n| `sync_flow.py` network error | Display the script's stderr. Check rate limits with `gh api rate_limit` if `gh` is installed. |\n| `sync_flow.py` 403 after retry | Set `GITHUB_TOKEN` or run `gh auth login`, then retry. |\n| Path-traversal abort | The sync target tried to escape the references directory. Inspect the upstream repo and pin to a known-good `--ref`. |","tags":["blog","flow","claude","agricidaniel","agent-skills","ai-citations","ai-content","ai-marketing","ai-marketing-hub","blog-writing","claude-code","claude-code-skill"],"capabilities":["skill","source-agricidaniel","skill-blog-flow","topic-agent-skills","topic-ai-citations","topic-ai-content","topic-ai-marketing","topic-ai-marketing-hub","topic-blog","topic-blog-writing","topic-claude-code","topic-claude-code-skill","topic-claude-plugin","topic-claude-skill","topic-content-creation"],"categories":["claude-blog"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/AgriciDaniel/claude-blog/blog-flow","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add AgriciDaniel/claude-blog","source_repo":"https://github.com/AgriciDaniel/claude-blog","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 753 github stars · SKILL.md body (7,195 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-18T18:53:30.031Z","embedding":null,"createdAt":"2026-05-18T12:54:52.962Z","updatedAt":"2026-05-18T18:53:30.031Z","lastSeenAt":"2026-05-18T18:53:30.031Z","tsv":"'/agricidaniel/flow':71,267,797,986 '/blog':162,183,191,207,226,241,257,279,305,340,375,377,380,389,417,444,457,459,463,465,468,471,507,509,512,515,565,638,650,661,719,736,744,755,764,772,784,964,1020,1027 '/seo':557 '1':311,345,393,475,518,568,608,748 '2':215,314,351,400,421,481,521,572,634,690 '21':222,598,602,759 '3':217,239,329,365,419,423,493,540,581,670,692,768 '30':31,248,526 '4':432 '4.0':38,67,982 '403':946,1060 '5':205,447,740,812 'abort':1076 'access':442 'action':1011 'activ':164,721,966 'ad':578 'agrici':64,979 'ai':24,84,105 'ai-search':83 'align':915 'allowlist':809 'also':996 'alway':687 'analysi':204,973 'analyz':418,513,639 'anonym':926 'answer':684 'answer-first':683 'api':923,1052 'api.github.com':811 'appli':352,433,482 'applic':34,251,898 'area':921 'ask':330 'atom':816 'attribut':584,962,993 'audit':142,510 'auth':939,1069 'author':275,631,648 'avail':129 'b':51 'b2b':612 'back':104 'base':30,223 'blog':2,33,46,88,117,155,250,294,613,832,897 'blog-applic':32,249,896 'blog-flow':1 'blog-relev':116,831 'blogger':8,55 'bofu':233,491 'brick':150 'brick-and-mortar':149 'brief':371,376 'built':80 'c':62,977 'call':924 'cannib':381 'cap':815 'captur':360 'carri':997 'cc':36,65,980 'chang':848 'check':462,653,1047 'chose':698 'citat':140,633 'cite':727 'claud':87,555 'claude-seo':554 'command':178,179,291,310,970 'comment':1000 'commerci':673 'commit':860 'compat':874 'complet':589 'condit':539 'content':12,882 'context':157,225,403,492,590 'convers':234,413,489,676 'cross':367,449,495 'cross-refer':366,448,494 'current':337 'daniel':63,978 'deeper':370,452 'default':928 'delta':415 'demand':169,361,705 'descript':325 'design':550 'detect':383 'directori':914,1085 'discoveri':200 'disk':836,881,961 'display':522,573,1042 'dri':844 'drift':876 'drive':97 'dry-run':843 'dual':236 'dual-surfac':235 'dump':600 'e':625,626,641,642 'e-e-a-t':624,640 'elsewher':301 'environ':936 'era':86 'error':1008,1041 'escap':1082 'everi':161,718,830,889,963 'evid':10,49,76,723 'evidence-l':9,48,75 'exact':689 'exclud':145,548 'exist':386 'expos':113 'extract':667 'extraction-format':666 'factcheck':469 'failur':654 'fetch':855 'file':167,263,348,396,431,478,577,702,793,995,1016,1024 'find':16,56,120,193,197,253,342,531,746,900 'find-stag':196 'first':685,787 'flow':3,4,28,43,44,47,52,72,91,163,184,186,192,208,227,242,258,280,306,317,341,390,445,472,516,558,566,713,720,737,745,756,765,773,785,859,965,1014,1021,1028,1037 'format':668,875 'framework':5,45,53,59,974 'fresh':622,681 'full':244,500,524 'full-sit':499 'gap':203,645,663 'gbp':139 'geo':464,662 'gh':938,1051,1056,1068 'github':922,930,1064 'github.com':70,266,796,985 'github.com/agricidaniel/flow':69,265,795,984 'good':1096 'group':528 'guard':821 'handl':1009 'header':1002 'health':502 'host':808 'host-allowlist':807 'html':999 'https':805 'improvis':109 'index':133,245,525,733 'inform':678 'inject':1003 'inspect':1086 'instal':864,1058 'instead':107 'instruct':779 'integr':6,89 'intent':144,201,363,908 'json':575 'keep':124,911 'keyword':199 'knowledg':29 'known':1095 'known-good':1094 'latest':261,827,1033 'lean':614,621,630 'led':11,50,77 'level':290 'leverag':127,254,270,532,901 'librari':93 'licens':1001 'lifestyl':620 'limit':1049,1054 'line':324 'live':867 'load':158,165,428,703,708,716,725,734,742,750,761,770 'local':136,141,544,559,905 'local-seo':135,543 'lockfil':840,866,885 'logic':303 'login':1070 'loop':19 'map':202 'match':335,591 'mb':813 'menu':190 'miss':778,1013,1025 'mode':822 'model':79,715 'modifi':991 'mortar':152 'name':397,536 'need':562,675,680 'network':1040 'nich':406,609 'nois':604 'note':437 'notic':585 'off-sit':272,297 'omit':989 'on-disk':879 'on-pag':615,657 'one':323 'one-lin':322 'oper':78,714 'optim':17,57,121,209,212,255,391,533,592,595,766,902 'optimize-stag':211 'orchestr':302 'outlin':373,378 'output':410,637,971 'overlap':384 'overview':187,319 'page':617,659,674 'path':819,1074 'path-travers':818,1073 'pin':854,1091 'plan':847 'plus':618,623,632,682 'point':551 'post':387,679 'prior':402,408,635 'prioriti':607 'promot':285 'prompt':25,35,61,92,106,128,132,138,166,206,220,240,243,252,262,271,281,354,426,436,446,484,517,527,546,599,649,660,669,677,686,693,696,732,738,741,749,757,760,769,792,976,1023,1034 'publish':629 'pull':260,791,1031 'python3':570,823,841,851 'qualiti':504 'queri':110 'rate':1048,1053 'reachabl':277 'read':312,346,394,401,476,519 'ref':853,1097 'refer':368,450,496,701,776,913,1015,1084 'references/bibliography.md':722 'references/flow-framework.md':159,313,712,1012 'references/prompts/find':350,739 'references/prompts/leverage':747 'references/prompts/optimize':399,758 'references/prompts/readme.md':520,731 'references/prompts/win':480,767 'refresh':838 'relev':118,219,425,833 'repo':1038,1089 'report':846,887 'reproduc':863 'repurpos':498,508 'request':177,952 'respons':814,947 'rest':440 'retri':950,1062,1072 'return':941 'rewrit':453,458 'rout':296,646,655,664 'run':569,783,845,891,1019,1026,1067 'runtim':156 'saa':610 'say':42 'scenario':1010 'schema':466 'scope':171 'score':414,505 'scorecard':238 'script':789,893,949,1007,1044 'scripts/sync_flow.py':571,790,824,842,852 'search':85 'see':374,456,506 'select':214,420,435,605,762 'seo':137,461,545,556,652 'seo-check':460,651 'set':933,1063 'sha':861 'sha256sum':873 'sha256sum-compatible':872 'show':185,315,582 'signal':364,672 'sinc':292 'singl':126,269 'site':274,299,501 'situat':338 'skill':112,409,636,918 'skill-blog-flow' 'skills/blog-flow/references':802 'skills/blog-flow/references/flow-prompts.lock':869 'skip':909 'sourc':68,103,724,983 'source-agricidaniel' 'source-back':102 'specif':23,858 'stage':22,119,174,189,198,213,232,318,328,334,530,593,596,834,899,906 'stage-specif':21 'startup':711 'state':541,694 'statist':730 'stderr':1046 'stdlib':803 'structur':101 'studi':728 'sub':309,969 'sub-command':308,968 'summari':576 'surfac':237,688,753,920 'sync':259,567,588,786,788,825,890,894,994,1006,1018,1022,1029,1078 'sync_flow.py':1039,1059 'target':148,404,1079 'technic':619 'three':115 'token':931,940,943,955,957,1065 'top':289 'top-level':288 'topic':194,343,357 'topic-agent-skills' 'topic-ai-citations' 'topic-ai-content' 'topic-ai-marketing' 'topic-ai-marketing-hub' 'topic-blog' 'topic-blog-writing' 'topic-claude-code' 'topic-claude-code-skill' 'topic-claude-plugin' 'topic-claude-skill' 'topic-content-creation' 'travers':820,1075 'tri':1080 'trigger':538 'unchang':580 'updat':579 'upstream':1088 'url':195,210,229,344,359,392,405,474,487,671 'use':14,39,871 'user':41,176,332,552,781 'valid':455 'version':828 'via':443 'win':18,58,122,228,231,256,473,534,774,903 'win-stag':230 'without':849 'work':153,300 'workflow':13,99,295 'write':799,817,850 'writer':95 'written':959","prices":[{"id":"ff77a097-e7a5-429f-9382-41f0657d8891","listingId":"129d2bad-7ac7-4560-889a-7f26cd12af6a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"AgriciDaniel","category":"claude-blog","install_from":"skills.sh"},"createdAt":"2026-05-18T12:54:52.962Z"}],"sources":[{"listingId":"129d2bad-7ac7-4560-889a-7f26cd12af6a","source":"github","sourceId":"AgriciDaniel/claude-blog/blog-flow","sourceUrl":"https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-flow","isPrimary":false,"firstSeenAt":"2026-05-18T12:54:52.962Z","lastSeenAt":"2026-05-18T18:53:30.031Z"}],"details":{"listingId":"129d2bad-7ac7-4560-889a-7f26cd12af6a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"AgriciDaniel","slug":"blog-flow","github":{"repo":"AgriciDaniel/claude-blog","stars":753,"topics":["agent-skills","ai","ai-citations","ai-content","ai-marketing","ai-marketing-hub","blog","blog-writing","claude-code","claude-code-skill","claude-plugin","claude-skill","content-creation","content-optimization","content-strategy","eeat","geo","multilingual","open-source","seo"],"license":"mit","html_url":"https://github.com/AgriciDaniel/claude-blog","pushed_at":"2026-05-15T04:45:18Z","description":"Claude Code blog skill suite: 30 sub-skills, 5 agents, 5-gate v1.9.0 Blog Delivery Contract, dual-optimized for Google rankings and AI citations. Active development at AI-Marketing-Hub/claude-blog (AI Marketing Hub Pro community); public releases ship here.","skill_md_sha":"925df67745516d72e832377a0c61ceb57cae59ef","skill_md_path":"skills/blog-flow/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/AgriciDaniel/claude-blog/tree/main/skills/blog-flow"},"layout":"multi","source":"github","category":"claude-blog","frontmatter":{"name":"blog-flow","license":"MIT","description":"FLOW framework integration for bloggers. Evidence-led content workflow using the Find, Optimize, Win loop with stage-specific AI prompts from the FLOW knowledge base (30 blog-applicable prompts, CC BY 4.0). Use when user says \"FLOW\", \"FLOW framework\", \"blog flow\", \"evidence-led blogging\", \"find optimize win\", or wants stage-specific blog prompts.","compatibility":"Requires Claude Code and Python 3.11+ for the sync script"},"skills_sh_url":"https://skills.sh/AgriciDaniel/claude-blog/blog-flow"},"updatedAt":"2026-05-18T18:53:30.031Z"}}