with one click
organize-files
// Organize the shared notes directory when it becomes hard to navigate. Restructure within research/ and experiments/, deduplicate, update index.md.
// Organize the shared notes directory when it becomes hard to navigate. Restructure within research/ and experiments/, deduplicate, update index.md.
Autonomously create, test, and optimize skills by detecting reusable patterns in your own work. Use when you notice repeated tool sequences, recurring code patterns across attempts, or insights that should be captured as a packaged skill. Also use to benchmark and iterate on existing skills.
Research the problem domain before coding. Web search for techniques, save raw sources, write structured findings, update the index.
Verify and debug changes to CORAL itself — smallest reproduce loop per area (grader / daemon / CLI / hooks / manager / workspace / hub / template / config / web), where to look when something breaks (hung graders, agent restart loops, stalled agents, missing heartbeat actions, corrupted shared state, broken worktree symlinks, grader import errors, wrong-task resume), how to inspect a live or finished run under `.coral/public/`, and the canonical lint/test commands. Use when editing code under `coral/` or chasing a CORAL bug, NOT when adding a new task or extending the framework.
Add a new component to the CORAL framework itself — a new agent runtime under `coral/agent/builtin/` (claude_code/codex/cursor_agent style), a new CLI command in `coral/cli/`, a new bundled skill or subagent template under `coral/template/skills/` or `coral/template/agents/`, a new hook in `coral/hooks/`, a new field in `coral/config.py`, or a framework-level extension to the grader stack under `coral/grader/`. NOT for writing a per-task grader or adding an example task — use `coral-new-task` for that. NOT for debugging existing code — use `coral-debug`.
End-to-end recipe for adding a new task under `examples/` — the three pieces that have to line up (`task.yaml`, `seed/`, and `grader/` or legacy `eval/grader.py`), what to put in each, the `TaskGrader` API surface, the `coral validate` → smoke-test loop, and the common mistakes (repo_path pointing at the wrong dir, score direction backwards, hidden answer keys leaking into seed/, grader writing to codebase_path which the daemon force-removes, private-vs-public confusion, missing `run()` signature). Use whenever the user wants to add a new CORAL task, port an existing benchmark into CORAL, or migrate an old `eval/grader.py` example to the packaged grader form.
| name | organize-files |
| description | Organize the shared notes directory when it becomes hard to navigate. Restructure within research/ and experiments/, deduplicate, update index.md. |
Restructure the shared notes directory so every agent can find what they need quickly.
For a complete before/after walkthrough on a realistic messy notes/ tree — including the dedup pass, naming fixes, subdirectory creation, link repair, and audit-log entry — see references/worked-example.md. Read it once before your first reorganization; it makes the abstract steps below concrete.
For recovery procedures and judgment calls (move script aborted partway, false-positive duplicates, files that look misplaced in _synthesis/, contradicting _open-questions.md, races between agents…), see references/edge-cases.md.
research/ or experiments/notes/
├── index.md ← table of contents (research + experiments only)
├── raw/ ← immutable sources (DON'T touch)
├── research/ ← deep-research findings (organize within)
│ ├── <topic>/ ← group by topic or theme
│ └── ...
├── experiments/ ← eval reflections and results (organize within)
│ ├── <approach>/ ← group by approach or technique
│ └── ...
├── _synthesis/ ← consolidate owns this (DON'T touch)
├── _connections.md ← consolidate owns this
├── _open-questions.md
└── _organization-log.md ← append-only log of what you changed
Get the current state:
bash .coral/public/skills/organize-files/scripts/audit.sh
Or manually: ls -R {shared_dir}/notes/ and count files per directory.
Also check for content-level issues:
_open-questions.md.index.md. Add them.Write out your target structure before moving anything. Organize within research/ and experiments/ — add subdirectories by topic when a dir has 5+ files:
research/
├── algorithms/ (3+ notes)
├── optimization/ (3+ notes)
└── ...
experiments/
├── optimization/ (3+ notes)
├── debugging/ (3+ notes)
└── ...
Rules:
experiments/optimization/learning-rate.md is the limitalgorithms/ not agent1-work/raw/ — immutable source material_synthesis/, _connections.md, _open-questions.md — owned by consolidateFind near-duplicates:
python .coral/public/skills/organize-files/scripts/find_duplicates.py .coral/public/notes --threshold 0.5
For pairs above the threshold where the verdict is not immediately obvious from a quick read — same topic vs. different angle vs. different topic with shared boilerplate vs. genuinely contradicting — spawn the Dedup Judge subagent. It reads both notes blinded (no author / timestamp / length metadata) and returns a structured verdict (same-topic-merge / different-angle-fold / contradicting-do-not-merge / keep-both-rename) with concrete merge or rename instructions. See agents/dedup-judge.md. Use it especially when:
For obvious cases — verbatim duplicates, or clearly different topics that shared a paragraph — just decide directly.
When merging confirmed duplicates, preserve provenance from both notes — never just pick one and discard:
## References lists (de-duplicated by URL or raw/ filename). Losing a citation loses an audit trail that an agent may need months later.tags and aliases rather than picking one set. Both were correct in their original context.Move originals to _archive/ so the merge is reversible.
When two notes contradict each other, don't merge:
_open-questions.md (existing rule).contradictedBy: [other-note-slug] into each note's frontmatter so future readers see the conflict at the note level — _open-questions.md collects them, but agents reading the note directly should see the warning without a separate lookup.Use the move script for safe moves with frontmatter tracking:
python .coral/public/skills/organize-files/scripts/move_note.py SOURCE DEST
Naming: kebab-case-like-this.md, topic first, no agent IDs, no bare dates, under 60 chars.
Regenerate index.md:
python .coral/public/skills/organize-files/scripts/generate_index.py .coral/public/notes
The index should only list research/ and experiments/ entries — not raw/.
Then resolve cross-links — moves and renames break any [[old-slug]] references in note bodies:
python .coral/public/skills/organize-files/scripts/resolve_links.py .coral/public/notes --dry-run
# review the diff, then:
python .coral/public/skills/organize-files/scripts/resolve_links.py .coral/public/notes
The resolver walks every note, scans the body for plain-text mentions of every other note's title, and wraps them as [[slug|Title]]. It skips text already inside wikilinks, citation markers, code blocks, and inline code. Run this after moves and renames, not before — the resolver needs final paths.
Append a summary to _organization-log.md: what you moved, merged, or renamed, and why.