بنقرة واحدة
cyclus-interview
Socratic reqs interview; clarify vague/ambiguous goals
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Socratic reqs interview; clarify vague/ambiguous goals
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
TaskExecutionKind: execute a plan to completion with per-task verification
Design a well-formed Cyclus loop: RECOGNIZE→SPECIFY→DECOMPOSE via Planner+Architect+Critic consensus (≤3 rounds)
ConsensusKind: Planner+Architect+Critic deliberate to produce a verified implementation plan
pipeline: interview→plan→execute→QA→verify (idea→code)
Multi-role consensus triage of an issue backlog.
parallel web research; subagents→synthesis→cite-verify
| name | cyclus-interview |
| description | Socratic reqs interview; clarify vague/ambiguous goals |
| version | 2.0.0 |
| metadata | {"hermes":{"tags":["interview","requirements","socratic","ambiguity","specification"],"category":"omh","requires_toolsets":["terminal","omh"]}} |
Loop kind: This skill maps to
ClarificationKind.
ClarificationKind.HUMAN_GATED = True— the scheduler structurally cannot mark this loop terminal; there is no automated done-criterion. Only an explicit human confirmation in Phase 4 ends the interview.
Do NOT post this skill to the work queue. State is session-local plain JSON.
cyclus-research first to gather context, then resume the interview with the confirmed report as input..omh/specs/ for this project.omh/ directory for state and spec filesFollow these phases in order. The skill operates through conversation with the user and file writes for state and spec output.
Before starting a new interview:
glob .omh/state/interview--*.json
Each JSON file corresponds to an interview; its instance_id and status are in the file.read_file(".omh/state/interview--{id}.json") — read round summaries to reconstruct context{"status": "abandoned", ...} to write_file(".omh/state/interview--{id}.json", json.dumps({...status: "abandoned"...})), then proceed to Phase 1 with a NEW id.omh/research/*-report.md exists with frontmatter
status: confirmed, mention it to the user as available context for
the interview (e.g., "I see a confirmed research report on '{topic}'
at {path} — want me to fold that in as background?"). Do NOT
auto-load it; the user decides.Start the interview with two questions:
Then:
di-{YYYYMMDD}-{short_random} (e.g., di-20260407-x7k).omh/state/interview--{id}.json (engine derives this from instance_id="{id}") with:
HIGHtype set to greenfield or brownfield based on user's answerexisting_context coverage set to N/A for greenfield projectsRun up to 5 rounds (extensible to 10 if user requests). Each round:
Step 1 — Select dimension to probe
Compare coverage bins across dimensions. Target the dimension with the highest ambiguity. When multiple dimensions share the same bin, use weights to break ties:
Load references/scoring-rubric.md for detailed bin definitions and examples.
Step 2 — Ask the question
Ask ONE primary question targeting the selected dimension. Make it specific and grounded in what the user has already told you. Don't ask generic questions — reference their earlier answers.
Good: "You mentioned this is a CLI tool for personal use. What happens when you run it with no tasks configured — should it create a default list, show an error, or something else?"
Bad: "What are your constraints?"
Allow 1-2 brief follow-ups if the user's answer is unclear, contradictory, or raises new questions. Don't force follow-ups if the answer is clear.
Step 3 — Adaptive questioning (if stuck)
If a dimension has been targeted for 2 or more consecutive rounds without moving from its current bin, change your approach:
Step 4 — Update coverage
After processing the user's answer, re-assess the coverage bin for the targeted dimension.
Use the rubric in references/scoring-rubric.md. Be conservative — when in doubt, keep
the bin at its current level rather than prematurely lowering it.
Step 5 — Update state
Update the interview state (increment round, add summary, update coverage):
write_file(".omh/state/interview--{id}.json", json.dumps({...updated state with new round...}))
Each round summary: max ~200 words — capture what was learned, not the full exchange.
Step 6 — Present coverage and ask to continue
Show the user where things stand:
Coverage after round {N}:
Goal: [MEDIUM] → Some clarity, but scope needs bounding
Constraints: [LOW] → Mostly clear, data format TBD
Success Criteria: [HIGH] → Need testable criteria
Existing Context: [N/A] → Greenfield project
Then ask: "Want to continue refining, or is this enough to work with?"
The user always controls exit. Never auto-terminate based on coverage scores.
When the user confirms exit (or max rounds reached):
templates/spec-template.mdstatus: draftcoverage: current bin valuesrounds_completed: total rounds done.omh/specs/{project-name}-spec.mdspec_file = path to specDisplay the full draft spec to the user and ask:
"Here's the specification I've drafted. Please review it. You can:
Handle each response:
On confirm:
status: confirmedstatus: confirmedcyclus-plan to create an implementation plan from this spec."On request changes:
On abandon:
status: abandonedOnly specs with status: confirmed are considered valid by downstream skills.
Throughout the interview, write structured events to .omh/logs/interview-{id}.log:
2026-04-07T06:30:00Z STARTED interview_id=di-20260407-x7k project=my-project type=greenfield
2026-04-07T06:31:15Z ROUND round=1 dimension=goal coverage_change=goal:HIGH→MEDIUM
2026-04-07T06:33:42Z ROUND round=2 dimension=constraints coverage_change=constraints:HIGH→LOW
2026-04-07T06:35:00Z USER_EXIT round=3 reason=user_confirmed
2026-04-07T06:35:30Z SPEC_GENERATED path=.omh/specs/my-project-spec.md status=draft
2026-04-07T06:36:00Z SPEC_CONFIRMED path=.omh/specs/my-project-spec.md
Log events and decisions only — NOT conversation content.
Downstream skills detect completed interviews by checking for files matching
.omh/specs/*-spec.md with status: confirmed in the YAML frontmatter.
State file: .omh/state/interview--{id}.json (plain JSON; read with read_file, write with write_file)
See references/state-schema.md for the full schema.
Key rules:
instance_id per interview. If an active interview already exists for the same project, offer to resume or abandon it before starting a parallel one with the same id.