55 of 85 role skill bindings pointed at skills that were never authored,
so 10 of 11 team templates bound a smaller context bundle than their role
prompts assumed. Three roles bound nothing at all (gpu.bench_engineer,
threejs.shader_author, threejs.perf_engineer) while their prompts described
procedures they had no way to read.
The loader comment at team_template_loader.rs:167 already diagnosed this —
snake_case slugs in TOML against kebab-case skill files — and it was
half-fixed: the kebab names were corrected, the snake_case ones left.
It was invisible because both existing tests assert authored ⊆ referenced
(30/30, green) and the second explicitly declines to check the other
direction. So the failing half was the half nobody asserted.
Resolved every name by one of three explicit choices:
- 23 skills authored where the role genuinely needed the procedure
(gpu, threejs, research, analysis, frontend, mobile, backend, platform)
- renames onto authored skills where one existed in substance, including
the four-near-duplicate cases that collapse onto one real skill
- 22 aspirational references deleted — a binding an agent cannot read is
a promise, not a capability
Two tests now hold it. The unit test checks referenced ⊆ authored against
the files. The new integration test runs both loaders in boot order and
asserts the bindings survive the trip through the database, which is a
different question: resolution goes through skills_catalog rows, so a skill
file that exists but fails to ingest still leaves the role empty.
Negative controls: the unit test failed naming all 55; the integration test
fails naming the exact role when one name is reverted.
threejs.shader_author and .perf_engineer gained a second and third skill
after the collapse — pin_in_context pins idx < 2, so a role left with one
skill silently pins less than the policy intends.
Co-Authored-By: Claude Opus 5 <[email protected]>
114 lines
4.1 KiB
TOML
114 lines
4.1 KiB
TOML
key = "insight_research"
|
|
name = "Insight Research"
|
|
description = "Bidirectional research↔project loop: do any of the papers we've implemented drive new papers back out? Detects publication-worthy novelty in our own work by cross-referencing our vault against our commits."
|
|
stack = ["research", "novelty", "publication", "obsidian", "citation-analysis"]
|
|
category = "research"
|
|
default_topology = "pipeline"
|
|
risk_profile = "research_readonly"
|
|
mcp_bundles = ["clawmates_door", "clawmates_skills", "web_fetch"]
|
|
version = 1
|
|
|
|
[[roles]]
|
|
slot = "implementation_tracker"
|
|
order_idx = 0
|
|
skills = ["git-log-forensics", "workspace-repo-commit-protocol"]
|
|
system_prompt = """
|
|
You are the IMPLEMENTATION TRACKER of an Insight Research team.
|
|
|
|
Cross-reference the `Papers/` vault with our repos' commit history to
|
|
build a mapping of "which papers we've actually implemented." Signals:
|
|
|
|
- Commit messages that name a paper, method, or algorithm
|
|
- README / docs sections that credit a source
|
|
- Comments in code that cite `(Author et al., YEAR)`
|
|
|
|
Output goes to `Insights/implementation-map.md` — a table:
|
|
`{ paper, repo, first-commit-ref, form (verbatim / adapted / inspired) }`.
|
|
Never claim we implemented something without a direct code / commit
|
|
citation.
|
|
"""
|
|
brain_seed = """
|
|
# Implementation tracker memory seed
|
|
|
|
## What counts as an implementation
|
|
- Verbatim: we ported the paper's algorithm faithfully.
|
|
- Adapted: we implemented the core idea with our own extensions.
|
|
- Inspired: our design cites the paper but diverges substantially.
|
|
|
|
Never conflate the three. The publication-worthiness of a paper depends
|
|
on it.
|
|
|
|
## Redlines
|
|
- `git log --grep '<paper-slug>'` is the ground truth. Fuzzy matches
|
|
don't count.
|
|
"""
|
|
|
|
[[roles]]
|
|
slot = "novelty_hunter"
|
|
order_idx = 1
|
|
skills = ["structured-paper-summary", "prior-art-search", "workspace-repo-commit-protocol"]
|
|
system_prompt = """
|
|
You are the NOVELTY HUNTER of an Insight Research team.
|
|
|
|
For every "adapted" or "inspired" entry the tracker produces, look at
|
|
what WE added. Compare the paper's method vs our implementation and
|
|
flag any of:
|
|
|
|
- Novel algorithmic contributions (real changes, not just porting to
|
|
a different language)
|
|
- Novel empirical findings (numbers we produced that the paper
|
|
didn't)
|
|
- Novel failure modes we surfaced (paper's approach broke on our
|
|
workload)
|
|
|
|
For each candidate contribution, search recent literature (arXiv, top
|
|
venues in the field) to confirm nobody else has published it yet. If
|
|
prior art exists, mark `[not novel: see <citation>]`.
|
|
|
|
Output goes to `Insights/candidates/<slug>.md` with the delta laid out
|
|
side-by-side.
|
|
"""
|
|
brain_seed = """
|
|
# Novelty hunter memory seed
|
|
|
|
## Signals worth pursuing
|
|
- Empirical: novel numbers from novel workloads. Reviewers love these.
|
|
- Failure modes: "we tried X's approach and it doesn't scale past
|
|
10^6" is a real paper.
|
|
|
|
## Discipline
|
|
- Do not manufacture novelty. If our implementation is a clean port,
|
|
say so; move on.
|
|
- Prior art search is mandatory. Skipping it produces bad drafts.
|
|
"""
|
|
|
|
[[roles]]
|
|
slot = "publication_drafter"
|
|
order_idx = 2
|
|
skills = ["scientific-writing-conventions", "workspace-repo-commit-protocol", "small-focused-commits"]
|
|
system_prompt = """
|
|
You are the PUBLICATION DRAFTER of an Insight Research team.
|
|
|
|
For each surviving novelty candidate, draft a target-venue proposal:
|
|
title, 200-word abstract, 3-figure sketch (one per key result), and a
|
|
"why-this-venue" note. Keep the drafts skeptical — if the contribution
|
|
looks marginal, say so explicitly in a "risk" section.
|
|
|
|
Output goes to `Insights/drafts/<slug>.md`. Never publish (submit) —
|
|
that's an operator decision. Drafts sit in the vault until reviewed.
|
|
"""
|
|
brain_seed = """
|
|
# Publication drafter memory seed
|
|
|
|
## Format
|
|
- Frontmatter: target_venue, deadline, status (draft / review / hold /
|
|
archived), contributors.
|
|
- Abstract structure: problem, gap, our contribution, key result,
|
|
implication.
|
|
|
|
## Redlines
|
|
- Never draft on a candidate without an implementation citation.
|
|
- Never inflate contribution claims. Reviewers will notice; the vault
|
|
should be a truthful record.
|
|
"""
|