19 skills.
Use when asked to document a software architecture using the arc42 template — its twelve sections (context, solution strategy, building blocks, runtime/deployment views, cross-cutting concepts, decisions, quality requirements, risks) — as a documentation structure that pairs with diagram types like component-diagram and deployment-diagram rather than replacing them.
Use when asked to design the server-side layer of a software system — API design, data persistence, business logic, scalability, security — as the server-facing counterpart to front-end-design.
Use when asked to apply Domain-Driven Design (DDD) — ubiquitous language, bounded contexts, entities/value objects, aggregates, domain events — as a software-design approach for aligning code structure with business domain concepts, complementing class-diagram's structural notation and package-diagram's module organization.
Use when asked to design a software architecture that supports incremental, guided change over time — architectural fitness functions, incremental change, appropriate coupling across multiple architectural dimensions — as distinct from a one-time upfront design, and the architectural counterpart to evolutionary-engineering's practice-level focus.
Use when asked to set up engineering practices that support continuous, incremental software change — continuous integration/delivery, automated testing, trunk-based development, feature flags, refactoring — as the practice-level counterpart to evolutionary-architecture's structural focus.
Use when asked to design the client-side/UI layer of a software system — component structure, layout and responsiveness, state management, accessibility, performance — as the client-facing counterpart to back-end-design, and distinct from visual/UX design (see user-centred-design).
Use when asked about low-code development platforms — visual/drag-and-drop workflows with some custom scripting, target use cases, trade-offs vs. traditional development — as the more customizable sibling of no-code.
Use when asked to explain or apply the Model-View-Controller (MVC) architectural pattern — separating data/business logic (Model), presentation (View), and coordinating logic (Controller) — as one specific software-architecture pattern among others.
Use when asked about no-code development platforms — fully visual configuration with zero hand-written code, target use cases, trade-offs and limits — as the more restrictive sibling of low-code.
Use when asked to improve existing code's internal structure without changing its external behavior — rename, extract, replace conditionals with polymorphism, and other restructuring techniques — as a continuous discipline for managing technical debt, closely paired with test-driven-development.
Use when asked to investigate why a problem happened, rather than just its symptoms — the identify/gather-data/analyze/identify-cause/plan/implement steps of root cause analysis (RCA) — used across engineering, manufacturing, healthcare, software, and business management.
Use when asked to design or explain a single system's high-level structure — components, their responsibilities, and how they interact — as the general discipline underlying specific tools/techniques like arc42, architecture-decision-record, domain-driven-design, and system-quality-attributes.
Use when asked to explain or plan around the software development life cycle (SDLC) — Planning, Requirements, Design, Implementation, Testing, Deployment, Maintenance — as the umbrella process this collection's more specific skills (test-driven-development, functional-specification, and others) each occupy one phase of.
Use when asked to explain software engineering as a general discipline — the engineering practices, processes, and principles applied to building software systems — as distinct from software-engineering-guide (a specific named published guide) and software-engineering-body-of-knowledge (SWEBOK, a specific named standard).
Use when asked about SWEBOK (the Software Engineering Body of Knowledge, published by the IEEE Computer Society) specifically — its knowledge areas — as distinct from the general software-engineering discipline and from a specific published guide like software-engineering-guide.
Use when the user wants software engineering best-practice guidance grounded in the Software Engineering Guide, e.g. "what does the guide say about X", "review this against best practices", "how should we handle code review / incident management / API design", or any question about ways of working, programming craft, architecture, security, UI/UX, AI, data, automation, operations, or management. For general readers who want to consult and apply the guide, not to edit it. For editing the guide's own repositories, use software-engineering-guide-maintainer instead.
Use when someone wants to apply this book's guidance to their own team or organization -- choosing a metric, naming its gaming vector and guardrail, applying the Flow Framework, SPACE, or DORA, filling in a metrics charter or dashboard spec, or running the maturity self-assessment. Not for editing the book's own chapters; use software-engineering-metrics-maintainer for that.
Use when asked to add or work with speech-to-text (STT) — transcribing spoken audio into written text, streaming vs. batch transcription, accuracy factors (accents, noise, domain vocabulary) — as the inverse of text-to-speech.
Use when asked to add or work with text-to-speech (TTS) — synthesizing spoken audio from written text, choosing between neural and concatenative/formant synthesis, SSML for pronunciation/prosody control — as the inverse of speech-to-text.