home / skills / richardanaya / agent-skills / epstemic-extraction

epstemic-extraction skill

/.opencode/skill/epstemic-extraction

This skill analyzes text to extract concepts, propositions, and arguments using Aristotelian and Objectivist epistemology to reveal structure and logic for

npx playbooks add skill richardanaya/agent-skills --skill epstemic-extraction

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
6.3 KB
---
name: epistemic-extraction
description: An epistemic extraction system that analyzes text to identify its logical structure according to Aristotelian and Objectivist epistemology. Your task is to extract concepts, propositions, and arguments from provided text.
license: MIT
compatibility: opencode
metadata:
  audience: thinks
  philosophy: aristotle, ayn rand
---

# Epistemic Extraction System

## Theoretical Framework

The extraction follows this hierarchy:

- **Percepts** ground **concepts**
- **Concepts** compose **propositions**
- **Propositions** compose **arguments**

Each level has its own standards:

- Concepts must be properly formed (valid abstraction, essential definitions)
- Propositions must assert something that can be true or false
- Arguments must have valid logical form

## Extraction Components

### Concepts

A concept is an open-ended mental integration of concretes according to their essential characteristics. Extract the key terms the text relies upon to make its claims.

For each concept, identify its **essentials**—the attributes which explain the most about the entity. A concept may have multiple essentials.

**Guidelines for essentials:**

- Use plain language a general dictionary would use
- Avoid jargon or technical terminology unless necessary
- Keep phrases clear and concise
- Capture both genus and differentia where applicable

### Propositions

A proposition is a statement that asserts or denies something of something—one that is capable of being true or false. Extract only **universal propositions** from the text.

**Proposition types:**

- **universal_affirmative**: "All S are P"
- **universal_negative**: "No S is P"

**Guidelines for propositions:**

- Do not use pronouns; resolve all references to their specific referents
- Use plain language with clear meaning
- Each proposition should be atomic (one claim per proposition)
- Extract the implicit universal claims the text relies upon, not just explicit statements

### Arguments

An argument is a set of propositions where some (premises) support another (conclusion). Identify the logical structures in the text.

**Guidelines for arguments:**

- State all premises as full propositions, not as references or numbers
- Name each argument descriptively
- Identify the logical form where applicable (Barbara, Celarent, Sorites, Conjunction, etc.)
- Include both explicit and implicit premises the argument relies upon
- State conclusions in plain language

## Output Format

Return a JSON object conforming to the schema defined at the end of this document.

## Extraction Principles

1. **Charity**: Interpret the text in its strongest reasonable form
2. **Completeness**: Extract implicit premises and universal claims the text assumes
3. **Clarity**: Use simple, dictionary-standard language throughout
4. **Atomicity**: Break complex claims into their constituent propositions
5. **Hierarchy**: Recognize that arguments depend on propositions, which depend on concepts

## Common Logical Forms

- **Barbara** (AAA-1): All M are P; All S are M; Therefore all S are P
- **Celarent** (EAE-1): No M is P; All S are M; Therefore no S is P
- **Sorites**: A chain of syllogisms where the conclusion of each is a premise of the next
- **Conjunction**: Two premises combined to yield a joint conclusion
- **Modus Ponens**: If P then Q; P; Therefore Q
- **Modus Tollens**: If P then Q; Not Q; Therefore not P

---

## JSON Schema

```json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "EpistemicExtraction",
  "description": "Schema for epistemic extraction of concepts, propositions, and arguments from text",
  "type": "object",
  "required": ["concepts", "propositions", "arguments"],
  "properties": {
    "concepts": {
      "type": "array",
      "description": "Key terms the text relies upon to make its claims",
      "items": {
        "type": "object",
        "required": ["term", "essentials"],
        "properties": {
          "term": {
            "type": "string",
            "description": "The concept word or phrase"
          },
          "essentials": {
            "type": "array",
            "description": "Attributes which explain the most about the entity",
            "items": {
              "type": "string"
            },
            "minItems": 1
          }
        }
      }
    },
    "propositions": {
      "type": "array",
      "description": "Universal statements that assert or deny something",
      "items": {
        "type": "object",
        "required": ["type", "statement"],
        "properties": {
          "type": {
            "type": "string",
            "enum": ["universal_affirmative", "universal_negative"],
            "description": "The logical type of the proposition"
          },
          "statement": {
            "type": "string",
            "description": "The full proposition in plain language without pronouns"
          }
        }
      }
    },
    "arguments": {
      "type": "array",
      "description": "Logical structures where premises support conclusions",
      "items": {
        "type": "object",
        "required": ["name", "premises", "conclusion", "form"],
        "properties": {
          "name": {
            "type": "string",
            "description": "A descriptive name for the argument"
          },
          "premises": {
            "type": "array",
            "description": "Full proposition statements serving as premises",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "conclusion": {
            "type": "string",
            "description": "The proposition that follows from the premises"
          },
          "form": {
            "type": "string",
            "enum": [
              "Barbara",
              "Celarent",
              "Darii",
              "Ferio",
              "Cesare",
              "Camestres",
              "Festino",
              "Baroco",
              "Darapti",
              "Disamis",
              "Datisi",
              "Felapton",
              "Bocardo",
              "Ferison",
              "Sorites",
              "Conjunction",
              "Modus Ponens",
              "Modus Tollens",
              "Disjunctive Syllogism",
              "Hypothetical Syllogism",
              "Reductio ad Absurdum"
            ],
            "description": "The logical form of the argument"
          }
        }
      }
    }
  }
}
```

Overview

This skill analyzes natural language texts to extract their logical anatomy according to Aristotelian and Objectivist epistemology. It identifies key concepts with essential attributes, converts claims into universal propositions, and maps how those propositions form structured arguments. The output is explicit, atomic, and designed for logical evaluation or reformulation.

How this skill works

The system scans text to find recurring terms and abstracts them into concepts with clear essentials (genus and differentia where applicable). It then identifies implicit and explicit universal propositions, resolving pronouns and splitting complex claims into atomic universal affirmatives or negatives. Finally, it groups those propositions into arguments, naming premises and conclusions and matching them to classical logical forms when possible.

When to use it

  • Analyzing academic or philosophical texts for underlying logical structure
  • Auditing policy documents or legal arguments for hidden premises
  • Teaching logic, critical thinking, or formal reasoning with concrete examples
  • Preparing rebuttals or strengthening an argument by exposing implicit claims
  • Converting informal discourse into precise premises and conclusions

Best practices

  • Provide complete passages rather than isolated sentences to capture implicit premises
  • Keep source text in the original wording to preserve nuance, then allow the skill to resolve pronouns
  • Expect universalization of claims; supply contextual scope if a claim is not meant universally
  • Review extracted essentials and propositions for domain-specific technical terms and supply definitions when needed
  • Use the argument mappings to test validity and identify missing premises

Example use cases

  • Extracting concepts and premises from a policy memo to reveal unstated assumptions
  • Turning a philosophical essay into a set of universal propositions for classroom analysis
  • Evaluating a scientific claim by listing the concepts, universal premises, and the form of the supporting argument
  • Rewriting an editorial into atomic premises and checking the syllogistic validity of its assertions

FAQ

Does the system extract every sentence as a proposition?

No. It extracts universal propositions that assert or deny something capable of truth or falsehood and breaks complex claims into atomic universal statements.

How are technical terms handled in concepts?

The system prefers plain-language essentials; provide domain definitions when necessary and it will include them as essentials.

Which logical forms does the system recognize?

It recognizes classical syllogistic forms (e.g., Barbara, Celarent, Sorites) and common inference forms (e.g., Modus Ponens, Modus Tollens, Conjunction).