Interview Engine
Ask an excessive amount of questions until we have a complete understanding of the user request. Follow the workflow until you have a complete understanding.
Guardrails
- Ask at least 3 rounds of questions
- Ask at least 20 questions in total
- Treat
interview_questions.json as user-editable session state, not as reasoning input.
- After writing
interview_questions.json, do not read it with Get-Content unless recovering from a corrupt session.
- After the user updates answers, run
Extract-QuestionAnswers.ps1 and read only question_answers.json or another compact derived summary file.
- Prefer scripts that write compact artifacts to disk over commands that print raw JSON into tool output.
Handoff Contract
- interview questions:
.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_questions.json
- interview output:
.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_output.json
- interview answers:
.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/question_answers.json
Workflow
- Generate a set of questions to ask the user.
- Use the
Write-InterviewJson.ps1 script to write the questions.
- emit
I updated the session-<yyyy-MM-dd_HH-mm-ss> JSON file. in the chat session.
- Stop until user aknowledges questions are answered.
- Run
Extract-QuestionAnswers.ps1
- Read
.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/question_answers.json only
- If guardrails are meet and you have a complete understanding execute the
Write-OutputJson.ps1 and exit skill
- If more questions are needed start step 1.
Token Contract
- Only emit
I updated the session-<yyyy-MM-dd_HH-mm-ss> JSON file. in the chat
- Only write new or unanswered questions
Question Design
Every question must:
- resolve meaningful uncertainty
- be specific and actionable
- make the reason for asking visible
- reduce future questioning effort
- entice the user for elaboration
Use these question types:
one_of for mutually exclusive choices
multi_select for multiple valid selections
freeform for nuanced details
ranking for prioritization
numeric for measurable thresholds or limits
For each question, always provide:
context
why_it_matters
example_answers with 2-5 high-quality examples
recommended_answer as a best-practice default, not a personalized guess
your_answer as an empty string
Scope
Do:
- capture missing requirements, inputs, outputs, references, constraints, success criteria, Codex personality, or external reference rules
- ask clarifying questions
- increase confidence only when ambiguity actually decreases
Do not:
- plan, design, validate, or generate deliverables
- draft prompt content in chat before handoff
- explain questions in chat
- reread historical blocks beyond the active answer block
File Contract
- Path:
.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_questions.json
- Preserve every existing
your_answer.
{
"confidence": 0.0-1.0,
"assumptions":
[
"",
],
"output": {
"resolved_inputs": [""],
"resolved_outputs": [""],
"constraints": [""],
"decisions": [""],
"assumptions": [""],
"codex_personality": [""],
"success_criteria": [""]
},
"questions": [
{"question": "",
"type": ["one_of", "multi_select", "freeform", "ranking", "numeric"],
"context": "",
"why_it_matters": "",
"example_answers": [""],
"recommended_answer": "",
"your_answer": ""
}
]
}
- Path:
.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_output.json
{
"resolved_inputs": [""],
"resolved_outputs": [""],
"constraints": [""],
"decisions": [""],
"assumptions": [""],
"codex_personality": [""],
"success_criteria": [""]
}
1---2name: interview-engine3description: Resolve ambiguity in prompt-generation and other requests through a JSON-backed requirements interview stored in `.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_questions.JSON`.4---56# Interview Engine78Ask an excessive amount of questions until we have a complete understanding of the user request. Follow the workflow until you have a complete understanding.910 ## Guardrails1112- Ask at least 3 rounds of questions13- Ask at least 20 questions in total14- Treat `interview_questions.json` as user-editable session state, not as reasoning input.15- After writing `interview_questions.json`, do not read it with `Get-Content` unless recovering from a corrupt session.16- After the user updates answers, run `Extract-QuestionAnswers.ps1` and read only `question_answers.json` or another compact derived summary file.17- Prefer scripts that write compact artifacts to disk over commands that print raw JSON into tool output.181920## Handoff Contract2122- interview questions: `.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_questions.json`23- interview output: `.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_output.json`24- interview answers: `.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/question_answers.json`2526## Workflow27281. Generate a set of questions to ask the user.292. Use the `Write-InterviewJson.ps1` script to write the questions.303. emit `I updated the session-<yyyy-MM-dd_HH-mm-ss> JSON file.` in the chat session.314. Stop until user aknowledges questions are answered.325. Run `Extract-QuestionAnswers.ps1`336. Read `.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/question_answers.json` only 347. If guardrails are meet and you have a complete understanding execute the `Write-OutputJson.ps1` and exit skill358. If more questions are needed start step 1.3637## Token Contract3839- Only emit `I updated the session-<yyyy-MM-dd_HH-mm-ss> JSON file.` in the chat40- Only write new or unanswered questions4142## Question Design4344Every question must:45- resolve meaningful uncertainty46- be specific and actionable47- make the reason for asking visible48- reduce future questioning effort49- entice the user for elaboration5051Use these question types:52- `one_of` for mutually exclusive choices53- `multi_select` for multiple valid selections54- `freeform` for nuanced details55- `ranking` for prioritization56- `numeric` for measurable thresholds or limits5758For each question, always provide:59- `context`60- `why_it_matters`61- `example_answers` with 2-5 high-quality examples62- `recommended_answer` as a best-practice default, not a personalized guess63- `your_answer` as an empty string6465## Scope6667Do:68- capture missing requirements, inputs, outputs, references, constraints, success criteria, Codex personality, or external reference rules69- ask clarifying questions70- increase confidence only when ambiguity actually decreases7172Do not:73- plan, design, validate, or generate deliverables74- draft prompt content in chat before handoff75- explain questions in chat76- reread historical blocks beyond the active answer block7778## File Contract7980- Path: `.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_questions.json`81- Preserve every existing `your_answer`.8283```JSON84{85 "confidence": 0.0-1.0,86 "assumptions":87 [88 "",89 ],90 "output": {91 "resolved_inputs": [""],92 "resolved_outputs": [""],93 "constraints": [""],94 "decisions": [""],95 "assumptions": [""],96 "codex_personality": [""],97 "success_criteria": [""]98 },99 "questions": [100 {"question": "",101 "type": ["one_of", "multi_select", "freeform", "ranking", "numeric"],102 "context": "",103 "why_it_matters": "",104 "example_answers": [""],105 "recommended_answer": "",106 "your_answer": ""107 }108 ]109}110```111112- Path: `.interview-engine/session-<yyyy-MM-dd_HH-mm-ss>/interview_output.json`113114```JSON115{116 "resolved_inputs": [""],117 "resolved_outputs": [""],118 "constraints": [""],119 "decisions": [""],120 "assumptions": [""],121 "codex_personality": [""],122 "success_criteria": [""]123 }124```