Deliverable open
SkillDocs & knowledgeOpens a deliverable, such as a talk, course module, paper, book chapter, or referee report, for AI-assisted work across sessions. Interviews the author until the manifest is written, then scaffolds deliverable.yml, append-only HANDOFF.md, a numbered planning/ wiki with index and open questions, inbox/ for dictated braindumps, gitignored checks/, and the house deck template for talks. Use when the user says "open a deliverable", "set up this talk/paper/module for the pipeline", "make a manifest", or starts deadline-driven work that spans sessions. Not for one-off tasks.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Deliverable open skill
What this skill tells your AI
The instructions your AI receives, as published by scdenney/open-science-skills in codex/deliverable-open/SKILL.md and read by ahel’s review.
A deliverable gets the pipeline when it has a deadline, an audience, and more than one session of work. This skill writes the files the rest of the pipeline reads: check_deliverable.py (the deterministic gate), deliverable-intake (braindumps into the wiki), deliverable-lint (the editorial review), and the session skill's $sitrep and $finished.
Where the tooling lives
- Gate script:
~/Documents/GitHub/resources/project_hygiene/scripts/check_deliverable.py(or$DELIVERABLE_CHECK). Its docstring is the manifest reference; read it before writing a manifest. - Hook installer:
~/Documents/GitHub/resources/project_hygiene/scripts/install-hooks.sh <repo>. - Deck template:
~/Documents/GitHub/resources/deck-template/(self-contained HTML + PDF deck,content.md->src/build.py). - Handoff format: the one
courses/hdw/HANDOFF.mduses; wiki format:courses/hdw/data-module/lecture-planning/00-README.md.
Kind profiles
One file per kind at ~/Documents/GitHub/resources/project_hygiene/kinds/<kind>.md (talk, paper, module, chapter, review): the interview questions beyond the common five, the manifest defaults, the lint questions lint_prepare.py appends, the ship step, and the related skills. Read the profile for the deliverable's kind before round 1 and let it drive rounds 2 and 3; never load more than one profile. One piece of research has one wiki: a paper's talk and referee response declare the paper's planning/ as their planning_dir and add their own numbered files to it, rather than opening a second wiki.
Rounds
Run the interview the way research-grill does: ask the whole frontier at once, numbered, each with a one-line "why this matters" and a recommended answer; facts you can look up (dates from a calendar file, the number snapshot in a manuscript, an existing planning directory) you look up. Two or three rounds usually suffice.
Round 1, always:
- Kind and root. Which directory is the deliverable? A talk is its own folder; a course module is the module folder (
hdw/data-module/), not the repo; a paper is the folder holdingmanuscript/; a chapter is its folder underchapters/. - Audience and deadline. Who reads or hears it, and when it ships. A talk names the panel and date; a module names the class dates; a paper names the venue and submission date.
- Claim and done-test. One sentence each.
claimis what the deliverable asserts;doneis what a finished one looks like ("15 slides, ten minutes, every number traced to the snapshot, published at the URL on the QR code"). - Sources of truth. The files nothing else may contradict:
content.mdandnotes.mdfor a talk,_data/course.ymlfor a course site,numbers.texandreferences.bibfor a paper, the canonical syllabus for a module. - Sections. How the deliverable divides for review:
content-keys(deck@N.*fields),latex(\section),markdown-headings,rmd-chunks, or an explicit list. Sections are logical; never split a source file to make them.
Round 2, from the answers:
- Checks. Which gate checks apply (see the script docstring):
citations(bib, scan files,cite_fieldsfor decks,reading_listsfor Markdown syllabi,verify_bibwhere fabricated entries are the risk),numbers(source, snapshot id, the data tables that copy it),factsandleaksfor a Jekyll site,deck_budget,prose_tells,build. - Knowledge base (research repos). If the repo has a
research-repolayout, setknowledge_base: sources/mdand addreferences.bibtosources_of_truth; the gate then warns when a cited work has no Markdown source, intake routes unknown sources toprocess-source, and lint checks claims against the sources. Ask once; default to setting it whensources/md/exists. - Planning wiki. Does a wiki already exist (
lecture-planning/,chapters/CLAUDE.md,planning/map.md)? Declare it asplanning_dir; never move it. Otherwise createplanning/. - Voice pin. The writing-toolkit commit the prose rules are pinned to:
git -C ~/Documents/GitHub/resources/writing-toolkit rev-parse --short HEAD. - Night shift. Stays
enabled: falseat open. Say so; it is switched on only after one manualdeliverable-lintrun has been read.
What gets written
At the deliverable root:
deliverable.ymlwith every field the interview settled; comment the ones it did not.- A vendor-neutral
agent:block at the top of the manifest (Claude runs/oss:<name>, Codex runs$<name>; the shareddeliverable_context.pyprints it at session start for both):agent: on_braindump: deliverable-intake on_review_request: deliverable-lint on_session_end: finished preserve_raw_captures: true session_state: HANDOFF.md - Commons fields when the research commons exists (
~/Documents/GitHub/research/commons/):commons_root(relative path),commons_tags(sorted lowercase slugs), and optionallycommons_revision(a full commit to pin). At session start only the commons INDEX lines matching the tags enter context, capped at twenty; cards and threads are read on demand. HANDOFF.mdwith the standard header and a first entry dated today: Decision (what was opened and why), Completed (the files created), Next actions (run the gate; first intake).planning/00-README.md(folder map, sources of truth, decisions recorded here) andplanning/08-open-questions.md(open list plus a resolved log) unless an existing wiki was declared; then add the manifest pointer to that wiki's index instead.inbox/README.md: "Raw captures. Dictate into a new dated file here; never edit a capture;deliverable-intakepromotes it and renames it*.done.md."checks/.gitignorecontaining*and!.gitignoreand!release.jsonand!citations.json.- For
--kind talkwith nosrc/present: copy the deck template'ssrc/,content.md,notes.md, andREADME.md, then setbuild.commandandsources_of_truthin the manifest accordingly.
Then:
- If the repo has no
.githooks/pre-commit, offerinstall-hooks.sh; install only on a yes. - Offer to append the deliverable's proper nouns (people, places, named theories, project names) to
~/.config/macwhspr/vocab.mdso dictation renders them correctly; append only on a yes, one term per line, under a heading naming the deliverable. - Offer to add the manifest path to
~/.claude-assistant/config/deliverables.yml(the night-shift registry). Listing is not enabling. - If the repo root has no
AGENTS.md, say so and stop; do not create one here. If it has one and lacks a## Deliverable pipelinesection, offer to append the canonical paragraph from~/Documents/GitHub/resources/project_hygiene/notes/agents-pipeline-paragraph.md(it is what tells either vendor when to invoke which on-demand skill, and what lets Codex, which has no hooks, start from the same context).
Exit
Run python3 check_deliverable.py --root <dir> once and show the result. Name the next step in one line: dictate the first braindump into inbox/, then $deliverable-intake.
Notes
- Threshold: a deadline, an audience, more than one session. A four-hour referee report qualifies; a two-day analysis nobody reads does not.
- One manifest per deliverable; a course with six sessions is one deliverable with six sections, not six deliverables.
- Overleaf submodules: the manifest and the other house files live in the parent repository beside the submodule, never inside it.
Codex notes
Codex has no session hook: the AGENTS.md paragraph this skill offers is what makes the manifest, handoff, and commons index load at session start (deliverable_context.py). Skill calls are $deliverable-intake, $deliverable-lint, $finished, $process-source. Every file written here is the same file Claude writes; a deliverable opened in Codex is worked in Claude without translation.
Signals
- GitHub stars
- 55
- Forks
- 3
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
deliverable-open- Source
- github.com/scdenney/open-science-skills