Skill code-forge
Genera código de implementación a partir de planos de diseño o requisitos verbales mediante un flujo de trabajo de adentro hacia afuera enfocado en la arquitectura y el clean code.
- Estrellas en GitHub
- 211
- Archivos
- 1
- Último commit
- 24 oct 2026
- Licencia
- MIT
- Herramientas permitidas
- —
¿Qué hace la skill code-forge?
code-forge es una agent skill. Genera código de implementación a partir de planos de diseño o requisitos verbales mediante un flujo de trabajo de adentro hacia afuera enfocado en la arquitectura y el clean code.
Resumen generado a partir del SKILL.md de la skill.
Sobre la skill code-forge
Los desarrolladores que pasan de planos de diseño o requisitos verbales a código funcional utilizan este SKILL para mantener la integridad arquitectónica. Sigue un flujo de trabajo de implementación de adentro hacia afuera, comenzando desde las capas más internas de un sistema y trabajando hacia afuera para asegurar que todas las dependencias se satisfagan a medida que avanza la construcción. El proceso se apoya en varios frameworks especializados para imponer altos estándares, incluyendo arquitectura, clean code, domain-driven design y codificación segura.
Un agente debe cargar este SKILL cuando un usuario dé la instrucción de implementar, construir o forjar código. Produce archivos de implementación y sus pruebas correspondientes, asegurando que los tests se escriban junto con la lógica en lugar de dejarlos para el final. El flujo de trabajo es altamente estructurado y requiere un estado de diseño aprobado y niveles de diseño específicos antes de proceder. Los usuarios pueden controlar el ritmo mediante diferentes modos de revisión, como capa por capa o componente por componente, para garantizar que el resultado generado se alinee con sus expectativas y el contexto del proyecto establecido.
Lo que un agente puede hacer con ella
- 1Implementar desde planos de diseñoGenera código listo para producción siguiendo un documento de diseño aprobado y sus capas arquitectónicas específicas.
- 2Construir código a partir de requisitos verbalesCrea un plan de implementación estructurado y código cuando no se dispone de un documento de diseño formal.
Escrito a partir del SKILL.md de la skill. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar la skill code-forge
Cada comando copia la carpeta de la skill al directorio de skills del cliente. Reinicia el cliente o inicia una nueva sesión para cargarla.Instalar la skill code-forge en Plugin
/plugin marketplace add techygarg/lattice /plugin install lattice@lattice
Instalar la skill code-forge en Claude Code
~/.claude/skills/code-forge/SKILL.md
$ npx degit techygarg/lattice/skills/code-forge ~/.claude/skills/code-forgeInstalar la skill code-forge en Claude Code (project)
.claude/skills/code-forge/SKILL.md
$ npx degit techygarg/lattice/skills/code-forge .claude/skills/code-forgeInstalar la skill code-forge en Codex
~/.agents/skills/code-forge/SKILL.md
$ npx degit techygarg/lattice/skills/code-forge ~/.agents/skills/code-forgeInstalar la skill code-forge en Gemini CLI
~/.gemini/skills/code-forge/SKILL.md
$ npx degit techygarg/lattice/skills/code-forge ~/.gemini/skills/code-forgeInstalar la skill code-forge en Claude.ai
npx degit techygarg/lattice/skills/code-forge code-forge && zip -r code-forge.zip code-forge # claude.ai → Customize → Skills → + → Create skill → Upload a skill → code-forge.zip
SKILL.md
Ver en GitHubCode Forge
Required Skills
Read and apply:
framework:knowledge-priming-- Load project context (stack, architecture, conventions) so implementation matches the real project. (always)framework:context-anchoring-- Find and load the feature's context anchor doc; enrich it as implementation decisions are made (Create / Load / Enrich behaviors). (always)framework:learning-harvest-- Load prior operational learnings to inform implementation at session start; harvest new ones at session end. (always)framework:collaborative-judgment-- Surface genuine judgment calls as structured options instead of silently assuming. (always)framework:architecture-- Layer placement, dependency direction, structural validation. (always)framework:clean-code-- Craft guardrails: SRP, naming, complexity, error handling. (always)framework:domain-driven-design-- Aggregates, entities, value objects, domain services. (conditional: domain-layer components only)framework:secure-coding-- Trust bounds, injection prevention, secrets handling. (conditional: trust-boundary code only)framework:test-quality-- AAA structure, isolation, assertion quality, naming. (always when writing tests)
Additional Instructions
STOP: Before Step 1, read additional_instructions.code_forge (one line or a list) from .lattice/config.yaml. No file or no key → skip silently.
When lines are found:
- Show them verbatim under "Additional instructions (from config):".
- Highest priority — apply them for the whole session, including on resume. On any conflict with anything else in this skill — steps, gates, STOP rules — or with its Required Skills, standards documents, or operational learnings, the config line wins.
Workflow
Step 1: Establish Implementation Context
- Run
framework:learning-harvestLoad behavior. Focus hint: "implementation session — focus: implementation craft, quality signals, reliability". - Run
framework:context-anchoringDocument Discovery: scan the context base directory (per the atom's Config Resolution) for an existing anchor doc covering this feature's implementation.- Found → Load behavior. Present the structured acknowledgment: feature name, status, decision count, open questions, constraints. STOP: Honor every logged decision and constraint as an active commitment.
- Not found → ask the user: "Is there a design doc or blueprint for this feature, or do we work from what we've discussed?" Accept either answer gracefully:
- Doc provided → load it and follow it.
- Proceed without → all atom rails still apply; there is simply no approved design doc to reference. Work from the verbal requirements in conversation.
Design completeness check — run both gates before Step 2 (no context doc exists → skip both, proceed as "Without approved design"):
Check 1 — status: Read the context doc frontmatter status.
approved→ pass.complete→ this feature was already implemented. If the current request is new scope, recommend/design-blueprintfor a fresh design pass; if the user confirms proceeding on the existing design, continue as "With approved design" (Check 2 still applies).- Anything else (including
draftor a missing field) → STOP: "Context doc not approved (status: [value]). Run/design-blueprintfirst. Proceed anyway?" On confirmation → log it in the Decisions Log and continue as "Without approved design".
Check 2 — levels present: Scan the body for ## Design: Level 3 and ## Design: Level 4.
- Both present → pass.
- Either missing → STOP: "Missing [Level 3 / Level 4 / both]. Proceed anyway?" On confirmation → log the absent levels in the Decisions Log and treat them as gaps to fill during implementation.
Both pass → proceed as "With approved design".
Step 2: Plan Implementation Order
With approved design: extract the component list and layer assignments from the context anchor doc. Use the Level 2 (Components) decisions for layer placement and Level 3 (Interactions) for dependency flow.
Without approved design: classify the required components into architecture layers using the layer definitions from framework:architecture. For each component determine:
- What is its primary responsibility? (business rules, data access, coordination, external I/O)
- Which layer in the loaded architecture doc matches that responsibility?
- What dependency constraints apply to that layer?
If framework:architecture resolved no layer definitions (neither defaults nor a custom doc), surface it: "No architecture rules available. Run /architecture-refiner to define your architecture standards. Proceeding without architecture guidance." Continue with the remaining atom rails.
Present the proposed layer assignments to the user for approval before proceeding.
In both cases, plan an inside-out implementation order following the dependency direction from the loaded architecture doc — start at the innermost layer (no outward dependencies) and work outward, so each layer's dependencies already exist when it is built.
Classify each operation per the flow patterns in the loaded architecture doc (e.g., command vs query flows, or the equivalent distinction in your architecture style).
Present the implementation plan — ordered component list, layer assignments, flow classifications — and confirm with the user before writing code. If the user rejects or corrects the plan, revise and re-present it. STOP: Never start coding on an unagreed plan.
After the plan is approved, ask the user to choose a review mode:
"How should we review the implementation?"
- Layer-by-layer (recommended) — implement each layer fully, pause for review before the next. One review point per layer.
- Full autonomy — implement everything end-to-end, present the complete result. One review point at the end. (If a blueprint exists, still pause on any deviation from the approved design.)
- Component-by-component — pause after each individual component for feedback. Maximum review points.
Default to layer-by-layer if the user expresses no preference.
Step 3: Implement Per Component
For each component in planned order, generate code and tests together — tests are not an afterthought.
Every component:
- Prefer the simpler path first. Before writing custom code: does a stdlib function, platform built-in, or existing dependency already cover this? If yes, use it. Can it be expressed in shorter code? Use that. Write custom code only when the simpler options genuinely fall short.
- Place in the correct architecture layer per
framework:architecture; dependency direction follows the loaded architecture rules. - Apply
framework:clean-codeself-validation during generation. Inline checks: SRP compliance, meaningful naming, low cyclomatic complexity, proper error handling, no magic values, clean function signatures, no dead code, appropriate abstraction level, clear control flow, minimal comments (the code documents itself). - Write tests using
framework:test-qualityself-validation. - Run what you wrote, where the environment allows: execute the component's tests before presenting and include the result in the compliance note. If execution is not available, say so — never imply tests passed when they were only written.
Conditional checks per component:
- Domain layer → apply
framework:domain-driven-designself-validation. - Trust boundary (HTTP handler, external API call, user-input processing, file I/O) → apply
framework:secure-codingself-validation. - Blueprint exists AND Level 4 was confirmed present in Step 1 → verify the component fulfills its L4 (Contracts) specification; flag any deviation from the agreed contract. If the user proceeded without L4 (Check 2 failed), skip this check — there are no contracts to verify against.
Post-generation verification (every component, all review modes):
After generating each component, before presenting it to the user:
- Run the Self-Validation Checklist from each applicable atom against every function/class in the component. Atoms use imperative STOP-verify language — follow it literally.
- Run the Active Anti-Pattern Scan from each applicable atom; check every box on the scan list.
- Violations found → fix before presenting.
- Judgment calls flagged (see each atom's Ambiguity Signals) → collect them and present via the
framework:collaborative-judgmentprotocol before showing code. Never silently resolve. - All checks pass with no flagged judgment calls → present with a brief compliance note ("All clean-code, DDD checks pass") — one line when clean; verbose only when reporting violations and fixes.
Pacing — follow the user's chosen review mode:
- Layer-by-layer: implement all components within a layer, present the full layer (code + tests) for review before starting the next layer.
- Full autonomy: implement all layers continuously; present the complete implementation (all code + tests) at the end, then skip to Step 4.
- Component-by-component: present each component with its tests individually; wait for approval before the next.
- Exception (all modes): a component needs a significant deviation from the plan (new dependency, changed contract, unexpected complexity) → STOP: pause immediately and discuss before continuing, regardless of the chosen review mode.
Step 4: Cross-Component Verification
These checks verify architecture coherence, not code quality (already verified per-component in Step 3). After all components are implemented:
- With blueprint: verify interaction flows match the L3 (Interactions) design — every designed interaction is traceable in the code.
- Dependency direction: apply
framework:architectureverification across all components — inter-component dependency direction follows the loaded architecture rules; no layer imports from a layer it is not permitted to depend on. - Zero Implementation Rule: check that no new components, interactions, or contracts were introduced beyond the Step 2 plan. Something added → flag it — it may be necessary, but it must be a conscious decision, not scope creep.
- Final security scan: apply
framework:secure-codingacross component boundaries — data flowing between components crosses trust bounds safely. - Learnings check: if operational learnings were loaded in Step 1, verify that previously-flagged patterns did not recur in this implementation.
Step 5: Enrich Context
Throughout Steps 3-4, use framework:context-anchoring Enrich behavior to keep the living doc current:
- Add key files as created — path + role in the doc's Key Files table (skip a path already listed).
- Capture implementation decisions — library choices, pattern selections, deviations from the blueprint, tradeoffs made, as Decisions Log entries (decision, reasoning, alternatives considered).
- Resolve open questions — when a design-phase question gets answered during implementation, log the answer as a decision entry AND remove the question from the Open Questions list.
- No context doc exists and significant implementation decisions were made → suggest creating one.
Harvest learnings: run framework:learning-harvest Harvest behavior. Session context: "implementation session — code generation from design contracts". Synthesize and propose cross-cutting patterns from this session — implementation gotchas, design-to-reality gaps, library/framework lessons. The user confirms what enters the document. STOP: run this before closing the feature lifecycle below.
Close the feature lifecycle: write status: complete into the context doc frontmatter. STOP: required discrete file edit.
STOP: do not write status to requirement_doc. The requirement's status belongs to whoever manages it — a human, or an external system it may live in. This molecule manages only its own context doc.
After enriching the context doc, recommend review:
"Implementation complete. Recommend running
/reviewon the generated code before considering the feature done — it provides an independent quality assessment against the same atom standards, catches issues the generator may be blind to, and captures learnings for future sessions."
Archivos de esta skill
1Preguntas sobre la skill code-forge
¿Cómo instalo la skill code-forge en Claude Code?
Ejecuta npx degit techygarg/lattice/skills/code-forge ~/.claude/skills/code-forge. Claude Code carga las skills desde ~/.claude/skills (todos los proyectos) o .claude/skills (un proyecto) y usa una skill cuando su descripción coincide con la tarea.
¿Qué clientes pueden usar la skill code-forge?
Cualquier cliente que lea el formato Agent Skills: Claude Code, Codex, Gemini CLI y claude.ai (subir como ZIP). Los scripts de la skill se ejecutan solo donde el cliente permite la ejecución de código.
¿Qué debo hacer si mi documento de diseño no está aprobado?
Si el estado del documento de contexto no es 'approved', deberías ejecutar /design-blueprint primero, aunque puedes continuar si confirmas la decisión.
¿Cómo decide la herramienta el orden de implementación?
Utiliza un orden de implementación de adentro hacia afuera siguiendo la dirección de las dependencias del documento de arquitectura cargado, comenzando por la capa más interna.
¿Qué modos de revisión están disponibles durante la implementación?
Puedes elegir entre modos de revisión capa por capa, autonomía total o componente por componente.