agentsclimarketplace

Implement feature

Skill tale-project/tale/builtin-configs/skills/implement-feature

The Orchestrator for AI Agents — Connect OpenClaw, Hermes Agent, Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Pi, and Qwen Code. Pool their knowledge, delegate tasks, and build your swarm of agents.

Install
npx -y skills add tale-project/tale --skill implement-feature

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use this skill whenever you add new behaviour a user or caller can see — a feature, screen, field, route, endpoint, flag, setting, or capability. It is the senior-engineer method: understand the real intent, feel the current product, reuse what already exists before adding anything, ship a thin vertical slice, and prove it works. Load it the moment a task says "add", "build", "support", "create", "implement", or "let users…", or whenever you're about to write code that resembles something the project may already do. Never start a feature without it. For a behaviour-preserving change use make-improvement; for a defect use fix-bug.

SKILL.md

5.3 KB, as published. Nobody here has run it

implement-feature

New behaviour, fully integrated — not a prototype. The two expensive mistakes here are building the wrong thing and building a second copy of something that already exists in a different shape. So you earn the right to write code by first understanding the intent and feeling the ground you stand on. For a structural or performance change that keeps behaviour the same, use make-improvement; for a defect, fix-bug; for the tests, test-code; to open the PR, create-pr.

When this applies

Any task that adds behaviour a user or caller can see — a screen, a field, a route, an endpoint, a setting, a capability. Skip the ceremony only for a one-line change in a place you already know.

Write a note first

Invoke write-notes and answer this form before you implement:

  • Intent: Describe exactly what a user or caller will be able to do that they can't today — and what stays the same.
  • Status quo: Describe how the area behaves now and how it's built — which files/components own it, and what you saw when you ran or read it.
  • Reuse: Describe the existing concept you'll build on (name the component / hook / util / endpoint and its path) and how you'll extend or compose it. If you're adding new, explain what you searched for and why nothing fit.
  • Approach: Describe the thinnest end-to-end slice (data → logic → UI) and how it wires into the code already there.
  • Ripple: For each area a change of this shape can touch (tests, migration, docs, i18n, a11y), describe what this one requires.
  • Risks & unknowns: Where are you least confident? Describe the assumption that, if wrong, would break this — and how you'd catch it before it bites.

Gate A — before you write code

The senior move is to slow down here. Tick every box, or N/A with a reason — an unticked box means not done.

  • Note — the form above is answered and written first (write-notes).
  • Intent — restated in your own words; every design-changing ambiguity asked, not guessed — a wrong guess wastes the whole feature, and you keep asking the moment you hit a roadblock. Facts you lack are researched (deep-research); preferences are asked.
  • Status quo — you ran or navigated the real app (or exercised the real code path) for the area you're extending; you've experienced the current behaviour, not imagined it.
  • Reuse — the existing concept is found (search-codebase) and named — or you can say why none fits. Reuse → extend → generalize: a second catalog/list/form that already exists in another shape is a defect, not a feature; create new only when nothing fits, in its canonical home, under a name the next dev will search for.
  • Conventions — discovered from the project's tooling and its neighbouring code (search-codebase orient), not from memory, so your code passes the gate the first time.
  • Blast radius — every other site of the concept and every cross-cutting artifact enumerated (search-codebase sweep) — and the smallest, most reversible slice picked.

Build the vertical slice

  • Thinnest end-to-end slice first. Make the intent work all the way through — data → logic → UI — before widening. Avoid gold-plating and speculative generality; build what was asked, well.
  • Match the neighbours exactly. Mirror the structure, naming, and error handling of the files you're in. Code that looks like it was always there is the goal.
  • Validate at every boundary. Treat all external input (requests, params, payloads, files) as adversarial; parse and reject at the edge.

Gate B — before you call it done

Tick every box, or N/A with a reason — an unticked box means not done.

  • Slice integrated — the thin slice works end-to-end through real wiring; no dead flags or orphaned UI.
  • Definition of done — walk create-pr's shared checklist now, not at PR time: green gate, tests, migration, locales, docs, accessibility.
  • Sweep — every site enumerated at Gate A is changed or explicitly ruled out (search-codebase).
  • Observed — the real outcome watched (test-code), never a green typecheck alone.

Then take it to a clean PR with create-pr.

Patterns

  • Thin slice over big bang. Five small integrated commits that each keep the suite green beat one thousand-line drop nobody can review or revert.
  • The reuse miss you can't see is the costly one. About to name a new component XList/XGrid/XPicker? Stop — search-codebase first; the project almost certainly already has the concept.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.