Chalk Labs
Need help deploying development-implementation?
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.
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/eyalgo-development-implementation
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.
About
Use cases: documents, testing, data, productivity
Reviews
Write a reviewNo 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. Checked Oct 25, 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/development-implementation
What's inside
- Skill name
development-implementation- Description
- Developer-posture skill for ongoing work. Executes a development-plan `tl_instruction.md` in a fresh execution session — per-task TDD (red/green/refactor), developer standards, verification gates, and a self-owned closing commit, made again over an earlier one when a relaunched run re-closes the change — or, when the chain's context cap is passed, a pause commit after the task in progress so a fresh run continues at the next task. Repairs incomplete implementation and tests against the resolved contract, including inherited work, until verification passes. Writes new logic in the part that owns it in the product's parts table (docs/SDD.md § 3). External impediments are handled by the deferral contract; the run halts in three cases only. Reads execution type + test command from project.md. Does not advance pipeline inboxes — that baton-pass is handled separately.
- License
- MIT
- Metadata
- risk: safe · version: 5.8.0 · category: execution
- Instructions
- 591 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- body: 591 lines (spec recommends under 500)
Files (9)
- README.md
- SKILL.md
- evals.json · evals/
- claude.md · intelligence/
- codex.md · intelligence/
- gemini.md · intelligence/
- hf.md · intelligence/
- ollama.md · intelligence/
- launcher.md
SKILL.md (first lines)
# Development Implementation
## Purpose
Execute a `tl_instruction.md` produced by `development-plan` — implement each task from failing tests, in controlled per-task TDD cycles, with verification and a self-owned closing commit, or a pause commit when a chain's context cap is passed.
The instruction is a **pure scaffold**: module responsibilities, behaviours to verify, and hints for complex tasks. It carries no commit choreography and no execution metadata. This skill owns the commit structure (per-task TDD commits, then the closing commit, or a pause commit when a chain's context cap is passed) and sources execution context from `system/projects/<project>/project.md`. A run that pauses finishes the task it is on and stops there. The chain starts a fresh run at the next task, and that run's launch prompt says where to start (Step 2).
**Own the finished result, including the work you inherit.** Step 2 § *Work and repair* governs implementation, verification and correction. § *Deferring a task* governs external impediments; § *When to Stop* governs run-level halts.
The developer's job is **not to transcribe the instruction into code** — it is to critically review what they received and produce a better-implemented result than the scaffold alone prescribes. The developer is the last quality gate before the code lands, exactly as the Tech Lead is the last quality gate before the developer. Improvements are made, and every improvement is logged — same discipline `development-plan` applies to the architect's design.
**Announce at start:** "I'm using the development-implementation skill to execute the `tl_instruction.md`."
## When to Use
- Stage 5 (Developer) of the iteration pipeline — after `development-plan` has produced and committed `tl_instruction.md`, and, when the design's `Publishes text:` line reads `yes`, after `development-content` has committed `change_text.md`.
- Auto-invoked in any execution session running a `tl_instruction.md`, whether headless or Docker sandbox.
## Enter the worktree
The upstream stages ran inside an isolated worktree for this change — development-specs created it and landed `change_spec.md` on the branch, development-design and development-plan added `change_design.md` and `tl_instruction.md` there. None of it is on `main`. This is the **only** stage that writes code, so landing on the wrong branch silently breaks the worktree isolation every upstream stage preserved — entering correctly is not optional.
- **Headless runs (host terminal):** derive the worktree from the **change key** and `cd` into it before reading anything; operate inside it for the whole run.
- **Docker sandbox runs:** the launcher mounts the checked-out branch at `/workdir` — skip this derivation; `$WORKTREE` is `/workdir` and the Docker startup gate (Step 1) verifies it.
The **change key** is `<YYYY-MM-DD>_<slug>` — the Tobiishi folder (`journey/tobiishi/<key>/`) / branch name. You know it from the invocation (the change you were asked to execute). If multiple worktrees exist under `<repo>/.worktrees/` and the intended change is ambiguous, ask which one — once.
```bash
# Run this FIRST, from the instance root, before any `cd` — it answers from the CWD.
REPO_ROOT=$(git rev-parse --show-toplevel) # the INSTANCE repo
WORKTREE="$REPO_ROOT/.worktrees/<key>"
test -d "$WORKTREE" || echo "No worktree for <key> — the upstream stages must run first."
cd "$WORKTREE"
```
If `$WORKTREE` does not exist, **halt** (§ *When to Stop*, first case — no task could land): the upstream stages have not run for this change. Do not create it here and do not fall back to `main`.
**Write `$WORKTREE`'s value down — the absolute path, in your own prose — before you `cd` anywhere.** Two things make the variable alone unsafe. A shell variable does not survive from one command to the next: each command runs in a fresh shell, so `$WORKTREE` in a later command expands to the empty string and `git -C ""` silently means *here*. And for an **external product** this run spends most of itself inside the *product* worktree, which carries a `.worktrees/<key>` of its own on a branch of the same name — so re-deriving from `git rev-parse --show-toplevel` after that `cd` answers with the product worktree and nothing looks wrong. Every `$WORKTREE` below means the instance path you wrote down at entry.
**From here on, `$WORKTREE` is the working root (the CWD):** read every input from `$WORKTREE/` (`tl_instruction.md`, `change_design.md` under `system/projects/<project>/journey/tobiishi/<key>/`), write all code under `$WORKTREE/`, and commit from inside it. The change arc stays on the branch, never `main`. The path is derived from the key alone — identical convention to development-specs Step 4, development-design, development-plan, and `ad-hoc-plan`; nothing is handed between sessions.
**Locate the project.** The orchestrator passes the **project name** `<project>` alongside the change key; the change-work folder (pipeline-side) is `$WORKTREE/system/projects/<project>/journey/tobiishi/<key>/`. The product root is separate (`<name>` below — it may differ from `<project>` and may even be external). The project's code and decision files are **not** assumed to be at the worktree root — a repo may hold more than one project, each owning its own `docs/` and source tree.
**Resolve `PROJECT_DOCS`**, then derive the project root from it. The step resolves it itself, every
run, from the path tool's contract — the one call § *Where each commit goes* makes at entry — and never
composes a product path by hand:
```bash
# From the contract's product_path, product_repo and product_worktree:
# <sub> = product_path when it is relative, else product_path relative to product_repo ('.' when the same)
# PROJECT_DOCS = "<product_worktree>/<sub>/docs"
# in-repo: product_worktree is $WORKTREE, so PROJECT_DOCS="$WORKTREE/<sub>/docs"
# external: product_worktree is the product worktree create_change_worktree.py opened for this change;
# never the product's primary checkout
PROJECT_ROOT="$(dirname "$PROJECT_DOCS")" # e.g. $WORKTREE/<product> or $WORKTREE
```
Do **not** re-derive `PROJECT_DOCS` from any header in the change_spec (the `Project:` header is retired). `<name>` (used throughout below as the project root) is the path from the worktree root to `$PROJECT_ROOT` — `<product>` for the multi-project playground, `.` for a single-project repo. **All code and tests live under `$PROJECT_ROOT/` (the test command is the one exception, § *Execution context* below); every `<name>/docs/<file>` reference resolves to `$PROJECT_DOCS/<file>`** — never the worktree-root `docs/` unless `PROJECT_DOCS` points there.
## Roots and paths
This skill operates across **two roots**, both resolved in **Enter the worktree** above — the same separation `project-*` skills use, rebased onto the change worktree (the same `PROJECT_DOCS` resolution development-design and development-plan use):
| Root | Holds | Where it is |
|---|---|---|
| **pipeline-root** = `$WORKTREE` (the CWD) | `system/projects/<project>/journey/tobiishi/` | `<repo>/.worktrees/<key>` (headless) or `/workdir` (Docker mount) |
| **project-root** = `<name>` = `$PROJECT_ROOT` | `docs/adr/`, code, tests | `$(dirname "$PROJECT_DOCS")` — `$WORKTREE/<product>` (multi-project) or `$WORKTREE` (single-project) |
Every project-side path is qualified with `<name>/`; every pipeline-side path is bare from the CWD (which is `$WORKTREE`).
- **Project-side** (qualified with `<name>/`): `<name>/docs/adr/`, code, tests. Read `docs/adr/` and write all code here. The test command is the one exception: it runs from the root of the product's change worktree, not from `<name>/` — `$WORKTREE` for an in-repo product, the product worktree for an external one (§ *Execution context*).
- **Pipeline-side** (bare from the CWD = `$WORKTREE`): `system/projects/<project>/journey/tobiishi/<key>/{tl_instruction,change_design}.md`.
If `PROJECT_DOCS` is unresolved (the `project.md` resolution above yields nothing) and `<name>` cannot be derived from the instruction's `## Project layout` top directory, **halt** (§ *When to Stop*, first case), and in an interactive session ask for the project root — do not guess.
## Where each commit goes
A change's product is either **in-repo** (code inside `$WORKTREE`) or **external** (code in its own git
repo). Which it is, and which repo takes which commit, is not read by hand — ask the path tool once, at
entry, after writing `$WORKTREE` down:
```bash
python3 "<CORE>/tools/development_path.py" resolve --format json \
--worktree "$WORKTREE" --project <project> --key <key>
```
It reads `Product path:` from `project.md` (the single source) and returns, among the rest,
`code_worktree` and `pipeline_worktree`, and the `product_path`, `product_repo` and `product_worktree`
that `PROJECT_DOCS` above is built from. A non-zero exit is a halt (§ *When to Stop*), with the tool's
`message` in the report.
- **Code commits → `code_worktree`.** It is the worktree `$PROJECT_ROOT` sits in. For an external
product that is the **product** worktree (the contract's `product_worktree`, where `PROJECT_DOCS` above
sits): `cd` there for the per-task TDD cycles so
`test-driven-development`'s commits land on the **product** branch.
- **Pipeline commits → `pipeline_worktree`** — the instance worktree, `$WORKTREE`. The closing commit is
one: its `--repo` is the instance worktree you wrote down at entry, and for an external product it is
**not** the `--repo` every per-task commit of this run carried.
For an in-repo product the two are one path — a single repo, CWD stays `$WORKTREE`, nothing differs.
For an external product they are two repos, and that is the whole difference. A write into a third repository is neither kind of commit: Step 2 § *A write into another repository*.
## Inputs
All inputs are **read-only**. Read the instruction, design and specification together; implement the change from their combined contract and record corrections to the instruction in Developer Review Notes.
| File | Root | Role | How it is used |
|---|---|---|---|
| `system/projects/<project>/journey/tobiishi/<key>/tl_instruction.md` | pipeline | **execution plan** | task sequence, scaffold, test cases and verification gates |
| `system/projects/<project>/journey/tobiishi/<key>/change_design.md` | pipeline | **technical contract** | implement the interfaces, topology and technical decisions; recover details the instruction omits |
| `system/projects/<project>/journey/tobiishi/<key>/change_spec.md` | pipeline | **behavioural contract** | implement the scope, business rules and acceptance criteria; recover details the instruction omits |
| `system/projects/<project>/journey/tobiishi/<key>/change_text.md` | pipeline | **the published words** | present only when the design's `Publishes text:` line read `yes` and the Content Editor ran. Every published string this run places comes verbatim from it; read it with the rest of Step 1's inputs |
| `<name>/docs/adr/` | project | **the decision log** | consulted on demand for the *why* behind a topology or import boundary, read headline-first through its index. An **Accepted** record is binding; one still **Proposed** is context |
| `<name>/docs/nfdr.md` | project | **the constraint set** | § 1.2 for the module set and the import graph, on demand |
| `<name>/docs/SDD.md` § 3 | project | **the parts table** | for every task that adds logic: `Owns` and `Must not own` say which part owns it, and `Lives in` where that part's code is (Step 1b). A product with none says so in the `Step 1b review:` block |
| Language packets, resolved per `<CORE>/doctrine/engineering/languages/README.md` | project | **required** | resolved every run and the result recorded, whatever it is — every concern the packet's router lists accounted for, and every clause the implementation turns on quoted verbatim with its line, never summarised (Step 1 sub-step 3). A packet that exists is read for the run's language practice and binds over the surrounding file's own style; no packet for the resolved language means proceed on `<CORE>/doctrine/engineering/languages/developer_standards.md` — still recorded, still never a STOP |
Follow cited product-document sources when needed to resolve a detail or constraint; a prior upstream review does not replace the developer's judgment. Step 1b owns how omissions and disagreements are resolved.From eyalgo/kensaiapp, MIT.
More from eyalgo/kensaiapp
- 0.570score
development-content
eyalgo
Content-editor-posture skill for ongoing work.
SkillAFreshness: AClaude Code +9 - 0.570score
development-design
eyalgo
Architect-posture skill for ongoing work on an existing project.
SkillAFreshness: AClaude Code +9 - 0.565score
first-what-left
eyalgo
CPO-posture skill that writes a product's first what-left file, docs/what_left.md, once the project's Agari is settled.
SkillAFreshness: AClaude Code +9 - 0.565score
product-prd
Eyal Golan
CPO-posture skill that authors a project's PRD — the product source of truth and the head of the definition sequence.
SkillAFreshness: AClaude Code +9 - 0.565score
product-srs
Eyal Golan
CTO-posture skill that authors a project's SRS — the technical source of truth, written off the settled PRD alongside the CDO's UXD.
SkillAFreshness: AClaude Code +9 - 0.565score
refactor-for-optimize
eyalgo
Refactor code for performance — algorithmic complexity, data structure selection, unnecessary I/O, hot-path improvement, and memory usage.
SkillAFreshness: AClaude Code +9 - 0.565score
refactor-for-clarity
eyalgo
Refactor code for clarity without changing behavior.
SkillAFreshness: AClaude Code +9 - 0.565score
readme-status
eyalgo
Content-editor-posture skill that brings a product README's Status section up to what is built.
SkillAFreshness: AClaude Code +9 - 0.561score
refactor-for-reuse
eyalgo
Refactor changed code to eliminate duplication, extract shared logic, and remove dead code.
SkillAFreshness: AClaude Code +9 - 0.560score
product-content
Eyal Golan
Content-Manager-posture skill that authors a project's verbal language (CONTENT.md) — the standing source of truth for everything a product says to a person…
SkillAFreshness: AClaude Code +9 - 0.560score
experience-visual
Eyal Golan
CDO-posture skill that authors a kensaiapp instance's visual experience layer — the fence and the direction every product under that instance inherits…
SkillAFreshness: AClaude Code +9 - 0.560score
product-design
Eyal Golan
CDO-posture skill that authors a project's design language — the visual source of truth in Google's DESIGN.md format, written off the settled UXD's…
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (8 days ago)
- Last release
- Oct 22, 2026 (8 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 5.8.0
- License
- MIT
- Repository
- github.com/eyalgo/kensaiapp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from eyalgo
- 0.570score
development-design
eyalgo
Architect-posture skill for ongoing work on an existing project.
SkillAFreshness: AClaude Code +9 - 0.570score
development-content
eyalgo
Content-editor-posture skill for ongoing work.
SkillAFreshness: AClaude Code +9 - 0.565score
first-what-left
eyalgo
CPO-posture skill that writes a product's first what-left file, docs/what_left.md, once the project's Agari is settled.
SkillAFreshness: AClaude Code +9 - 0.565score
refactor-for-clarity
eyalgo
Refactor code for clarity without changing behavior.
SkillAFreshness: AClaude Code +9 - 0.565score
refactor-for-optimize
eyalgo
Refactor code for performance — algorithmic complexity, data structure selection, unnecessary I/O, hot-path improvement, and memory usage.
SkillAFreshness: AClaude Code +9 - 0.565score
readme-status
eyalgo
Content-editor-posture skill that brings a product README's Status section up to what is built.
SkillAFreshness: AClaude Code +9
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 development-implementation 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.
Cite this page
development-implementation skill. Agent Mart. https://agentmart.dev/skills/eyalgo-development-implementation (last updated 2026-10-24)