@research-copilot/plugin 1.1.15 → 1.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.claude-plugin/plugin.json +3 -2
- package/dist/.codex-plugin/plugin.toml +2 -1
- package/dist/.cursor-plugin/plugin.json +3 -2
- package/dist/.gemini-plugin/plugin.json +3 -2
- package/dist/.opencode-plugin/plugin.json +3 -2
- package/dist/.windsurf-plugin/plugin.json +3 -2
- package/dist/agents/copilot-conductor.agent.md +60 -0
- package/dist/agents/copilot-experiment.agent.md +56 -0
- package/dist/agents/copilot-ideation.agent.md +45 -0
- package/dist/agents/copilot-literature.agent.md +34 -0
- package/dist/agents/copilot-polisher.agent.md +30 -0
- package/dist/agents/copilot-rebuttal.agent.md +35 -0
- package/dist/agents/copilot-reviewer.agent.md +35 -0
- package/dist/agents/copilot-writer.agent.md +39 -0
- package/dist/hooks/dispatch-reminder.json +17 -0
- package/dist/hooks/loop-armer.json +17 -0
- package/dist/hooks/research-copilot-guard.hook.md +51 -0
- package/dist/hooks/scientist-guardrails.json +17 -0
- package/dist/hooks/scripts/__tests__/__init__.py +0 -0
- package/dist/hooks/scripts/__tests__/test_post_tool_loop_armer.py +88 -0
- package/dist/hooks/scripts/__tests__/test_research_copilot_guard_main_session.py +150 -0
- package/dist/hooks/scripts/__tests__/test_session_start_memory_injector.py +66 -0
- package/dist/hooks/scripts/__tests__/test_user_prompt_dispatch_reminder.py +37 -0
- package/dist/hooks/scripts/_copilot_hook_lib.py +564 -0
- package/dist/hooks/scripts/copilot_subagent_stop.py +203 -0
- package/dist/hooks/scripts/copilot_write_guard.py +96 -0
- package/dist/hooks/scripts/post_tool_loop_armer.py +61 -0
- package/dist/hooks/scripts/research_copilot_guard.py +208 -0
- package/dist/hooks/scripts/scientist_guardrails.py +29 -0
- package/dist/hooks/scripts/session_start_memory_injector.py +188 -0
- package/dist/hooks/scripts/user_prompt_dispatch_reminder.py +40 -0
- package/dist/hooks/session-memory-injector.json +17 -0
- package/dist/hooks/tests/__init__.py +0 -0
- package/dist/hooks/tests/conftest.py +61 -0
- package/dist/hooks/tests/fixtures/transcript_copilot_experiment_complete.jsonl +2 -0
- package/dist/hooks/tests/fixtures/transcript_copilot_experiment_state_jump.jsonl +2 -0
- package/dist/hooks/tests/fixtures/transcript_copilot_literature.jsonl +2 -0
- package/dist/hooks/tests/fixtures/transcript_main_only.jsonl +2 -0
- package/dist/hooks/tests/fixtures/transcript_malformed_state_output.jsonl +2 -0
- package/dist/hooks/tests/integration_run.ps1 +65 -0
- package/dist/hooks/tests/test_copilot_hook_lib.py +398 -0
- package/dist/hooks/tests/test_copilot_subagent_stop.py +186 -0
- package/dist/hooks/tests/test_copilot_write_guard.py +137 -0
- package/dist/hooks/tests/test_session_start_snapshot.py +116 -0
- package/dist/hooks/tests/test_state_machine_consistency.py +75 -0
- package/dist/skills/arxivsub-skill/SKILL.md +98 -0
- package/dist/skills/arxivsub-skill/skill.json +5 -0
- package/dist/skills/de-ai-checker/SKILL.md +110 -0
- package/dist/skills/de-ai-checker/skill.json +5 -0
- package/dist/skills/deep-interview/SKILL.md +91 -0
- package/dist/skills/deep-interview/skill.json +5 -0
- package/dist/skills/grill-with-docs/SKILL.md +120 -0
- package/dist/skills/grill-with-docs/skill.json +5 -0
- package/dist/skills/init-mcp/SKILL.md +83 -0
- package/dist/skills/init-mcp/skill.json +5 -0
- package/dist/skills/model-escalation/SKILL.md +93 -0
- package/dist/skills/model-escalation/skill.json +5 -0
- package/dist/skills/paper-architecture-web-drawing/SKILL.md +282 -0
- package/dist/skills/paper-architecture-web-drawing/skill.json +5 -0
- package/dist/skills/paper-deai/SKILL.md +53 -0
- package/dist/skills/paper-deai/skill.json +5 -0
- package/dist/skills/paper-en2zh/SKILL.md +29 -0
- package/dist/skills/paper-en2zh/skill.json +5 -0
- package/dist/skills/paper-expand/SKILL.md +43 -0
- package/dist/skills/paper-expand/skill.json +5 -0
- package/dist/skills/paper-experiment-analysis/SKILL.md +38 -0
- package/dist/skills/paper-experiment-analysis/skill.json +5 -0
- package/dist/skills/paper-figure-caption/SKILL.md +29 -0
- package/dist/skills/paper-figure-caption/skill.json +5 -0
- package/dist/skills/paper-logic-check/SKILL.md +30 -0
- package/dist/skills/paper-logic-check/skill.json +5 -0
- package/dist/skills/paper-polish/SKILL.md +34 -305
- package/dist/skills/paper-polish/skill.json +5 -0
- package/dist/skills/paper-review/SKILL.md +49 -0
- package/dist/skills/paper-review/skill.json +5 -0
- package/dist/skills/paper-sanity-check/SKILL.md +122 -0
- package/dist/skills/paper-sanity-check/skill.json +5 -0
- package/dist/skills/paper-shorten/SKILL.md +42 -0
- package/dist/skills/paper-shorten/skill.json +5 -0
- package/dist/skills/paper-table-caption/SKILL.md +29 -0
- package/dist/skills/paper-table-caption/skill.json +5 -0
- package/dist/skills/paper-translate/SKILL.md +48 -0
- package/dist/skills/paper-translate/skill.json +5 -0
- package/dist/skills/plugin-dev-agent-development/SKILL.md +95 -0
- package/dist/skills/plugin-dev-agent-development/skill.json +5 -0
- package/dist/skills/research-workflow/SKILL.md +116 -0
- package/dist/skills/research-workflow/skill.json +5 -0
- package/dist/skills/scientist-experiment-runner/SKILL.md +76 -0
- package/dist/skills/scientist-experiment-runner/skill.json +5 -0
- package/dist/skills/scientist-ideation/SKILL.md +52 -0
- package/dist/skills/scientist-ideation/skill.json +5 -0
- package/dist/skills/scientist-plotting/SKILL.md +49 -0
- package/dist/skills/scientist-plotting/skill.json +5 -0
- package/dist/skills/scientist-review/SKILL.md +40 -0
- package/dist/skills/scientist-review/skill.json +5 -0
- package/dist/skills/scientist-runtime-init/SKILL.md +46 -0
- package/dist/skills/scientist-runtime-init/skill.json +5 -0
- package/dist/skills/scientist-writeup/SKILL.md +60 -0
- package/dist/skills/scientist-writeup/skill.json +5 -0
- package/dist/skills/talk-normal/SKILL.md +73 -0
- package/dist/skills/talk-normal/skill.json +5 -0
- package/package.json +1 -1
- package/dist/agents/rc-experiment.md +0 -203
- package/dist/agents/rc-ideation.md +0 -224
- package/dist/agents/rc-literature.md +0 -228
- package/dist/agents/rc-plan.md +0 -189
- package/dist/agents/rc-polisher.md +0 -166
- package/dist/agents/rc-rebuttal.md +0 -194
- package/dist/agents/rc-reviewer.md +0 -187
- package/dist/agents/rc-update-spec.md +0 -231
- package/dist/agents/rc-verify.md +0 -234
- package/dist/agents/rc-writer.md +0 -161
- package/dist/skills/experiment-design/SKILL.md +0 -331
- package/dist/skills/full-research-workflow/SKILL.md +0 -363
- package/dist/skills/literature-search/SKILL.md +0 -244
- package/dist/skills/sanity-check/SKILL.md +0 -449
- package/dist/skills/submission-sprint/SKILL.md +0 -361
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: literature-search
|
|
3
|
-
description: Focused literature search skill. Searches papers, locks baselines, builds related-work map. Use for standalone literature tasks.
|
|
4
|
-
triggers:
|
|
5
|
-
- "search papers"
|
|
6
|
-
- "find baselines"
|
|
7
|
-
- "literature review"
|
|
8
|
-
- "related work"
|
|
9
|
-
- "find research on"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Literature Search
|
|
13
|
-
|
|
14
|
-
Orchestrate focused literature search: create task → dispatch @rc-literature → verify results.
|
|
15
|
-
|
|
16
|
-
## When to Use
|
|
17
|
-
|
|
18
|
-
Use this skill when:
|
|
19
|
-
- User asks to "search papers for X"
|
|
20
|
-
- User wants to "find baselines for Y"
|
|
21
|
-
- User needs a "literature review on Z"
|
|
22
|
-
- Standalone literature search (NOT part of full pipeline)
|
|
23
|
-
|
|
24
|
-
Do NOT use when:
|
|
25
|
-
- Part of full-research-workflow (that handles literature internally)
|
|
26
|
-
- User only wants a quick web search (use web-search skill)
|
|
27
|
-
|
|
28
|
-
## Task-First Protocol
|
|
29
|
-
|
|
30
|
-
Before starting, check if task exists:
|
|
31
|
-
|
|
32
|
-
```powershell
|
|
33
|
-
# Check for existing literature task
|
|
34
|
-
$taskFile = "C:\PythonProject\research_copilot\.rc\tasks\literature-search.json"
|
|
35
|
-
if (Test-Path $taskFile) {
|
|
36
|
-
$task = Get-Content $taskFile | ConvertFrom-Json
|
|
37
|
-
Write-Host "Found existing task: $($task.query)"
|
|
38
|
-
} else {
|
|
39
|
-
Write-Host "No existing task. Will create one."
|
|
40
|
-
}
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Create task if needed:
|
|
44
|
-
|
|
45
|
-
```powershell
|
|
46
|
-
# Create literature search task
|
|
47
|
-
rc task create --type literature --query "user query here" --output .rc/tasks/literature-search.json
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Auto-Context Loading
|
|
51
|
-
|
|
52
|
-
Read task context before orchestration:
|
|
53
|
-
|
|
54
|
-
```powershell
|
|
55
|
-
# Load task context
|
|
56
|
-
$taskFile = "C:\PythonProject\research_copilot\.rc\tasks\literature-search.json"
|
|
57
|
-
if (Test-Path $taskFile) {
|
|
58
|
-
$task = Get-Content $taskFile | ConvertFrom-Json
|
|
59
|
-
|
|
60
|
-
Write-Host "Task Query: $($task.query)"
|
|
61
|
-
Write-Host "Target Baselines: $($task.target_baselines)"
|
|
62
|
-
Write-Host "Categories Required: $($task.categories_required)"
|
|
63
|
-
|
|
64
|
-
# Load PRD if referenced
|
|
65
|
-
if ($task.prd_file -and (Test-Path $task.prd_file)) {
|
|
66
|
-
$prd = Get-Content $task.prd_file -Raw
|
|
67
|
-
Write-Host "PRD loaded: $($task.prd_file)"
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Orchestration Logic
|
|
73
|
-
|
|
74
|
-
Execute literature search via agent dispatch:
|
|
75
|
-
|
|
76
|
-
```powershell
|
|
77
|
-
# Start task
|
|
78
|
-
rc task start literature-search
|
|
79
|
-
|
|
80
|
-
# Dispatch to literature agent
|
|
81
|
-
Write-Host "Dispatching to @rc-literature agent..."
|
|
82
|
-
|
|
83
|
-
# Agent will:
|
|
84
|
-
# 1. Parse query and extract search terms
|
|
85
|
-
# 2. Search multiple sources (arXiv, Semantic Scholar, Google Scholar)
|
|
86
|
-
# 3. Extract baselines and build comparison table
|
|
87
|
-
# 4. Categorize papers (method, survey, application)
|
|
88
|
-
# 5. Generate related-work map
|
|
89
|
-
# 6. Save results to .rc/literature/
|
|
90
|
-
|
|
91
|
-
# Wait for completion (agent runs autonomously)
|
|
92
|
-
# Check status
|
|
93
|
-
$status = rc task status literature-search
|
|
94
|
-
Write-Host "Task status: $status"
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Verify results:
|
|
98
|
-
|
|
99
|
-
```powershell
|
|
100
|
-
# Verify literature search outputs
|
|
101
|
-
$litDir = "C:\PythonProject\research_copilot\.rc\literature"
|
|
102
|
-
|
|
103
|
-
# Check baselines file
|
|
104
|
-
$baselinesFile = Join-Path $litDir "baselines.json"
|
|
105
|
-
if (Test-Path $baselinesFile) {
|
|
106
|
-
$baselines = Get-Content $baselinesFile | ConvertFrom-Json
|
|
107
|
-
Write-Host "Found $($baselines.Count) baselines"
|
|
108
|
-
} else {
|
|
109
|
-
Write-Host "WARNING: No baselines file found"
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
# Check papers file
|
|
113
|
-
$papersFile = Join-Path $litDir "papers.json"
|
|
114
|
-
if (Test-Path $papersFile) {
|
|
115
|
-
$papers = Get-Content $papersFile | ConvertFrom-Json
|
|
116
|
-
Write-Host "Found $($papers.Count) papers"
|
|
117
|
-
} else {
|
|
118
|
-
Write-Host "WARNING: No papers file found"
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
# Check related-work map
|
|
122
|
-
$relatedWorkFile = Join-Path $litDir "related-work.md"
|
|
123
|
-
if (Test-Path $relatedWorkFile) {
|
|
124
|
-
Write-Host "Related-work map generated"
|
|
125
|
-
} else {
|
|
126
|
-
Write-Host "WARNING: No related-work map found"
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Complete task:
|
|
131
|
-
|
|
132
|
-
```powershell
|
|
133
|
-
# Mark task complete if quality gates passed
|
|
134
|
-
rc task complete literature-search
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## Quality Gates
|
|
138
|
-
|
|
139
|
-
Verify before marking complete:
|
|
140
|
-
|
|
141
|
-
```powershell
|
|
142
|
-
# Quality gate checks
|
|
143
|
-
$passed = $true
|
|
144
|
-
|
|
145
|
-
# Gate 1: Minimum baselines
|
|
146
|
-
$baselinesFile = "C:\PythonProject\research_copilot\.rc\literature\baselines.json"
|
|
147
|
-
if (Test-Path $baselinesFile) {
|
|
148
|
-
$baselines = Get-Content $baselinesFile | ConvertFrom-Json
|
|
149
|
-
if ($baselines.Count -lt 3) {
|
|
150
|
-
Write-Host "FAIL: Need ≥3 baselines, found $($baselines.Count)"
|
|
151
|
-
$passed = $false
|
|
152
|
-
}
|
|
153
|
-
} else {
|
|
154
|
-
Write-Host "FAIL: No baselines file"
|
|
155
|
-
$passed = $false
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
# Gate 2: Category coverage
|
|
159
|
-
$papersFile = "C:\PythonProject\research_copilot\.rc\literature\papers.json"
|
|
160
|
-
if (Test-Path $papersFile) {
|
|
161
|
-
$papers = Get-Content $papersFile | ConvertFrom-Json
|
|
162
|
-
$categories = $papers | Select-Object -ExpandProperty category -Unique
|
|
163
|
-
if ($categories.Count -lt 2) {
|
|
164
|
-
Write-Host "FAIL: Need ≥2 categories, found $($categories.Count)"
|
|
165
|
-
$passed = $false
|
|
166
|
-
}
|
|
167
|
-
} else {
|
|
168
|
-
Write-Host "FAIL: No papers file"
|
|
169
|
-
$passed = $false
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
# Gate 3: PRD claim support
|
|
173
|
-
$prdFile = "C:\PythonProject\research_copilot\.rc\prd.md"
|
|
174
|
-
if (Test-Path $prdFile) {
|
|
175
|
-
$prd = Get-Content $prdFile -Raw
|
|
176
|
-
$claims = [regex]::Matches($prd, '\[CLAIM:([^\]]+)\]')
|
|
177
|
-
$supportedClaims = 0
|
|
178
|
-
|
|
179
|
-
foreach ($claim in $claims) {
|
|
180
|
-
$claimId = $claim.Groups[1].Value
|
|
181
|
-
$citationPattern = "\[$claimId\]"
|
|
182
|
-
if ($prd -match $citationPattern) {
|
|
183
|
-
$supportedClaims++
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
if ($supportedClaims -lt $claims.Count) {
|
|
188
|
-
Write-Host "FAIL: Only $supportedClaims/$($claims.Count) claims supported"
|
|
189
|
-
$passed = $false
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if ($passed) {
|
|
194
|
-
Write-Host "All quality gates passed"
|
|
195
|
-
} else {
|
|
196
|
-
Write-Host "Quality gates failed - review needed"
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
## Report Format
|
|
201
|
-
|
|
202
|
-
Generate final report:
|
|
203
|
-
|
|
204
|
-
```markdown
|
|
205
|
-
# Literature Search Report
|
|
206
|
-
|
|
207
|
-
**Query**: {user_query}
|
|
208
|
-
**Date**: {date}
|
|
209
|
-
**Baselines Found**: {baseline_count}
|
|
210
|
-
**Papers Reviewed**: {paper_count}
|
|
211
|
-
|
|
212
|
-
## Baselines
|
|
213
|
-
|
|
214
|
-
| Method | Year | Metric | Score | Paper |
|
|
215
|
-
|--------|------|--------|-------|-------|
|
|
216
|
-
| {name} | {year} | {metric} | {score} | [{title}]({url}) |
|
|
217
|
-
|
|
218
|
-
## Paper Categories
|
|
219
|
-
|
|
220
|
-
- **Methods**: {count} papers
|
|
221
|
-
- **Surveys**: {count} papers
|
|
222
|
-
- **Applications**: {count} papers
|
|
223
|
-
|
|
224
|
-
## Related Work Map
|
|
225
|
-
|
|
226
|
-
{content from related-work.md}
|
|
227
|
-
|
|
228
|
-
## Key Findings
|
|
229
|
-
|
|
230
|
-
- Finding 1
|
|
231
|
-
- Finding 2
|
|
232
|
-
- Finding 3
|
|
233
|
-
|
|
234
|
-
## Next Steps
|
|
235
|
-
|
|
236
|
-
- [ ] Review baselines for integration
|
|
237
|
-
- [ ] Extract method details from top papers
|
|
238
|
-
- [ ] Update PRD with new citations
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
## Example Usage
|
|
242
|
-
|
|
243
|
-
```
|
|
244
|
-
User: "Search papers on graph neural networks for recommendation"
|
|
@@ -1,449 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sanity-check
|
|
3
|
-
description: Final 6-dimension sanity check (logic/citation/reproducibility/novelty/venue/de-AI). Use before submission for comprehensive audit.
|
|
4
|
-
triggers:
|
|
5
|
-
- "sanity check"
|
|
6
|
-
- "final check"
|
|
7
|
-
- "audit paper"
|
|
8
|
-
- "pre-submission audit"
|
|
9
|
-
- "verify paper ready"
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# Sanity Check
|
|
13
|
-
|
|
14
|
-
Final 6-dimension audit without making changes. Verifies paper is submission-ready across all critical dimensions.
|
|
15
|
-
|
|
16
|
-
## When to Use
|
|
17
|
-
|
|
18
|
-
Use this skill when:
|
|
19
|
-
- User asks to "sanity check the paper"
|
|
20
|
-
- Paper is ready for final audit before submission
|
|
21
|
-
- After submission sprint completes
|
|
22
|
-
- User wants to "verify paper is ready"
|
|
23
|
-
|
|
24
|
-
Do NOT use when:
|
|
25
|
-
- Paper needs changes (use submission-sprint or review skills)
|
|
26
|
-
- User wants specific issue fixed (handle directly)
|
|
27
|
-
- Paper is still being drafted (too early)
|
|
28
|
-
|
|
29
|
-
## Task-First Protocol
|
|
30
|
-
|
|
31
|
-
Before starting, check if sanity-check task exists:
|
|
32
|
-
|
|
33
|
-
```powershell
|
|
34
|
-
# Check for existing sanity-check task
|
|
35
|
-
$taskFile = "C:\PythonProject\research_copilot\.rc\tasks\sanity-check.json"
|
|
36
|
-
if (Test-Path $taskFile) {
|
|
37
|
-
$task = Get-Content $taskFile | ConvertFrom-Json
|
|
38
|
-
Write-Host "Found existing sanity-check task for: $($task.paper_file)"
|
|
39
|
-
} else {
|
|
40
|
-
Write-Host "No existing task. Will create one."
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Create task if needed:
|
|
45
|
-
|
|
46
|
-
```powershell
|
|
47
|
-
# Create sanity-check task
|
|
48
|
-
$paperFile = "paper_polished.tex" # Or user-specified file
|
|
49
|
-
rc task create --type sanity-check --paper $paperFile --output .rc/tasks/sanity-check.json
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## Auto-Context Loading
|
|
53
|
-
|
|
54
|
-
Read all context files before audit:
|
|
55
|
-
|
|
56
|
-
```powershell
|
|
57
|
-
# Load task context
|
|
58
|
-
$taskFile = "C:\PythonProject\research_copilot\.rc\tasks\sanity-check.json"
|
|
59
|
-
if (Test-Path $taskFile) {
|
|
60
|
-
$task = Get-Content $taskFile | ConvertFrom-Json
|
|
61
|
-
Write-Host "Paper file: $($task.paper_file)"
|
|
62
|
-
|
|
63
|
-
# Load PRD for research requirements
|
|
64
|
-
$prdFile = "C:\PythonProject\research_copilot\.rc\prd.md"
|
|
65
|
-
if (Test-Path $prdFile) {
|
|
66
|
-
$prd = Get-Content $prdFile -Raw
|
|
67
|
-
Write-Host "PRD loaded"
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
# Load venue specification
|
|
71
|
-
$venueFile = "C:\PythonProject\research_copilot\.rc\venue\spec.json"
|
|
72
|
-
if (Test-Path $venueFile) {
|
|
73
|
-
$venue = Get-Content $venueFile | ConvertFrom-Json
|
|
74
|
-
Write-Host "Venue: $($venue.name)"
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
# Load novelty spec
|
|
78
|
-
$noveltyFile = "C:\PythonProject\research_copilot\.rc\spec\novelty.md"
|
|
79
|
-
if (Test-Path $noveltyFile) {
|
|
80
|
-
Write-Host "Novelty spec loaded"
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
# Load writing conventions
|
|
84
|
-
$conventionsFile = "C:\PythonProject\research_copilot\.rc\writing\conventions.md"
|
|
85
|
-
if (Test-Path $conventionsFile) {
|
|
86
|
-
Write-Host "Writing conventions loaded"
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Orchestration Logic
|
|
92
|
-
|
|
93
|
-
Execute 6-dimension audit via @rc-reviewer agent:
|
|
94
|
-
|
|
95
|
-
```powershell
|
|
96
|
-
# Start task
|
|
97
|
-
rc task start sanity-check
|
|
98
|
-
|
|
99
|
-
Write-Host "Starting 6-dimension sanity check..."
|
|
100
|
-
|
|
101
|
-
# Dispatch to reviewer agent with comprehensive 6-dimension prompt
|
|
102
|
-
Write-Host "Dispatching to @rc-reviewer agent..."
|
|
103
|
-
|
|
104
|
-
# Agent audits 6 dimensions (no changes made):
|
|
105
|
-
# 1. Logic: Claims → Evidence chain complete
|
|
106
|
-
# 2. Citations: All baselines cited, no orphan references
|
|
107
|
-
# 3. Reproducibility: Config/seed/data documented
|
|
108
|
-
# 4. Novelty: Claims match spec/novelty/
|
|
109
|
-
# 5. Venue compliance: Format/length/template correct
|
|
110
|
-
# 6. De-AI: No AI patterns remain
|
|
111
|
-
|
|
112
|
-
# Wait for completion
|
|
113
|
-
$status = rc task status sanity-check
|
|
114
|
-
Write-Host "Task status: $status"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## 6 Dimensions
|
|
118
|
-
|
|
119
|
-
### Dimension 1: Logic Integrity
|
|
120
|
-
|
|
121
|
-
Check claims → evidence chain:
|
|
122
|
-
|
|
123
|
-
```powershell
|
|
124
|
-
# Verify logic dimension
|
|
125
|
-
$logicFile = "C:\PythonProject\research_copilot\.rc\sanity\logic.json"
|
|
126
|
-
if (Test-Path $logicFile) {
|
|
127
|
-
$logic = Get-Content $logicFile | ConvertFrom-Json
|
|
128
|
-
|
|
129
|
-
Write-Host "`nDimension 1: Logic"
|
|
130
|
-
Write-Host "Claims checked: $($logic.claims_checked)"
|
|
131
|
-
Write-Host "Evidence gaps: $($logic.evidence_gaps.Count)"
|
|
132
|
-
|
|
133
|
-
if ($logic.evidence_gaps.Count -eq 0) {
|
|
134
|
-
Write-Host "✓ All claims have supporting evidence"
|
|
135
|
-
} else {
|
|
136
|
-
Write-Host "✗ Evidence gaps found:"
|
|
137
|
-
foreach ($gap in $logic.evidence_gaps) {
|
|
138
|
-
Write-Host " - $($gap.claim) ($($gap.location))"
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Dimension 2: Citation Completeness
|
|
145
|
-
|
|
146
|
-
Check all baselines cited and no orphan references:
|
|
147
|
-
|
|
148
|
-
```powershell
|
|
149
|
-
# Verify citations dimension
|
|
150
|
-
$citationsFile = "C:\PythonProject\research_copilot\.rc\sanity\citations.json"
|
|
151
|
-
if (Test-Path $citationsFile) {
|
|
152
|
-
$citations = Get-Content $citationsFile | ConvertFrom-Json
|
|
153
|
-
|
|
154
|
-
Write-Host "`nDimension 2: Citations"
|
|
155
|
-
Write-Host "Total citations: $($citations.total_citations)"
|
|
156
|
-
Write-Host "Orphan references: $($citations.orphan_refs.Count)"
|
|
157
|
-
Write-Host "Missing baseline citations: $($citations.missing_baselines.Count)"
|
|
158
|
-
|
|
159
|
-
if ($citations.orphan_refs.Count -eq 0 -and $citations.missing_baselines.Count -eq 0) {
|
|
160
|
-
Write-Host "✓ All citations complete and referenced"
|
|
161
|
-
} else {
|
|
162
|
-
if ($citations.orphan_refs.Count -gt 0) {
|
|
163
|
-
Write-Host "✗ Orphan references (in .bib but not cited):"
|
|
164
|
-
foreach ($ref in $citations.orphan_refs) {
|
|
165
|
-
Write-Host " - $ref"
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
if ($citations.missing_baselines.Count -gt 0) {
|
|
169
|
-
Write-Host "✗ Missing baseline citations:"
|
|
170
|
-
foreach ($baseline in $citations.missing_baselines) {
|
|
171
|
-
Write-Host " - $baseline"
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### Dimension 3: Reproducibility
|
|
179
|
-
|
|
180
|
-
Check config/seed/data documented:
|
|
181
|
-
|
|
182
|
-
```powershell
|
|
183
|
-
# Verify reproducibility dimension
|
|
184
|
-
$reproducibilityFile = "C:\PythonProject\research_copilot\.rc\sanity\reproducibility.json"
|
|
185
|
-
if (Test-Path $reproducibilityFile) {
|
|
186
|
-
$repro = Get-Content $reproducibilityFile | ConvertFrom-Json
|
|
187
|
-
|
|
188
|
-
Write-Host "`nDimension 3: Reproducibility"
|
|
189
|
-
Write-Host "Config documented: $($repro.config_documented)"
|
|
190
|
-
Write-Host "Seeds documented: $($repro.seeds_documented)"
|
|
191
|
-
Write-Host "Data documented: $($repro.data_documented)"
|
|
192
|
-
Write-Host "Code available: $($repro.code_available)"
|
|
193
|
-
|
|
194
|
-
if ($repro.config_documented -and $repro.seeds_documented -and $repro.data_documented) {
|
|
195
|
-
Write-Host "✓ Reproducibility requirements met"
|
|
196
|
-
} else {
|
|
197
|
-
Write-Host "✗ Missing reproducibility elements:"
|
|
198
|
-
if (-not $repro.config_documented) { Write-Host " - Configuration details" }
|
|
199
|
-
if (-not $repro.seeds_documented) { Write-Host " - Random seeds" }
|
|
200
|
-
if (-not $repro.data_documented) { Write-Host " - Dataset details" }
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### Dimension 4: Novelty Alignment
|
|
206
|
-
|
|
207
|
-
Check claims match spec/novelty/:
|
|
208
|
-
|
|
209
|
-
```powershell
|
|
210
|
-
# Verify novelty dimension
|
|
211
|
-
$noveltyFile = "C:\PythonProject\research_copilot\.rc\sanity\novelty.json"
|
|
212
|
-
if (Test-Path $noveltyFile) {
|
|
213
|
-
$novelty = Get-Content $noveltyFile | ConvertFrom-Json
|
|
214
|
-
|
|
215
|
-
Write-Host "`nDimension 4: Novelty"
|
|
216
|
-
Write-Host "Novelty claims: $($novelty.claims.Count)"
|
|
217
|
-
Write-Host "Aligned with spec: $($novelty.aligned_with_spec)"
|
|
218
|
-
Write-Host "Misalignments: $($novelty.misalignments.Count)"
|
|
219
|
-
|
|
220
|
-
if ($novelty.aligned_with_spec) {
|
|
221
|
-
Write-Host "✓ Novelty claims match specification"
|
|
222
|
-
} else {
|
|
223
|
-
Write-Host "✗ Novelty misalignments:"
|
|
224
|
-
foreach ($misalignment in $novelty.misalignments) {
|
|
225
|
-
Write-Host " - $($misalignment.claim)"
|
|
226
|
-
Write-Host " Expected: $($misalignment.expected)"
|
|
227
|
-
Write-Host " Found: $($misalignment.found)"
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### Dimension 5: Venue Compliance
|
|
234
|
-
|
|
235
|
-
Check format/length/template correct:
|
|
236
|
-
|
|
237
|
-
```powershell
|
|
238
|
-
# Verify venue compliance dimension
|
|
239
|
-
$venueFile = "C:\PythonProject\research_copilot\.rc\sanity\venue.json"
|
|
240
|
-
if (Test-Path $venueFile) {
|
|
241
|
-
$venueCheck = Get-Content $venueFile | ConvertFrom-Json
|
|
242
|
-
|
|
243
|
-
Write-Host "`nDimension 5: Venue Compliance"
|
|
244
|
-
Write-Host "Template correct: $($venueCheck.template_correct)"
|
|
245
|
-
Write-Host "Page count: $($venueCheck.page_count)/$($venueCheck.page_limit)"
|
|
246
|
-
Write-Host "Format issues: $($venueCheck.format_issues.Count)"
|
|
247
|
-
|
|
248
|
-
if ($venueCheck.template_correct -and $venueCheck.page_count -le $venueCheck.page_limit -and $venueCheck.format_issues.Count -eq 0) {
|
|
249
|
-
Write-Host "✓ Venue requirements met"
|
|
250
|
-
} else {
|
|
251
|
-
Write-Host "✗ Venue compliance issues:"
|
|
252
|
-
if (-not $venueCheck.template_correct) { Write-Host " - Incorrect template" }
|
|
253
|
-
if ($venueCheck.page_count -gt $venueCheck.page_limit) { Write-Host " - Exceeds page limit" }
|
|
254
|
-
foreach ($issue in $venueCheck.format_issues) {
|
|
255
|
-
Write-Host " - $issue"
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
### Dimension 6: De-AI Verification
|
|
262
|
-
|
|
263
|
-
Check no AI patterns remain:
|
|
264
|
-
|
|
265
|
-
```powershell
|
|
266
|
-
# Verify de-AI dimension
|
|
267
|
-
$deAiFile = "C:\PythonProject\research_copilot\.rc\sanity\de-ai.json"
|
|
268
|
-
if (Test-Path $deAiFile) {
|
|
269
|
-
$deAi = Get-Content $deAiFile | ConvertFrom-Json
|
|
270
|
-
|
|
271
|
-
Write-Host "`nDimension 6: De-AI"
|
|
272
|
-
Write-Host "AI patterns found: $($deAi.patterns_found.Count)"
|
|
273
|
-
Write-Host "Mechanical transitions: $($deAi.mechanical_transitions)"
|
|
274
|
-
Write-Host "Excessive adjectives: $($deAi.excessive_adjectives)"
|
|
275
|
-
|
|
276
|
-
if ($deAi.patterns_found.Count -eq 0) {
|
|
277
|
-
Write-Host "✓ No AI patterns detected"
|
|
278
|
-
} else {
|
|
279
|
-
Write-Host "✗ AI patterns found:"
|
|
280
|
-
foreach ($pattern in $deAi.patterns_found) {
|
|
281
|
-
Write-Host " - $($pattern.type): '$($pattern.text)' ($($pattern.location))"
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
## Quality Gates
|
|
288
|
-
|
|
289
|
-
All 6 dimensions must pass:
|
|
290
|
-
|
|
291
|
-
```powershell
|
|
292
|
-
# Quality gate checks
|
|
293
|
-
$passed = $true
|
|
294
|
-
$dimensions = @()
|
|
295
|
-
|
|
296
|
-
# Check each dimension
|
|
297
|
-
$dimensionFiles = @{
|
|
298
|
-
"Logic" = "C:\PythonProject\research_copilot\.rc\sanity\logic.json"
|
|
299
|
-
"Citations" = "C:\PythonProject\research_copilot\.rc\sanity\citations.json"
|
|
300
|
-
"Reproducibility" = "C:\PythonProject\research_copilot\.rc\sanity\reproducibility.json"
|
|
301
|
-
"Novelty" = "C:\PythonProject\research_copilot\.rc\sanity\novelty.json"
|
|
302
|
-
"Venue" = "C:\PythonProject\research_copilot\.rc\sanity\venue.json"
|
|
303
|
-
"De-AI" = "C:\PythonProject\research_copilot\.rc\sanity\de-ai.json"
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
foreach ($dimension in $dimensionFiles.Keys) {
|
|
307
|
-
$file = $dimensionFiles[$dimension]
|
|
308
|
-
|
|
309
|
-
if (-not (Test-Path $file)) {
|
|
310
|
-
Write-Host "FAIL: $dimension check not completed"
|
|
311
|
-
$passed = $false
|
|
312
|
-
$dimensions += @{ name = $dimension; status = "INCOMPLETE" }
|
|
313
|
-
continue
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
$data = Get-Content $file | ConvertFrom-Json
|
|
317
|
-
|
|
318
|
-
# Dimension-specific pass criteria
|
|
319
|
-
$dimPassed = $false
|
|
320
|
-
switch ($dimension) {
|
|
321
|
-
"Logic" { $dimPassed = $data.evidence_gaps.Count -eq 0 }
|
|
322
|
-
"Citations" { $dimPassed = $data.orphan_refs.Count -eq 0 -and $data.missing_baselines.Count -eq 0 }
|
|
323
|
-
"Reproducibility" { $dimPassed = $data.config_documented -and $data.seeds_documented -and $data.data_documented }
|
|
324
|
-
"Novelty" { $dimPassed = $data.aligned_with_spec }
|
|
325
|
-
"Venue" { $dimPassed = $data.template_correct -and $data.page_count -le $data.page_limit -and $data.format_issues.Count -eq 0 }
|
|
326
|
-
"De-AI" { $dimPassed = $data.patterns_found.Count -eq 0 }
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
if ($dimPassed) {
|
|
330
|
-
$dimensions += @{ name = $dimension; status = "PASS" }
|
|
331
|
-
} else {
|
|
332
|
-
$dimensions += @{ name = $dimension; status = "FAIL" }
|
|
333
|
-
$passed = $false
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
# Overall status
|
|
338
|
-
Write-Host "`n=== SANITY CHECK RESULTS ==="
|
|
339
|
-
foreach ($dim in $dimensions) {
|
|
340
|
-
$icon = if ($dim.status -eq "PASS") { "✓" } else { "✗" }
|
|
341
|
-
Write-Host "$icon $($dim.name): $($dim.status)"
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
if ($passed) {
|
|
345
|
-
Write-Host "`n✓ PAPER READY FOR SUBMISSION"
|
|
346
|
-
rc task complete sanity-check
|
|
347
|
-
} else {
|
|
348
|
-
Write-Host "`n✗ PAPER NOT READY - Issues must be resolved"
|
|
349
|
-
Write-Host "Run submission-sprint to fix remaining issues"
|
|
350
|
-
}
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
## Report Format
|
|
354
|
-
|
|
355
|
-
Generate final report:
|
|
356
|
-
|
|
357
|
-
```markdown
|
|
358
|
-
# Sanity Check Report
|
|
359
|
-
|
|
360
|
-
**Paper**: {paper_file}
|
|
361
|
-
**Date**: {date}
|
|
362
|
-
**Status**: {READY / NOT_READY}
|
|
363
|
-
|
|
364
|
-
## 6-Dimension Audit
|
|
365
|
-
|
|
366
|
-
### ✓ 1. Logic Integrity
|
|
367
|
-
- Claims checked: {count}
|
|
368
|
-
- Evidence gaps: 0
|
|
369
|
-
- **Status**: PASS
|
|
370
|
-
|
|
371
|
-
### ✓ 2. Citation Completeness
|
|
372
|
-
- Total citations: {count}
|
|
373
|
-
- Orphan references: 0
|
|
374
|
-
- Missing baselines: 0
|
|
375
|
-
- **Status**: PASS
|
|
376
|
-
|
|
377
|
-
### ✓ 3. Reproducibility
|
|
378
|
-
- Configuration documented: Yes
|
|
379
|
-
- Seeds documented: Yes
|
|
380
|
-
- Data documented: Yes
|
|
381
|
-
- Code availability: Yes
|
|
382
|
-
- **Status**: PASS
|
|
383
|
-
|
|
384
|
-
### ✓ 4. Novelty Alignment
|
|
385
|
-
- Novelty claims: {count}
|
|
386
|
-
- Aligned with spec: Yes
|
|
387
|
-
- Misalignments: 0
|
|
388
|
-
- **Status**: PASS
|
|
389
|
-
|
|
390
|
-
### ✓ 5. Venue Compliance
|
|
391
|
-
- Template: Correct
|
|
392
|
-
- Page count: {count}/{limit}
|
|
393
|
-
- Format issues: 0
|
|
394
|
-
- **Status**: PASS
|
|
395
|
-
|
|
396
|
-
### ✓ 6. De-AI Verification
|
|
397
|
-
- AI patterns: 0
|
|
398
|
-
- Mechanical transitions: 0
|
|
399
|
-
- Excessive adjectives: 0
|
|
400
|
-
- **Status**: PASS
|
|
401
|
-
|
|
402
|
-
## Overall Assessment
|
|
403
|
-
|
|
404
|
-
✓ **READY FOR SUBMISSION**
|
|
405
|
-
|
|
406
|
-
All 6 dimensions passed. Paper meets submission requirements.
|
|
407
|
-
|
|
408
|
-
## Files Audited
|
|
409
|
-
|
|
410
|
-
- `paper_polished.tex`: Main paper file
|
|
411
|
-
- `references.bib`: Bibliography
|
|
412
|
-
- `figures/`: All figures
|
|
413
|
-
- `.rc/prd.md`: Research requirements
|
|
414
|
-
- `.rc/spec/novelty.md`: Novelty specification
|
|
415
|
-
- `.rc/venue/spec.json`: Venue requirements
|
|
416
|
-
|
|
417
|
-
## Next Steps
|
|
418
|
-
|
|
419
|
-
- [ ] Generate submission package
|
|
420
|
-
- [ ] Upload to venue submission system
|
|
421
|
-
- [ ] Prepare supplementary materials (if required)
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
## Error Recovery
|
|
425
|
-
|
|
426
|
-
If any dimension fails:
|
|
427
|
-
|
|
428
|
-
```powershell
|
|
429
|
-
# Show failed dimensions
|
|
430
|
-
Write-Host "Failed dimensions:"
|
|
431
|
-
foreach ($dim in $dimensions) {
|
|
432
|
-
if ($dim.status -eq "FAIL") {
|
|
433
|
-
Write-Host "- $($dim.name)"
|
|
434
|
-
|
|
435
|
-
# Show details
|
|
436
|
-
$file = $dimensionFiles[$dim.name]
|
|
437
|
-
$data = Get-Content $file | ConvertFrom-Json
|
|
438
|
-
|
|
439
|
-
# Print specific issues (dimension-dependent)
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
Write-Host "`nRecommendation: Run submission-sprint to fix issues"
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
## Example Usage
|
|
447
|
-
|
|
448
|
-
```
|
|
449
|
-
User: "Sanity check the paper before submission"
|