Skip to main content

h-reason

Umbrella for FPF-style structured reasoning in a haft project. Carries the full reasoning palette in one place: framing, exploration, comparison, verification, notes, plus slideument patterns (NQD, Goldilocks, BLP, Scaling-Law Lens). Make sure to use this skill whenever the operator wants structured thinking but the workflow isn't pre-named — phrases like "давай подумаем", "помоги разобраться", "let's think this through", "structured approach", "apply FPF here", "FPF reasoning", "haft this" — or whenever a request is ambiguous between framing, exploration, and comparison. Also the manual entry point: /h-reason or /h-fpf alias. For sharp signals dedicated skills still fire (h-frame, h-diagnose, h-explore, h-compare, h-verify, h-status, h-note, h-onboard, h-spec-cover); binding choices use manual /h-decide; commissioning uses manual /h-commission.

Informações da origem

Repositório
asermax/claude-plugins
Última atividade na origem
14 de junho de 2026 às 23:55
Idioma detectado do SKILL.md
inglês
Estrelas
1
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
h-reason
description
Umbrella for FPF-style structured reasoning in a haft project. Carries the full reasoning palette in one place: framing, exploration, comparison, verification, notes, plus slideument patterns (NQD, Goldilocks, BLP, Scaling-Law Lens). Make sure to use this skill whenever the operator wants structured thinking but the workflow isn't pre-named — phrases like "давай подумаем", "помоги разобраться", "let's think this through", "structured approach", "apply FPF here", "FPF reasoning", "haft this" — or whenever a request is ambiguous between framing, exploration, and comparison. Also the manual entry point: /h-reason or /h-fpf alias. For sharp signals dedicated skills still fire (h-frame, h-diagnose, h-explore, h-compare, h-verify, h-status, h-note, h-onboard, h-spec-cover); binding choices use manual /h-decide; commissioning uses manual /h-commission.
when_to_use
Operator wants haft-discipline thinking but doesn't pre-select a specific workflow, OR explicitly types /h-reason. Specialized skills auto-fire on sharper signals; this umbrella catches the rest.
argument-hint
[reasoning topic — what to think about / what to figure out]
allowed-tools
Bash Read Grep Glob Agent Write Edit mcp__haft__haft_problem mcp__haft__haft_solution mcp__haft__haft_decision mcp__haft__haft_query mcp__haft__haft_note mcp__haft__haft_refresh mcp__haft__haft_spec_section
# h-reason — FPF reasoning umbrella You are running the **haft umbrella reasoning workflow**. This skill replaces the old narrow `/h-fpf` (still aliased — same skill) with a complete reasoning palette: framing, exploration, comparison, verification, notes, plus key patterns from the slideument that don't have dedicated skills (Goldilocks problem selection, NQD discipline, BLP, Scaling-Law Lens). **This is the manual entry point for FPF-style work** when the operator doesn't pre-pick a specific skill. Specialized skills (h-frame, h-diagnose, h-explore, h-compare, h-verify) still auto-fire on sharp signals and you SHOULD prefer them when the signal is clear — they carry deeper procedures. Use this umbrella when: - The operator's signal is ambiguous between framing / exploration / comparison - The operator explicitly types `/h-reason` or `/h-fpf` - You want the whole palette of FPF wisdom (slideument patterns, FPF glossary) accessible in one place - The work spans multiple workflow steps (frame → explore → compare in one session) --- ## The single most important rule: Description ≠ Work This is the failure mode this umbrella is designed to NOT fall into. When asked open-ended design questions, the default impulse is to produce a useful chat response — variants with weakest-links, a Pareto front, a comparison table — without going through the haft kernel. **Stop.** The visual shape of FPF output is not a substitute for invoking the kernel. If you deliver an analysis without calling `mcp__haft__*` tools, the result is **ephemeral**: gone by tomorrow, no ProblemCard, no SolutionPortfolio, nothing to `/h-verify` in two weeks. The chat answer is wishlist, not work. **Concrete failure patterns to catch in yourself:** | About to do this in chat... | Stop and do this instead | |---|---| | Present 3+ alternative approaches | Call `haft_problem(action="frame")` then `haft_solution(action="explore")` | | Compare two approaches with trade-offs | Frame first if needed, then `haft_solution(action="compare")` | | State what the "real problem" is | Call `haft_problem(action="frame")` and persist it | | Suggest "remember this" inline | Call `haft_note` | | Verify a past decision claim | Call `haft_decision(action="evidence")` and `haft_refresh` | **Friction tradeoff (honest).** Yes, calling kernel tools costs more in-the-moment than answering directly. The friction is the price for **durability and measurability**. Your job is not "best chat answer right now" — it is "leave the project with future-verifiable memory." --- ## Self-check before long responses Before sending a long response, ask: 1. Is this response presenting **3+ alternatives**, a **comparison**, an **analysis with recommendation**, or **framing what the problem is**? 2. Did I call **any `mcp__haft__*` tool** in this turn? If (1) = yes and (2) = no — STOP. Pick the right kernel action below and call it before responding. --- ## Maintenance check (FPF B.3.4) — before reasoning When entering this umbrella, look at the most recent kernel response for `Refresh reminder: N days since last stale scan`. If N > 30 — call `mcp__haft__haft_refresh(action="scan")` BEFORE doing reasoning work. Reasoning on a stale graph is the same anti-pattern as reasoning on stale code: variants you generate may rediscover what was already decided, or contradict an already-decayed claim. Burn the 1-second scan first; reason against fresh state. If the scan finds nothing new — mention briefly, proceed. Same discipline for drift detected on files touched in this session: re-baseline via `haft_decision(action="baseline", ...)` or surface the drift explicitly. Do not silently proceed past a drift warning. Surfacing the reminder is the kernel's job; acting on it is the agent's job. See CLAUDE.md Critical Reminders. --- ## Quick triage — what is the operator actually asking? Before doing anything, read the operator's signal carefully and classify: | Signal | Workflow | Section below | |---|---|---| | Proposing a refactor/rewrite/redesign/migration without naming the problem | Framing | [Framing](#framing) | | Concrete failure with unclear root cause (tests fail, X doesn't work) | Diagnosis | [Diagnosis](#diagnosis-failure-investigation) | | Asking for options / variants / alternatives / "how could we" | Exploration | [Exploration](#exploration-nqd-variants) | | Comparing 2+ approaches ("A or B", "which is better", "X vs Y") | Comparison | [Comparison](#comparison-parity-pareto) | | Wants to commit to a specific variant (a binding choice) | Decision (manual) | [Decision is manual](#decision-is-manual) | | Wants to check if a past decision still holds | Verification | [Verification](#verification) | | Wants to record a micro-decision with rationale | Note | [Note](#note-micro-decision) | | Wants situational awareness ("where are we", "what's stale") | Status | Call `haft_query(action="status")` directly | | Repository has no `.haft/` yet | Onboarding | Delegate to `/h-onboard` | | General FPF question ("what is FPF", "look up pattern E.9") | FPF spec lookup | Call `haft_query(action="fpf", query=...)` | If the signal is **ambiguous** (spans multiple workflows) — start with framing. Without a framed problem, exploration / comparison float. --- ## Framing Use when: a solution is proposed before the problem is stated, or scope/acceptance is unclear. **Procedure (compressed; full version in /h-frame):** 1. **Stabilize the signal.** What's actually broken or wanted? In one sentence, what condition would make the operator say "solved"? 2. **Type the problem** — pick one: - `diagnosis` — something broke, root cause unknown - `optimization` — known target, want better numbers - `search` — looking for an unknown thing (e.g., a library, a pattern) - `synthesis` — building something new 3. **Umbrella-word repair** — if the signal uses overloaded terms ("service", "quality", "scalable", "готово"), unpack to specifics. Refuse to record a ProblemCard built on umbrella words. 4. **Acceptance criterion** — one observable condition that signals "minimum viable success". Without this, the problem can't be verified later. 5. **Record:** ``` mcp__haft__haft_problem( action="frame", problem_type="<diagnosis|optimization|search|synthesis>", title="<short title>", signal="<what's happening / what's needed>", acceptance="<observable condition>", constraints=["<hard limit>"], blast_radius="<what gets affected>", reversibility="<low|medium|high>", mode="<tactical|standard|deep>" ) ``` 6. Surface the ProblemCard ID to the operator. They can edit, supersede, or move on. **Common mistakes:** - Framing during code-grinding sessions (h-reason isn't for every task — code work doesn't need a ProblemCard) - Letting acceptance stay vague ("works better") instead of observable - Skipping problem-type → comparisons later anchor wrong For deeper framing (B.4.1 + B.5.2 with parallel-rival generation on diagnosis problems), use `/h-frame` or `/h-diagnose` directly. --- ## Diagnosis (failure investigation) Use when: concrete failure, unclear cause. Stronger than framing — runs parallel rival-hypothesis testing. **Compressed procedure (full version in /h-diagnose):** 1. **Stabilize** — what's the symptom in one sentence? When did it start? Reproducible? 2. **Frame** as `problem_type="diagnosis"` via `haft_problem(action="frame")`. 3. **Generate ≥3 rival hypotheses** (FPF B.5.2 four-step abductive). Optionally spawn parallel Agent subagents — each takes one hypothesis and tests it independently against the codebase. Sequential is fine for lightweight investigations. 4. **Filter for falsifiability** — drop hypotheses with no testable prediction. 5. **Rank by evidence weight.** Keep losing rivals visible (CC-B.5.2-2) — do not collapse to a single answer prematurely. 6. **Record findings** as `haft_solution(action="explore", variants=[...])` where each variant = one hypothesis + its evidence + its weakest_link. 7. **Recommend next action.** Usually: test the leading hypothesis, then `/h-decide` if a fix path is clear. For full parallel-subagent dance use `/h-diagnose` directly. --- ## Exploration (NQD variants) Use when: problem is framed, operator wants 3-5 distinct candidate solutions. **Compressed procedure (full version in /h-explore):** 1. **Confirm there is a framed problem.** If not, frame first (above). Without a frame, variants float. 2. **Generate 3-5 distinct variants — each must differ in KIND, not just degree** (FPF EXP-08). Parallel directions to consider: - Data-flow restructure (avoid the operation) - Algorithmic alternative (same op, different algo) - Infrastructure swap (different runtime / service) - Caching / batching / queuing (smooth load) - Architectural extraction (move to different layer) - Workflow restructure (change when/how triggered) - Stepping-stone (suboptimal now, opens future search space) 3. **Each variant carries:** - `title` - `description` (2-3 sentences) - `novelty_marker` — what makes this distinct from typical AI suggestions - `weakest_link` — what bounds quality if pursued (NOT title repeated) - `stepping_stone: true|false` (+ basis if true) - `risks` + `strengths` 4. **Record:** ``` mcp__haft__haft_solution( action="explore", problem_ref="<prob-...>", variants=[...], no_stepping_stone_rationale="<if all stepping_stone=false>" ) ``` 5. Kernel returns SolutionPortfolio ID + may emit soft warnings about disguised duplicates, missing parity_rules, or weakest_links that just repeat titles. Read and self-correct. 6. Recommend next step (usually `/h-compare` if 3+ variants). For full parallel-subagent generation use `/h-explore` directly — it spawns one Agent per direction in parallel. --- ## Comparison (parity + Pareto) Use when: SolutionPortfolio exists with 2+ variants, operator wants to evaluate. **Compressed procedure (full version in /h-compare):** 1. **Characterize first.** Declare comparison dimensions BEFORE scoring (kernel rejects subjective dimensions or stale ones): ``` mcp__haft__haft_problem( action="characterize", problem_ref="<prob-...>", dimensions=[ {"name": "latency", "scale_type": "ratio", "unit": "ms", "polarity": "lower_better", "role": "target"}, {"name": "ops_complexity", "scale_type": "ordinal", "unit": "1-5", "polarity": "lower_better", "role": "target"}, {"name": "compliance_OK", "scale_type": "binary", "polarity": "true_better", "role": "constraint"}, ... ], valid_until="<ISO date>" ) ``` 2. **Tag each dimension's indicator role:** `constraint` (hard limit), `target` (optimize), or `observation` (Anti-Goodhart — watch but don't optimize). 3. **Declare parity plan + selection policy BEFORE scoring.** Equal budgets/windows for all variants. State the dominance rule (Pareto front, not scalar winner). 4. **Score dim-wise** — one evaluator per dimension applies one scale to all variants. Prevents anchoring bias. 5. **Compute non-dominated set.** Return Pareto front (NOT a scalar winner). 6. **Record:** ``` mcp__haft__haft_solution( action="compare", portfolio_ref="<sol-...>", parity_plan={...}, selection_policy={...}, results={"dimensions": [...], "scores": {...}} ) ``` 7. **Decision is manual.** See next section. For full dim-wise parallel scoring use `/h-compare` directly — it spawns one Agent per dimension. --- ## Decision is manual **You CANNOT auto-fire `/h-decide`.** It is `disable-model-invocation: true` per Transformer Mandate. When the operator is ready to commit to a chosen variant from a SolutionPortfolio: - Surface the Pareto front summary - Recommend the variant you would pick (with rationale) - Tell the operator: **«this needs your explicit /h-decide to bind»** - Stop and wait If they say "go ahead" without typing `/h-decide` — still stop. Ask them to type it. The principle is: agents generate options, humans bind. --- ## Verification Use when: a recorded DecisionRecord needs post-implementation reality check. **Compressed procedure (full version in /h-verify):** 1. Find the decision via `haft_query(action="decisions", filter="active")` or specific ref. 2. Read predictions from the DRR — what was supposed to be true? 3. Gather evidence — run tests, check code, measure metrics, search docs. 4. Record: ``` mcp__haft__haft_decision( action="evidence", decision_ref="<dec-...>", evidence_items=[{ "type": "<test|measurement|incident|review>", "verdict": "<supports|refutes|weakens>", "summary": "...", "carrier_ref": "<file:line or URL or test name>", "cl": "<CL3|CL2|CL1|CL0>" // congruence level }] ) ``` 5. After enough evidence: refresh the decision status: - `accepted` (predictions held) - `weakened` (mixed) - `superseded` (replace with new decision) ``` mcp__haft__haft_refresh(action="<waive|supersede|deprecate>", artifact_ref="<dec-...>") ``` For full verify loop (drift detection across code/affected_files, FSRS-style intervals) use `/h-verify` directly. --- ## Note (micro-decision) Use when: small choice with rationale that doesn't justify full DRR ceremony. ``` mcp__haft__haft_note( text="<one or two sentences: what + why>", rationale="<the why is required — kernel rejects content-free notes>", links={ "based_on": ["<prob-... or dec-...>"], "tags": [...] } ) ``` Common moments to note: - After resolving a non-trivial bug — capture cause + fix lesson - After ruling out a variant during exploration — capture why - After a user correction — capture the right approach - A surprising discovery in the codebase - A constraint discovered mid-work --- ## Slideument patterns (Levenchuk's 2026 seminar wisdom) These don't have dedicated skills but you should apply them when relevant: **Three factories.** Engineering has three production lines:
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub