swift-protocol-di-testing SKILL.md skillA

swift-protocol-di-testing from affaan-m/ecc is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.

Install it, pinned
mdr add affaan-m/ecc/swift-protocol-di-testing@git:20260607.4ad5756

Pins git:20260607.4ad5756 in mdr.lock. Pin the fingerprint instead.

Audit grade
A, 17 of 17 checks passed
Kind
SKILL.md skill
Repository
affaan-m/ecc
Path
.kiro/skills/swift-protocol-di-testing/SKILL.md
Versions recorded
1
Latest version
git:20260607.4ad5756, committed Jun 7, 2026
Size
6,077 bytes
Repository stars
299,696
License
MIT

Protocol-based dependency injection for testable Swift code — mock file system, network, and external APIs using focused protocols and Swift Testing.

Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.

What the file says

# Swift Protocol-Based Dependency Injection for Testing

Patterns for making Swift code testable by abstracting external dependencies (file system, network, iCloud) behind small, focused protocols. Enables deterministic tests without I/O.

## When to Activate

- Writing Swift code that accesses file system, network, or external APIs
- Need to test error handling paths without triggering real failures
- Building modules that work across environments (app, test, SwiftUI preview)
- Designing testable architecture with Swift concurrency (actors, Sendable)

## Core Pattern

### 1. Define Small, Focused Protocols

Each protocol handles exactly one external concern.

```swift
// File system access
public protocol FileSystemProviding: Sendable {
    func containerURL(for purpose: Purpose) -> URL?
}

// File read/write operations
public protocol FileAccessorProviding: Sendable {
    func read(from url: URL) throws -> Data
    func write(_ data: Data, to url: URL) throws
    func fileExists(at url: URL) -> Bool
}

// Bookmark storage (e.g., for sandboxed apps)
public protocol BookmarkStorageProviding: Sendable {
    func saveBookmark(_ data: Data, for key: String) throws
…

Read the whole file at its exact version.

How to install

The exact contents, by fingerprint
mdr add affaan-m/ecc/swift-protocol-di-testing@sha256:00e270fc22289737

The line at the top of this page pins the label git:20260607.4ad5756, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.

Badge

mdr badge

[![mdr](https://markdownregistry.com/badge/art_ex4k6t2mgktnzggq.svg)](https://markdownregistry.com/a/art_ex4k6t2mgktnzggq)

3 badge image fetches in 30 days. What the badge shows.

Versions

The registry has recorded 1 version of this file, committed on Jun 7, 2026.

versioncommittedcommitsizeaudit
git:20260607.4ad5756 latest2026-06-07 4ad5756 6,077 BA view

Audit of the latest version

A  17 of 17 checks passed. Fixed automatic checks with no AI involved, so the same checks give the same answer every run.
  • pass: Frontmatter block present
  • pass: Frontmatter declares a name
  • pass: Frontmatter declares a description
  • pass: Size between 200 bytes and 200 KB (6077 bytes)
  • pass: No zero-width or bidi control characters
  • pass: No instruction hidden inside an HTML comment
  • pass: No link to an exfiltration or paste host
  • pass: No credential-shaped string
  • pass: No instruction to send local credentials anywhere
  • pass: No text hidden with inline styles
  • pass: No prompt-injection phrasing
  • pass: No curl or wget piped into a shell
  • pass: No recursive delete of root, home or parent
  • pass: No instruction to read or print local credentials
  • pass: No base64 blob over 200 characters
  • pass: No link to a raw IP address
  • pass: No script tag

Source

GitHub

affaan-m/ecc · 299,696 stars · license MIT · pushed 2026-11-06 · branch main

API

GET https://markdownregistry.com/api/v1/artifacts/art_ex4k6t2mgktnzggq
GET https://markdownregistry.com/api/v1/resolve?ref=affaan-m/ecc/swift-protocol-di-testing
GET https://markdownregistry.com/api/v1/blob/00e270fc222897374cd09512536b22bea291b9ee921f9d610b2d020400332c04

Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.

Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.

More from affaan-m/ecc

agent-introspection-debugging SKILL.md skill
affaan-m/ecc · .agents/skills/agent-introspection-debugging/SKILL.md · Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and…
git:20260918.c752aac · audit A · 299,696 stars
agent-sort SKILL.md skill
affaan-m/ecc · .agents/skills/agent-sort/SKILL.md · Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras…
git:20260918.c752aac · audit A · 299,696 stars
api-design SKILL.md skill
affaan-m/ecc · .agents/skills/api-design/SKILL.md · REST API design patterns including resource naming, status codes, pagination, filtering, error responses, versioning…
git:20260918.c752aac · audit A · 299,696 stars
article-writing SKILL.md skill
affaan-m/ecc · .agents/skills/article-writing/SKILL.md · Write articles, guides, blog posts, tutorials, newsletter issues, and other long-form content in a distinctive voice…
git:20260918.c752aac · audit A · 299,696 stars
backend-patterns SKILL.md skill
affaan-m/ecc · .agents/skills/backend-patterns/SKILL.md · Backend architecture patterns, API design, database optimization, and server-side best practices for Node.js, Express…
git:20260918.c752aac · audit A · 299,696 stars
benchmark-methodology SKILL.md skill
affaan-m/ecc · .agents/skills/benchmark-methodology/SKILL.md · Use after competitive-platform-analysis has produced a tiered competitor set. Scores each competitor across nine…
git:20260918.c752aac · audit A · 299,696 stars
brand-discovery SKILL.md skill
affaan-m/ecc · .agents/skills/brand-discovery/SKILL.md · Use when a brand needs to discover or articulate its identity through structured multi-session interviews. Covers…
git:20260918.c752aac · audit A · 299,696 stars
brand-voice SKILL.md skill
affaan-m/ecc · .agents/skills/brand-voice/SKILL.md · Build a source-derived writing style profile from real posts, essays, launch notes, docs, or site copy, then reuse that…
git:20260918.c752aac · audit A · 299,696 stars
bun-runtime SKILL.md skill
affaan-m/ecc · .agents/skills/bun-runtime/SKILL.md · Bun as runtime, package manager, bundler, and test runner. When to choose Bun vs Node, migration notes, and Vercel…
git:20260928.48decd0 · audit B · 299,696 stars
change-impact SKILL.md skill
affaan-m/ecc · .agents/skills/change-impact/SKILL.md · Perform evidence-backed impact analysis before changing code, data, interfaces, or governance documents, then compare…
git:20261002.4f08958 · audit A · 299,696 stars
coding-standards SKILL.md skill
affaan-m/ecc · .agents/skills/coding-standards/SKILL.md · Baseline cross-project coding conventions for naming, readability, immutability, and code-quality review. Use detailed…
git:20260918.c752aac · audit A · 299,696 stars
competitive-platform-analysis SKILL.md skill
affaan-m/ecc · .agents/skills/competitive-platform-analysis/SKILL.md · Use when scoping a competitive landscape — identifying, categorising, and score-filtering a competitor set before any…
git:20260918.c752aac · audit A · 299,696 stars

Every file in affaan-m/ecc

Browse by kind, by grade A, or by owner.