一键导入
sanity-check
Final 6-dimension sanity check (logic/citation/reproducibility/novelty/venue/de-AI). Use before submission for comprehensive audit.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Final 6-dimension sanity check (logic/citation/reproducibility/novelty/venue/de-AI). Use before submission for comprehensive audit.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Pre-submission optimization loop (review → fix → review). Use before final submission to close all P0 gaps.
Polishes paper text and removes AI patterns. Use after writing stage to refine language and ensure venue compliance.
Designs and launches experiments. Handles long-running tasks via Monitor. Use for experiment tasks.
Focused literature search skill. Searches papers, locks baselines, builds related-work map. Use for standalone literature tasks.
Orchestrate a complete research workflow from literature review to camera-ready paper. Calls `rc` CLI commands to create tasks, dispatches agents for execution, verifies quality gates. Follows Trellis philosophy: Task-first, Action-before-asking, Single source of truth.
Use when setting up the plugin for the first time, installing dependencies, configuring MCP servers, or when the user says '初始化', 'init', 'setup', '装环境', '配置', 'install', 'configure', 'first time', '首次使用'. Handles both dependency marketplace installation and MCP server setup.
| name | sanity-check |
| description | Final 6-dimension sanity check (logic/citation/reproducibility/novelty/venue/de-AI). Use before submission for comprehensive audit. |
| triggers | ["sanity check","final check","audit paper","pre-submission audit","verify paper ready"] |
Final 6-dimension audit without making changes. Verifies paper is submission-ready across all critical dimensions.
Use this skill when:
Do NOT use when:
Before starting, check if sanity-check task exists:
# Check for existing sanity-check task
$taskFile = "C:\PythonProject\research_copilot\.rc\tasks\sanity-check.json"
if (Test-Path $taskFile) {
$task = Get-Content $taskFile | ConvertFrom-Json
Write-Host "Found existing sanity-check task for: $($task.paper_file)"
} else {
Write-Host "No existing task. Will create one."
}
Create task if needed:
# Create sanity-check task
$paperFile = "paper_polished.tex" # Or user-specified file
rc task create --type sanity-check --paper $paperFile --output .rc/tasks/sanity-check.json
Read all context files before audit:
# Load task context
$taskFile = "C:\PythonProject\research_copilot\.rc\tasks\sanity-check.json"
if (Test-Path $taskFile) {
$task = Get-Content $taskFile | ConvertFrom-Json
Write-Host "Paper file: $($task.paper_file)"
# Load PRD for research requirements
$prdFile = "C:\PythonProject\research_copilot\.rc\prd.md"
if (Test-Path $prdFile) {
$prd = Get-Content $prdFile -Raw
Write-Host "PRD loaded"
}
# Load venue specification
$venueFile = "C:\PythonProject\research_copilot\.rc\venue\spec.json"
if (Test-Path $venueFile) {
$venue = Get-Content $venueFile | ConvertFrom-Json
Write-Host "Venue: $($venue.name)"
}
# Load novelty spec
$noveltyFile = "C:\PythonProject\research_copilot\.rc\spec\novelty.md"
if (Test-Path $noveltyFile) {
Write-Host "Novelty spec loaded"
}
# Load writing conventions
$conventionsFile = "C:\PythonProject\research_copilot\.rc\writing\conventions.md"
if (Test-Path $conventionsFile) {
Write-Host "Writing conventions loaded"
}
}
Execute 6-dimension audit via @rc-reviewer agent:
# Start task
rc task start sanity-check
Write-Host "Starting 6-dimension sanity check..."
# Dispatch to reviewer agent with comprehensive 6-dimension prompt
Write-Host "Dispatching to @rc-reviewer agent..."
# Agent audits 6 dimensions (no changes made):
# 1. Logic: Claims → Evidence chain complete
# 2. Citations: All baselines cited, no orphan references
# 3. Reproducibility: Config/seed/data documented
# 4. Novelty: Claims match spec/novelty/
# 5. Venue compliance: Format/length/template correct
# 6. De-AI: No AI patterns remain
# Wait for completion
$status = rc task status sanity-check
Write-Host "Task status: $status"
Check claims → evidence chain:
# Verify logic dimension
$logicFile = "C:\PythonProject\research_copilot\.rc\sanity\logic.json"
if (Test-Path $logicFile) {
$logic = Get-Content $logicFile | ConvertFrom-Json
Write-Host "`nDimension 1: Logic"
Write-Host "Claims checked: $($logic.claims_checked)"
Write-Host "Evidence gaps: $($logic.evidence_gaps.Count)"
if ($logic.evidence_gaps.Count -eq 0) {
Write-Host "✓ All claims have supporting evidence"
} else {
Write-Host "✗ Evidence gaps found:"
foreach ($gap in $logic.evidence_gaps) {
Write-Host " - $($gap.claim) ($($gap.location))"
}
}
}
Check all baselines cited and no orphan references:
# Verify citations dimension
$citationsFile = "C:\PythonProject\research_copilot\.rc\sanity\citations.json"
if (Test-Path $citationsFile) {
$citations = Get-Content $citationsFile | ConvertFrom-Json
Write-Host "`nDimension 2: Citations"
Write-Host "Total citations: $($citations.total_citations)"
Write-Host "Orphan references: $($citations.orphan_refs.Count)"
Write-Host "Missing baseline citations: $($citations.missing_baselines.Count)"
if ($citations.orphan_refs.Count -eq 0 -and $citations.missing_baselines.Count -eq 0) {
Write-Host "✓ All citations complete and referenced"
} else {
if ($citations.orphan_refs.Count -gt 0) {
Write-Host "✗ Orphan references (in .bib but not cited):"
foreach ($ref in $citations.orphan_refs) {
Write-Host " - $ref"
}
}
if ($citations.missing_baselines.Count -gt 0) {
Write-Host "✗ Missing baseline citations:"
foreach ($baseline in $citations.missing_baselines) {
Write-Host " - $baseline"
}
}
}
}
Check config/seed/data documented:
# Verify reproducibility dimension
$reproducibilityFile = "C:\PythonProject\research_copilot\.rc\sanity\reproducibility.json"
if (Test-Path $reproducibilityFile) {
$repro = Get-Content $reproducibilityFile | ConvertFrom-Json
Write-Host "`nDimension 3: Reproducibility"
Write-Host "Config documented: $($repro.config_documented)"
Write-Host "Seeds documented: $($repro.seeds_documented)"
Write-Host "Data documented: $($repro.data_documented)"
Write-Host "Code available: $($repro.code_available)"
if ($repro.config_documented -and $repro.seeds_documented -and $repro.data_documented) {
Write-Host "✓ Reproducibility requirements met"
} else {
Write-Host "✗ Missing reproducibility elements:"
if (-not $repro.config_documented) { Write-Host " - Configuration details" }
if (-not $repro.seeds_documented) { Write-Host " - Random seeds" }
if (-not $repro.data_documented) { Write-Host " - Dataset details" }
}
}
Check claims match spec/novelty/:
# Verify novelty dimension
$noveltyFile = "C:\PythonProject\research_copilot\.rc\sanity\novelty.json"
if (Test-Path $noveltyFile) {
$novelty = Get-Content $noveltyFile | ConvertFrom-Json
Write-Host "`nDimension 4: Novelty"
Write-Host "Novelty claims: $($novelty.claims.Count)"
Write-Host "Aligned with spec: $($novelty.aligned_with_spec)"
Write-Host "Misalignments: $($novelty.misalignments.Count)"
if ($novelty.aligned_with_spec) {
Write-Host "✓ Novelty claims match specification"
} else {
Write-Host "✗ Novelty misalignments:"
foreach ($misalignment in $novelty.misalignments) {
Write-Host " - $($misalignment.claim)"
Write-Host " Expected: $($misalignment.expected)"
Write-Host " Found: $($misalignment.found)"
}
}
}
Check format/length/template correct:
# Verify venue compliance dimension
$venueFile = "C:\PythonProject\research_copilot\.rc\sanity\venue.json"
if (Test-Path $venueFile) {
$venueCheck = Get-Content $venueFile | ConvertFrom-Json
Write-Host "`nDimension 5: Venue Compliance"
Write-Host "Template correct: $($venueCheck.template_correct)"
Write-Host "Page count: $($venueCheck.page_count)/$($venueCheck.page_limit)"
Write-Host "Format issues: $($venueCheck.format_issues.Count)"
if ($venueCheck.template_correct -and $venueCheck.page_count -le $venueCheck.page_limit -and $venueCheck.format_issues.Count -eq 0) {
Write-Host "✓ Venue requirements met"
} else {
Write-Host "✗ Venue compliance issues:"
if (-not $venueCheck.template_correct) { Write-Host " - Incorrect template" }
if ($venueCheck.page_count -gt $venueCheck.page_limit) { Write-Host " - Exceeds page limit" }
foreach ($issue in $venueCheck.format_issues) {
Write-Host " - $issue"
}
}
}
Check no AI patterns remain:
# Verify de-AI dimension
$deAiFile = "C:\PythonProject\research_copilot\.rc\sanity\de-ai.json"
if (Test-Path $deAiFile) {
$deAi = Get-Content $deAiFile | ConvertFrom-Json
Write-Host "`nDimension 6: De-AI"
Write-Host "AI patterns found: $($deAi.patterns_found.Count)"
Write-Host "Mechanical transitions: $($deAi.mechanical_transitions)"
Write-Host "Excessive adjectives: $($deAi.excessive_adjectives)"
if ($deAi.patterns_found.Count -eq 0) {
Write-Host "✓ No AI patterns detected"
} else {
Write-Host "✗ AI patterns found:"
foreach ($pattern in $deAi.patterns_found) {
Write-Host " - $($pattern.type): '$($pattern.text)' ($($pattern.location))"
}
}
}
All 6 dimensions must pass:
# Quality gate checks
$passed = $true
$dimensions = @()
# Check each dimension
$dimensionFiles = @{
"Logic" = "C:\PythonProject\research_copilot\.rc\sanity\logic.json"
"Citations" = "C:\PythonProject\research_copilot\.rc\sanity\citations.json"
"Reproducibility" = "C:\PythonProject\research_copilot\.rc\sanity\reproducibility.json"
"Novelty" = "C:\PythonProject\research_copilot\.rc\sanity\novelty.json"
"Venue" = "C:\PythonProject\research_copilot\.rc\sanity\venue.json"
"De-AI" = "C:\PythonProject\research_copilot\.rc\sanity\de-ai.json"
}
foreach ($dimension in $dimensionFiles.Keys) {
$file = $dimensionFiles[$dimension]
if (-not (Test-Path $file)) {
Write-Host "FAIL: $dimension check not completed"
$passed = $false
$dimensions += @{ name = $dimension; status = "INCOMPLETE" }
continue
}
$data = Get-Content $file | ConvertFrom-Json
# Dimension-specific pass criteria
$dimPassed = $false
switch ($dimension) {
"Logic" { $dimPassed = $data.evidence_gaps.Count -eq 0 }
"Citations" { $dimPassed = $data.orphan_refs.Count -eq 0 -and $data.missing_baselines.Count -eq 0 }
"Reproducibility" { $dimPassed = $data.config_documented -and $data.seeds_documented -and $data.data_documented }
"Novelty" { $dimPassed = $data.aligned_with_spec }
"Venue" { $dimPassed = $data.template_correct -and $data.page_count -le $data.page_limit -and $data.format_issues.Count -eq 0 }
"De-AI" { $dimPassed = $data.patterns_found.Count -eq 0 }
}
if ($dimPassed) {
$dimensions += @{ name = $dimension; status = "PASS" }
} else {
$dimensions += @{ name = $dimension; status = "FAIL" }
$passed = $false
}
}
# Overall status
Write-Host "`n=== SANITY CHECK RESULTS ==="
foreach ($dim in $dimensions) {
$icon = if ($dim.status -eq "PASS") { "✓" } else { "✗" }
Write-Host "$icon $($dim.name): $($dim.status)"
}
if ($passed) {
Write-Host "`n✓ PAPER READY FOR SUBMISSION"
rc task complete sanity-check
} else {
Write-Host "`n✗ PAPER NOT READY - Issues must be resolved"
Write-Host "Run submission-sprint to fix remaining issues"
}
Generate final report:
# Sanity Check Report
**Paper**: {paper_file}
**Date**: {date}
**Status**: {READY / NOT_READY}
## 6-Dimension Audit
### ✓ 1. Logic Integrity
- Claims checked: {count}
- Evidence gaps: 0
- **Status**: PASS
### ✓ 2. Citation Completeness
- Total citations: {count}
- Orphan references: 0
- Missing baselines: 0
- **Status**: PASS
### ✓ 3. Reproducibility
- Configuration documented: Yes
- Seeds documented: Yes
- Data documented: Yes
- Code availability: Yes
- **Status**: PASS
### ✓ 4. Novelty Alignment
- Novelty claims: {count}
- Aligned with spec: Yes
- Misalignments: 0
- **Status**: PASS
### ✓ 5. Venue Compliance
- Template: Correct
- Page count: {count}/{limit}
- Format issues: 0
- **Status**: PASS
### ✓ 6. De-AI Verification
- AI patterns: 0
- Mechanical transitions: 0
- Excessive adjectives: 0
- **Status**: PASS
## Overall Assessment
✓ **READY FOR SUBMISSION**
All 6 dimensions passed. Paper meets submission requirements.
## Files Audited
- `paper_polished.tex`: Main paper file
- `references.bib`: Bibliography
- `figures/`: All figures
- `.rc/prd.md`: Research requirements
- `.rc/spec/novelty.md`: Novelty specification
- `.rc/venue/spec.json`: Venue requirements
## Next Steps
- [ ] Generate submission package
- [ ] Upload to venue submission system
- [ ] Prepare supplementary materials (if required)
If any dimension fails:
# Show failed dimensions
Write-Host "Failed dimensions:"
foreach ($dim in $dimensions) {
if ($dim.status -eq "FAIL") {
Write-Host "- $($dim.name)"
# Show details
$file = $dimensionFiles[$dim.name]
$data = Get-Content $file | ConvertFrom-Json
# Print specific issues (dimension-dependent)
}
}
Write-Host "`nRecommendation: Run submission-sprint to fix issues"
User: "Sanity check the paper before submission"