Skip to content
cccskills
FreePublished on GitHub

research-writing

Write the document of a research run — plan the question and the outline with rs_plan, write prose and declare its claims together with rs_write, choose the claim strength the evidence actually holds, follow the section structure the run's kind maps to, read the draft back, and build a watermarked draft before the gated clean build. Use when a run's document has to be written, a section drafted, a claim bound to a source, or a build attempted.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md10.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

The document

Writing here is two acts in one call: the prose, and the ledger rows for every claim the prose makes. rs_write will not let them come apart, and that is the whole reason to use it rather than typing Markdown into a file.

Plan first — rs_plan

Three parts, written to plan/<part>.md:

  • part=rq — the research question, in one sentence you could falsify. This is what gate g1-rq shows the person to confirm.
  • part=outline — the shape. This is the one part with a machine meaning: lines of - <slug>: <title> order the section files at build time, and a section file no line names is appended to the end rather than dropped.
  • part=method — how the work was done: what was searched, what was included and excluded, how sources were read.

rs_write slug=… section=memory writes doc/sections/memory.md, so an outline line - memory: Sleep and memory consolidation is what puts it in order. Read part=outline back with rs_plan action=read part=outline.

Pick one shape and keep it. With any file in doc/sections/, the builder assembles the document from the sections and ignores doc/paper.md entirely; with no sections at all it uses doc/paper.md. Mixing the two is how a chapter goes missing without anyone noticing.

The dialect — prose and claims in one call

[the sentence, as written]{#cNNNN} is a claim. [@key] is a citation, and the variants are Pandoc's: [@key, p. 7] and [-@key] (author suppressed) and [@a; @b]. Claim ids are c and at least four digits; ids are never reused.

rs_write slug=sleep-memory-review section=memory
  text="Sleep after learning is associated with better retention [@walker2020cognitive].
    [Slow-wave sleep duration predicted next-day recall in the sample studied]{#c0142}
    [@walker2020cognitive, p. 7]."
  claims=[{ "id": "c0142", "strength": "associational",
    "sources": [{ "key": "walker2020cognitive",
      "locator": { "kind": "quote", "quote": "sleep-dependent consolidation of declarative memory" } }] }]
doc/sections/memory.md written (replace)
- path: C:\Users\ana\Desktop\vncode-research\sleep-memory-review\doc\sections\memory.md
- words: 31
- claims in this text: 1 (1 new)
- citations: walker2020cognitive

Next: `rs_build slug=sleep-memory-review format=md draft=watermark` to read it, or keep writing sections.

Three rules the tool enforces rather than trusting you with:

  • The claim's text comes from the SPAN. Do not retype the sentence in claims — there is nowhere to put it. The row's text is read out of the prose, so the ledger and the document cannot disagree.
  • A span with no declaration, or a declaration with no span, is refused (CLAIM_UNDECLARED / CLAIM_SPAN_MISSING). That is the tool stopping a claim nothing tracks from being stored.
  • Every [@key] must already be in the ledger — rs_cite first, or the write is refused with the nearest keys (UNKNOWN_CITATION).

section= writes doc/sections/<slug>.md; omit it to write doc/paper.md whole, and file=doc/…md names a path explicitly. mode=append adds to what is there instead of replacing it.

Strength is the sentence's own claim about itself

causal / associational / descriptive / theoretical / normative — pick the one the evidence holds, not the one that reads better. A causal claim over a source that only shows a correlation is a defect of the sentence, fixed by rewriting the sentence, not by re-labelling it. Write the verb the evidence can carry:

  • before — strength: "causal": [Sleep deprivation causes memory loss]{#c0143}
  • after — strength: "associational": [Sleep deprivation is associated with poorer memory performance]{#c0143}

Both sentences may rest on the same source; only the second is one the source can support. Fixing this later costs a rewrite that clears the claim's verification (the sentence changed, so the verdict about the old sentence is void) — so choose the strength while you write, and use descriptive for what a source reports (a number, a prevalence, a definition), theoretical for a claim from a model or an argument, and normative for what ought to be done, which no datum settles.

The structure the run's kind maps to

rs_new recorded the run's structure; write the document in that shape rather than as a generic essay. What belongs where:

  • imrad (paper) — introduction: the problem, the gap, the question, and the contribution. methods: what was done, in enough detail to repeat. results: what was found, reported without interpretation. discussion: what it means, against the literature, with limits and what would falsify it.
  • thematic-review (review, lit-review) — introduction: the question and why the field needs it. One section per theme (the outline names them): what the sources agree on, where they conflict, and the evidence on each side. synthesis: what the body of work supports and what remains open. limitations: search and inclusion limits, and the bias they carry.
  • theoretical — framework: the concepts and their definitions. development: the argument, step by step, each step resting on a stated source. implications: what follows if the argument holds. scope: what the argument does not claim.
  • case-study — context: the case, its boundaries, why it is the case. data and method. analysis: the case against the framework or the theory. discussion: what generalises and what does not.
  • policy-brief — problem: one paragraph a decision-maker can act on. evidence: what is known, with the strength stated. options: what could be done, with costs and who bears them. recommendation: one, and why.
  • conference — introduction, method, results, discussion, in the page budget the venue sets; the short form of IMRaD, so a claim has to carry its source in fewer words, not in weaker ones.
  • custom (report, protocol) — you choose the sections and name them in plan/outline.md; a protocol's sections are its steps, a report's are its findings.

Sections outside those names are fine — the outline orders whatever you write — but a section that answers no part of the structure is usually an essay forming.

Read your own draft before building

rs_read what=outline shows the assembled sections with word and claim counts; what=claims shows every claim with its status, its strength as written and the source each rests on; what=run shows the structure verdict and what is still waiting on the person. Act on what they say rather than waiting for a build to refuse:

  • span-unrecorded / unknown-source / broken-marker / broken-citation are errors — a clean build refuses on them (BUILD_BLOCKED).
  • claim-unsourced and claim-orphan are warnings — a claim bound to no source, or a ledger row whose sentence is gone. Nothing blocks, and the first one means the claim can never be checked.
  • rs_write names unbound claims in its own answer (NOT BOUND TO A SOURCE), so bind them at write time.

Two refusals you will meet

  • GATE_UNANSWERED on rs_write — gate g1-rq is not answered, so nobody has confirmed the question the document answers. Stop and ask the person once, in one short message, and point them at the Research tab. Do not write around it, do not write "while you wait", and never answer the gate yourself.
  • GATE_UNANSWERED / BUILD_BLOCKED / BLOCKING_CLAIMS on draft=clean — a clean build needs the document to agree with its ledger, no claim a check found unsupported (unsupported, contradicted, misattributed), and gate g3-integrity answered by the person. Build a draft instead.

Building

rs_build slug=sleep-memory-review format=md draft=watermark

draft=watermark always builds, and marks the document: a banner at the top and an endnote on every claim naming its status and its rung. That is what stops a half-checked document being mistaken for a finished one. draft=clean is the mode whose output looks finished, so it is the one that is gated.

Read rs_open action=capabilities for what this build can write and which citation styles it has — do not carry a list in your head. Formats and styles are added over time, and the answer there is the authority; a remembered list goes stale the day one arrives. (Today the run's own style is the default; format=all writes every format this build has, and a format that is not in yet refuses by name and says which phase brings it.)

Every build writes build/build.json beside the artifacts — the document's sha256, the claim statuses at that moment, the structure verdict, and each output's hash — and rs_read what=build shows it. A clean build removes the claim markers and the banner; a draft keeps them. The reference list is never typed by you: it is computed from the ledger in the run's citation style. So a missing field in a source record is a missing field in the bibliography, and the fix is another rs_cite, not a sentence added by hand.

Rewriting clears verification — say so out loud

If a claim's sentence or its source bindings change, its status, rung, judge and reason are cleared: a verdict belongs to a wording, not to an id. The answer names every claim it cleared:

RE-VERIFICATION NEEDED: c0142 changed wording or sources, so the verification it
had was cleared. A verdict belongs to a sentence, not to an id.

Tell the person that in the same turn, by id and in plain words — quietly editing a checked sentence back to unchecked is the one way this system could lie to them. The same answer also lists claims still waiting on a gate (STILL WAITING ON THE USER: g2-intake), which is a thing to report, not to fix.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Author an editorial HTML+SVG diagram with the Diagram Design kit - choose the visual type, read its reference, start from an example, and satisfy the safety and accessibility contract that diagram_write({kind:"html"}) enforces.

The English summary is being prepared. Showing the original description.

vecnode/vn-code10Updated Oct 20, 2026

Control this machine's Docker or Podman engine through the docker_* tools - read the engine's state first, list containers and images, inspect one, tail its logs, pull an image and start it, then stop, restart or remove what you started. Covers the engine that is asleep behind Docker Desktop and the exact call for each verb, the confirm rule removals obey, and the flags the tools deliberately do not have.

The English summary is being prepared. Showing the original description.

vecnode/vn-code10Updated Oct 20, 2026

Drive ffmpeg through the media_run tool as an argv array - remux instead of re-encode, map streams explicitly, trim at keyframes, scale and crop, extract audio and frames, and build GIFs, contact sheets and concatenations. Covers the flags this pack injects, reading a failure from its exit code and last log lines, and the version-dependent spellings to hedge.

The English summary is being prepared. Showing the original description.

vecnode/vn-code10Updated Oct 20, 2026

Read a media file's real structure with ffprobe through media_run - the JSON invocation and how to read it, what every family of field means, how to count frames, sample without decoding everything, detect HDR and interlacing, and diagnose a missing duration, a stream with no frames or a container that lies. Covers when media_probe's own report is already enough.

The English summary is being prepared. Showing the original description.

vecnode/vn-code10Updated Oct 20, 2026

Use when the user wants to design, redesign, shape, critique, audit, polish, simplify, harden, animate, or otherwise improve a frontend interface: websites, landing pages, dashboards, product UI, components, forms, settings, onboarding, empty states, and native iOS or Android screens. Handles UX review, hierarchy, layout, typography, color, motion, UX copy, accessibility, responsive behavior, edge cases, and capturing or documenting design systems (DESIGN.md, tokens). Also for making bland UI bolder, loud UI quieter, or ambitious visual effects. Not for backend-only or non-UI tasks.

The English summary is being prepared. Showing the original description.

vecnode/vn-code10Updated Oct 20, 2026

Author Mermaid diagrams that parse the first time: choose the right diagram type for the question, write syntax the parser accepts, and keep the picture readable in a narrow panel. A bundled reference covers complex, large diagrams.

The English summary is being prepared. Showing the original description.

vecnode/vn-code10Updated Oct 20, 2026

See all skills by vecnode

Report a problem with this skill