Cómo usar
- Copia el comando y revisa el paquete antes de instalarlo en tu entorno de agente.
- Consulta las herramientas, credenciales y entornos necesarios en el documento original.
- Describe las entradas y el resultado deseado; contrasta la salida con las fuentes.
npx skills add https://github.com/aicodeking/deepseek-stack --skill ds-principlesAntes de empezar
- La instalación no incluye suscripción al modelo, cuota API ni permisos sobre tus archivos.
- Las estrellas e instalaciones reflejan actividad, no una prueba independiente de calidad o seguridad.
Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.
Engineering principles
If a trigger matches, apply the rule. Name principles that changed a decision.
Design
- Subtract, then add little. Remove dead code and stale checks first, then make the shortest diff that works. No abstraction with one user. Apply when sizing a diff or tempted to add a layer.
- Data shape first. Choose the core types and structures before logic. Apply before writing new logic.
- Model the domain. Put states in one structure, such as a typed union, state machine, or lookup table, not scattered conditionals. Apply when code branches a lot or repeats a shape across files.
- Redesign for the new need. Fit a new requirement as if it existed from day one. Apply when an addition strains the design.
- Low reader load. Inline one-caller wrappers and shrink mutable scope. Apply when code is hard to trace.
- Guards at boundaries. Validate where input enters: CLI, config, network, files, external APIs. Trust types inside and keep core logic pure. Apply when adding validation or error handling.
- Idempotent steps. Rerunning a step, even after a crash, reaches the same state. Apply to commands, setup, and retries.
- No shared writers. Give each concurrent actor its own file, branch, or key before using locks. Apply when parallel work touches shared state.
- Migrate, then delete. Move every caller and delete the old API in one change. No shims. Apply when replacing an API or rewriting in phases.
- Compare options. For an unprecedented design, sketch two or three. Prefer fewer, polished features. Apply to novel architecture, UX, or scope choices.
Debugging and verification
- Fix root causes. Fix where state first went wrong. A guard fixes only legitimate states. Apply when debugging.
- Attack the premise. After two failed fixes that share an assumption, write it down and test it directly. Apply before a third attempt.
- Prove it works. Run the real thing and read the actual output, not a proxy. Apply before claiming done.
- Verifiable units. Split work into steps that each end in a passing check. Apply to sweeps, migrations, and stacked commits.
- Test behavior. Assert what callers can observe, so tests survive refactors. Apply when writing or keeping a test.
- Explain the number. Find what limits a measurement and confirm it measured the right work. Apply to benchmarks and eval scores.
- Build the tool. Script bulk or repeated work so it can be rerun. Apply to large edit sets or checks.
Process
- Guard the context. Keep summaries, not dumps. Send bulk reading to subagents. Apply when outputs or files are large.
- Do not block on the human. On reversible work, proceed and show the result. Apply when tempted to ask "should I?".
- Encode repeated lessons. A correction given twice becomes a lint, test, or script. Apply when a mistake recurs.
- Comments explain why. Keep a comment only for a reason the code cannot show, such as an external constraint or a public API contract. Delete narration and dead code. Fix code whose surprise needs a comment. Apply when writing or reviewing code.
Types
- Make illegal states unrepresentable. Use discriminated unions, not optional-field bags.
- Parse external data once at the boundary into a named type. Trust it inside.
- Use
unknownfor untrusted input. Neverany. Noascasts before validation. - Derive types from a schema, not hand-written guards.
- Add a
nevercheck in default branches so new variants fail the build. - Brand primitives that must not mix, such as user IDs and order IDs.

