h-decide

Routes operator-approved binding choices into validated DecisionRecord artifacts via the haft CLI.

1.4k|102|Updated Dec 10, 2025
One-click install
npx skills add https://github.com/m0n0x41d/haft --skill h-decide
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: h-decide
Source: https://github.com/m0n0x41d/haft/tree/main/internal/cli/skill/h-decide
Command: npx skills add https://github.com/m0n0x41d/haft --skill h-decide

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Engineering decisions made in AI-assisted sessions often vanish into chat history with no durable record of what was chosen, why, what was rejected, and how to roll back. This Skill turns a direct, unambiguous operator request into a typed, validated DecisionRecord that downstream commissions, verification cycles, and drift detection can reference.

Core Features & Use Cases

  • Authority-gated binding: Only a direct operator request with unambiguous effect, subject, selected option, and scope is bound; ambiguous requests trigger a single Human Gate Brief instead of a record.
  • FPF-disciplined payloads: Enforces decision rationale fields such as selection policy, weakest link, counterargument, rejected alternatives, and rollback triggers, with an explicit tactical-mode _skips mechanism for small reversible changes.
  • Spec-binding preflight: Runs a read-only spec_binding_preflight check against the active ProjectSpecificationSet before binding, handling unbound, ambiguous, conflicting, or out-of-spec drafts.
  • Use Case: After comparing two database migration strategies, the operator says "supersede the old choice and bind option B". The Skill drafts the decision JSON, runs the spec preflight, and binds it via haft artifact create decision.decide, returning a decision ID and typed graph projection.

Quick Start

Ask the agent to bind a specific choice, for example: "Decide to use Postgres for the billing service and record it as a project decision."

Frequently Asked Questions about h-decide

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I record an engineering decision with haft?

Make a direct, unambiguous request naming the choice, subject, and scope, such as "decide to use Postgres for billing". The Skill drafts the decision payload, runs a spec-binding preflight, and binds it via the haft CLI, returning a decision ID.

What fields does a haft DecisionRecord require?

Standard decisions require selected_title, why_selected, selection_policy, weakest_link, counterargument, why_not_others, and rollback with at least one trigger, plus predictions, invariants, affected_files, and valid_until. Tactical mode allows explicit skips via _skips and _skip_reason.

Can the MCP haft_decision tool bind a decision directly?

No. The MCP path returns operator_confirmation_required because the kernel cannot verify host conversation provenance. Binding happens through the CLI input-file path after the host routes a direct operator request.

When should I use tactical mode for a decision?

Use tactical mode for reversible changes with a blast radius under two weeks, such as a small config change. You must declare skipped fields explicitly in _skips with a _skip_reason; silent omission is rejected by the kernel.

What happens if my decision conflicts with the active spec?

The spec_binding_preflight classifies the draft before binding. On conflict, the Skill stops and reopens the problem, explores a spec-changing path, or supersedes through the proper human gate instead of creating a normal decision.