copilot-instructions: Instructions file for GitHub Copilot

.github/instructions/domain-driven-design.instructions.md

copilot-instructions domain-driven-design.instructions.md is an instructions file for GitHub Copilot from duthaho/copilot-instructions. It costs 1,775 tokens per session, scanned A, original, MIT.

A set of Python design guidelines based on Domain-Driven Design, an approach that organizes code around the real business concepts and rules of an application.

In plain words
What is it for?
Use it when designing Python entities, value objects, and other parts of a domain model.
Why use it?
It gives business logic a clear home and separates objects with identity from simple values, making complex Python code easier to understand and change.

Instructions file for GitHub Copilot

Written for GitHub Copilot: a Copilot instructions file.

This is duthaho/copilot-instructions's own configuration. It tells GitHub Copilot how to work on copilot-instructions itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything copilot-instructions configures →

Reuse

Borrowing it

Nothing to install: this file belongs to duthaho/copilot-instructions. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/duthaho/copilot-instructions/main/.github/instructions/domain-driven-design.instructions.md
Clone the repo
git clone --depth 1 https://github.com/duthaho/copilot-instructions

Made for: GitHub Copilot.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for copilot-instructions domain-driven-design.instructions.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/duthaho/copilot-instructions/domain-driven-design/github.svg)](https://agentmods.dev/instructions/duthaho/copilot-instructions/domain-driven-design)
Your own site
<a href="https://agentmods.dev/instructions/duthaho/copilot-instructions/domain-driven-design"><img src="https://agentmods.dev/badge/instructions/duthaho/copilot-instructions/domain-driven-design/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for copilot-instructions domain-driven-design.instructions.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/duthaho/copilot-instructions/domain-driven-design"><img src="https://agentmods.dev/badge/instructions/duthaho/copilot-instructions/domain-driven-design.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 1,775 This file is loaded in full into every session.
When invoked 1,775 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.01775 $0.01775
Opus 5.5 $0.00710 $0.00710
Sonnet 5.5 $0.00355 $0.00355
Haiku 4.5 $0.00178 $0.00178

Measured 2mo ago against content hash 2c6d549e5a95, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

copilot-instructions domain-driven-design.instructions.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.github/instructions/domain-driven-design.instructions.md · 313 lines

How it starts

The opening of the file, as written. The whole thing — 313 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Domain-Driven Design Instructions

Overview

This instruction file enforces Domain-Driven Design (DDD) tactical patterns in Python projects.

Building Blocks

1. Entities

Objects with a distinct identity that persists over time.

from dataclasses import dataclass
from typing import List
from uuid import UUID, uuid4

@dataclass
class Customer:
    id: UUID
    email: str
    name: str
    _version: int = 0

    @classmethod
    def create(cls, email: str, name: str) -> 'Customer':
        """Factory method for entity creation"""
        return cls(id=uuid4(), email=email, name=name)

    def change_email(self, new_email: str) -> None:
        """Domain behavior"""
        if '@' not in new_email:
            raise ValueError("Invalid email format")
        self.email = new_email
        self._version += 1

2. Value Objects

Immutable objects defined by their attributes, not identity.

from dataclasses import dataclass
from typing import Self

@dataclass(frozen=True)
class Money:
    amount: float
    currency: str

    def __post_init__(self):
        if self.amount < 0:
            raise ValueError("Amount cannot be negative")
        if not self.currency:
            raise ValueError("Currency is required")

    def add(self, other: 'Money') -> 'Money':
        if self.currency != other.currency:
            raise ValueError("Cannot add different currencies")
        return Money(self.amount + other.amount, self.currency)

    def multiply(self, factor: float) -> 'Money':
        return Money(self.amount * factor, self.currency)

3. Aggregates

A cluster of entities and value objects with a root entity.

from dataclasses import dataclass, field
from typing import List
from datetime import datetime

@dataclass
class OrderItem:
    product_id: str
    quantity: int
    price: Money

@dataclass
class Order:
    """Aggregate Root"""
    id: UUID
    customer_id: UUID
    items: List[OrderItem] = field(default_factory=list)
    status: str = "PENDING"
    created_at: datetime = field(default_factory=datetime.utcnow)

    def add_item(self, product_id: str, quantity: int, price: Money) -> None:
        """Business invariant: can't modify confirmed orders"""
        if self.status != "PENDING":
            raise ValueError("Cannot modify confirmed order")

        # Check if item exists, update quantity
        for item in self.items:
            if item.product_id == product_id:
                item.quantity += quantity
                return

        self.items.append(OrderItem(product_id, quantity, price))

    def confirm(self) -> None:
        """State transition with validation"""
        if not self.items:
            raise ValueError("Cannot confirm empty order")
        if self.status != "PENDING":
            raise ValueError("Order already confirmed")
        self.status = "CONFIRMED"

    def calculate_total(self) -> Money:
        """Aggregate consistency"""
        if not self.items:
            return Money(0, "USD")

        total = self.items[0].price.multiply(self.items[0].quantity)
        for item in self.items[1:]:
            total = total.add(item.price.multiply(item.quantity))
        return total

Read the full file on GitHub · 313 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2mo ago First seen · 313 lines · 1,775 tokens per session scan A 2c6d549e5a95

Subscribe to this mod's changes

copilot-instructions domain-driven-design.instructions.md is an instructions file published in the GitHub repository duthaho/copilot-instructions (7 stars, last pushed 1y ago), licensed MIT. It adds 1,775 tokens to every session, about $0.0071 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

copilot-instructions domain-driven-design.instructions.md compared with instructions from other repositories

copilot-instructions domain-driven-design.instructions.md next to 6 instructions from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
copilot-instructions domain-driven-design.instructions.mdduthaho/copilot-instructionsInstructions file71y agoMITA1,775GitHub Copilot
graftcode graftcode-python.instructions.mdgrft-dev/graftcodeInstructions file9671mo agononeA4,639GitHub Copilot
vscode buildNext.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA9,719GitHub Copilot
next.js AGENTS.mdvercel/next.jsInstructions file143ktodayMITA7,461Codex, OpenCode
langchain AGENTS.mdlangchain-ai/langchainInstructions file149kyesterdayMITA4,680Codex, OpenCode
vscode oss-third-party-notices.instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA5,516GitHub Copilot
vscode copilot-instructions.mdmicrosoft/vscodeInstructions file195kyesterdayMITA3,093GitHub Copilot