Skip to content
Agentmart
Submit a tool

code-design

Use only when explicitly requested by name — "code-design", "code design", "/code-design", "/cc-ai-dev:code-design" — or when another skill or a…

Skill by CreativeCodersTeam

IndexedApache-2.0
Write a review

Chalk Labs

Need help deploying code-design?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/creativecodersteam-code-design

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use only when explicitly requested by name — "code-design", "code design", "/code-design", "/cc-ai-dev:code-design" — or when another skill or a user-confirmed skill selection loads it by name, to write or change production code with a deliberate design pass instead of appending to the nearest existing class. Before writing, decides for every new responsibility whether it extends an existing unit or gets its own (Single Responsibility, Separation of Concerns); after the tests are green, refactors the touched code (Extract Method, Extract Class, Extract Interface at real seams, DRY for duplicated knowledge) and checks the result against KISS and YAGNI so it does not tip into over-engineering. Stack-agnostic. Reports every design decision with its principle and the rejected alternative. Never commits. Must NOT activate on its own for "write clean code", "use SOLID", "implement this feature", "clean this up", or any other request that does not name the skill.

Use cases: design, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 1, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/code-design

What's inside

Skill name
code-design
Description
Use only when explicitly requested by name — "code-design", "code design", "/code-design", "/cc-ai-dev:code-design" — or when another skill or a user-confirmed skill selection loads it by name, to write or change production code with a deliberate design pass instead of appending to the nearest existing class. Before writing, decides for every new responsibility whether it extends an existing unit or gets its own (Single Responsibility, Separation of Concerns); after the tests are green, refactors the touched code (Extract Method, Extract Class, Extract Interface at real seams, DRY for duplicated knowledge) and checks the result against KISS and YAGNI so it does not tip into over-engineering. Stack-agnostic. Reports every design decision with its principle and the rejected alternative. Never commits. Must NOT activate on its own for "write clean code", "use SOLID", "implement this feature", "clean this up", or any other request that does not name the skill.
License
Apache-2.0
Instructions
284 lines in SKILL.md · view on GitHub

Files (3)

  • SKILL.md
  • design-moves.md · references/
  • principles.md · references/

SKILL.md (first lines)

# code-design

Write new code in a shape that a reader can follow and a maintainer can change — by deciding
*where* each piece of behaviour lives before writing it, and tightening the result after it works.

## Contract

- **Input:** a change to production code — a feature, an extension, a behaviour change — plus the
  codebase it lands in. Also works as a rule set loaded by another workflow (see
  [Inside another workflow](#inside-another-workflow)).
- **Output:** the code change with its tests, and a **Design notes** block in the final reply (or
  in the calling workflow's report).
- **Not in scope:** restructuring code the change does not touch (that is the `refactor` skill),
  bug fixes that ride along, performance tuning, style-only reformatting.
- **Never commits.** The user reviews the diff and decides what enters history.

**Explicit invocation.** This skill starts only when it was named — `/code-design`,
`/cc-ai-dev:code-design`, "code-design" in the prompt, or a load by name from another skill or a
skill selection the user confirmed. "Write clean code" or "follow SOLID" in a request is not an
invocation; such a request is handled as an ordinary request without this skill.

## Why this skill exists

An agent extending a codebase feels a strong pull toward the nearest existing class: it is already
imported, already registered, already tested, and adding a method there produces the smallest diff.
Each single step looks harmless. Repeated over twenty changes, it produces the service with 1,500
lines and twelve dependencies that nobody dares to touch.

The smallest diff is not the smallest design. The cost of "just add it here" is paid later, by
every reader of the class and by every test that has to construct all of its dependencies to check
one of its behaviours. This skill moves the decision to the moment it is cheapest: before the first
line is written.

The opposite failure is just as real. An agent told "use SOLID" tends to put an interface in front
of every class, a factory in front of every constructor, and a strategy in front of every `if`.
Indirection that does not pay for itself is also complexity. So the principles here come in pairs
that pull against each other, and the workflow ends with a check against the brakes.

## The principles, and how they pull

Operational definitions — signals, actions, counter-indications — are in
[`references/principles.md`](references/principles.md). The short version:

| Decompose when … | … but stop when |
|---|---|
| **Single Responsibility** — a unit changes for one reason | **KISS** — a split that forces the reader through more files than it saves in understanding |
| **Separation of Concerns** — domain rules, I/O, orchestration, and presentation live apart | **YAGNI** — an abstraction exists for a variation nobody has asked for |
| **DRY** — one piece of *knowledge* has one home | **Coincidental similarity** — two blocks look alike but change for different reasons |
| **Extract Interface / Dependency Inversion** — at a real seam (external system, test double for I/O, plug-in point) | **Speculative Generality** — one implementation and no second caller |
| **Extract Method / Class** — a unit does several things at several levels of abstraction | **Middle Man** — the extracted unit only forwards |

A decision cites a principle from the left column *and* has checked the right one.

## Workflow

```
Step 1  Read the neighbourhood     — the units the change would touch, their size, responsibilities, seams
Step 2  Design pass                — per new responsibility: extend, reuse, or new unit; state the sketch
Step 3  Build it                   — tests first where the project has tests; the shape from Step 2
Step 4  Refactor pass              — after green, on touched code only; one move at a time, tests after each
Step 5  Counter-check              — every abstraction pays rent, or it goes
Step 6  Design notes               — decisions, rejected alternatives, what was left alone
```

### Step 1 — Read the neighbourhood

Before designing, look at the code the change would naturally land in, and at its surroundings:

- **The candidate host(s):** the class, module, or file you would extend by default. Its size, its
  public members grouped by what they do, its dependencies (constructor parameters, imports, module
  globals). A host whose members fall into several unrelated groups already has several
  responsibilities — adding one more makes the eventual split harder, not easier.
- **The project's architecture pattern:** layering, vertical slices, handlers, services and
  repositories, feature folders. Read two or three sibling features. The pattern decides *where*
  things go; the principles decide *how finely* to cut inside it.
- **Existing units that already do part of the job:** helpers, value objects, validators,
  formatters, clients. Search by the nouns and verbs of the requirement. Re-implementing an
  existing helper is the most common DRY violation an agent produces.
- **Seams:** where external systems are called (HTTP, database, file system, clock, randomness,
  message bus) and whether they are already behind an abstraction the tests replace.
- **Test coverage of the host:** which paths of the code you will change or move have tests —
  quote the test per path, and list the paths without one. Step 2 closes those gaps before
  anything is moved.

Keep this short — enough to make the Step-2 decisions with evidence (`file:line`), no more.

### Step 2 — Design pass

**List the responsibilities the change adds**, one line each, before thinking about files. "Add
discount codes" is not one responsibility; it is *parse and validate a code*, *look up a code*,
*compute the discount*, *apply it to an order*, *record the redemption*. The list is what makes
placement decidable.

**Place each responsibility** by asking in order, and stop at the first yes:

1. **Does a unit already exist whose job this is?** Reuse it, extend it inside its responsibility,
   or generalise it if the new use is the same knowledge. (DRY)
2. **Does it share the host's reason to change?** All three must hold: the same requirement or
   stakeholder would change both; it needs no dependency the host does not already have; the host's
   name still describes the host truthfully afterwards. Then extend the host.
3. **Otherwise it gets its own unit**, named after its responsibility, in the layer its concern
   belongs to (domain rule, I/O adapter, orchestration, presentation). The host delegates to it.
   (SRP, SoC)

**A rule stays a rule when it needs data.** A check that decides whether something is allowed —
*this code may be redeemed*, *this order may be cancelled* — is domain logic, even when the facts
it decides on come from storage. The usual slip is a private method on the host that fetches those
facts and decides on them in the same breath, which leaves the new rule inside the class the
change was supposed to keep from growing. Split the two: the host (orchestration) fetches the
facts and passes them in — plain values, not the repository — and the rule unit decides. Passing
values also keeps the dependency pointing from orchestration to rules, which is what removes the
circular import that otherwise argues for keeping the check in the host.

**Heuristics that say a host is already full** — any one of them is reason enough to prefer a new
unit for new behaviour, not a verdict on the existing code:

| Signal | Rough threshold (heuristic, not law) |
|---|---|
| lines in the unit | a few hundred |

From CreativeCodersTeam/ai-store, Apache-2.0.

More from CreativeCodersTeam/ai-store

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Oct 2, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from CreativeCodersTeam

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get code-design running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying code-design?

CallGet help
Cite this page

code-design skill. Agent Mart. https://agentmart.dev/skills/creativecodersteam-code-design (last updated 2026-10-24)