Research mathematical logic tasks using domain context and codebase exploration. Invoke for logic-language research involving modal logic, Kripke semantics, and related mathematical foundations.
Thin wrapper that delegates mathematical logic research to logic-research-agent subagent.
IMPORTANT: This skill implements the skill-internal postflight pattern. After the subagent returns, this skill handles all postflight operations (status update, artifact linking, git commit) before returning.
Reference (do not load eagerly):
.claude/context/formats/return-metadata-file.md - Metadata file schemaNote: This skill is a thin wrapper with internal postflight. Context is loaded by the delegated agent.
This skill activates when:
Validate required inputs:
task_number - Must be provided and exist in state.jsonfocus_prompt - Optional focus for research direction# Lookup task
task_data=$(jq -r --argjson num "$task_number" \
'.active_projects[] | select(.project_number == $num)' \
specs/state.json)
# Validate exists
if [ -z "$task_data" ]; then
return error "Task $task_number not found"
fi
# Extract fields
task_type=$(echo "$task_data" | jq -r '.task_type // "general"')
status=$(echo "$task_data" | jq -r '.status')
project_name=$(echo "$task_data" | jq -r '.project_name')
description=$(echo "$task_data" | jq -r '.description // ""')
Update task status to "researching" BEFORE invoking subagent.
Create the marker file to prevent premature termination.
Prepare delegation context for the subagent:
{
"session_id": "sess_{timestamp}_{random}",
"delegation_depth": 1,
"delegation_path": ["orchestrator", "research", "skill-logic-research"],
"timeout": 3600,
"task_context": {
"task_number": N,
"task_name": "{project_name}",
"description": "{description}",
"task_type": "logic"
},
"focus_prompt": "{optional focus}",
"metadata_file_path": "specs/{NNN}_{SLUG}/.return-meta.json"
}
CRITICAL: You MUST use the Task tool to spawn the subagent.
Required Tool Invocation:
Tool: Task (NOT Skill)
Parameters:
- subagent_type: "logic-research-agent"
- prompt: [Include task_context, delegation_context, focus_prompt, metadata_file_path]
- description: "Execute logic research for task {N}"
DO NOT use Skill(logic-research-agent) - this will FAIL.
The subagent will:
.claude/context/project/logic/specs/{NNN}_{SLUG}/reports/specs/{NNN}_{SLUG}/.return-meta.jsonCRITICAL: If you performed the work above WITHOUT using the Task tool (i.e., you read files,
wrote artifacts, or updated metadata directly instead of spawning a subagent), you MUST write a
.return-meta.json file now before proceeding to postflight. Use the schema from
return-metadata-file.md with status value "researched".
If you DID use the Task tool, skip this stage -- the subagent already wrote the metadata.
The following stages MUST execute after work is complete, whether the work was done by a subagent or inline (Stage 5b). Do NOT skip these stages for any reason.
Read the metadata file.
If status is "researched", update state.json and TODO.md.
Add artifact to state.json with summary. Update TODO.md per @.claude/context/patterns/artifact-linking-todo.md with field_name=**Research**, next_field=**Plan**.
Commit changes with session ID using targeted staging.
Remove marker and metadata files.
Return a brief text summary (NOT JSON). Example:
Research completed for task {N}:
- Found existing patterns in source files
- Loaded domain context for modal logic and Kripke semantics
- Used Mathlib lookup tools to discover relevant theorems
- Created report at specs/{NNN}_{SLUG}/reports/MM_{short-slug}.md
- Status updated to [RESEARCHED]
- Changes committed
Return immediately with error message if task not found.
If subagent didn't write metadata file:
Non-blocking: Log failure but continue with success response.
Return partial status if subagent times out (default 3600s). Keep status as "researching" for resume.
This skill returns a brief text summary (NOT JSON). The JSON metadata is written to the file and processed internally.