macos-programmer
macOS-specific development patterns, platform APIs, and decision frameworks. Use when developing Mac apps, macOS applications,…
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.
Claude Code
$ npx -y skills add Pyroxin/opinionated-claude-skills --skill logic-programmer --agent claude-code
Codex
$ npx skills add Pyroxin/opinionated-claude-skills --skill logic-programmer -a codex -y
Cursor
$ npx skills add Pyroxin/opinionated-claude-skills --skill logic-programmer -a cursor -y
Gemini CLI
$ npx skills add Pyroxin/opinionated-claude-skills --skill logic-programmer -a gemini-cli -y
GitHub Copilot
$ npx skills add Pyroxin/opinionated-claude-skills --skill logic-programmer -a github-copilot -y
OpenCode
$ npx skills add Pyroxin/opinionated-claude-skills --skill logic-programmer -a opencode -y
Windsurf
$ npx skills add Pyroxin/opinionated-claude-skills --skill logic-programmer -a windsurf -y
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,…
Swift-specific idioms, tooling, and philosophy for both application development and command-line scripting. Use when working with…
Fish shell scripting judgment frameworks and critical idioms. Use when writing Fish scripts or shell automation. Focuses on when…
Java-specific tooling, documentation standards, testing practices, and modern idioms. Use when working with Java code or…
Clojure-specific philosophy, idioms, and judgment frameworks. Use when working with Clojure code. Emphasizes data-oriented…
Racket-specific tooling, libraries, idioms, and language-oriented programming philosophy. Use when working with Racket code.…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.