macos-programmer
macOS-specific development patterns, platform APIs, and decision frameworks. Use when developing Mac apps, macOS applications, Cocoa/AppKit code, or making…
Logic programming thinking patterns and relational design principles. Use when working with logic languages (Prolog, miniKanren, Datalog, OWL2, Answer Set Programming) or applying declarative, constraint-based approaches in multi-paradigm systems.
$ npx -y skills add Pyroxin/opinionated-claude-skills --skill logic-programmer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/logic-programmerContext preview
The summary Claude sees to decide when to auto-load this skill.
Logic programming thinking patterns and relational design principles. Use when working with logic languages (Prolog, miniKanren, Datalog, OWL2, Answer Set Programming) or applying declarative, constraint-based approaches in multi-paradigm systems.
name: logic-programmer description: Logic programming thinking patterns and relational design principles. Use when working with logic languages (Prolog, miniKanren, Datalog, OWL2, Answer Set Programming) or applying declarative, constraint-based approaches in multi-paradigm systems.
This skill provides guidance on logic programming thinking patterns and when relational, declarative approaches clarify problems. Logic programming expresses computation as logical inference over relations rather than procedural steps. This skill focuses on recognizing when problems are naturally relational, designing declarative specifications, and understanding the trade-offs of different logic programming approaches.
Use this skill when:
<core_philosophy>
<relational_thinking_decision>
Logic programming thinks in terms of relationships that must hold, not steps to execute. The key question: does relational thinking make the problem clearer?
**Relational thinking clarifies when:**
**Relational thinking obscures when:**
**Staff insight:** Don't force problems into relational form. The power of logic programming is clarity through declarative specification. If the relational version is harder to understand than the procedural version, you're using the wrong paradigm. </relational_thinking_decision>
> "Algorithm = Logic + Control" — Robert Kowalski (1979)
An algorithm consists of logic (what to compute) and control (how to compute it). Ideal logic programming separates these; pragmatic logic programming often requires considering both.
<declarative_vs_procedural>
Express what must be true, not how to compute it. Describe the problem constraints and let the system find solutions.
**Declarative thinking:**
**When declarative specifications win:**
**When procedural algorithms win:**
</declarative_vs_procedural>
<bidirectionality>
Relations can work in multiple computational directions. The same logical specification can answer different questions.
**Example:** `append(Xs, Ys, Zs)` defines relationship between three lists
**Design question:** Which computational directions are actually useful?
**Don't over-design:** Not all relations need to work in all directions. Design for modes you'll use. Document restrictions if they exist. </bidirectionality> </core_philosophy>
**Closed World Assumption (CWA):** What is not known to be true is false.
**Open World Assumption (OWA):** Unknown is unknown, not false.
**Design question:** What does absence of information mean in your domain?
**Monotonic:** Adding facts never invalidates previous conclusions.
**Non-monotonic:** New facts can retract previous conclusions.
**Design question:** Does your domain require defaults and exceptions?
**Declarative semantics:** What the program means (logical interpretation)
**Operational/procedural semantics:** How the program executes
**Fully declarative systems:** Datalog, OWL2, Answer Set Programming separate logic from control
**Procedural systems:** Prolog, miniKanren require consideri
This project descends from the personal prompts I'd been keeping for Claude Code prior to the release of skills and plugins. Over time it's also evolved into a sandbox where I figure out what makes Claude reliably good at a task, and find prompts that work.
macOS-specific development patterns, platform APIs, and decision frameworks. Use when developing Mac apps, macOS applications, Cocoa/AppKit code, or making…
Swift-specific idioms, tooling, and philosophy for both application development and command-line scripting. Use when working with Swift code, including Swift…
Fish shell scripting judgment frameworks and critical idioms. Use when writing Fish scripts or shell automation. Focuses on when to use Fish vs bash,…
Java-specific tooling, documentation standards, testing practices, and modern idioms. Use when working with Java code or Java-based projects on the JVM.
Clojure-specific philosophy, idioms, and judgment frameworks. Use when working with Clojure code. Emphasizes data-oriented design, runtime validation with…
Racket-specific tooling, libraries, idioms, and language-oriented programming philosophy. Use when working with Racket code. Emphasizes LOP, contracts, macros,…