---
name: H-Frame
slug: h-frame-2
category: AI Engineering
description: H-Frame shapes an under-articulated engineering problem without assuming a solution or forcing a project phase. It retrieves current first-principles source and creates a ProblemCard only on explicit save intent or a concrete receiving use.
github: "https://github.com/m0n0x41d/haft/tree/main/packages/haft-pi/skills/h-frame"
language: Go
stars: 1383
forks: 102
install: "npx degit https://github.com/m0n0x41d/haft/tree/main/packages/haft-pi/skills/h-frame ~/.claude/skills/h-frame"
installs_to: ~/.claude/skills/h-frame
source_path: packages/haft-pi/skills/h-frame/SKILL.md
collection_size: 24
category_size: 2451
collection_url: "https://dirskills.com/collections/m0n0x41d/haft"
added: 2026-08-19T07:27:49.473Z
last_synced: 2026-08-19T07:27:49.473Z
canonical_url: "https://dirskills.com/skills/h-frame-2"
---

# H-Frame

H-Frame shapes an under-articulated engineering problem without assuming a solution or forcing a project phase. It retrieves current first-principles source and creates a ProblemCard only on explicit save intent or a concrete receiving use.

**Install:**

```bash
npx degit https://github.com/m0n0x41d/haft/tree/main/packages/haft-pi/skills/h-frame ~/.claude/skills/h-frame
```

## README

# h-frame — Shape the current problem

Retrieve current FPF source first. Use
`haft_query(action="fpf", mode="inspect", identifier="...")` for a known
SourceID or UnitID; otherwise use `mode="concern"` with the operator's query,
then inspect the direct pattern body. Query retrieves candidates only; it does
not choose the governing pattern or justify persistence.

Treat a concern result's `candidate_set` as incomplete navigation. Before
relying on one candidate, inspect its exact identifier and direct pattern
body. Keep several candidates live or abstain when the basis is insufficient.
Never query after framing merely to manufacture support for a frame already
chosen.

Separate the object from its description and carrier. State the observed
signal, unresolved relation, scope, constraints, acceptance basis, uncertainty,
blast radius, and reversibility. Unpack umbrella words and remove preferred
solutions from the frame.

Call `haft_problem(action="frame")` only for explicit persistence or a named
receiving use. An inline `ProblemCard@Context`-shaped result is not a persisted
artifact. When exact current identity is known, include
`entity_ref={ref_kind_id:"U.EntityRef",reference_id:"..."}` and
`bounded_context_ref`; never invent them from prose. A committed typed
projection returns an exact `record_reference`. Without that basis, preserve
the card and report its projection as underdetermined. `spec_fit_probe` is
advisory and only relevant when a named spec relation is current. Stop with the
frame; do not prescribe exploration next.
