{"id":"9aae5d96-6509-4237-bc86-c5e5b7b0d413","shortId":"J23wDX","kind":"skill","title":"architecture-critic","tagline":"Use when evaluating architecture, component boundaries, coupling, cohesion, abstractions, large refactors, new layers, maintainability risks, or design choices with long-term structural consequences.","description":"# Architecture Critic\n\nA reviewer persona that evaluates architectural decisions for long-term maintainability, appropriate coupling, clear boundaries, and scaling characteristics.\n\n## Perspectives\n\nReferences `perspectives` for multi-angle analysis. Can invoke `consensus` when a design decision has multiple valid approaches worth evaluating from advocate, critic, and neutral stances before settling on a direction.\n\n## Dispatch\n\nCan be dispatched as a subagent by brainstorming or flow-plan workflows when evaluating structural implications of planned changes.\n\n## Direct Invocation\n\n- \"Review the architecture of this module\"\n- \"Are the component boundaries right here?\"\n- \"Is this abstraction justified?\"\n- \"What will be painful to change about this design in six months?\"\n- \"Evaluate coupling in this system\"\n\n<workflow>\n\n## Workflow\n\n### Step 1: Apply Persona\n\nSenior architect reviewing with a 6-12 month horizon. Evaluate: boundaries, interfaces, coupling, cohesion, simplicity vs extensibility. Will this design hold up as the team builds on it? What decisions made today will be expensive to undo?\n\n### Step 2: Structural Checklist\n\nWork through each structural quality check:\n\n1. **Boundaries** — Does each component have one clear responsibility? Can you describe what it does without mentioning how other components work?\n2. **Interfaces** — Are interfaces between components well-defined? Could you swap the implementation without changing consumers?\n3. **Coupling** — What would break if you changed this component? Is the blast radius proportional to the change?\n4. **Cohesion** — Do things that change together live together? Does a single feature change ripple through many unrelated files?\n5. **Abstraction level** — Are abstractions justified by actual use cases (2+ consumers) or speculative? Are there missing abstractions where code is duplicated across boundaries?\n6. **Data flow** — Is it clear how data moves through the system? Are there hidden side channels or global state?\n7. **Scaling characteristics** — What happens at 10x load? Are there obvious bottlenecks (single database, synchronous calls in hot paths)?\n8. **Testability** — Can components be tested in isolation? Are test boundaries aligned with component boundaries?\n9. **Simplicity** — Could this design be simpler and still meet requirements? Is complexity earning its keep?\n\n### Step 3: Report Findings\n\nFor each concern: structural problem, long-term consequence, recommendation. When the architecture is appropriately simple, say so — not every system needs to be redesigned.\n\n</workflow>\n\n<guardrails>\n\n## Guardrails\n\n- No YAGNI violations — do not optimize for hypothetical future requirements\n- No astronaut architecture — no layered abstractions, plugin systems, or generic frameworks that exist in anticipation of use cases not yet real\n- Simple designs that meet current needs beat elegant designs for hypothetical futures\n- Focus on structural problems that will actually cause pain, not theoretical impurity\n\n</guardrails>\n\n<validation>\n\n### Validation Checkpoint\n\nBefore delivering findings, verify:\n\n- [ ] Each concern addresses a structural issue, not cosmetic\n- [ ] At least one finding considers the 6-month horizon\n- [ ] No speculative future requirements proposed\n- [ ] If architecture is sound, explicitly state why it holds up\n\n</validation>\n\n<example>\n\n## Example\n\n**Context:** Module boundary review of an e-commerce order system.\n\n**Finding — Coupling: High (6-month risk)**\nThe `OrderService` directly queries `InventoryDB` tables instead of going through `InventoryService`. Blast radius: any inventory schema change breaks order processing. 6-month risk: high — inventory team plans a schema migration in Q3. Fix: route inventory queries through `InventoryService` API. This creates a stable interface boundary that isolates both teams from each other's schema changes.\n\n**Finding — Abstraction level: Medium**\n`ShippingCalculator` is wrapped in a generic `StrategyProvider<T>` interface, but there is only one implementation and no planned second consumer. This adds indirection without value. Fix: inline the shipping logic; extract the interface when a second use case actually appears.\n\n**Strengths noted:** Payment processing is cleanly separated behind `PaymentGateway` interface with adapter pattern — swapping providers requires changing one file.\n\n</example>\n\n## References Index\n\n- **[Persona](references/persona.md)** — Role, time horizon, approach, and guardrails\n- **[Architecture Checklist](references/checklist.md)** — Nine structural quality checks\n- **[Stances](../perspectives/references/stances.md)** — Underlying stance prompts with ethical guardrails (from perspectives skill)","tags":["architecture","critic","flow","cofin","agent-skills","ai-agents","beads","claude-code","codex","cursor","developer-tools","gemini-cli"],"capabilities":["skill","source-cofin","skill-architecture-critic","topic-agent-skills","topic-ai-agents","topic-beads","topic-claude-code","topic-codex","topic-cursor","topic-developer-tools","topic-gemini-cli","topic-opencode","topic-plugin","topic-slash-commands","topic-spec-driven-development"],"categories":["flow"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cofin/flow/architecture-critic","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cofin/flow","source_repo":"https://github.com/cofin/flow","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (4,718 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:07:35.232Z","embedding":null,"createdAt":"2026-04-23T13:03:57.668Z","updatedAt":"2026-05-18T19:07:35.232Z","lastSeenAt":"2026-05-18T19:07:35.232Z","tsv":"'-12':148 '/perspectives/references/stances.md':634 '1':139,189 '10x':314 '2':180,210,274 '3':227,359 '4':245 '5':264 '6':147,288,463,496,519 '7':308 '8':327 '9':342 'abstract':12,118,265,268,281,403,555 'across':286 'actual':271,437,595 'adapt':608 'add':578 'address':451 'advoc':71 'align':338 'analysi':56 'angl':55 'anticip':412 'api':537 'appear':596 'appli':140 'approach':67,623 'appropri':42,376 'architect':143 'architectur':2,7,28,35,106,374,400,472,626 'architecture-crit':1 'astronaut':399 'beat':425 'behind':604 'blast':239,510 'bottleneck':319 'boundari':9,45,113,152,190,287,337,341,484,543 'brainstorm':89 'break':231,516 'build':167 'call':323 'case':273,415,594 'caus':438 'chang':101,125,225,234,244,250,258,515,553,613 'channel':304 'characterist':48,310 'check':188,632 'checklist':182,627 'checkpoint':444 'choic':21 'clean':602 'clear':44,196,293 'code':283 'cohes':11,155,246 'commerc':490 'complex':354 'compon':8,112,193,208,215,236,330,340 'concern':364,450 'consensus':59 'consequ':27,370 'consid':461 'consum':226,275,576 'context':482 'cosmet':456 'could':219,344 'coupl':10,43,133,154,228,494 'creat':539 'critic':3,29,72 'current':423 'data':289,295 'databas':321 'decis':36,63,171 'defin':218 'deliv':446 'describ':200 'design':20,62,128,161,346,420,427 'direct':80,102,501 'dispatch':81,84 'duplic':285 'e':489 'e-commerc':488 'earn':355 'eleg':426 'ethic':639 'evalu':6,34,69,96,132,151 'everi':381 'exampl':481 'exist':410 'expens':176 'explicit':475 'extens':158 'extract':587 'featur':257 'file':263,615 'find':361,447,460,493,554 'fix':531,582 'flow':92,290 'flow-plan':91 'focus':431 'framework':408 'futur':396,430,468 'generic':407,563 'global':306 'go':507 'guardrail':387,625,640 'happen':312 'hidden':302 'high':495,522 'hold':162,479 'horizon':150,465,622 'hot':325 'hypothet':395,429 'implement':223,571 'implic':98 'impur':442 'index':617 'indirect':579 'inlin':583 'instead':505 'interfac':153,211,213,542,565,589,606 'inventori':513,523,533 'inventorydb':503 'inventoryservic':509,536 'invoc':103 'invok':58 'isol':334,545 'issu':454 'justifi':119,269 'keep':357 'larg':13 'layer':16,402 'least':458 'level':266,556 'live':252 'load':315 'logic':586 'long':24,39,368 'long-term':23,38,367 'made':172 'maintain':17,41 'mani':261 'medium':557 'meet':351,422 'mention':205 'migrat':528 'miss':280 'modul':109,483 'month':131,149,464,497,520 'move':296 'multi':54 'multi-angl':53 'multipl':65 'need':383,424 'neutral':74 'new':15 'nine':629 'note':598 'obvious':318 'one':195,459,570,614 'optim':393 'order':491,517 'orderservic':500 'pain':123,439 'path':326 'pattern':609 'payment':599 'paymentgateway':605 'persona':32,141,618 'perspect':49,51,642 'plan':93,100,525,574 'plugin':404 'problem':366,434 'process':518,600 'prompt':637 'proport':241 'propos':470 'provid':611 'q3':530 'qualiti':187,631 'queri':502,534 'radius':240,511 'real':418 'recommend':371 'redesign':386 'refactor':14 'refer':50,616 'references/checklist.md':628 'references/persona.md':619 'report':360 'requir':352,397,469,612 'respons':197 'review':31,104,144,485 'right':114 'rippl':259 'risk':18,498,521 'role':620 'rout':532 'say':378 'scale':47,309 'schema':514,527,552 'second':575,592 'senior':142 'separ':603 'settl':77 'ship':585 'shippingcalcul':558 'side':303 'simpl':377,419 'simpler':348 'simplic':156,343 'singl':256,320 'six':130 'skill':643 'skill-architecture-critic' 'sound':474 'source-cofin' 'specul':277,467 'stabl':541 'stanc':75,633,636 'state':307,476 'step':138,179,358 'still':350 'strategyprovid':564 'strength':597 'structur':26,97,181,186,365,433,453,630 'subag':87 'swap':221,610 'synchron':322 'system':136,299,382,405,492 'tabl':504 'team':166,524,547 'term':25,40,369 'test':332,336 'testabl':328 'theoret':441 'thing':248 'time':621 'today':173 'togeth':251,253 'topic-agent-skills' 'topic-ai-agents' 'topic-beads' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-gemini-cli' 'topic-opencode' 'topic-plugin' 'topic-slash-commands' 'topic-spec-driven-development' 'under':635 'undo':178 'unrel':262 'use':4,272,414,593 'valid':66,443 'valu':581 'verifi':448 'violat':390 'vs':157 'well':217 'well-defin':216 'without':204,224,580 'work':183,209 'workflow':94,137 'worth':68 'would':230 'wrap':560 'yagni':389 'yet':417","prices":[{"id":"f4ff7dfa-37c3-4087-b67a-2d154da25ff7","listingId":"9aae5d96-6509-4237-bc86-c5e5b7b0d413","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cofin","category":"flow","install_from":"skills.sh"},"createdAt":"2026-04-23T13:03:57.668Z"}],"sources":[{"listingId":"9aae5d96-6509-4237-bc86-c5e5b7b0d413","source":"github","sourceId":"cofin/flow/architecture-critic","sourceUrl":"https://github.com/cofin/flow/tree/main/skills/architecture-critic","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:57.668Z","lastSeenAt":"2026-05-18T19:07:35.232Z"}],"details":{"listingId":"9aae5d96-6509-4237-bc86-c5e5b7b0d413","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cofin","slug":"architecture-critic","github":{"repo":"cofin/flow","stars":11,"topics":["agent-skills","ai-agents","beads","claude-code","codex","context-driven-development","cursor","developer-tools","gemini-cli","opencode","plugin","slash-commands","spec-driven-development","subagents","tdd","workflow"],"license":"apache-2.0","html_url":"https://github.com/cofin/flow","pushed_at":"2026-04-27T19:07:26Z","description":"Context-Driven Development toolkit for AI agents — spec-first planning, TDD workflow, and Beads integration.","skill_md_sha":"a914c3889ece9bc5a0290759b347d4b26174a5c1","skill_md_path":"skills/architecture-critic/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cofin/flow/tree/main/skills/architecture-critic"},"layout":"multi","source":"github","category":"flow","frontmatter":{"name":"architecture-critic","description":"Use when evaluating architecture, component boundaries, coupling, cohesion, abstractions, large refactors, new layers, maintainability risks, or design choices with long-term structural consequences."},"skills_sh_url":"https://skills.sh/cofin/flow/architecture-critic"},"updatedAt":"2026-05-18T19:07:35.232Z"}}