home / skills / zpankz / mcp-skillset / reason
This skill helps you reason recursively to reveal emergent complexity and produce structured conclusions across problems.
npx playbooks add skill zpankz/mcp-skillset --skill reasonReview the files below or copy the command above to add this skill to your agents.
---
name: reason
description: "Understand through recursive decomposition and modular reconstruction
of simple operations to reproduce emergent complexity. Use this skill whenever
reasoning is required. Framework for [[#parse|parsing]], [[#branch|branching]],
[[#reduce|reducing]], [[#ground|grounding]] and [[#emit|emitting]]. Employs
metacognitive reasoning epistemology, leveraging first principles through
recursive decomposition[^1]. Self-referential and scale-invariant."
---
# reason
## structure
```mermaid
graph LR
A[parse] --> B[branch]
B --> C[reduce]
C --> D[ground]
D --> E[emit]
style A fill:#e1f5ff
style B fill:#fff4e1
style C fill:#ffe1f5
style D fill:#e1ffe1
style E fill:#f5e1ff
```
[[#parse]] → [[#branch]] → [[#reduce]] → [[#ground]] → [[#emit]] ^structure
---
## parse
1. receive `input` ^input
2. extract[^2]:
- #component/parameter — what varies ^parameters
- #component/constant — what is fixed ^constants
- #component/operation — what transforms ^operations
- #component/unknown — what is sought^unknowns
3. A question is a function awaiting its arguments[^3].
Identify what arguments it needs. ^function-analogy
---
## branch
Generate multiple resolution paths before committing[^4]:
| Path Type | Tag | Purpose | Anchor |
|-----------|-----|---------|--------|
| Typical | #path/typical | The conventional approach | ^path-typical |
| Alternative | #path/alternative | A valid but less obvious route | ^path-alternative |
| Boundary | #path/boundary | The edge case or inversion | ^path-boundary |
Assign rough likelihood. Retain all paths until [[#reduce|reduction]] forces
convergence or reveals genuine divergence worth surfacing.
>[!warning] Distribution Sampling ^distribution-sampling
>This is not optional. Single-path reasoning collapses to the mode.
>The goal is to sample from the full distribution of valid approaches.
---
## reduce
Transform step by step[^5]. Each step follows the primitive: ^transformation-primitive
$$\text{input} \xrightarrow{\text{operation}} \text{output}$$
>[!caution] Skip Nothing ^skip-nothing
>An obvious step is still a step.
>A hidden step is where errors hide.
### five primitive operations
| Operation | Tag | Definition | Anchor |
|-----------|-----|------------|--------|
| `select` | #primitive/select | condition → one of two branches | ^op-select |
| `sequence` | #primitive/sequence | output of one feeds [[SKILL#^input\|input]] of next | ^op-sequence |
| `iterate` | #primitive/iterate | apply operation n times | ^op-iterate |
| `recurse` | #primitive/recurse | define in terms of self, with base case | ^op-recurse |
| `search` | #primitive/search | find first element satisfying constraint | ^op-search |
Name which [[SKILL#five primitive operations|primitive]] you are applying.
Substitution is explicit:
> Given X, applying rule R yields X transformed by R
Never say "therefore" without showing the step that licenses it. ^explicit-substitution
---
## ground
Before [[#emit|emitting]], verify:
- [ ] Each conclusion traces to stated premises only^premise-tracing
- [ ] Terms from separate contexts are not conflated^context-separation
- [ ] The result is terminal (no further reduction possible) or explicitly
partial (further [[SKILL#^input|input]] required) ^termination-check
### convergence logic
| State | Tag | Meaning | Anchor |
|-------|-----|---------|--------|
| Converged | #state/converged | confidence is high | ^state-converged |
| Diverged | #state/diverged | present the divergence—it is the answer | ^state-diverged |
| Continuing | #state/continuing | [[#reduce\|reduction]] could continue | ^state-continuing |
| Blocked | #state/blocked | state what is missing | ^state-blocked |
---
## emit
Output the synthesis.
| Context | Tag | Strategy | Anchor |
|---------|-----|----------|--------|
| Simple query | #query/simple | direct answer | ^emit-simple |
| Complex query | #query/complex | show the [[#^structure\|structure]] that produced the answer | ^emit-complex |
| Creative task | #task/creative | weight toward [[#branch\|boundary paths]][^6] | ^emit-creative |
| Analytical task | #task/analytical | weight toward [[#ground\|convergent paths]][^7] | ^emit-analytical |
>[!note] Trace Principle ^trace-principle
>The trace is part of the answer when the trace is informative.
>The trace is omitted when it would obscure.
---
[^1]: Recursive decomposition breaks complex problems into self-similar subproblems until base cases are reached.
[^2]: Component extraction as defined in [[#parse|parse phase]] identifies [[SKILL#^parameters|parameters]], [[SKILL#^constants|constants]], [[SKILL#^operations|operations]], and [[SKILL#^unknowns|unknowns]].
[^3]: See [[SKILL#^function-analogy|function analogy]] for the functional interpretation of queries.
[^4]: Multi-path generation prevents [[SKILL#^distribution-sampling|mode collapse]] by exploring [[SKILL#^path-typical|typical path]], [[SKILL#^path-alternative|alternative path]], and [[SKILL#^path-boundary|path boundary]] simultaneously.
[^5]: Stepwise transformation using [[SKILL#^op-select|op-select]], [[SKILL#^op-sequence|op-sequence]], [[SKILL#^op-iterate|op-iterate]], [[SKILL#^op-recurse|op-recurse]], or [[SKILL#^op-search|op-search]].
[^6]: Boundary paths (see [[SKILL#^path-boundary|path-boundary]]) explore inversions and edge cases suitable for creative divergence.
[^7]: Convergent paths (see [[SKILL#^state-converged|state-converged]]) prioritize analytical rigor through [[SKILL#^premise-tracing|premise-tracing]] and [[SKILL#^context-separation|context-separation]].
This skill applies recursive decomposition and modular reconstruction to reproduce emergent complexity from simple operations. It provides a disciplined pipeline—parse, branch, reduce, ground, emit—for reliable, metacognitive reasoning. Use it whenever structured, traceable, and multi-path reasoning is required.
It first parses the input into components: parameters, constants, operations, and unknowns. It then generates multiple resolution paths (typical, alternative, boundary) and assigns rough likelihoods. Reduction proceeds stepwise using five primitive operations (select, sequence, iterate, recurse, search) with explicit substitutions. Before output, conclusions are grounded by tracing premises, checking context separation, and verifying termination. The emit stage returns a synthesis with a trace when informative.
How many paths should I generate in branching?
At minimum generate a typical, an alternative, and a boundary path. Add more only when they represent distinct, plausible approaches.
When should the trace be omitted from the output?
Omit the trace only when it obscures the result. For simple queries give a direct answer; for complex or analytical tasks include the trace.