Eiffel Intent Capture

VerifiedSafe

Generates an 'intent.md' document capturing user requirements and justification before any code is written. Runs an AI-assisted review with probing questions to clarify vague language and identify missing requirements. Use the `/eiffel.intent` command to start the process.

Sby Skills Guide Bot
DevelopmentIntermediate
6/2/2026
Claude Code
#eiffel#intent-capture#planning#workflow#documentation

Recommended for

Automated summary

Generates an intent.md document to capture WHAT users need and WHY before any code is written, including AI-assisted review with probing questions.

Strengths

  • Clear structure with mandatory sections (acceptance criteria, dependencies, MML decision)
  • Built-in simple_* policy to guide library selection
  • Generates an external review prompt to clarify vague requirements

Limitations

  • Requires manual project path input
  • AI review is external, not integrated into the workflow
  • Eiffel-specific ecosystem
When to use it

Use this skill at the start of any new Eiffel project to formalize intent before writing any code.

When not to use it

Do not use for minor fixes or ongoing projects where intent is already clear and documented.

Security analysis

Safe
Quality score92/100

The skill only creates directories with mkdir -p and writes markdown files. It does not execute destructive commands, exfiltrate data, or include obfuscated payloads. The Bash usage is benign. No network access is triggered automatically; the manual step of submitting to an external AI is outside the skill's execution. No secrets or tokens are handled.

No concerns found

How this analysis is made

Examples

Standard intent capture
/eiffel.intent d:\prod\simple_cache
Intent capture without path
/eiffel.intent

name: eiffel-intent description: Phase 0 of Eiffel Spec Kit. Generates intent.md capturing WHAT users need and WHY. Runs AI-assisted intent review with probing questions. Use with /eiffel.intent command. allowed-tools: Read, Grep, Glob, Edit, Write, Bash, Task

/eiffel.intent - Phase 0: Intent Capture

Purpose: Capture WHAT users need and WHY before any code is written.

Usage

/eiffel.intent <project-path>

Example:

/eiffel.intent d:\prod\simple_cache

If no path provided, ask user: "Which project? Provide the full path (e.g., d:\prod\simple_cache)"

Project Scoping

All files are created inside the PROJECT directory:

<project-path>/
├── .eiffel-workflow/
│   ├── intent.md
│   ├── intent-v2.md (after review)
│   ├── prompts/
│   │   └── phase0-intent-review.md  (prompt for external AI)
│   └── evidence/
│       └── phase0-intent.txt
├── src/
├── test/
└── <project>.ecf

Workflow

Step 1: Create Directory Structure

mkdir -p <project-path>/.eiffel-workflow/prompts
mkdir -p <project-path>/.eiffel-workflow/evidence

Step 2: Generate Initial intent.md

Ask the user to describe what they want to build. Create <project-path>/.eiffel-workflow/intent.md:

# Intent: [Library/Feature Name]

## What
[Clear description of what this does]

## Why
[Business/technical reason this is needed]

## Users
[Who will use this and how]

## Acceptance Criteria
- [ ] [Criterion 1]
- [ ] [Criterion 2]
- [ ] [Criterion 3]

## Out of Scope
[What this explicitly does NOT do]

## Dependencies (REQUIRED - simple_* First Policy)

**RULE:** Always prefer simple_* libraries over ISE EiffelStudio stdlib and Gobo.

| Need | simple_* Library | AVOID |
|------|------------------|-------|
| JSON | simple_json | $ISE_LIBRARY/contrib/library/web/framework/ewf/text/json |
| HTTP | simple_http | Gobo HTTP, EiffelNet |
| XML | simple_xml | $ISE_LIBRARY/library/xml |
| Regex | simple_regex | Gobo regex |
| Process | simple_process | $ISE_LIBRARY/library/process |
| Encoding | simple_encoding | Gobo encoding |
| CSV | simple_csv | Custom parsing |
| Config | simple_config | Custom INI parsing |
| Math | simple_math | Custom math |
| MML | simple_mml | ETH base2 |

**Only ISE allowed (no simple_* equivalent):**
- `base` - fundamental types
- `time` - DATE, TIME, DATE_TIME
- `testing` - EQA_TEST_SET

**List your dependencies:**

| Need | Library | Justification |
|------|---------|---------------|
| [capability needed] | simple_* | [why this one] |
| [capability needed] | ISE only if no simple_* | [gap identified] |

**If ISE/Gobo required:** Document the gap for potential simple_* development.

## MML Decision (REQUIRED)

**Does this library need MML model queries for precise postconditions?**

| Answer | When to Choose |
|--------|----------------|
| **YES - Required** | Library has collections (HASH_TABLE, ARRAYED_LIST, etc.) that need frame conditions |
| **YES - Optional** | Users may add MML postconditions to their extensions |
| **NO** | Pure computation, no internal collections, simple value types |

**If YES:** simple_mml will be added in Phase 1. Model queries will be mandatory for collections.

**Decision:** [YES-Required / YES-Optional / NO]
**Rationale:** [Brief explanation]

Step 3: Generate AI Review Prompt File (MANUAL CYCLE)

Create <project-path>/.eiffel-workflow/prompts/phase0-intent-review.md:

# Intent Review Request

**Instructions:** Review the intent document below and generate probing questions
to clarify vague language, identify missing requirements, and surface implicit assumptions.

## Review Criteria

Look for:
1. **Vague language:** Words like "fast", "secure", "easy", "flexible" without concrete definitions
2. **Missing edge cases:** What happens with empty input? Maximum size? Invalid data?
3. **Untestable criteria:** Are acceptance criteria specific and measurable?
4. **Hidden dependencies:** What external systems or libraries are assumed?
5. **Scope ambiguity:** Is "out of scope" clearly defined?

## Output Format

Provide 5-10 probing questions. For each:
- Quote the vague phrase
- Explain why it's vague
- Offer 2-3 concrete alternatives the user can choose from

---

## Intent Document to Review

[PASTE CONTENTS OF intent.md HERE]

Step 3b: Auto-Create Evidence Placeholder File

Create <project-path>/.eiffel-workflow/evidence/phase0-ai-review.md with placeholder:

# Phase 0: AI Review Response

**STATUS: INCOMPLETE** - Paste AI review response below this line and delete this section.

---

## Instructions

1. Open: `../.eiffel-workflow/prompts/phase0-intent-review.md`
2. Paste intent.md contents where indicated
3. Submit to an external AI (Ollama, Grok, Gemini, or another Claude session)
4. Replace this entire file with the AI's response
5. Return to Claude Code and say "review complete"

---

[AI RESPONSE GOES HERE]

Step 4: Notify Human

Display:

PHASE 0: Intent document created.

FILES CREATED:
  - <project-path>/.eiffel-workflow/intent.md
  - <project-path>/.eiffel-workflow/prompts/phase0-intent-review.md
  - <project-path>/.eiffel-workflow/evidence/phase0-ai-review.md (placeholder - needs your input)

MANUAL ACTION REQUIRED:
  1. Open: <project-path>/.eiffel-workflow/prompts/phase0-intent-review.md
  2. Copy the intent.md content into the prompt where indicated
  3. Submit to an AI reviewer (Ollama, Grok, Gemini, or another Claude session)
  4. Replace contents of: <project-path>/.eiffel-workflow/evidence/phase0-ai-review.md with AI's response
  5. Return here and say "review complete" with any answers to the questions

Waiting for your input...

BLOCK until user provides the review results.

Step 5: Process Review Results

When user returns with AI review:

  1. Read the probing questions from the AI
  2. Ask user to answer each question
  3. Create <project-path>/.eiffel-workflow/intent-v2.md incorporating answers

Step 5b: Dependency Audit (simple_* First)

Before finalizing intent-v2.md, audit all dependencies:

  1. Check each dependency against simple_ ecosystem:*

    Task(subagent_type=Explore) → "List all simple_* libraries and their purposes"
    
  2. For each ISE/Gobo dependency identified:

    • Research if a simple_* equivalent exists
    • If no equivalent: document the gap
    • Add to intent-v2.md under "Gaps for Future simple_* Libraries"
  3. If gap identified, create recommendation:

    ## Gaps Identified (Potential simple_* Libraries)
    
    | Gap | Current Workaround | Proposed simple_* |
    |-----|-------------------|-------------------|
    | [capability] | ISE/Gobo [library] | simple_[name] |
    
    **Recommendation:** After shipping this library, consider creating simple_[name] to fill this gap.
    

This ensures:

  • No ISE/Gobo usage without explicit justification
  • Gaps are documented for future ecosystem growth
  • simple_* ecosystem expands based on real needs

Step 6: Final Approval

Ask: "Intent document refined. Approve to proceed to Phase 1 (Contracts)?"

BLOCK until user explicitly approves.

Step 7: Save Evidence

Save to <project-path>/.eiffel-workflow/evidence/phase0-intent.txt:

# Phase 0 Intent Evidence
# Project: <project-path>
# Date: [timestamp]

Intent document: .eiffel-workflow/intent-v2.md
AI review conducted: [yes/no]
AI used for review: [Ollama/Grok/Gemini/Claude/other]
Questions answered: [count]
User approved: [yes/no]

# Status: APPROVED

Completion

When user approves:

Phase 0 COMPLETE: Intent captured and approved.
Project: <project-path>

Next: Run /eiffel.contracts <project-path> to generate contract skeletons.

Context Management (RLM Pattern)

This skill focuses ONLY on: <project-path>

DO NOT:

  • Read files outside this project directory
  • Load entire ecosystem or multiple libraries into context
  • Keep large file contents in working memory

DO:

  • Use Task tool with Explore agent for ecosystem questions
  • Ask targeted questions: "What does simple_mml provide?" not "Show me all files"
  • Release context after getting answers

Example - Ecosystem Query:

Need to know about a dependency? Don't read all its files.
Instead: Task(subagent_type=Explore) → "What are simple_mml's main classes and key features?"

The sub-agent searches, summarizes, and returns ONLY what you need. Your context stays focused on this project.

Anti-Drift

  • Prompt files are artifacts (can't claim review happened without them)
  • Human manually submits to AI (forced engagement)
  • Evidence file documents what AI was used
  • MML decision is front-loaded - no "we'll add it later" drift
  • simple_ first policy declared* - dependencies audited before Phase 1
  • Gaps documented upfront - ISE/Gobo usage creates future simple_* recommendations
  • Skill Version Lock: If you discover skill improvements during workflow, queue them in <project-path>/.eiffel-workflow/skill-improvements.md - do NOT modify skills mid-workflow

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/eiffel-intent-capture-mmbizke7/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/eiffel-intent-capture-mmbizke7' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/eiffel-intent-capture-mmbizke7/download' --output '.skill-downloads/eiffel-intent-capture-mmbizke7/SKILL.md.part' && mv '.skill-downloads/eiffel-intent-capture-mmbizke7/SKILL.md.part' '.skill-downloads/eiffel-intent-capture-mmbizke7/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Read, Grep, Glob, Edit, Write, Bash, Task

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/eiffel-intent-capture-mmbizke7/SKILL.md' && test -s '.skill-downloads/eiffel-intent-capture-mmbizke7/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/eiffel-intent' && cp -R '.skill-downloads/eiffel-intent-capture-mmbizke7' '.claude/skills/eiffel-intent'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/eiffel-intent-capture-mmbizke7'

openskills read 'eiffel-intent-capture-mmbizke7'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/eiffel-intent-capture-mmbizke7/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills