TDD
pietheinstrengholt/rssmonster
Test-driven development. An agent skill from pietheinstrengholt/rssmonster.
Mock-first, layer-by-layer feature development. An agent skill from deepklarity/harness-kit.
$ npx skills add deepklarity/harness-kit --skill hk-mock-first -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install deepklarity/harness-kit hk-mock-first --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/deepklarity/harness-kit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/hk-mock-first .claude/skills/hk-mock-first && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "hk-mock-first" agent skill from https://github.com/deepklarity/harness-kit/tree/main/.claude/skills/hk-mock-first into .claude/skills/hk-mock-first/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hk-mock-first", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/deepklarity/harness-kit/tree/main/.claude/skills/hk-mock-firstType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add deepklarity/harness-kit --skill hk-mock-first -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install deepklarity/harness-kit hk-mock-first --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepklarity/harness-kit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/hk-mock-first .agents/skills/hk-mock-first && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hk-mock-first" agent skill from https://github.com/deepklarity/harness-kit/tree/main/.claude/skills/hk-mock-first into .agents/skills/hk-mock-first/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hk-mock-first", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add deepklarity/harness-kit --skill hk-mock-first -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install deepklarity/harness-kit hk-mock-first --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepklarity/harness-kit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/hk-mock-first .cursor/skills/hk-mock-first && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "hk-mock-first" agent skill from https://github.com/deepklarity/harness-kit/tree/main/.claude/skills/hk-mock-first into .cursor/skills/hk-mock-first/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hk-mock-first", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/deepklarity/harness-kit.git --path .claude/skills/hk-mock-first--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add deepklarity/harness-kit --skill hk-mock-first -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install deepklarity/harness-kit hk-mock-first --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepklarity/harness-kit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/hk-mock-first .gemini/skills/hk-mock-first && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "hk-mock-first" agent skill from https://github.com/deepklarity/harness-kit/tree/main/.claude/skills/hk-mock-first into .gemini/skills/hk-mock-first/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hk-mock-first", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install deepklarity/harness-kit hk-mock-firstInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add deepklarity/harness-kit --skill hk-mock-first -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/deepklarity/harness-kit.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/hk-mock-first .github/skills/hk-mock-first && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "hk-mock-first" agent skill from https://github.com/deepklarity/harness-kit/tree/main/.claude/skills/hk-mock-first into .github/skills/hk-mock-first/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hk-mock-first", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add deepklarity/harness-kit --skill hk-mock-first -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install deepklarity/harness-kit hk-mock-first --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/deepklarity/harness-kit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/hk-mock-first .opencode/skills/hk-mock-first && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "hk-mock-first" agent skill from https://github.com/deepklarity/harness-kit/tree/main/.claude/skills/hk-mock-first into .opencode/skills/hk-mock-first/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hk-mock-first", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
hk-mock-firstMock-first, layer-by-layer feature development. An agent skill from deepklarity/harness-kit.
Hk Mock First is an agent skill from deepklarity/harness-kit. Mock-first, layer-by-layer feature development. Instead of building a feature end-to-end and hoping the interface works, start by mocking at the user-facing surface with realistic data, get user acceptance on the experience, then deepen one complexity layer at a time with TDD. Everything is anchored on disk so work survives across sessions. Use whenever building a new feature, adding significant UI, planning a multi-layer change, or when the user mentions 'mock first', 'let me see it first', 'prototype this'…
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/layer-deepening.md`).
It sits in Testing & QA, covering Test-driven development. The repository describes itself as: A kit for building with AI agents and also the engineering patterns around it. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 87305cd. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadEditWriteTaskGrepGlobFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hk Mock First loads about 3.9k tokens when it runs, and up to ~5.4k if it reads all its reference files. Until then it costs about 150 tokens; SKILL.md has 1,457 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Edit, Write, Task, Grep, GlobAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from deepklarity/harness-kit at commit 87305cd, republished under its MIT licence (© deepklarity). 1,457 words, ~3,852 tokens.
.claude/skills/hk-mock-first/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The traditional approach — build the plumbing, wire the API, then hope the UI works — inverts the feedback loop. You discover experience problems after committing to implementation choices. This skill inverts the flow: validate the experience first with realistic mocks, then progressively replace mocks with real code, one complexity layer at a time.
Why this matters: A feature that "works" but feels wrong is more expensive to fix than one that was never built. Mock-first means the human curates the experience before any plumbing exists. This directly serves the philosophy tenet of Taste as a Filter — the system produces options, the human filters. And Good Enough — you don't over-engineer layers that haven't been validated yet.
<feature_context> $ARGUMENTS </feature_context>
If the context above is empty or unclear, ask the user:
docs/mock-first/<feature-slug>/)Everything lives on disk. The workspace is the product, not temp files — it's the organized record of what was mocked, what was accepted, and what's been deepened. It also serves as the resumption anchor: if the conversation compacts or a new session starts, the workspace contains everything needed to continue.
docs/mock-first/<feature-slug>/
├── tracker.md # Live state (the resumption anchor)
├── surface/
│ ├── interface-map.md # All user-facing interfaces this feature touches
│ ├── mock-data/ # Actual mock data files (JSON, fixtures, factories)
│ ├── mock-components/ # Mock UI components, stubs, or test pages (if applicable)
│ ├── states.md # All UI/interface states catalogued
│ └── acceptance.md # User's acceptance notes + screenshots
├── layer-1/
│ ├── boundary.md # What this layer is, where the complexity boundary sits
│ ├── test-plan.md # TDD: tests to write before implementation
│ ├── changes.md # What changed (files, diffs)
│ └── verification.md # Tests pass + interface still works
├── layer-2/
│ └── ...
└── summary.md # Written when feature ships (or when pausing long-term)This file is the single source of truth. Read it at the start of every session or phase transition.
# Mock-First: [feature name]
## Feature
What we're building: [one line]
Interfaces affected: [list of UI pages, components, CLI commands]
Workspace: [path to this directory]
## Current State
Phase: [exploring | mocking | accepting | deepening-layer-N | shipped]
Current layer: [surface | layer-N]
Mock data quality: [shallow | realistic | production-grade]
## Layer Progression
- surface: [status] — [what was mocked, acceptance verdict]
- layer-1: [status] — [what was deepened, test results]
- layer-2: [status] — [...]
## Decisions Log
- [Date]: [Decision and rationale — things the user accepted, rejected, or modified]
## What We've Learned
- [Accumulated insights — edge cases discovered, states that were missing, etc.]
## Next
[What to do next, or "SHIPPED: [date]"]Before writing any mock, understand the full scope of what the user will see and touch.
Step 1: Map the interaction surface.
Spawn a haiku explorer to identify all user-facing interfaces this feature affects. Not plumbing (services, utilities, middleware) — the points where a human's eyes and hands meet the system.
Task(model: haiku, subagent_type: Explore)
Explore the codebase to map all user-facing interfaces that would be affected by: [feature description]
For each interface found, note:
1. File path and component/page name
2. What the user currently sees/does there
3. What would change with the new feature
4. Data dependencies — what data does this interface need?
Focus only on interfaces the user directly interacts with (UI components, pages, CLI output, API responses that drive UI). Skip internal services, utilities, middleware.Step 2: Catalogue the states.
Every interface has more states than "happy path." Before mocking, enumerate them. Write to surface/states.md:
# Interface States for [Feature]
## [Interface/Component 1]
- **Happy path**: [description]
- **Empty state**: [no data yet — what does the user see?]
- **Loading state**: [data is being fetched]
- **Error state**: [API failed, validation failed, permission denied]
- **Edge cases**: [long text, many items, zero items, special characters]
- **Partial state**: [some data loaded, some pending]
- **Transition states**: [between actions — optimistic updates, confirmation dialogs]
## [Interface/Component 2]
- ...This catalogue is critical — it prevents the classic mock-first pitfall of building a beautiful happy path and discovering the edge cases only during real implementation.
Step 3: Write the interface map.
Write surface/interface-map.md summarizing what was found. This becomes the feature's north star — everything built should trace back to something on this map.
Step 4: Initialize tracker.md with Phase set to mocking.
Build the feature's user-facing experience using only mock data. The goal is: the user can see, click, and evaluate the full feature without any backend/service/persistence changes.
Principles for good mocks:
Realistic, not shallow. Mock data should include edge cases: long names, missing optional fields, various status combinations, timestamps at interesting boundaries. If your mock data is { name: "Test User", email: "test@test.com" }, it's too shallow. Use data that exercises the states catalogue from Phase 0.
Complex enough to surface problems. If the feature involves a list, mock 50 items, not 3. If it involves a form, mock validation errors. If it involves a workflow, mock every transition.
Isolated at a clean boundary. The mock boundary should be where data enters the interface — typically at the API call layer, the state management layer, or a data provider. This lets you swap mocks for real data later without touching the interface code.
Self-contained. Another developer (or a future session) should be able to run the mocked version without setting up the full backend. Document how to run the mocked version in surface/acceptance.md.
How to build the mocks:
For frontend features:
surface/mock-data/ (JSON, TypeScript fixtures, factory functions)For CLI features:
surface/mock-data/For API-driven features:
After building mocks, write the mock data to disk in surface/mock-data/. This is reference material for later — when deepening, you'll compare real data against these mocks to ensure nothing was lost.
This is the Taste as a Filter moment. The user evaluates the mocked experience and decides if it's right before any real implementation starts.
Present the mocked feature to the user. Ask them to evaluate:
Capture their feedback in surface/acceptance.md:
# Acceptance: [Feature Name]
## Date: [YYYY-MM-DD]
## Verdict: [ACCEPTED / ACCEPTED WITH CHANGES / REJECTED]
## What works
- [Specific things the user approved]
## What needs to change
- [Specific changes requested, with priority]
## Missing states/scenarios discovered
- [Things not in the original states catalogue]
## How to run the mocked version
[Exact commands or steps to see the mocked feature]If changes are needed, iterate on the mocks before proceeding. This is cheap — you're only changing mock data and interface code, not unwinding real implementation.
Only proceed to Phase 3 after acceptance. This gate is the whole point. Deepening a feature the user hasn't validated wastes real implementation effort.
Now the real implementation begins, but controlled. Each layer:
What is a "layer"?
Not a function call depth. A layer is a legitimate complexity boundary — a place where the nature of the work changes, where new categories of problems can emerge, where different expertise or thinking is required.
Read references/layer-deepening.md for detailed examples, but the general pattern:
| Layer | What you're replacing | New complexity introduced |
|---|---|---|
| Surface | Nothing — mocks only | UX, layout, interaction design |
| Layer 1 | Mock data → real state management | State transitions, optimistic updates, caching |
| Layer 2 | Mock API → real API calls | Network errors, auth, pagination, rate limits |
| Layer 3 | Mock service → real business logic | Validation rules, edge cases, domain invariants |
| Layer 4 | Mock persistence → real DB | Migrations, queries, transactions, data integrity |
| Layer 5 | Mock externals → real external services | Timeouts, retries, API changes, cost |
Not every feature has 5 layers. Some have 2. The point is to identify where the complexity changes character, not to artificially create layers.
For each layer:
Step 1: Document the boundary — Write layer-N/boundary.md:
# Layer N: [Name]
## What's being replaced
[Which mocks are being swapped for real code]
## New complexity this introduces
[What categories of problems can now occur that couldn't before]
## Files affected
[List of files that will change]
## Risk assessment
[What could break, what's the blast radius]Step 2: Write failing tests (TDD) — Write layer-N/test-plan.md first, then write the actual test files:
# Test Plan: Layer N
## Tests to write
- [ ] [Test 1: description — what it proves]
- [ ] [Test 2: description — what it proves]
- [ ] [Edge case test: description]
- [ ] [Error case test: description]
## What these tests replace
[Which mock behaviors are now being tested for real]Run the tests. They must fail. A test that passes before implementation is suspicious — either the mock boundary was wrong or the test isn't testing what you think.
Step 3: Implement — Replace mocks with real code at this layer only. Don't reach ahead into deeper layers.
Step 4: Verify — Write layer-N/verification.md:
# Verification: Layer N
## Tests
- [x] All new tests pass
- [x] All existing tests still pass
- [ ] No regressions in previously accepted interface behavior
## Interface check
[Does the user-facing experience still match what was accepted in Phase 2?]
[If anything changed, note it here — even if it's "better"]
## Mock boundary moved to
[Where are mocks now? What's the new mock boundary for the next layer?]Step 5: Update tracker.md — Record the layer completion, update current state.
Step 6: Mini-acceptance — If this layer changed anything the user can see (even subtly — like real data replacing mock data), show the user and confirm it still meets acceptance.
Repeat for each layer until the feature is fully implemented.
When all layers are deepened and the feature works end-to-end with real code:
summary.md:# Summary: [Feature Name]
## Result
Started: [date]
Shipped: [date]
Layers deepened: [N]
Total iterations on mocks: [count]
## Architecture decisions
- [Key decisions made during deepening, with rationale]
## What the mocks caught early
- [Problems discovered during mock phase that would have been expensive to find later]
## Layer progression
- Surface: [what was mocked, key insights]
- Layer 1: [what was deepened, surprises]
- ...
## If revisiting later
[Context needed to understand why things are built this way]shipped/hk-compound to capture any reusable learningsSame discipline as hk-refine — the workspace is the memory, not the conversation:
Never paste full mock data or test files into the conversation. They live on disk. Subagents read them from disk.
The user sees summaries, not data. After each phase, report in 3-5 lines: what happened, what was found, what's next. They can dig into the workspace for details.
tracker.md is the resumption point. New session? Read tracker.md first. It tells you exactly where you are and what to do next.
One layer at a time. Resist the urge to deepen two layers simultaneously. If you change two boundaries at once and something breaks, you don't know which layer caused it. This directly follows the CLAUDE.md principle: "Change one thing at a time."
Mock data is a first-class artifact. Don't delete mock data after deepening — it serves as documentation of the intended behavior and as test fixtures. Move it to surface/mock-data/ if it doesn't already live there.
The skill is for features where the experience needs validation before the implementation begins. If you already know exactly what the user should see, you don't need to mock it first.
© deepklarity, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in .claude/skills/hk-mock-first of deepklarity/harness-kit.
Open the folder on GitHubat commit 87305cd
Hk Mock First next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Hk Mock First this skilldeepklarity/harness-kit | 100 | — | ~3.9k | Automated safety check: Notes | MIT | |
| TDDpietheinstrengholt/rssmonster | 564 | 30 repos | ~906 | Automated safety check: Pass | MIT | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| TDDsanity-io/sanity | 6.4k | 20 repos | ~1k | Automated safety check: Pass | MIT | |
| Test Driven Developmentfarm-fe/farm | 5.6k | 52 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Tapd Story PipelineTencentBlueKing/bk-bcs | 840 | — | ~2.6k | Automated safety check: Pass | Custom licence |
pietheinstrengholt/rssmonster
Test-driven development. An agent skill from pietheinstrengholt/rssmonster.
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
sanity-io/sanity
Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.
farm-fe/farm
A skill your agent uses when implementing any feature or bugfix, before writing implementation code
TencentBlueKing/bk-bcs
单需求实现流水线——把一个 TAPD 需求从零推进到代码提交。自动串联技术澄清、 开发计划、任务拆分、TDD 实现、架构/安全校验、代码提交六个阶段。
maddhruv/absolute
One-time setup for absolute: interview how you want it to behave (output style, autonomy, TDD strictness, spec dir, families) + detect the stack once, then write .absolute.config.json (project…
deepklarity/harness-kit
Create new skills, modify and improve existing skills, and measure skill performance.
deepklarity/harness-kit
Run comprehensive agent-native architecture review with scored principles.
deepklarity/harness-kit
Audit whether an AI agent can autonomously close the loop on problems in a given area — from discovering a symptom to verifying a fix — without human intervention.
deepklarity/harness-kit
Traces a workflow end-to-end through the harness-kit monorepo and creates a breadcrumb analysis doc in docs/breadcrumbanalysis/.
deepklarity/harness-kit
Generate changelog entries from git diffs, prepend to CHANGELOG.md, and optionally commit + PR.
deepklarity/harness-kit
Compound a learning into a reusable pattern. An agent skill from deepklarity/harness-kit.
Categories
Mock-first, layer-by-layer feature development. An agent skill from deepklarity/harness-kit. Hk Mock First is an agent skill from deepklarity/harness-kit. Mock-first, layer-by-layer feature development.
Hk Mock First fits situations like: building a new feature; adding significant UI; planning a multi-layer change; the user mentions mock first.
Run `npx skills add deepklarity/harness-kit --skill hk-mock-first -a claude-code`. Or copy the skill folder (.claude/skills/hk-mock-first in deepklarity/harness-kit) into .claude/skills/hk-mock-first in your project. Claude Code loads it when a task matches its description.
Run `npx skills add deepklarity/harness-kit --skill hk-mock-first -a codex`. Or copy the skill folder (.claude/skills/hk-mock-first in deepklarity/harness-kit) into .agents/skills/hk-mock-first in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add deepklarity/harness-kit --skill hk-mock-first -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hk-mock-first, .gemini/skills/hk-mock-first, .github/skills/hk-mock-first and .opencode/skills/hk-mock-first in your project.
SKILL.md names no scripts, command-line tools or credentials: Hk Mock First is instructions for the agent only. Its frontmatter pre-approves these tools: Bash, Read, Edit, Write, Task, Grep, Glob.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Hk Mock First is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Hk Mock First: TDD (pietheinstrengholt/rssmonster, 564 stars), TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars), TDD (sanity-io/sanity, 6.4k stars) and Test Driven Development (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
deepklarity (a GitHub organization) maintains it in deepklarity/harness-kit, which has 100 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on July 15, 2026.
Source: deepklarity/harness-kit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.