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.

معلومات المصدر

المستودع
asermax/claude-plugins
آخر نشاط في المصدر
١٤ يونيو ٢٠٢٦ في ٢٣:٥٥
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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:
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub