Import a deck section from another project¶
Pull a section from another project's presentio deck into the current project's deck. This is the projio-slides-inside-pixecog-talk use case.
Prerequisites¶
- Both projects registered in worklog (the source project must be resolvable by
worklog_read_file) - Source project must have a deck at
docs/deliverables/presentations/<source_deck>/sections/<section>.md - Host project has a scaffolded deck (
present_initalready run) worklogpackage installed — presentio lazy-imports it and raises a friendly error if missing
Steps¶
1. Confirm the source exists¶
In the host project's agent session:
list_projects() # find the source project_id
worklog_project_context(project_id=<id>) # confirm the deck exists
You can also read the source deck.yml directly if you need to confirm section keys:
worklog_read_file(project_id=<id>, path="docs/deliverables/presentations/<source_deck>/deck.yml")
2. Import the section¶
present_section_import(
name="<host-deck-name>",
from_project="<source-project-id>",
source_deck="<source-deck-name>",
section="<source-section-key>",
key="", # optional: host-side section key (defaults to <project>-<section>)
order=0, # optional: host-side order (defaults to max(existing) + 10)
mode="reference" # or "freeze"
)
What happens:
- Presentio fetches
docs/deliverables/presentations/<source_deck>/sections/<section>.mdfrom the source project viaworklog_read_file - Strips any existing frontmatter from the remote body
- Writes a new cache file at
docs/deliverables/presentations/<host-deck>/imports/<project>-<deck>-<section>.mdwith a stamped provenance header:--- title: "Imported: <section>" order: <order> deck: <host-deck> imported_from_project: <from_project> imported_from_deck: <source_deck> imported_from_section: <section> import_mode: <mode> status: imported tags: [presentation, section, imported] --- - Appends a
DeckSectionentry to the hostdeck.ymlwith animport:metadata block - Scans the imported body for citekeys and figure refs
- Returns a report with
imported_citekeys,missing_citekeys(not in host bib),imported_figures, and actionablesuggestions
3. Handle missing citekeys¶
The import tool does not run biblio_ingest automatically — that would be an unexpected network side-effect. Instead, read the missing_citekeys field of the return value and run biblio_ingest explicitly:
biblio_ingest(dois=[<dois for missing keys>])
biblio_merge()
Then re-run present_cite_check(name=<host-deck>) to confirm the imported section's citations now resolve against the host bibliography.
4. Handle figure references¶
If the imported section contains fig:<id> placeholders, those ids must exist in the host project's figio registry. Options:
- Rebuild locally: if the host project has a
figures/<id>.figurespec.yaml, runfigio_build(figure_id=<id>)to produce the output. - Copy the source figure: the simplest cross-project figure approach today is to manually copy the SVG/PNG from the source project into
docs/deliverables/presentations/<host-deck>/figures/and adjust the reference to an inline markdown image () instead of afig:<id>placeholder. - Defer: leave the
fig:<id>placeholder in the imported section.present_validatewill warn about unresolved figures but the rest of the deck still builds.
Full cross-project figure resolution (a worklog-backed figure resolver) is a phase-4.1 follow-up.
5. Refresh on upstream edits¶
If the source project updates the section you imported, re-fetch to pick up the changes:
present_refresh_import(name="<host-deck>", section="<host-section-key>")
This only works on reference-mode imports. Frozen imports refuse to refresh.
The refresh preserves the cache file's provenance header — only the body is overwritten.
6. Freeze before a talk¶
Before giving a talk from a deck that depends on another project's in-flight work, lock the imports to prevent accidental refresh:
present_freeze_import(name="<host-deck>", section="")
An empty section argument freezes every imported section in the deck. Pass a specific section to freeze only one.
Freezing flips import_mode: reference → freeze in both deck.yml and the cache file's frontmatter. The cache files themselves don't change — you can still edit them manually if you need to patch a section before the talk.
After the talk, you can unfreeze by editing deck.yml to set import_mode: reference again (or by deleting and re-importing the section).
Example: pixecog pulls projio ecosystem slides¶
# In pixecog project's agent session, with PROJIO_ROOT=<pixecog-repo>
# 1. Confirm source exists
list_projects() # returns: [..., {id: "projio", ...}]
worklog_read_file(project_id="projio", path="docs/deliverables/presentations/ecosystem-intro/deck.yml")
# 2. Scaffold host deck if not already
present_init(name="thesis-defense", format="revealjs", template="conference-talk")
# 3. Import the projio architecture slide
present_section_import(
name="thesis-defense",
from_project="projio",
source_deck="ecosystem-intro",
section="architecture",
key="projio-architecture",
order=45,
mode="reference"
)
# 4. Handle any missing citekeys the tool reports
biblio_ingest(dois=["10.xxxx/yyy", ...])
biblio_merge()
present_cite_check(name="thesis-defense")
# 5. Iterate on the rest of the thesis deck alongside the imported section
present_section_context(name="thesis-defense", section="projio-architecture")
# 6. Before the defense, freeze the import
present_freeze_import(name="thesis-defense", section="projio-architecture")
# 7. Build
present_build(name="thesis-defense", format="html")
The imported section lives alongside native sections in the host deck's output. Its order is driven by the host deck's deck.yml, not by the source deck's section order.
Tool reference¶
MCP tools used in this guide
| Tool | Purpose |
|---|---|
present_section_import |
Fetch, cache, and register a remote section |
present_refresh_import |
Re-fetch a reference-mode import |
present_freeze_import |
Lock imports against future refresh |
worklog_read_file |
Read a file from another project (via worklog MCP) |
list_projects |
Enumerate projects in the worklog registry |
biblio_ingest |
Ingest missing citekeys from the imported section |
present_cite_check |
Re-validate citations after ingesting |
present_validate |
Structural check including figure resolution |
Full reference: Presentation tools.