plugins/systems-design/skills/architecture/SKILL.md
Guides system architecture and decomposition — turns requirements into a concrete system shape by identifying components, drawing boundaries, tracing data flow, analyzing failure modes, and selecting technology. Covers the intellectual work of breaking a system apart, not the writing of a design document. Use when the user asks to architect a system, decompose a feature into components, figure out how services should talk to each other, evaluate system trade-offs, or says things like "how should we structure this", "what components do we need", "let's think through the architecture", or "where should this logic live".
npx skillsauth add lucasilverentand/skills architectureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Turns requirements into a concrete system shape — components, boundaries, data flow, failure modes, and technology choices. This is the thinking skill: it's about decomposition and trade-offs, not about writing the document (that's documentation:write-design-doc when installed), modeling data (that's data-modeling), or designing APIs (that's api-design).
basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "(not a git repo)"ls .context/architecture/ 2>/dev/null || echo "none yet".context/ first, scope the work to the new slice onlyproject:requirements first when availabledocumentation:c4-diagrams when availabledocumentation:write-adr when availableThese principles come from references/philosophy.md and apply to every architecture decision:
Identify the bounded contexts — the natural seams in the system where one responsibility ends and another begins.
Trace 2-3 representative requests through the system end-to-end. Pick flows that exercise different paths: a happy-path read, a write with side effects, and an error case.
For each hop between components:
Identify the hot path — the flow that handles the most traffic or is most latency-sensitive. Optimize the hot path first; everything else can be "good enough."
Mark where work is inline (must complete within the request, <50ms) vs queued (can happen later via CF Queues or similar). Queuing is the cheapest way to make a system feel fast — if the user doesn't need the result right now, don't make them wait.
For each component, answer:
Lean on the reference files (references/async.md, references/resilience.md, references/deploy.md, references/third-party.md) for all infrastructure choices. For the data store decision (D1 vs Neon), see data-modeling's "Data store selection" section — the short version: D1 for small/simple, Neon for multi-tenant/complex/compliance. For each technology decision:
For each non-obvious decision, structure as:
|Decision|Chose|Rejected|Why| |---|---|---|---| |Message passing|CF Queues|Kafka|Queues integrates natively with Workers; Kafka adds ops burden for throughput we don't need| |Session storage|KV|D1|Sessions are short-lived key-value lookups; KV is cheaper and faster for this access pattern|
Give rejected options their real best case — strawman comparisons are useless. If Kafka genuinely is better for high-throughput ordered streams, say so, then explain why that's not this situation. Tie each decision back to a specific requirement or constraint.
|When|Use|
|---|---|
|Need to design the data model|data-modeling|
|Need to design the API|api-design|
|Need a diagram|documentation:c4-diagrams if installed|
|Ready to write the doc|documentation:write-design-doc if installed|
|A decision deserves recording|documentation:write-adr if installed|
|Need to gather requirements first|project:requirements if installed|
|File|Covers|
|---|---|
|references/philosophy.md|Monolith-first, extract early, lean on existing stack|
|references/async.md|Inline vs queue, cron, outbox pattern, realtime (SSE/WebSocket)|
|references/resilience.md|Timeouts, retries, circuit breakers, caching, service-to-service|
|references/observability.md|Logging, request IDs, metrics, tracing, alerting, access logs|
|references/deploy.md|Monorepo layout, deployment, secrets, config, health checks, local dev|
|references/testing.md|Test pyramid, Worker tests, DB testing, fixtures, mocking, E2E|
|references/third-party.md|Default vendors: email, payments, analytics, search, monitoring|
|references/privacy.md|Data residency, PII storage, GDPR deletion, cookie consent|
tools
Creates, audits, and updates public open-source repository documentation, including README files, CONTRIBUTING guides, SECURITY and SUPPORT docs, project badges, quickstarts, usage guidance, community links, and contributor onboarding. Use when maintaining docs for public GitHub projects, libraries, CLIs, apps, or reusable packages, especially when the user says "update this README", "write CONTRIBUTING.md", "make these docs open-source ready", or "improve the public project docs".
development
Creates, audits, and updates private or closed-source project documentation, including internal README hubs, codebase navigation guides, ownership links, Linear initiative links, onboarding notes, runbooks, and contribution guidance for teams. Use when maintaining docs for private repositories, internal apps, services, infrastructure, or company projects, especially when the user says "make this README an internal hub", "document how to navigate this repo", "add Linear links to the docs", or "write private project documentation".
development
Creates, updates, estimates, and tidies Linear issues using Luca's issue-shaping rules. Use when the user asks to create a Linear issue, write ticket-ready issue text, refine an existing issue, add acceptance criteria, set issue relationships, estimate points, audit issue hygiene, tidy a Linear project, find duplicates, fix stale blockers, or normalize labels, milestones, priorities, and issue state.
testing
Keeps an existing Linear project tidy after planning and during execution. Use when the user asks to "tidy Linear", "clean up the project", "audit issues", "find duplicates", "check stale blockers", "fix project drift", or run periodic Linear housekeeping on a project, initiative, or milestone set. Use when planning is underway or execution has started and relationships, labels, priorities, documents, and issue states need coherence without changing product scope.