Agent skill

Implement Plan (Canon TDD)

by adamayoung in adamayoung/TMDb

Drives an approved plan to completion test-first, deriving a Canon TDD test list, showing it before any code and stopping only when every item is written, passing and green.

Apache-2.0Auto-check passedTesting & QA

Install Implement Plan (Canon TDD)

skills CLI
$ npx skills add adamayoung/TMDb --skill implement-plan -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install adamayoung/TMDb implement-plan --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/adamayoung/TMDb.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/implement-plan .claude/skills/implement-plan && rm -rf skills-src

Use ~/.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/

Facts

Skill name
implement-plan
GitHub stars
178
Token cost
~4.5k tokens
SKILL.md length
2,504 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
Apache-2.0

At a glance

Drives an approved plan to completion test-first, deriving a Canon TDD test list, showing it before any code and stopping only when every item is written, passing and green.

  • Works in 4 steps: Consult the knowledge base → Derive and show the test list → Set the finishing goal → …
  • Implementing an already-approved plan strictly test-first
  • SKILL.md covers Agent Behaviour Contract, Locate the plan, Step 0 — Consult the knowledge… and Step 1 — Derive and show the…, plus 8 more sections
  • Calls make

What it does

This skill wraps three things together: the current plan, which defines what to build, the separate canon-tdd skill, which defines how to build it, and a single finishing condition, an empty test list, which defines when to stop. It does not invent its own TDD rules; canon-tdd enforces no production code before a failing test, one test at a time and refactoring only on green, while this skill adds plan-awareness and the stopping goal on top.

The agent must print the Canon TDD test list as a checklist before the first edit and reprint it every time an item is added, removed, reworded or checked off. Done means every item has a written, passing test and the full suite is green; the only exemptions are a doc comment, a DocC catalog entry and a README update, which count as done once the docs build passes and the README is in sync rather than through a test. Specialist skills such as swift-testing-expert and swift-concurrency are used instead of hand-rolled knowledge, and every public declaration added or changed must carry an accurate doc comment kept in sync with the DocC catalog.

When your agent uses it

  • Implementing an already-approved plan strictly test-first
  • Driving a Swift feature to completion with Canon TDD discipline
  • Keeping a visible, evolving test list while building out a plan

Example prompts

  • “Implement the current plan test-first and show me the test list before you start.”
  • “Build the approved caching layer plan using Canon TDD until the test list is empty.”
  • “Continue implementing the plan and keep the checklist updated as you go.”

Requirements

  • The canon-tdd skill
  • An approved plan to implement
  • make build-docs for verifying documentation items

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Consult the knowledge base
  2. Derive and show the test list
  3. Set the finishing goal
  4. The TDD loop (one test at a time)

What it can do on your machine

Read from SKILL.md and the folder at commit a3f1311. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Implement Plan (Canon TDD) loads about 4.5k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 2,504 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~4.5k

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.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated 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.

SKILL.md

The full file from adamayoung/TMDb at commit a3f1311, republished under its Apache-2.0 licence (© adamayoung). 2,504 words, ~4,500 tokens.

Download SKILL.mdSave it as .claude/skills/implement-plan/SKILL.md (or your agent's skills folder).
name
implement-plan
description
Implement the current plan test-first, the Canon TDD way, driving to a single finishing condition — an empty test list. Derives a Canon TDD test list from the plan, shows it before any code, writes one failing test at a time, and keeps the list visible as it evolves. Use when the user asks to implement, build, or execute the current/approved plan.

Implement Plan

Turn the current plan into working, tested code — strictly test-first. This skill is the wrapper that ties three things together: the plan (what to build), the canon-tdd skill (how to build it), and a single finishing condition — the test list is empty (when to stop). It does not invent its own TDD rules; it delegates the discipline to canon-tdd and adds plan-awareness, the finishing goal, and the project's specialist skills.

Red-Green-Refactor is the engine. The test list is the steering wheel. This skill keeps the wheel on screen and drives until the list is empty.

Agent Behaviour Contract

These are non-negotiable. Do them by default, without being reminded.

  1. Canon TDD is mandatory — invoke the canon-tdd skill. No production code before a failing test. One test at a time. Refactor only on green. This skill exists to enforce that loop against the plan; do not freelance an implementation-first approach.
  2. Show the test list before any code — and every time it changes. Print the Canon TDD test list as a checklist before the first edit, and re-print it whenever you add, remove, reword, or check off an item (see Keep the test list visible).
  3. The finishing condition is an empty test list. "Done" means every item on the list has a written, passing test and the full suite is green — nothing less. Pair this with the /goal command for autonomous cross-turn iteration (see Set the finishing goal). Exactly three kinds of item are exempt, because canon-tdd puts them on the list and no test can assert them: the /// doc comment, the DocC catalog entry, and the README.md update. They are done when make build-docs passes and the README is in sync — not when a test covers them. Nothing else is exempt; don't reclassify a behavioural item into this set.
  4. Reach for the right specialist skill. Use swift-testing-expert when writing/structuring tests and swift-concurrency for anything touching tasks, actors, @MainActor, Sendable, or data races — don't hand-roll what those skills know.
  5. Document every public declaration — no exceptions. Documenting it is part of "make it pass". Every public protocol, class, struct, enum, actor, model, property, initializer, method, subscript, and typealias you add or change MUST carry an accurate /// doc comment, and the DocC catalog must stay in sync (see Document every public declaration). This is mandatory, not optional — make build-docs runs warnings-as-errors, so an undocumented public symbol is a build failure.
  6. Expect Swift files to change after you write them. A PostToolUse hook runs swiftlint --fix + swiftformat on every .swift file you Edit/Write, so the on-disk content can differ from what you wrote (see The lint/format hook).
  7. Commit at logical checkpoints — always green. Like a human engineer, commit when a cohesive increment is complete and the code is in a good state, and never commit a red or half-finished tree (see Commit at logical points). This keeps the work committed as you go, so a downstream review sees real history rather than an empty diff.
  8. Finish with the completion checklist. Before declaring done, run /test and /integration-test — both REQUIRED to pass per CLAUDE.md — plus /lint, and make build-docs whenever public API changed.

Locate the plan

Use the first that applies, then restate the plan's goal in a sentence so the test list is anchored to it:

  1. An explicit target the user named — a plan/design file path, or plan text passed as the skill argument.
  2. The active plan-mode plan — the most recent plan you presented via ExitPlanMode.
  3. A plan in the conversation — the most recent structured plan / task breakdown (including a TodoWrite list framed as the plan).

If there is no plan, stop and say so — offer to draft one first (e.g. via the Plan agent or plan mode), and to /review-plan it before implementing. Never fabricate a plan in order to implement it.

Step 0 — Consult the knowledge base

Before deriving the list, skim the entry headings of knowledge/gotchas.md and knowledge/tmdb-api-notes.md, read the entries (and any knowledge/decisions/ ADR) relevant to what you are about to build, and say in one line what you consulted — consulted: <entries | none relevant>. Captured knowledge only compounds if it is read before the code, and half these entries exist precisely to stop a test list being written with a known trap missing from it.

/deliver does this at its Phase 0, so a run reaching here through the pipeline has it already; this step is what makes a standalone /implement-plan equivalent rather than a knowledge-blind shortcut.

Step 1 — Derive and show the test list

Invoke the canon-tdd skill and follow its five steps. Start by translating the plan into a test list: enumerate every behaviour, edge case, and error path the plan implies — as a plain checklist, not code. For this package that means thinking about: each new/changed public method, Codable decode paths (every optional/appended branch — one fixture item per branch), empty/degenerate inputs at public boundaries, Sendable/concurrency expectations, and Linux portability.

Print the list before writing any code, e.g.:

text
Test list — <plan goal>
- [ ] decodes <X> with all appended fields present
- [ ] decodes <X> with appended fields absent → optionals are nil
- [ ] <service>.<method>() builds the expected request URL + query items
- [ ] <method>() throws on empty/degenerate input
- [ ] integration: <method>() returns live data

It is a living list — you will add cases as implementation reveals them. Confirm it with the user (or state it explicitly) before proceeding.

Enumerate by symbol, not by text — use the LSP. When the list needs "every site that does X" (every caller of a helper, every conformer to a protocol, every construction of a request type), ask the compiler, not grep. Load the tool once with ToolSearch("select:LSP"), then use findReferences / incomingCalls for call sites, goToImplementation for conformers, and hover for a symbol's real type behind any, a generic, or a typealias. Expect a cold start — the first call can fail with server is starting; retry once. Positions are 1-based and the character must land on the symbol.

A text pattern silently under-reports, and that is not hypothetical: ADR-0008 prescribed grep 'path = "/…\(stringVar)"' to find every path interpolation. It missed three builders whose let path = sat on its own line — four sites recorded, eight actual, and the three it missed carried a bearer-like credential for two months (issue #421). findReferences on the request initialiser would have listed all eight. Keep grep for exact strings, JSON fixtures, Markdown, and non-Swift files, where it is the better tool.

Mirror the family — probe the nearest siblings first. When an item adds a sibling to an existing family (another service method, another model, another addRating-style guarded method, another @Suite test), read the 1–2 closest existing siblings before writing the test, and capture the conventions they share as explicit test-list items: input validation (does the sibling guard empty/degenerate input?), the error case it throws (.badRequest vs a dedicated TMDbError case), the model conformance set and decode strategy (synthesised vs custom init(from:)), and the test-suite tag/structure. New code should match its family's pattern by default; a deliberate divergence is fine, but it should be a choice, not an accident. This is the prevent-half of the convention-conformance check .github/CODE_REVIEW.md enforces at review time.

Step 2 — Set the finishing goal

The completion condition for this whole effort is: the test list is empty — every item has a written, passing test, and make test + make integration-test are green, with no unrelated files modified.

For autonomous, cross-turn iteration toward that condition, use Claude Code's /goal command. You cannot set /goal yourself — it is user-initiated — so offer the user the exact command to run, then proceed with the TDD loop either way:

text
/goal every item on the Canon TDD test list has a written, passing test and
`make test` and `make integration-test` both pass — without modifying files
unrelated to this plan; or stop after 25 turns

If the user sets it, Claude keeps taking turns until a fast model confirms the condition. If they don't, drive the same loop yourself across the turn until the list is empty. Either way the destination is identical: zero unchecked items.

Step 3 — The TDD loop (one test at a time)

Per canon-tdd, repeat until the list is empty:

  1. Pick the next item and write exactly one test (use swift-testing-expert for structure — @Test/#expect/#require, parameterisation, tags). Run it; watch it fail for the right reason.
  2. Make it pass with the simplest production change that works — resist solving items still on the list. Any public symbol you introduce here is documented in the same step (see Document every public declaration) — a public declaration without a /// comment is not "passing".
  3. Refactor only on green, keeping every test passing and every public symbol documented.
  4. Update the list — check off the item, and add any new cases the work revealed — then re-print the list.
  5. Commit when you reach a logical checkpoint — when the increment is cohesive and green (see Commit at logical points). Not every micro-cycle; at meaningful milestones.

Add JSON fixtures under Tests/TMDbTests/Resources/json/ as decode tests demand, and a paired integration test under Tests/TMDbIntegrationTests/ for new public behaviour. Use the TMDb MCP server (mcp__tmdb__*) to source real responses for fixtures rather than guessing structure.

Show full SKILL.md (1,066 more words)Show less

Commit at logical points

Build the change as a human engineer would — a sequence of small, working commits, each a coherent step — not one giant uncommitted blob at the end.

When to commit — at a logical checkpoint, when a cohesive increment is complete: a model + its decode tests; a service method + its unit (and integration) tests; a finished refactor; the fixtures + docs for a unit. Group a few related test-list items into one commit rather than committing every single red→green micro-cycle. A good commit tells a story ("✨ Add TVSeason watch providers endpoint", "✅ Cover decode branches for …", "♻️ Extract …").

Good state before every commit — never commit red:

  • The suite is green — run /test (and /integration-test if the increment touches live-API behaviour) and confirm it passes.
  • Lint is clean — /lint (the format hook handles most of it on write).
  • No half-finished or dead code — no commented-out experiments, no stubbed function you haven't returned to, no debug prints. The tree compiles and every public symbol you added is documented.

If an increment isn't green yet, finish it (or stash the unfinished part) before committing — a commit is a working state. Use a gitmoji-prefixed message (the convention lives in the /pr skill). Committing as you go means that by the time the test list is empty, the work is fully committed — ready for review and PR with a clean history.

Document every public declaration

Every public symbol you add or change MUST have an accurate /// documentation comment — this is a hard requirement (CLAUDE.md), and make build-docs runs warnings-as-errors, so a missing one breaks the build. Document as you write it, in the same green step — never as a clean-up pass at the end.

This covers all public declarations, no exceptions:

  • Types — protocol, class, struct, enum, actor, typealias, and every model.
  • Members — stored and computed properties, initializers, methods, subscripts, enum cases where meaning isn't obvious, and associated values.
  • Custom Codable — init(from:) and encode(to:) in a public extension need /// comments too (a common miss).

Quality, not just presence:

  • Use correct DocC syntax — - Parameter name: (singular) for one parameter, - Parameters: (plural) for several; - Returns:; - Throws:.
  • Write complete, specific descriptions — never placeholders (/// ?, Array of...). Watch for copy-paste errors (e.g. "movie" left in a Person doc, or Movie.ID where Person.ID is meant).
  • Keep the DocC catalog in sync when public API changes: the service extension file (TMDb.docc/Extensions/<Service>Service.md), the catalog (TMDb.docc/TMDb.md) for new return types, TMDbClient.md for new properties, and the README.md service table — per the consistency checklist in the document-swift skill (its Verify before finishing section).

Apply the document-swift skill — the project's single source of DocC conventions — inline as you write each public symbol. For a bulk pass (a whole new service, or sweeping many undocumented symbols at once), delegate to the documentation-writer agent, which follows the same skill in an isolated context. Add a "document public API" item to the test list when a behaviour introduces public surface, so it can't be silently skipped.

Keep the test list visible

The list is the user's window into progress. Re-print the full checklist (done + remaining) whenever it changes — after checking off an item, after discovering and adding a new case, after rewording or removing one. Each re-print should make clear what just changed (e.g. "✓ added", "✓ done", "✗ removed — superseded by …"). Never let code changes outpace a stale on-screen list.

Use the right specialist skills

  • swift-testing-expert — when writing or restructuring tests: macro usage, #require over force-unwrap, traits/tags, parameterised tests, async waiting.
  • swift-concurrency — when the plan touches tasks, actors, @MainActor, Sendable, async/await conversion, or any data-race / Swift 6 strict-concurrency diagnostic.
  • document-swift skill — the DocC conventions to apply inline for every public declaration; documentation-writer agent for bulk doc sweeps (see Document every public declaration).
  • /test, /integration-test, /build, /lint, /format — delegate builds and test runs to these (they fan out to a Haiku subagent and keep this context lean); don't call make directly for them.

Invoke a specialist skill the moment its domain appears — not after you've already hand-written something it would have done better.

The lint/format hook (files change after you write them)

A PostToolUse hook matches Edit|Write and, for any .swift file, runs swiftlint --fix then swiftformat on it. Consequences to plan around:

  • The file on disk may differ from what you wrote — imports reordered, whitespace/indentation normalised, trailing commas adjusted, self. removed, etc. This is expected and correct; do not fight it or revert it.
  • Re-Read a .swift file before your next Edit to it if that edit depends on exact surrounding text — a stale old_string (pre-format) can fail to match.
  • Don't attribute hook reformatting to your own diff. When reviewing changes, separate "what I changed" from "what the formatter normalised".
  • It only autofixes the single edited file, not the whole tree, and it cannot fix real compile errors — so still run /lint and /test before finishing.

Done — when the test list is empty

When every item is checked off:

  1. Run /test and /integration-test — both must pass (CLAUDE.md requires it). Then run make build-release: debug-green and release-red diverge exactly on access-level and @testable mistakes, and in #398 both full suites and --build-tests were green while the release build was broken.

  2. Run /lint (and /format if needed); run make build-docs and /lint-markdown only if public API or docs changed.

  3. Changed a literal string, symbol name or code sample? Grep for its siblings before calling it done. Fixing the one occurrence in front of you and leaving its twins is this repo's commonest half-fix, and **/*.docc/** and README.md are the habitual blind spot: no gate compiles a code sample — make build-docs compiles the DocC catalog, not the Swift inside a fence. Grep the whole tree for the old text, not the new:

    bash
    grep -rn '<the old spelling>' README.md Sources/ Tests/ knowledge/

    This applies to an incidental one-line fix, which is the gap: a task framed as "fix every instance of X" is already covered by the type-driven enumeration above, and a reflexive .claude/ change by /deliver's footprint sweep. #452 fixed a stale search("…") call in README.md and left the identical call in two .docc catalogs for code review to find.

  4. Print the final, fully-checked test list and a short summary of what was implemented.

  5. If a /goal was set, it clears automatically once the condition is confirmed.

Do not declare the plan implemented while any test-list item is unchecked or any required suite is red. An empty list with green suites — that is the finish line.

© adamayoung, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/implement-plan of adamayoung/TMDb.

Open the folder on GitHubat commit a3f1311

Compare with similar skills

Implement Plan (Canon TDD) 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.

Implement Plan (Canon TDD) compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Implement Plan (Canon TDD) this skilladamayoung/TMDb178—~4.5kAutomated safety check: PassApache-2.0
Test Guidelinesgetsentry/sentry-react-native1.8k—~1.3kAutomated safety check: PassMIT
Test Guidelinesgetsentry/sentry-dart873—~3.1kAutomated safety check: PassMIT
Agent Harness Testing Methodologyhuiliyi37/Tianshu-harness1.1k—~1kAutomated safety check: NotesApache-2.0
TDD Bug Fixcursor/plugins10k8 repos~786Automated safety check: PassNone
Pest Testingslimani-dev/muraqib128—~1.2kAutomated safety check: PassMIT

Similar skills

  • Test Guidelines

    getsentry/sentry-react-native

    Official

    Enforce Sentry React Native SDK test conventions for naming, structure, mocking, and fixtures with Jest.

    1.8k GitHub stars~1.3k tokensUpdated today
    Testing & QAAuto-check passed
  • Test Guidelines

    getsentry/sentry-dart

    Official

    Enforce Sentry Dart/Flutter SDK test conventions for naming, structure, and fixtures.

    873 GitHub stars~3.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Agent Harness Testing Methodology

    huiliyi37/Tianshu-harness

    Guides an agent through probing an unfamiliar project's test setup, then choosing a red-light-first testing strategy matched to the task type.

    1.1k GitHub stars~1k tokensUpdated today
    Testing & QAAuto-check: notes
  • TDD Bug Fix

    cursor/plugins

    Official

    Fixes a bug with a failing regression test first when a cheap, focused test path exists, and falls back to the closest practical check when it does not.

    10k GitHub starsUsed in 8 repos~786 tokens
    Testing & QAAuto-check passed
  • Pest Testing

    slimani-dev/muraqib

    Tests applications using the Pest 4 PHP framework. An agent skill from slimani-dev/muraqib.

    128 GitHub stars~1.2k tokensUpdated 8 days ago
    Testing & QAAuto-check passed
  • Superpowers Test Driven Development

    christopherarter/superpowers-reasonix

    Writing or fixing any code?. An agent skill from christopherarter/superpowers-reasonix.

    102 GitHub stars~1.9k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed

More from adamayoung/TMDb

All 18 skills in this repo
  • Writes and maintains DocC /// comments for the public API of the TMDb Swift package, following the project's summary patterns and comment structure.

    178 GitHub stars~2.6k tokensUpdated 4 days ago
    Auto-check passed
  • Diagnoses a failing scheduled TMDb Integration run, re-runs transient failures, and fixes real API drift on its own branch with a PR, merging it only when told to.

    178 GitHub stars~2.7k tokensUpdated 4 days ago
    Auto-check passed
  • TMDb Backlog Triager

    adamayoung/TMDb

    Grooms the Backlog column of a GitHub project board by re-verifying each issue against current main, closing dead ones, promoting actionable ones to Ready and naming the decision the rest need.

    178 GitHub stars~5k tokensUpdated 4 days ago
    Auto-check passed
  • Canon TDD Workflow

    adamayoung/TMDb

    Has your agent build features and fix bugs in Canon TDD order: write a test list, then one failing test, make it pass, refactor, and repeat until the list is empty.

    178 GitHub stars~1.3k tokensUpdated 4 days ago
    Auto-check passed
  • Capture Knowledge

    adamayoung/TMDb

    Records non-obvious lessons from a finished task, such as gotchas, API quirks and design decisions, into a project's knowledge folder before a pull request opens.

    178 GitHub stars~2.3k tokensUpdated 4 days ago
    Auto-check passed
  • Cut Release

    adamayoung/TMDb

    Cut a new TMDb release — work out the next SemVer version from the evidence, do the pre-tag housekeeping a tag would otherwise freeze in place, draft release notes, then tag and publish the GitHub…

    178 GitHub stars~3k tokensUpdated 4 days ago
    Auto-check passed

Works with

Categories

Questions about Implement Plan (Canon TDD)

What does Implement Plan (Canon TDD) do?

Drives an approved plan to completion test-first, deriving a Canon TDD test list, showing it before any code and stopping only when every item is written, passing and green. This skill wraps three things together: the current plan, which defines what to build, the separate canon-tdd skill, which defines how to build it, and a single finishing condition, an empty test list, which defines when to stop. It does not invent its own TDD rules; canon-tdd enforces no production code before a failing test, one test at a time and refactoring only on green, while this skill adds plan-awareness and the stopping goal on top.

When should I use Implement Plan (Canon TDD)?

Implement Plan (Canon TDD) fits situations like: implementing an already-approved plan strictly test-first; driving a Swift feature to completion with Canon TDD discipline; keeping a visible, evolving test list while building out a plan.

How do I install Implement Plan (Canon TDD) in Claude Code?

Run `npx skills add adamayoung/TMDb --skill implement-plan -a claude-code`. Or copy the skill folder (.claude/skills/implement-plan in adamayoung/TMDb) into .claude/skills/implement-plan in your project. Claude Code loads it when a task matches its description.

How do I install Implement Plan (Canon TDD) in Codex?

Run `npx skills add adamayoung/TMDb --skill implement-plan -a codex`. Or copy the skill folder (.claude/skills/implement-plan in adamayoung/TMDb) into .agents/skills/implement-plan in your project. Codex loads it when a task matches its description.

Can I use Implement Plan (Canon TDD) in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adamayoung/TMDb --skill implement-plan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/implement-plan, .gemini/skills/implement-plan, .github/skills/implement-plan and .opencode/skills/implement-plan in your project.

What does Implement Plan (Canon TDD) need to run?

Going by SKILL.md and its folder, Implement Plan (Canon TDD) needs the command-line tools its instructions call (make). Our summary lists: The canon-tdd skill; An approved plan to implement; make build-docs for verifying documentation items.

Does Implement Plan (Canon TDD) access the network?

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.

Is Implement Plan (Canon TDD) safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Implement Plan (Canon TDD) use?

Implement Plan (Canon TDD) is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Implement Plan (Canon TDD) use?

About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Implement Plan (Canon TDD)?

Skills that share tags, products or a category with Implement Plan (Canon TDD): Test Guidelines (getsentry/sentry-react-native, 1.8k stars), Test Guidelines (getsentry/sentry-dart, 873 stars), Agent Harness Testing Methodology (huiliyi37/Tianshu-harness, 1.1k stars) and TDD Bug Fix (cursor/plugins, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Implement Plan (Canon TDD)?

adamayoung (a GitHub user) maintains it in adamayoung/TMDb, which has 178 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 3, 2026.

Source: adamayoung/TMDb on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.