Skip to content
Agentmart
Submit a tool

fill-icmje-coi

Use when each author needs an ICMJE Conflict of Interest disclosure form (coi_disclosure.docx) for submission.

Skill by Aperivue

IndexedMIT★ 349
Write a review

Chalk Labs

Need help deploying fill-icmje-coi?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/aperivue-fill-icmje-coi

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when each author needs an ICMJE Conflict of Interest disclosure form (coi_disclosure.docx) for submission. Clones a pre-filled synthetic seed with every item marked None and replaces only date, name and manuscript title, so most authors just confirm or amend.

Use cases: documents

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/fill-icmje-coi

What's inside

Skill name
fill-icmje-coi
Description
Use when each author needs an ICMJE Conflict of Interest disclosure form (coi_disclosure.docx) for submission. Clones a pre-filled synthetic seed with every item marked None and replaces only date, name and manuscript title, so most authors just confirm or amend.
License
MIT
Metadata
triggers: ICMJE, COI form, conflict of interest form, disclosure form, coi_disclosure.docx, 이해상충, 이해상충 폼, icmje 폼, 저자 동의서, submission forms
Instructions
110 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (6)

  • SKILL.md
  • seeds.md · references/
  • fill_icmje_coi.py · scripts/
  • skill.yml
  • icmje_coi_seed_synthetic.docx · templates/
  • test_fill_icmje_coi.sh · tests/

SKILL.md (first lines)

# Fill-ICMJE-COI Skill

The official ICMJE `coi_disclosure.docx` keeps every field inside Word Content Controls (SDTs),
which `python-docx` `cell.text` silently ignores. The script therefore does literal-string
replacement in `word/document.xml`, which only works when the target strings already exist — hence
the shipped pre-filled synthetic seed.

## Core Principles (Do Not Violate)

1. **Never author SDT XML from scratch.** Only replace existing strings in an already-populated
   seed, because programmatic Content Controls are fragile and Word-version-dependent. If an error
   seems to require altering the seed structure, stop and escalate to the user.
2. **Never use or commit a seed that contains a real author's data.** The shipped
   `templates/icmje_coi_seed_synthetic.docx` is PII-scrubbed (synthetic name, title, date; metadata
   `ICMJE` / `Anonymous`); real-person seeds leak PII through both `document.xml` and `docProps`.
   Keep custom seeds with real names in private per-project directories, and before promoting any
   seed check `unzip -p seed.docx docProps/core.xml` for real names.
3. **Never modify the 13 disclosure items or the certification checkbox.** The script replaces only
   Date, Name and Title; the ☒ None entries come from the seed unchanged. Never say the script
   "handled the disclosures": it cloned the seed, and no author-specific disclosure reasoning
   happened. An author with a real disclosure edits their own form in Word.
4. **The seed must be pre-filled** (all-None ☒ + text). The script does not work on a blank ICMJE
   template.

Skip this skill when the target journal uses its own declaration form (Elsevier Declaration of
Interest, a BMJ ICMJE derivative, etc.) rather than the canonical ICMJE form — check the author
guidelines first.

## Execution

### Phase 1 — Intake

Ask the user (or extract from the conversation):
1. **Manuscript title** (exact, as on the title page)
2. **Submission date** (e.g., "April 20, 2026")
3. **Author list** — ordered, one name per slot: `[(1, "Author One"), (2, "Author Two"), ...]`,
   taken verbatim from the manuscript title page or the user's list
4. **Output directory** — typically `submission/{journal}/icmje_forms/`

**Gate 1 — user approval.** Present the intake back before generating anything. Name which authors
will get all-None forms and remind the user that anyone with a real disclosure must fill their own
form in Word instead.

### Phase 2 — Generate

```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/fill_icmje_coi.py \
  --seed ${CLAUDE_SKILL_DIR}/templates/icmje_coi_seed_synthetic.docx \
  --seed-name "Placeholder Author" \
  --seed-title "Placeholder Manuscript Title" \
  --seed-date "January 1, 2000" \
  --new-title "{exact manuscript title}" \
  --new-date "{submission date}" \
  --out-dir {out_dir} \
  --authors '[[1,"Author One"],[2,"Author Two"],...]'
```

It writes one `ICMJE_COI_{NN}_{Name}.docx` per author and exits nonzero if any seed string is not
found. It exits 2, before writing anything, if any `--seed-*` or `--new-*` value or author name is
empty: an empty seed string would match nothing and leave the seed's value in every form.

### Phase 3 — Verify

For each generated docx confirm: ☒ count = 14 (13 disclosure items + final certification);
"None" disclosures = 13; the correct name after "Your Name:" and title after "Manuscript Title:";
no seed strings left. `SEED` must be the exact `--seed-name`, `--seed-title` and `--seed-date`
values used in Phase 2 (the shipped placeholders below, or a custom seed's own strings); `TITLE`
must be the `--new-title` value.

```bash
python3 - {out_dir}/*.docx <<'PY'
import sys, zipfile
SEED = ("Placeholder Author", "Placeholder Manuscript Title", "January 1, 2000")  # = --seed-* values
TITLE = "{exact manuscript title}"                                                 # = --new-title
assert all(s.strip() for s in SEED) and TITLE.strip(), "empty SEED/TITLE value"
for f in sys.argv[1:]:
    xml = zipfile.ZipFile(f).read("word/document.xml").decode("utf-8")
    assert xml.count("☒") == 14, f"{f}: bad ☒ count"
    assert xml.count(">None<") + xml.count(">None ") == 13, f"{f}: bad None count"
    for ph in SEED:
        assert ph not in xml, f"{f}: seed leak {ph!r}"
    t = TITLE.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
    assert t in xml, f"{f}: title missing"
    print("✓", f)
PY
```

This snippet does not locate the name inside the "Your Name:" field; confirm the name by opening
each form.

**Gate 2 — user review.** Present the verification results before handing off the files.

### Phase 4 — Circulation Guidance

Give the user this copy to send with each personalized form, written in the co-authors' language:

> Please review the attached ICMJE COI form.
> - If the contents are correct, sign and reply with a PDF.
> - If a change is needed, edit/check the relevant item, sign, and reply.
> - If there are no changes at all, reply "no changes" and return the signed PDF separately.

All authors can be emailed in one draft batch (e.g., `gws gmail draft`). **Gate 3 — the user
approves the batch** before anything is sent.

## Custom Seeds and Seed Provenance

Read `${CLAUDE_SKILL_DIR}/references/seeds.md` when the user wants a custom seed (different default wording, a common
grant pre-filled in items 2/3) or asks how the shipped seed was made.

From Aperivue/medsci-skills, MIT.

More from Aperivue/medsci-skills

Compare and alternatives

    Featured in

    Signals

    Stars
    349
    Forks
    83
    Open issues
    4
    Last commit (this folder)
    Oct 4, 2026 (26 days ago)
    Last release
    Oct 4, 2026 (27 days ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    License
    MIT
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    More from Aperivue

    Done for you

    Rather not set it up yourself?

    Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

    See how we build AI agents →Read the case studies

    Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

    launches shipped
    50+
    launches shipped
    media placements
    500+
    media placements
    founders on every account
    2
    founders on every account

    Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

    Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

    Get fill-icmje-coi running in your business

    Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

    Goes to the Chalk Labs founders, not the newsletter. Privacy

    Need help deploying fill-icmje-coi?

    CallGet help
    Cite this page

    fill-icmje-coi skill. Agent Mart. https://agentmart.dev/skills/aperivue-fill-icmje-coi (last updated 2026-10-24)