using-aitp
Use when a request might be theoretical-physics research, topic continuation, idea steering, paper learning, derivation work, or validation planning; enter AITP before any substantial response.
Using AITP
Environment gate (mandatory first step)
- Confirm the task is happening in an AITP-enabled workspace, repo clone, or installed agent runtime.
- If the workspace has native bootstrap support, treat this skill as already active at session start.
- If native bootstrap is unavailable, fall back to
aitp session-start "<original user request>". - Do not shorten that fallback into a bare topic title or a paraphrased summary when routing matters.
When to use
- The user asks to study or continue a physics topic.
- The user says
继续这个 topic,current topic,this topic, or equivalent. - The user asks to change direction, refine scope, set validation, or update steering.
- The user asks to learn papers, evaluate an idea, recover a derivation, plan formalization, or build a bounded research loop.
Hard gate
- If there is even a small chance the request is real theoretical-physics research rather than plain coding, enter AITP first.
- Do not start with free-form browsing, synthesis, or editing when the task belongs inside AITP.
- Treat natural-language steering as state, not chat decoration. If the user changes direction, update durable steering before deeper work.
- If the idea is vague, do not jump straight into
L0-L4; run clarification first.
Conversation style rules
- Do not expose protocol jargon to the user. Avoid phrases like
decision_point,L2 consultation,load profile, orruntime surface. - Ask in plain language, as if you are a research collaborator choosing the next route together.
- By default ask one question at a time. Only ask more than one when a single answer would still leave the route materially ambiguous.
- If the user already gave enough direction, do not ask a clarification question just to satisfy a protocol step.
- If the user says
you decide,just go,直接做, or equivalent, stop clarifying, record the authorization durably, and continue. - When giving options, explain the routes and tradeoffs in natural language instead of exposing JSON-style labels or schema fields.
Clarification sub-protocol
- Tighten the active
research_question.contract.jsonbefore substantive execution wheneverscope,assumptions, ortarget_claimsare still vague. - Ask at most 3 clarification rounds, with 1-3 questions per round.
- Prefer questions that remove the biggest ambiguity first: scope, assumptions, target claims, benchmark surface, or validation route.
- When runtime state already exists, materialize these questions as decision points with:
phase: clarificationtrigger_rule: direction_ambiguityblocking: falseunless the question is truly execution-critical
- If the human says
just go,skip clarification, or equivalent, proceed honestly and mark any still-missing critical fields asclarification_deferred: true. - Only enter normal
L0-L4routing after clarification is complete or explicitly skipped.
Routing rules
- Resolve durable current-topic memory first.
- Interpret
继续这个 topic,continue this topic,this topic, andcurrent topicas current-topic references before asking for a slug. - Fall back to the latest topic only when current-topic memory is missing.
- If the user opens a new topic in natural language, extract the title and let AITP materialize the topic shell.
- If native bootstrap times out while opening a new topic, retry through
aitp session-start "<original user request>"oraitp session-start --topic "<extracted title>" "<original user request>". - Do not replace a failed front-door bootstrap by manually editing runtime files, source-layer files, or topic artifacts unless the user explicitly asked for repository maintenance rather than topic execution.
- If the user changes direction, scope, or control intent in natural language, translate that into
innovation_direction.mdandcontrol_note.mdupdates before execution continues. - Preserve the lightweight runtime minimum even in small sessions:
topic_state.jsonoperator_console.mdresearch_question.contract.jsoncontrol_note.md
- After AITP routing is materialized, load
aitp-runtimeand followruntime_protocol.generated.md. - Before the first
aitp-runtimestep, ensure research mode and load profile are recorded by loadingaitp-research-classifierandaitp-load-profile-resolverskills and callingaitp_record_classificationfor each classification. - report the current human-control posture in plain language before deeper work.
- If no active checkpoint is present, continue bounded execution instead of asking ritual permission again.
- When the topic is entering report-writing, derivation restoration, or round-by-round scientific narration, load the relevant repo skills:
aitp-problem-framingaitp-derivation-disciplineaitp-l3-l4-roundaitp-current-claims-auditoraitp-topic-report-author
Popup gate protocol (mandatory before every topic action)
- Immediately after resolving the current topic, call
aitp_get_popup(topic_slug=<current>). - If the returned
needs_popupisfalse, continue normally. - If
needs_popupistrue, a human-blocking gate is active. Stop all other work. - Present the popup using the pre-built
ask_user_questionfield from the response. Theaitp_get_popupresponse contains anask_user_questionobject that is already formatted for direct use:- Claude Code: Call the built-in
AskUserQuestiontool with theask_user_question.questionsarray as thequestionsparameter. Useask_user_question.choice_index_mapto translate the 0-based response back to the popup'schoice_indexforaitp_resolve_popup. - OpenCode: Call the built-in
questiontool with the samequestionspayload. Map the response throughchoice_index_mapidentically. - Kimi Code CLI: Call the built-in
AskUserQuestiontool with theask_user_question.questionsarray. Map the 0-based response back viaask_user_question.choice_index_mapto the popup'schoice_indexforaitp_resolve_popup. - Fallback (no structured question tool): Render the popup as a numbered list from
popup.choices, ask the user to reply with a number, then map tochoice_indexviachoice_index_map.
- Claude Code: Call the built-in
- If
ask_user_question.inspect_pathis non-empty and the user asks for details, read that file and re-present the popup. - Once the user chooses, call
aitp_resolve_popup_choice(topic_slug=<current>, choice_index=<mapped index>, comment="<brief rationale>"). - If the user declines to choose or defers, do NOT proceed past the gate. Wait for an explicit choice.
- Only after
needs_popupisfalse(or a successful resolution clears the gate) should you continue withloop,resume, or deeper AITP work. - This check is mandatory at:
- The very start of every topic-bound interaction.
- After every
aitp_run_topic_loop,aitp_resume_topic, oraitp_bootstrap_topiccall. - Whenever the user says anything that might advance or alter topic state.
- Hard rule: You MUST NOT skip this check. You MUST NOT silently continue past a popup. You MUST NOT answer the research question instead of presenting the popup. A popup means AITP requires a human decision before any further work.
Allowed exception
- If the task is AITP repo maintenance rather than AITP-governed research execution, work directly on the codebase.
- Even then, preserve the layer model, runtime artifacts, audits, promotion gates, and trust semantics.
Red flags
- "I can just answer this research question directly."
- "This topic change is small enough to skip routing."
- "I will read files first and decide later whether AITP applies."
If one of these is true, stop and enter AITP first.