{"id":"f6fcc9af-04c7-4001-a912-ca6615d3ca54","shortId":"u257uE","kind":"skill","title":"platform-infrastructure","tagline":"Produce a Platform & Infrastructure Pack (capabilities plan, scaling triggers, execution roadmap).","description":"# Platform & Infrastructure\n\n## Scope\n\n**Covers**\n- Platform engineering / “paved roads”: shared capabilities that multiple product teams reuse\n- Infrastructure quality attributes: reliability, performance, privacy/safety, operability, cost\n- Scalability planning: capacity limits, leading indicators, “doomsday clock” triggers, sequencing\n- Instrumentation strategy: server-side event tracking, data quality, observability gaps\n- Discoverability architecture for web platforms (optional): sitemap + internal linking\n\n**When to use**\n- “Create a platform infrastructure plan to increase feature velocity without repeating work.”\n- “Turn reliability/performance/privacy goals into concrete SLOs and an execution roadmap.”\n- “We’re approaching scaling limits—define triggers and the next infra projects.”\n- “Our analytics is messy—design a server-side tracking plan and event contract.”\n- “For a large web property, define sitemap + internal-linking requirements for crawlability.”\n\n**When NOT to use**\n- You are handling an active incident or outage (use incident response/runbooks first).\n- You only need a single localized perf fix or refactor (just do the work).\n- You need product strategy/positioning for a platform-as-product (use `platform-strategy`).\n- You need a full feature spec or UX flows (use `writing-specs-designs` / `writing-prds`).\n- SEO/content strategy is the primary workstream (use `content-marketing`).\n- You need to sequence a broader technical roadmap across multiple teams (use `technical-roadmaps`).\n- You want to pay down tech debt without building new shared capabilities (use `managing-tech-debt`).\n- You want to improve engineering practices, rituals, or team culture (use `engineering-culture`).\n\n## Inputs\n\n**Minimum required**\n- System boundary (services/apps) + primary users/customers\n- Current pains (pick 1–3): reliability, performance, cost, privacy/security/compliance, developer velocity, data quality/analytics, SEO/discoverability\n- Current architecture constraints (data stores, runtime, deployment model, key dependencies)\n- Scale + trajectory (rough): current usage + expected growth + known upcoming spikes\n- Constraints: deadlines, staffing/capacity, risk tolerance, compliance/privacy requirements\n\n**Missing-info strategy**\n- Ask up to 5 questions from [references/INTAKE.md](references/INTAKE.md) (3–5 at a time).\n- If details remain missing, proceed with explicit assumptions and provide 2–3 options.\n- If asked to change production systems or run commands, require explicit confirmation and include rollback guidance.\n\n## Outputs (deliverables)\n\nProduce a **Platform & Infrastructure Improvement Pack** in Markdown (in-chat; or as files if requested), in this order:\n\n1) **Context snapshot** (scope, constraints, assumptions, stakeholders, success definition)\n2) **Shared capabilities inventory + platformization plan** (what to standardize, why, and how)\n3) **Quality attributes spec** (reliability/perf/privacy/safety targets; proposed SLOs/SLIs)\n4) **Scaling “doomsday clock” + capacity plan** (limits, triggers, lead time, projects)\n5) **Instrumentation plan** (observability gaps + server-side analytics event contract)\n6) **Discoverability plan (optional)** for web platforms (sitemap + internal linking requirements)\n7) **Execution roadmap** (sequencing, milestones, owners, dependencies, comms)\n8) **Risks / Open questions / Next steps** (always included)\n\nTemplates: [references/TEMPLATES.md](references/TEMPLATES.md)\n\n## Workflow (8 steps)\n\n### 1) Intake + define “what decision will this enable?”\n- **Inputs:** Context; [references/INTAKE.md](references/INTAKE.md).\n- **Actions:** Confirm scope boundaries, top pains, and time horizon. Write a 1–2 sentence decision statement (e.g., “We will standardize X and commit to SLO Y by date Z.”).\n- **Outputs:** Context snapshot (draft).\n- **Checks:** A stakeholder can answer: “What will we do differently after reading this?”\n\n### 2) Find repeatable product capabilities worth platformizing\n- **Inputs:** Recent roadmap/initiatives; architecture overview; pain points.\n- **Actions:** Inventory repeated “feature components” (e.g., export, filtering, permissions, audit logs, notifications). Identify 3–7 candidates for shared infrastructure. Define what becomes the platform contract vs what remains product-specific.\n- **Outputs:** Shared capabilities inventory + platformization plan (draft).\n- **Checks:** Each candidate has: (a) at least 2 consumers, (b) a clear API/contract idea, (c) a migration/rollout approach.\n\n### 3) Define quality attributes and targets (make “invisible work” explicit)\n- **Inputs:** Reliability/perf/privacy needs; customer expectations; compliance constraints.\n- **Actions:** Write the quality attributes spec. Propose SLOs/SLIs for reliability and performance; document privacy/safety requirements (data residency, encryption, access controls, retention).\n- **Outputs:** Quality attributes spec (draft).\n- **Checks:** Targets are measurable and owned (even if initial numbers are estimates + confidence).\n\n### 4) Build the scaling “doomsday clock”\n- **Inputs:** Current bottlenecks/limits; growth expectations; lead times for major changes.\n- **Actions:** Identify top 3–10 capacity limits (DB size/IOPS, queue depth, cache hit rate, deploy throughput, rate limits). Define thresholds that trigger scaling projects early enough (lead time-aware).\n- **Outputs:** Doomsday clock table + capacity plan (draft).\n- **Checks:** Each limit has a metric, an alert threshold, a lead time estimate, and a named mitigation project.\n\n### 5) Decide instrumentation: observability + server-side analytics\n- **Inputs:** Current logging/metrics/tracing; current analytics tracking approach.\n- **Actions:** Specify observability gaps (must-have dashboards/alerts) and define an event contract for server-side analytics (names, properties, identity strategy, delivery guarantees, QA checks).\n- **Outputs:** Instrumentation plan (draft).\n- **Checks:** Event definitions are consistent across clients; key events are captured server-side; data-quality checks exist.\n\n### 6) (Optional) Discoverability architecture for web platforms\n- **Inputs:** If applicable: site/app information architecture; SEO importance; crawl constraints.\n- **Actions:** Define sitemap requirements (categorization, pagination, freshness) and internal-linking rules (“related content”, indexability controls, canonicalization).\n- **Outputs:** Discoverability plan (draft) or “Not applicable” decision.\n- **Checks:** A crawler can reach all indexable pages via links/sitemaps; “noindex”/canonicals are intentional.\n\n### 7) Turn decisions into a sequenced execution roadmap\n- **Inputs:** Draft deliverables; constraints; dependencies; capacity.\n- **Actions:** Prioritize initiatives using impact × risk × effort × lead time. Create milestones, owners, and rollout plans (including deprecation/decommission for old paths).\n- **Outputs:** Execution roadmap (draft).\n- **Checks:** Roadmap has a first executable milestone, explicit dependencies, and measurable acceptance criteria.\n\n### 8) Quality gate + finalize\n- **Inputs:** Full draft pack.\n- **Actions:** Run [references/CHECKLISTS.md](references/CHECKLISTS.md) and score with [references/RUBRIC.md](references/RUBRIC.md). Tighten unclear contracts, add missing measures, and always include **Risks / Open questions / Next steps**.\n- **Outputs:** Final Platform & Infrastructure Improvement Pack.\n- **Checks:** A team can execute without extra meetings; unknowns are explicit and owned.\n\n## Quality gate (required)\n- Use [references/CHECKLISTS.md](references/CHECKLISTS.md) and [references/RUBRIC.md](references/RUBRIC.md).\n- Always include: **Risks**, **Open questions**, **Next steps**.\n\n## Examples\n\n**Example 1 (shared capabilities):** “Use `platform-infrastructure` for a B2B analytics app where every team keeps rebuilding export, filtering, and permissions. Output a platformization plan + roadmap + SLO targets.”\n\n**Example 2 (scaling readiness):** “We expect 5× traffic in 6 months. Define a doomsday clock for Postgres limits, propose scaling projects, and set reliability/performance SLOs. Also standardize server-side analytics.”\n\n**Boundary example 1:** “We’re mid-incident and pages are down—tell us what to do right now.”\nResponse: out of scope; recommend incident response first, then use this skill post-incident to create the scaling plan and reliability roadmap.\n\n**Boundary example 2:** “We need to decide how to price and position our internal platform as an external product for other companies.”\nResponse: this is product/market strategy for a platform-as-product; redirect to `platform-strategy`. Use `platform-infrastructure` only for the internal shared-capabilities and reliability layer.\n\n## Anti-patterns\n\nAvoid these common failure modes when producing a Platform & Infrastructure Improvement Pack:\n\n1. **”Platform for its own sake”** — Proposing shared capabilities that have only one consumer. Every platformized capability must have at least two real consumers today (not hypothetical future ones) or it is premature abstraction.\n2. **SLO theater** — Setting reliability/performance targets with no measurement plan, no ownership, and no error budget policy. Targets without instrumentation are decoration, not engineering.\n3. **Boil-the-ocean scaling plan** — Listing every conceivable scaling bottleneck instead of focusing on the 3-5 limits closest to breach. A doomsday clock with 20 entries is a spreadsheet, not a decision tool.\n4. **Ignoring migration cost** — Defining a platformization plan that assumes teams will just “switch over” without accounting for migration effort, backward compatibility, and rollback paths.\n5. **Analytics wish-list without data contracts** — Specifying dozens of events without defining schemas, ownership, QA checks, or delivery guarantees. Volume of events is not the same as data quality.","tags":["platform","infrastructure","lenny","skills","plus","liqiongyu","agent-skills","ai-agents","automation","claude","codex","prompt-engineering"],"capabilities":["skill","source-liqiongyu","skill-platform-infrastructure","topic-agent-skills","topic-ai-agents","topic-automation","topic-claude","topic-codex","topic-prompt-engineering","topic-refoundai","topic-skillpack"],"categories":["lenny_skills_plus"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/liqiongyu/lenny_skills_plus/platform-infrastructure","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add liqiongyu/lenny_skills_plus","source_repo":"https://github.com/liqiongyu/lenny_skills_plus","install_from":"skills.sh"}},"qualityScore":"0.474","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 49 github stars · SKILL.md body (9,907 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-04-22T00:56:24.009Z","embedding":null,"createdAt":"2026-04-18T22:16:51.143Z","updatedAt":"2026-04-22T00:56:24.009Z","lastSeenAt":"2026-04-22T00:56:24.009Z","tsv":"'-5':1187 '/canonicals':821 '1':260,365,449,472,943,1004,1111 '10':653 '2':325,374,473,507,566,972,1046,1145 '20':1196 '3':261,310,326,386,534,577,652,1169,1186 '4':394,633,1205 '5':305,311,405,704,977,1230 '6':416,768,980 '7':427,535,824 '8':435,447,875 'abstract':1144 'accept':873 'access':612 'account':1221 'across':211,754 'action':461,521,594,649,719,785,838,883 'activ':140 'add':895 'alert':693 'also':996 'alway':441,899,934 'analyt':106,413,711,716,736,953,1001,1231 'answer':498 'anti':1097 'anti-pattern':1096 'api/contract':571 'app':954 'applic':777,808 'approach':95,576,718 'architectur':60,272,517,771,780 'ask':302,329 'assum':1214 'assumpt':322,370 'attribut':32,388,580,598,617 'audit':530 'avoid':1099 'awar':678 'b':568 'b2b':952 'backward':1225 'becom':542 'boil':1171 'boil-the-ocean':1170 'bottleneck':1180 'bottlenecks/limits':641 'boundari':253,464,1002,1044 'breach':1191 'broader':208 'budget':1160 'build':226,634 'c':573 'cach':660 'candid':536,561 'canonic':801 'capabl':9,24,229,376,511,554,945,1092,1119,1127 'capac':40,398,654,683,837 'captur':759 'categor':789 'chang':331,648 'chat':356 'check':494,559,620,686,744,749,766,810,862,912,1247 'clear':570 'client':755 'clock':45,397,638,681,985,1194 'closest':1189 'comm':434 'command':336 'commit':483 'common':1101 'compani':1065 'compat':1226 'complianc':592 'compliance/privacy':296 'compon':525 'conceiv':1178 'concret':87 'confid':632 'confirm':339,462 'consist':753 'constraint':273,291,369,593,784,835 'consum':567,1124,1134 'content':201,798 'content-market':200 'context':366,458,491 'contract':118,415,545,731,894,1237 'control':613,800 'cost':37,264,1208 'cover':18 'crawl':783 'crawlabl':131 'crawler':812 'creat':71,847,1037 'criteria':874 'cultur':244,248 'current':257,271,284,640,713,715 'custom':590 'dashboards/alerts':726 'data':55,268,274,609,764,1236,1259 'data-qu':763 'date':488 'db':656 'deadlin':292 'debt':224,234 'decid':705,1050 'decis':453,475,809,826,1203 'decor':1166 'defin':98,124,451,540,578,667,728,786,982,1209,1243 'definit':373,751 'deliver':345,834 'deliveri':741,1249 'depend':280,433,836,870 'deploy':277,663 'deprecation/decommission':854 'depth':659 'design':109,189 'detail':316 'develop':266 'differ':503 'discover':59,417,770,803 'document':606 'doomsday':44,396,637,680,984,1193 'dozen':1239 'draft':493,558,619,685,748,805,833,861,881 'e.g':477,526 'earli':673 'effort':844,1224 'enabl':456 'encrypt':611 'engin':20,239,247,1168 'engineering-cultur':246 'enough':674 'entri':1197 'error':1159 'estim':631,698 'even':626 'event':53,117,414,730,750,757,1241,1253 'everi':956,1125,1177 'exampl':941,942,971,1003,1045 'execut':13,91,428,830,859,867,916 'exist':767 'expect':286,591,643,976 'explicit':321,338,586,869,922 'export':527,960 'extern':1061 'extra':918 'failur':1102 'featur':78,180,524 'file':359 'filter':528,961 'final':878,907 'find':508 'first':147,866,1028 'fix':155 'flow':184 'focus':1183 'fresh':791 'full':179,880 'futur':1138 'gap':58,409,722 'gate':877,926 'goal':85 'growth':287,642 'guarante':742,1250 'guidanc':343 'handl':138 'hit':661 'horizon':469 'hypothet':1137 'idea':572 'ident':739 'identifi':533,650 'ignor':1206 'impact':842 'import':782 'improv':238,350,910,1109 'in-chat':354 'incid':141,145,1009,1026,1035 'includ':341,442,853,900,935 'increas':77 'index':799,816 'indic':43 'info':300 'inform':779 'infra':103 'infrastructur':3,7,16,30,74,349,539,909,949,1085,1108 'initi':628,840 'input':249,457,514,587,639,712,775,832,879 'instead':1181 'instrument':48,406,706,746,1164 'intak':450 'intent':823 'intern':66,127,424,794,1057,1089 'internal-link':126,793 'inventori':377,522,555 'invis':584 'keep':958 'key':279,756 'known':288 'larg':121 'layer':1095 'lead':42,402,644,675,696,845 'least':565,1131 'limit':41,97,400,655,666,688,988,1188 'link':67,128,425,795 'links/sitemaps':819 'list':1176,1234 'local':153 'log':531 'logging/metrics/tracing':714 'major':647 'make':583 'manag':232 'managing-tech-debt':231 'markdown':353 'market':202 'measur':623,872,897,1153 'meet':919 'messi':108 'metric':691 'mid':1008 'mid-incid':1007 'migrat':1207,1223 'migration/rollout':575 'mileston':431,848,868 'minimum':250 'miss':299,318,896 'missing-info':298 'mitig':702 'mode':1103 'model':278 'month':981 'multipl':26,212 'must':724,1128 'must-hav':723 'name':701,737 'need':150,163,177,204,589,1048 'new':227 'next':102,439,904,939 'noindex':820 'notif':532 'number':629 'observ':57,408,707,721 'ocean':1173 'old':856 'one':1123,1139 'open':437,902,937 'oper':36 'option':64,327,419,769 'order':364 'outag':143 'output':344,490,552,615,679,745,802,858,906,964 'overview':518 'own':625,924 'owner':432,849 'ownership':1156,1245 'pack':8,351,882,911,1110 'page':817,1011 'pagin':790 'pain':258,466,519 'path':857,1229 'pattern':1098 'pave':21 'pay':221 'perf':154 'perform':34,263,605 'permiss':529,963 'pick':259 'plan':10,39,75,115,379,399,407,418,557,684,747,804,852,967,1040,1154,1175,1212 'platform':2,6,15,19,63,73,169,174,348,378,422,513,544,556,774,908,948,966,1058,1074,1080,1084,1107,1112,1126,1211 'platform-as-product':168,1073 'platform-infrastructur':1,947,1083 'platform-strategi':173,1079 'point':520 'polici':1161 'posit':1055 'post':1034 'post-incid':1033 'postgr':987 'practic':240 'prds':192 'prematur':1143 'price':1053 'primari':197,255 'priorit':839 'privacy/safety':35,607 'privacy/security/compliance':265 'proceed':319 'produc':4,346,1105 'product':27,164,171,332,510,550,1062,1076 'product-specif':549 'product/market':1069 'project':104,404,672,703,991 'properti':123,738 'propos':392,600,989,1117 'provid':324 'qa':743,1246 'qualiti':31,56,387,579,597,616,765,876,925,1260 'quality/analytics':269 'question':306,438,903,938 'queue':658 'rate':662,665 're':94,1006 'reach':814 'read':505 'readi':974 'real':1133 'rebuild':959 'recent':515 'recommend':1025 'redirect':1077 'refactor':157 'references/checklists.md':885,886,929,930 'references/intake.md':308,309,459,460 'references/rubric.md':890,891,932,933 'references/templates.md':444,445 'relat':797 'reliability/perf/privacy':588 'reliability/perf/privacy/safety':390 'reliability/performance':994,1149 'reliability/performance/privacy':84 'reliabl':33,262,603,1042,1094 'remain':317,548 'repeat':81,509,523 'request':361 'requir':129,251,297,337,426,608,788,927 'resid':610 'respons':1021,1027,1066 'response/runbooks':146 'retent':614 'reus':29 'right':1019 'risk':294,436,843,901,936 'ritual':241 'road':22 'roadmap':14,92,210,217,429,831,860,863,968,1043 'roadmap/initiatives':516 'rollback':342,1228 'rollout':851 'rough':283 'rule':796 'run':335,884 'runtim':276 'sake':1116 'scalabl':38 'scale':11,96,281,395,636,671,973,990,1039,1174,1179 'schema':1244 'scope':17,368,463,1024 'score':888 'sentenc':474 'seo':781 'seo/content':193 'seo/discoverability':270 'sequenc':47,206,430,829 'server':51,112,411,709,734,761,999 'server-sid':50,111,410,708,733,760,998 'services/apps':254 'set':993,1148 'share':23,228,375,538,553,944,1091,1118 'shared-cap':1090 'side':52,113,412,710,735,762,1000 'singl':152 'site/app':778 'sitemap':65,125,423,787 'size/iops':657 'skill':1032 'skill-platform-infrastructure' 'slo':485,969,1146 'slos':88,995 'slos/slis':393,601 'snapshot':367,492 'source-liqiongyu' 'spec':181,188,389,599,618 'specif':551 'specifi':720,1238 'spike':290 'spreadsheet':1200 'staffing/capacity':293 'stakehold':371,496 'standard':382,480,997 'statement':476 'step':440,448,905,940 'store':275 'strategi':49,175,194,301,740,1070,1081 'strategy/positioning':165 'success':372 'switch':1218 'system':252,333 'tabl':682 'target':391,582,621,970,1150,1162 'team':28,213,243,914,957,1215 'tech':223,233 'technic':209,216 'technical-roadmap':215 'tell':1014 'templat':443 'theater':1147 'threshold':668,694 'throughput':664 'tighten':892 'time':314,403,468,645,677,697,846 'time-awar':676 'today':1135 'toler':295 'tool':1204 'top':465,651 'topic-agent-skills' 'topic-ai-agents' 'topic-automation' 'topic-claude' 'topic-codex' 'topic-prompt-engineering' 'topic-refoundai' 'topic-skillpack' 'track':54,114,717 'traffic':978 'trajectori':282 'trigger':12,46,99,401,670 'turn':83,825 'two':1132 'unclear':893 'unknown':920 'upcom':289 'us':1015 'usag':285 'use':70,135,144,172,185,199,214,230,245,841,928,946,1030,1082 'users/customers':256 'ux':183 'veloc':79,267 'via':818 'volum':1251 'vs':546 'want':219,236 'web':62,122,421,773 'wish':1233 'wish-list':1232 'without':80,225,917,1163,1220,1235,1242 'work':82,161,585 'workflow':446 'workstream':198 'worth':512 'write':187,191,470,595 'writing-prd':190 'writing-specs-design':186 'x':481 'y':486 'z':489","prices":[{"id":"29d8017a-40a5-450e-8a6b-6cad117fd513","listingId":"f6fcc9af-04c7-4001-a912-ca6615d3ca54","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"liqiongyu","category":"lenny_skills_plus","install_from":"skills.sh"},"createdAt":"2026-04-18T22:16:51.143Z"}],"sources":[{"listingId":"f6fcc9af-04c7-4001-a912-ca6615d3ca54","source":"github","sourceId":"liqiongyu/lenny_skills_plus/platform-infrastructure","sourceUrl":"https://github.com/liqiongyu/lenny_skills_plus/tree/main/skills/platform-infrastructure","isPrimary":false,"firstSeenAt":"2026-04-18T22:16:51.143Z","lastSeenAt":"2026-04-22T00:56:24.009Z"}],"details":{"listingId":"f6fcc9af-04c7-4001-a912-ca6615d3ca54","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"liqiongyu","slug":"platform-infrastructure","github":{"repo":"liqiongyu/lenny_skills_plus","stars":49,"topics":["agent-skills","ai-agents","automation","claude","codex","prompt-engineering","refoundai","skillpack"],"license":"apache-2.0","html_url":"https://github.com/liqiongyu/lenny_skills_plus","pushed_at":"2026-04-04T06:30:11Z","description":"86 agent-executable skill packs converted from RefoundAI’s Lenny skills (unofficial). Works with Codex + Claude Code.","skill_md_sha":"9ef0dd7f9bd4150be4039258f9426110e5082a5e","skill_md_path":"skills/platform-infrastructure/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/liqiongyu/lenny_skills_plus/tree/main/skills/platform-infrastructure"},"layout":"multi","source":"github","category":"lenny_skills_plus","frontmatter":{"name":"platform-infrastructure","description":"Produce a Platform & Infrastructure Pack (capabilities plan, scaling triggers, execution roadmap)."},"skills_sh_url":"https://skills.sh/liqiongyu/lenny_skills_plus/platform-infrastructure"},"updatedAt":"2026-04-22T00:56:24.009Z"}}