/propose-hypotheses
Execute complete FPF cycle from hypothesis generation to decision
$ npx -y skills add NeoLabHQ/context-engineering-kit --skill propose-hypotheses --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/propose-hypotheses
Context preview
The summary Claude sees to decide when to auto-load this skill.
Execute complete FPF cycle from hypothesis generation to decision
SKILL.md
propose-hypotheses.SKILL.mdname: propose-hypotheses
description: Execute complete FPF cycle from hypothesis generation to decision
argument-hint: "[problem-statement]"
allowed-tools: Task, Read, Write, Bash, AskUserQuestion
Propose Hypotheses Workflow
Execute the First Principles Framework (FPF) cycle: generate competing hypotheses, verify logic, validate evidence, audit trust, and produce a decision.
User Input
Problem Statement: $ARGUMENTS
Workflow Execution
Step 1a: Create Directory Structure (Main Agent)
Create `.fpf/` directory structure if it does not exist:
mkdir -p .fpf/{evidence,decisions,sessions,knowledge/{L0,L1,L2,invalid}}
touch .fpf/{evidence,decisions,sessions,knowledge/{L0,L1,L2,invalid}}/.gitkeep**Postcondition**: `.fpf/` directory scaffold exists.
---
Step 1b: Initialize Context (FPF Agent)
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Initialize FPF context"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/init-context.md and execute.
Problem Statement: $ARGUMENTS
**Write**: Context summary to `.fpf/context.md`**---
Step 2: Generate Hypotheses (FPF Agent)
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Generate L0 hypotheses"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/generate-hypotheses.md and execute.
Problem Statement: $ARGUMENTS
Context: <summary from Step 1b>
**Write**: List of hypothesis IDs and titles to `.fpf/knowledge/L0/`
Reply with summary table in markdown format:
| ID | Title | Kind | Scope |
|----|-------|------|-------|
| ... | ... | ... | ... |---
Step 3: Present Summary (Main Agent)
1. Read all L0 hypothesis files from `.fpf/knowledge/L0/` 2. Present summary table from agent response. 3. Ask user: "Would you like to add any hypotheses of your own? (yes/no)"
---
Step 4: Add User Hypothesis (FPF Agent, Conditional Loop)
**Condition**: User says yes to adding hypotheses.
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Add user hypothesis"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/add-user-hypothesis.md and execute.
User Hypothesis Description: <get from user>
**Write**: User hypothesis to `.fpf/knowledge/L0/`**Loop**: Return to Step 3 after hypothesis is added.
**Exit**: When user says no or declines to add more.
---
Step 5: Verify Logic (Parallel Sub-Agents)
**Condition**: User finished adding hypotheses.
For EACH L0 hypothesis file in `.fpf/knowledge/L0/`, launch parallel fpf-agent with sonnet[1m] model:
- **Description**: "Verify hypothesis: <hypothesis-id>"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/verify-logic.md and execute.
Hypothesis ID: <hypothesis-id>
Hypothesis File: .fpf/knowledge/L0/<hypothesis-id>.md
**Move**: After you complete verification, move the file to `.fpf/knowledge/L1/` or `.fpf/knowledge/invalid/`.**Wait for all agents**, then check that files are moved to `.fpf/knowledge/L1/` or `.fpf/knowledge/invalid/`.
---
Step 6: Validate Evidence (Parallel Sub-Agents)
For EACH L1 hypothesis file in `.fpf/knowledge/L1/`, launch parallel fpf-agent with sonnet[1m] model:
- **Description**: "Validate hypothesis: <hypothesis-id>"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/validate-evidence.md and execute.
Hypothesis ID: <hypothesis-id>
Hypothesis File: .fpf/knowledge/L1/<hypothesis-id>.md
**Move**: After you complete validation, move the file to `.fpf/knowledge/L2/` or `.fpf/knowledge/invalid/`.**Wait for all agents**, then check that files are moved to `.fpf/knowledge/L2/` or `.fpf/knowledge/invalid/`.
---
Step 7: Audit Trust (Parallel Sub-Agents)
For EACH L2 hypothesis file in `.fpf/knowledge/L2/`, launch parallel fpf-agent with sonnet[1m] model:
- **Description**: "Audit trust: <hypothesis-id>"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/audit-trust.md and execute.
Hypothesis ID: <hypothesis-id>
Hypothesis File: .fpf/knowledge/L2/<hypothesis-id>.md
**Write**: Audit report to `.fpf/evidence/audit-{hypothesis-id}-{YYYY-MM-DD}.md`
**Reply**: with R_eff score and weakest link**Wait for all agents**, then check that audit reports are created in `.fpf/evidence/`.
---
Step 8: Make Decision (FPF Agent)
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Create decision record"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/decide.md and execute.
Problem Statement: $ARGUMENTS
L2 Hypotheses Directory: .fpf/knowledge/L2/
Audit Reports: .fpf/evidence/
**Write**: Decision record to `.fpf/decisions/`
**Reply**: with decision record summary in markdown format:
| Hypothesis | R_eff | Weakest Link | Status |
|------------|-------|--------------|--------|
| ... | ... | ... | ... |
**Recommended Decision**: <hypothesis title>
**Rationale**: <brief explanation>**Wait for agent**, then check that decision record is created in `.fpf/decisions/`. ---
Step 9: Present Final Summary (Main Agent)
1. Read the DRR from `.fpf/decisions/` 2. Present results from agent response. 3. Present next steps:
- Implement the selected hypothesis
- Use `/fpf:status` to check FPF state
- Use `/fpf:actualize` if codebase changes
4. Ask user if he agree with the decision, if not launch fpf-agent at step 8 with instruction to modify the decision as user wants.
---
Completion
Workflow complete when:
- [ ] `.fpf/` directory structure exists
- [ ] Context recorded in `.fpf/context.md`
- [ ] Hypotheses generated, verified, validated, and audited
- [ ] DRR created in `.fpf/decisions/`
- [ ] Final summary presented to user
**Artifacts Created**:
- `.fpf/context.md` - Problem context
- `.fpf/knowledge/L0/*.md` - Initial hypotheses
- `.fpf/knowledge/L1/*.md` - Verified hypotheses
- `.fpf/knowledge/L2/*.md` - Validated hypotheses
- `.fpf/knowledge/invalid/*.md` - Rejected hypotheses
- `.fpf/evidence/*.md` - Evidence files
- `.fpf/de
Read more
name: propose-hypotheses description: Execute complete FPF cycle from hypothesis generation to decision argument-hint: "[problem-statement]" allowed-tools: Task, Read, Write, Bash, AskUserQuestion
Propose Hypotheses Workflow
Execute the First Principles Framework (FPF) cycle: generate competing hypotheses, verify logic, validate evidence, audit trust, and produce a decision.
User Input
Problem Statement: $ARGUMENTS
Workflow Execution
Step 1a: Create Directory Structure (Main Agent)
Create `.fpf/` directory structure if it does not exist:
mkdir -p .fpf/{evidence,decisions,sessions,knowledge/{L0,L1,L2,invalid}}
touch .fpf/{evidence,decisions,sessions,knowledge/{L0,L1,L2,invalid}}/.gitkeep**Postcondition**: `.fpf/` directory scaffold exists.
---
Step 1b: Initialize Context (FPF Agent)
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Initialize FPF context"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/init-context.md and execute.
Problem Statement: $ARGUMENTS
**Write**: Context summary to `.fpf/context.md`**---
Step 2: Generate Hypotheses (FPF Agent)
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Generate L0 hypotheses"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/generate-hypotheses.md and execute.
Problem Statement: $ARGUMENTS
Context: <summary from Step 1b>
**Write**: List of hypothesis IDs and titles to `.fpf/knowledge/L0/`
Reply with summary table in markdown format:
| ID | Title | Kind | Scope |
|----|-------|------|-------|
| ... | ... | ... | ... |---
Step 3: Present Summary (Main Agent)
1. Read all L0 hypothesis files from `.fpf/knowledge/L0/` 2. Present summary table from agent response. 3. Ask user: "Would you like to add any hypotheses of your own? (yes/no)"
---
Step 4: Add User Hypothesis (FPF Agent, Conditional Loop)
**Condition**: User says yes to adding hypotheses.
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Add user hypothesis"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/add-user-hypothesis.md and execute.
User Hypothesis Description: <get from user>
**Write**: User hypothesis to `.fpf/knowledge/L0/`**Loop**: Return to Step 3 after hypothesis is added.
**Exit**: When user says no or declines to add more.
---
Step 5: Verify Logic (Parallel Sub-Agents)
**Condition**: User finished adding hypotheses.
For EACH L0 hypothesis file in `.fpf/knowledge/L0/`, launch parallel fpf-agent with sonnet[1m] model:
- **Description**: "Verify hypothesis: <hypothesis-id>"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/verify-logic.md and execute.
Hypothesis ID: <hypothesis-id>
Hypothesis File: .fpf/knowledge/L0/<hypothesis-id>.md
**Move**: After you complete verification, move the file to `.fpf/knowledge/L1/` or `.fpf/knowledge/invalid/`.**Wait for all agents**, then check that files are moved to `.fpf/knowledge/L1/` or `.fpf/knowledge/invalid/`.
---
Step 6: Validate Evidence (Parallel Sub-Agents)
For EACH L1 hypothesis file in `.fpf/knowledge/L1/`, launch parallel fpf-agent with sonnet[1m] model:
- **Description**: "Validate hypothesis: <hypothesis-id>"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/validate-evidence.md and execute.
Hypothesis ID: <hypothesis-id>
Hypothesis File: .fpf/knowledge/L1/<hypothesis-id>.md
**Move**: After you complete validation, move the file to `.fpf/knowledge/L2/` or `.fpf/knowledge/invalid/`.**Wait for all agents**, then check that files are moved to `.fpf/knowledge/L2/` or `.fpf/knowledge/invalid/`.
---
Step 7: Audit Trust (Parallel Sub-Agents)
For EACH L2 hypothesis file in `.fpf/knowledge/L2/`, launch parallel fpf-agent with sonnet[1m] model:
- **Description**: "Audit trust: <hypothesis-id>"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/audit-trust.md and execute.
Hypothesis ID: <hypothesis-id>
Hypothesis File: .fpf/knowledge/L2/<hypothesis-id>.md
**Write**: Audit report to `.fpf/evidence/audit-{hypothesis-id}-{YYYY-MM-DD}.md`
**Reply**: with R_eff score and weakest link**Wait for all agents**, then check that audit reports are created in `.fpf/evidence/`.
---
Step 8: Make Decision (FPF Agent)
Launch fpf-agent with sonnet[1m] model:
- **Description**: "Create decision record"
- **Prompt**:
Read ${CLAUDE_PLUGIN_ROOT}/tasks/decide.md and execute.
Problem Statement: $ARGUMENTS
L2 Hypotheses Directory: .fpf/knowledge/L2/
Audit Reports: .fpf/evidence/
**Write**: Decision record to `.fpf/decisions/`
**Reply**: with decision record summary in markdown format:
| Hypothesis | R_eff | Weakest Link | Status |
|------------|-------|--------------|--------|
| ... | ... | ... | ... |
**Recommended Decision**: <hypothesis title>
**Rationale**: <brief explanation>**Wait for agent**, then check that decision record is created in `.fpf/decisions/`. ---
Step 9: Present Final Summary (Main Agent)
1. Read the DRR from `.fpf/decisions/` 2. Present results from agent response. 3. Present next steps:
- Implement the selected hypothesis
- Use `/fpf:status` to check FPF state
- Use `/fpf:actualize` if codebase changes
4. Ask user if he agree with the decision, if not launch fpf-agent at step 8 with instruction to modify the decision as user wants.
---
Completion
Workflow complete when:
- [ ] `.fpf/` directory structure exists
- [ ] Context recorded in `.fpf/context.md`
- [ ] Hypotheses generated, verified, validated, and audited
- [ ] DRR created in `.fpf/decisions/`
- [ ] Final summary presented to user
**Artifacts Created**:
- `.fpf/context.md` - Problem context
- `.fpf/knowledge/L0/*.md` - Initial hypotheses
- `.fpf/knowledge/L1/*.md` - Verified hypotheses
- `.fpf/knowledge/L2/*.md` - Validated hypotheses
- `.fpf/knowledge/invalid/*.md` - Rejected hypotheses
- `.fpf/evidence/*.md` - Evidence files
- `.fpf/de
A hand-crafted collection of advanced context engineering techniques and patterns with minimal token footprint, focused on improving agent result quality and predictability.
Repo: NeoLabHQ/context-engineering-kit
Other skills on context-engineering-kit.
- /agent-evaluation
Evaluate and improve Claude Code commands, skills, and agents. Use when testing prompt effectiveness, validating context engineering choices, or measuring improvement quality.
Open skill - /apply-anthropic-skill-best-practices
Comprehensive guide for skill development based on Anthropic's official best practices - use for complex skills requiring detailed structure
Open skill - /context-engineering
Understand the components, mechanics, and constraints of context in agent systems. Use when writing, editing, or optimizing commands, skills, or sub-agents prompts.
Open skill - /create-agent
Comprehensive guide for creating Claude Code agents with proper structure, triggering conditions, system prompts, and validation - combines official Anthropic best practices with proven patterns
Open skill - /create-command
Interactive assistant for creating new Claude commands with proper structure, patterns, and MCP tool integration
Open skill - /create-hook
Create and configure git hooks with intelligent project analysis, suggestions, and automated testing
Open skill

