software-engineer

Apply SICP-based design principles to software development tasks.

8|Updated Nov 29, 2025
One-click install
npx skills add https://github.com/Pyroxin/opinionated-claude-skills --skill software-engineer-pyroxin
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-engineer
Source: https://github.com/Pyroxin/opinionated-claude-skills/tree/main/opinionated-software-engineering/skills/software-engineer
Command: npx skills add https://github.com/Pyroxin/opinionated-claude-skills --skill software-engineer-pyroxin

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides a comprehensive framework for building robust, maintainable, and well-designed software systems by codifying core software engineering philosophies and design principles.

Core Features & Use Cases

  • Foundational Principles: Learn and apply principles derived from SICP, focusing on program as expression, managing complexity through abstraction, and controlling systems via naming and scope.
  • Ontological Design: Understand how to design APIs and systems as enduring ontologies, emphasizing semantic commitments, open-world assumptions, and growth through accretion.
  • Paradigm Integration: Guidance on when and how to effectively mix functional, object-oriented, and logic programming paradigms.
  • Design Process: Best practices for requirements-driven design, code planning, scaffolding, and understanding engineering trade-offs.
  • Use Case: When designing a new API, use this Skill to ensure your naming conventions are clear, your data structures are extensible, and your evolution strategy supports long-term maintainability and composition.

Quick Start

Explain the principle of 'Program as Expression of Ideas' from the software-engineer skill.

Frequently Asked Questions about software-engineer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
What are core software engineering design principles for managing system complexity?

Core software engineering design principles manage complexity through abstraction, controlling systems via naming and scope, and treating programs as expressions of ideas. They ensure robust, maintainable software systems by establishing clear ontological boundaries.

How do I design an API ontology to support long-term maintainability?

Designing an API ontology requires establishing clear semantic commitments and using an open-world assumption. Systems should grow through accretion, ensuring naming conventions are clear and data structures remain extensible for long-term maintainability and composition.

How to mix functional, object-oriented, and logic programming paradigms effectively?

Effectively mixing functional, object-oriented, and logic programming paradigms requires understanding engineering trade-offs. Guidance on paradigm integration helps determine when and how to apply each approach during system design and code implementation.

Does software engineering philosophy based on SICP apply to system refactoring?

SICP-based software engineering philosophy applies to all development tasks including system refactoring. It provides a comprehensive framework for making architectural decisions by codifying principles of abstraction and ontological design.

What is the best way to plan code scaffolding for new software systems?

The best way to plan code scaffolding involves a requirements-driven design process. Applying foundational engineering principles ensures the scaffolding supports abstraction and manages complexity, leading to robust architectural foundations.

When should I not use abstraction in software design?

Abstraction in software design should be carefully weighed against engineering trade-offs. While essential for managing complexity, improper abstraction can hinder system robustness if it ignores clear semantic commitments and ontological boundaries.