software-design-wiki
Retrieve software design wiki concepts. Use when the question is about software design: Module design; Complexity management; Interface and API design; Public API surface as a product; Refactoring; Test design at the code level; Code-level readability. Scan concepts.json in this skill folder. Read only matching notes. Follow basename links hop by hop. Do not load every note. Do not answer from fleeting/ notes.
Pinned to revision 846c7b7891a5, so it is the text this page describes rather than whatever the author pushed since.
Files
- skills/software-design-wiki/SKILL.md
- skills/software-design-wiki/aaa-test-structure.md
- skills/software-design-wiki/abbreviation-consistency.md
- skills/software-design-wiki/abstraction.md
- skills/software-design-wiki/accessor-methods-should-hide-representation.md
- skills/software-design-wiki/adapt-parameter.md
- skills/software-design-wiki/aggregate-consistency-boundary.md
- skills/software-design-wiki/agile-and-incremental-abstraction-design.md
- skills/software-design-wiki/alternative-classes-different-interfaces.md
- skills/software-design-wiki/anemic-domain-model.md
- skills/software-design-wiki/anticorruption-layer.md
- skills/software-design-wiki/application-service-orchestration-only.md
- skills/software-design-wiki/architecture-debt-hotspot-anti-patterns.md
- skills/software-design-wiki/architecture-is-everyones-job.md
- skills/software-design-wiki/assertion-placement-and-communication.md
- skills/software-design-wiki/automated-refactoring-tool-caution.md
- skills/software-design-wiki/automated-refactoring-tool-exclusive-use.md
- skills/software-design-wiki/automated-tests-as-design-feedback.md
- skills/software-design-wiki/avoid-comment-duplication.md
- skills/software-design-wiki/backward-and-forward-compatibility.md
- skills/software-design-wiki/behavior-oriented-test-naming.md
- skills/software-design-wiki/benefits-of-well-written-comments.md
- skills/software-design-wiki/better-together-or-apart.md
- skills/software-design-wiki/big-class-problems.md
- skills/software-design-wiki/binding-time.md
- skills/software-design-wiki/black-box-vs-white-box-testing.md
- skills/software-design-wiki/boundary-condition-testing.md
- skills/software-design-wiki/branch-by-abstraction.md
- skills/software-design-wiki/breaking-dependencies-in-procedural-code.md
- skills/software-design-wiki/breaking-singleton-dependencies.md
- skills/software-design-wiki/brittle-tests-and-unchanging-tests.md
- skills/software-design-wiki/can-execute-execute-pattern.md
- skills/software-design-wiki/change-amplification.md
- skills/software-design-wiki/change-function-declaration.md
- skills/software-design-wiki/change-reference-value.md
- skills/software-design-wiki/change-value-to-reference.md
- skills/software-design-wiki/characterization-tests.md
- skills/software-design-wiki/check-diffs-before-committing.md
- skills/software-design-wiki/class-size-as-a-hiding-decision.md
- skills/software-design-wiki/classical-vs-london-unit-testing-schools.md
- skills/software-design-wiki/classitis.md
- skills/software-design-wiki/code-duplication-red-flag.md
- skills/software-design-wiki/code-obviousness.md
- skills/software-design-wiki/code-pollution-for-testing.md
- skills/software-design-wiki/cognitive-load.md
- skills/software-design-wiki/cohesion.md
- skills/software-design-wiki/collapse-hierarchy.md
- skills/software-design-wiki/combine-functions-into-class.md
- skills/software-design-wiki/combine-functions-into-transform.md
- skills/software-design-wiki/command-query-separation.md
- skills/software-design-wiki/comment-repeats-code-red-flag.md
- skills/software-design-wiki/comment-writing-time-investment.md
- skills/software-design-wiki/commenting-conventions.md
- skills/software-design-wiki/comments-as-a-design-diagnostic.md
- skills/software-design-wiki/comments-belong-in-code-not-commit-log.md
- skills/software-design-wiki/comments-complete-the-abstraction.md
- skills/software-design-wiki/comments-describe-non-obvious-things.md
- skills/software-design-wiki/compilation-firewall.md
- skills/software-design-wiki/complexity.md
- skills/software-design-wiki/concepts.json
- skills/software-design-wiki/configuration-parameters-as-incomplete-solutions.md
- skills/software-design-wiki/conjoined-methods.md
- skills/software-design-wiki/consistency-as-a-design-tool.md
- skills/software-design-wiki/consistent-names.md
- skills/software-design-wiki/consolidate-conditional-expression.md
- skills/software-design-wiki/construction-test.md
- skills/software-design-wiki/context-object-pattern.md
- skills/software-design-wiki/continuous-design.md
- skills/software-design-wiki/contract-tests-for-fakes.md
- skills/software-design-wiki/conversation-scrutiny.md
- skills/software-design-wiki/cost-benefit-of-a-change-mechanism.md
- skills/software-design-wiki/coupling.md
- skills/software-design-wiki/coverage-metrics-as-negative-indicator.md
- skills/software-design-wiki/crash-on-unrecoverable-errors.md
- skills/software-design-wiki/cross-module-design-decisions.md
- skills/software-design-wiki/damp-over-dry-in-tests.md
- skills/software-design-wiki/data-class.md
- skills/software-design-wiki/data-clumps.md
- skills/software-design-wiki/database-integration-test-patterns.md
- skills/software-design-wiki/deciding-where-to-start-deduplication.md
- skills/software-design-wiki/decisions-that-can-change-heuristic.md
- skills/software-design-wiki/decompose-conditional.md
- skills/software-design-wiki/decorator-pattern-and-shallow-classes.md
- skills/software-design-wiki/deep-construction-dependencies.md
- skills/software-design-wiki/deep-modules.md
- skills/software-design-wiki/defer-side-effects-for-testability.md
- skills/software-design-wiki/define-errors-out-of-existence.md
- skills/software-design-wiki/definition-completion.md
- skills/software-design-wiki/delete-unused-code.md
- skills/software-design-wiki/dependencies-as-a-cause-of-complexity.md
- skills/software-design-wiki/dependency-breaking-catalog-framing.md
- skills/software-design-wiki/dependency-breaking-for-testability.md
- skills/software-design-wiki/dependency-breaking-vs-refactoring.md
- skills/software-design-wiki/dependency-injection-pattern.md
- skills/software-design-wiki/dependency-inversion-principle.md
- skills/software-design-wiki/design-around-the-critical-path.md
- skills/software-design-wiki/design-cost-benefit-of-infrastructure.md
- skills/software-design-wiki/design-for-reading-not-writing.md
- skills/software-design-wiki/design-investment-level.md
- skills/software-design-wiki/design-it-twice.md
- skills/software-design-wiki/design-patterns-as-reusable-solutions.md
- skills/software-design-wiki/design-special-cases-out-of-existence.md
- skills/software-design-wiki/design-stamina-hypothesis.md
- skills/software-design-wiki/diagnose-why-a-dependency-is-bad.md
- skills/software-design-wiki/different-layer-different-abstraction.md
- skills/software-design-wiki/differential-testing-against-reference-implementation.md
- skills/software-design-wiki/divergent-change.md
- skills/software-design-wiki/domain-events-for-deferred-side-effects.md
- skills/software-design-wiki/duplication-removal-as-emergent-design.md
- skills/software-design-wiki/edit-and-pray-vs-cover-and-modify.md
- skills/software-design-wiki/effect-propagation-mechanisms.md
- skills/software-design-wiki/effect-sketches.md
- skills/software-design-wiki/eliminate-circular-dependencies-for-testability.md
- skills/software-design-wiki/eliminating-vs-encapsulating-complexity.md
- skills/software-design-wiki/encapsulate-collection.md
- skills/software-design-wiki/encapsulate-global-references.md
- skills/software-design-wiki/encapsulate-record.md
- skills/software-design-wiki/encapsulate-variable.md
- skills/software-design-wiki/encapsulation-is-a-tool-not-a-goal.md
- skills/software-design-wiki/ensuring-consistency.md
- skills/software-design-wiki/error-reporting-mechanisms-in-interfaces.md
- skills/software-design-wiki/everything-is-already-object-oriented.md
- skills/software-design-wiki/evolutionary-coupling.md
- skills/software-design-wiki/exception-aggregation.md
- skills/software-design-wiki/exception-handling-complexity.md
- skills/software-design-wiki/exception-masking.md
- skills/software-design-wiki/explicit-domain-model-boundary.md
- skills/software-design-wiki/expose-static-method-and-break-out-method-object.md
- skills/software-design-wiki/extract-and-override-call.md
- skills/software-design-wiki/extract-and-override-getter.md
- skills/software-design-wiki/extract-class-without-tests.md
- skills/software-design-wiki/extract-class.md
- skills/software-design-wiki/extract-function.md
- skills/software-design-wiki/extract-implementer.md
- skills/software-design-wiki/extract-interface.md
- skills/software-design-wiki/extract-method-with-comment-first-rollback.md
- skills/software-design-wiki/extract-superclass.md
- skills/software-design-wiki/extract-to-current-class-first.md
- skills/software-design-wiki/extract-to-expose-hidden-side-effects.md
- skills/software-design-wiki/extract-variable.md
- skills/software-design-wiki/extract-what-you-know-and-coupling-count.md
- skills/software-design-wiki/fake-objects.md
- skills/software-design-wiki/feature-envy.md
- skills/software-design-wiki/feature-sketches.md
- skills/software-design-wiki/find-responsibilities-hidden-in-api-calls.md
- skills/software-design-wiki/fluent-interfaces-as-documentation.md
- skills/software-design-wiki/four-pillars-of-a-good-unit-test.md
- skills/software-design-wiki/four-reasons-to-change-software.md
- skills/software-design-wiki/four-rules-of-simple-design.md
- skills/software-design-wiki/four-types-of-code-for-testing-priority.md
- skills/software-design-wiki/fresh-fixtures-over-shared-fixtures.md
- skills/software-design-wiki/functional-architecture-for-testability.md
- skills/software-design-wiki/general-purpose-modules-are-deeper.md
- skills/software-design-wiki/generality-questions-checklist.md
- skills/software-design-wiki/getters-and-setters-are-shallow.md
- skills/software-design-wiki/gleaning-dependencies.md
- skills/software-design-wiki/global-state-opacity.md
- skills/software-design-wiki/goal-of-unit-testing.md
- skills/software-design-wiki/group-methods-heuristic.md
- skills/software-design-wiki/handling-bugs-found-during-characterization.md
- skills/software-design-wiki/hard-to-misuse-apis.md
- skills/software-design-wiki/heuristics-for-characterizing-classes.md
- skills/software-design-wiki/hide-delegate.md
- skills/software-design-wiki/higher-level-comments.md
- skills/software-design-wiki/how-to-think-about-performance.md
- skills/software-design-wiki/humble-object-pattern.md
- skills/software-design-wiki/hyperaware-editing.md
- skills/software-design-wiki/hyrums-law.md
- skills/software-design-wiki/implementation-comments.md
- skills/software-design-wiki/implementation-documentation-contaminates-interface.md
- skills/software-design-wiki/incremental-accumulation-of-complexity.md
- skills/software-design-wiki/incremental-extraction-over-refactoring-binges.md
- skills/software-design-wiki/information-hiding-within-a-class.md
- skills/software-design-wiki/information-hiding.md
- skills/software-design-wiki/information-leakage.md
- skills/software-design-wiki/inject-time-as-explicit-dependency.md
- skills/software-design-wiki/inline-class.md
- skills/software-design-wiki/inline-function.md
- skills/software-design-wiki/inline-variable.md
- skills/software-design-wiki/insider-trading-smell.md
- skills/software-design-wiki/integration-test-state-verification.md
- skills/software-design-wiki/integration-testing-fundamentals.md
- skills/software-design-wiki/integration-vs-end-to-end-tests.md
- skills/software-design-wiki/interception-point.md
- skills/software-design-wiki/interface-documentation.md
- skills/software-design-wiki/interface-duplication-when-ok.md
- skills/software-design-wiki/interface-evolution-deprecation-versioning-extension.md
- skills/software-design-wiki/interface-formal-and-informal-elements.md
- skills/software-design-wiki/interface-segregation-principle.md
- skills/software-design-wiki/interface-vs-implementation-abstraction-gap.md
- skills/software-design-wiki/interface-vs-implementation-inheritance.md
- skills/software-design-wiki/interfaces-for-unmanaged-dependencies-only.md
- skills/software-design-wiki/interfaces-should-make-the-common-case-simple.md
- skills/software-design-wiki/intra-system-vs-inter-system-communication.md
- skills/software-design-wiki/introduce-assertion-for-fail-fast.md
- skills/software-design-wiki/introduce-instance-delegator.md
- skills/software-design-wiki/introduce-parameter-object.md
- skills/software-design-wiki/introduce-sensing-variable.md
- skills/software-design-wiki/introduce-special-case.md
- skills/software-design-wiki/invariants.md
- skills/software-design-wiki/keeping-comments-current.md
- skills/software-design-wiki/know-your-language-for-effect-analysis.md
- skills/software-design-wiki/lag-time.md
- skills/software-design-wiki/lazy-element.md
- skills/software-design-wiki/leaking-domain-knowledge-to-tests.md
- skills/software-design-wiki/lean-on-the-compiler.md
- skills/software-design-wiki/legacy-code-definition.md
- skills/software-design-wiki/legacy-code-morale.md
- skills/software-design-wiki/library-design-constraints-vs-testability.md
- skills/software-design-wiki/library-lock-in-from-scattered-calls.md
- skills/software-design-wiki/limits-of-information-hiding.md
- skills/software-design-wiki/limits-of-masking-errors.md
- skills/software-design-wiki/limits-of-pulling-complexity-down.md
- skills/software-design-wiki/link-seams.md
- skills/software-design-wiki/liskov-substitution-principle.md
- skills/software-design-wiki/localize-global-dependencies.md
- skills/software-design-wiki/long-parameter-list-smell.md
- skills/software-design-wiki/loops-vs-pipelines.md
- skills/software-design-wiki/measure-before-modifying.md
- skills/software-design-wiki/message-chains.md
- skills/software-design-wiki/method-length-is-not-a-design-criterion.md
- skills/software-design-wiki/migrating-toward-object-seams.md
- skills/software-design-wiki/mock-at-system-edges.md
- skills/software-design-wiki/mock-objects.md
- skills/software-design-wiki/mock-only-types-you-own.md
- skills/software-design-wiki/mocks-for-integration-tests-only.md
- skills/software-design-wiki/mocks-vs-stubs-taxonomy.md
- skills/software-design-wiki/module-interface-and-implementation.md
- skills/software-design-wiki/monster-methods.md
- skills/software-design-wiki/more-code-for-better-structure-is-fine.md
- skills/software-design-wiki/move-field.md
- skills/software-design-wiki/move-function.md
- skills/software-design-wiki/move-statements-into-function.md
- skills/software-design-wiki/move-statements-to-callers.md
- skills/software-design-wiki/mutable-data-smell.md
- skills/software-design-wiki/mysterious-name.md
- skills/software-design-wiki/naked-crc.md
- skills/software-design-wiki/name-length-vs-distance.md
- skills/software-design-wiki/names-should-create-a-clear-image.md
- skills/software-design-wiki/naming-as-documentation.md
- skills/software-design-wiki/never-mix-refactoring-with-functional-changes.md
- skills/software-design-wiki/nonobvious-code-patterns.md
- skills/software-design-wiki/normalized-hierarchy.md
- skills/software-design-wiki/null-object-pattern.md
- skills/software-design-wiki/object-seams.md
- skills/software-design-wiki/obscurity.md
- skills/software-design-wiki/observable-behavior-vs-implementation-details.md
- skills/software-design-wiki/organize-modules-by-business-concept.md
- skills/software-design-wiki/orthogonality-and-open-closed-principle.md
- skills/software-design-wiki/output-based-testing.md
- skills/software-design-wiki/overzealous-consistency.md
- skills/software-design-wiki/parameterize-constructor.md
- skills/software-design-wiki/parameterize-function.md
- skills/software-design-wiki/parameterize-method.md
- skills/software-design-wiki/parse-dont-validate.md
- skills/software-design-wiki/pass-null.md
- skills/software-design-wiki/pass-through-methods.md
- skills/software-design-wiki/pass-through-variables.md
- skills/software-design-wiki/pinch-point-traps.md
- skills/software-design-wiki/pinch-point.md
- skills/software-design-wiki/pinch-points-as-design-diagnostic.md
- skills/software-design-wiki/ports-and-adapters-architecture.md
- skills/software-design-wiki/precise-names.md
- skills/software-design-wiki/precision-adding-comments.md
- skills/software-design-wiki/prefer-real-implementations-in-tests.md
- skills/software-design-wiki/preparatory-refactoring.md
- skills/software-design-wiki/preprocessing-seams.md
- skills/software-design-wiki/preserve-signatures.md
- skills/software-design-wiki/preserve-whole-object.md
- skills/software-design-wiki/preserving-behavior-is-the-real-challenge.md
- skills/software-design-wiki/primitive-obsession.md
- skills/software-design-wiki/primitivize-parameter.md
- skills/software-design-wiki/programming-by-difference.md
- skills/software-design-wiki/pull-complexity-downwards.md
- skills/software-design-wiki/pull-up-constructor-body.md
- skills/software-design-wiki/pull-up-feature.md
- skills/software-design-wiki/pull-up-field.md
- skills/software-design-wiki/pull-up-method.md
- skills/software-design-wiki/push-down-dependency.md
- skills/software-design-wiki/push-down-field.md
- skills/software-design-wiki/push-down-method.md
- skills/software-design-wiki/quantifying-refactoring-roi.md
- skills/software-design-wiki/ramcloud-buffer-critical-path-example.md
- skills/software-design-wiki/reasoning-forward-vs-debugging.md
- skills/software-design-wiki/red-flags-as-design-smells.md
- skills/software-design-wiki/refactorable-documentation.md
- skills/software-design-wiki/refactoring-preserves-behavior.md
- skills/software-design-wiki/refactoring-vs-performance-optimization.md
- skills/software-design-wiki/referential-transparency-and-pure-functions.md
- skills/software-design-wiki/refused-bequest.md
- skills/software-design-wiki/regression-testing-as-a-software-vise.md
- skills/software-design-wiki/remove-flag-argument.md
- skills/software-design-wiki/remove-middle-man.md
- skills/software-design-wiki/remove-setting-method.md
- skills/software-design-wiki/remove-subclass.md
- skills/software-design-wiki/rename-field.md
- skills/software-design-wiki/rename-variable.md
- skills/software-design-wiki/renaming-reveals-possibilities.md
- skills/software-design-wiki/repeated-switches-smell.md
- skills/software-design-wiki/replace-command-with-function.md
- skills/software-design-wiki/replace-conditional-with-polymorphism.md
- skills/software-design-wiki/replace-constructor-with-factory-function.md
- skills/software-design-wiki/replace-derived-variable-with-query.md
- skills/software-design-wiki/replace-function-with-command.md
- skills/software-design-wiki/replace-function-with-function-pointer.md
- skills/software-design-wiki/replace-global-reference-with-getter.md
- skills/software-design-wiki/replace-inline-code-with-function-call.md
- skills/software-design-wiki/replace-loop-with-pipeline.md
- skills/software-design-wiki/replace-nested-conditional-with-guard-clauses.md
- skills/software-design-wiki/replace-parameter-with-query.md
- skills/software-design-wiki/replace-primitive-with-object.md
- skills/software-design-wiki/replace-query-with-parameter.md
- skills/software-design-wiki/replace-subclass-with-delegate.md
- skills/software-design-wiki/replace-superclass-with-delegate.md
- skills/software-design-wiki/replace-temp-with-query.md
- skills/software-design-wiki/replace-type-code-with-subclasses.md
- skills/software-design-wiki/repository-and-transaction-separation.md
- skills/software-design-wiki/responsibility-based-extraction.md
- skills/software-design-wiki/rhythm-of-refactoring.md
- skills/software-design-wiki/risk-driven-test-selection.md
- skills/software-design-wiki/risky-change-and-fear-of-legacy-code.md
- skills/software-design-wiki/rule-of-three.md
- skills/software-design-wiki/schema-evolution-rules.md
- skills/software-design-wiki/scratch-refactoring.md
- skills/software-design-wiki/seam.md
- skills/software-design-wiki/self-testing-code.md
- skills/software-design-wiki/sensing-and-separation.md
- skills/software-design-wiki/separate-general-and-special-purpose-code.md
- skills/software-design-wiki/separate-query-from-modifier.md
- skills/software-design-wiki/shallow-modules.md
- skills/software-design-wiki/shotgun-surgery.md
- skills/software-design-wiki/simplicity-and-performance-are-compatible.md
- skills/software-design-wiki/single-goal-editing.md
- skills/software-design-wiki/single-responsibility-principle.md
- skills/software-design-wiki/skeletonize-methods-vs-find-sequences.md
- skills/software-design-wiki/skepticism-of-test-driven-development.md
- skills/software-design-wiki/sketching-and-markup-for-understanding-code.md
- skills/software-design-wiki/skin-and-wrap-the-api.md
- skills/software-design-wiki/slide-statements.md
- skills/software-design-wiki/special-general-mixture.md
- skills/software-design-wiki/speculative-generality-smell.md
- skills/software-design-wiki/split-loop.md
- skills/software-design-wiki/split-phase.md
- skills/software-design-wiki/split-variable.md
- skills/software-design-wiki/splitting-and-joining-methods.md
- skills/software-design-wiki/sprout-class.md
- skills/software-design-wiki/sprout-method.md
- skills/software-design-wiki/state-testing-over-interaction-testing.md
- skills/software-design-wiki/static-as-a-staging-area.md
- skills/software-design-wiki/stay-strategic-when-modifying-code.md
- skills/software-design-wiki/stopping-condition-for-characterization-tests.md
- skills/software-design-wiki/strangler-fig-pattern.md
- skills/software-design-wiki/strategic-vs-tactical-programming.md
- skills/software-design-wiki/strong-types-prevent-parameter-and-unit-confusion.md
- skills/software-design-wiki/stubbing-in-tests.md
- skills/software-design-wiki/style-guide-rule-process-and-enforcement.md
- skills/software-design-wiki/style-guides-as-design-conventions.md
- skills/software-design-wiki/subclass-and-override-method.md
- skills/software-design-wiki/substitute-algorithm.md
- skills/software-design-wiki/supersede-instance-variable.md
- skills/software-design-wiki/support-logging-vs-diagnostic-logging.md
- skills/software-design-wiki/targeted-testing.md
- skills/software-design-wiki/tdd-for-legacy-code.md
- skills/software-design-wiki/technical-debt-as-a-design-decision.md
- skills/software-design-wiki/techniques-for-obvious-code.md
- skills/software-design-wiki/telling-the-story-of-the-system.md
- skills/software-design-wiki/template-redefinition.md
- skills/software-design-wiki/temporal-coupling.md
- skills/software-design-wiki/temporal-decomposition.md
- skills/software-design-wiki/temporary-field.md
- skills/software-design-wiki/test-behaviors-not-methods.md
- skills/software-design-wiki/test-code-different-rules.md
- skills/software-design-wiki/test-code-location-tradeoffs.md
- skills/software-design-wiki/test-doubles-overview.md
- skills/software-design-wiki/test-driven-development-loop.md
- skills/software-design-wiki/test-naming-conventions.md
- skills/software-design-wiki/test-pyramid.md
- skills/software-design-wiki/test-size-vs-test-scope.md
- skills/software-design-wiki/test-spies-at-system-edges.md
- skills/software-design-wiki/test-value-vs-maintenance-cost.md
- skills/software-design-wiki/testability.md
- skills/software-design-wiki/testing-private-methods.md
- skills/software-design-wiki/tests-preserve-more-than-they-find-bugs.md
- skills/software-design-wiki/tests-should-assert-behavior-not-call-mechanics.md
- skills/software-design-wiki/text-redefinition.md
- skills/software-design-wiki/the-legacy-code-change-algorithm.md
- skills/software-design-wiki/the-legacy-code-dilemma.md
- skills/software-design-wiki/the-two-hats.md
- skills/software-design-wiki/thinness-after-deduplication-is-fine.md
- skills/software-design-wiki/three-strategies-for-reader-information.md
- skills/software-design-wiki/time-pressure-and-testing-payoff.md
- skills/software-design-wiki/too-many-exceptions.md
- skills/software-design-wiki/unit-of-work-pattern.md
- skills/software-design-wiki/unit-testing-fundamentals.md
- skills/software-design-wiki/unit-tests-enable-safe-refactoring.md
- skills/software-design-wiki/unknown-unknowns.md
- skills/software-design-wiki/verify-a-test-can-fail.md
- skills/software-design-wiki/virtualize-external-resources-for-testing.md
- skills/software-design-wiki/wrap-class.md
- skills/software-design-wiki/wrap-method.md
- skills/software-design-wiki/wrapping-sealed-third-party-classes.md
- skills/software-design-wiki/write-the-comments-first.md
- skills/software-design-wiki/yagni.md
Every link opens the file at its source, pinned to the revision this page describes.