davidchen-006/smile-software-factory/smile-code-writer
Claude Code and agent skill by davidchen-006/smile-software-factory
- community
Checking that the SKILL.md file is still in the repository.
How a SMILE factory worker writes code: three pillars — flow (separate deciding from doing; functional core, imperative shell), abstraction (general-purpose, deep modules that hide decisions), and side effects (pushed to the edges, fewest intermediate states) — plus the worker process that turns one bead into one reviewable pull request. Use when working a bead, designing a module, or deciding how to structure a change. The lane itself does not read this file; it renders `prompts/worker.md`, which names this skill.
Install
npx vskill@latest install davidchen-006/smile-software-factory/smile-code-writerSKILL.md
SMILE code writer
You are writing code, not just making it work. Structure is decided at writing time; these three pillars decide it. They compound: flow makes side effects separable, separation makes modules testable, deep modules keep the flow readable.
Two references carry the principles you name in your Principles applied line:
- `references/laziness-protocol.md` —
laziness-protocol - `references/test-behavior.md` —
test-behavior
Pillar 1 — Flow: separate deciding from doing
Every piece of code is one of two things: deciding (pure logic on plain data) or doing (touching the world — files, network, database, clock). Keep them in separate units. This is the functional core, imperative shell shape.
Logic never touches the world. Data crosses the boundary as plain values: the shell hands the core facts, the core hands back a decision, the shell carries it out. When you catch a function both computing and calling out, split it along that line.
Pillar 2 — Abstraction: general and deep
Two orthogonal axes:
- Generality — how many use cases one module serves. One general module that does the work of
several specialized ones beats them. Ask "what is the simplest interface that covers all my current needs?", not "what does this one caller want?"
- Depth — interface size versus what it hides. Small interface, large hidden implementation: the
caller writes one line to get hundreds. Do less externally, more internally.
Hide decisions — every parameter is a decision pushed onto the caller.
The deep version decides retry, timeout, and TLS policy inside the module: once, and changeable in one place. Expose only what genuinely varies per call and give everything else an internal default. The parameters that remain get precise types, so the signature documents the contract.
Pillar 3 — Side effects: classified, then minimized
- Classify. Separate pure functions from effectful ones. Pure logic tests with plain values;
effects isolated at the edge test with one seam. Logic tangled with effects tests with neither.
- Minimize intermediate states. More intermediate steps means more edge cases and more places
for bugs. Prefer the sandwich — effects, pure, effects — and treat every extra pure/effect alternation as a cost to justify, not a neutral choice.
The worker process
You own one bead and nothing else. The bead's description and the frozen spec are the whole scope.
- Ground. Read the spec section the bead names and the code it touches. Trace the real path
before you change it. Naming a file is not grounding.
- Decide the shape. When the change admits more than one structure (error handling, where a
seam goes, how the tests are organized), sketch at least two candidates in a few lines each, pick one, and say in the pull request body why. Do not fold the design decision silently into the implementation.
- Name the data. Choose the organizing structure before you write logic: a state machine over
scattered booleans, a table or registry over branching, a typed model over repeated shape assumptions.
- Write the smallest complete change.
laziness-protocolgoverns here: nothing speculative,
nothing unrequested, and whatever your change orphans goes with it.
- Test the behaviour.
test-behaviorgoverns here: observable behaviour through the public
surface, one behaviour per test, fakes only at process boundaries.
- Verify on the matching surface. Run the suite the change belongs to. "Inconclusive" or the
wrong surface is not a pass; say so rather than claiming green.
- Sequence the commits. Small, ordered commits, each one building and passing before the next.
- Open the pull request on the branch the order names, with the
Bead: <id>trailer on its own
line, and stop. Never merge, never close the bead, never run the driver.
On a fix round you do not re-open a pull request. Read every open issue labeled review that names your pull request, fix each finding, commit with addresses #<issue> in the message, push, stop.
Rules
- Every unit is deciding or doing — never both. Split along that line.
- Default flow: shell reads facts, core decides, shell executes.
- One general module over several specialized ones; design the interface for the need, not the
caller.
- Small interface, deep implementation. A new parameter is a decision you failed to hide.
- Effects live at the edges; aim for effects–pure–effects and justify every extra alternation.
- Remaining parameters carry precise types — the signature is the contract.
- The smallest complete change, and nothing your change orphans left behind.
- End your work with the line
Principles applied: <name>, <name>, ..., naming each principle by
the name this skill gives it. none is a valid value.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingtemplates/.claude/skills/smile-code-writer/SKILL.md
Popularity
- Repository stars
- 56
- Repository forks
- 10
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/davidchen-006/smile-software-factory/smile-code-writer)