{
  "markdown": "# claude-socratic-plugin\n\n> Socratic mode for Claude Code — learn while you build.\n\nDesigned for empirical developers: no academia, no empty theory. Just useful context at the exact moment you need it.\n\n---\n\n## What does it do?\n\nIt injects contextual knowledge blocks into Claude's responses, triggered automatically based on what's happening in your code.\n\nThe key: **⊛ Curious** appears *before* executing — Claude questions its own assumptions out loud before doing anything. All other types appear *after*.\n\n---\n\n## Insight types\n\n### ⊛ Curious\n> Before executing significant tasks, Claude questions its assumptions out loud.\n\n```\n⊛ Curious ─────────────────────────────────────\nWhy is login failing here but not on the legacy portal?\nI'm assuming the session persists between requests — is that\ncorrect in this Playwright context? If not, the problem is\nupstream from this function.\n─────────────────────────────────────────────────\n```\n\n---\n\n### ★ Insight\n> Specific implementation decisions in the code just written.\n\n```\n★ Insight ─────────────────────────────────────\n`waitForSelector` is used with an explicit timeout instead of\nthe default because the SAT portal has variable latency (2-15s).\nPlaywright's default (30s) is too permissive and masks real\nload errors.\n─────────────────────────────────────────────────\n```\n\n---\n\n### ⟳ Flow\n> Traces the execution path of complex code.\n\n```\n⟳ Flow ─────────────────────────────────────────\nHTTP request → detectPortal() → legacy/new branch\n  ├─ legacy: ptscdecprov.clouda.sat.gob.mx\n  │    └─ loginCIEC() → searchByPeriod() → downloadXML()\n  └─ new:    pstcdypisr.clouda.sat.gob.mx (>= 2025)\n       └─ loginEFirma() → selectYear() → exportCSV()\n─────────────────────────────────────────────────\n```\n\n---\n\n### ⬡ Tradeoff\n> What alternatives existed and why this approach was chosen.\n\n```\n⬡ Tradeoff ─────────────────────────────────────\n`page.evaluate()` could have been used to extract data from\nthe DOM, but intercepting the network response was chosen because:\n(1) it's more stable against UI changes, (2) the portal uses\npartial renders that make the DOM inconsistent.\n─────────────────────────────────────────────────\n```\n\n---\n\n### ❐ Pattern\n> The design pattern in use and why it fits here.\n\n```\n❐ Pattern ────────────────────────────────────────\nStrategy pattern applied: `detectPortal()` selects at runtime\nwhich implementation to use (legacy vs new). It fits here\nbecause SAT has two portals with the same logical interface but\ndifferent UI — Strategy allows adding a third portal without\ntouching the orchestrator.\n─────────────────────────────────────────────────\n```\n\n---\n\n### ▲ Level Up\n> Transferable knowledge applicable beyond this specific code.\n\n```\n▲ Level Up ──────────────────────────────────────\nWhen an external service changes its portal without deprecating\nthe old one, the most sustainable pattern is to detect the version\nat runtime instead of maintaining two separate implementations.\nApplies to any integration with government APIs or coexisting\nlegacy systems.\n─────────────────────────────────────────────────\n```\n\n---\n\n### 🎓 Concept\n> Defines terms, patterns, and paradigms — no academicism.\n\n```\n🎓 Concept ───────────────────────────────────────\n**AST (Abstract Syntax Tree)**\nRepresentation of code as a tree of nodes. Each node is a\nlanguage construct (function, variable, if). Used in linters,\ncompilers, and tools like cocoindex-code to understand code\nwithout executing it.\n─────────────────────────────────────────────────\n```\n\nExplained concepts are saved to `~/.claude/socratic-glossary.md` — Claude checks it at the start of each session and never repeats an explanation.\n\n---\n\n## Installation\n\n**1. Register the marketplace:**\n```bash\nclaude plugin marketplace add chrlss11/claude-socratic-plugin\n```\n\n**2. Install the plugin:**\n```bash\nclaude plugin install claude-socratic-plugin@claude-socratic-plugin\n```\n\n**3. Restart Claude Code.** On your first session the plugin will automatically guide you through the initial setup.\n\nOr if you already installed and want to configure manually:\n```\n/socratic init\n```\n\n---\n\n## Commands\n\n### `/socratic init`\nInteractive initial setup. Shows each type with its description and example, and asks which ones to enable:\n\n```\n─────────────────────────────────────────────\n⊛ Curious\nBefore executing significant tasks, Claude\nquestions its own assumptions out loud.\n\nExample:\n  \"Why is it failing here but not on the legacy\n  portal? I'm assuming the session persists — is\n  that correct in this context?\"\n\nCurrent status: ✓ enabled\n─────────────────────────────────────────────\n\nWhich types do you want to enable? Type the names separated by commas,\nor type \"all\" / \"none\".\n\n✓ Configuration saved\n\n  Enabled (5):   ⊛ Curious  ★ Insight  ⟳ Flow  🎓 Concept  ▲ Level Up\n  Disabled (2):  ⬡ Tradeoff  ❐ Pattern\n```\n\n---\n\n### `/socratic list`\n\n```\nActive types: 6 of 7\n\n  ✓  ⊛  Curious    — Before significant tasks\n  ✓  ★  Insight    — After writing code\n  ✓  ⟳  Flow       — After async/pipeline code\n  ✓  ⬡  Tradeoff   — After design decisions\n  ✓  ❐  Pattern    — When a pattern is applied\n  ✓  🎓 Concept    — When a technical term appears\n  ✗  ▲  Level Up   — Disabled\n```\n\n---\n\n### `/socratic toggle <name>`\n\n```\n/socratic toggle flow\n\n✓ Flow is now disabled\n```\n\n---\n\n### `/socratic add <description>`\n\n```\n/socratic add explain the performance impact of each decision we make\n\n✓ New type created:\n\n  Emoji:       ⚡\n  Name:        Performance\n  Description: Analyzes the performance impact of the decision\n               made — memory, latency, CPU, or I/O.\n  When:        After changes with potential performance impact\n```\n\n---\n\n## Glossary\n\nEach concept explained by 🎓 is persisted in `~/.claude/socratic-glossary.md`:\n\n```markdown\n## AST (Abstract Syntax Tree)\nRepresentation of code as a tree of nodes...\n\n## Strategy Pattern\nPattern that encapsulates interchangeable algorithms...\n\n## Idempotency\nProperty of an operation that produces the same result...\n```\n\nClaude checks this file at the start of each session. Already-explained concepts are not repeated — only referenced.\n\n---\n\n## Manual configuration\n\nTypes are stored in `~/.claude/socratic-config.json`. You can edit it directly or use the `/socratic` commands.\n\n---\n\n## License\n\nMIT — [chrlss11](https://github.com/chrlss11)\n",
  "bytes": 6333,
  "sha": "33fcebe9336517718b334240691ed0d72d7bc89befcdeaf64dec2dc9a082cfdc",
  "repo_slug": "chrlss11/claude-socratic-plugin",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_chrlss11_claude_socratic_plugin_https_gi_ebf3d2c7/readme"
}