feature-factory/SKILL.md
This skill should be used when taking a single software feature from intent to shipped as a solo developer — goal-first, TDD, deterministic verification, evidence only where it earns its keep, and human judgment at the two moments that matter (goal approval, merge). Trigger when the user says "let's build feature X", "ship this feature", "run this through the factory", "write a goal contract", "feature-factory", or wants a disciplined intent→merge loop that resists process bloat. NOT for whole-product planning, multi-feature roadmaps, or autonomous multi-agent swarms.
npx skillsauth add glebis/claude-skills feature-factoryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A goal-driven, local-first loop for taking one feature from intent to shipped. The whole method exists to hold a single line in tension: don't let the process outrun the feature. Keep the spine (goal → TDD → deterministic verify → human merge → evidence-when-it-matters); delete ceremony aggressively.
This is a behavior guide, not an engine. Do not build generic config, executors, telemetry, optimizers, or a universal factory verify wrapper. Run the behavior; package nothing the feature didn't earn.
The human defines the desired system state. Agents maintain the specifications. Tests and evidence decide whether reality complied. Two human gates are always required — approve the Goal Contract (cheap-to-change moment) and review the merge (irreversible moment) — plus a conditional third (plan approval) when a size/risk trigger fires (see step 2). Everything between is a single focused agent loop.
Make a quick size call now (step 2 formalizes it) — you need it to decide how heavy intake should be. For S-size/trivial changes, skip the file — a short goal stated in chat and confirmed by the human is enough; jump to step 3. Otherwise, copy assets/goal-contract.md into the target repo as goal.md under a feature dir (suggested: docs/factory/<date>-<slug>/goal.md); see assets/goal-contract-example.md for a filled example of the calibration expected. The template's core fields are enough for M features — the conditional half is for L or when a trigger fires. Draft it from the request first, then have the human confirm/correct each field — don't block on a blank form, and don't proceed past intake until the human has approved the wording. Enforce:
<!-- required --> fields present: Smallest shippable slice and Stop condition.≤3, ≤5). A capped goal stays a goal, not waterfall-in-markdown.references/process-budget.md). When in doubt, do less.Work on a feature branch or worktree — the merge gate is only a real decision point if the work isn't already on the mainline. Then red → green → refactor, in a single focused loop. No swarm, no parallel fan-out, no speculative abstraction, no silent scope expansion. Write the failing test first. Use any available TDD skill (e.g. superpowers:test-driven-development); otherwise just follow red → green → refactor directly.
references/stack-discovery.md); the harness is part of the feature's cost, and if bootstrapping it is a day of work, re-triage the size.Run the target repo's real verify commands (test · lint · typecheck · build, plus secrets-scan if available) — identical locally and in CI. If the repo has a factory verify / project verify command, call it; if not, use the repo's actual commands and record them (the exact commands + output) in evidence/verify.log under the feature dir. Do not invent a universal wrapper before the repo earns it. Not sure what the repo's real commands are? Discover them — CI workflows, Makefile/justfile, contributor docs, then ecosystem manifests, in that order — per references/stack-discovery.md.
references/process-budget.md; follow that table rather than re-deriving it. Persist findings in evidence/audit-*.md; fold them back into the plan/diff before proceeding (an audit you don't act on is theatre). The human gates still decide — an audit informs them, it doesn't replace goal/merge approval.Persist only relevant evidence under the feature dir's evidence/: verify.log (commands + output), and — only for qualifying UI changes — screenshots in evidence/screenshots/ (what qualifies, and the one-viewport default, is defined in references/process-budget.md under "Visual evidence"). Goal-traceability table only when it adds signal. Evidence is an artifact, not a claim: "done" must be auditable. Do not let the evidence folder become the product.
rigorous-experiments skill if available, otherwise a held-out check. Don't assert a measured outcome you didn't actually test — that's the same gamed-proxy failure the fail rule catches, one layer down.After shipping, write exactly four lines in retro.md under the feature dir (append to goal.md only when a separate file is impractical — one greppable default beats two conventions):
This is the entire self-improvement mechanism at small N — manual, human-readable, impossible to over-build. Do not add usage telemetry, dashboards, or counters. (Aggregate into a markdown table only after ~5 features; consider anything heavier only after ~10.)
This guard applies when editing the method itself — the Goal Contract template, the risk rubric, or the verify checks — not during ordinary feature work. When any edit, optimizer, or rewrite touches those artifacts, do not let polished prose delete load-bearing constraints. Before accepting a rewrite, confirm it preserves: required fields, the ≤N caps, the fail rule, stop condition, smallest shippable slice, risk classification, evidence mapping, no-silent-rewrite, and no-engine/config-abstraction. On conflict, preserve operational utility over readability. Details: references/semantic-preservation.md.
Tracking is conditional: create an epic + issues only if the feature genuinely decomposes into >1 tracked task. A single-task S/M feature needs no tracker. The human picks one ledger per feature in the Goal Contract's ## Tracker section — a tool actually available in the environment (e.g. bd, Linear, GitHub Issues) or none — there is no adapter layer.
bd (beads) — good default for local/solo, git-native, dependency-aware: bd init if no .beads store; epic = parent bead, tasks = child beads, deps via bd link.none is a Goal Amendment, not a silent downgrade.GEPA/template optimization · artifact-usage telemetry · generic pipeline.config · executor abstraction · automatic tracker wiring · visual-evidence matrix · bake-off automation · risk governance beyond self-assessment prompts · auto-updating the agent-instructions file (AGENTS.md / CLAUDE.md) · anything that smells like "the engine." The method earns an engine only after 5–10 real features, not before.
This skill is plain markdown and platform-neutral: the loop is shell/CLI work, not Claude-specific tooling. Anything named here (bd, Linear, a TDD sub-skill, a second-opinion model) is optional — if it isn't available in the current environment, use the stated fallback and continue; a missing optional tool never blocks unless tracking is explicitly required.
Agents that don't auto-discover skills (e.g. the Codex CLI) won't pick this up just because the files exist. To make it discoverable in a target repo, add an entry to that repo's agent-instructions file (AGENTS.md, or CLAUDE.md):
## feature-factory
When asked to build/ship a single feature, or to "write a goal contract", read
<path-to>/feature-factory/SKILL.md and follow it. For non-trivial features, copy
<path-to>/feature-factory/assets/goal-contract.md to docs/factory/<date>-<slug>/goal.md.
When following this without a skill-runner, read references/process-budget.md (size/risk triggers), references/stack-discovery.md (finding the repo's verify commands; bootstrapping a missing test harness), and references/semantic-preservation.md (only when editing the method's own artifacts) directly.
When copying this skill into another repo, copy only its content files (SKILL.md, assets/, references/) — local tool state (e.g. .enzyme/, .claude/) may sit alongside them and must not ship.
Distilled from the feature-factory method — public repo: https://github.com/glebis/feature-factory (README + Goal Contract template). The fuller design spec and the three external-audit research streams are kept privately; this skill is the runnable distillation. The highest-risk assumption to stay honest about: a process that worked on one bounded, logic-heavy pilot is not yet proven to stay lightweight on messy UI/integration work — pressure-test it on a deliberately different feature next.
development
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".
development
This skill should be used when inspecting or applying advanced OpenType features of a font (woff2/otf/ttf) — ligatures, stylistic sets (ss01–ss20), character variants (cvXX), texture healing, slashed zero, tabular/oldstyle figures, fractions, small caps, case-sensitive forms — and generating the CSS to enable them. Interviews the user via cenno to pick features. Triggers on "OpenType features", "font features", "stylistic sets", "ligatures", "texture healing", "tabular figures", "what can this font do".
tools
--- name: pre-session-portrait description: Build a compressed, visualizable "portrait" of a consulting/coaching client before a session, so the paid hour is spent solving, not scoping. Runs a 7-lens JTBD-inspired interview (where / how / what / problem / ideal / tension / jobs-to-be-done) that takes rich open answers in and compresses them to an 11-field YAML portrait out. Delivers three ways: raw paste-into-a-clean-chat prompt, a secret GitHub gist link, or a Codex CLI one-liner. Use when prep